• Bug#1102771: python-limits: FTBFS: ModuleNotFoundError: No module named

    From Santiago Vila@21:1/5 to All on Sat Apr 12 18:30:03 2025
    Package: src:python-limits
    Version: 4.4.1-1
    Severity: serious
    Tags: ftbfs trixie sid

    Dear maintainer:

    During a rebuild of all packages in unstable, your package failed to build:

    --------------------------------------------------------------------------------
    [...]
    debian/rules clean
    dh clean --with sphinxdoc --buildsystem=pybuild
    dh_auto_clean -O--buildsystem=pybuild
    dh_autoreconf_clean -O--buildsystem=pybuild
    dh_clean -O--buildsystem=pybuild
    debian/rules binary
    dh binary --with sphinxdoc --buildsystem=pybuild
    dh_update_autotools_config -O--buildsystem=pybuild
    dh_autoreconf -O--buildsystem=pybuild
    dh_auto_configure -O--buildsystem=pybuild
    debian/rules override_dh_auto_build
    make[1]: Entering directory '/<<PKGBUILDDIR>>'
    dh_auto_build
    I: pybuild plugin_pyproject:129: Building wheel for python3.13 with "build" module
    I: pybuild base:311: python3.13 -m build --skip-dependency-check --no-isolation --wheel --outdir /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_limits
    * Building wheel...
    running bdist_wheel
    running build
    running build_py
    creating build/lib/limits
    copying limits/util.py -> build/lib/limits
    copying limits/_version.py -> build/lib/limits
    copying limits/limits.py -> build/lib/limits
    copying limits/version.py -> build/lib/limits
    copying limits/errors.py -> build/lib/limits
    copying limits/typing.py -> build/lib/limits
    copying limits/strategies.py -> build/lib/limits
    copying limits/__init__.py -> build/lib/limits
    creating build/lib/limits/aio
    copying limits/aio/strategies.py -> build/lib/limits/aio
    copying limits/aio/__init__.py -> build/lib/limits/aio
    creating build/lib/limits/storage
    copying limits/storage/etcd.py -> build/lib/limits/storage
    copying limits/storage/memory.py -> build/lib/limits/storage
    copying limits/storage/mongodb.py -> build/lib/limits/storage
    copying limits/storage/redis.py -> build/lib/limits/storage
    copying limits/storage/memcached.py -> build/lib/limits/storage
    copying limits/storage/redis_sentinel.py -> build/lib/limits/storage
    copying limits/storage/redis_cluster.py -> build/lib/limits/storage
    copying limits/storage/registry.py -> build/lib/limits/storage
    copying limits/storage/base.py -> build/lib/limits/storage
    copying limits/storage/__init__.py -> build/lib/limits/storage
    creating build/lib/limits/aio/storage
    copying limits/aio/storage/etcd.py -> build/lib/limits/aio/storage
    copying limits/aio/storage/memory.py -> build/lib/limits/aio/storage
    copying limits/aio/storage/mongodb.py -> build/lib/limits/aio/storage
    copying limits/aio/storage/memcached.py -> build/lib/limits/aio/storage
    copying limits/aio/storage/base.py -> build/lib/limits/aio/storage
    copying limits/aio/storage/__init__.py -> build/lib/limits/aio/storage
    creating build/lib/limits/aio/storage/redis
    copying limits/aio/storage/redis/valkey.py -> build/lib/limits/aio/storage/redis
    copying limits/aio/storage/redis/coredis.py -> build/lib/limits/aio/storage/redis
    copying limits/aio/storage/redis/bridge.py -> build/lib/limits/aio/storage/redis
    copying limits/aio/storage/redis/__init__.py -> build/lib/limits/aio/storage/redis
    copying limits/aio/storage/redis/redispy.py -> build/lib/limits/aio/storage/redis
    running egg_info
    creating limits.egg-info
    writing limits.egg-info/PKG-INFO
    writing dependency_links to limits.egg-info/dependency_links.txt
    writing requirements to limits.egg-info/requires.txt
    writing top-level names to limits.egg-info/top_level.txt
    writing manifest file 'limits.egg-info/SOURCES.txt'
    reading manifest file 'limits.egg-info/SOURCES.txt'
    reading manifest template 'MANIFEST.in'
    adding license file 'LICENSE.txt'
    writing manifest file 'limits.egg-info/SOURCES.txt' /usr/lib/python3/dist-packages/setuptools/command/build_py.py:212: _Warning: Package 'limits.resources.redis.lua_scripts' is absent from the `packages` configuration.
    !!

    ********************************************************************************
    ############################
    # Package would be ignored #
    ############################
    Python recognizes 'limits.resources.redis.lua_scripts' as an importable package[^1],
    but it is absent from setuptools' `packages` configuration.

    This leads to an ambiguous overall configuration. If you want to distribute this
    package, please make sure that 'limits.resources.redis.lua_scripts' is explicitly added
    to the `packages` configuration field.

    Alternatively, you can also rely on setuptools' discovery methods
    (for example by using `find_namespace_packages(...)`/`find_namespace:`
    instead of `find_packages(...)`/`find:`).

    You can read more about "package discovery" on setuptools documentation page:

    - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html

    If you don't want 'limits.resources.redis.lua_scripts' to be distributed and are
    already explicitly excluding 'limits.resources.redis.lua_scripts' via
    `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,
    you can try to use `exclude_package_data`, or `include-package-data=False` in
    combination with a more fine grained `package-data` configuration.

    You can read more about "package data files" on setuptools documentation page:

    - https://setuptools.pypa.io/en/latest/userguide/datafiles.html


    [^1]: For Python, any directory (with suitable naming) can be imported,
    even if it does not contain any `.py` files.
    On the other hand, currently there is no concept of package data
    directory, all directories are treated like packages.
    ********************************************************************************

    !!
    check.warn(importable)
    copying limits/py.typed -> build/lib/limits
    creating build/lib/limits/resources/redis/lua_scripts
    copying limits/resources/redis/lua_scripts/acquire_moving_window.lua -> build/lib/limits/resources/redis/lua_scripts
    copying limits/resources/redis/lua_scripts/acquire_sliding_window.lua -> build/lib/limits/resources/redis/lua_scripts
    copying limits/resources/redis/lua_scripts/clear_keys.lua -> build/lib/limits/resources/redis/lua_scripts
    copying limits/resources/redis/lua_scripts/incr_expire.lua -> build/lib/limits/resources/redis/lua_scripts
    copying limits/resources/redis/lua_scripts/moving_window.lua -> build/lib/limits/resources/redis/lua_scripts
    copying limits/resources/redis/lua_scripts/sliding_window.lua -> build/lib/limits/resources/redis/lua_scripts
    UPDATING build/lib/limits/_version.py
    set build/lib/limits/_version.py to '4.4.1'
    installing to build/bdist.linux-x86_64/wheel
    running install
    running install_lib
    creating build/bdist.linux-x86_64/wheel
    creating build/bdist.linux-x86_64/wheel/limits
    copying build/lib/limits/util.py -> build/bdist.linux-x86_64/wheel/./limits creating build/bdist.linux-x86_64/wheel/limits/aio
    creating build/bdist.linux-x86_64/wheel/limits/aio/storage
    copying build/lib/limits/aio/storage/etcd.py -> build/bdist.linux-x86_64/wheel/./limits/aio/storage
    copying build/lib/limits/aio/storage/memory.py -> build/bdist.linux-x86_64/wheel/./limits/aio/storage
    copying build/lib/limits/aio/storage/mongodb.py -> build/bdist.linux-x86_64/wheel/./limits/aio/storage
    copying build/lib/limits/aio/storage/memcached.py -> build/bdist.linux-x86_64/wheel/./limits/aio/storage
    creating build/bdist.linux-x86_64/wheel/limits/aio/storage/redis
    copying build/lib/limits/aio/storage/redis/valkey.py -> build/bdist.linux-x86_64/wheel/./limits/aio/storage/redis
    copying build/lib/limits/aio/storage/redis/coredis.py -> build/bdist.linux-x86_64/wheel/./limits/aio/storage/redis
    copying build/lib/limits/aio/storage/redis/bridge.py -> build/bdist.linux-x86_64/wheel/./limits/aio/storage/redis
    copying build/lib/limits/aio/storage/redis/__init__.py -> build/bdist.linux-x86_64/wheel/./limits/aio/storage/redis
    copying build/lib/limits/aio/storage/redis/redispy.py -> build/bdist.linux-x86_64/wheel/./limits/aio/storage/redis
    copying build/lib/limits/aio/storage/base.py -> build/bdist.linux-x86_64/wheel/./limits/aio/storage
    copying build/lib/limits/aio/storage/__init__.py -> build/bdist.linux-x86_64/wheel/./limits/aio/storage
    copying build/lib/limits/aio/strategies.py -> build/bdist.linux-x86_64/wheel/./limits/aio
    copying build/lib/limits/aio/__init__.py -> build/bdist.linux-x86_64/wheel/./limits/aio
    copying build/lib/limits/_version.py -> build/bdist.linux-x86_64/wheel/./limits copying build/lib/limits/limits.py -> build/bdist.linux-x86_64/wheel/./limits creating build/bdist.linux-x86_64/wheel/limits/resources
    creating build/bdist.linux-x86_64/wheel/limits/resources/redis
    creating build/bdist.linux-x86_64/wheel/limits/resources/redis/lua_scripts copying build/lib/limits/resources/redis/lua_scripts/incr_expire.lua -> build/bdist.linux-x86_64/wheel/./limits/resources/redis/lua_scripts
    copying build/lib/limits/resources/redis/lua_scripts/sliding_window.lua -> build/bdist.linux-x86_64/wheel/./limits/resources/redis/lua_scripts
    copying build/lib/limits/resources/redis/lua_scripts/moving_window.lua -> build/bdist.linux-x86_64/wheel/./limits/resources/redis/lua_scripts
    copying build/lib/limits/resources/redis/lua_scripts/acquire_sliding_window.lua -> build/bdist.linux-x86_64/wheel/./limits/resources/redis/lua_scripts
    copying build/lib/limits/resources/redis/lua_scripts/clear_keys.lua -> build/bdist.linux-x86_64/wheel/./limits/resources/redis/lua_scripts
    copying build/lib/limits/resources/redis/lua_scripts/acquire_moving_window.lua -> build/bdist.linux-x86_64/wheel/./limits/resources/redis/lua_scripts
    copying build/lib/limits/version.py -> build/bdist.linux-x86_64/wheel/./limits copying build/lib/limits/errors.py -> build/bdist.linux-x86_64/wheel/./limits copying build/lib/limits/typing.py -> build/bdist.linux-x86_64/wheel/./limits copying build/lib/limits/py.typed -> build/bdist.linux-x86_64/wheel/./limits creating build/bdist.linux-x86_64/wheel/limits/storage
    copying build/lib/limits/storage/etcd.py -> build/bdist.linux-x86_64/wheel/./limits/storage
    copying build/lib/limits/storage/memory.py -> build/bdist.linux-x86_64/wheel/./limits/storage
    copying build/lib/limits/storage/mongodb.py -> build/bdist.linux-x86_64/wheel/./limits/storage
    copying build/lib/limits/storage/redis.py -> build/bdist.linux-x86_64/wheel/./limits/storage
    copying build/lib/limits/storage/memcached.py -> build/bdist.linux-x86_64/wheel/./limits/storage
    copying build/lib/limits/storage/redis_sentinel.py -> build/bdist.linux-x86_64/wheel/./limits/storage
    copying build/lib/limits/storage/redis_cluster.py -> build/bdist.linux-x86_64/wheel/./limits/storage
    copying build/lib/limits/storage/registry.py -> build/bdist.linux-x86_64/wheel/./limits/storage
    copying build/lib/limits/storage/base.py -> build/bdist.linux-x86_64/wheel/./limits/storage
    copying build/lib/limits/storage/__init__.py -> build/bdist.linux-x86_64/wheel/./limits/storage
    copying build/lib/limits/strategies.py -> build/bdist.linux-x86_64/wheel/./limits
    copying build/lib/limits/__init__.py -> build/bdist.linux-x86_64/wheel/./limits running install_egg_info
    Copying limits.egg-info to build/bdist.linux-x86_64/wheel/./limits-4.4.1.egg-info
    running install_scripts
    creating build/bdist.linux-x86_64/wheel/limits-4.4.1.dist-info/WHEEL
    creating '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_limits/.tmp-w9vxscdu/limits-4.4.1-py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it
    adding 'limits/__init__.py'
    adding 'limits/_version.py'
    adding 'limits/errors.py'
    adding 'limits/limits.py'
    adding 'limits/py.typed'
    adding 'limits/strategies.py'
    adding 'limits/typing.py'
    adding 'limits/util.py'
    adding 'limits/version.py'
    adding 'limits/aio/__init__.py'
    adding 'limits/aio/strategies.py'
    adding 'limits/aio/storage/__init__.py'
    adding 'limits/aio/storage/base.py'
    adding 'limits/aio/storage/etcd.py'
    adding 'limits/aio/storage/memcached.py'
    adding 'limits/aio/storage/memory.py'
    adding 'limits/aio/storage/mongodb.py'
    adding 'limits/aio/storage/redis/__init__.py'
    adding 'limits/aio/storage/redis/bridge.py'
    adding 'limits/aio/storage/redis/coredis.py'
    adding 'limits/aio/storage/redis/redispy.py'
    adding 'limits/aio/storage/redis/valkey.py'
    adding 'limits/resources/redis/lua_scripts/acquire_moving_window.lua'
    adding 'limits/resources/redis/lua_scripts/acquire_sliding_window.lua'
    adding 'limits/resources/redis/lua_scripts/clear_keys.lua'
    adding 'limits/resources/redis/lua_scripts/incr_expire.lua'
    adding 'limits/resources/redis/lua_scripts/moving_window.lua'
    adding 'limits/resources/redis/lua_scripts/sliding_window.lua'
    adding 'limits/storage/__init__.py'
    adding 'limits/storage/base.py'
    adding 'limits/storage/etcd.py'
    adding 'limits/storage/memcached.py'
    adding 'limits/storage/memory.py'
    adding 'limits/storage/mongodb.py'
    adding 'limits/storage/redis.py'
    adding 'limits/storage/redis_cluster.py'
    adding 'limits/storage/redis_sentinel.py'
    adding 'limits/storage/registry.py'
    adding 'limits-4.4.1.dist-info/LICENSE.txt'
    adding 'limits-4.4.1.dist-info/METADATA'
    adding 'limits-4.4.1.dist-info/WHEEL'
    adding 'limits-4.4.1.dist-info/top_level.txt'
    adding 'limits-4.4.1.dist-info/RECORD'
    removing build/bdist.linux-x86_64/wheel
    Successfully built limits-4.4.1-py3-none-any.whl
    I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.13 with "installer" module
    PYTHONPATH=. http_proxy='127.0.0.1:9' python3 -m sphinx -N -bhtml doc/source build/html
    Running Sphinx v8.1.3

    Configuration error:
    There is a programmable error in your configuration file:

    Traceback (most recent call last):
    File "/usr/lib/python3/dist-packages/sphinx/config.py", line 529, in eval_config_file
    exec(code, namespace) # NoQA: S102
    ~~~~^^^^^^^^^^^^^^^^^
    File "/<<PKGBUILDDIR>>/doc/source/conf.py", line 11, in <module>
    import limits
    File "/<<PKGBUILDDIR>>/limits/__init__.py", line 7, in <module>
    from . import _version, aio, storage, strategies
    File "/<<PKGBUILDDIR>>/limits/aio/__init__.py", line 3, in <module>
    from . import storage, strategies
    File "/<<PKGBUILDDIR>>/limits/aio/storage/__init__.py", line 8, in <module>
    from .base import MovingWindowSupport, SlidingWindowCounterSupport, Storage
    File "/<<PKGBUILDDIR>>/limits/aio/storage/base.py", line 6, in <module>
    from deprecated.sphinx import versionadded
    ModuleNotFoundError: No module named 'deprecated'

    make[1]: *** [debian/rules:13: override_dh_auto_build] Error 2
    make[1]: Leaving directory '/<<PKGBUILDDIR>>'
    make: *** [debian/rules:9: binary] Error 2
    dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2 --------------------------------------------------------------------------------

    The above is just how the build ends and not necessarily the most relevant part.
    If required, the full build log is available here:

    https://people.debian.org/~sanvila/build-logs/202504/

    About the archive rebuild: The build was made on virtual machines from AWS, using sbuild and a reduced chroot with only build-essential packages.

    If you could not reproduce the bug please contact me privately, as I
    am willing to provide ssh access to a virtual machine where the bug is
    fully reproducible.

    If this is really a bug in one of the build-depends, please use
    reassign and add an affects on src:python-limits, so that this is still
    visible in the BTS web page for this package.

    Thanks.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sergio Durigan Junior@21:1/5 to All on Sat Apr 12 23:10:02 2025
    Control: tag -1 pending

    Hello,

    Bug #1102771 in python-limits reported by you has been fixed in the
    Git repository and is awaiting an upload. You can see the commit
    message below and you can check the diff of the fix at:

    https://salsa.debian.org/python-team/packages/python-limits/-/commit/7abd875322b967c1996c7e5f168fc9217e208b53

    ------------------------------------------------------------------------ d/control: Add missing build-dep python3-deprecated (Closes: #1102771) ------------------------------------------------------------------------

    (this message was generated automatically)
    --
    Greetings

    https://bugs.debian.org/1102771

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Debian Bug Tracking System@21:1/5 to All on Sat Apr 12 23:10:02 2025
    Processing control commands:

    tag -1 pending
    Bug #1102771 [src:python-limits] python-limits: FTBFS: ModuleNotFoundError: No module named 'deprecated'
    Added tag(s) pending.

    --
    1102771: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1102771
    Debian Bug Tracking System
    Contact owner@bugs.debian.org with problems

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Debian Bug Tracking System@21:1/5 to All on Sat Apr 12 23:40:01 2025
    This is a multi-part message in MIME format...

    Your message dated Sat, 12 Apr 2025 21:38:10 +0000
    with message-id <E1u3iYE-00CK5O-0H@fasolo.debian.org>
    and subject line Bug#1102771: fixed in python-limits 4.4.1-2
    has caused the Debian Bug report #1102771,
    regarding python-limits: FTBFS: ModuleNotFoundError: No module named 'deprecated'
    to be marked as done.

    This means that you claim that the problem has been dealt with.
    If this is not the case it is now your responsibility to reopen the
    Bug report if necessary, and/or fix the problem forthwith.

    (NB: If you are a system administrator and have no idea what this
    message is talking about, this may indicate a serious mail system misconfiguration somewhere. Please contact owner@bugs.debian.org
    immediately.)


    --
    1102771: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1102771
    Debian Bug Tracking System
    Contact owner@bugs.debian.org with problems

    Received: (at submit) by bugs.debian.org; 12 Apr 2025 16:21:08 +0000 X-Spam-Checker-Version: SpamAssassin 3.4.6-bugs.debian.org_2005_01_02
    (2021-04-09) on buxtehude.debian.org
    X-Spam-Level:
    X-Spam-Status: No, score=-121.4 required=4.0 tests=ALL_TRUSTED,BAYES_00,
    BODY_INCLUDES_PACKAGE,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,
    DKIM_VALID_AU,DKIM_VALID_EF,FOURLA,FROMDEVELOPER,FVGT_m_MULTI_ODD,
    HAS_PACKAGE,USER_IN_DKIM_WELCOMELIST,USER_IN_DKIM_WHITELIST,
    X_DEBBUGS_CC autolearn=ham autolearn_force=no
    version=3.4.6-bugs.debian.org_2005_01_02
    X-Spam-Bayes: score:0.0000 Tokens: new, 70; hammy, 150; neutral, 331; spammy,
    0. spammytokens: hammytokens:0.000-+--python3, 0.000-+--trixie,
    0.000-+--pkgbuilddir, 0.000-+--PKGBUILDDIR, 0.000-+--sk:dh_auto Return-path: <sanvila@debian.org>
    Received: from muffat.debian.org ([2607:f8f0:614:1::1274:33]:35386)
    from