Skip to content

Releases: ikalnytskyi/picobox

4.0.0

20 Nov 00:51
4.0.0
Compare
Choose a tag to compare

What's Changed

  • BREAKING: The picobox.contrib package is renamed into picobox.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() and picobox.put() to require either value or factory argument. Previously, they could have been invoked with key 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

19 Nov 01:18
3.0.0
534f52f
Compare
Choose a tag to compare

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 with Python 2 should stick with 2.x branch. See #39.
  • Drop Python 3.4, Python 3.5 and Python 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 and scope in Box.put(), as_ in Box.pass_() and chain in picobox.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

19 Nov 01:13
2.2.0
c817d40
Compare
Choose a tag to compare

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

19 Nov 01:10
2.1.0
c6bceab
Compare
Choose a tag to compare

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 than str. 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

19 Nov 01:08
2.0.0
cbd71c9
Compare
Choose a tag to compare

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 calling picobox.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

  • @malor made their first contribution in #16

Full Changelog: 1.1.0...2.0.0

1.1.0

19 Nov 01:02
1.1.0
ecc4ca7
Compare
Choose a tag to compare

What's Changed

  • New ChainBox class that can be used similar to ChainMap 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 called chain 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

19 Nov 01:00
1.0.0
dde2958
Compare
Choose a tag to compare

Yep, that's the very first version w/ initial functionality. 🍰