cog
61217468 - feat: add cog-schema-gen static schema generator with embed+exec distribution

Commit
16 days ago
feat: add cog-schema-gen static schema generator with embed+exec distribution Replace Docker container-based OpenAPI schema generation with a Rust binary (cog-schema-gen) that uses tree-sitter to parse Python source files statically. Schema generation now happens locally before the Docker build, not after. Rust crate (crates/schema-gen/): - Tree-sitter Python parser handles all predictor patterns: BasePredictor, non-BasePredictor classes, standalone functions, async methods - Supports Input() kwargs, shared Input definitions (cog-flux pattern), Optional/union types, Iterator/ConcatenateIterator, BaseModel outputs - Size-optimized release-small profile: LTO, opt-level=z, panic=abort, strip=symbols, no clap/anyhow — binary is ~879KB - 19 unit tests, 22 integration test fixtures all passing Go integration (pkg/schemagen/): - Embed+exec pattern: binary embedded via go:embed, extracted to ~/.cache/cog/bin/cog-schema-gen-{version} on first use - Resolution: COG_SCHEMA_GEN_BINARY env > embedded > dist/ > PATH - pkg/image/build.go now calls schemagen.Generate() instead of booting a Docker container with python -m cog.command.openapi_schema Build & CI: - mise build:schema-gen uses --profile release-small - mise build:cog depends on build:schema-gen, copies with platform suffix - goreleaser per-build pre-hook embeds platform-matched binary - CI: build-schema-gen job builds once, stashes artifact for build-cog - Release: matrix build (4 platforms), standalone binaries attached to GitHub releases alongside cog CLI binaries
Author
Parents
Loading