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.

Files for swagger-bundler, version 0.1.10.6
Filename, size File type Python version Upload date Hashes
Filename, size swagger_bundler-0.1.10.6-py2.py3-none-any.whl (25.9 kB) File type Wheel Python version 3.5 Upload date Hashes View
Filename, size swagger-bundler-0.1.10.6.tar.gz (20.4 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page