crozier
Copyright 2026 Nick DeRobertis

This product includes both test fixtures and a vendored runtime derived from Fern
(https://github.com/fern-api/fern), which is licensed under the Apache License,
Version 2.0. A copy of that license is retained at licenses/fern-APACHE-2.0.txt.

Vendored runtime (shipped and redistributed as product):

  * assets/core/ is Fern's Python SDK runtime support library (HTTP client,
    pydantic utilities, serialization, SSE, request options). crozier embeds it
    and emits it verbatim into every generated SDK, exactly as Fern ships it into
    its own output. It is generator boilerplate, not derived from any OpenAPI
    document. Provenance and the statement of changes are in assets/README.md;
    the only changes are comment stripping (as with the fixtures below) and
    templating the SDK name/version header in client_wrapper.py.

  * assets/scaffolding/ is Fern's project-root scaffolding (pyproject.toml,
    requirements.txt, and the .fern/metadata.json marker), emitted verbatim into
    every generated SDK. The only change is templating the project/package name
    and version in pyproject.toml with the same @@CROZIER_...@@ placeholders. It
    also holds README.md.tmpl, the static prose of Fern's generated README, with
    the SDK name and worked usage examples replaced by @@...@@ placeholders the
    emitter fills in. See assets/README.md.

Test fixtures (attribution and statement of changes, per Apache-2.0 §4(b), §4(c)):

  * Source: fern-api/fern, commit 3a471b03d4778f291849adc03bacfcd40340fc26.
  * Vendored under tests/fixtures/ are (a) OpenAPI source documents from Fern's
    test definitions and (b) the Python SDK output Fern's generator produced from
    them. These are used unmodified as source specs and as golden output that
    crozier is verified against.
  * The exhaustive fixture's expected output (tests/fixtures/exhaustive/expected/)
    was produced by running Fern's published Python generator image
    fernapi/fern-python-sdk:4.34.0 locally over the vendored exhaustive OpenAPI
    document (see scripts/generate-fern-fixture.sh), rather than copied from the
    fern repository. It is otherwise treated identically to the vendored output.
  * Change made to the vendored Python output: source-code comments were removed
    (a string-safe strip of `#` comments) so that generator-identifying comment
    text does not affect the byte-for-byte comparison. No other transformation is
    applied; the fixtures are otherwise Fern's output verbatim.
  * Fern's own API-definition files were intentionally NOT used. crozier consumes
    only the OpenAPI document.

crozier's own Rust source is an independent, clean-room implementation: it does
not copy Fern's generator, it reproduces Fern's generated *output* format, which
is the explicit goal of this project. The one exception is the runtime library
under assets/core/ above, which is Fern's own code redistributed under Apache-2.0
with attribution (it is SDK runtime, not part of crozier's generator).
