Bug Fixes
- hide scope objects own attributes
[514](https://github.com/proofit404/dependencies/issues/514)
- initialize dependency graph lazily
[241](https://github.com/proofit404/dependencies/issues/241)
- store nested injector spec as scalar data type
[510](https://github.com/proofit404/dependencies/issues/510)
Features
- deny classes to depend on nested injectors
[479](https://github.com/proofit404/dependencies/issues/479)
- deny resolve nested injector directly
[474](https://github.com/proofit404/dependencies/issues/474)
- deny resolve this objects directly
[472](https://github.com/proofit404/dependencies/issues/472)
- deny to resolve value object directly
[473](https://github.com/proofit404/dependencies/issues/473)
- respect resolution ruses in package objects
[471](https://github.com/proofit404/dependencies/issues/471)
- scalar dependencies can't be resolved directly
[480](https://github.com/proofit404/dependencies/issues/480)
BREAKING CHANGES
- Injector won't pass nested injectors to the constructor of the class. Use
`this` objects to access inner attributes of nested injector and pass them to
the constructor arguments.
- The only allowed purpose of nested injectors is to be targets for this
objects.
- Package objects will conform its resolution rules with imported objects. If
package dependency points to the class, it's allowed to resolve such
dependency directly. If package object points to the scalar type for example,
it'll raise exception if you tries to resolve such dependency directly.
- The only allowed purpose of this objects is to specify dependencies of classes
and value objects as links to attributes with different names or stored in
nested Injector classes.
- value objects could only be used to evaluate arguments of classes. Attribute
access of Injector subclass which result in value object would raise an error.
- Scalar dependencies are basically data types. They are allowed to be used as
dependencies for other more complicated data types, like classes. If you need
to take scalar dependency from Injector subclass, use constant value instead.
You don't need Injector for this.