Skip to content

classmethod properties are removed in Python 3.13 #553

@QuLogic

Description

@QuLogic

Problem description

This was added in #519:

@classmethod
@property
def default_level(cls):
"""Returns the default compression level of the underlying zstd library."""
return ZSTD_defaultCLevel()
@classmethod
@property
def min_level(cls):
"""Returns the minimum compression level of the underlying zstd library."""
return ZSTD_minCLevel()
@classmethod
@property
def max_level(cls):
"""Returns the maximum compression level of the underlying zstd library."""
return ZSTD_maxCLevel()

However, as of Python 3.11, using classmethod on property was deprecated, and has been removed in Python 3.13:
https://docs.python.org/3.13/library/functions.html#classmethod

Deprecated since version 3.11, removed in version 3.13: Class methods can no longer wrap other descriptors such as property().

This causes tests to fail on Python 3.13:

____________________________ test_native_functions _____________________________
    def test_native_functions():
        # Note, these assertions might need to be changed for new versions of zstd
>       assert Zstd.default_level == 3
E       AssertionError: assert <bound method default_level of <class 'numcodecs.zstd.Zstd'>> == 3
E        +  where <bound method default_level of <class 'numcodecs.zstd.Zstd'>> = Zstd.default_level
../../BUILDROOT/usr/lib64/python3.13/site-packages/numcodecs/tests/test_zstd.py:93: AssertionError

https://kojipkgs.fedoraproject.org/work/tasks/9111/120819111/build.log

Version and installation information

Please provide the following:

  • Value of numcodecs.__version__ 0.13.0
  • Version of Python interpreter 3.13.0b3
  • Operating system (Linux/Windows/Mac) Fedora Rawhide
  • How NumCodecs was installed (e.g., "using pip into virtual environment", or "using conda") from source

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions