Metadata-Version: 1.1
Name: apistar-pydantic
Version: 0.1.0
Summary: Better parameters for APIStar (and pydantic support)
Home-page: https://github.com/pslacerda/apistar_pydantic
Author: Pedro Sousa Lacerda
Author-email: pslacerda@gmail.com
License: MIT license
Description: apistar-pydantic
        ################
        
        
        Better handler parameters for `APIStar <http://github.com/encode/apistar/>`_
        (and `pydantic <http://github.com/samuelcolvin/pydantic/>`_ support).
        
        
        General usage is working as expected but documentation and OpenAPI schema aren't done yet.
        
        
        .. code-block:: sh
        
            $ pip install apistar-pydantic
        
        
        Usage
        =====
        
        .. code-block:: python
        
            from apistar import App
            from pydantic import BaseModel
            from apistar_pydantic import (
                QueryParam, PathParam, DictBodyData, DictQueryData,
                PydanticBodyData as BodyData,
                PydanticQueryData as QueryData,
                Route, components,
            )
        
        
            #
            # Declare models
            #
        
            class City(BaseModel):
                """City info"""
                name: str
                population: int
        
            class Computer(BaseModel):
                """Computer info"""
                model: str
                price: float
        
            class ComputerCity(City, Computer):
                """A computer in a city"""
        
        
            #
            # Create views
            #
        
            def resource_complete(param1: QueryParam[str],
                                param2: QueryParam[int],
                                param3: DictBodyData[dict],
                                param4: DictQueryData[dict]):
                return repr(locals())
        
            def resource_query(city: QueryData[City]):
                return "%s has %d citizens." % (city.name, city.population)
        
            def resource_body(computer: BodyData[Computer]):
                return "%s costs R$ %.2f" % (computer.model, computer.price)
        
            def resource_mixed(city: QueryData[City],
                            computer: BodyData[Computer]):
                return ComputerCity(**city.dict(), **computer.dict())
        
        
            #
            # Start the app
            #
        
            app = App(
                routes=[
                    Route('/resource', 'GET', resource_query),
                    Route('/resource_query', 'GET', resource_query),
                    Route('/resource_body', 'POST', resource_body),
                    Route('/resource_mixed', 'POST', resource_mixed),
                ],
                components=[
                    *components
                ]
            )
        
            if __name__ == '__main__':
                app.serve('127.0.0.1', 3000, debug=True)
        
Keywords: apistar pydantic
Platform: UNKNOWN
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
