Skip to main content

Convert Ethereum consensus spec SSZ types to OpenAPI type schema definitions

Project description

pyspec2openapi

Tool to convert the types defined in the Ethereum python specs https://github.com/ethereum/consensus-specs to an OpenAPI definition, for https://github.com/ethereum/beacon-APIs. This tool facilitates manteinance of the OpenAPI spec and follows the canonical JSON mapping from https://github.com/ethereum/consensus-specs/pull/3506

Usage

Install from PyPI

pip install pyspec2openapi

Create a config.yml file

spec_version: v1.4.0-beta.5
sources:
  phase0:
    - {spec: beacon-chain.md}
    - {spec: validator.md}
    - {file: extra_types/phase0.md}
  altair:
    - {spec: beacon-chain.md}
    - {spec: validator.md}
    - {spec: light-client/sync-protocol.md}
    - {file: extra_types/altair.md}
  bellatrix:
    - {spec: beacon-chain.md}
    - {spec: validator.md}
    - {file: extra_types/bellatrix.md}
  capella:
    - {spec: beacon-chain.md}
    - {spec: validator.md}
    - {spec: light-client/sync-protocol.md}
  deneb:
    - {spec: polynomial-commitments.md}
    - {spec: beacon-chain.md}
    - {spec: validator.md}
    - {spec: p2p-interface.md}
    - {spec: light-client/sync-protocol.md}
    - {file: extra_types/deneb.md}
generate_blinded_types: [bellatrix, capella, deneb]
ignore_classnames:
  - LightClientStore
exclude_comments:
  - '\[New [^\]]*\]'
  - '\[Modified [^\]]*\]'
  • spec_version: Specific Github tag from the ethereum/consensus-specs repo to fetch sources from
  • sources: Topologically sorted list of fork and files to fetch types from. This tool can topologically sort types within the same markdown file, but not across them.
  • generate_blinded_types: Auto-generate the types BlindedBeaconBlockBody, BlindedBeaconBlock, and SignedBlindedBeaconBlock for a specific set of forks.
  • ignore_classnames: Ignore container code blocks with this list of names
  • exclude_comments: Ignore comments for container properties that match any of this regex

Generate types spec

pyspec2openapi config.yml out.yml

Review an example output with an example config in ./pyspec2openapi/tests/example_specs_out.yml

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyspec2openapi-0.3.0.tar.gz (6.9 kB view hashes)

Uploaded Source

Built Distribution

pyspec2openapi-0.3.0-py3-none-any.whl (7.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page