mirror of
https://github.com/ets-labs/python-dependency-injector.git
synced 2025-10-13 15:27:01 +03:00
Refactor movie lister to use wiring
This commit is contained in:
parent
6dd668ac3d
commit
fb5488b050
|
@ -39,8 +39,11 @@ The output should be something like this for each command:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
Francis Lawrence movies: [Movie(title='The Hunger Games: Mockingjay - Part 2', year=2015, director='Francis Lawrence')]
|
Francis Lawrence movies:
|
||||||
2016 movies: [Movie(title='Rogue One: A Star Wars Story', year=2016, director='Gareth Edwards'), Movie(title='The Jungle Book', year=2016, director='Jon Favreau')]
|
- Movie(title='The Hunger Games: Mockingjay - Part 2', year=2015, director='Francis Lawrence')
|
||||||
|
2016 movies:
|
||||||
|
- Movie(title='Rogue One: A Star Wars Story', year=2016, director='Gareth Edwards')
|
||||||
|
- Movie(title='The Jungle Book', year=2016, director='Jon Favreau')
|
||||||
|
|
||||||
Test
|
Test
|
||||||
----
|
----
|
||||||
|
@ -65,11 +68,11 @@ The output should be something like:
|
||||||
Name Stmts Miss Cover
|
Name Stmts Miss Cover
|
||||||
------------------------------------------
|
------------------------------------------
|
||||||
movies/__init__.py 0 0 100%
|
movies/__init__.py 0 0 100%
|
||||||
movies/__main__.py 10 10 0%
|
movies/__main__.py 13 13 0%
|
||||||
movies/containers.py 9 0 100%
|
movies/containers.py 9 0 100%
|
||||||
movies/entities.py 7 1 86%
|
movies/entities.py 7 1 86%
|
||||||
movies/finders.py 26 13 50%
|
movies/finders.py 26 13 50%
|
||||||
movies/listers.py 8 0 100%
|
movies/listers.py 8 0 100%
|
||||||
movies/tests.py 24 0 100%
|
movies/tests.py 24 0 100%
|
||||||
------------------------------------------
|
------------------------------------------
|
||||||
TOTAL 84 24 71%
|
TOTAL 87 27 69%
|
||||||
|
|
|
@ -1,25 +1,27 @@
|
||||||
"""Main module."""
|
"""Main module."""
|
||||||
|
|
||||||
from .containers import ApplicationContainer
|
import sys
|
||||||
|
|
||||||
|
from dependency_injector.wiring import Provide
|
||||||
|
|
||||||
|
from .listers import MovieLister
|
||||||
|
from .containers import Container
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main(lister: MovieLister = Provide[Container.lister]):
|
||||||
container = ApplicationContainer()
|
print('Francis Lawrence movies:')
|
||||||
|
for movie in lister.movies_directed_by('Francis Lawrence'):
|
||||||
|
print('\t-', movie)
|
||||||
|
|
||||||
container.config.from_yaml('config.yml')
|
print('2016 movies:')
|
||||||
container.config.finder.type.from_env('MOVIE_FINDER_TYPE')
|
for movie in lister.movies_released_in(2016):
|
||||||
|
print('\t-', movie)
|
||||||
lister = container.lister()
|
|
||||||
|
|
||||||
print(
|
|
||||||
'Francis Lawrence movies:',
|
|
||||||
lister.movies_directed_by('Francis Lawrence'),
|
|
||||||
)
|
|
||||||
print(
|
|
||||||
'2016 movies:',
|
|
||||||
lister.movies_released_in(2016),
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
container = Container()
|
||||||
|
container.config.from_yaml('config.yml')
|
||||||
|
container.config.finder.type.from_env('MOVIE_FINDER_TYPE')
|
||||||
|
container.wire(modules=[sys.modules[__name__]])
|
||||||
|
|
||||||
main()
|
main()
|
||||||
|
|
|
@ -5,7 +5,7 @@ from dependency_injector import containers, providers
|
||||||
from . import finders, listers, entities
|
from . import finders, listers, entities
|
||||||
|
|
||||||
|
|
||||||
class ApplicationContainer(containers.DeclarativeContainer):
|
class Container(containers.DeclarativeContainer):
|
||||||
|
|
||||||
config = providers.Configuration()
|
config = providers.Configuration()
|
||||||
|
|
||||||
|
|
|
@ -4,12 +4,12 @@ from unittest import mock
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from .containers import ApplicationContainer
|
from .containers import Container
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def container():
|
def container():
|
||||||
container = ApplicationContainer()
|
container = Container()
|
||||||
container.config.from_dict({
|
container.config.from_dict({
|
||||||
'finder': {
|
'finder': {
|
||||||
'type': 'csv',
|
'type': 'csv',
|
||||||
|
|
Loading…
Reference in New Issue
Block a user