Skip to main content

swagger schema bundler

Project description

This is individual tool for bundling swagger definitions.

  • python3 only (python3.5+ is better)

setup

$ pip install "swagger-bundler[validation]"

or

$ pip install -e git+git@github.com:podhmo/swagger-bundler.git@master#egg=swagger_bundler

getting started

  1. generating your config file

  2. using it

0. generating your config file

swagger-bundler needs config file for using. so, at first, you must generate config file.

$ swagger-bundler config --init
generate ~/venv/web/work/swagger-bundler.ini.

The stragegy of finding config file, following below.

Your current working directory is ~/venv/web/work/. then,

  1. finds ~/venv/web/work/swagger-bundler.ini

  2. finds ~/venv/web/swagger-bundler.ini

  3. finds ~/venv/swagger-bundler.ini

  4. finds ~/swagger-bundler.ini

Config file is not found, then, lookup ~/.swagger-bundle.ini.

1. how to use

Usage: swagger-bundler [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  bundle    bundles many source files into single file
  concat    concatnates many swagger-definition files
  config    show config
  validate  validates via swagger-2.0 spec

Swagger-bundler has two commands.

  • bundle

  • concat

bundle

This is the main feature. bundling many source files into one single swagger-definition file.

$ swagger-bundler bundle <file.yaml>

The target file of swagger-bundler, it can use three special-marker.

  • x-bundler-namespace – when bundling, using this value as prefix string.

  • x-bundler-compose – importing from other files with namespace

  • x-bundler-concat – importing from other files without namespace

For example. the structure of current working directory is such as below,

.
├── main.yaml
└── parts
    ├── common.yaml
    ├── x.yaml
    └── y.yaml

and the content of main.yaml is this.

x-bundler-namespace: ZZZ
x-bundler-compose:
  - ./parts/x.yaml
  - ./parts/y.yaml
x-bundler-concat:
  - ./parts/common.yaml

And run it.

$ swagger-bundler bundle main.yaml
  • definitions in x.yaml, y.yaml are renamed (with namespace). (e.g. foo -> ZZZFoo)

  • definitions in common.yaml are not renamed. (e.g. bar -> bar)

The link of example.

qualified import.

x-bundler-namespace: O
x-bundler-compose:
  - ../parts/x-state.yaml as X
  - ../parts/y-state.yaml as Y

then

  • state of x-state.yaml is converting XState, eventually, OXState

  • state of y-state.yaml is converting YState, eventually, OYState

the link of example(qualified import)

concat

This is just concatnate files.

$ swagger-bundler concat [file1.yaml] [file2.yaml] ...

appendix:

  • hook configuration.

  • watch option is supported.

hook configuration

Hook configuration examples.

watch option

# installed with [watch]
$ pip install "swagger-bundler[watch]"
$ swagger-bundler bundle --watch "*.yaml" --outfile="/tmp/output.yaml" src.yaml

0.1.10.4

  • fix deref implemetation

0.1.10.1

  • fix deref implemetation

0.1.10

  • adding load hook

  • (adding deref example)

0.1.9

  • fix titlize function is invalid that using lifting definition hook. (fooBar -> Foobar)

0.1.8

  • fix qualified import bug(since 0.1.7)

0.1.7

  • reviving context cache

  • fix ValueError when merging with None

0.1.6

  • fix bug (lifting definition on array)

0.1.5

  • adding postscript.lifting_definition(hook)

0.1.4

  • adding extra information, exposed_predicate, on prefixing(add_namespace) postscript hook

0.1.3

  • bug fix

0.1.2

  • adding orphan reference check

0.1.1

  • more hooks (add_namespace, validate)

0.1

  • postscript_hook

0.0.7

  • prefixing targets responses,definisions -> responses,definisions,parameters

0.0.6

  • fix case: ctx.data has ‘responses’ data (but value is None)

  • fix watching generated file

0.0.5

  • watch option is supported

0.0.4

  • gentle warning message on FileNotFoundError

  • bundle command with –namespace option

  • qualified import (e.g. x-bundler-compose with ‘foo.yaml as F’)

0.0.3

  • adding readme and examples

  • support json format(input/output)

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

swagger-bundler-0.1.10.5.tar.gz (20.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

swagger_bundler-0.1.10.5-py2.py3-none-any.whl (25.9 kB view details)

Uploaded Python 2Python 3

File details

Details for the file swagger-bundler-0.1.10.5.tar.gz.

File metadata

File hashes

Hashes for swagger-bundler-0.1.10.5.tar.gz
Algorithm Hash digest
SHA256 8fa3a0485b3df1b2c3e31fed7f8c1ab7664495fe1d33e215e2d1e9e2c9803863
MD5 a2ecf8087fa9992e1bddb9eb5ea5d201
BLAKE2b-256 811536e8e91638cc57dd2ecb3e2f39dbbdffd4314f7a920dc0796bed8bc75fe6

See more details on using hashes here.

File details

Details for the file swagger_bundler-0.1.10.5-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for swagger_bundler-0.1.10.5-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 854c5ae5d72665f608eb930cce6bcba3ee0b5b07dfa2de30e99908e7628b4af0
MD5 e6fd1e62dc2f6e2975b0c28399122339
BLAKE2b-256 2e177842e28362bd0338fea5d404cf5a1a926c20a1ee208cdb0031a3c055dc28

See more details on using hashes here.

Supported by

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