This is a complete rewrite and reenvisioning of Bevy. Bevy now uses contextvars, so the context state no longer has to be attached to class instances and functions. This allows for cleaner syntax and simple support for both classes and functions!
Version 2.0 also introduces the new Annotated Provider. The Annotated Provider looks for `typing.Annotated` hints, which allows for cached instances of the same type to coexist in the same repository.
Version 2.0 also does away with needing to deal with a context repository. You can just write a class, annotate the attributes, and assign them the dependency instance to have them injected at runtime when needed. Same goes for functions, use the inject decorator, annotate your parameters, and assign them the dependency instance as their default value, Bevy will handle everything when you call the function.