Swagger/OpenAPI 2.0 Parser
Prance provides parsers for Swagger/OpenAPI 2.0 API specifications in Python. It uses swagger_spec_validator to validate specifications, but additionally resolves JSON references in accordance with the Swagger spec.
Mostly the latter involves handling non-URI references; Swagger is fine with providing relative file paths, whereas JSON references require URIs at this point in time.
Command Line Interface
After installing prance, a CLI is available for validating (and resolving external references in) specs:
# Validates with resolving $ prance validate path/to/swagger.yml # Validates without resolving $ prance validate --no-resolve path/to/swagger.yml # Validates and resolves, and writes the results to output.yaml $ prance validate -o output.yaml path/to/swagger.yml # Fetch URL, validate and resolve. $ prance validate http://petstore.swagger.io/v2/swagger.json Processing "http://petstore.swagger.io/v2/swagger.json"... -> Resolving external references. Validates OK as Swagger/OpenAPI 2.0!
Most likely you have spec file and want to parse it:
from prance import ResolvingParser parser = ResolvingParser('path/to/my/swagger.yaml') parser.specification # contains fully resolved specs as a dict
Prance also includes a non-resolving parser that does not follow JSON references, in case you prefer that.
from prance import BaseParser parser = BaseParser('path/to/my/swagger.yaml') parser.specification # contains specs as a dict still containing JSON references
URLs can also be parsed:
parser = ResolvingParser('http://petstore.swagger.io/v2/swagger.json')
Largely, that’s it. There is a whole slew of utility code that you may or may not find useful, too. Look at the full documentation for details.
Use virtualenv to create a virtual environment and change to it or not, as you see fit.
Then install the requirements:
$ pip install -r requirements.txt
After setup, run the following to generate documentation:
$ python setup.py build_sphinx
Run the whole test suite:
$ python setup.py test
Run a single test scenario:
$ pytest tests/test_resolving_parser.py::test_basics
Run tests on multiple Python versions:
Run tests on Python 2.7:
$ tox -e py27
A simple test coverage report is automatically generated.
Licensed under MITNFA (MIT +no-false-attribs) License. See the LICENSE.txt file for details.
Release history Release notifications
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size & hash SHA256 hash help||File type||Python version||Upload date|
|prance-0.4.0-py2.py3-none-any.whl (18.7 kB) Copy SHA256 hash SHA256||Wheel||py2.py3||Apr 3, 2017|
|prance-0.4.0.tar.gz (28.6 kB) Copy SHA256 hash SHA256||Source||None||Apr 3, 2017|