Commit Graph

257 Commits

Author SHA1 Message Date
Roman Mogylatov
ea5af60669 Add test to cover resource initialization with an error 2021-01-03 17:51:59 -05:00
Roman Mogylatov
0aaae89328 Cover shutdown of not initialized resource 2021-01-03 17:38:20 -05:00
Roman Mogylatov
fe583ac9cf Fix typo in resource provider tests 2021-01-03 17:33:28 -05:00
Roman Mogylatov
bc07402b23 Add tests for async context kwargs injections 2021-01-03 17:28:48 -05:00
Roman Mogylatov
644406b594 Add typing stubs for async_() method + tests 2021-01-02 23:29:17 -05:00
Roman Mogylatov
227d3494da Add Provider.async_() method + tests 2021-01-02 22:47:59 -05:00
Roman Mogylatov
e4fd36555f Add support of async mode for FactoryAggregate provider + tests 2020-12-30 22:40:31 -05:00
Roman Mogylatov
d5a8da8907 Add tests for Dependency provider async mode 2020-12-30 13:31:06 -05:00
Roman Mogylatov
eb6e19e60b Add tests for async mode auto configuration 2020-12-30 13:31:01 -05:00
Roman Mogylatov
0a30efec5a Add typing stubs & tests for async mode API 2020-12-30 13:31:01 -05:00
Roman Mogylatov
e09b93c21b Add async mode API + tests 2020-12-30 13:31:01 -05:00
Roman Mogylatov
a89602e690 Add typing stubs for async resource 2020-12-30 13:30:58 -05:00
Roman Mogylatov
b446dab559 Add async mode for the provider 2020-12-30 13:30:58 -05:00
Roman Mogylatov
32c4c6e29a Implement async mode for Dependency provider 2020-12-30 13:30:54 -05:00
Roman Mogylatov
0c42ff9242 Update .provided + fix resource concurent initialization issue 2020-12-30 13:30:51 -05:00
Roman Mogylatov
6020c6caf4 Add singleton implementation + tests for all singleton types 2020-12-30 13:30:48 -05:00
Roman Mogylatov
f07f3e4943 Implement attribute injections and add tests 2020-12-30 13:30:46 -05:00
Roman Mogylatov
53a5d07b3a Implement positional injections, add tests and make refactoring 2020-12-30 13:30:46 -05:00
Roman Mogylatov
caee7f6b41 Add first dirty async injections implementation 2020-12-30 13:30:45 -05:00
Roman Mogylatov
c51eb52053 Fix init async resources in container on Python 2 2020-12-30 13:30:44 -05:00
Roman Mogylatov
86d2f655de Move container async resource tests to a separate module for Python 3.6+ 2020-12-30 13:30:44 -05:00
Roman Mogylatov
45cd887a37 Implement async resources initialization in container 2020-12-30 13:30:44 -05:00
Roman Mogylatov
8505440677 Refactor FastAPI tests 2020-12-30 13:30:44 -05:00
Roman Mogylatov
d23d506e1a Add awaits into async resource class test 2020-12-30 13:30:44 -05:00
Roman Mogylatov
31b03243a4 Add tests for async resources 2020-12-30 13:30:42 -05:00
Roman Mogylatov
dea1033371 Refactor provider tests 2020-12-30 13:30:41 -05:00
Roman Mogylatov
3f8af1cd56 Add tests for async injections in wiring @inject 2020-12-30 13:30:41 -05:00
Roman Mogylatov
c1e53e5edd Replace AsyncMock with simple mock class in FastAPI wiring tests for better compatibility 2020-12-05 22:08:05 -05:00
Roman Mogylatov
ec49d56751 Add tests for FastAPI wiring 2020-12-05 21:36:30 -05:00
Roman Mogylatov
034e4814da Add support of non-string keys for Dict provider 2020-11-20 17:30:42 -05:00
Roman Mogylatov
c8178cecda Add extra typing test for provided instance of `DependenciesContainer` provider 2020-11-20 12:25:35 -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
97c33442e0 Add wiring hotfix for fastapi 2020-11-12 15:54:49 -05:00
Roman Mogylatov
18ef566aae Fix issue #319 resulting in configuration.reset_override() not working properly 2020-11-05 10:16:39 -05:00
Roman Mogylatov
fb2d927cae Fix wiring for @classmethod and @staticmethod 2020-11-03 15:59:02 -05:00
Roman Mogylatov
c5f799a1ec Fix issue with wiring and resource initialization 2020-10-30 16:40:27 -04: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
776cb4eebf Fix multiple containers wiring issue 2020-10-28 13:44:11 -04:00
Roman Mogylatov
2565a1eab0 Fix wiring for @classmethod 2020-10-28 13:11:07 -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
4ddac663d9
Fix wiring for package init (#308)
* Add test

* Add fix

* Add extra test

* Remove package imports on discovery for Python versions < 3.6

* Move wiring samples to a different directory
2020-10-20 17:48:54 -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
0ffa1e8392 Fix typing stub for container.override() method 2020-10-18 22:22:11 -04:00
Roman Mogylatov
56c9023b2d
Fix override and copy decorator stubs (#302)
* Fix stubs and add tests

* Fix tests

* Fix stubs
2020-10-16 16:36:07 -04:00
Rüdiger Busche
819023e7aa
Make Configuration.from_ methods accept Path (#300)
Co-authored-by: rbusche <rbusche@inserve.de>
2020-10-16 13:57:28 -04:00
Roman Mogylatov
07d4f7e74f
Develop 4.0 (#298)
* Add wiring (#294)

* Add wiring module

* Fix code style

* Fix package test

* Add version fix

* Try spike for 3.6

* Try another fix with metaclass

* Downsample required version to 3.6

* Introduce concept with annotations

* Fix bugs

* Add debug message

* Add extra tests

* Add extra debugging

* Update config resolving

* Remove 3.6 generic meta fix

* Fix Flake8

* Add spike for 3.6

* Add Python 3.6 spike

* Add unwire functionality

* Add support of corouting functions

* Bump version to 4.0

* Updaet demo example

* Add pydocstyle ignore for demo

* Add flake8 ignore for demo

* Update aiohttp example

* Update flask example

* Rename aiohttp example directory

* Rename views module to handlers in aiohttp example

* Add sanic example

* Remove not needed images

* Update demo

* Implement wiring for Provide[foo.provider]

* Implement Provide[foo.provided.bar.baz.call()]

* Make flake8 happy

* Wiring refactoring (#296)

* Refactor wiring

* Add todos to wiring

* Implement wiring of config invariant

* Implement sub containers wiring + add tests

* Add test for wiring config invariant

* Add container.unwire() typing stub

* Deprecate ext package modules and remove types module

* Deprecate provider.delegate() method

* Add __all__ for wiring module

* Add protection for wiring only declarative container instances

* Bump version to 4.0.0a2

* Add wiring docs

* Add wiring of class methods

* Remove unused import

* Add a note on individuals import to wiring docs

* Add minor improvement to wiring doc

* Update DI in Python page

* Update key features

* Update README concep and FAQ

* Add files via upload

* Update README.rst

* Update README.rst

* Update README.rst

* Update docs index page

* Update README

* Remove API docs for flask and aiohttp ext

* Add wiring API docs

* Update docs index

* Update README

* Update readme and docs index

* Change wording in README

* Django example (#297)

* Add rough django example

* Remove sqlite db

* Add gitignore

* Fix flake8 and pydocstyle errors

* Add tests

* Refactor settings

* Move web app to to the root of the project

* Add bootstrap 4

* Add doc blocks for web app

* Add coverage

* Fix typo in flask

* Remove not needed newlines

* Add screenshot

* Update django app naming

* Add django example to the docs

* Update changelog

* Update Aiohttp example

* Add sanic example to the docs

* Make a little fix in django example docs page

* Add flask example to the docs

* Add aiohttp example to the docs

* Update installation docs page

* Fix .delegate() deprecation

* Refactor movie lister to use wiring

* Make micro cosmetic changes to flask, aiohttp & sanic examples

* Refactor single container example to use wiring

* Refactor multiple container example to use wiring

* Add return type to main() in application examples

* Refactor decoupled packages example to use wiring

* Refactor code layout for DI demo example

* Update wiring feature message

* Add more links to the examples

* Change code layout in miniapps

* Update sanic example

* Update miniapp READMEs

* Update wiring docs

* Refactor part of cli tutorial

* Refactor CLI app tutorial

* Update test coverage results in movie lister example and tutorial

* Make some minor updates to aiohttp and cli tutorials

* Refactor flask tutorial

* Make cosmetic fix in flask example

* Refactor Flask tutorial: Connect to the GitHub

* Refactor Flask tutorial: Search service

* Refactor Flask tutorial: Inject search service into view

* Refactor Flask tutorial: Make some refactoring

* Finish flask tutorial refactoring

* Update tutorials

* Refactor  asyncio monitoring daemon example application

* Fix tutorial links

* Rename asyncio miniapp

* Rename tutorial image dirs

* Rename api docs tol-level page

* Refactor initial sections of asyncio daemon tutorial

* Refactor asyncio tutorial till Example.com monitor section

* Refactor asyncio tutorial example.com monitor section

* Refactor asyncio tutorial httpbin.org monitor tutorial

* Refactor tests section of asyncio daemon tutorial

* Update conclusion of asyncio daemon tutorial

* Rename tutorial images

* Make cosmetic update to flask tutorial

* Refactor aiohttp tutorial: Minimal application section

* Refactor aiohttp tutorial: Giphy API client secion

* Refactor aiohttp tutorial secion: Make the search work

* Refactor aiohttp tutorial tests section

* Refactor aiohttp tutorial conclusion

* Upgrade  Cython to 0.29.21

* Update changelog

* Update demo example

* Update wording on index pages

* Update changelog

* Update code layout for main demo
2020-10-09 15:16:27 -04:00
Roman Mogylatov
39368591b9 Move generic types test to separate module 2020-09-13 20:38:23 -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
2e940adb50
Typing stubs (#286)
* Add basic setup

* Add more tests for factory

* Add mypy checks to CI

* Add mypy checks to makefile command

* Add typing for the factories

* Add stub for Callable providers

* Add typing module and object provider stubs

* Fix typing test issue

* Remove typing module

* Add Delegate stub

* Add stub for Dependency provider

* Add stub for ExternalDependency

* Add stubs for providers module functions

* Add stubs for the DependenciesContainer provider

* Add stub for the CallableDelegate provider

* Add stubs for Coroutine providers

* Add stubs for the configuration options

* Add stub for the FactoryDelegate

* Add stub for the FactoryAggregate provider

* Add singleton stubs

* Add stubs for singletons

* Add stub for the List provider

* Add stub for the Container provider

* Add stub for the Selector provider

* Add stubs for the dynamic container

* Add stub for the declarative container

* Add stubs for the extensions

* Add types module for explicit provider typing

* Set absolute import mode for the providers module and add types module test

* Skip typing test for Python 3.5

* Remove coroutine test from py35

* Fix py35 tests

* Add \n to the tox.ini
2020-08-26 22:24:20 -04:00