Releases: ikalnytskyi/picobox
Releases · ikalnytskyi/picobox
4.0.0
What's Changed
- BREAKING: The
picobox.contrib
package is renamed intopicobox.ext
. See #70. - Add
Python 3.12
support. See #61. - Drop
Python 3.7
support. It reached its end-of-life recently. See #60. - Fix
@picobox.pass_()
decorator issue when it was shadowing a return type of the wrapped function breaking code completion in some LSP servers. See #62. - Fix
picobox.push()
context manager issue when it wasn't announcing properly its return type breaking code completion in some LSP servers for the returned object. See #62. - Fix
Box.put()
andpicobox.put()
to require eithervalue
orfactory
argument. Previously, they could have been invoked withkey
argument only, which makes no sense and causes runtime issues later on. See #69.
Full Changelog: 3.0.0...4.0.0
3.0.0
What's Changed
- Add
Python 3.10
&Python 3.11
support. See #51. - Drop
Python 2.7
support. It's dead for more than a year anyway. Those who want to use picobox withPython 2
should stick with2.x
branch. See #39. - Drop
Python 3.4
,Python 3.5
andPython 3.6
support. They reached their end-of-life and are not maintained anymore. See #39 and #52. - Add type annotations to public interface. Now users can use
mypy
to leverage type checking in their code base. See #47. - Make some parameters keyword-only:
factory
andscope
inBox.put()
,as_
inBox.pass_()
andchain
inpicobox.push()
. See #49. - Use PEP 621
pyproject.toml
in a so-called source distribution.
Full Changelog: 2.2.0...3.0.0
2.2.0
What's Changed
- Fix
picobox.singleton
,picobox.threadlocal
&picobox.contextvars
scopes so they do not fail with unexpected exception when non-string formattable missing key is passed. See #30. - Add
picobox.contrib.flaskscopes
module with application and request scopes for Flask web framework. See #31 and #37. - Add
picobox.Stack
class to create stacks with boxes on demand. Might be useful for third-party developers who want to use picobox yet avoid collisions with main application developers. See #33.
Full Changelog: 2.1.0...2.2.0
2.1.0
What's Changed
- Add
picobox.contextvars
scope (python 3.7 and above) that can be used in asyncio applications to have a separate set of dependencies in all coroutines of the same task. See #23. - Fix
picobox.threadlocal
issue when it was impossible to use any hashable key other thanstr
. See #21. - Nested
picobox.pass_
calls are now squashed into one in order to improve runtime performance. See #25. - Add
Python 2.7
support. See #26.
Full Changelog: 2.0.0...2.1.0
2.0.0
What's Changed
picobox.push()
can now be used as a regular function as well, not only as a context manager. This is a breaking change because from now one a box is pushed on stack immediately when callingpicobox.push()
, no need to wait for__enter__()
to be called. See #16.- New
picobox.pop()
function, that pops the box from the top of the stack. See #16 and #17. - Fixed a potential race condition on concurrent calls to
picobox.push()
that may occur in non-CPython implementations. See #16.
New Contributors
Full Changelog: 1.1.0...2.0.0
1.1.0
What's Changed
- New
ChainBox
class that can be used similar toChainMap
but for boxes. This basically means from now on you can group few boxes into one view, and use that view to look up dependencies. See #11. - New
picobox.push()
argument calledchain
that can be used to look up keys down the stack on misses. See #14.
Full Changelog: 1.0.0...1.1.0
1.0.0
Yep, that's the very first version w/ initial functionality. 🍰