mirror of
https://github.com/ets-labs/python-dependency-injector.git
synced 2024-11-26 03:23:58 +03:00
Bump version to 4.3.9: FastAPI example
This commit is contained in:
parent
bece33fc21
commit
9bcf875ef0
|
@ -68,7 +68,7 @@ Key features of the ``Dependency Injector``:
|
||||||
or process pool, etc. Can be used for per-function execution scope in tandem with wiring.
|
or process pool, etc. Can be used for per-function execution scope in tandem with wiring.
|
||||||
See `Resource provider <https://python-dependency-injector.ets-labs.org/providers/resource.html>`_.
|
See `Resource provider <https://python-dependency-injector.ets-labs.org/providers/resource.html>`_.
|
||||||
- **Wiring**. Injects dependencies into functions and methods. Helps integrating with
|
- **Wiring**. Injects dependencies into functions and methods. Helps integrating with
|
||||||
other frameworks: Django, Flask, Aiohttp, etc.
|
other frameworks: Django, Flask, Aiohttp, Sanic, FastAPI, etc.
|
||||||
See `Wiring <https://python-dependency-injector.ets-labs.org/wiring.html>`_.
|
See `Wiring <https://python-dependency-injector.ets-labs.org/wiring.html>`_.
|
||||||
- **Typing**. Provides typing stubs, ``mypy``-friendly.
|
- **Typing**. Provides typing stubs, ``mypy``-friendly.
|
||||||
See `Typing and mypy <https://python-dependency-injector.ets-labs.org/providers/typing_mypy.html>`_.
|
See `Typing and mypy <https://python-dependency-injector.ets-labs.org/providers/typing_mypy.html>`_.
|
||||||
|
|
79
docs/examples/fastapi.rst
Normal file
79
docs/examples/fastapi.rst
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
.. _fastapi-example:
|
||||||
|
|
||||||
|
FastAPI example
|
||||||
|
===============
|
||||||
|
|
||||||
|
.. meta::
|
||||||
|
:keywords: Python,Dependency Injection,FastAPI,Example
|
||||||
|
:description: This example demonstrates a usage of the FastAPI and Dependency Injector.
|
||||||
|
|
||||||
|
|
||||||
|
This example shows how to use ``Dependency Injector`` with `FastAPI <https://fastapi.tiangolo.com/>`_.
|
||||||
|
|
||||||
|
The example application is a REST API that searches for funny GIFs on the `Giphy <https://giphy.com/>`_.
|
||||||
|
|
||||||
|
The source code is available on the `Github <https://github.com/ets-labs/python-dependency-injector/tree/master/examples/miniapps/fastapi>`_.
|
||||||
|
|
||||||
|
Application structure
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
Application has next structure:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
./
|
||||||
|
├── giphynavigator/
|
||||||
|
│ ├── __init__.py
|
||||||
|
│ ├── application.py
|
||||||
|
│ ├── containers.py
|
||||||
|
│ ├── endpoints.py
|
||||||
|
│ ├── giphy.py
|
||||||
|
│ ├── services.py
|
||||||
|
│ └── tests.py
|
||||||
|
├── config.yml
|
||||||
|
└── requirements.txt
|
||||||
|
|
||||||
|
Container
|
||||||
|
---------
|
||||||
|
|
||||||
|
Declarative container is defined in ``giphynavigator/containers.py``:
|
||||||
|
|
||||||
|
.. literalinclude:: ../../examples/miniapps/fastapi/giphynavigator/containers.py
|
||||||
|
:language: python
|
||||||
|
|
||||||
|
Endpoints
|
||||||
|
---------
|
||||||
|
|
||||||
|
Endpoint has a dependency on search service. There are also some config options that are used as default values.
|
||||||
|
The dependencies are injected using :ref:`wiring` feature.
|
||||||
|
|
||||||
|
Listing of ``giphynavigator/endpoints.py``:
|
||||||
|
|
||||||
|
.. literalinclude:: ../../examples/miniapps/fastapi/giphynavigator/endpoints.py
|
||||||
|
:language: python
|
||||||
|
|
||||||
|
Application factory
|
||||||
|
-------------------
|
||||||
|
Application factory creates container, wires it with the ``endpoints`` module, creates
|
||||||
|
``FastAPI`` app, and setup routes.
|
||||||
|
|
||||||
|
Listing of ``giphynavigator/application.py``:
|
||||||
|
|
||||||
|
.. literalinclude:: ../../examples/miniapps/fastapi/giphynavigator/application.py
|
||||||
|
:language: python
|
||||||
|
|
||||||
|
Tests
|
||||||
|
-----
|
||||||
|
|
||||||
|
Tests use :ref:`provider-overriding` feature to replace giphy client with a mock ``giphynavigator/tests.py``:
|
||||||
|
|
||||||
|
.. literalinclude:: ../../examples/miniapps/fastapi/giphynavigator/tests.py
|
||||||
|
:language: python
|
||||||
|
:emphasize-lines: 29,57,72
|
||||||
|
|
||||||
|
Sources
|
||||||
|
-------
|
||||||
|
|
||||||
|
Explore the sources on the `Github <https://github.com/ets-labs/python-dependency-injector/tree/master/examples/miniapps/fastapi>`_.
|
||||||
|
|
||||||
|
.. disqus::
|
|
@ -17,5 +17,6 @@ Explore the examples to see the ``Dependency Injector`` in action.
|
||||||
flask
|
flask
|
||||||
aiohttp
|
aiohttp
|
||||||
sanic
|
sanic
|
||||||
|
fastapi
|
||||||
|
|
||||||
.. disqus::
|
.. disqus::
|
||||||
|
|
|
@ -77,7 +77,7 @@ Key features of the ``Dependency Injector``:
|
||||||
See :ref:`resource-provider`.
|
See :ref:`resource-provider`.
|
||||||
- **Containers**. Provides declarative and dynamic containers. See :ref:`containers`.
|
- **Containers**. Provides declarative and dynamic containers. See :ref:`containers`.
|
||||||
- **Wiring**. Injects dependencies into functions and methods. Helps integrating with
|
- **Wiring**. Injects dependencies into functions and methods. Helps integrating with
|
||||||
other frameworks: Django, Flask, Aiohttp, etc. See :ref:`wiring`.
|
other frameworks: Django, Flask, Aiohttp, Sanic, FastAPI, etc. See :ref:`wiring`.
|
||||||
- **Typing**. Provides typing stubs, ``mypy``-friendly. See :ref:`provider-typing`.
|
- **Typing**. Provides typing stubs, ``mypy``-friendly. See :ref:`provider-typing`.
|
||||||
- **Performance**. Fast. Written in ``Cython``.
|
- **Performance**. Fast. Written in ``Cython``.
|
||||||
- **Maturity**. Mature and production-ready. Well-tested, documented and supported.
|
- **Maturity**. Mature and production-ready. Well-tested, documented and supported.
|
||||||
|
|
|
@ -284,6 +284,7 @@ Choose one of the following as a next step:
|
||||||
- :ref:`flask-example`
|
- :ref:`flask-example`
|
||||||
- :ref:`aiohttp-example`
|
- :ref:`aiohttp-example`
|
||||||
- :ref:`sanic-example`
|
- :ref:`sanic-example`
|
||||||
|
- :ref:`fastapi-example`
|
||||||
- Pass the tutorials:
|
- Pass the tutorials:
|
||||||
- :ref:`flask-tutorial`
|
- :ref:`flask-tutorial`
|
||||||
- :ref:`aiohttp-tutorial`
|
- :ref:`aiohttp-tutorial`
|
||||||
|
|
|
@ -23,7 +23,7 @@ Key features of the ``Dependency Injector``:
|
||||||
See :ref:`resource-provider`.
|
See :ref:`resource-provider`.
|
||||||
- **Containers**. Provides declarative and dynamic containers. See :ref:`containers`.
|
- **Containers**. Provides declarative and dynamic containers. See :ref:`containers`.
|
||||||
- **Wiring**. Injects dependencies into functions and methods. Helps integrating with
|
- **Wiring**. Injects dependencies into functions and methods. Helps integrating with
|
||||||
other frameworks: Django, Flask, Aiohttp, etc. See :ref:`wiring`.
|
other frameworks: Django, Flask, Aiohttp, Sanic, FastAPI, etc. See :ref:`wiring`.
|
||||||
- **Typing**. Provides typing stubs, ``mypy``-friendly. See :ref:`provider-typing`.
|
- **Typing**. Provides typing stubs, ``mypy``-friendly. See :ref:`provider-typing`.
|
||||||
- **Performance**. Fast. Written in ``Cython``.
|
- **Performance**. Fast. Written in ``Cython``.
|
||||||
- **Maturity**. Mature and production-ready. Well-tested, documented and supported.
|
- **Maturity**. Mature and production-ready. Well-tested, documented and supported.
|
||||||
|
|
|
@ -7,6 +7,10 @@ that were made in every particular version.
|
||||||
From version 0.7.6 *Dependency Injector* framework strictly
|
From version 0.7.6 *Dependency Injector* framework strictly
|
||||||
follows `Semantic versioning`_
|
follows `Semantic versioning`_
|
||||||
|
|
||||||
|
4.3.9
|
||||||
|
-----
|
||||||
|
- Add ``FastAPI`` example.
|
||||||
|
|
||||||
4.3.8
|
4.3.8
|
||||||
-----
|
-----
|
||||||
- Add a hotfix to support wiring for ``FastAPI`` endpoints.
|
- Add a hotfix to support wiring for ``FastAPI`` endpoints.
|
||||||
|
|
|
@ -201,5 +201,6 @@ Take a look at other application examples:
|
||||||
- :ref:`flask-example`
|
- :ref:`flask-example`
|
||||||
- :ref:`aiohttp-example`
|
- :ref:`aiohttp-example`
|
||||||
- :ref:`sanic-example`
|
- :ref:`sanic-example`
|
||||||
|
- :ref:`fastapi-example`
|
||||||
|
|
||||||
.. disqus::
|
.. disqus::
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
"""Top-level package."""
|
"""Top-level package."""
|
||||||
|
|
||||||
__version__ = '4.3.8'
|
__version__ = '4.3.9'
|
||||||
"""Version number.
|
"""Version number.
|
||||||
|
|
||||||
:type: str
|
:type: str
|
||||||
|
|
Loading…
Reference in New Issue
Block a user