Swagger/OpenAPI 2.0 Parser
Project description
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.
Usage
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!
Code
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.
Setup
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
Documentation
After setup, run the following to generate documentation:
$ python setup.py build_sphinx
Development
Test Execution
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:
$ tox
Run tests on Python 2.7:
$ tox -e py27
A simple test coverage report is automatically generated.
License
Licensed under MITNFA (MIT +no-false-attribs) License. See the LICENSE.txt file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for prance-0.5.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0a3cf2376d6aec32fdd2070b3c1d86dde3a5bb7d0687d4bbf00bf3b36f920826 |
|
MD5 | 5b5f1d7610f7160fc73a7c5142d7e3d7 |
|
BLAKE2b-256 | 49896e18f5245093f86b2aba390bf97c5c9c430d8a0efec0f546a229d59b8387 |