Metadata-Version: 2.1
Name: openapi3
Version: 1.8.2
Summary: Client and Validator of OpenAPI 3 Specifications
Home-page: https://github.com/dorthu/openapi3
Author: dorthu
License: BSD 3-Clause License
Description: openapi3
        ========
        
        A Python `OpenAPI 3 Specification`_ client and validator for Python 3.
        
        .. image:: https://github.com/Dorthu/openapi3/actions/workflows/main.yml/badge.svg
           :alt: GitHub Actions Build Badge
        
        .. image:: https://badge.fury.io/py/openapi3.svg
           :target: https://badge.fury.io/py/openapi3
        
        
        Validation Mode
        ---------------
        
        This module can be run against a spec file to validate it like so::
        
           python3 -m openapi3 /path/to/spec
        
        Usage as a Client
        -----------------
        
        This library also functions as an interactive client for arbitrary OpenAPI 3
        specs. For example, using `Linode's OpenAPI 3 Specification`_ for reference::
        
           from openapi3 import OpenAPI
           import yaml
        
           # load the spec file and read the yaml
           with open('openapi.yaml') as f:
               spec = yaml.safe_load(f.read())
        
           # parse the spec into python - this will raise if the spec is invalid
           api = OpenAPI(spec)
        
           # call operations and receive result models
           regions = api.call_getRegions()
        
           # authenticate using a securityScheme defined in the spec's components.securitySchemes
           api.authenticate('personalAccessToken', my_token)
        
           # call an operation that requires authentication
           linodes  = api.call_getLinodeInstances()
        
           # call an operation with parameters
           linode = api.call_getLinodeInstance(parameters={"linodeId": 123})
        
           # the models returns are all of the same (generated) type
           print(type(linode))                      # openapi.schemas.Linode
           type(linode) == type(linodes.data[0])    # True
        
           # call an operation with a request body
           new_linode = api.call_createLinodeInstance(data={"region":"us-east","type":"g6-standard-2"})
        
           # the returned models is still of the correct type
           type(new_linode) == type(linode)     # True
        
        HTTP basic authentication and HTTP digest authentication works like this::
        
           # authenticate using a securityScheme defined in the spec's components.securitySchemes
           # Tuple with (username, password) as second argument
           api.authenticate('basicAuth', ('username', 'password'))
        
        Running Tests
        -------------
        
        This project includes a test suite, run via ``pytest``.  To run the test suite,
        ensure that you've installed the dependencies and then run ``pytest`` in the root
        of this project.
        
        Roadmap
        -------
        
        The following features are planned for the future:
        
        * Request body models, creation, and validation.
        * Parameters interface with validation and explicit typing.
        * Support for more authentication types.
        * Support for non-json request/response content.
        * Full support for all objects defined in the specification.
        
        .. _OpenAPI 3 Specification: https://openapis.org
        .. _Linode's OpenAPI 3 Specification: https://developers.linode.com/api/v4
        
        
Platform: UNKNOWN
Provides-Extra: test
