You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
setup.py imports and uses the deprecated pkg_resources module (from setuptools) to validate the installed Cython version when building asyncpg from source:
pkg_resources has long been deprecated by setuptools: importing it emits DeprecationWarning: pkg_resources is deprecated as an API, and it is slated for removal. On recent setuptools/distro configurations it may no longer be importable at all, which can make source builds of asyncpg warn or fail.
Port to packaging: alternatively the check can be preserved by switching to the packaging library, as the sister project uvloop did in MagicStack/uvloop@b377b7c — replacing pkg_resources.Requirement.parse(...) with packaging.requirements.Requirement(...) and x not in dep with dep.specifier.contains(x, prereleases=True) (adding packaging to build-system.requires). pkg_resources.Requirement.__contains__ used prereleases=True internally, so passing prereleases=True preserves the original behavior exactly.
Either approach removes the deprecated dependency. Filing this to track the deprecation as an issue alongside the in-flight PR #1314.
Summary
setup.pyimports and uses the deprecatedpkg_resourcesmodule (fromsetuptools) to validate the installed Cython version when building asyncpg from source:Problem
pkg_resourceshas long been deprecated by setuptools: importing it emitsDeprecationWarning: pkg_resources is deprecated as an API, and it is slated for removal. On recent setuptools/distro configurations it may no longer be importable at all, which can make source builds of asyncpg warn or fail.Existing work / options
setup.pyentirely to eliminate thepkg_resourcesdependency.packaging: alternatively the check can be preserved by switching to thepackaginglibrary, as the sister project uvloop did in MagicStack/uvloop@b377b7c — replacingpkg_resources.Requirement.parse(...)withpackaging.requirements.Requirement(...)andx not in depwithdep.specifier.contains(x, prereleases=True)(addingpackagingtobuild-system.requires).pkg_resources.Requirement.__contains__usedprereleases=Trueinternally, so passingprereleases=Truepreserves the original behavior exactly.Either approach removes the deprecated dependency. Filing this to track the deprecation as an issue alongside the in-flight PR #1314.