Commit Graph

145 Commits

Author SHA1 Message Date
Roman Mogylatov
0d8f2ff44e Add cross-links between container singletons and reset container singletons docs pages 2021-02-14 18:51:55 -05:00
Roman Mogylatov
8eea9c4e45
Implement container.check_dependencies() (#396)
* Add implementation, typing stubs, and tests

* Add docs and example

* Update changelog
2021-02-14 18:47:15 -05:00
Roman Mogylatov
839a319831
Better error message for dependency provider (#395)
* Add prototype for flat resolving

* Add working prototype for sample 1 and 3

* Add working prototype, requires deep refactoring

* Update DependenciesContainer to handle Contrainer provider

* Fix Dependency provider copying issue

* Add hardening fix for Self provider to avoid copying bugs

* Fix flaky container copy issue

* Rename set_parent() to assign_parent()

* Refactor Dependency provider and its typing stub

* Add tests for Dependency provider

* Update makefile to run coverage when tests fail

* Clean up DependenciesContainer provider and add tests

* Clean up Container provider and add tests

* Clean up container instance and add tests

* Refactor isinstance() checks

* Clean up DeclarativeContainer and add tests

* Update docs and examples

* Update changelog

* Revoke makefile change
2021-02-13 09:16:38 -05:00
Roman Mogylatov
47aa8c11fe Move Self provider docs to providers section 2021-02-09 07:34:46 -05:00
Roman Mogylatov
19a2f551ae Update docs on creating custom providers with a requirement to specify `.related` property 2021-02-05 18:27:32 -05:00
Roman Mogylatov
2fe0e00cef
Singleton.full_reset() (#391)
* Improve .traverse() typing stubs

* Fix container.reset_singletons()

* Add implementation, tests, and typing stubs

* Add docs and example

* Update changelog
2021-02-05 18:17:44 -05:00
Roman Mogylatov
15fa6c301e
Pydantic settings support (#388)
* Add implementation and basic test

* Add full test coverage + bugfix

* Add test coverage for .from_yaml() method

* Update setup.py, tox and dev requirements

* Stop running pydantic tests on Python 3.5 and below

* Remove pydantic from tox Python < 3.6

* Add example and docs

* Update features block

* Add extra test

* Update changelog
2021-02-03 09:21:32 -05:00
Roman Mogylatov
478ca18ae3
336 Dependency provider default (#382)
* Add implementation and tests

* Refactor dependency provider docs

* Update docs

* Update changelog
2021-01-29 13:49:40 -05:00
Roman Mogylatov
4cc39fc6eb
369 Add required argument to config from_* methods (#376)
* Update typing stubs

* Update from_yaml() method

* Update from_ini() method

* Update from_dict() method

* Update from_env() method

* Update documentation

* Update changelog

* Update changelog

* Make doc block fix

* Add extra test for from_ini()
2021-01-24 10:27:45 -05:00
Roman Mogylatov
2d49308c16
Configuration strict mode raise on non existing files (#375)
* Update from_yaml()

* Refactor YAML environment variables interpolation

* Update from_ini()

* Refactor UNDEFINED

* Update from_env()

* Update from_dict()

* Update docs

* Update changelog
2021-01-23 22:37:50 -05:00
Roman Mogylatov
500855895b
372 Change yaml loader to safe loader (#373)
* Add safe loader with env interpolation and an arg to provide custom loader

* Add docs

* Update changelog
2021-01-21 18:00:24 -05:00
Roman Mogylatov
d74e8248a1
Required config options and strict mode (#360)
* Add strict mode + tests

* Add .required() for configuration option

* Add wiring tests for required() modifier

* Add wiring support

* Add tests for defined None values in required/strict mode

* Add docs

* Update changelog

* Update example doc block
2021-01-16 08:53:40 -05:00
Roman Mogylatov
ce1bf704f2 Bump version to 4.6.1 2021-01-10 20:02:46 -05:00
Roman Mogylatov
feed916f46
Async resources and injections (#352)
* Add support of async injections into wiring

* Add support of async functions and async generators for resources

* Update resource provider typing stub for stutdown

* Add resource base class for async resources

* Fix tests

* Add tests for async injections in wiring @inject

* Refactor provider tests

* Add tests for async resources

* Rework async resources callbacks to .add_done_callback() style (fixes pypy3 issue)

* Add awaits into async resource class test

* Refactor FastAPI tests

* Implement async resources initialization in container

* Move container async resource tests to a separate module for Python 3.6+

* Fix init async resources in container on Python 2

* Add first dirty async injections implementation

* Fix isawaitable error

* Turm asyncio import to conditional for safer Py2 usage

* Refactor kwargs injections

* Implement positional injections, add tests and make refactoring

* Implement attribute injections and add tests

* Add singleton implementation + tests for all singleton types

* Implement injections in thread-local and thread-safe singleton providers

* Update .provided + fix resource concurent initialization issue

* Implement async mode for Dependency provider

* Add async mode for the provider

* Add overload for Factory typing

* Add typing stubs for async resource

* Refactor abstract* providers __call__()

* Add async mode API + tests

* Add typing stubs & tests for async mode API

* Add tests for async mode auto configuration

* Refactor Provider.__call__() to use async mode api

* Refactor Dependency provider to use async mode api

* Add tests for Dependency provider async mode

* Add support of async mode for FactoryAggregate provider + tests

* Refactor Singleton provider to use async mode api

* Refactor ThreadSafeSingleton provider to use async mode api

* Refactor ThreadLocalSingleton provider to use async mode api

* Finish Singleton refactoring to use async mode api

* Refactor Resource provider to use async mode api

* Add Provider.async_() method + tests

* Add typing stubs for async_() method + tests

* Refactor Singleton typing stubs to return singleton from argument methods

* Refactor provider typing stubs

* Improve resource typing stub

* Add tests for async context kwargs injections

* Fix typo in resource provider tests

* Cover shutdown of not initialized resource

* Add test to cover resource initialization with an error

* Fix Singleton and ThreadLocalSingleton to handle initialization errors

* Add FastAPI + Redis example

* Make cosmetic fixes to FastAPI + Redis example

* Add missing development requirements

* Update module docblock in fastapi + redis example

* Add FastAPI + Redis example docs

* Add references to FastAPI + Redis example

* Refactor resource docs

* Add asynchronous resources docs

* Refactor wiring docs

* Add async injections docs for wiring

* Add async injections page and update docs index, readme, and key features pages

* Add providers async injections example

* Add docs on provider async mode enabling

* Reword async provider docs

* Add provider async mode docs

* Add cross links to async docs

* Mute flake8 errors in async provider examples

* Update changelog

* Make cosmetic fix to containers.pyx
2021-01-10 19:26:15 -05:00
Roman Mogylatov
fbaf35244c Add example and docs 2020-11-20 17:57:33 -05:00
Roman Mogylatov
ae3024588c
Wiring reengineering (#324)
* Bump version to 4.3.9: FastAPI example

* Reengineer wiring

* Add @inject decorator

* Add .workspace dir to gitignore

* Add generic typing for @inject

* Add type cast for @inject

* Update movie lister example

* Update cli application tutorial

* Update demo example

* Update wiring docs and examples

* Update aiohttp example and tutorial

* Update multiple containers example

* Update single container example

* Update decoupled packages example

* Update django example

* Update asyncio daemon example and tutorial

* Update FastAPI example

* Update flask example and tutorial

* Update sanic example

* Add wiring registry

* Add new line to .gitignore

* Add @inject to the test samples

* Fix flake8 errors
2020-11-15 16:06:42 -05:00
Roman Mogylatov
707446a70f
Closing wiring marker (#315)
* Add closing marker

* Add example

* Fix flake8 errors

* Add test

* Update docs and README
2020-10-29 22:55:09 -04:00
Roman Mogylatov
b01ee7709c Bump version to 4.1.1 2020-10-26 13:39:13 -04:00
Roman Mogylatov
47c79b2772
Resources (#312)
* Add prototype

* Add example

* Remove typing erros in Python 2.7 and 3.4

* Move resources example

* Draft resources docs

* Update resources docs

* Fix repr

* Rename dict provider test

* Add more tests

* Add tests + refactoring

* Add more tests

* Update tests to run only on 3.5+

* Update setup.py

* Add typing tests

* Update changelog

* Fix generator iteration

* Remove contextlib

* Hotfix aiohttp issue

* Move aiohttp fix to tox.ini

* Move aiohttp fix to a different place in tox
2020-10-24 20:56:32 -04:00
Roman Mogylatov
b54bcb7b31
Dict provider (#311)
* Add tests

* Add implementation and typing stubs

* Update README and docs pages

* Add example and docs

* Update changelog

* Add long description to the doc block
2020-10-22 14:49:39 -04:00
Roman Mogylatov
ff4d24706e
Move "provided" attribute (#306)
* Update typing stub

* Move attribute

* Add typing test

* Update docs

* Add test

* Update changelog
2020-10-19 17:21:38 -04:00
Roman Mogylatov
d8439a28b1
Make provider generic type (#293)
* Add __class_getitem__ for Provider to null the typing in runtime

* Make Provider stub generic and remove types module

* Update types module tests

* Return types module with deprecation warning

* Return types module with deprecation warning

* Update changelog

* Add docs page
2020-09-13 20:32:21 -04:00
Roman Mogylatov
505ccf5a1d Fix a few typos 2020-09-09 22:23:14 -04:00
Roman Mogylatov
441cc66427 Improve singleton provider docs 2020-09-03 17:57:26 -04:00
Roman Mogylatov
d6e4e8fb08 Add container usage to provided instance examples 2020-09-03 17:48:45 -04:00
Roman Mogylatov
d61281a0b9 Add usage of the container to the selector example 2020-09-03 17:38:52 -04:00
Roman Mogylatov
e48746d65f Add usage of the container to the configuration examples 2020-09-03 17:37:03 -04:00
Roman Mogylatov
2a23f3d2f4 Add container usage for list provider example 2020-09-03 17:03:28 -04:00
Roman Mogylatov
1eb9020a4e Add container usage for all singleton provider examples 2020-09-03 16:56:01 -04:00
Roman Mogylatov
a7afa66e40 Add container usage for all factory provider examples 2020-09-03 16:51:12 -04:00
Roman Mogylatov
ca986698e9 Update key features page and remove structure page 2020-09-03 16:20:04 -04:00
Roman Mogylatov
580a9a66b5 Fix a typo in the custom provider docs 2020-09-02 21:21:07 -04:00
Roman Mogylatov
c2426d2a09 Update providers index page 2020-09-02 21:17:25 -04:00
Roman Mogylatov
dd2ded7321 Update documentation and example on creating a custom provider 2020-09-02 21:09:08 -04:00
Roman Mogylatov
aeace8cba5 Update documentation on injecting provided object attributes, items or method calls 2020-09-02 17:59:31 -04:00
Roman Mogylatov
e4ca126188 Update provider doc page headers 2020-09-02 17:33:02 -04:00
Roman Mogylatov
3eb7b9bc69 Add reference to provider overriding page 2020-09-02 17:25:20 -04:00
Roman Mogylatov
f8648adaf7 Update providers overriding documentation and rework examples 2020-09-02 16:59:25 -04:00
Roman Mogylatov
806bd31735 Bump version to 3.35.1 2020-09-01 21:58:13 -04:00
Roman Mogylatov
c4b33749d2
Providers docs update (#289)
* Update callable provider docs

* Update coroutine provider docs

* Edit object docs

* Edit list provider docs

* Edit configuration provider docs

* Edit selector provider docs

* Fix mypy stub of the ``DeclarativeContainer`` to specify the ``__init__`` interface

* Edit Dependency provider docs
2020-09-01 21:39:23 -04:00
Roman Mogylatov
0bb30f91ef
Singleton docs update (#288)
* Update docblocks of factory provider examples

* Edit singleton docs
2020-09-01 16:04:48 -04:00
Roman Mogylatov
1ad852d193
Factory provider docs update (#287)
* Update index page

* Update providers index page

* Make a little wording fix on containers index page

* Refactor factory provider docs header

* Update factory injection docs

* Update factory init injections example and picture

* Start work on underlying providers

* Finish the docs for factory arguments to the underlying providers

* Edit providers delegation section

* Edit section about specialized factory provider

* Edit abstract factory section

* Edit FactoryAggregate docs

* Add meta keywords and description
2020-08-31 21:26:21 -04:00
Roman Mogylatov
f5b97ca92e
Configuration option typed injections (#284)
* Add implementation and tests

* Add docs page and examples

* Revert the api_client miniapp accidental changes
2020-08-24 13:34:47 -04:00
Roman Mogylatov
cf862fe8b5
Provided attributes (#282)
* Add sketch

* Cythonize MethodCaller

* Cythonize ItemGetter, AttributeGetter & ProvidedInstance providers

* Add docblock for .provided attribute

* Refactor repr methods

* Add .provided attribute to the Dependency provider

* Add tests for the .provided attribute to the majority of the providers

* Add docblock for the ProvidedInstance provider

* Add docblocks for the rest of the providers

* Add example of the provided instance usage

* Add tests for provided instance* providers

* Add complex provided instance example

* Update example provided_instance.py

* Add docs
2020-08-20 21:52:12 -04:00
Roman Mogylatov
5358dd85f1
Movie lister example rework (#280)
* Rework movie lister example app

* Code style fix

* Doc block fix

* Update the container

* Make second round of the refactoring

* Rename name to title

* Remove old movie lister docs from the examples

* Add fixtures generator output on success

* Update docblock in the entities module

* Update example readme

* Add CLI app tutorial

* Update some wording in the other tutorials

* Spread link to the tutorial

* Fix code indentation issue
2020-08-12 17:04:46 -04:00
Roman Mogylatov
9b30752da2 Update docs 2020-08-06 16:42:31 -04:00
Roman Mogylatov
1674cecc8d
Flask tutorial (#265)
* Add a piece of the tutorial

* Add "Make it pretty" tutorial step

* Add section about github client setup

* Make minor fixes

* Add search service section + table of contents

* Make various fixes

* Make more fixes

* Update make the search section

* Update ghnav-flask example & README

* Update base.html markup

* Finish section: Make the search work

* Update ghnav-flask screenshot

* Update tutorials

* Add flaks tutorial link to the DI in Python page
2020-07-20 16:58:18 -04:00
Roman Mogylatov
6eff213a68
Migrate to alabaster (#264)
* Add bootstrap and remove created at from ghnav-flask app

* Update readme

* Add logo to the docs

* Update key features description

* Update README

* Change headers of API docs

* Add alabaster theme config

* Update docs index

* Add tutorials section

* Update what is DI page

* Update DI in Python page

* Update tutorials index page

* Update provider docs

* Update container docs

* Update examples docs
2020-07-18 00:40:14 -04:00
Roman Mogylatov
359dce2978 Make cosmetic fixes for `Selector` provider docs 2020-07-13 15:36:07 -04:00
Roman Mogylatov
a0a3da8f72 Improve List and Configuration provider docs 2020-06-29 16:32:48 -04:00