>>> lastversion: Building community/lastversion 3.5.7-r0 (using abuild 3.14.1-r1) started Sun, 10 Nov 2024 03:53:51 +0000
>>> lastversion: Validating /home/buildozer/aports/community/lastversion/APKBUILD...
>>> lastversion: Analyzing dependencies...
>>> lastversion: Installing for build: build-base py3-appdirs py3-beautifulsoup4 py3-cachecontrol py3-dateutil py3-distro py3-feedparser py3-filelock py3-packaging py3-requests py3-tqdm py3-urllib3 py3-yaml py3-gpep517 py3-setuptools py3-wheel py3-pytest
(1/69) Installing libbz2 (1.0.8-r6)
(2/69) Installing libffi (3.4.6-r0)
(3/69) Installing gdbm (1.24-r0)
(4/69) Installing xz-libs (5.6.3-r0)
(5/69) Installing mpdecimal (4.0.0-r0)
(6/69) Installing libpanelw (6.5_p20241006-r2)
(7/69) Installing sqlite-libs (3.47.0-r0)
(8/69) Installing python3 (3.12.7-r1)
(9/69) Installing python3-pycache-pyc0 (3.12.7-r1)
(10/69) Installing pyc (3.12.7-r1)
(11/69) Installing py3-appdirs-pyc (1.4.4-r8)
(12/69) Installing python3-pyc (3.12.7-r1)
(13/69) Installing py3-appdirs (1.4.4-r8)
(14/69) Installing py3-soupsieve (2.6-r0)
(15/69) Installing py3-soupsieve-pyc (2.6-r0)
(16/69) Installing py3-beautifulsoup4 (4.12.3-r3)
(17/69) Installing py3-beautifulsoup4-pyc (4.12.3-r3)
(18/69) Installing py3-msgpack (1.0.8-r1)
(19/69) Installing py3-msgpack-pyc (1.0.8-r1)
(20/69) Installing py3-certifi (2024.8.30-r0)
(21/69) Installing py3-certifi-pyc (2024.8.30-r0)
(22/69) Installing py3-charset-normalizer (3.4.0-r0)
(23/69) Installing py3-charset-normalizer-pyc (3.4.0-r0)
(24/69) Installing py3-idna (3.10-r0)
(25/69) Installing py3-idna-pyc (3.10-r0)
(26/69) Installing py3-urllib3 (1.26.20-r0)
(27/69) Installing py3-urllib3-pyc (1.26.20-r0)
(28/69) Installing py3-requests (2.32.3-r0)
(29/69) Installing py3-requests-pyc (2.32.3-r0)
(30/69) Installing py3-cachecontrol (0.14.1-r0)
(31/69) Installing py3-cachecontrol-pyc (0.14.1-r0)
(32/69) Installing py3-six (1.16.0-r9)
(33/69) Installing py3-six-pyc (1.16.0-r9)
(34/69) Installing py3-dateutil (2.9.0-r1)
(35/69) Installing py3-dateutil-pyc (2.9.0-r1)
(36/69) Installing py3-distro (1.9.0-r2)
(37/69) Installing py3-distro-pyc (1.9.0-r2)
(38/69) Installing py3-sgmllib3k (1.0.0-r11)
(39/69) Installing py3-sgmllib3k-pyc (1.0.0-r11)
(40/69) Installing py3-feedparser (6.0.11-r2)
(41/69) Installing py3-feedparser-pyc (6.0.11-r2)
(42/69) Installing py3-filelock (3.13.1-r1)
(43/69) Installing py3-filelock-pyc (3.13.1-r1)
(44/69) Installing py3-parsing (3.1.4-r0)
(45/69) Installing py3-parsing-pyc (3.1.4-r0)
(46/69) Installing py3-packaging (24.1-r0)
(47/69) Installing py3-packaging-pyc (24.1-r0)
(48/69) Installing py3-tqdm (4.67.0-r0)
(49/69) Installing py3-tqdm-pyc (4.67.0-r0)
(50/69) Installing yaml (0.2.5-r2)
(51/69) Installing py3-yaml (6.0.2-r0)
(52/69) Installing py3-yaml-pyc (6.0.2-r0)
(53/69) Installing py3-installer (0.7.0-r2)
(54/69) Installing py3-installer-pyc (0.7.0-r2)
(55/69) Installing py3-gpep517 (16-r0)
(56/69) Installing py3-gpep517-pyc (16-r0)
(57/69) Installing py3-setuptools (70.3.0-r0)
(58/69) Installing py3-setuptools-pyc (70.3.0-r0)
(59/69) Installing py3-wheel (0.43.0-r0)
(60/69) Installing py3-wheel-pyc (0.43.0-r0)
(61/69) Installing py3-iniconfig (2.0.0-r1)
(62/69) Installing py3-iniconfig-pyc (2.0.0-r1)
(63/69) Installing py3-pluggy (1.5.0-r0)
(64/69) Installing py3-pluggy-pyc (1.5.0-r0)
(65/69) Installing py3-py (1.11.0-r4)
(66/69) Installing py3-py-pyc (1.11.0-r4)
(67/69) Installing py3-pytest (8.3.3-r0)
(68/69) Installing py3-pytest-pyc (8.3.3-r0)
(69/69) Installing .makedepends-lastversion (20241110.035352)
Executing busybox-1.37.0-r6.trigger
OK: 306 MiB in 171 packages
>>> lastversion: Cleaning up srcdir
>>> lastversion: Cleaning up pkgdir
>>> lastversion: Cleaning up tmpdir
>>> lastversion: Fetching https://distfiles.alpinelinux.org/distfiles/edge/lastversion-3.5.7.tar.gz
>>> lastversion: Fetching https://distfiles.alpinelinux.org/distfiles/edge/lastversion-3.5.7.tar.gz
>>> lastversion: Checking sha512sums...
lastversion-3.5.7.tar.gz: OK
>>> lastversion: Unpacking /var/cache/distfiles/lastversion-3.5.7.tar.gz...
2024-11-10 03:53:53,884 gpep517 INFO Building wheel via backend setuptools.build_meta:__legacy__
2024-11-10 03:53:53,916 root INFO running bdist_wheel
2024-11-10 03:53:53,949 root INFO running build
2024-11-10 03:53:53,949 root INFO running build_py
2024-11-10 03:53:53,955 root INFO creating build
2024-11-10 03:53:53,955 root INFO creating build/lib
2024-11-10 03:53:53,955 root INFO creating build/lib/lastversion
2024-11-10 03:53:53,955 root INFO copying src/lastversion/utils.py -> build/lib/lastversion
2024-11-10 03:53:53,956 root INFO copying src/lastversion/__about__.py -> build/lib/lastversion
2024-11-10 03:53:53,956 root INFO copying src/lastversion/exceptions.py -> build/lib/lastversion
2024-11-10 03:53:53,956 root INFO copying src/lastversion/__main__.py -> build/lib/lastversion
2024-11-10 03:53:53,956 root INFO copying src/lastversion/lastversion.py -> build/lib/lastversion
2024-11-10 03:53:53,957 root INFO copying src/lastversion/spdx_id_to_rpmspec.py -> build/lib/lastversion
2024-11-10 03:53:53,957 root INFO copying src/lastversion/__init__.py -> build/lib/lastversion
2024-11-10 03:53:53,957 root INFO copying src/lastversion/argparse_version.py -> build/lib/lastversion
2024-11-10 03:53:53,958 root INFO copying src/lastversion/version.py -> build/lib/lastversion
2024-11-10 03:53:53,958 root INFO copying src/lastversion/holder_factory.py -> build/lib/lastversion
2024-11-10 03:53:53,959 root INFO creating build/lib/lastversion/repo_holders
2024-11-10 03:53:53,959 root INFO copying src/lastversion/repo_holders/gitlab.py -> build/lib/lastversion/repo_holders
2024-11-10 03:53:53,959 root INFO copying src/lastversion/repo_holders/base.py -> build/lib/lastversion/repo_holders
2024-11-10 03:53:53,959 root INFO copying src/lastversion/repo_holders/wikipedia.py -> build/lib/lastversion/repo_holders
2024-11-10 03:53:53,960 root INFO copying src/lastversion/repo_holders/feed.py -> build/lib/lastversion/repo_holders
2024-11-10 03:53:53,960 root INFO copying src/lastversion/repo_holders/github.py -> build/lib/lastversion/repo_holders
2024-11-10 03:53:53,960 root INFO copying src/lastversion/repo_holders/bibucket.py -> build/lib/lastversion/repo_holders
2024-11-10 03:53:53,961 root INFO copying src/lastversion/repo_holders/sourceforge.py -> build/lib/lastversion/repo_holders
2024-11-10 03:53:53,961 root INFO copying src/lastversion/repo_holders/mercurial.py -> build/lib/lastversion/repo_holders
2024-11-10 03:53:53,961 root INFO copying src/lastversion/repo_holders/__init__.py -> build/lib/lastversion/repo_holders
2024-11-10 03:53:53,961 root INFO copying src/lastversion/repo_holders/system.py -> build/lib/lastversion/repo_holders
2024-11-10 03:53:53,962 root INFO copying src/lastversion/repo_holders/wordpress.py -> build/lib/lastversion/repo_holders
2024-11-10 03:53:53,962 root INFO copying src/lastversion/repo_holders/pypi.py -> build/lib/lastversion/repo_holders
2024-11-10 03:53:53,962 root INFO copying src/lastversion/repo_holders/helmchat.py -> build/lib/lastversion/repo_holders
2024-11-10 03:53:53,963 root INFO copying src/lastversion/repo_holders/local.py -> build/lib/lastversion/repo_holders
2024-11-10 03:53:53,963 root INFO copying src/lastversion/repo_holders/test.py -> build/lib/lastversion/repo_holders
2024-11-10 03:53:53,963 root INFO copying src/lastversion/repo_holders/gitea.py -> build/lib/lastversion/repo_holders
2024-11-10 03:53:53,963 root INFO running egg_info
2024-11-10 03:53:53,964 root INFO creating src/lastversion.egg-info
2024-11-10 03:53:53,968 root INFO writing src/lastversion.egg-info/PKG-INFO
2024-11-10 03:53:53,975 root INFO writing dependency_links to src/lastversion.egg-info/dependency_links.txt
2024-11-10 03:53:53,976 root INFO writing entry points to src/lastversion.egg-info/entry_points.txt
2024-11-10 03:53:53,979 root INFO writing requirements to src/lastversion.egg-info/requires.txt
2024-11-10 03:53:53,979 root INFO writing top-level names to src/lastversion.egg-info/top_level.txt
2024-11-10 03:53:53,980 root INFO writing manifest file 'src/lastversion.egg-info/SOURCES.txt'
2024-11-10 03:53:53,985 root INFO reading manifest file 'src/lastversion.egg-info/SOURCES.txt'
2024-11-10 03:53:53,986 root INFO reading manifest template 'MANIFEST.in'
2024-11-10 03:53:53,986 root INFO adding license file 'LICENSE'
2024-11-10 03:53:53,987 root INFO writing manifest file 'src/lastversion.egg-info/SOURCES.txt'
2024-11-10 03:53:53,999 root INFO installing to build/bdist.linux-loongarch64/wheel
2024-11-10 03:53:53,999 root INFO running install
2024-11-10 03:53:54,013 root INFO running install_lib
2024-11-10 03:53:54,018 root INFO creating build/bdist.linux-loongarch64
2024-11-10 03:53:54,018 root INFO creating build/bdist.linux-loongarch64/wheel
2024-11-10 03:53:54,018 root INFO creating build/bdist.linux-loongarch64/wheel/lastversion
2024-11-10 03:53:54,018 root INFO creating build/bdist.linux-loongarch64/wheel/lastversion/repo_holders
2024-11-10 03:53:54,019 root INFO copying build/lib/lastversion/repo_holders/gitlab.py -> build/bdist.linux-loongarch64/wheel/lastversion/repo_holders
2024-11-10 03:53:54,019 root INFO copying build/lib/lastversion/repo_holders/base.py -> build/bdist.linux-loongarch64/wheel/lastversion/repo_holders
2024-11-10 03:53:54,019 root INFO copying build/lib/lastversion/repo_holders/wikipedia.py -> build/bdist.linux-loongarch64/wheel/lastversion/repo_holders
2024-11-10 03:53:54,019 root INFO copying build/lib/lastversion/repo_holders/feed.py -> build/bdist.linux-loongarch64/wheel/lastversion/repo_holders
2024-11-10 03:53:54,020 root INFO copying build/lib/lastversion/repo_holders/github.py -> build/bdist.linux-loongarch64/wheel/lastversion/repo_holders
2024-11-10 03:53:54,020 root INFO copying build/lib/lastversion/repo_holders/bibucket.py -> build/bdist.linux-loongarch64/wheel/lastversion/repo_holders
2024-11-10 03:53:54,020 root INFO copying build/lib/lastversion/repo_holders/sourceforge.py -> build/bdist.linux-loongarch64/wheel/lastversion/repo_holders
2024-11-10 03:53:54,021 root INFO copying build/lib/lastversion/repo_holders/mercurial.py -> build/bdist.linux-loongarch64/wheel/lastversion/repo_holders
2024-11-10 03:53:54,021 root INFO copying build/lib/lastversion/repo_holders/__init__.py -> build/bdist.linux-loongarch64/wheel/lastversion/repo_holders
2024-11-10 03:53:54,021 root INFO copying build/lib/lastversion/repo_holders/system.py -> build/bdist.linux-loongarch64/wheel/lastversion/repo_holders
2024-11-10 03:53:54,021 root INFO copying build/lib/lastversion/repo_holders/wordpress.py -> build/bdist.linux-loongarch64/wheel/lastversion/repo_holders
2024-11-10 03:53:54,022 root INFO copying build/lib/lastversion/repo_holders/pypi.py -> build/bdist.linux-loongarch64/wheel/lastversion/repo_holders
2024-11-10 03:53:54,022 root INFO copying build/lib/lastversion/repo_holders/helmchat.py -> build/bdist.linux-loongarch64/wheel/lastversion/repo_holders
2024-11-10 03:53:54,022 root INFO copying build/lib/lastversion/repo_holders/local.py -> build/bdist.linux-loongarch64/wheel/lastversion/repo_holders
2024-11-10 03:53:54,022 root INFO copying build/lib/lastversion/repo_holders/test.py -> build/bdist.linux-loongarch64/wheel/lastversion/repo_holders
2024-11-10 03:53:54,023 root INFO copying build/lib/lastversion/repo_holders/gitea.py -> build/bdist.linux-loongarch64/wheel/lastversion/repo_holders
2024-11-10 03:53:54,023 root INFO copying build/lib/lastversion/utils.py -> build/bdist.linux-loongarch64/wheel/lastversion
2024-11-10 03:53:54,023 root INFO copying build/lib/lastversion/__about__.py -> build/bdist.linux-loongarch64/wheel/lastversion
2024-11-10 03:53:54,024 root INFO copying build/lib/lastversion/exceptions.py -> build/bdist.linux-loongarch64/wheel/lastversion
2024-11-10 03:53:54,024 root INFO copying build/lib/lastversion/__main__.py -> build/bdist.linux-loongarch64/wheel/lastversion
2024-11-10 03:53:54,024 root INFO copying build/lib/lastversion/lastversion.py -> build/bdist.linux-loongarch64/wheel/lastversion
2024-11-10 03:53:54,024 root INFO copying build/lib/lastversion/spdx_id_to_rpmspec.py -> build/bdist.linux-loongarch64/wheel/lastversion
2024-11-10 03:53:54,025 root INFO copying build/lib/lastversion/__init__.py -> build/bdist.linux-loongarch64/wheel/lastversion
2024-11-10 03:53:54,025 root INFO copying build/lib/lastversion/argparse_version.py -> build/bdist.linux-loongarch64/wheel/lastversion
2024-11-10 03:53:54,025 root INFO copying build/lib/lastversion/version.py -> build/bdist.linux-loongarch64/wheel/lastversion
2024-11-10 03:53:54,025 root INFO copying build/lib/lastversion/holder_factory.py -> build/bdist.linux-loongarch64/wheel/lastversion
2024-11-10 03:53:54,026 root INFO running install_egg_info
2024-11-10 03:53:54,031 root INFO Copying src/lastversion.egg-info to build/bdist.linux-loongarch64/wheel/lastversion-3.5.7-py3.12.egg-info
2024-11-10 03:53:54,033 root INFO running install_scripts
2024-11-10 03:53:54,043 root INFO creating build/bdist.linux-loongarch64/wheel/lastversion-3.5.7.dist-info/WHEEL
2024-11-10 03:53:54,044 wheel INFO creating '/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.dist/.tmp-nz1d0bvj/lastversion-3.5.7-py3-none-any.whl' and adding 'build/bdist.linux-loongarch64/wheel' to it
2024-11-10 03:53:54,045 wheel INFO adding 'lastversion/__about__.py'
2024-11-10 03:53:54,045 wheel INFO adding 'lastversion/__init__.py'
2024-11-10 03:53:54,045 wheel INFO adding 'lastversion/__main__.py'
2024-11-10 03:53:54,045 wheel INFO adding 'lastversion/argparse_version.py'
2024-11-10 03:53:54,046 wheel INFO adding 'lastversion/exceptions.py'
2024-11-10 03:53:54,046 wheel INFO adding 'lastversion/holder_factory.py'
2024-11-10 03:53:54,046 wheel INFO adding 'lastversion/lastversion.py'
2024-11-10 03:53:54,047 wheel INFO adding 'lastversion/spdx_id_to_rpmspec.py'
2024-11-10 03:53:54,047 wheel INFO adding 'lastversion/utils.py'
2024-11-10 03:53:54,048 wheel INFO adding 'lastversion/version.py'
2024-11-10 03:53:54,048 wheel INFO adding 'lastversion/repo_holders/__init__.py'
2024-11-10 03:53:54,048 wheel INFO adding 'lastversion/repo_holders/base.py'
2024-11-10 03:53:54,049 wheel INFO adding 'lastversion/repo_holders/bibucket.py'
2024-11-10 03:53:54,049 wheel INFO adding 'lastversion/repo_holders/feed.py'
2024-11-10 03:53:54,049 wheel INFO adding 'lastversion/repo_holders/gitea.py'
2024-11-10 03:53:54,050 wheel INFO adding 'lastversion/repo_holders/github.py'
2024-11-10 03:53:54,050 wheel INFO adding 'lastversion/repo_holders/gitlab.py'
2024-11-10 03:53:54,051 wheel INFO adding 'lastversion/repo_holders/helmchat.py'
2024-11-10 03:53:54,051 wheel INFO adding 'lastversion/repo_holders/local.py'
2024-11-10 03:53:54,051 wheel INFO adding 'lastversion/repo_holders/mercurial.py'
2024-11-10 03:53:54,052 wheel INFO adding 'lastversion/repo_holders/pypi.py'
2024-11-10 03:53:54,052 wheel INFO adding 'lastversion/repo_holders/sourceforge.py'
2024-11-10 03:53:54,052 wheel INFO adding 'lastversion/repo_holders/system.py'
2024-11-10 03:53:54,052 wheel INFO adding 'lastversion/repo_holders/test.py'
2024-11-10 03:53:54,053 wheel INFO adding 'lastversion/repo_holders/wikipedia.py'
2024-11-10 03:53:54,053 wheel INFO adding 'lastversion/repo_holders/wordpress.py'
2024-11-10 03:53:54,053 wheel INFO adding 'lastversion-3.5.7.dist-info/LICENSE'
2024-11-10 03:53:54,054 wheel INFO adding 'lastversion-3.5.7.dist-info/METADATA'
2024-11-10 03:53:54,054 wheel INFO adding 'lastversion-3.5.7.dist-info/WHEEL'
2024-11-10 03:53:54,054 wheel INFO adding 'lastversion-3.5.7.dist-info/entry_points.txt'
2024-11-10 03:53:54,055 wheel INFO adding 'lastversion-3.5.7.dist-info/top_level.txt'
2024-11-10 03:53:54,055 wheel INFO adding 'lastversion-3.5.7.dist-info/RECORD'
2024-11-10 03:53:54,055 root INFO removing build/bdist.linux-loongarch64/wheel
2024-11-10 03:53:54,057 gpep517 INFO The backend produced .dist/lastversion-3.5.7-py3-none-any.whl
lastversion-3.5.7-py3-none-any.whl
============================= test session starts ==============================
platform linux -- Python 3.12.7, pytest-8.3.3, pluggy-1.5.0
rootdir: /home/buildozer/aports/community/lastversion/src/lastversion-3.5.7
collected 21 items

tests/test_cli.py ......FFFF                                             [ 47%]
tests/test_gitea.py .                                                    [ 52%]
tests/test_gitlab.py ....                                                [ 71%]
tests/test_hg.py F                                                       [ 76%]
tests/test_pypi.py ..                                                    [ 85%]
tests/test_sf.py .                                                       [ 90%]
tests/test_wiki.py ..                                                    [100%]

=================================== FAILURES ===================================
________________________ test_cli_gt_first_arg_is_repo _________________________

capsys = <_pytest.capture.CaptureFixture object at 0x7fffef181790>

    def test_cli_gt_first_arg_is_repo(capsys):
        """First repo is arg having a number."""
        with captured_exit_code() as get_exit_code:
>           main(["https://github.com/Pisex/cs2-bans", "-gt", "2.5.2"])

/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py:102: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

argv = ['https://github.com/Pisex/cs2-bans', '-gt', '2.5.2']

    def main(argv=None):
        """
        The entrypoint to CLI app.
    
        Args:
            argv: List of arguments, helps test CLI without resorting to subprocess module.
        """
        # ANSI escape code for starting bold text
        start_bold = "\033[1m"
        # ANSI escape code for ending the formatting (resets to normal text)
        end_bold = "\033[0m"
    
        epilog = "\n---\n"
        epilog += f"{start_bold}Sponsored Message: Check out the GetPageSpeed RPM "
        epilog += "repository at https://nginx-extras.getpagespeed.com/ for NGINX "
        epilog += "modules and performance tools. Enhance your server performance "
        epilog += f"today!{end_bold}"
        epilog += "\n---\n"
    
        if "GITHUB_API_TOKEN" not in os.environ and "GITHUB_TOKEN" not in os.environ:
            epilog += TOKEN_PRO_TIP
        parser = argparse.ArgumentParser(
            description="Find the latest software release.",
            epilog=epilog,
            prog="lastversion",
        )
        parser.add_argument(
            "action",
            nargs="?",
            default="get",
            help="Action to run. Default: get",
            choices=[
                "get",
                "download",
                "extract",
                "unzip",
                "test",
                "format",
                "install",
                "update-spec",
            ],
        )
        parser.add_argument(
            "repo",
            metavar="<repo URL or string>",
            help="Repository in format owner/name or any URL that belongs to it, or a version string",
        )
        # affects what is considered last release
        parser.add_argument(
            "--pre",
            dest="pre",
            action="store_true",
            help="Include pre-releases in potential versions",
        )
        parser.add_argument(
            "--formal",
            dest="formal",
            action="store_true",
            help="Include only formally tagged versions",
        )
        parser.add_argument(
            "--sem",
            dest="sem",
            choices=["major", "minor", "patch", "any"],
            help="Semantic versioning level base to print or compare against",
        )
        parser.add_argument(
            "-v",
            "--verbose",
            action="count",
            default=0,
            help="Will give you an idea of what is happening under the hood, "
            "-vv to increase verbosity level",
        )
        # no --download = False, --download filename.tar, --download = None
        parser.add_argument(
            "-d",
            "-o",
            "--download",
            "--output",
            dest="download",
            nargs="?",
            default=False,
            const=None,
            metavar="FILENAME",
            help="Download with custom filename",
        )
        # how / which data of last release we want to present
        # assets will give download urls for assets if available and sources archive otherwise
        # sources will give download urls for sources always
        # json always includes "version", "tag_name" etc. + whichever json data was
        # used to satisfy lastversion
        parser.add_argument(
            "--format",
            choices=["version", "assets", "source", "json", "tag"],
            help="Output format",
        )
        parser.add_argument(
            "--assets",
            dest="assets",
            action="store_true",
            help="Returns assets download URLs for last release",
        )
        parser.add_argument(
            "--source",
            dest="source",
            action="store_true",
            help="Returns only source URL for last release",
        )
        parser.add_argument(
            "-gt",
            "--newer-than",
            type=check_version,
            metavar="VER",
            help="Output only if last version is newer than given version",
        )
        parser.add_argument(
            "-b",
            "--major",
            "--branch",
            metavar="MAJOR",
            help="Only consider releases of a specific major version, e.g. 2.1.x",
        )
        parser.add_argument(
            "--only",
            metavar="REGEX",
            help="Only consider releases containing this text. "
            "Useful for repos with multiple projects inside",
        )
        parser.add_argument(
            "--exclude",
            metavar="REGEX",
            help="Only consider releases NOT containing this text. "
            "Useful for repos with multiple projects inside",
        )
        parser.add_argument(
            "--filter",
            metavar="REGEX",
            help="Filters --assets result by a regular " "expression",
        )
        parser.add_argument(
            "--having-asset",
            metavar="ASSET",
            help="Only consider releases with this asset",
            nargs="?",
            const=True,
        )
        parser.add_argument(
            "-su",
            "--shorter-urls",
            dest="shorter_urls",
            action="store_true",
            help="A tiny bit shorter URLs produced",
        )
        parser.add_argument(
            "--even",
            dest="even",
            action="store_true",
            help="Only even versions like 1.[2].x, or 3.[6].x are considered as stable",
        )
        parser.add_argument(
            "--at",
            dest="at",
            help="If the repo argument is one word, specifies where to look up the "
            "project. The default is via internal lookup or GitHub Search",
            choices=HolderFactory.HOLDERS.keys(),
        )
        parser.add_argument(
            "-y",
            "--assumeyes",
            dest="assumeyes",
            action="store_true",
            help="Automatically answer yes for all questions",
        )
        parser.add_argument(
            "--no-cache",
            dest="no_cache",
            action="store_true",
            help="Do not use cache for HTTP requests",
        )
        parser.add_argument("--version", action=VersionAction)
        parser.set_defaults(
            validate=True,
            verbose=False,
            format="version",
            pre=False,
            formal=False,
            assets=False,
            newer_than=False,
            filter=False,
            shorter_urls=False,
            major=None,
            assumeyes=False,
            at=None,
            having_asset=None,
            even=False,
        )
        args = parser.parse_args(argv)
    
        BaseProjectHolder.CACHE_DISABLED = args.no_cache
    
        if args.repo == "self":
            args.repo = __self__
    
        # "expand" repo:1.2 as repo --branch 1.2
        # noinspection HttpUrlsUsage
        if ":" in args.repo and not (
            args.repo.startswith(("https://", "http://")) and args.repo.count(":") == 1
        ):
            # right split ':' once only to preserve it in protocol of URLs
            # https://github.com/repo/owner:2.1
            repo_args = args.repo.rsplit(":", 1)
            args.repo = repo_args[0]
            args.major = repo_args[1]
    
        # instead of using root logger, we use
        logger = logging.getLogger("lastversion")
        # create console handler and set level to debug
        ch = logging.StreamHandler()
        # create formatter
        fmt = (
            "%(name)s - %(levelname)s - %(message)s"
            if args.verbose
            else "%(levelname)s: %(message)s"
        )
        formatter = logging.Formatter(fmt)
        # add formatter to ch
        ch.setFormatter(formatter)
        # add ch to logger
        logger.addHandler(ch)
    
        if args.verbose:
            logger.setLevel(logging.DEBUG)
            log.info("Verbose %s level output.", args.verbose)
            if args.verbose >= 2:
                cachecontrol_logger = logging.getLogger("cachecontrol")
                cachecontrol_logger.removeHandler(logging.NullHandler())
                cachecontrol_logger.addHandler(ch)
                cachecontrol_logger.setLevel(logging.DEBUG)
    
        if args.assets:
            args.format = "assets"
    
        if args.source:
            args.format = "source"
    
        if args.filter:
            args.filter = re.compile(args.filter)
    
        if args.action in ["test", "format"]:
            v = parse_version(args.repo)
            if not v:
                log.critical("Failed to parse as a valid version")
                sys.exit(1)
            else:
                # extract the desired print base
                v = v.sem_extract_base(args.sem)
                if args.action == "test":
                    print(f"Parsed as: {v}")
                    print(f"Stable: {not v.is_prerelease}")
                else:
                    print(v)
                return sys.exit(0)
    
        if args.action == "install":
            # we can only install assets
            args.format = "json"
            if args.having_asset is None:
                args.having_asset = r"~\.(AppImage|rpm)$"
                try:
                    import apt
    
                    args.having_asset = r"~\.(AppImage|deb)$"
                except ImportError:
                    pass
    
        if args.repo.endswith(".spec"):
            args.action = "update-spec"
            args.format = "dict"
    
        if not args.sem:
            if args.action == "update-spec":
                args.sem = "minor"
            else:
                args.sem = "any"
        # imply source download, unless --assets specified
        # --download is legacy flag to specify download action or name of desired download file
        # --download == None indicates download intent where filename is based on upstream
        if args.action == "download" and args.download is False:
            args.download = None
    
        if args.download is not False:
            args.action = "download"
            if args.format != "assets":
                args.format = "source"
    
        if args.action in ["extract", "unzip"] and args.format != "assets":
            args.format = "source"
    
        if args.newer_than:
            base_compare = parse_version(args.repo)
            if base_compare:
                print(max([args.newer_than, base_compare]))
                return sys.exit(2 if base_compare <= args.newer_than else 0)
    
        # other action are either getting release or doing something with release (extend get action)
        try:
            res = latest(
                args.repo,
                args.format,
                args.pre,
                args.filter,
                args.shorter_urls,
                args.major,
                args.only,
                args.at,
                having_asset=args.having_asset,
                exclude=args.exclude,
                even=args.even,
                formal=args.formal,
            )
        except (ApiCredentialsError, BadProjectError) as error:
            log.critical(str(error))
            if (
                isinstance(error, ApiCredentialsError)
                and "GITHUB_API_TOKEN" not in os.environ
                and "GITHUB_TOKEN" not in os.environ
            ):
                log.critical(TOKEN_PRO_TIP)
            sys.exit(4)
    
>       if res:
E       UnboundLocalError: cannot access local variable 'res' where it is not associated with a value

/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py:884: UnboundLocalError
----------------------------- Captured stderr call -----------------------------
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1079s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 102, in test_cli_gt_first_arg_is_repo
    main(["https://github.com/Pisex/cs2-bans", "-gt", "2.5.2"])
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 875, in main
    log.critical(str(error))
Message: "Exceeded GitHub API rate limits. Giving up due to high expected wait 1079s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)"
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1079s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 102, in test_cli_gt_first_arg_is_repo
    main(["https://github.com/Pisex/cs2-bans", "-gt", "2.5.2"])
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 875, in main
    log.critical(str(error))
Message: "Exceeded GitHub API rate limits. Giving up due to high expected wait 1079s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)"
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1079s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 102, in test_cli_gt_first_arg_is_repo
    main(["https://github.com/Pisex/cs2-bans", "-gt", "2.5.2"])
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 875, in main
    log.critical(str(error))
Message: "Exceeded GitHub API rate limits. Giving up due to high expected wait 1079s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)"
Arguments: ()
CRITICAL: Exceeded GitHub API rate limits. Giving up due to high expected wait 1079s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1079s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 102, in test_cli_gt_first_arg_is_repo
    main(["https://github.com/Pisex/cs2-bans", "-gt", "2.5.2"])
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 881, in main
    log.critical(TOKEN_PRO_TIP)
Message: 'ProTip: set GITHUB_API_TOKEN env var as per https://github.com/dvershinin/lastversion#tips'
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1079s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 102, in test_cli_gt_first_arg_is_repo
    main(["https://github.com/Pisex/cs2-bans", "-gt", "2.5.2"])
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 881, in main
    log.critical(TOKEN_PRO_TIP)
Message: 'ProTip: set GITHUB_API_TOKEN env var as per https://github.com/dvershinin/lastversion#tips'
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1079s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 102, in test_cli_gt_first_arg_is_repo
    main(["https://github.com/Pisex/cs2-bans", "-gt", "2.5.2"])
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 881, in main
    log.critical(TOKEN_PRO_TIP)
Message: 'ProTip: set GITHUB_API_TOKEN env var as per https://github.com/dvershinin/lastversion#tips'
Arguments: ()
CRITICAL: ProTip: set GITHUB_API_TOKEN env var as per https://github.com/dvershinin/lastversion#tips
------------------------------ Captured log call -------------------------------
CRITICAL lastversion.lastversion:lastversion.py:875 Exceeded GitHub API rate limits. Giving up due to high expected wait 1079s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)
CRITICAL lastversion.lastversion:lastversion.py:881 ProTip: set GITHUB_API_TOKEN env var as per https://github.com/dvershinin/lastversion#tips
_________________________ test_unzip_osx_bundle_strip __________________________

capsys = <_pytest.capture.CaptureFixture object at 0x7fffee60b440>

    def test_unzip_osx_bundle_strip(capsys):  # pylint: disable=unused-argument
        """Test that ZIP files with single top level directory are stripped."""
        with captured_exit_code() as get_exit_code:
            with tempfile.TemporaryDirectory() as tmp_dir_name:
                # Set the temp directory as the current working directory
                os.chdir(tmp_dir_name)
>               main(
                    ["--assets", "unzip", "lastversion-test-repos/MinimalMIDIPlayer-strip"]
                )

/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py:116: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

argv = ['--assets', 'unzip', 'lastversion-test-repos/MinimalMIDIPlayer-strip']

    def main(argv=None):
        """
        The entrypoint to CLI app.
    
        Args:
            argv: List of arguments, helps test CLI without resorting to subprocess module.
        """
        # ANSI escape code for starting bold text
        start_bold = "\033[1m"
        # ANSI escape code for ending the formatting (resets to normal text)
        end_bold = "\033[0m"
    
        epilog = "\n---\n"
        epilog += f"{start_bold}Sponsored Message: Check out the GetPageSpeed RPM "
        epilog += "repository at https://nginx-extras.getpagespeed.com/ for NGINX "
        epilog += "modules and performance tools. Enhance your server performance "
        epilog += f"today!{end_bold}"
        epilog += "\n---\n"
    
        if "GITHUB_API_TOKEN" not in os.environ and "GITHUB_TOKEN" not in os.environ:
            epilog += TOKEN_PRO_TIP
        parser = argparse.ArgumentParser(
            description="Find the latest software release.",
            epilog=epilog,
            prog="lastversion",
        )
        parser.add_argument(
            "action",
            nargs="?",
            default="get",
            help="Action to run. Default: get",
            choices=[
                "get",
                "download",
                "extract",
                "unzip",
                "test",
                "format",
                "install",
                "update-spec",
            ],
        )
        parser.add_argument(
            "repo",
            metavar="<repo URL or string>",
            help="Repository in format owner/name or any URL that belongs to it, or a version string",
        )
        # affects what is considered last release
        parser.add_argument(
            "--pre",
            dest="pre",
            action="store_true",
            help="Include pre-releases in potential versions",
        )
        parser.add_argument(
            "--formal",
            dest="formal",
            action="store_true",
            help="Include only formally tagged versions",
        )
        parser.add_argument(
            "--sem",
            dest="sem",
            choices=["major", "minor", "patch", "any"],
            help="Semantic versioning level base to print or compare against",
        )
        parser.add_argument(
            "-v",
            "--verbose",
            action="count",
            default=0,
            help="Will give you an idea of what is happening under the hood, "
            "-vv to increase verbosity level",
        )
        # no --download = False, --download filename.tar, --download = None
        parser.add_argument(
            "-d",
            "-o",
            "--download",
            "--output",
            dest="download",
            nargs="?",
            default=False,
            const=None,
            metavar="FILENAME",
            help="Download with custom filename",
        )
        # how / which data of last release we want to present
        # assets will give download urls for assets if available and sources archive otherwise
        # sources will give download urls for sources always
        # json always includes "version", "tag_name" etc. + whichever json data was
        # used to satisfy lastversion
        parser.add_argument(
            "--format",
            choices=["version", "assets", "source", "json", "tag"],
            help="Output format",
        )
        parser.add_argument(
            "--assets",
            dest="assets",
            action="store_true",
            help="Returns assets download URLs for last release",
        )
        parser.add_argument(
            "--source",
            dest="source",
            action="store_true",
            help="Returns only source URL for last release",
        )
        parser.add_argument(
            "-gt",
            "--newer-than",
            type=check_version,
            metavar="VER",
            help="Output only if last version is newer than given version",
        )
        parser.add_argument(
            "-b",
            "--major",
            "--branch",
            metavar="MAJOR",
            help="Only consider releases of a specific major version, e.g. 2.1.x",
        )
        parser.add_argument(
            "--only",
            metavar="REGEX",
            help="Only consider releases containing this text. "
            "Useful for repos with multiple projects inside",
        )
        parser.add_argument(
            "--exclude",
            metavar="REGEX",
            help="Only consider releases NOT containing this text. "
            "Useful for repos with multiple projects inside",
        )
        parser.add_argument(
            "--filter",
            metavar="REGEX",
            help="Filters --assets result by a regular " "expression",
        )
        parser.add_argument(
            "--having-asset",
            metavar="ASSET",
            help="Only consider releases with this asset",
            nargs="?",
            const=True,
        )
        parser.add_argument(
            "-su",
            "--shorter-urls",
            dest="shorter_urls",
            action="store_true",
            help="A tiny bit shorter URLs produced",
        )
        parser.add_argument(
            "--even",
            dest="even",
            action="store_true",
            help="Only even versions like 1.[2].x, or 3.[6].x are considered as stable",
        )
        parser.add_argument(
            "--at",
            dest="at",
            help="If the repo argument is one word, specifies where to look up the "
            "project. The default is via internal lookup or GitHub Search",
            choices=HolderFactory.HOLDERS.keys(),
        )
        parser.add_argument(
            "-y",
            "--assumeyes",
            dest="assumeyes",
            action="store_true",
            help="Automatically answer yes for all questions",
        )
        parser.add_argument(
            "--no-cache",
            dest="no_cache",
            action="store_true",
            help="Do not use cache for HTTP requests",
        )
        parser.add_argument("--version", action=VersionAction)
        parser.set_defaults(
            validate=True,
            verbose=False,
            format="version",
            pre=False,
            formal=False,
            assets=False,
            newer_than=False,
            filter=False,
            shorter_urls=False,
            major=None,
            assumeyes=False,
            at=None,
            having_asset=None,
            even=False,
        )
        args = parser.parse_args(argv)
    
        BaseProjectHolder.CACHE_DISABLED = args.no_cache
    
        if args.repo == "self":
            args.repo = __self__
    
        # "expand" repo:1.2 as repo --branch 1.2
        # noinspection HttpUrlsUsage
        if ":" in args.repo and not (
            args.repo.startswith(("https://", "http://")) and args.repo.count(":") == 1
        ):
            # right split ':' once only to preserve it in protocol of URLs
            # https://github.com/repo/owner:2.1
            repo_args = args.repo.rsplit(":", 1)
            args.repo = repo_args[0]
            args.major = repo_args[1]
    
        # instead of using root logger, we use
        logger = logging.getLogger("lastversion")
        # create console handler and set level to debug
        ch = logging.StreamHandler()
        # create formatter
        fmt = (
            "%(name)s - %(levelname)s - %(message)s"
            if args.verbose
            else "%(levelname)s: %(message)s"
        )
        formatter = logging.Formatter(fmt)
        # add formatter to ch
        ch.setFormatter(formatter)
        # add ch to logger
        logger.addHandler(ch)
    
        if args.verbose:
            logger.setLevel(logging.DEBUG)
            log.info("Verbose %s level output.", args.verbose)
            if args.verbose >= 2:
                cachecontrol_logger = logging.getLogger("cachecontrol")
                cachecontrol_logger.removeHandler(logging.NullHandler())
                cachecontrol_logger.addHandler(ch)
                cachecontrol_logger.setLevel(logging.DEBUG)
    
        if args.assets:
            args.format = "assets"
    
        if args.source:
            args.format = "source"
    
        if args.filter:
            args.filter = re.compile(args.filter)
    
        if args.action in ["test", "format"]:
            v = parse_version(args.repo)
            if not v:
                log.critical("Failed to parse as a valid version")
                sys.exit(1)
            else:
                # extract the desired print base
                v = v.sem_extract_base(args.sem)
                if args.action == "test":
                    print(f"Parsed as: {v}")
                    print(f"Stable: {not v.is_prerelease}")
                else:
                    print(v)
                return sys.exit(0)
    
        if args.action == "install":
            # we can only install assets
            args.format = "json"
            if args.having_asset is None:
                args.having_asset = r"~\.(AppImage|rpm)$"
                try:
                    import apt
    
                    args.having_asset = r"~\.(AppImage|deb)$"
                except ImportError:
                    pass
    
        if args.repo.endswith(".spec"):
            args.action = "update-spec"
            args.format = "dict"
    
        if not args.sem:
            if args.action == "update-spec":
                args.sem = "minor"
            else:
                args.sem = "any"
        # imply source download, unless --assets specified
        # --download is legacy flag to specify download action or name of desired download file
        # --download == None indicates download intent where filename is based on upstream
        if args.action == "download" and args.download is False:
            args.download = None
    
        if args.download is not False:
            args.action = "download"
            if args.format != "assets":
                args.format = "source"
    
        if args.action in ["extract", "unzip"] and args.format != "assets":
            args.format = "source"
    
        if args.newer_than:
            base_compare = parse_version(args.repo)
            if base_compare:
                print(max([args.newer_than, base_compare]))
                return sys.exit(2 if base_compare <= args.newer_than else 0)
    
        # other action are either getting release or doing something with release (extend get action)
        try:
            res = latest(
                args.repo,
                args.format,
                args.pre,
                args.filter,
                args.shorter_urls,
                args.major,
                args.only,
                args.at,
                having_asset=args.having_asset,
                exclude=args.exclude,
                even=args.even,
                formal=args.formal,
            )
        except (ApiCredentialsError, BadProjectError) as error:
            log.critical(str(error))
            if (
                isinstance(error, ApiCredentialsError)
                and "GITHUB_API_TOKEN" not in os.environ
                and "GITHUB_TOKEN" not in os.environ
            ):
                log.critical(TOKEN_PRO_TIP)
            sys.exit(4)
    
>       if res:
E       UnboundLocalError: cannot access local variable 'res' where it is not associated with a value

/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py:884: UnboundLocalError
----------------------------- Captured stderr call -----------------------------
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1078s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 116, in test_unzip_osx_bundle_strip
    main(
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 875, in main
    log.critical(str(error))
Message: "Exceeded GitHub API rate limits. Giving up due to high expected wait 1078s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)"
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1078s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 116, in test_unzip_osx_bundle_strip
    main(
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 875, in main
    log.critical(str(error))
Message: "Exceeded GitHub API rate limits. Giving up due to high expected wait 1078s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)"
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1078s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 116, in test_unzip_osx_bundle_strip
    main(
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 875, in main
    log.critical(str(error))
Message: "Exceeded GitHub API rate limits. Giving up due to high expected wait 1078s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)"
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1078s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 116, in test_unzip_osx_bundle_strip
    main(
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 875, in main
    log.critical(str(error))
Message: "Exceeded GitHub API rate limits. Giving up due to high expected wait 1078s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)"
Arguments: ()
CRITICAL: Exceeded GitHub API rate limits. Giving up due to high expected wait 1078s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1078s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 116, in test_unzip_osx_bundle_strip
    main(
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 881, in main
    log.critical(TOKEN_PRO_TIP)
Message: 'ProTip: set GITHUB_API_TOKEN env var as per https://github.com/dvershinin/lastversion#tips'
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1078s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 116, in test_unzip_osx_bundle_strip
    main(
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 881, in main
    log.critical(TOKEN_PRO_TIP)
Message: 'ProTip: set GITHUB_API_TOKEN env var as per https://github.com/dvershinin/lastversion#tips'
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1078s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 116, in test_unzip_osx_bundle_strip
    main(
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 881, in main
    log.critical(TOKEN_PRO_TIP)
Message: 'ProTip: set GITHUB_API_TOKEN env var as per https://github.com/dvershinin/lastversion#tips'
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1078s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 116, in test_unzip_osx_bundle_strip
    main(
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 881, in main
    log.critical(TOKEN_PRO_TIP)
Message: 'ProTip: set GITHUB_API_TOKEN env var as per https://github.com/dvershinin/lastversion#tips'
Arguments: ()
CRITICAL: ProTip: set GITHUB_API_TOKEN env var as per https://github.com/dvershinin/lastversion#tips
------------------------------ Captured log call -------------------------------
CRITICAL lastversion.lastversion:lastversion.py:875 Exceeded GitHub API rate limits. Giving up due to high expected wait 1078s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)
CRITICAL lastversion.lastversion:lastversion.py:881 ProTip: set GITHUB_API_TOKEN env var as per https://github.com/dvershinin/lastversion#tips
____________________________ test_unzip_osx_bundle _____________________________

capsys = <_pytest.capture.CaptureFixture object at 0x7fffedee20f0>

    def test_unzip_osx_bundle(capsys):  # pylint: disable=unused-argument
        """Test that OSX bundles are unzipped and .app is not stripped."""
        with captured_exit_code() as get_exit_code:
            with tempfile.TemporaryDirectory() as tmp_dir_name:
                # Set the temp directory as the current working directory
                os.chdir(tmp_dir_name)
>               main(["--assets", "unzip", "lastversion-test-repos/MinimalMIDIPlayer"])

/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py:134: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

argv = ['--assets', 'unzip', 'lastversion-test-repos/MinimalMIDIPlayer']

    def main(argv=None):
        """
        The entrypoint to CLI app.
    
        Args:
            argv: List of arguments, helps test CLI without resorting to subprocess module.
        """
        # ANSI escape code for starting bold text
        start_bold = "\033[1m"
        # ANSI escape code for ending the formatting (resets to normal text)
        end_bold = "\033[0m"
    
        epilog = "\n---\n"
        epilog += f"{start_bold}Sponsored Message: Check out the GetPageSpeed RPM "
        epilog += "repository at https://nginx-extras.getpagespeed.com/ for NGINX "
        epilog += "modules and performance tools. Enhance your server performance "
        epilog += f"today!{end_bold}"
        epilog += "\n---\n"
    
        if "GITHUB_API_TOKEN" not in os.environ and "GITHUB_TOKEN" not in os.environ:
            epilog += TOKEN_PRO_TIP
        parser = argparse.ArgumentParser(
            description="Find the latest software release.",
            epilog=epilog,
            prog="lastversion",
        )
        parser.add_argument(
            "action",
            nargs="?",
            default="get",
            help="Action to run. Default: get",
            choices=[
                "get",
                "download",
                "extract",
                "unzip",
                "test",
                "format",
                "install",
                "update-spec",
            ],
        )
        parser.add_argument(
            "repo",
            metavar="<repo URL or string>",
            help="Repository in format owner/name or any URL that belongs to it, or a version string",
        )
        # affects what is considered last release
        parser.add_argument(
            "--pre",
            dest="pre",
            action="store_true",
            help="Include pre-releases in potential versions",
        )
        parser.add_argument(
            "--formal",
            dest="formal",
            action="store_true",
            help="Include only formally tagged versions",
        )
        parser.add_argument(
            "--sem",
            dest="sem",
            choices=["major", "minor", "patch", "any"],
            help="Semantic versioning level base to print or compare against",
        )
        parser.add_argument(
            "-v",
            "--verbose",
            action="count",
            default=0,
            help="Will give you an idea of what is happening under the hood, "
            "-vv to increase verbosity level",
        )
        # no --download = False, --download filename.tar, --download = None
        parser.add_argument(
            "-d",
            "-o",
            "--download",
            "--output",
            dest="download",
            nargs="?",
            default=False,
            const=None,
            metavar="FILENAME",
            help="Download with custom filename",
        )
        # how / which data of last release we want to present
        # assets will give download urls for assets if available and sources archive otherwise
        # sources will give download urls for sources always
        # json always includes "version", "tag_name" etc. + whichever json data was
        # used to satisfy lastversion
        parser.add_argument(
            "--format",
            choices=["version", "assets", "source", "json", "tag"],
            help="Output format",
        )
        parser.add_argument(
            "--assets",
            dest="assets",
            action="store_true",
            help="Returns assets download URLs for last release",
        )
        parser.add_argument(
            "--source",
            dest="source",
            action="store_true",
            help="Returns only source URL for last release",
        )
        parser.add_argument(
            "-gt",
            "--newer-than",
            type=check_version,
            metavar="VER",
            help="Output only if last version is newer than given version",
        )
        parser.add_argument(
            "-b",
            "--major",
            "--branch",
            metavar="MAJOR",
            help="Only consider releases of a specific major version, e.g. 2.1.x",
        )
        parser.add_argument(
            "--only",
            metavar="REGEX",
            help="Only consider releases containing this text. "
            "Useful for repos with multiple projects inside",
        )
        parser.add_argument(
            "--exclude",
            metavar="REGEX",
            help="Only consider releases NOT containing this text. "
            "Useful for repos with multiple projects inside",
        )
        parser.add_argument(
            "--filter",
            metavar="REGEX",
            help="Filters --assets result by a regular " "expression",
        )
        parser.add_argument(
            "--having-asset",
            metavar="ASSET",
            help="Only consider releases with this asset",
            nargs="?",
            const=True,
        )
        parser.add_argument(
            "-su",
            "--shorter-urls",
            dest="shorter_urls",
            action="store_true",
            help="A tiny bit shorter URLs produced",
        )
        parser.add_argument(
            "--even",
            dest="even",
            action="store_true",
            help="Only even versions like 1.[2].x, or 3.[6].x are considered as stable",
        )
        parser.add_argument(
            "--at",
            dest="at",
            help="If the repo argument is one word, specifies where to look up the "
            "project. The default is via internal lookup or GitHub Search",
            choices=HolderFactory.HOLDERS.keys(),
        )
        parser.add_argument(
            "-y",
            "--assumeyes",
            dest="assumeyes",
            action="store_true",
            help="Automatically answer yes for all questions",
        )
        parser.add_argument(
            "--no-cache",
            dest="no_cache",
            action="store_true",
            help="Do not use cache for HTTP requests",
        )
        parser.add_argument("--version", action=VersionAction)
        parser.set_defaults(
            validate=True,
            verbose=False,
            format="version",
            pre=False,
            formal=False,
            assets=False,
            newer_than=False,
            filter=False,
            shorter_urls=False,
            major=None,
            assumeyes=False,
            at=None,
            having_asset=None,
            even=False,
        )
        args = parser.parse_args(argv)
    
        BaseProjectHolder.CACHE_DISABLED = args.no_cache
    
        if args.repo == "self":
            args.repo = __self__
    
        # "expand" repo:1.2 as repo --branch 1.2
        # noinspection HttpUrlsUsage
        if ":" in args.repo and not (
            args.repo.startswith(("https://", "http://")) and args.repo.count(":") == 1
        ):
            # right split ':' once only to preserve it in protocol of URLs
            # https://github.com/repo/owner:2.1
            repo_args = args.repo.rsplit(":", 1)
            args.repo = repo_args[0]
            args.major = repo_args[1]
    
        # instead of using root logger, we use
        logger = logging.getLogger("lastversion")
        # create console handler and set level to debug
        ch = logging.StreamHandler()
        # create formatter
        fmt = (
            "%(name)s - %(levelname)s - %(message)s"
            if args.verbose
            else "%(levelname)s: %(message)s"
        )
        formatter = logging.Formatter(fmt)
        # add formatter to ch
        ch.setFormatter(formatter)
        # add ch to logger
        logger.addHandler(ch)
    
        if args.verbose:
            logger.setLevel(logging.DEBUG)
            log.info("Verbose %s level output.", args.verbose)
            if args.verbose >= 2:
                cachecontrol_logger = logging.getLogger("cachecontrol")
                cachecontrol_logger.removeHandler(logging.NullHandler())
                cachecontrol_logger.addHandler(ch)
                cachecontrol_logger.setLevel(logging.DEBUG)
    
        if args.assets:
            args.format = "assets"
    
        if args.source:
            args.format = "source"
    
        if args.filter:
            args.filter = re.compile(args.filter)
    
        if args.action in ["test", "format"]:
            v = parse_version(args.repo)
            if not v:
                log.critical("Failed to parse as a valid version")
                sys.exit(1)
            else:
                # extract the desired print base
                v = v.sem_extract_base(args.sem)
                if args.action == "test":
                    print(f"Parsed as: {v}")
                    print(f"Stable: {not v.is_prerelease}")
                else:
                    print(v)
                return sys.exit(0)
    
        if args.action == "install":
            # we can only install assets
            args.format = "json"
            if args.having_asset is None:
                args.having_asset = r"~\.(AppImage|rpm)$"
                try:
                    import apt
    
                    args.having_asset = r"~\.(AppImage|deb)$"
                except ImportError:
                    pass
    
        if args.repo.endswith(".spec"):
            args.action = "update-spec"
            args.format = "dict"
    
        if not args.sem:
            if args.action == "update-spec":
                args.sem = "minor"
            else:
                args.sem = "any"
        # imply source download, unless --assets specified
        # --download is legacy flag to specify download action or name of desired download file
        # --download == None indicates download intent where filename is based on upstream
        if args.action == "download" and args.download is False:
            args.download = None
    
        if args.download is not False:
            args.action = "download"
            if args.format != "assets":
                args.format = "source"
    
        if args.action in ["extract", "unzip"] and args.format != "assets":
            args.format = "source"
    
        if args.newer_than:
            base_compare = parse_version(args.repo)
            if base_compare:
                print(max([args.newer_than, base_compare]))
                return sys.exit(2 if base_compare <= args.newer_than else 0)
    
        # other action are either getting release or doing something with release (extend get action)
        try:
            res = latest(
                args.repo,
                args.format,
                args.pre,
                args.filter,
                args.shorter_urls,
                args.major,
                args.only,
                args.at,
                having_asset=args.having_asset,
                exclude=args.exclude,
                even=args.even,
                formal=args.formal,
            )
        except (ApiCredentialsError, BadProjectError) as error:
            log.critical(str(error))
            if (
                isinstance(error, ApiCredentialsError)
                and "GITHUB_API_TOKEN" not in os.environ
                and "GITHUB_TOKEN" not in os.environ
            ):
                log.critical(TOKEN_PRO_TIP)
            sys.exit(4)
    
>       if res:
E       UnboundLocalError: cannot access local variable 'res' where it is not associated with a value

/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py:884: UnboundLocalError
----------------------------- Captured stderr call -----------------------------
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1078s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 134, in test_unzip_osx_bundle
    main(["--assets", "unzip", "lastversion-test-repos/MinimalMIDIPlayer"])
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 875, in main
    log.critical(str(error))
Message: "Exceeded GitHub API rate limits. Giving up due to high expected wait 1078s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)"
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1078s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 134, in test_unzip_osx_bundle
    main(["--assets", "unzip", "lastversion-test-repos/MinimalMIDIPlayer"])
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 875, in main
    log.critical(str(error))
Message: "Exceeded GitHub API rate limits. Giving up due to high expected wait 1078s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)"
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1078s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 134, in test_unzip_osx_bundle
    main(["--assets", "unzip", "lastversion-test-repos/MinimalMIDIPlayer"])
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 875, in main
    log.critical(str(error))
Message: "Exceeded GitHub API rate limits. Giving up due to high expected wait 1078s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)"
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1078s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 134, in test_unzip_osx_bundle
    main(["--assets", "unzip", "lastversion-test-repos/MinimalMIDIPlayer"])
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 875, in main
    log.critical(str(error))
Message: "Exceeded GitHub API rate limits. Giving up due to high expected wait 1078s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)"
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1078s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 134, in test_unzip_osx_bundle
    main(["--assets", "unzip", "lastversion-test-repos/MinimalMIDIPlayer"])
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 875, in main
    log.critical(str(error))
Message: "Exceeded GitHub API rate limits. Giving up due to high expected wait 1078s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)"
Arguments: ()
CRITICAL: Exceeded GitHub API rate limits. Giving up due to high expected wait 1078s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1078s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 134, in test_unzip_osx_bundle
    main(["--assets", "unzip", "lastversion-test-repos/MinimalMIDIPlayer"])
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 881, in main
    log.critical(TOKEN_PRO_TIP)
Message: 'ProTip: set GITHUB_API_TOKEN env var as per https://github.com/dvershinin/lastversion#tips'
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1078s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 134, in test_unzip_osx_bundle
    main(["--assets", "unzip", "lastversion-test-repos/MinimalMIDIPlayer"])
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 881, in main
    log.critical(TOKEN_PRO_TIP)
Message: 'ProTip: set GITHUB_API_TOKEN env var as per https://github.com/dvershinin/lastversion#tips'
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1078s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 134, in test_unzip_osx_bundle
    main(["--assets", "unzip", "lastversion-test-repos/MinimalMIDIPlayer"])
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 881, in main
    log.critical(TOKEN_PRO_TIP)
Message: 'ProTip: set GITHUB_API_TOKEN env var as per https://github.com/dvershinin/lastversion#tips'
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1078s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 134, in test_unzip_osx_bundle
    main(["--assets", "unzip", "lastversion-test-repos/MinimalMIDIPlayer"])
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 881, in main
    log.critical(TOKEN_PRO_TIP)
Message: 'ProTip: set GITHUB_API_TOKEN env var as per https://github.com/dvershinin/lastversion#tips'
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1078s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 134, in test_unzip_osx_bundle
    main(["--assets", "unzip", "lastversion-test-repos/MinimalMIDIPlayer"])
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 881, in main
    log.critical(TOKEN_PRO_TIP)
Message: 'ProTip: set GITHUB_API_TOKEN env var as per https://github.com/dvershinin/lastversion#tips'
Arguments: ()
CRITICAL: ProTip: set GITHUB_API_TOKEN env var as per https://github.com/dvershinin/lastversion#tips
------------------------------ Captured log call -------------------------------
CRITICAL lastversion.lastversion:lastversion.py:875 Exceeded GitHub API rate limits. Giving up due to high expected wait 1078s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)
CRITICAL lastversion.lastversion:lastversion.py:881 ProTip: set GITHUB_API_TOKEN env var as per https://github.com/dvershinin/lastversion#tips
_____________________________ test_cli_get_assets ______________________________

capsys = <_pytest.capture.CaptureFixture object at 0x7fffedf23c50>

    def test_cli_get_assets(capsys):
        """Test that the CLI --assets return AppImage on Linux."""
        if sys.platform == "linux":
            with captured_exit_code() as get_exit_code:
>               main(["--assets", "https://github.com/lastversion-test-repos/OneDriveGUI"])

/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py:148: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

argv = ['--assets', 'https://github.com/lastversion-test-repos/OneDriveGUI']

    def main(argv=None):
        """
        The entrypoint to CLI app.
    
        Args:
            argv: List of arguments, helps test CLI without resorting to subprocess module.
        """
        # ANSI escape code for starting bold text
        start_bold = "\033[1m"
        # ANSI escape code for ending the formatting (resets to normal text)
        end_bold = "\033[0m"
    
        epilog = "\n---\n"
        epilog += f"{start_bold}Sponsored Message: Check out the GetPageSpeed RPM "
        epilog += "repository at https://nginx-extras.getpagespeed.com/ for NGINX "
        epilog += "modules and performance tools. Enhance your server performance "
        epilog += f"today!{end_bold}"
        epilog += "\n---\n"
    
        if "GITHUB_API_TOKEN" not in os.environ and "GITHUB_TOKEN" not in os.environ:
            epilog += TOKEN_PRO_TIP
        parser = argparse.ArgumentParser(
            description="Find the latest software release.",
            epilog=epilog,
            prog="lastversion",
        )
        parser.add_argument(
            "action",
            nargs="?",
            default="get",
            help="Action to run. Default: get",
            choices=[
                "get",
                "download",
                "extract",
                "unzip",
                "test",
                "format",
                "install",
                "update-spec",
            ],
        )
        parser.add_argument(
            "repo",
            metavar="<repo URL or string>",
            help="Repository in format owner/name or any URL that belongs to it, or a version string",
        )
        # affects what is considered last release
        parser.add_argument(
            "--pre",
            dest="pre",
            action="store_true",
            help="Include pre-releases in potential versions",
        )
        parser.add_argument(
            "--formal",
            dest="formal",
            action="store_true",
            help="Include only formally tagged versions",
        )
        parser.add_argument(
            "--sem",
            dest="sem",
            choices=["major", "minor", "patch", "any"],
            help="Semantic versioning level base to print or compare against",
        )
        parser.add_argument(
            "-v",
            "--verbose",
            action="count",
            default=0,
            help="Will give you an idea of what is happening under the hood, "
            "-vv to increase verbosity level",
        )
        # no --download = False, --download filename.tar, --download = None
        parser.add_argument(
            "-d",
            "-o",
            "--download",
            "--output",
            dest="download",
            nargs="?",
            default=False,
            const=None,
            metavar="FILENAME",
            help="Download with custom filename",
        )
        # how / which data of last release we want to present
        # assets will give download urls for assets if available and sources archive otherwise
        # sources will give download urls for sources always
        # json always includes "version", "tag_name" etc. + whichever json data was
        # used to satisfy lastversion
        parser.add_argument(
            "--format",
            choices=["version", "assets", "source", "json", "tag"],
            help="Output format",
        )
        parser.add_argument(
            "--assets",
            dest="assets",
            action="store_true",
            help="Returns assets download URLs for last release",
        )
        parser.add_argument(
            "--source",
            dest="source",
            action="store_true",
            help="Returns only source URL for last release",
        )
        parser.add_argument(
            "-gt",
            "--newer-than",
            type=check_version,
            metavar="VER",
            help="Output only if last version is newer than given version",
        )
        parser.add_argument(
            "-b",
            "--major",
            "--branch",
            metavar="MAJOR",
            help="Only consider releases of a specific major version, e.g. 2.1.x",
        )
        parser.add_argument(
            "--only",
            metavar="REGEX",
            help="Only consider releases containing this text. "
            "Useful for repos with multiple projects inside",
        )
        parser.add_argument(
            "--exclude",
            metavar="REGEX",
            help="Only consider releases NOT containing this text. "
            "Useful for repos with multiple projects inside",
        )
        parser.add_argument(
            "--filter",
            metavar="REGEX",
            help="Filters --assets result by a regular " "expression",
        )
        parser.add_argument(
            "--having-asset",
            metavar="ASSET",
            help="Only consider releases with this asset",
            nargs="?",
            const=True,
        )
        parser.add_argument(
            "-su",
            "--shorter-urls",
            dest="shorter_urls",
            action="store_true",
            help="A tiny bit shorter URLs produced",
        )
        parser.add_argument(
            "--even",
            dest="even",
            action="store_true",
            help="Only even versions like 1.[2].x, or 3.[6].x are considered as stable",
        )
        parser.add_argument(
            "--at",
            dest="at",
            help="If the repo argument is one word, specifies where to look up the "
            "project. The default is via internal lookup or GitHub Search",
            choices=HolderFactory.HOLDERS.keys(),
        )
        parser.add_argument(
            "-y",
            "--assumeyes",
            dest="assumeyes",
            action="store_true",
            help="Automatically answer yes for all questions",
        )
        parser.add_argument(
            "--no-cache",
            dest="no_cache",
            action="store_true",
            help="Do not use cache for HTTP requests",
        )
        parser.add_argument("--version", action=VersionAction)
        parser.set_defaults(
            validate=True,
            verbose=False,
            format="version",
            pre=False,
            formal=False,
            assets=False,
            newer_than=False,
            filter=False,
            shorter_urls=False,
            major=None,
            assumeyes=False,
            at=None,
            having_asset=None,
            even=False,
        )
        args = parser.parse_args(argv)
    
        BaseProjectHolder.CACHE_DISABLED = args.no_cache
    
        if args.repo == "self":
            args.repo = __self__
    
        # "expand" repo:1.2 as repo --branch 1.2
        # noinspection HttpUrlsUsage
        if ":" in args.repo and not (
            args.repo.startswith(("https://", "http://")) and args.repo.count(":") == 1
        ):
            # right split ':' once only to preserve it in protocol of URLs
            # https://github.com/repo/owner:2.1
            repo_args = args.repo.rsplit(":", 1)
            args.repo = repo_args[0]
            args.major = repo_args[1]
    
        # instead of using root logger, we use
        logger = logging.getLogger("lastversion")
        # create console handler and set level to debug
        ch = logging.StreamHandler()
        # create formatter
        fmt = (
            "%(name)s - %(levelname)s - %(message)s"
            if args.verbose
            else "%(levelname)s: %(message)s"
        )
        formatter = logging.Formatter(fmt)
        # add formatter to ch
        ch.setFormatter(formatter)
        # add ch to logger
        logger.addHandler(ch)
    
        if args.verbose:
            logger.setLevel(logging.DEBUG)
            log.info("Verbose %s level output.", args.verbose)
            if args.verbose >= 2:
                cachecontrol_logger = logging.getLogger("cachecontrol")
                cachecontrol_logger.removeHandler(logging.NullHandler())
                cachecontrol_logger.addHandler(ch)
                cachecontrol_logger.setLevel(logging.DEBUG)
    
        if args.assets:
            args.format = "assets"
    
        if args.source:
            args.format = "source"
    
        if args.filter:
            args.filter = re.compile(args.filter)
    
        if args.action in ["test", "format"]:
            v = parse_version(args.repo)
            if not v:
                log.critical("Failed to parse as a valid version")
                sys.exit(1)
            else:
                # extract the desired print base
                v = v.sem_extract_base(args.sem)
                if args.action == "test":
                    print(f"Parsed as: {v}")
                    print(f"Stable: {not v.is_prerelease}")
                else:
                    print(v)
                return sys.exit(0)
    
        if args.action == "install":
            # we can only install assets
            args.format = "json"
            if args.having_asset is None:
                args.having_asset = r"~\.(AppImage|rpm)$"
                try:
                    import apt
    
                    args.having_asset = r"~\.(AppImage|deb)$"
                except ImportError:
                    pass
    
        if args.repo.endswith(".spec"):
            args.action = "update-spec"
            args.format = "dict"
    
        if not args.sem:
            if args.action == "update-spec":
                args.sem = "minor"
            else:
                args.sem = "any"
        # imply source download, unless --assets specified
        # --download is legacy flag to specify download action or name of desired download file
        # --download == None indicates download intent where filename is based on upstream
        if args.action == "download" and args.download is False:
            args.download = None
    
        if args.download is not False:
            args.action = "download"
            if args.format != "assets":
                args.format = "source"
    
        if args.action in ["extract", "unzip"] and args.format != "assets":
            args.format = "source"
    
        if args.newer_than:
            base_compare = parse_version(args.repo)
            if base_compare:
                print(max([args.newer_than, base_compare]))
                return sys.exit(2 if base_compare <= args.newer_than else 0)
    
        # other action are either getting release or doing something with release (extend get action)
        try:
            res = latest(
                args.repo,
                args.format,
                args.pre,
                args.filter,
                args.shorter_urls,
                args.major,
                args.only,
                args.at,
                having_asset=args.having_asset,
                exclude=args.exclude,
                even=args.even,
                formal=args.formal,
            )
        except (ApiCredentialsError, BadProjectError) as error:
            log.critical(str(error))
            if (
                isinstance(error, ApiCredentialsError)
                and "GITHUB_API_TOKEN" not in os.environ
                and "GITHUB_TOKEN" not in os.environ
            ):
                log.critical(TOKEN_PRO_TIP)
            sys.exit(4)
    
>       if res:
E       UnboundLocalError: cannot access local variable 'res' where it is not associated with a value

/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py:884: UnboundLocalError
----------------------------- Captured stderr call -----------------------------
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1077s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 148, in test_cli_get_assets
    main(["--assets", "https://github.com/lastversion-test-repos/OneDriveGUI"])
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 875, in main
    log.critical(str(error))
Message: "Exceeded GitHub API rate limits. Giving up due to high expected wait 1077s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)"
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1077s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 148, in test_cli_get_assets
    main(["--assets", "https://github.com/lastversion-test-repos/OneDriveGUI"])
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 875, in main
    log.critical(str(error))
Message: "Exceeded GitHub API rate limits. Giving up due to high expected wait 1077s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)"
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1077s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 148, in test_cli_get_assets
    main(["--assets", "https://github.com/lastversion-test-repos/OneDriveGUI"])
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 875, in main
    log.critical(str(error))
Message: "Exceeded GitHub API rate limits. Giving up due to high expected wait 1077s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)"
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1077s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 148, in test_cli_get_assets
    main(["--assets", "https://github.com/lastversion-test-repos/OneDriveGUI"])
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 875, in main
    log.critical(str(error))
Message: "Exceeded GitHub API rate limits. Giving up due to high expected wait 1077s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)"
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1077s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 148, in test_cli_get_assets
    main(["--assets", "https://github.com/lastversion-test-repos/OneDriveGUI"])
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 875, in main
    log.critical(str(error))
Message: "Exceeded GitHub API rate limits. Giving up due to high expected wait 1077s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)"
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1077s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 148, in test_cli_get_assets
    main(["--assets", "https://github.com/lastversion-test-repos/OneDriveGUI"])
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 875, in main
    log.critical(str(error))
Message: "Exceeded GitHub API rate limits. Giving up due to high expected wait 1077s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)"
Arguments: ()
CRITICAL: Exceeded GitHub API rate limits. Giving up due to high expected wait 1077s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1077s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 148, in test_cli_get_assets
    main(["--assets", "https://github.com/lastversion-test-repos/OneDriveGUI"])
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 881, in main
    log.critical(TOKEN_PRO_TIP)
Message: 'ProTip: set GITHUB_API_TOKEN env var as per https://github.com/dvershinin/lastversion#tips'
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1077s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 148, in test_cli_get_assets
    main(["--assets", "https://github.com/lastversion-test-repos/OneDriveGUI"])
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 881, in main
    log.critical(TOKEN_PRO_TIP)
Message: 'ProTip: set GITHUB_API_TOKEN env var as per https://github.com/dvershinin/lastversion#tips'
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1077s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 148, in test_cli_get_assets
    main(["--assets", "https://github.com/lastversion-test-repos/OneDriveGUI"])
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 881, in main
    log.critical(TOKEN_PRO_TIP)
Message: 'ProTip: set GITHUB_API_TOKEN env var as per https://github.com/dvershinin/lastversion#tips'
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1077s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 148, in test_cli_get_assets
    main(["--assets", "https://github.com/lastversion-test-repos/OneDriveGUI"])
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 881, in main
    log.critical(TOKEN_PRO_TIP)
Message: 'ProTip: set GITHUB_API_TOKEN env var as per https://github.com/dvershinin/lastversion#tips'
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1077s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 148, in test_cli_get_assets
    main(["--assets", "https://github.com/lastversion-test-repos/OneDriveGUI"])
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 881, in main
    log.critical(TOKEN_PRO_TIP)
Message: 'ProTip: set GITHUB_API_TOKEN env var as per https://github.com/dvershinin/lastversion#tips'
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 860, in main
    res = latest(
          ^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 232, in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 643, in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 604, in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 431, in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 424, in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 258, in repo_query
    return self.get(url)
           ^^^^^^^^^^^^^
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 239, in get
    raise ApiCredentialsError(
lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1077s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/logging/__init__.py", line 1163, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in <module>
    raise SystemExit(pytest.console_main())
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 337, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 132, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_cli.py", line 148, in test_cli_get_assets
    main(["--assets", "https://github.com/lastversion-test-repos/OneDriveGUI"])
  File "/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py", line 881, in main
    log.critical(TOKEN_PRO_TIP)
Message: 'ProTip: set GITHUB_API_TOKEN env var as per https://github.com/dvershinin/lastversion#tips'
Arguments: ()
CRITICAL: ProTip: set GITHUB_API_TOKEN env var as per https://github.com/dvershinin/lastversion#tips
------------------------------ Captured log call -------------------------------
CRITICAL lastversion.lastversion:lastversion.py:875 Exceeded GitHub API rate limits. Giving up due to high expected wait 1077s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)
CRITICAL lastversion.lastversion:lastversion.py:881 ProTip: set GITHUB_API_TOKEN env var as per https://github.com/dvershinin/lastversion#tips
________________________________ test_hg_nginx _________________________________

    def test_hg_nginx():
        """Test NGINX."""
        repo = "https://nginx.org/"
    
>       output = latest(repo, "version")

/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/tests/test_hg.py:17: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/lastversion.py:232: in latest
    release = project.get_latest(pre_ok=pre_ok, major=repo_data.get("major", major))
/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py:643: in get_latest
    ret = self.get_release_from_feed(pre_ok, major)
/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py:604: in get_release_from_feed
    formal_release = self.get_formal_release_for_tag(tag_name)
/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py:431: in get_formal_release_for_tag
    self.ensure_formal_releases_fetched()
/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py:424: in ensure_formal_releases_fetched
    r = self.repo_query("/releases")
/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py:258: in repo_query
    return self.get(url)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <lastversion.repo_holders.github.GitHubRepoSession object at 0x7fffedf23920>
url = 'https://api.github.com/repos/nginx/nginx/releases', kwargs = {}
r = <Response [403]>, remaining = 0, wait_for = 1071

    def get(self, url, **kwargs):
        """Send GET request and account for GitHub rate limits and such."""
        r = super().get(url, **kwargs)
        log.info("Got HTTP status code %s from %s", r.status_code, url)
        if r.status_code == 401:
            if self.api_token:
                raise ApiCredentialsError(
                    "API request was denied despite using an API token. "
                    "Missing scopes? Expired token? Invalid token?"
                )
            raise ApiCredentialsError(
                "Denied API access. Please set GITHUB_API_TOKEN env var "
                "as per https://github.com/dvershinin/lastversion#tips"
            )
        if (
            r.status_code == 403
            and "X-RateLimit-Reset" in r.headers
            and "X-RateLimit-Remaining" in r.headers
        ):
            if self.rate_limited_count > 2:
                raise ApiCredentialsError(
                    f"API requests were denied after retrying {self.rate_limited_count} times"
                )
            remaining = int(r.headers["X-RateLimit-Remaining"])
            # One sec to account for skewed clock between GitHub and client
            wait_for = float(r.headers["X-RateLimit-Reset"]) - time.time() + 1.0
            wait_for = math.ceil(wait_for)
            if not remaining:
                # got 403, likely due to used quota
                if wait_for < 300:
                    if wait_for < 0:
                        log.warning(
                            "Exceeded API quota. Repeating request because "
                            "quota is about to be reinstated"
                        )
                    else:
                        w = (
                            f"Waiting {wait_for} seconds for API quota "
                            f"reinstatement."
                        )
                        if not self.api_token:
                            w = f"{w} {TOKEN_PRO_TIP}"
                        log.warning(w)
                        time.sleep(wait_for)
                    self.rate_limited_count = self.rate_limited_count + 1
                    return self.get(url)
>               raise ApiCredentialsError(
                    f"Exceeded GitHub API rate limits. Giving up due to high "
                    f"expected wait {wait_for}s. API says: "
                    f'{r.json()["message"]}'
                )
E               lastversion.exceptions.ApiCredentialsError: Exceeded GitHub API rate limits. Giving up due to high expected wait 1071s. API says: API rate limit exceeded for 157.143.104.190. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

/home/buildozer/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py:239: ApiCredentialsError
=========================== short test summary info ============================
FAILED tests/test_cli.py::test_cli_gt_first_arg_is_repo - UnboundLocalError: ...
FAILED tests/test_cli.py::test_unzip_osx_bundle_strip - UnboundLocalError: ca...
FAILED tests/test_cli.py::test_unzip_osx_bundle - UnboundLocalError: cannot a...
FAILED tests/test_cli.py::test_cli_get_assets - UnboundLocalError: cannot acc...
FAILED tests/test_hg.py::test_hg_nginx - lastversion.exceptions.ApiCredential...
======================== 5 failed, 16 passed in 13.87s =========================
>>> lastversion: Entering fakeroot...
>>> lastversion-pyc*: Running split function pyc...
'usr/lib/python3.12/site-packages/lastversion/__pycache__' -> '/home/buildozer/aports/community/lastversion/pkg/lastversion-pyc/usr/lib/python3.12/site-packages/lastversion/__pycache__'
'usr/lib/python3.12/site-packages/lastversion/repo_holders/__pycache__' -> '/home/buildozer/aports/community/lastversion/pkg/lastversion-pyc/usr/lib/python3.12/site-packages/lastversion/repo_holders/__pycache__'
>>> lastversion-pyc*: Preparing subpackage lastversion-pyc...
>>> lastversion-pyc*: Running postcheck for lastversion-pyc
>>> lastversion*: Running postcheck for lastversion
>>> lastversion*: Preparing package lastversion...
>>> lastversion-pyc*: Tracing dependencies...
	py3-appdirs
	py3-beautifulsoup4
	py3-cachecontrol
	py3-dateutil
	py3-distro
	py3-feedparser
	py3-filelock
	py3-packaging
	py3-requests
	py3-tqdm
	py3-urllib3
	py3-yaml
	python3~3.12
>>> lastversion-pyc*: Package size: 181.6 KB
>>> lastversion-pyc*: Compressing data...
>>> lastversion-pyc*: Create checksum...
>>> lastversion-pyc*: Create lastversion-pyc-3.5.7-r0.apk
>>> lastversion*: Tracing dependencies...
	py3-appdirs
	py3-beautifulsoup4
	py3-cachecontrol
	py3-dateutil
	py3-distro
	py3-feedparser
	py3-filelock
	py3-packaging
	py3-requests
	py3-tqdm
	py3-urllib3
	py3-yaml
	python3~3.12
>>> lastversion*: Package size: 196.0 KB
>>> lastversion*: Compressing data...
>>> lastversion*: Create checksum...
>>> lastversion*: Create lastversion-3.5.7-r0.apk
>>> lastversion: Build complete at Sun, 10 Nov 2024 03:54:09 +0000 elapsed time 0h 0m 18s
>>> lastversion: Cleaning up srcdir
>>> lastversion: Cleaning up pkgdir
>>> lastversion: Uninstalling dependencies...
(1/69) Purging .makedepends-lastversion (20241110.035352)
(2/69) Purging py3-appdirs-pyc (1.4.4-r8)
(3/69) Purging py3-appdirs (1.4.4-r8)
(4/69) Purging py3-beautifulsoup4-pyc (4.12.3-r3)
(5/69) Purging py3-beautifulsoup4 (4.12.3-r3)
(6/69) Purging py3-soupsieve-pyc (2.6-r0)
(7/69) Purging py3-soupsieve (2.6-r0)
(8/69) Purging py3-cachecontrol-pyc (0.14.1-r0)
(9/69) Purging py3-cachecontrol (0.14.1-r0)
(10/69) Purging py3-msgpack-pyc (1.0.8-r1)
(11/69) Purging py3-msgpack (1.0.8-r1)
(12/69) Purging py3-dateutil-pyc (2.9.0-r1)
(13/69) Purging py3-dateutil (2.9.0-r1)
(14/69) Purging py3-six-pyc (1.16.0-r9)
(15/69) Purging py3-six (1.16.0-r9)
(16/69) Purging py3-distro-pyc (1.9.0-r2)
(17/69) Purging py3-distro (1.9.0-r2)
(18/69) Purging py3-feedparser-pyc (6.0.11-r2)
(19/69) Purging py3-feedparser (6.0.11-r2)
(20/69) Purging py3-sgmllib3k-pyc (1.0.0-r11)
(21/69) Purging py3-sgmllib3k (1.0.0-r11)
(22/69) Purging py3-filelock-pyc (3.13.1-r1)
(23/69) Purging py3-filelock (3.13.1-r1)
(24/69) Purging py3-requests-pyc (2.32.3-r0)
(25/69) Purging py3-requests (2.32.3-r0)
(26/69) Purging py3-certifi-pyc (2024.8.30-r0)
(27/69) Purging py3-certifi (2024.8.30-r0)
(28/69) Purging py3-charset-normalizer-pyc (3.4.0-r0)
(29/69) Purging py3-charset-normalizer (3.4.0-r0)
(30/69) Purging py3-idna-pyc (3.10-r0)
(31/69) Purging py3-idna (3.10-r0)
(32/69) Purging py3-tqdm-pyc (4.67.0-r0)
(33/69) Purging py3-tqdm (4.67.0-r0)
(34/69) Purging py3-urllib3-pyc (1.26.20-r0)
(35/69) Purging py3-urllib3 (1.26.20-r0)
(36/69) Purging py3-yaml-pyc (6.0.2-r0)
(37/69) Purging py3-yaml (6.0.2-r0)
(38/69) Purging py3-gpep517-pyc (16-r0)
(39/69) Purging py3-gpep517 (16-r0)
(40/69) Purging py3-installer-pyc (0.7.0-r2)
(41/69) Purging py3-installer (0.7.0-r2)
(42/69) Purging py3-setuptools-pyc (70.3.0-r0)
(43/69) Purging py3-setuptools (70.3.0-r0)
(44/69) Purging py3-wheel-pyc (0.43.0-r0)
(45/69) Purging py3-wheel (0.43.0-r0)
(46/69) Purging py3-pytest-pyc (8.3.3-r0)
(47/69) Purging py3-pytest (8.3.3-r0)
(48/69) Purging py3-iniconfig-pyc (2.0.0-r1)
(49/69) Purging py3-iniconfig (2.0.0-r1)
(50/69) Purging py3-packaging-pyc (24.1-r0)
(51/69) Purging py3-packaging (24.1-r0)
(52/69) Purging py3-parsing-pyc (3.1.4-r0)
(53/69) Purging py3-parsing (3.1.4-r0)
(54/69) Purging py3-pluggy-pyc (1.5.0-r0)
(55/69) Purging py3-pluggy (1.5.0-r0)
(56/69) Purging py3-py-pyc (1.11.0-r4)
(57/69) Purging py3-py (1.11.0-r4)
(58/69) Purging python3-pyc (3.12.7-r1)
(59/69) Purging python3-pycache-pyc0 (3.12.7-r1)
(60/69) Purging pyc (3.12.7-r1)
(61/69) Purging python3 (3.12.7-r1)
(62/69) Purging gdbm (1.24-r0)
(63/69) Purging libbz2 (1.0.8-r6)
(64/69) Purging libffi (3.4.6-r0)
(65/69) Purging libpanelw (6.5_p20241006-r2)
(66/69) Purging mpdecimal (4.0.0-r0)
(67/69) Purging sqlite-libs (3.47.0-r0)
(68/69) Purging xz-libs (5.6.3-r0)
(69/69) Purging yaml (0.2.5-r2)
Executing busybox-1.37.0-r6.trigger
OK: 247 MiB in 102 packages
>>> lastversion: Updating the community/loongarch64 repository index...
>>> lastversion: Signing the index...