flask-restplus


Nameflask-restplus JSON
Version 0.13.0 PyPI version JSON
download
home_pagehttps://github.com/noirbizarre/flask-restplus
SummaryFully featured framework for fast, easy and documented API development with Flask
upload_time2019-08-12 21:51:33
maintainer
docs_urlNone
authorAxel Haustant
requires_python
licenseBSD-3-Clause
keywords flask restplus rest api swagger openapi
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI
coveralls test coverage No coveralls.
            ==============
Flask RestPlus
==============

.. image:: https://secure.travis-ci.org/noirbizarre/flask-restplus.svg?tag=0.13.0
    :target: https://travis-ci.org/noirbizarre/flask-restplus?tag=0.13.0
    :alt: Build status
.. image:: https://coveralls.io/repos/noirbizarre/flask-restplus/badge.svg?tag=0.13.0
    :target: https://coveralls.io/r/noirbizarre/flask-restplus?tag=0.13.0
    :alt: Code coverage
.. image:: https://readthedocs.org/projects/flask-restplus/badge/?version=0.13.0
    :target: https://flask-restplus.readthedocs.io/en/0.13.0/
    :alt: Documentation status
.. image:: https://img.shields.io/pypi/l/flask-restplus.svg
    :target: https://pypi.org/project/flask-restplus
    :alt: License
.. image:: https://img.shields.io/pypi/pyversions/flask-restplus.svg
    :target: https://pypi.org/project/flask-restplus
    :alt: Supported Python versions
.. image:: https://badges.gitter.im/Join%20Chat.svg
   :alt: Join the chat at https://gitter.im/noirbizarre/flask-restplus
   :target: https://gitter.im/noirbizarre/flask-restplus?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge

Flask-RESTPlus is an extension for `Flask`_ that adds support for quickly building REST APIs.
Flask-RESTPlus encourages best practices with minimal setup.
If you are familiar with Flask, Flask-RESTPlus should be easy to pick up.
It provides a coherent collection of decorators and tools to describe your API
and expose its documentation properly using `Swagger`_.


Compatibility
=============

Flask-RestPlus requires Python 2.7 or 3.4+.


Installation
============

You can install Flask-Restplus with pip:

.. code-block:: console

    $ pip install flask-restplus

or with easy_install:

.. code-block:: console

    $ easy_install flask-restplus


Quick start
===========

With Flask-Restplus, you only import the api instance to route and document your endpoints.

.. code-block:: python

    from flask import Flask
    from flask_restplus import Api, Resource, fields

    app = Flask(__name__)
    api = Api(app, version='1.0', title='TodoMVC API',
        description='A simple TodoMVC API',
    )

    ns = api.namespace('todos', description='TODO operations')

    todo = api.model('Todo', {
        'id': fields.Integer(readOnly=True, description='The task unique identifier'),
        'task': fields.String(required=True, description='The task details')
    })


    class TodoDAO(object):
        def __init__(self):
            self.counter = 0
            self.todos = []

        def get(self, id):
            for todo in self.todos:
                if todo['id'] == id:
                    return todo
            api.abort(404, "Todo {} doesn't exist".format(id))

        def create(self, data):
            todo = data
            todo['id'] = self.counter = self.counter + 1
            self.todos.append(todo)
            return todo

        def update(self, id, data):
            todo = self.get(id)
            todo.update(data)
            return todo

        def delete(self, id):
            todo = self.get(id)
            self.todos.remove(todo)


    DAO = TodoDAO()
    DAO.create({'task': 'Build an API'})
    DAO.create({'task': '?????'})
    DAO.create({'task': 'profit!'})


    @ns.route('/')
    class TodoList(Resource):
        '''Shows a list of all todos, and lets you POST to add new tasks'''
        @ns.doc('list_todos')
        @ns.marshal_list_with(todo)
        def get(self):
            '''List all tasks'''
            return DAO.todos

        @ns.doc('create_todo')
        @ns.expect(todo)
        @ns.marshal_with(todo, code=201)
        def post(self):
            '''Create a new task'''
            return DAO.create(api.payload), 201


    @ns.route('/<int:id>')
    @ns.response(404, 'Todo not found')
    @ns.param('id', 'The task identifier')
    class Todo(Resource):
        '''Show a single todo item and lets you delete them'''
        @ns.doc('get_todo')
        @ns.marshal_with(todo)
        def get(self, id):
            '''Fetch a given resource'''
            return DAO.get(id)

        @ns.doc('delete_todo')
        @ns.response(204, 'Todo deleted')
        def delete(self, id):
            '''Delete a task given its identifier'''
            DAO.delete(id)
            return '', 204

        @ns.expect(todo)
        @ns.marshal_with(todo)
        def put(self, id):
            '''Update a task given its identifier'''
            return DAO.update(id, api.payload)


    if __name__ == '__main__':
        app.run(debug=True)


Contributors
============

Flask-RESTPlus is brought to you by @noirbizarre. Since early 2019 @SteadBytes,
@a-luna, @j5awry, @ziirish volunteered to help @noirbizarre keep the project up
and running.
Of course everyone is welcome to contribute and we will be happy to review your
PR's or answer to your issues.


Documentation
=============

The documentation is hosted `on Read the Docs <http://flask-restplus.readthedocs.io/en/latest/>`_


.. _Flask: http://flask.pocoo.org/
.. _Swagger: http://swagger.io/


Contribution
============
Want to contribute! That's awesome! Check out `CONTRIBUTING.rst! <https://github.com/noirbizarre/flask-restplus/blob/master/CONTRIBUTING.rst>`_
Changelog
=========



0.13.0 (2019-08-12)
-------------------

- Add new `Wildcard` fields (`#255 <https://github.com/noirbizarre/flask-restplus/pull/255>`_)
- Fix ABC deprecation warnings (`#580 <https://github.com/noirbizarre/flask-restplus/pull/580>`_)
- Fix `@api.expect(..., validate=False)` decorators for an ``Api`` where `validate=True` is set on the constructor (`#609 <https://github.com/noirbizarre/flask-restplus/issues/609>`_, `#610 <https://github.com/noirbizarre/flask-restplus/pull/610>`_)
- Ensure `basePath` is always a path
- Hide Namespaces with all hidden Resources from Swagger documentation
- Per route Swagger documentation for multiple routes on a ``Resource``

0.12.1 (2018-09-28)
-------------------

- Fix missing changelog inprevious release
- Ensure definitions with both `$ref` and description (or other property) output is valid (using `allOf`)
- Added initial specifications schemas and validation support
- Ensure empty enums are not serialized (to have a valid specification)

0.12.0 (2018-09-27)
-------------------

- Fix Namespace decorators (`#475 <https://github.com/noirbizarre/flask-restplus/issues/475>`_)
- Do not serialize empty tags descriptions
- Ensure `consumes` is properly set when using form parameters on classes
- Ensure parameters are not duplicated (`#164 <https://github.com/noirbizarre/flask-restplus/issues/164>`_, `#196 <https://github.com/noirbizarre/flask-restplus/issues/196>`_, `#234 <https://github.com/noirbizarre/flask-restplus/issues/234>`_)
- Publish sources distribution (`#500 <https://github.com/noirbizarre/flask-restplus/issues/500>`_, `#515 <https://github.com/noirbizarre/flask-restplus/issues/515>`_)
- Fix late resources registeration (`#483 <https://github.com/noirbizarre/flask-restplus/issues/483>`_)
- Don't include namespaces without resources to the SWAGGER documentation (`#470 <https://github.com/noirbizarre/flask-restplus/issues/470>`_)
- Add support for checkbox validation input + consistent behavior between inputs and fields. (`#461 <https://github.com/noirbizarre/flask-restplus/issues/461>`_)
- Fix missing `enum34` dependency (`#444 <https://github.com/noirbizarre/flask-restplus/issues/444>`_)

0.11.0 (2018-05-16)
-------------------

- Add authorizations parsing to namespace (`#403 <https://github.com/noirbizarre/flask-restplus/issues/403>`_)
- Add vendor extensions support (`#97 <https://github.com/noirbizarre/flask-restplus/issues/97>`_)
- ``RequestParser`` arguments now support the ``split`` action
- Ensure default boolean value as `False` works with ``RequestParser`` (`#199 <https://github.com/noirbizarre/flask-restplus/issues/199>`_)
- Schema errors are not longuer hidden by `AttributeError: Api does not have __schema__ attribute` (`#194 <https://github.com/noirbizarre/flask-restplus/issues/194>`_)
- Add a new ``URL`` validator, more flexible and precise.
- Fix error bundling (`#175 <https://github.com/noirbizarre/flask-restplus/issues/175>`_, `#144 <https://github.com/noirbizarre/flask-restplus/issues/144>`_)
- Help message is now added to source error message instead of string interpolation (`#147 <https://github.com/noirbizarre/flask-restplus/issues/147>`_)
- Use pytest instead of nosetests
- Upgrade to Swagger-UI 3.4.0
- Fix typo in comments
- Add an optional key argument, ``skip_none``, in ``marshal_with`` and ``marshal``
- Fix masks not working correctly with Python 2.7 (`#217 <https://github.com/noirbizarre/flask-restplus/issues/217>`_)
- Fixed typos in doc/scaling
- Add docs for `allow_null` and ``Nested``
- Add Namespace.payload
- **Breaking**: everything is unordered by default because ordering has a serious impact on performances:
    - ``Api`` and ``Namespace`` now accept an optionnal ``ordered`` parameter
    - ``marshal_with`` and ``marshal`` now accept an optionnal ``ordered`` parameter

Breaking changes
~~~~~~~~~~~~~~~~

- Drop python 2.6 support
- Improve header handling (`#119 <https://github.com/noirbizarre/flask-restplus/issues/119>`_):
    - `@api.header` only document response headers on all responses
    - `@api.response` accept an optionnal `headers` argument to document response specific headers
    - request header are handled by the `@api.expect` decorator

0.10.1 (2017-03-04)
-------------------

- Fix a typo in ``__init__`` breaking ``from flask_restplus import *`` (`#242 <https://github.com/noirbizarre/flask-restplus/issues/242>`_)
- Basic support for custom URL converters (`#243 <https://github.com/noirbizarre/flask-restplus/issues/243>`_)
- Support custom response classes inheriting from ``BaseResponse`` (`#245 <https://github.com/noirbizarre/flask-restplus/issues/245>`_)
- Allow models to preserve order (`#135 <https://github.com/noirbizarre/flask-restplus/issues/135>`_)

0.10.0 (2017-02-12)
-------------------

- Allows to specify a custom mount path on namespace registration
- Allow to express models as raw schemas
- Upgraded to Swagger-UI 2.2.6
- Support Swagger-UI translations
- Fix prefix trailing slash stripping in Postman doc generation (`#232 <https://github.com/noirbizarre/flask-restplus/issues/232>`_)
- Add validation for lists in the expect decorator (`#231 <https://github.com/noirbizarre/flask-restplus/issues/231>`_)

0.9.2 (2016-04-22)
------------------

- Same version but a PyPI bug force reupload.

0.9.1 (2016-04-22)
------------------

- Added some Swagger-UI Oauth configurations:
    - `SWAGGER_UI_OAUTH_CLIENT_ID`
    - `SWAGGER_UI_OAUTH_REALM`
    - `SWAGGER_UI_OAUTH_APP_NAME`
- Expose ``type: object`` in Swagger schemas (`#157 <https://github.com/noirbizarre/flask-restplus/issues/157>`_)
- Fix an issue with error handlers (`#141 <https://github.com/noirbizarre/flask-restplus/issues/141>`_)
- Fix an issue with Postman export when using OAuth (`#151 <https://github.com/noirbizarre/flask-restplus/issues/151>`_)
- Miscellenaous code and documentation fixes
- Remove last flask-restful references (unless needed) and add missing attributions

0.9.0 (2016-02-22)
------------------

- Make ``Namespace`` behave like ``Blueprint`` for ``Flask``
- Deprecated ``parser`` and ``body`` parameters for ``expect`` in ``doc`` decorator
- Deprecated ``Model.extend`` in favor of ``Model.clone``
- Added the ``param`` decorator
- Honour method restrictions in Swagger documentation (`#93 <https://github.com/noirbizarre/flask-restplus/issues/93>`_)
- Improved documentation

0.8.6 (2015-12-26)
------------------

- Handle callable on API infos
- Handle documentation on error handlers
- Drop/merge flask_restful ``flask_restful.RequestParser``
- Handle ``RequestParser`` into ``expect`` decorator
- Handle schema for ``inputs`` parsers
- Added some inputs:
    - ``email``
    - ``ip``
    - ``ipv4``
    - ``ipv6``


0.8.5 (2015-12-12)
------------------

- Handle mask on ``Polymorph`` field
- Handle mask on inherited models
- Replace `flask_restful.abort` by ``flask_restplus.errors.abort``
- Replace `flask_restful.unpack` by ``flask_restplus.utils.unpack``
- **Breaking changes**:
    - Renamed ``ApiModel`` into ``Model``
    - Renamed ``ApiNamespace`` into ``Namespace``


0.8.4 (2015-12-07)
------------------

- Drop/merge `flask_restful.Resource` resolving a recursion problem
- Allow any `callable` as field `default`, `min`, `max`...
- Added ``Date`` field
- Improve error handling for inconsistent masks
- Handle model level default mask
- support colons and dashes in mask field names
- **Breaking changes**:
   - Renamed `exceptions` module into `errors`
   - Renamed `RestException` into ``RestError``
   - Renamed `MarshallingException` into ``MarshallingError``
   - ``DateTime`` field always output datetime

0.8.3 (2015-12-05)
------------------

- Drop/merge flask-restful fields
- Drop/merge flask-restplus inputs
- Update Swagger-UI to version 2.1.3
- Use minified version of Swagger-UI if ``DEBUG=False``
- Blueprint subdomain support (static only)
- Added support for default fields mask

0.8.2 (2015-12-01)
------------------

- Skip unknown fields in mask when applied on a model
- Added `*` token to fields mask (all remaining fields)
- Ensure generated endpoints does not collide
- Drop/merge flask-restful `Api.handler_error()`

0.8.1 (2015-11-27)
------------------

- Refactor Swagger UI handling:
    - allow to register a custom view with ``@api.documentation``
    - allow to register a custom URL with the ``doc`` parameter
    - allow to disable documentation with ``doc=False``
- Added fields mask support through header (see: `Fields Masks Documentation <http://flask-restplus.readthedocs.org/en/stable/mask.html>`_)
- Expose ``flask_restful.inputs`` module on ``flask_restplus.inputs``
- Added support for some missing fields and attributes:
    - ``host`` root field (filed only if ``SERVER_NAME`` config is set)
    - custom ``tags`` root field
    - ``exclusiveMinimum`` and ``exclusiveMaximum`` number field attributes
    - ``multipleOf`` number field attribute
    - ``minLength`` and ``maxLength`` string field attributes
    - ``pattern`` string field attribute
    - ``minItems`` and ``maxItems`` list field attributes
    - ``uniqueItems`` list field attribute
- Allow to override the default error handler
- Fixes


0.8.0
-----

- Added payload validation (initial implementation based on jsonschema)
- Added ``@api.deprecated`` to mark resources or methods as deprecated
- Added ``@api.header`` decorator shortcut to document headers
- Added Postman export
- Fix compatibility with flask-restful 0.3.4
- Allow to specify an exemple a custom fields with ``__schema_example__``
- Added support for ``PATCH`` method in Swagger UI
- Upgraded to Swagger UI 2.1.2
- Handle enum as callable
- Allow to configure ``docExpansion`` with the ``SWAGGER_UI_DOC_EXPANSION`` parameter


0.7.2
-----

- Compatibility with flask-restful 0.3.3
- Fix action=append handling in RequestParser
- Upgraded to SwaggerUI 2.1.8-M1
- Miscellaneous fixes


0.7.1
-----

- Fix ``@api.marshal_with_list()`` keyword arguments handling.


0.7.0
-----

- Expose models and fields schema through the ``__schema__`` attribute
- Drop support for model as class
- Added ``@api.errorhandler()`` to register custom error handlers
- Added ``@api.response()`` shortcut decorator
- Fix list nested models missing in definitions


0.6.0
-----

- Python 2.6 support
- Experimental polymorphism support (single inheritance only)
    - Added ``Polymorph`` field
    - Added ``discriminator`` attribute support on ``String`` fields
    - Added ``api.inherit()`` method
- Added ``ClassName`` field

0.5.1
-----

- Fix for parameter with schema (do not set type=string)


0.5.0
-----

- Allow shorter syntax to set operation id: ``@api.doc('my-operation')``
- Added a shortcut to specify the expected input model: ``@api.expect(my_fields)``
- Added ``title`` attribute to fields
- Added ``@api.extend()`` to extend models
- Ensure coherence between ``required`` and ``allow_null`` for ``NestedField``
- Support list of primitive types and list of models as body
- Upgraded to latest version of Swagger UI
- Fixes


0.4.2
-----

- Rename apidoc blueprint into restplus_doc to avoid collisions


0.4.1
-----

- Added ``SWAGGER_VALIDATOR_URL`` config parameter
- Added ``readonly`` field parameter
- Upgraded to latest version of Swagger UI


0.4.0
-----

- Port to Flask-Restful 0.3+
- Use the default Blueprint/App mecanism
- Allow to hide some ressources or methods using ``@api.doc(False)`` or ``@api.hide``
- Allow to globally customize the default operationId with the ``default_id`` callable parameter

0.3.0
-----

- Switch to Swagger 2.0 (Major breakage)
    - ``notes`` documentation is now ``description``
    - ``nickname`` documentation is now ``id``
    - new responses declaration format
- Added missing ``body`` parameter to document ``body`` input
- Last release before Flask-Restful 0.3+ compatibility switch


0.2.4
-----

- Handle ``description`` and ``required`` attributes on ``fields.List``

0.2.3
-----

- Fix custom fields registeration

0.2.2
-----

- Fix model list in declaration

0.2.1
-----

- Allow to type custom fields with ``Api.model``
- Handle custom fields into ``fieds.List``

0.2
---

- Upgraded to SwaggerUI 0.2.22
- Support additional field documentation attributes: ``required``, ``description``, ``enum``, ``min``, ``max`` and ``default``
- Initial support for model in RequestParser

0.1.3
-----

- Fix ``Api.marshal()`` shortcut

0.1.2
-----

- Added ``Api.marshal_with()`` and ``Api.marshal_list_with()`` decorators
- Added ``Api.marshal()`` shortcut


0.1.1
-----

- Use ``zip_safe=False`` for proper packaging.


0.1
---

- Initial release


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/noirbizarre/flask-restplus",
    "name": "flask-restplus",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "flask restplus rest api swagger openapi",
    "author": "Axel Haustant",
    "author_email": "axel@data.gouv.fr",
    "download_url": "https://files.pythonhosted.org/packages/ac/d6/270f22ed9974e3ce0a3cc8c0be08211e63f82b46550dda85d0ae26b37371/flask-restplus-0.13.0.tar.gz",
    "platform": "",
    "description": "==============\nFlask RestPlus\n==============\n\n.. image:: https://secure.travis-ci.org/noirbizarre/flask-restplus.svg?tag=0.13.0\n    :target: https://travis-ci.org/noirbizarre/flask-restplus?tag=0.13.0\n    :alt: Build status\n.. image:: https://coveralls.io/repos/noirbizarre/flask-restplus/badge.svg?tag=0.13.0\n    :target: https://coveralls.io/r/noirbizarre/flask-restplus?tag=0.13.0\n    :alt: Code coverage\n.. image:: https://readthedocs.org/projects/flask-restplus/badge/?version=0.13.0\n    :target: https://flask-restplus.readthedocs.io/en/0.13.0/\n    :alt: Documentation status\n.. image:: https://img.shields.io/pypi/l/flask-restplus.svg\n    :target: https://pypi.org/project/flask-restplus\n    :alt: License\n.. image:: https://img.shields.io/pypi/pyversions/flask-restplus.svg\n    :target: https://pypi.org/project/flask-restplus\n    :alt: Supported Python versions\n.. image:: https://badges.gitter.im/Join%20Chat.svg\n   :alt: Join the chat at https://gitter.im/noirbizarre/flask-restplus\n   :target: https://gitter.im/noirbizarre/flask-restplus?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge\n\nFlask-RESTPlus is an extension for `Flask`_ that adds support for quickly building REST APIs.\nFlask-RESTPlus encourages best practices with minimal setup.\nIf you are familiar with Flask, Flask-RESTPlus should be easy to pick up.\nIt provides a coherent collection of decorators and tools to describe your API\nand expose its documentation properly using `Swagger`_.\n\n\nCompatibility\n=============\n\nFlask-RestPlus requires Python 2.7 or 3.4+.\n\n\nInstallation\n============\n\nYou can install Flask-Restplus with pip:\n\n.. code-block:: console\n\n    $ pip install flask-restplus\n\nor with easy_install:\n\n.. code-block:: console\n\n    $ easy_install flask-restplus\n\n\nQuick start\n===========\n\nWith Flask-Restplus, you only import the api instance to route and document your endpoints.\n\n.. code-block:: python\n\n    from flask import Flask\n    from flask_restplus import Api, Resource, fields\n\n    app = Flask(__name__)\n    api = Api(app, version='1.0', title='TodoMVC API',\n        description='A simple TodoMVC API',\n    )\n\n    ns = api.namespace('todos', description='TODO operations')\n\n    todo = api.model('Todo', {\n        'id': fields.Integer(readOnly=True, description='The task unique identifier'),\n        'task': fields.String(required=True, description='The task details')\n    })\n\n\n    class TodoDAO(object):\n        def __init__(self):\n            self.counter = 0\n            self.todos = []\n\n        def get(self, id):\n            for todo in self.todos:\n                if todo['id'] == id:\n                    return todo\n            api.abort(404, \"Todo {} doesn't exist\".format(id))\n\n        def create(self, data):\n            todo = data\n            todo['id'] = self.counter = self.counter + 1\n            self.todos.append(todo)\n            return todo\n\n        def update(self, id, data):\n            todo = self.get(id)\n            todo.update(data)\n            return todo\n\n        def delete(self, id):\n            todo = self.get(id)\n            self.todos.remove(todo)\n\n\n    DAO = TodoDAO()\n    DAO.create({'task': 'Build an API'})\n    DAO.create({'task': '?????'})\n    DAO.create({'task': 'profit!'})\n\n\n    @ns.route('/')\n    class TodoList(Resource):\n        '''Shows a list of all todos, and lets you POST to add new tasks'''\n        @ns.doc('list_todos')\n        @ns.marshal_list_with(todo)\n        def get(self):\n            '''List all tasks'''\n            return DAO.todos\n\n        @ns.doc('create_todo')\n        @ns.expect(todo)\n        @ns.marshal_with(todo, code=201)\n        def post(self):\n            '''Create a new task'''\n            return DAO.create(api.payload), 201\n\n\n    @ns.route('/<int:id>')\n    @ns.response(404, 'Todo not found')\n    @ns.param('id', 'The task identifier')\n    class Todo(Resource):\n        '''Show a single todo item and lets you delete them'''\n        @ns.doc('get_todo')\n        @ns.marshal_with(todo)\n        def get(self, id):\n            '''Fetch a given resource'''\n            return DAO.get(id)\n\n        @ns.doc('delete_todo')\n        @ns.response(204, 'Todo deleted')\n        def delete(self, id):\n            '''Delete a task given its identifier'''\n            DAO.delete(id)\n            return '', 204\n\n        @ns.expect(todo)\n        @ns.marshal_with(todo)\n        def put(self, id):\n            '''Update a task given its identifier'''\n            return DAO.update(id, api.payload)\n\n\n    if __name__ == '__main__':\n        app.run(debug=True)\n\n\nContributors\n============\n\nFlask-RESTPlus is brought to you by @noirbizarre. Since early 2019 @SteadBytes,\n@a-luna, @j5awry, @ziirish volunteered to help @noirbizarre keep the project up\nand running.\nOf course everyone is welcome to contribute and we will be happy to review your\nPR's or answer to your issues.\n\n\nDocumentation\n=============\n\nThe documentation is hosted `on Read the Docs <http://flask-restplus.readthedocs.io/en/latest/>`_\n\n\n.. _Flask: http://flask.pocoo.org/\n.. _Swagger: http://swagger.io/\n\n\nContribution\n============\nWant to contribute! That's awesome! Check out `CONTRIBUTING.rst! <https://github.com/noirbizarre/flask-restplus/blob/master/CONTRIBUTING.rst>`_\nChangelog\n=========\n\n\n\n0.13.0 (2019-08-12)\n-------------------\n\n- Add new `Wildcard` fields (`#255 <https://github.com/noirbizarre/flask-restplus/pull/255>`_)\n- Fix ABC deprecation warnings (`#580 <https://github.com/noirbizarre/flask-restplus/pull/580>`_)\n- Fix `@api.expect(..., validate=False)` decorators for an ``Api`` where `validate=True` is set on the constructor (`#609 <https://github.com/noirbizarre/flask-restplus/issues/609>`_, `#610 <https://github.com/noirbizarre/flask-restplus/pull/610>`_)\n- Ensure `basePath` is always a path\n- Hide Namespaces with all hidden Resources from Swagger documentation\n- Per route Swagger documentation for multiple routes on a ``Resource``\n\n0.12.1 (2018-09-28)\n-------------------\n\n- Fix missing changelog inprevious release\n- Ensure definitions with both `$ref` and description (or other property) output is valid (using `allOf`)\n- Added initial specifications schemas and validation support\n- Ensure empty enums are not serialized (to have a valid specification)\n\n0.12.0 (2018-09-27)\n-------------------\n\n- Fix Namespace decorators (`#475 <https://github.com/noirbizarre/flask-restplus/issues/475>`_)\n- Do not serialize empty tags descriptions\n- Ensure `consumes` is properly set when using form parameters on classes\n- Ensure parameters are not duplicated (`#164 <https://github.com/noirbizarre/flask-restplus/issues/164>`_, `#196 <https://github.com/noirbizarre/flask-restplus/issues/196>`_, `#234 <https://github.com/noirbizarre/flask-restplus/issues/234>`_)\n- Publish sources distribution (`#500 <https://github.com/noirbizarre/flask-restplus/issues/500>`_, `#515 <https://github.com/noirbizarre/flask-restplus/issues/515>`_)\n- Fix late resources registeration (`#483 <https://github.com/noirbizarre/flask-restplus/issues/483>`_)\n- Don't include namespaces without resources to the SWAGGER documentation (`#470 <https://github.com/noirbizarre/flask-restplus/issues/470>`_)\n- Add support for checkbox validation input + consistent behavior between inputs and fields. (`#461 <https://github.com/noirbizarre/flask-restplus/issues/461>`_)\n- Fix missing `enum34` dependency (`#444 <https://github.com/noirbizarre/flask-restplus/issues/444>`_)\n\n0.11.0 (2018-05-16)\n-------------------\n\n- Add authorizations parsing to namespace (`#403 <https://github.com/noirbizarre/flask-restplus/issues/403>`_)\n- Add vendor extensions support (`#97 <https://github.com/noirbizarre/flask-restplus/issues/97>`_)\n- ``RequestParser`` arguments now support the ``split`` action\n- Ensure default boolean value as `False` works with ``RequestParser`` (`#199 <https://github.com/noirbizarre/flask-restplus/issues/199>`_)\n- Schema errors are not longuer hidden by `AttributeError: Api does not have __schema__ attribute` (`#194 <https://github.com/noirbizarre/flask-restplus/issues/194>`_)\n- Add a new ``URL`` validator, more flexible and precise.\n- Fix error bundling (`#175 <https://github.com/noirbizarre/flask-restplus/issues/175>`_, `#144 <https://github.com/noirbizarre/flask-restplus/issues/144>`_)\n- Help message is now added to source error message instead of string interpolation (`#147 <https://github.com/noirbizarre/flask-restplus/issues/147>`_)\n- Use pytest instead of nosetests\n- Upgrade to Swagger-UI 3.4.0\n- Fix typo in comments\n- Add an optional key argument, ``skip_none``, in ``marshal_with`` and ``marshal``\n- Fix masks not working correctly with Python 2.7 (`#217 <https://github.com/noirbizarre/flask-restplus/issues/217>`_)\n- Fixed typos in doc/scaling\n- Add docs for `allow_null` and ``Nested``\n- Add Namespace.payload\n- **Breaking**: everything is unordered by default because ordering has a serious impact on performances:\n    - ``Api`` and ``Namespace`` now accept an optionnal ``ordered`` parameter\n    - ``marshal_with`` and ``marshal`` now accept an optionnal ``ordered`` parameter\n\nBreaking changes\n~~~~~~~~~~~~~~~~\n\n- Drop python 2.6 support\n- Improve header handling (`#119 <https://github.com/noirbizarre/flask-restplus/issues/119>`_):\n    - `@api.header` only document response headers on all responses\n    - `@api.response` accept an optionnal `headers` argument to document response specific headers\n    - request header are handled by the `@api.expect` decorator\n\n0.10.1 (2017-03-04)\n-------------------\n\n- Fix a typo in ``__init__`` breaking ``from flask_restplus import *`` (`#242 <https://github.com/noirbizarre/flask-restplus/issues/242>`_)\n- Basic support for custom URL converters (`#243 <https://github.com/noirbizarre/flask-restplus/issues/243>`_)\n- Support custom response classes inheriting from ``BaseResponse`` (`#245 <https://github.com/noirbizarre/flask-restplus/issues/245>`_)\n- Allow models to preserve order (`#135 <https://github.com/noirbizarre/flask-restplus/issues/135>`_)\n\n0.10.0 (2017-02-12)\n-------------------\n\n- Allows to specify a custom mount path on namespace registration\n- Allow to express models as raw schemas\n- Upgraded to Swagger-UI 2.2.6\n- Support Swagger-UI translations\n- Fix prefix trailing slash stripping in Postman doc generation (`#232 <https://github.com/noirbizarre/flask-restplus/issues/232>`_)\n- Add validation for lists in the expect decorator (`#231 <https://github.com/noirbizarre/flask-restplus/issues/231>`_)\n\n0.9.2 (2016-04-22)\n------------------\n\n- Same version but a PyPI bug force reupload.\n\n0.9.1 (2016-04-22)\n------------------\n\n- Added some Swagger-UI Oauth configurations:\n    - `SWAGGER_UI_OAUTH_CLIENT_ID`\n    - `SWAGGER_UI_OAUTH_REALM`\n    - `SWAGGER_UI_OAUTH_APP_NAME`\n- Expose ``type: object`` in Swagger schemas (`#157 <https://github.com/noirbizarre/flask-restplus/issues/157>`_)\n- Fix an issue with error handlers (`#141 <https://github.com/noirbizarre/flask-restplus/issues/141>`_)\n- Fix an issue with Postman export when using OAuth (`#151 <https://github.com/noirbizarre/flask-restplus/issues/151>`_)\n- Miscellenaous code and documentation fixes\n- Remove last flask-restful references (unless needed) and add missing attributions\n\n0.9.0 (2016-02-22)\n------------------\n\n- Make ``Namespace`` behave like ``Blueprint`` for ``Flask``\n- Deprecated ``parser`` and ``body`` parameters for ``expect`` in ``doc`` decorator\n- Deprecated ``Model.extend`` in favor of ``Model.clone``\n- Added the ``param`` decorator\n- Honour method restrictions in Swagger documentation (`#93 <https://github.com/noirbizarre/flask-restplus/issues/93>`_)\n- Improved documentation\n\n0.8.6 (2015-12-26)\n------------------\n\n- Handle callable on API infos\n- Handle documentation on error handlers\n- Drop/merge flask_restful ``flask_restful.RequestParser``\n- Handle ``RequestParser`` into ``expect`` decorator\n- Handle schema for ``inputs`` parsers\n- Added some inputs:\n    - ``email``\n    - ``ip``\n    - ``ipv4``\n    - ``ipv6``\n\n\n0.8.5 (2015-12-12)\n------------------\n\n- Handle mask on ``Polymorph`` field\n- Handle mask on inherited models\n- Replace `flask_restful.abort` by ``flask_restplus.errors.abort``\n- Replace `flask_restful.unpack` by ``flask_restplus.utils.unpack``\n- **Breaking changes**:\n    - Renamed ``ApiModel`` into ``Model``\n    - Renamed ``ApiNamespace`` into ``Namespace``\n\n\n0.8.4 (2015-12-07)\n------------------\n\n- Drop/merge `flask_restful.Resource` resolving a recursion problem\n- Allow any `callable` as field `default`, `min`, `max`...\n- Added ``Date`` field\n- Improve error handling for inconsistent masks\n- Handle model level default mask\n- support colons and dashes in mask field names\n- **Breaking changes**:\n   - Renamed `exceptions` module into `errors`\n   - Renamed `RestException` into ``RestError``\n   - Renamed `MarshallingException` into ``MarshallingError``\n   - ``DateTime`` field always output datetime\n\n0.8.3 (2015-12-05)\n------------------\n\n- Drop/merge flask-restful fields\n- Drop/merge flask-restplus inputs\n- Update Swagger-UI to version 2.1.3\n- Use minified version of Swagger-UI if ``DEBUG=False``\n- Blueprint subdomain support (static only)\n- Added support for default fields mask\n\n0.8.2 (2015-12-01)\n------------------\n\n- Skip unknown fields in mask when applied on a model\n- Added `*` token to fields mask (all remaining fields)\n- Ensure generated endpoints does not collide\n- Drop/merge flask-restful `Api.handler_error()`\n\n0.8.1 (2015-11-27)\n------------------\n\n- Refactor Swagger UI handling:\n    - allow to register a custom view with ``@api.documentation``\n    - allow to register a custom URL with the ``doc`` parameter\n    - allow to disable documentation with ``doc=False``\n- Added fields mask support through header (see: `Fields Masks Documentation <http://flask-restplus.readthedocs.org/en/stable/mask.html>`_)\n- Expose ``flask_restful.inputs`` module on ``flask_restplus.inputs``\n- Added support for some missing fields and attributes:\n    - ``host`` root field (filed only if ``SERVER_NAME`` config is set)\n    - custom ``tags`` root field\n    - ``exclusiveMinimum`` and ``exclusiveMaximum`` number field attributes\n    - ``multipleOf`` number field attribute\n    - ``minLength`` and ``maxLength`` string field attributes\n    - ``pattern`` string field attribute\n    - ``minItems`` and ``maxItems`` list field attributes\n    - ``uniqueItems`` list field attribute\n- Allow to override the default error handler\n- Fixes\n\n\n0.8.0\n-----\n\n- Added payload validation (initial implementation based on jsonschema)\n- Added ``@api.deprecated`` to mark resources or methods as deprecated\n- Added ``@api.header`` decorator shortcut to document headers\n- Added Postman export\n- Fix compatibility with flask-restful 0.3.4\n- Allow to specify an exemple a custom fields with ``__schema_example__``\n- Added support for ``PATCH`` method in Swagger UI\n- Upgraded to Swagger UI 2.1.2\n- Handle enum as callable\n- Allow to configure ``docExpansion`` with the ``SWAGGER_UI_DOC_EXPANSION`` parameter\n\n\n0.7.2\n-----\n\n- Compatibility with flask-restful 0.3.3\n- Fix action=append handling in RequestParser\n- Upgraded to SwaggerUI 2.1.8-M1\n- Miscellaneous fixes\n\n\n0.7.1\n-----\n\n- Fix ``@api.marshal_with_list()`` keyword arguments handling.\n\n\n0.7.0\n-----\n\n- Expose models and fields schema through the ``__schema__`` attribute\n- Drop support for model as class\n- Added ``@api.errorhandler()`` to register custom error handlers\n- Added ``@api.response()`` shortcut decorator\n- Fix list nested models missing in definitions\n\n\n0.6.0\n-----\n\n- Python 2.6 support\n- Experimental polymorphism support (single inheritance only)\n    - Added ``Polymorph`` field\n    - Added ``discriminator`` attribute support on ``String`` fields\n    - Added ``api.inherit()`` method\n- Added ``ClassName`` field\n\n0.5.1\n-----\n\n- Fix for parameter with schema (do not set type=string)\n\n\n0.5.0\n-----\n\n- Allow shorter syntax to set operation id: ``@api.doc('my-operation')``\n- Added a shortcut to specify the expected input model: ``@api.expect(my_fields)``\n- Added ``title`` attribute to fields\n- Added ``@api.extend()`` to extend models\n- Ensure coherence between ``required`` and ``allow_null`` for ``NestedField``\n- Support list of primitive types and list of models as body\n- Upgraded to latest version of Swagger UI\n- Fixes\n\n\n0.4.2\n-----\n\n- Rename apidoc blueprint into restplus_doc to avoid collisions\n\n\n0.4.1\n-----\n\n- Added ``SWAGGER_VALIDATOR_URL`` config parameter\n- Added ``readonly`` field parameter\n- Upgraded to latest version of Swagger UI\n\n\n0.4.0\n-----\n\n- Port to Flask-Restful 0.3+\n- Use the default Blueprint/App mecanism\n- Allow to hide some ressources or methods using ``@api.doc(False)`` or ``@api.hide``\n- Allow to globally customize the default operationId with the ``default_id`` callable parameter\n\n0.3.0\n-----\n\n- Switch to Swagger 2.0 (Major breakage)\n    - ``notes`` documentation is now ``description``\n    - ``nickname`` documentation is now ``id``\n    - new responses declaration format\n- Added missing ``body`` parameter to document ``body`` input\n- Last release before Flask-Restful 0.3+ compatibility switch\n\n\n0.2.4\n-----\n\n- Handle ``description`` and ``required`` attributes on ``fields.List``\n\n0.2.3\n-----\n\n- Fix custom fields registeration\n\n0.2.2\n-----\n\n- Fix model list in declaration\n\n0.2.1\n-----\n\n- Allow to type custom fields with ``Api.model``\n- Handle custom fields into ``fieds.List``\n\n0.2\n---\n\n- Upgraded to SwaggerUI 0.2.22\n- Support additional field documentation attributes: ``required``, ``description``, ``enum``, ``min``, ``max`` and ``default``\n- Initial support for model in RequestParser\n\n0.1.3\n-----\n\n- Fix ``Api.marshal()`` shortcut\n\n0.1.2\n-----\n\n- Added ``Api.marshal_with()`` and ``Api.marshal_list_with()`` decorators\n- Added ``Api.marshal()`` shortcut\n\n\n0.1.1\n-----\n\n- Use ``zip_safe=False`` for proper packaging.\n\n\n0.1\n---\n\n- Initial release\n\n",
    "bugtrack_url": null,
    "license": "BSD-3-Clause",
    "summary": "Fully featured framework for fast, easy and documented API development with Flask",
    "version": "0.13.0",
    "project_urls": {
        "Homepage": "https://github.com/noirbizarre/flask-restplus"
    },
    "split_keywords": [
        "flask",
        "restplus",
        "rest",
        "api",
        "swagger",
        "openapi"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c2a6b17c848771f96ad039ad9e3ea275e842a16c39c4f3eb9f60ee330b20b6c2",
                "md5": "7e5be9b9267f8c578709f41cc21b790f",
                "sha256": "a15d251923a8feb09a5d805c2f4d188555910a42c64d58f7dd281b8cac095f1b"
            },
            "downloads": -1,
            "filename": "flask_restplus-0.13.0-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "7e5be9b9267f8c578709f41cc21b790f",
            "packagetype": "bdist_wheel",
            "python_version": "3.6",
            "requires_python": null,
            "size": 2455767,
            "upload_time": "2019-08-12T21:51:40",
            "upload_time_iso_8601": "2019-08-12T21:51:40.749657Z",
            "url": "https://files.pythonhosted.org/packages/c2/a6/b17c848771f96ad039ad9e3ea275e842a16c39c4f3eb9f60ee330b20b6c2/flask_restplus-0.13.0-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "acd6270f22ed9974e3ce0a3cc8c0be08211e63f82b46550dda85d0ae26b37371",
                "md5": "63bf1f895d7a3398c590ff223c8d59b8",
                "sha256": "a66e442d0bca08f389fc3d07b4d808fc89961285d12fb8013f7cf15516fa9f5c"
            },
            "downloads": -1,
            "filename": "flask-restplus-0.13.0.tar.gz",
            "has_sig": false,
            "md5_digest": "63bf1f895d7a3398c590ff223c8d59b8",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 2422174,
            "upload_time": "2019-08-12T21:51:33",
            "upload_time_iso_8601": "2019-08-12T21:51:33.671540Z",
            "url": "https://files.pythonhosted.org/packages/ac/d6/270f22ed9974e3ce0a3cc8c0be08211e63f82b46550dda85d0ae26b37371/flask-restplus-0.13.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2019-08-12 21:51:33",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "noirbizarre",
    "github_project": "flask-restplus",
    "travis_ci": true,
    "coveralls": false,
    "github_actions": false,
    "tox": true,
    "lcname": "flask-restplus"
}
        
Elapsed time: 0.27291s