mirror of
				https://github.com/ets-labs/python-dependency-injector.git
				synced 2025-11-04 18:07:44 +03:00 
			
		
		
		
	Add sanic example to the docs
This commit is contained in:
		
							parent
							
								
									9918c28866
								
							
						
					
					
						commit
						ba32075e35
					
				| 
						 | 
					@ -6,7 +6,7 @@ Django example
 | 
				
			||||||
   :description: This example demonstrates a usage of the Django and Dependency Injector.
 | 
					   :description: This example demonstrates a usage of the Django and Dependency Injector.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This example shows how to use ``Dependency Injector`` with ``Django``.
 | 
					This example shows how to use ``Dependency Injector`` with `Django <https://www.djangoproject.com/>`_.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The example application helps to search for repositories on the Github.
 | 
					The example application helps to search for repositories on the Github.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,5 +14,6 @@ Explore the examples to see the ``Dependency Injector`` in action.
 | 
				
			||||||
    application-multiple-containers
 | 
					    application-multiple-containers
 | 
				
			||||||
    decoupled-packages
 | 
					    decoupled-packages
 | 
				
			||||||
    django
 | 
					    django
 | 
				
			||||||
 | 
					    sanic
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.. disqus::
 | 
					.. disqus::
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										78
									
								
								docs/examples/sanic.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								docs/examples/sanic.rst
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,78 @@
 | 
				
			||||||
 | 
					Sanic example
 | 
				
			||||||
 | 
					==============
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. meta::
 | 
				
			||||||
 | 
					   :keywords: Python,Dependency Injection,Sanic,Example
 | 
				
			||||||
 | 
					   :description: This example demonstrates a usage of the Sanic and Dependency Injector.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This example shows how to use ``Dependency Injector`` with `Sanic <https://sanic.readthedocs.io/en/latest/>`_.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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/sanic>`_.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Application structure
 | 
				
			||||||
 | 
					---------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Application has next structure:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. code-block:: bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   ./
 | 
				
			||||||
 | 
					   ├── giphynavigator/
 | 
				
			||||||
 | 
					   │   ├── __init__.py
 | 
				
			||||||
 | 
					   │   ├── __main__.py
 | 
				
			||||||
 | 
					   │   ├── application.py
 | 
				
			||||||
 | 
					   │   ├── containers.py
 | 
				
			||||||
 | 
					   │   ├── giphy.py
 | 
				
			||||||
 | 
					   │   ├── handlers.py
 | 
				
			||||||
 | 
					   │   ├── services.py
 | 
				
			||||||
 | 
					   │   └── tests.py
 | 
				
			||||||
 | 
					   ├── config.yml
 | 
				
			||||||
 | 
					   └── requirements.txt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Container
 | 
				
			||||||
 | 
					---------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Declarative container is defined in ``giphynavigator/containers.py``:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. literalinclude:: ../../examples/miniapps/sanic/giphynavigator/containers.py
 | 
				
			||||||
 | 
					   :language: python
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Handlers
 | 
				
			||||||
 | 
					--------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Handler has dependencies on search service and some config options. The dependencies are injected
 | 
				
			||||||
 | 
					using :ref:`wiring` feature.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Listing of ``giphynavigator/handlers.py``:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. literalinclude:: ../../examples/miniapps/sanic/giphynavigator/handlers.py
 | 
				
			||||||
 | 
					   :language: python
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Application factory
 | 
				
			||||||
 | 
					-------------------
 | 
				
			||||||
 | 
					Application factory creates container, wires it with the ``handlers`` module, creates
 | 
				
			||||||
 | 
					``Sanic`` app instance and setup routes.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Listing of ``giphynavigator/application.py``:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. literalinclude:: ../../examples/miniapps/sanic/giphynavigator/application.py
 | 
				
			||||||
 | 
					   :language: python
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Tests
 | 
				
			||||||
 | 
					-----
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Tests use :ref:`provider-overriding` feature to replace search service with a mock ``web/giphynavigator.py``:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. literalinclude:: ../../examples/miniapps/sanic/giphynavigator/tests.py
 | 
				
			||||||
 | 
					   :language: python
 | 
				
			||||||
 | 
					   :emphasize-lines: 27,54,68
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Sources
 | 
				
			||||||
 | 
					-------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Explore the sources on the `Github <https://github.com/ets-labs/python-dependency-injector/tree/master/examples/miniapps/sanic>`_.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. disqus::
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user