Skip to content

Releases: todofixthis/class-registry

ClassRegistry v5.1.1

17 Oct 19:41
b12cb47
Compare
Choose a tag to compare

ClassRegistry v5.1.1

This is a minor release focussing on improving documentation and CI. It does not contain any functional changes.

⚠️ If you are upgrading from ClassRegistry v4 or earlier, be sure to also review Upgrading to ClassRegistry v5, as the v5 release introduced a number of backwards-incompatible changes. ⚠️

Changes

SHA256 Checksums

b093ecc1dad34c5dc6eda2530046d956f2303a5cfaa543bf7fba35ce3c7b1672  phx_class_registry-5.1.1-py3-none-any.whl
06c9af198b846a7530406314f63f8d83441daf42d29ee25d8c0b19a9dbc37939  phx_class_registry-5.1.1.tar.gz

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

# ClassRegistry v5.1.1
This is a minor release focussing on improving documentation and CI. It does not contain any functional changes.

⚠️ **If you are upgrading from ClassRegistry v4 or earlier, be sure to also review [Upgrading to ClassRegistry v5](https://class-registry.readthedocs.io/en/latest/upgrading_to_v5.html), as the v5 release introduced a number of backwards-incompatible changes.** ⚠️

## Changes
* Added auto-generated API documentation to [readthedocs](https://class-registry.readthedocs.io/).
* Docstrings now conform to [Google style conventions](https://google.github.io/styleguide/pyguide.html#s3.8.3-functions-and-methods).
* Added intersphinx mappings for Python symbols to documentation (see [`sphinx.ext.intersphinx` docs](https://www.sphinx-doc.org/en/master/usage/extensions/intersphinx.html) for more information).
* Properly dropped support for Python v3.10.

# SHA256 Checksums
```
b093ecc1dad34c5dc6eda2530046d956f2303a5cfaa543bf7fba35ce3c7b1672  phx_class_registry-5.1.1-py3-none-any.whl
06c9af198b846a7530406314f63f8d83441daf42d29ee25d8c0b19a9dbc37939  phx_class_registry-5.1.1.tar.gz
```
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEEnIUO0KsYbEbt5eQY330i9k++dSEFAmcRaDQACgkQ330i9k++
dSGSUg/8CnEaPz5khmVWdBbIhNqcwfdVCK+5y0N2iXwEMGqeyv7PzuRdNKBGZeU+
N8cxU2rEMd9r8f87ZAtuzL9wgyXldXQIfgxPlbXZmLRdvYwvoJvrIoihxsCOovaN
joAlvI8fgTKbErb9ZHTypFKUW6QOduydLHd9TN0/xtza7AY9skX3D2ZKJrDox6Z+
17f4X9XhahypsBPiY711BoIgwjz5BTSSNsZ5l1tmy/BaAp4mgkqGedqQ2CDFkjke
8vj+MyUMgVtPqzC/JPhMHJyOvh4yjcpYV4vmSp7Xh7f+a4LKHpJRw2Ou9HWHOBQ6
QdSnsOZH6ZxKzISR0G0yCHlsj+HtZGQAgEbYs48LjsL6RDJxwr8vyPAnsSe7vm64
ziA9pJDwNFRiwdQoz4XS5edGV6rXLaadDoyXHqY+spTgZsr23unpqXzeLaYq/T+9
YMf7MnrvU27R+8dOjD7MbTRzV+794ClfXczHz5EQ3ZyEXilYntJImVRTporFyGpx
7GELUFjn0CnLt8AY2lcFa8lneYJgK/YnvQC51bODa4PA4BwwOirYib5bwWKIHy4u
gVyR2ldrgzf6mF0Cf6vt8W2vsqtxIfPMxqH6kfFxi7ks1eslegPux6O61xlvwYEs
BKoZDa4ihwIccx9h4SeIZVfAfFhXblz3hW6EISk5BczV2p0akFQ=
=3NNY
-----END PGP SIGNATURE-----

ClassRegistry v5.1.0

16 Oct 21:23
0e4bb7d
Compare
Choose a tag to compare

ClassRegistry v5.1.0

⚠️ This version contains backwards-incompatible changes. Please review the changelog below for more information. ⚠️

⚠️ If you are upgrading from ClassRegistry v4 or earlier, be sure to also review Upgrading to ClassRegistry v5, as the v5 release introduced a number of backwards-incompatible changes. ⚠️

Backwards-incompatible changes

  • Dropped support for Python v3.10.
  • ClassRegistry no longer derives from collections.abc.Container due to violation of the Liskov Substitution Principle.
    • If this causes issues for your code, please let me know via the issue tracker, and we'll figure out how to resolve it 😺

Other changes

  • Added support for Python v3.13.
  • [#53] Fixed type scrubbing when decorating a class with @registry.register (thanks @100rab-S for reporting!).
  • Added missing type hints.
  • ClassRegistry is now PEP-561 compliant.

Maintainer QoL improvements

  • Switched to src layout (see src layout vs flat layout for more information).
  • Configured Dependabot to also check GitHub actions dependencies.
  • Type-checking now runs parallel to unit tests in GitHub Actions.
  • Turned on strict mode for mypy checks.
  • Updated dev and GitHub Actions dependencies.
    • ⚠️ Note: the "test" dependency group has been renamed to "ci". Wherever you are currently doing poetry install --with=test you will need to change this to poetry install --with=ci.

SHA256 Checksums

a42eecc7672f23cc30229b3fbc6585451c9341c29610d146cfb48f2cb97757f3  phx_class_registry-5.1.0-py3-none-any.whl
63b8889eff0ddae67d4390f066abb9cf5fd14dfff183a0696968219260b7cbd0  phx_class_registry-5.1.0.tar.gz

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

# ClassRegistry v5.1.0
⚠️ **This version contains backwards-incompatible changes.** Please review the changelog below for more information. ⚠️

⚠️ **If you are upgrading from ClassRegistry v4 or earlier, be sure to also review [Upgrading to ClassRegistry v5](https://class-registry.readthedocs.io/en/latest/upgrading_to_v5.html), as the v5 release introduced a number of backwards-incompatible changes.** ⚠️

## Backwards-incompatible changes
* Dropped support for Python v3.10.
* `ClassRegistry` no longer derives from `collections.abc.Container` due to violation of the Liskov Substitution Principle.
    * If this causes issues for your code, please let me know via the [issue tracker](https://github.com/todofixthis/class-registry/issues), and we'll figure out how to resolve it 😺

## Other changes
* Added support for Python v3.13.
* [#53] Fixed type scrubbing when decorating a class with `@registry.register` (thanks @100rab-S for reporting!).
* Added missing type hints.
* ClassRegistry is now [PEP-561 compliant](https://typing.readthedocs.io/en/latest/spec/distributing.html#packaging-typed-libraries).

## Maintainer QoL improvements
* Switched to src layout (see [src layout vs flat layout](https://packaging.python.org/en/latest/discussions/src-layout-vs-flat-layout/#src-layout-vs-flat-layout) for more information).
* Configured Dependabot to also check GitHub actions dependencies.
* Type-checking now runs parallel to unit tests in GitHub Actions.
* Turned on strict mode for mypy checks.
* Updated dev and GitHub Actions dependencies.
    * ⚠️ Note: the "test" dependency group has been renamed to "ci". Wherever you are currently doing `poetry install --with=test` you will need to change this to `poetry install --with=ci`.

# SHA256 Checksums
```
a42eecc7672f23cc30229b3fbc6585451c9341c29610d146cfb48f2cb97757f3  phx_class_registry-5.1.0-py3-none-any.whl
63b8889eff0ddae67d4390f066abb9cf5fd14dfff183a0696968219260b7cbd0  phx_class_registry-5.1.0.tar.gz
```
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEEnIUO0KsYbEbt5eQY330i9k++dSEFAmcQLr0ACgkQ330i9k++
dSGedg/+LyQL/y9N7iKVUg1HeDKORak4rb5pp/NJtkO+9Qe3N9xxP28uZS2zWNmt
vdne/WhGNxKM88K+A6ChBEPxe4pYXuihrM0MYvSqX6BcGn3u/kH2eFCSWct4ana3
j3olC4nOtbvQhyj2W4i32DwWM/DeZ8a3dSbxIO8RdDm/07VyrB4Py1ej6NwT/Uyj
NqLb2xAYhny+dXKMdcBFkmFq87GAzSlIyTDTpUdoBNxpKp5YbsmrQRgr+bkVUr6A
CeSP/IRfxSZht1q4ki7qzApH0g0/H3VO5FwYAIy/vZObeoW840AYAicGOvIigfts
z4Pz2V9fgiZMhS0Xj0Aml3DCiJQjEf5r8YqBETkwq5CCoh6T7MOe0VeZFFwqYMGY
nxprGKb7Ge0AVdgvWsnGyizublnCz+0U44BUC2bfhumwvMmdXa5NfkI7iw8C4viY
ze6Jznm1E52pD4Fj5OsubJ+BQqUKz5sFPTBAKzIk7qNhm0/RACUsky1EDyj6wACs
t8LSQe0qkUoiD+zSTgngLVCb7ZtXQvOTWhNInOyONYhHHdpQ0ROGPcOmumzGu2Lm
fpVSrtAROktU9XVbGCKC70UEnIpvz7kEBR4DOY0kr5OJXeNkcvoWIfxkYj0dq9T4
4vmvIOPpdng+VPmUzA8DOM/5wjZEj3DDb1pxu/0dNb999C+JTqM=
=IJSR
-----END PGP SIGNATURE-----

ClassRegistry v5.0.0

08 Sep 01:16
fbb3dcd
Compare
Choose a tag to compare

ClassRegistry v5.0.0

⚠️ This version contains changes that are not backwards-compatible! Refer to Upgrading to ClassRegistry v5 for migration instructions. ⚠️

If you have any questions, or if you run into any issues, drop a note on the ClassRegistry issue tracker, and I'll get you sorted 😺

Breaking changes

  • Cleaned up top-level class_registry namespace. Refer to Upgrading to ClassRegistry v5 for instructions to update your import statements.

  • class_registry.AutoRegister is deprecated in favour of class_registry.base.AutoRegister which returns a base class instead of a metaclass:

    ClassRegistry v4.x:

    from class_registry import AutoRegister
    
    class MyBaseClass(metaclass=AutoRegister(registry)):
        ...

    ClassRegistry v5.x:

    from abc import ABC
    from class_registry.base import AutoRegister
    
    class MyBaseClass(AutoRegister(registry), ABC):
        ...
  • BaseRegistry no longer implements typing.Mapping, due to violations of the Liskov Substitution Principle.

    • Removed BaseRegistry.items().
    • Renamed BaseRegistry.values() to BaseRegistry.classes().
  • BaseMutableRegistry no longer implements typing.MutableMapping, due to violations of the Liskov Substitution Principle.

    • Removed BaseMutableRegistry.__delitem__().
    • Removed BaseMutableRegistry.__setitem__().
  • Removed EntryPointClassRegistry.items() for consistency with BaseRegistry.

New functionality

  • If a ClassRegistry instance always returns objects derived from a particular base class, you can now provide a type parameter to help with type checking, autocomplete, etc.:

    # Add type parameter ``[Pokemon]``:
    pokedex = ClassRegistry[Pokemon]()
    
    # Your IDE will automatically infer that ``fighter1`` is a ``Pokemon``.
    fighter1 = pokedex['fire']
    • ClassRegistryInstanceCache inherits the type parameter from its wrapped ClassRegistry instance, or you can specify it explicitly:

      # Add type parameter ``[Pokemon]``:
      registry = ClassRegistry[Pokemon]()
      
      # The ``ClassRegistryInstanceCache`` inherits the type parameters from the
      # ``ClassRegistry`` that it wraps.
      pokedex = ClassRegistryInstanceCache(registry)
      
      # Your IDE will automatically infer that ``fire_fighter`` is a ``Pokemon``.
      fire_fighter = pokedex['fire']
  • Added BaseRegistry.__dir__().

  • Added BaseRegistry.__len__().

Other changes

  • Fixed an error when checking if a class is registered when that class' initialiser requires at least one argument.
  • Rewrote tests to be easier to read.
  • Now uses Poetry for packaging and dependency management.
  • Integrated black into CI pipeline and pre-commit hook.
  • Integrated mypy into CI pipeline and pre-commit hook.
  • Integrated ruff into CI pipeline and pre-commit hook.
  • Switched documentation to NZ English 🇳🇿

SHA256 Checksums

  • 6e0644f779c7d793a96090d938fe4c396f3274dd57563dc1c57ea245b5c07f89 phx_class_registry-5.0.0-py3-none-any.whl
  • a57ab8c2eca03e0daf06e0dd840ea26b72e2e51b7b7509015b3df7c0d537ee73 phx_class_registry-5.0.0.tar.gz

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

# ClassRegistry v5.0.0
**⚠️ This version contains changes that are not backwards-compatible! Refer to [Upgrading to ClassRegistry v5](https://class-registry.readthedocs.io/en/develop/upgrading_to_v5.html) for migration instructions. ⚠️**

If you have any questions, or if you run into any issues, drop a note on the [ClassRegistry issue tracker](https://github.com/todofixthis/class-registry/issues), and I'll get you sorted 😺

## Breaking changes
* Cleaned up top-level `class_registry` namespace. Refer to [Upgrading to ClassRegistry v5](https://class-registry.readthedocs.io/en/develop/upgrading_to_v5.html) for instructions to update your `import` statements.
* `class_registry.AutoRegister` is deprecated in favour of `class_registry.base.AutoRegister` which returns a base class instead of a metaclass:

    ClassRegistry v4.x:

    ````python
    from class_registry import AutoRegister

    class MyBaseClass(metaclass=AutoRegister(registry)):
        ...
    ````

    ClassRegistry v5.x:

    ````python
    from abc import ABC
    from class_registry.base import AutoRegister

    class MyBaseClass(AutoRegister(registry), ABC):
        ...
    ````
* `BaseRegistry` no longer implements `typing.Mapping`, due to violations of the Liskov Substitution Principle.
    * Removed `BaseRegistry.items()`.
    * Renamed `BaseRegistry.values()` to `BaseRegistry.classes()`.
* `BaseMutableRegistry` no longer implements `typing.MutableMapping`, due to violations of the Liskov Substitution Principle.
    * Removed `BaseMutableRegistry.__delitem__()`.
    * Removed `BaseMutableRegistry.__setitem__()`.
* Removed `EntryPointClassRegistry.items()` for consistency with `BaseRegistry`.

## New functionality
* If a `ClassRegistry` instance always returns objects derived from a particular base class, you can now provide a [type parameter](https://typing.readthedocs.io/en/latest/source/generics.html#generics) to help with type checking, autocomplete, etc.:

    ````python
    # Add type parameter ``[Pokemon]``:
    pokedex = ClassRegistry[Pokemon]()

    # Your IDE will automatically infer that ``fighter1`` is a ``Pokemon``.
    fighter1 = pokedex['fire']
    ````

    * `ClassRegistryInstanceCache` inherits the type parameter from its wrapped `ClassRegistry` instance, or you can specify it explicitly:

        ````python
        # Add type parameter ``[Pokemon]``:
        registry = ClassRegistry[Pokemon]()

        # The ``ClassRegistryInstanceCache`` inherits the type parameters from the
        # ``ClassRegistry`` that it wraps.
        pokedex = ClassRegistryInstanceCache(registry)

        # Your IDE will automatically infer that ``fire_fighter`` is a ``Pokemon``.
        fire_fighter = pokedex['fire']
        ````

* Added `BaseRegistry.__dir__()`.
* Added `BaseRegistry.__len__()`.

## Other changes
* Fixed an error when checking if a class is registered when that class' initialiser requires at least one argument.
* Rewrote tests to be easier to read.
* Now uses [Poetry](https://python-poetry.org/) for packaging and dependency management.
* Integrated [black](https://black.readthedocs.io/en/stable/) into CI pipeline and pre-commit hook.
* Integrated [mypy](https://mypy.readthedocs.io/en/stable/) into CI pipeline and pre-commit hook.
* Integrated [ruff](https://docs.astral.sh/ruff/usage/) into CI pipeline and pre-commit hook.
* Switched documentation to NZ English 🇳🇿

# SHA256 Checksums

* `6e0644f779c7d793a96090d938fe4c396f3274dd57563dc1c57ea245b5c07f89  phx_class_registry-5.0.0-py3-none-any.whl`
* `a57ab8c2eca03e0daf06e0dd840ea26b72e2e51b7b7509015b3df7c0d537ee73  phx_class_registry-5.0.0.tar.gz`
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEEnIUO0KsYbEbt5eQY330i9k++dSEFAmbc+qsACgkQ330i9k++
dSH5RA/+OQJMPhsBbmmx7PGju86OcA5WnC1P1xh/Dfs3OZ5kwuW4nncmFSHvjkXE
fLXQvVo1SA67HWW91zdw/1bz/WZQO3MzrA04wJX2yxMRc3MZVyyoXl01BUK8bS2F
cRPCVA7t1Mqju6LLoK1aYivvLELHGuUekfv9X8gZCbZlNWUnXuQdKpUSuowBdesH
ZGp56c5vAxgnWtcc8/VjbgsqoCExHv33NlbbFXnWGVT5pTtNjvGxIwr28xNf5NTV
5LFzyAj03yM3+pEm9uLv6FauU36C0zsN3sh0uhVAQk8DDDap2SaYtF5lDNuoZMgh
BJsqP1yWt+xPLUIxMhr/+l1pq0ROU5+u5yGZihqbTqWHc8xUC5MQqsujkU2JxB9j
lEplGTjk6cz1nxDaoroDYgT9sfxNg3DxJQEDBxzmMVoqp6EsNCtxJv1wmGi02CD/
AnrXJUnOfsqQBM5O8kUYfOBUrhWt7DxAS6QwC7H/gDfCTXx3ngo0M6u+ufV7tbL2
yIPfguroAD7Fy7hhc95oFomANXSiBfH+SfcLELO7gHmCp1Ji10iaeefvNdaIH8/l
kwH2MAN+SGoLp/q+UGE1j2JUM3CCOCrQyEwRVuUMVBmPIY7KbTlAiMNUc1t/rnkU
9EwAzPrbqgZIsUrjtWAYOQx7qrk8pmpM4z6APtMPmfubSYpma0o=
=AXlM
-----END PGP SIGNATURE-----

ClassRegistry v4.1.0

06 Oct 01:30
3470e04
Compare
Choose a tag to compare

⚠️ This release drops support for Python 3.9 ⚠️

  • Add support for Python 3.12, drop support for Python 3.9.
  • Added GitHub Actions badge to README.
  • Added documentation build step to GitHub Actions (to check for build warnings/errors only).
  • Added now-required readthedocs.yaml file for RTD documentation builds.

SHA256 Checksums

  • 6a7fe8568f9000ad1f90c9a81c5cb65ec20ee3b89b2aaab7a67e14dbb67e11d1 phx-class-registry-4.1.0.tar.gz
  • 1cad15897473d5bcd2ed7640423e68b7fa20745e4e25c0457f5474afa50bc8bb phx_class_registry-4.1.0-py3-none-any.whl
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

⚠️ This release drops support for Python 3.9 ⚠️

* Add support for Python 3.12, drop support for Python 3.9.
* Added GitHub Actions badge to README.
* Added documentation build step to GitHub Actions (to check for build warnings/errors only).
* Added now-required `readthedocs.yaml` file for RTD documentation builds.

# SHA256 Checksums

* `6a7fe8568f9000ad1f90c9a81c5cb65ec20ee3b89b2aaab7a67e14dbb67e11d1  phx-class-registry-4.1.0.tar.gz`
* `1cad15897473d5bcd2ed7640423e68b7fa20745e4e25c0457f5474afa50bc8bb  phx_class_registry-4.1.0-py3-none-any.whl`
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEEnIUO0KsYbEbt5eQY330i9k++dSEFAmUfYuwACgkQ330i9k++
dSGhGw//a888aST8E46hZoFQzWUpwWZs+Cl3wYbhlOStIcBtwTcd/4mNS/B+D7Y8
xkD7w4lHZGMJbAj5v0v0auOVEp7k6hUKdb34EfnSp7QhjtAfmYO46+lnI7wp/QoT
YwK9NeWMKBbHOFkbIPmEi1VCEQC3nNsmJNF1FNFwz3JP3qRncWjXHZUVkKeN3bml
DjC0r2Lwj0r105ktlT0Lr1Owj7b5zCknwyZaaxvMJqhQdKSm+AkcHezto8fUuK8W
HL6po1KcS+QsalGZsQEVpitlZeYc6T9hj6/bKBmtbf2afhS7HoC5mfkDCblG1Gi2
YO4NbXVTXRGPY61h7JY+rkYCJ883Hi5tYAsL3Olg07HwzjOR9NjBnrH11diK++uH
cVdQmol8UcFEPPPyOTc7WYa98td+3TuTDhIIej1Dt4tgISuIgWOek/aGiRsuK5x7
QKsRGn1T84PcCXb4UdMYo5YeJCdHhcbHZxuC2zs8fny/FbIaV8qMxe6+3uA8svwe
aWUnoATMzyPgh3rI2fiK5npXm4P3IBmbBdqWDTUMYTYiSluFJ+j9MjSi9EHn3a9E
rvk7pqE9NFyT6uePp+pZdkv8Pn+Nl6chqCon2hsitIwMfiXo8KtD3DpJHIoj2lyl
7M3gkGRa6FLIpMPa1vw4g2yRO6o+dgMW3/oV01Dq3Ye1I0lWdEs=
=TGyP
-----END PGP SIGNATURE-----

ClassRegistry 4.0.6

10 Feb 00:03
ace1547
Compare
Choose a tag to compare

This release updates project metadata; there are no functional changes in this release.

  • Set up GitHub Actions.
  • Dropped PyPy classifier.

SHA256 Checksums

  • 336f87dda583a576cf13244c83c987f41b9601837621451460c0e48afa636435 phx-class-registry-4.0.6.tar.gz
  • 1a80e6923c5edab1b632314f50c5e62a0214a280f6ab441b7a97ab1141953aa3 phx_class_registry-4.0.6-py3-none-any.whl

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

This release updates project metadata; there are no functional changes in this release.

* Set up GitHub Actions.
* Dropped PyPy classifier.

# SHA256 Checksums
* `336f87dda583a576cf13244c83c987f41b9601837621451460c0e48afa636435  phx-class-registry-4.0.6.tar.gz`
* `1a80e6923c5edab1b632314f50c5e62a0214a280f6ab441b7a97ab1141953aa3  phx_class_registry-4.0.6-py3-none-any.whl`
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEEnIUO0KsYbEbt5eQY330i9k++dSEFAmPliZEACgkQ330i9k++
dSGEyQ/+MQQkyGM6BMHJjBbQBfXxFGRLjgd5MpKOmT1kQ/2gUcU1hs5zJxQavOnE
4g8VCx7ZODyNP+BUrUbzLNzEu2k25QbqYZuRq5hfuMolMTuTzCT5M0QhE0tq9Lu6
yLliwRX/WrpeZS8Fg+rmfnDxXQC5bIhpqJSBnDWr52PfdBqR9UVNpJWQtNtih4aM
Nx74+Llkz8VNFk7I4pdiS6c+EwLHg1jrxA5iy4ONsXKDtW3CeRBejkpKgRmcWZRj
QARY4EHIQwM0hQF3MI/Zemj9UdNdbu4GX8RF52zDYve95XbsaYK0Jxr7dv0Ow+QT
/NmrplZBSj93QQ4QML7Xui/C9rIwP12orVGeDA63Og69tjHow3BTnMLd7YOZEcrR
1shiaZ13rArxs1TT9sRbRX2LICTg3imMPQPkGuw1+qqMwKeVwWrwt/tXldS5PLgJ
AU8zuZXMrY96xuRm4NeeH3O2sW9TKqmmsEzL2uK6rrclVpkn+SA01HfBR1fBqQWB
qIXe8UlgcCX44j22FVTjZlwandJrmlj3sCWM4eJSx+VBoRFyyPBFMZkFFqFu9cxF
GNckVok7q4jXFyWRUvGtL1gBRs5wQNnjhKZtGBSZkFZ5r90Kxiw8hJVRiZmp1lF6
U/Gnx3K2rw9zHLvjaVRDN3uf+GNfxlvbeY+gIiiKiINhCv9aiJw=
=1ZJL
-----END PGP SIGNATURE-----

ClassRegistry v4.0.5

03 Feb 02:02
9c7fc21
Compare
Choose a tag to compare

Changelog

This version fixes some issues with project metadata; there are no functional changes in this release.

  • Fixed Tox configuration — it now ACTUALLY runs the unit tests 😅
  • Renamed unit tests to match unittest discoverer's default pattern (test_*.py).
  • Fixed an issue preventing unit tests from getting included in sdist builds.
  • Added instructions to run unit tests outside of Tox.
  • Added bug tracker to project links.
  • Removed reference to discontinued travis-ci.org.
  • Tightened up disclaimers in documentation.

SHA256 Checksums

  • 1901bdaea34d9cfefa4d149b2f20217e7e024492f7e247797e7c4d36d96cdb5b phx-class-registry-4.0.5.tar.gz
  • 389d9dbe0b5c660708931c4fbc09147ff0871169a34394c1d7021cac74bd4425 phx_class_registry-4.0.5-py3-none-any.whl

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

# Changelog
This version fixes some issues with project metadata; there are no functional changes in this release.

* Fixed Tox configuration — it now ACTUALLY runs the unit tests 😅
* Renamed unit tests to match unittest discoverer's default pattern (`test_*.py`).
* Fixed an issue preventing unit tests from getting included in sdist builds.
* Added instructions to run unit tests outside of Tox.
* Added bug tracker to project links.
* Removed reference to discontinued travis-ci.org.
* Tightened up disclaimers in documentation.

# SHA256 Checksums
* `1901bdaea34d9cfefa4d149b2f20217e7e024492f7e247797e7c4d36d96cdb5b  phx-class-registry-4.0.5.tar.gz`
* `389d9dbe0b5c660708931c4fbc09147ff0871169a34394c1d7021cac74bd4425  phx_class_registry-4.0.5-py3-none-any.whl`
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEEnIUO0KsYbEbt5eQY330i9k++dSEFAmPcaxEACgkQ330i9k++
dSHm5Q/7BKIsVKjQo5FqrjF5VSYFfIw/dvScjMO3vve84HhEPieo+ycmStruS0ih
fFAKu+pKiasrYex9CNr0IS65SfS4Mamk6FRXUyePBm6XLHVkF0rpTS7NISB6lHvL
kuufq4QvY5TWalzBrUD1XbX8WsczmKnQQ1+uDaWEqqIKDmA3y8HtgkmIOCGmwTCG
MaCgRHjAjrYPKomqJZ8CipBBKI9eoddIXFNBhxG/B7Hz8Sjv+xKYUeiq3aPfVji3
dJCKItcYS6RAMLZ1W4YebNNY02fIrPyuU5nOhgnQCU4VlGrXs7/+JPFq30Ly1QV+
4R5tts9UzC6Y7Fcs0uVC4lZOiXeiQcZDSj9emyKKamkkDjNRHO29v7+0zAjMSePR
SOS8o2Uk5DRp7E/f9GHWMYpsH/Ni+DwILZKCKrYYGg/YUeAFRCfj+WDLWUSi43LV
Dx9joanVjqpfRMA9gqFjIs+m6X/4pGPi9wKQpxffRZlxkDBAJagBnPTi3YZ9HKnz
qpzcNGJrawkVwgKGKeKVKgrVUi/ceMwN1bENocw8KDTblvJBA81G7kTXROLIuUyV
fpdoA/OBPl2Te9vf71xlBXFsrkd+gRhyDoqt1dzj+tzCwzqqvw/Wn5KwGBX0aPNA
tUqWs0mwhCxik7zmA3EbTABHcv/opU79yVDnDiE5RU8VUYUo5p0=
=XCSe
-----END PGP SIGNATURE-----

ClassRegistry v4.0.4

16 Jan 23:46
1805a9f
Compare
Choose a tag to compare

Changelog

  • Add Changelog link to project metadata (still getting the hang of this PEP-621 thing 😁).
  • Removed outdated travis-ci.org configuration; will replace once my open-source account gets approved 😇

SHA256 Hashes

  • 7dddf66bcd688ff1f3b7692f1e345b7accf1709b616279e0a464459874a9241f phx-class-registry-4.0.4.tar.gz
  • a10cbf1666d1ce8704cf53e33b288e00ab9d76fc3c3409dbe43bcb55ced40d86 phx_class_registry-4.0.4-py3-none-any.whl

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

# Changelog
* Add Changelog link to project metadata (still getting the hang of this PEP-621 thing 😁).
* Removed outdated `travis-ci.org` configuration; will replace once my open-source account gets approved 😇

# SHA256 Hashes
* `7dddf66bcd688ff1f3b7692f1e345b7accf1709b616279e0a464459874a9241f  phx-class-registry-4.0.4.tar.gz`
* `a10cbf1666d1ce8704cf53e33b288e00ab9d76fc3c3409dbe43bcb55ced40d86  phx_class_registry-4.0.4-py3-none-any.whl`
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEEnIUO0KsYbEbt5eQY330i9k++dSEFAmPF4Y0ACgkQ330i9k++
dSFayxAAlQ26kMTnIjYfJIUNgJnPR8QbpGlHuO+j8c9HtpxaGXqBTEZZlgqaZLdd
ErOmQkwdXrvECMAjxZJFaxU1EEK6Tquicdm+gbnui8jG3speGTrIRJw51s8JG8He
uP42C7OJzAM95CJ6EZPr/0BUMURU3A7QhOa64b0nKo5tHghXOrdoexBLBisoTI8A
s2blByOKfpEnaVrFAPmjrZh7WkGqZQxIt1Jl36LvFhAjL0zSG9eUWzrTmm7/nEq5
7Xfw4hoYeDv7hFIUai6htkwm3AB8mj+AYtBf8zX6CLxSGW4X+yk9icYBLNHeL4BG
f2J+zFFHNNpIBe7JUl8X5J2K9kvpAwCd/sjs40WqBf2LIUABn2KsKZd8SBfbKRiq
G2IVoNzsBTQNsmvbP5r0BurI8sG0GM/4066lxy1jOFRHjtNYZgIkvyR9qA4HgQ7v
PSSvftdHTYZhzbMEjMPoLxulnJiALg/vjtPFd/F12pn0JGF/NI+HOSDqeFSgZ6r9
aO4nqKwLJnfbyxKGvVJuCz6Z2aNaZdHKMRG8LEGNJq86AMit8ssepSNDQqCBGhGy
3z/AUosV0MN5wHIyapYamma48QtiCGTU4htzNL6g1vjA73/io68hvWIYQ/0tS3bd
aymct9t06jibdP9N2jvXYrt8RFc4U2TagP5ES2cjjV1iAB/OVKo=
=if6m
-----END PGP SIGNATURE-----

ClassRegistry v4.0.3

16 Jan 23:34
07d6134
Compare
Choose a tag to compare

⚠️ Backwards-Incompatible Changes

The following changes only impact you if your code defines its own class registry subclasses. If you do not subclass any of the class registry classes (e.g., if you're not doing class MyClassRegistry(ClassRegistry): anywhere in your code), you do not have to do anything.

  • Renamed class_registry.MutableRegistry to class_registry.BaseMutableRegistry.
    • If you are subclassing MutableRegistry in your code, change the base class to BaseMutableRegistry instead.
    • If you are not subclassing MutableRegistry, you don't have to do anything.
  • When a class registry overrides gen_lookup_keys, the __iter__, items, and keys methods iterate over the human-readable keys, not the lookup keys.
    • Contrived example: if a subclass overrides gen_lookup_key to return a hash of the key:
      • Previous version: The hashed keys would be included in the output from items, etc.
      • This version: The original un-hashed keys would be included instead.
    • See test.registry_test.GenLookupKeyTestCase for more information and examples.
    • If your code subclasses any of the class registry classes and it overrides the gen_lookup_key method, you may
      need to update any code that iterates over keys/items in that registry.
    • If you are not overriding the gen_lookup_key method, you do not have to do anything.
  • SortedClassRegistry now provides both the human-readable key and the lookup key to sorting functions.
    • Contrived example: if a subclass overrides gen_lookup_key to return a hash of the key:
      • Previous version: The hashed keys would be used for sorting.
      • This version: The original un-hashed keys would be used instead.
    • See test.registry_test.SortedClassRegistryTestCase.test_gen_lookup_key_overridden for more information.
    • If your code subclasses SortedClassRegistry and overrides the gen_lookup_key method, you may need to update the sorting function, as the arguments that get passed to it will have a slightly different structure (refer to the test referenced above to see an example).
    • If you are not overriding the gen_lookup_key method, you do not have to do anything.
  • Changed type hint for items, keys, and values methods; these should now return a generator rather than an iterable.
    • This shouldn't break existing code, but if you have code that overrides these methods, you may want to update them to prevent potential (but unlikely 😇) issues in future versions of phx-class-registry.
    • If you are not overriding any of these methods, you do not have to do anything.

Changelog

  • Switched official support to Python 3.11, 3.10, and 3.9 (but older versions are supported unofficially).
  • Fixed incorrect documentation for the unique parameter for ClassRegistry.__init__ (thanks @adrian-nilsson-fcc!).
  • Added test coverage for overridden gen_lookup_key.
  • Added documentation for overriding gen_lookup_key in subclasses.
  • Added missing type hints and fixed some incorrect type hints.
  • Translate documentation to NZ English 🇳🇿
  • Added release instructions to README.

SHA256 Hashes

  • 8220f3fc1b2a1b826a1753ada15623d5276b281cf481ab05ed8116f2d98f42d3 phx-class-registry-4.0.3.tar.gz
  • d5f59a78a2baf0f09269ae4ca6d2d1614681434d45f3ff998bcba3ecdd2b3ffd phx_class_registry-4.0.3-py3-none-any.whl
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

# ⚠️ Backwards-Incompatible Changes
**The following changes only impact you if your code defines its own class registry subclasses.  If you do not subclass any of the class registry classes (e.g., if you're not doing `class MyClassRegistry(ClassRegistry):` anywhere in your code), you do not have to do anything.**

* Renamed `class_registry.MutableRegistry` to `class_registry.BaseMutableRegistry`.
    * If you are subclassing `MutableRegistry` in your code, change the base class to `BaseMutableRegistry` instead.
    * If you are not subclassing `MutableRegistry`, you don't have to do anything.
* When a class registry overrides `gen_lookup_keys`, the `__iter__`, `items`, and `keys` methods iterate over the human-readable keys, not the lookup keys.
    * Contrived example: if a subclass overrides `gen_lookup_key` to return a hash of the key:
        * Previous version:  The hashed keys would be included in the output from `items`, etc.
        * This version:  The original un-hashed keys would be included instead.
    * See `test.registry_test.GenLookupKeyTestCase` for more information and examples.
    * If your code subclasses any of the class registry classes and it overrides the `gen_lookup_key` method, you may 
need to update any code that iterates over keys/items in that registry.
    * If you are not overriding the `gen_lookup_key` method, you do not have to do anything.
* `SortedClassRegistry` now provides both the human-readable key and the lookup key to sorting functions.
    * Contrived example: if a subclass overrides `gen_lookup_key` to return a hash of the key:
        * Previous version:  The hashed keys would be used for sorting.
        * This version:  The original un-hashed keys would be used instead.
    * See `test.registry_test.SortedClassRegistryTestCase.test_gen_lookup_key_overridden` for more information.
    * If your code subclasses `SortedClassRegistry` and overrides the `gen_lookup_key` method, you may need to update the sorting function, as the arguments that get passed to it will have a slightly different structure (refer to the test referenced above to see an example).
    * If you are not overriding the `gen_lookup_key` method, you do not have to do anything.
* Changed type hint for `items`, `keys`, and `values` methods; these should now return a generator rather than an iterable.
    * This shouldn't break existing code, but if you have code that overrides these methods, you may want to update them to prevent potential (but unlikely 😇) issues in future versions of `phx-class-registry`.
    * If you are not overriding any of these methods, you do not have to do anything.

# Changelog
* Switched official support to Python 3.11, 3.10, and 3.9 (but older versions are supported unofficially).
* Fixed incorrect documentation for the `unique` parameter for `ClassRegistry.__init__` (thanks @adrian-nilsson-fcc!).
* Added test coverage for overridden `gen_lookup_key`.
* Added documentation for overriding `gen_lookup_key` in subclasses.
* Added missing type hints and fixed some incorrect type hints.
* Translate documentation to NZ English 🇳🇿
* Added release instructions to README.

# SHA256 Hashes
* `8220f3fc1b2a1b826a1753ada15623d5276b281cf481ab05ed8116f2d98f42d3  phx-class-registry-4.0.3.tar.gz`
* `d5f59a78a2baf0f09269ae4ca6d2d1614681434d45f3ff998bcba3ecdd2b3ffd  phx_class_registry-4.0.3-py3-none-any.whl`
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEEnIUO0KsYbEbt5eQY330i9k++dSEFAmPF3o0ACgkQ330i9k++
dSE66Q//bXNefWAOTOdmf1fE8tFqfz35G7RNDIp7o1W+ta+0eKCB6FaG9rooc3fg
lwg/JOKxVvYGuCAROPhh09ONYhaLkYwV5jpLHWXtfHdbTUngffxjYwC7SfX4sAnq
79Bck3SUaDBut+3ViG56s0KhwFB4oIYlEizrQSsLUB6AGjII7vOGDvZlhouIa1sP
LG9GGrWmhgIn0xP7OZM2WoNhchEvQj4XkxwdEbZkUiW/VNN/LiEnwoJ8psK/7KsW
gFZdEJ6C5k7JEM4uJfmemz3okLv9Ie2yyoCLHSq9qH/9X+CkbTT4AOXk1NZsuSDS
PmWUIdvP3CXKMaFD3DXbzmQPQUdlgFJ7FA4OqJy8EqXrjuuD5bUEqSuo75A4NA88
2r3e3vnVpbG8xiqMomEOva08UVGXhUckAz4tajkDyZCKJl2AdwzbdhQV7U+MWZtI
d2srnM2BAMI2HbEgirVtTLTFEJ5EpbPDCalbtLtQxnLfhjUcTqbSB9shupFV3ieX
gTlmJfDt8TIp64hzJ6YYKOyuWawk0U2R4alHLz8EVgwaH426jDDb+i+DGLBEFXCd
Tcc5rekHFku98UVVVtylazw8MhC0w5GKqF++PhJmfL76Fy6LaJKmEOdeLuNiCkrS
4Sdw8AT4WTlm9ZVHtzYmiH1b7MbmoAHh4LOdcSIM9sEAyiUAIBw=
=4ISG
-----END PGP SIGNATURE-----

ClassRegistry v3.0.5

29 Aug 12:26
a2ba0c9
Compare
Choose a tag to compare
  • Dropped support for Python 2.
  • Added support for Python 3.7 and 3.8.
  • Added support for pypy3.
  • Adopted PEP-8.
  • Renamed fork to phx-class-registry.

Important: This version removes the legacy import feature for EntryPointsClassRegistry. Refer to the documentation for supported entry point specification.

ClassRegistry v2.1.3

02 Feb 20:33
6087670
Compare
Choose a tag to compare
  • Added support for Python 3.7 (thanks @henriklynggaard for reporting and @stj for fixing!).
  • Updated documentation for unit tests; detox is deprecated in favour of tox -p all in Python 3.7.