Roman Mogylatov
a79ea1790c
Update custom provider docs formatting
2022-12-18 21:43:02 -05:00
thatguysimon
6f491a6cae
Explicitly mention the required usage of "memo" ( #598 )
2022-12-18 21:38:12 -05:00
Roman Mogylatov
753e863d02
Add `Configuration.from_json()
` method ( #602 )
...
* Add implementation and tests
* Refactor naming in configuration fixtures
* Add typing for .from_json()
* Move get/set_ini_files() methods upper
* Add init implementation and tests
* Refactor typing tests
* Add examples
* Add docs
* Update docs index and readme
* Update changelog
2022-07-10 21:08:45 -04:00
Roman Mogylatov
86df7f91f6
531 Provider import from string ( #555 )
...
* Implement string imports for Factory, Callable, Singletons, and Resource
* Refactor the implementation
* Add tests
* Update tests to pass on Python 2
* Update typing and add typing tests
* Update changelog
* Update docs
2022-01-30 23:16:55 -05:00
Roman Mogylatov
742e73af1a
Aggregate provider ( #544 )
...
* Add implementation and typing stubs
* Add tests
* Add typing tests
* Refactor FactoryAggregate
* Update changelog
* Add Aggregate provider docs and example
* Update cross links between Aggregate, Selector, and FactoryAggregate docs
* Add wording improvements to the docs
2022-01-09 21:45:20 -05:00
Roman Mogylatov
cfadd8c3fa
Add config.from_env(as_=...) ( #541 )
...
* Add implementation and typing stub
* Add unit tests
* Update demo example
* Add typing tests
* Update changelog
* Update docs
* Add tests for an empty environment variable
* Improve wording in di_in_python.rst
* Update wording in changelog and docs
* Update doc blocks
2021-12-20 23:46:51 +01:00
Roman Mogylatov
7238482402
Add .providers attribute and .set_providers() method to FactoryAggregate provider
2021-11-26 19:50:19 +03:00
Roman Mogylatov
6030950596
Configuration(pydantic_settings=[...]) ( #525 )
...
* Add implementation
* Update changelog
* Fix deepcopy()
* Add example
* Add tests
* Add docs
2021-10-26 21:08:47 -04:00
Roman Mogylatov
34902db86e
Configuration(ini_files=[...]) ( #524 )
...
* Update changelog
* Add implementation
* Add tests
* Add more tests and example
* Update changelog
* Update documentation
2021-10-26 20:27:11 -04:00
Roman Mogylatov
b16b190ff7
Configuration(yaml_files=[...]) ( #522 )
...
* Add provider changes and tests
* Move config test fixtures
* Fix issue with explicit providing of envs_required=False for configuration from_*()
* Implement container API
* Increase priority of overriding from context
* Add docs and example
* Update changelog
* Update changelog
2021-10-23 21:46:50 -04:00
Roman Mogylatov
1e198a3ebd
Add disqus comments to typing docs page
2021-09-30 20:15:57 -04:00
Roman Mogylatov
98f036e14c
Update quotes in the docs
2021-09-30 19:26:04 -04:00
Roman Mogylatov
7d160cb4a5
Wiring with string module names ( #515 )
...
* Update main example
* Updating wiring module
* Update wiring test case name
* Implement string imports for wiring
* Update example
* Refactor implementation
* Update front example
* Fix a typo in README
* Update wiring docs
* Update single container example
* Update multiple containers example
* Update quotes in multiple containers example
* Update quotes in single container example
* Update decoupled-packages example
* Update single and multiple containers example
* Update quotes
* Update fastapi+redis example
* Update resource docs
* Update quotes in CLI tutorial
* Update CLI application (movie lister) tutorial
* Update monitoring daemon example
* Update python version in asyncio daemon example
* Update asyncio daemon tutorial
* Update quotes in wiring docs
* Update wiring docs
2021-09-30 15:03:19 -04:00
Roman Mogylatov
14d8ed909b
FactoryAggregate - non string keys ( #496 )
...
* Improve FactoryAggregate typing stub
* Add implementation, typing stubs, and tests
* Update changelog
* Fix deepcopying
* Add example
* Update docs
* Fix errors formatting for pypy3
2021-08-25 10:20:45 -04:00
Roman Mogylatov
49e2cc75c2
Make #492 follow-up fix of configuration provider docs for environment variables interpolation
2021-08-23 21:07:58 -04:00
Felipe Rubio
eda67e42d0
Fix yaml configuration-envs-interpolation examples ( #494 )
...
the interpolation of the environment variables in yaml is wrong, I have changed the example from {$ ENV_VAR} to $ {ENV_VAR}
2021-08-23 21:01:45 -04:00
Roman Mogylatov
ef049daae5
463 Config environment variables interpolation required and nones ( #467 )
...
* Make prototype with enterpolation before parsing
* Add test for option.from_yaml() with missing env not required
* Make some cosmetic changes to _resolve_config_env_markers()
* Add test for option.from_ini() missing envs not required
* Skip schema test cause it requires internet connection
* Add tests for .from_yaml() for config and config option
* Add tests for .from_ini() for config and config option
* Add example for os.environ.setdefault() and envs interpolation
* Add/update docs on environment variables interpolation
* Update changelog
2021-06-24 16:00:36 +03:00
Roman Mogylatov
dbbf5fdcf1
462 Config.from_value() ( #465 )
...
* Implement .from_value() method for config provider
* Add tests for config.from_value() method
* Add example for config.from_value()
* Add docs
* Update changelog
2021-06-13 22:05:29 -04:00
Roman Mogylatov
bbd623c719
459 Add default value for environment variable for yaml and ini config files ( #461 )
...
* Add tests for partial yaml interpolation
* Add tests for partial ini interpolation
* Add yaml config env defaults parsing
* Implement default interpolation for ini files
* Add tests for ini files env interpolation
* Update docs
* Update docs
* Update config docs keywords
2021-06-13 15:07:30 -04:00
Roman Mogylatov
2cab6c687a
Add docs and example for `Factory.add_attributes()
` method
2021-03-03 16:06:53 -05:00
Roman Mogylatov
2bf3601695
Singleton reset context ( #417 )
...
* Add implementation and typing stubs
* Make some refactoring and add tests
* Pin ubuntu version to 18.04
* Add docs and example
* Add changelog
* Add container docs
2021-03-03 08:28:10 -05:00
Roman Mogylatov
64d37efa37
Configuration provider aliases ( #397 )
...
* Add implementation, typing stubs, and tests
* Add docs and example
* Update changelog
2021-02-15 09:11:39 -05:00
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