mirror of
				https://github.com/ets-labs/python-dependency-injector.git
				synced 2025-10-31 07:57:43 +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