>>> lastversion: Building community/lastversion 3.5.7-r0 (using abuild 3.15.0-r0) started Sat, 11 Oct 2025 02:20:38 +0000 >>> lastversion: Validating /home/udu/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 WARNING: opening /home/udu/packages//main: No such file or directory fetch http://dl-cdn.alpinelinux.org/alpine/v3.22/main/x86_64/APKINDEX.tar.gz fetch http://dl-cdn.alpinelinux.org/alpine/v3.22/community/x86_64/APKINDEX.tar.gz (1/60) Installing py3-appdirs-pyc (1.4.4-r8) (2/60) Installing py3-appdirs (1.4.4-r8) (3/60) Installing py3-soupsieve (2.7-r0) (4/60) Installing py3-soupsieve-pyc (2.7-r0) (5/60) Installing py3-typing-extensions (4.13.2-r0) (6/60) Installing py3-typing-extensions-pyc (4.13.2-r0) (7/60) Installing py3-beautifulsoup4 (4.13.4-r0) (8/60) Installing py3-beautifulsoup4-pyc (4.13.4-r0) (9/60) Installing py3-msgpack (1.0.8-r1) (10/60) Installing py3-msgpack-pyc (1.0.8-r1) (11/60) Installing py3-certifi (2025.4.26-r0) (12/60) Installing py3-certifi-pyc (2025.4.26-r0) (13/60) Installing py3-charset-normalizer (3.4.2-r0) (14/60) Installing py3-charset-normalizer-pyc (3.4.2-r0) (15/60) Installing py3-idna (3.10-r0) (16/60) Installing py3-idna-pyc (3.10-r0) (17/60) Installing py3-urllib3 (1.26.20-r0) (18/60) Installing py3-urllib3-pyc (1.26.20-r0) (19/60) Installing py3-requests (2.32.5-r0) (20/60) Installing py3-requests-pyc (2.32.5-r0) (21/60) Installing py3-cachecontrol (0.14.3-r0) (22/60) Installing py3-cachecontrol-pyc (0.14.3-r0) (23/60) Installing py3-six (1.17.0-r0) (24/60) Installing py3-six-pyc (1.17.0-r0) (25/60) Installing py3-dateutil (2.9.0-r1) (26/60) Installing py3-dateutil-pyc (2.9.0-r1) (27/60) Installing py3-distro (1.9.0-r2) (28/60) Installing py3-distro-pyc (1.9.0-r2) (29/60) Installing py3-sgmllib3k (1.0.0-r11) (30/60) Installing py3-sgmllib3k-pyc (1.0.0-r11) (31/60) Installing py3-feedparser (6.0.11-r2) (32/60) Installing py3-feedparser-pyc (6.0.11-r2) (33/60) Installing py3-filelock (3.16.1-r1) (34/60) Installing py3-filelock-pyc (3.16.1-r1) (35/60) Installing py3-parsing (3.2.3-r0) (36/60) Installing py3-parsing-pyc (3.2.3-r0) (37/60) Installing py3-packaging (25.0-r0) (38/60) Installing py3-packaging-pyc (25.0-r0) (39/60) Installing py3-tqdm (4.67.1-r0) (40/60) Installing py3-tqdm-pyc (4.67.1-r0) (41/60) Installing yaml (0.2.5-r2) (42/60) Installing py3-yaml (6.0.2-r0) (43/60) Installing py3-yaml-pyc (6.0.2-r0) (44/60) Installing py3-installer (0.7.0-r2) (45/60) Installing py3-installer-pyc (0.7.0-r2) (46/60) Installing py3-gpep517 (19-r0) (47/60) Installing py3-gpep517-pyc (19-r0) (48/60) Installing py3-setuptools (80.9.0-r0) (49/60) Installing py3-setuptools-pyc (80.9.0-r0) (50/60) Installing py3-wheel (0.46.1-r0) (51/60) Installing py3-wheel-pyc (0.46.1-r0) (52/60) Installing py3-iniconfig (2.1.0-r0) (53/60) Installing py3-iniconfig-pyc (2.1.0-r0) (54/60) Installing py3-pluggy (1.5.0-r0) (55/60) Installing py3-pluggy-pyc (1.5.0-r0) (56/60) Installing py3-py (1.11.0-r4) (57/60) Installing py3-py-pyc (1.11.0-r4) (58/60) Installing py3-pytest (8.3.5-r0) (59/60) Installing py3-pytest-pyc (8.3.5-r0) (60/60) Installing .makedepends-lastversion (20251011.022038) Executing busybox-1.37.0-r19.trigger OK: 317 MiB in 149 packages >>> lastversion: Cleaning up srcdir >>> lastversion: Cleaning up pkgdir >>> lastversion: Cleaning up tmpdir >>> lastversion: Fetching https://github.com/dvershinin/lastversion/archive/v3.5.7/lastversion-3.5.7.tar.gz >>> lastversion: Fetching https://github.com/dvershinin/lastversion/archive/v3.5.7/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... 2025-10-11 02:20:39,464 gpep517 INFO Building wheel via backend setuptools.build_meta:__legacy__ /usr/lib/python3.12/site-packages/setuptools/_distutils/dist.py:289: UserWarning: Unknown distribution option: 'tests_require' warnings.warn(msg) /usr/lib/python3.12/site-packages/setuptools/dist.py:759: SetuptoolsDeprecationWarning: License classifiers are deprecated. !! ******************************************************************************** Please consider removing the following classifiers in favor of a SPDX license expression: License :: OSI Approved :: BSD License See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. ******************************************************************************** !! self._finalize_license_expression() 2025-10-11 02:20:39,477 root INFO running bdist_wheel 2025-10-11 02:20:39,487 root INFO running build 2025-10-11 02:20:39,487 root INFO running build_py 2025-10-11 02:20:39,490 root INFO creating build/lib/lastversion 2025-10-11 02:20:39,490 root INFO copying src/lastversion/argparse_version.py -> build/lib/lastversion 2025-10-11 02:20:39,490 root INFO copying src/lastversion/lastversion.py -> build/lib/lastversion 2025-10-11 02:20:39,490 root INFO copying src/lastversion/utils.py -> build/lib/lastversion 2025-10-11 02:20:39,490 root INFO copying src/lastversion/holder_factory.py -> build/lib/lastversion 2025-10-11 02:20:39,490 root INFO copying src/lastversion/exceptions.py -> build/lib/lastversion 2025-10-11 02:20:39,490 root INFO copying src/lastversion/spdx_id_to_rpmspec.py -> build/lib/lastversion 2025-10-11 02:20:39,490 root INFO copying src/lastversion/version.py -> build/lib/lastversion 2025-10-11 02:20:39,490 root INFO copying src/lastversion/__init__.py -> build/lib/lastversion 2025-10-11 02:20:39,490 root INFO copying src/lastversion/__main__.py -> build/lib/lastversion 2025-10-11 02:20:39,491 root INFO copying src/lastversion/__about__.py -> build/lib/lastversion 2025-10-11 02:20:39,491 root INFO creating build/lib/lastversion/repo_holders 2025-10-11 02:20:39,491 root INFO copying src/lastversion/repo_holders/base.py -> build/lib/lastversion/repo_holders 2025-10-11 02:20:39,491 root INFO copying src/lastversion/repo_holders/local.py -> build/lib/lastversion/repo_holders 2025-10-11 02:20:39,491 root INFO copying src/lastversion/repo_holders/wordpress.py -> build/lib/lastversion/repo_holders 2025-10-11 02:20:39,491 root INFO copying src/lastversion/repo_holders/system.py -> build/lib/lastversion/repo_holders 2025-10-11 02:20:39,491 root INFO copying src/lastversion/repo_holders/bibucket.py -> build/lib/lastversion/repo_holders 2025-10-11 02:20:39,491 root INFO copying src/lastversion/repo_holders/pypi.py -> build/lib/lastversion/repo_holders 2025-10-11 02:20:39,491 root INFO copying src/lastversion/repo_holders/gitea.py -> build/lib/lastversion/repo_holders 2025-10-11 02:20:39,491 root INFO copying src/lastversion/repo_holders/gitlab.py -> build/lib/lastversion/repo_holders 2025-10-11 02:20:39,492 root INFO copying src/lastversion/repo_holders/sourceforge.py -> build/lib/lastversion/repo_holders 2025-10-11 02:20:39,492 root INFO copying src/lastversion/repo_holders/github.py -> build/lib/lastversion/repo_holders 2025-10-11 02:20:39,492 root INFO copying src/lastversion/repo_holders/wikipedia.py -> build/lib/lastversion/repo_holders 2025-10-11 02:20:39,492 root INFO copying src/lastversion/repo_holders/__init__.py -> build/lib/lastversion/repo_holders 2025-10-11 02:20:39,492 root INFO copying src/lastversion/repo_holders/mercurial.py -> build/lib/lastversion/repo_holders 2025-10-11 02:20:39,492 root INFO copying src/lastversion/repo_holders/helmchat.py -> build/lib/lastversion/repo_holders 2025-10-11 02:20:39,492 root INFO copying src/lastversion/repo_holders/feed.py -> build/lib/lastversion/repo_holders 2025-10-11 02:20:39,492 root INFO copying src/lastversion/repo_holders/test.py -> build/lib/lastversion/repo_holders 2025-10-11 02:20:39,492 root INFO running egg_info 2025-10-11 02:20:39,494 root INFO creating src/lastversion.egg-info 2025-10-11 02:20:39,494 root INFO writing src/lastversion.egg-info/PKG-INFO 2025-10-11 02:20:39,496 root INFO writing dependency_links to src/lastversion.egg-info/dependency_links.txt 2025-10-11 02:20:39,497 root INFO writing entry points to src/lastversion.egg-info/entry_points.txt 2025-10-11 02:20:39,498 root INFO writing requirements to src/lastversion.egg-info/requires.txt 2025-10-11 02:20:39,498 root INFO writing top-level names to src/lastversion.egg-info/top_level.txt 2025-10-11 02:20:39,498 root INFO writing manifest file 'src/lastversion.egg-info/SOURCES.txt' 2025-10-11 02:20:39,500 root INFO reading manifest file 'src/lastversion.egg-info/SOURCES.txt' 2025-10-11 02:20:39,500 root INFO reading manifest template 'MANIFEST.in' 2025-10-11 02:20:39,500 root INFO adding license file 'LICENSE' 2025-10-11 02:20:39,501 root INFO writing manifest file 'src/lastversion.egg-info/SOURCES.txt' 2025-10-11 02:20:39,506 root INFO installing to build/bdist.linux-x86_64/wheel 2025-10-11 02:20:39,506 root INFO running install 2025-10-11 02:20:39,510 root INFO running install_lib 2025-10-11 02:20:39,512 root INFO creating build/bdist.linux-x86_64/wheel 2025-10-11 02:20:39,512 root INFO creating build/bdist.linux-x86_64/wheel/lastversion 2025-10-11 02:20:39,512 root INFO copying build/lib/lastversion/argparse_version.py -> build/bdist.linux-x86_64/wheel/./lastversion 2025-10-11 02:20:39,512 root INFO copying build/lib/lastversion/lastversion.py -> build/bdist.linux-x86_64/wheel/./lastversion 2025-10-11 02:20:39,512 root INFO copying build/lib/lastversion/utils.py -> build/bdist.linux-x86_64/wheel/./lastversion 2025-10-11 02:20:39,513 root INFO copying build/lib/lastversion/holder_factory.py -> build/bdist.linux-x86_64/wheel/./lastversion 2025-10-11 02:20:39,513 root INFO copying build/lib/lastversion/exceptions.py -> build/bdist.linux-x86_64/wheel/./lastversion 2025-10-11 02:20:39,513 root INFO creating build/bdist.linux-x86_64/wheel/lastversion/repo_holders 2025-10-11 02:20:39,513 root INFO copying build/lib/lastversion/repo_holders/base.py -> build/bdist.linux-x86_64/wheel/./lastversion/repo_holders 2025-10-11 02:20:39,513 root INFO copying build/lib/lastversion/repo_holders/local.py -> build/bdist.linux-x86_64/wheel/./lastversion/repo_holders 2025-10-11 02:20:39,513 root INFO copying build/lib/lastversion/repo_holders/wordpress.py -> build/bdist.linux-x86_64/wheel/./lastversion/repo_holders 2025-10-11 02:20:39,513 root INFO copying build/lib/lastversion/repo_holders/system.py -> build/bdist.linux-x86_64/wheel/./lastversion/repo_holders 2025-10-11 02:20:39,513 root INFO copying build/lib/lastversion/repo_holders/bibucket.py -> build/bdist.linux-x86_64/wheel/./lastversion/repo_holders 2025-10-11 02:20:39,513 root INFO copying build/lib/lastversion/repo_holders/pypi.py -> build/bdist.linux-x86_64/wheel/./lastversion/repo_holders 2025-10-11 02:20:39,513 root INFO copying build/lib/lastversion/repo_holders/gitea.py -> build/bdist.linux-x86_64/wheel/./lastversion/repo_holders 2025-10-11 02:20:39,513 root INFO copying build/lib/lastversion/repo_holders/gitlab.py -> build/bdist.linux-x86_64/wheel/./lastversion/repo_holders 2025-10-11 02:20:39,513 root INFO copying build/lib/lastversion/repo_holders/sourceforge.py -> build/bdist.linux-x86_64/wheel/./lastversion/repo_holders 2025-10-11 02:20:39,513 root INFO copying build/lib/lastversion/repo_holders/github.py -> build/bdist.linux-x86_64/wheel/./lastversion/repo_holders 2025-10-11 02:20:39,513 root INFO copying build/lib/lastversion/repo_holders/wikipedia.py -> build/bdist.linux-x86_64/wheel/./lastversion/repo_holders 2025-10-11 02:20:39,513 root INFO copying build/lib/lastversion/repo_holders/__init__.py -> build/bdist.linux-x86_64/wheel/./lastversion/repo_holders 2025-10-11 02:20:39,513 root INFO copying build/lib/lastversion/repo_holders/mercurial.py -> build/bdist.linux-x86_64/wheel/./lastversion/repo_holders 2025-10-11 02:20:39,513 root INFO copying build/lib/lastversion/repo_holders/helmchat.py -> build/bdist.linux-x86_64/wheel/./lastversion/repo_holders 2025-10-11 02:20:39,514 root INFO copying build/lib/lastversion/repo_holders/feed.py -> build/bdist.linux-x86_64/wheel/./lastversion/repo_holders 2025-10-11 02:20:39,514 root INFO copying build/lib/lastversion/repo_holders/test.py -> build/bdist.linux-x86_64/wheel/./lastversion/repo_holders 2025-10-11 02:20:39,514 root INFO copying build/lib/lastversion/spdx_id_to_rpmspec.py -> build/bdist.linux-x86_64/wheel/./lastversion 2025-10-11 02:20:39,514 root INFO copying build/lib/lastversion/version.py -> build/bdist.linux-x86_64/wheel/./lastversion 2025-10-11 02:20:39,514 root INFO copying build/lib/lastversion/__init__.py -> build/bdist.linux-x86_64/wheel/./lastversion 2025-10-11 02:20:39,514 root INFO copying build/lib/lastversion/__main__.py -> build/bdist.linux-x86_64/wheel/./lastversion 2025-10-11 02:20:39,514 root INFO copying build/lib/lastversion/__about__.py -> build/bdist.linux-x86_64/wheel/./lastversion 2025-10-11 02:20:39,514 root INFO running install_egg_info 2025-10-11 02:20:39,516 root INFO Copying src/lastversion.egg-info to build/bdist.linux-x86_64/wheel/./lastversion-3.5.7-py3.12.egg-info 2025-10-11 02:20:39,516 root INFO running install_scripts 2025-10-11 02:20:39,517 root INFO creating build/bdist.linux-x86_64/wheel/lastversion-3.5.7.dist-info/WHEEL 2025-10-11 02:20:39,517 wheel INFO creating '/home/udu/aports/community/lastversion/src/lastversion-3.5.7/.dist/.tmp-o1a_rz05/lastversion-3.5.7-py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it 2025-10-11 02:20:39,517 wheel INFO adding 'lastversion/__about__.py' 2025-10-11 02:20:39,517 wheel INFO adding 'lastversion/__init__.py' 2025-10-11 02:20:39,517 wheel INFO adding 'lastversion/__main__.py' 2025-10-11 02:20:39,517 wheel INFO adding 'lastversion/argparse_version.py' 2025-10-11 02:20:39,517 wheel INFO adding 'lastversion/exceptions.py' 2025-10-11 02:20:39,517 wheel INFO adding 'lastversion/holder_factory.py' 2025-10-11 02:20:39,518 wheel INFO adding 'lastversion/lastversion.py' 2025-10-11 02:20:39,518 wheel INFO adding 'lastversion/spdx_id_to_rpmspec.py' 2025-10-11 02:20:39,518 wheel INFO adding 'lastversion/utils.py' 2025-10-11 02:20:39,518 wheel INFO adding 'lastversion/version.py' 2025-10-11 02:20:39,518 wheel INFO adding 'lastversion/repo_holders/__init__.py' 2025-10-11 02:20:39,518 wheel INFO adding 'lastversion/repo_holders/base.py' 2025-10-11 02:20:39,518 wheel INFO adding 'lastversion/repo_holders/bibucket.py' 2025-10-11 02:20:39,518 wheel INFO adding 'lastversion/repo_holders/feed.py' 2025-10-11 02:20:39,518 wheel INFO adding 'lastversion/repo_holders/gitea.py' 2025-10-11 02:20:39,518 wheel INFO adding 'lastversion/repo_holders/github.py' 2025-10-11 02:20:39,518 wheel INFO adding 'lastversion/repo_holders/gitlab.py' 2025-10-11 02:20:39,518 wheel INFO adding 'lastversion/repo_holders/helmchat.py' 2025-10-11 02:20:39,519 wheel INFO adding 'lastversion/repo_holders/local.py' 2025-10-11 02:20:39,519 wheel INFO adding 'lastversion/repo_holders/mercurial.py' 2025-10-11 02:20:39,519 wheel INFO adding 'lastversion/repo_holders/pypi.py' 2025-10-11 02:20:39,519 wheel INFO adding 'lastversion/repo_holders/sourceforge.py' 2025-10-11 02:20:39,519 wheel INFO adding 'lastversion/repo_holders/system.py' 2025-10-11 02:20:39,519 wheel INFO adding 'lastversion/repo_holders/test.py' 2025-10-11 02:20:39,519 wheel INFO adding 'lastversion/repo_holders/wikipedia.py' 2025-10-11 02:20:39,519 wheel INFO adding 'lastversion/repo_holders/wordpress.py' 2025-10-11 02:20:39,519 wheel INFO adding 'lastversion-3.5.7.dist-info/licenses/LICENSE' 2025-10-11 02:20:39,519 wheel INFO adding 'lastversion-3.5.7.dist-info/METADATA' 2025-10-11 02:20:39,519 wheel INFO adding 'lastversion-3.5.7.dist-info/WHEEL' 2025-10-11 02:20:39,519 wheel INFO adding 'lastversion-3.5.7.dist-info/entry_points.txt' 2025-10-11 02:20:39,519 wheel INFO adding 'lastversion-3.5.7.dist-info/top_level.txt' 2025-10-11 02:20:39,519 wheel INFO adding 'lastversion-3.5.7.dist-info/RECORD' 2025-10-11 02:20:39,520 root INFO removing build/bdist.linux-x86_64/wheel 2025-10-11 02:20:39,520 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.11, pytest-8.3.5, pluggy-1.5.0 rootdir: /home/udu/aports/community/lastversion/src/lastversion-3.5.7 collected 21 items tests/test_cli.py ........FF [ 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_unzip_osx_bundle _____________________________ capsys = <_pytest.capture.CaptureFixture object at 0x7387121fc3e0> 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/udu/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="", 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/udu/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/udu/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/udu/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/udu/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 684, in get_latest ret = self.find_in_tags(ret, pre_ok, major) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 465, in find_in_tags c = self.repo_query(f'/git/commits/{t["commit"]["sha"]}') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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 "", line 198, in _run_module_as_main File "", line 88, in _run_code File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in 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: 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/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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/udu/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/udu/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/udu/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 684, in get_latest ret = self.find_in_tags(ret, pre_ok, major) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 465, in find_in_tags c = self.repo_query(f'/git/commits/{t["commit"]["sha"]}') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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 "", line 198, in _run_module_as_main File "", line 88, in _run_code File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in 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: 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/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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/udu/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/udu/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/udu/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 684, in get_latest ret = self.find_in_tags(ret, pre_ok, major) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 465, in find_in_tags c = self.repo_query(f'/git/commits/{t["commit"]["sha"]}') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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 "", line 198, in _run_module_as_main File "", line 88, in _run_code File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in 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: 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/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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/udu/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/udu/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/udu/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 684, in get_latest ret = self.find_in_tags(ret, pre_ok, major) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 465, in find_in_tags c = self.repo_query(f'/git/commits/{t["commit"]["sha"]}') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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 "", line 198, in _run_module_as_main File "", line 88, in _run_code File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in 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: 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/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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/udu/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/udu/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/udu/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 684, in get_latest ret = self.find_in_tags(ret, pre_ok, major) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 465, in find_in_tags c = self.repo_query(f'/git/commits/{t["commit"]["sha"]}') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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 "", line 198, in _run_module_as_main File "", line 88, in _run_code File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in 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: 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/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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/udu/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/udu/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/udu/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 684, in get_latest ret = self.find_in_tags(ret, pre_ok, major) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 465, in find_in_tags c = self.repo_query(f'/git/commits/{t["commit"]["sha"]}') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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 "", line 198, in _run_module_as_main File "", line 88, in _run_code File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in 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: 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/udu/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/udu/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/udu/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/udu/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/udu/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 684, in get_latest ret = self.find_in_tags(ret, pre_ok, major) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 465, in find_in_tags c = self.repo_query(f'/git/commits/{t["commit"]["sha"]}') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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 "", line 198, in _run_module_as_main File "", line 88, in _run_code File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in 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: 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/udu/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/udu/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/udu/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/udu/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/udu/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 684, in get_latest ret = self.find_in_tags(ret, pre_ok, major) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 465, in find_in_tags c = self.repo_query(f'/git/commits/{t["commit"]["sha"]}') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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 "", line 198, in _run_module_as_main File "", line 88, in _run_code File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in 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: 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/udu/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/udu/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/udu/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/udu/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/udu/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 684, in get_latest ret = self.find_in_tags(ret, pre_ok, major) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 465, in find_in_tags c = self.repo_query(f'/git/commits/{t["commit"]["sha"]}') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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 "", line 198, in _run_module_as_main File "", line 88, in _run_code File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in 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: 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/udu/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/udu/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/udu/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/udu/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/udu/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 684, in get_latest ret = self.find_in_tags(ret, pre_ok, major) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py", line 465, in find_in_tags c = self.repo_query(f'/git/commits/{t["commit"]["sha"]}') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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 "", line 198, in _run_module_as_main File "", line 88, in _run_code File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in 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: 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/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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 0x738710e0f620> 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/udu/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="", 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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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 "", line 198, in _run_module_as_main File "", line 88, in _run_code File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in 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: 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/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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 "", line 198, in _run_module_as_main File "", line 88, in _run_code File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in 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: 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/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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 "", line 198, in _run_module_as_main File "", line 88, in _run_code File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in 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: 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/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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 "", line 198, in _run_module_as_main File "", line 88, in _run_code File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in 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: 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/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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 "", line 198, in _run_module_as_main File "", line 88, in _run_code File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in 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: 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/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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 "", line 198, in _run_module_as_main File "", line 88, in _run_code File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in 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: 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/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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 "", line 198, in _run_module_as_main File "", line 88, in _run_code File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in 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: 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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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 "", line 198, in _run_module_as_main File "", line 88, in _run_code File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in 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: 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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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 "", line 198, in _run_module_as_main File "", line 88, in _run_code File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in 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: 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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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 "", line 198, in _run_module_as_main File "", line 88, in _run_code File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in 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: 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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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 "", line 198, in _run_module_as_main File "", line 88, in _run_code File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in 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: 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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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 "", line 198, in _run_module_as_main File "", line 88, in _run_code File "/usr/lib/python3.12/site-packages/pytest/__main__.py", line 9, in 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: 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/udu/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/udu/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 3588s. API says: API rate limit exceeded for 95.216.219.126. (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/udu/aports/community/lastversion/src/lastversion-3.5.7/tests/test_hg.py:17: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/udu/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/udu/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/udu/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/udu/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/udu/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/udu/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 = url = 'https://api.github.com/repos/nginx/nginx/releases', kwargs = {} r = , remaining = 0, wait_for = 3580 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 3580s. API says: API rate limit exceeded for 95.216.219.126. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.) /home/udu/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py:239: ApiCredentialsError =============================== warnings summary =============================== tests/test_cli.py::test_cli_gt_first_arg_is_repo tests/test_cli.py::test_unzip_osx_bundle_strip tests/test_cli.py::test_unzip_osx_bundle /home/udu/aports/community/lastversion/src/lastversion-3.5.7/.testenv/lib/python3.12/site-packages/lastversion/repo_holders/github.py:649: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC). datetime.utcnow() - timedelta(days=365) -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ 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... ================== 3 failed, 18 passed, 3 warnings in 23.36s =================== >>> ERROR: lastversion: check failed >>> lastversion: Uninstalling dependencies... (1/60) Purging .makedepends-lastversion (20251011.022038) (2/60) Purging py3-appdirs-pyc (1.4.4-r8) (3/60) Purging py3-appdirs (1.4.4-r8) (4/60) Purging py3-beautifulsoup4-pyc (4.13.4-r0) (5/60) Purging py3-beautifulsoup4 (4.13.4-r0) (6/60) Purging py3-soupsieve-pyc (2.7-r0) (7/60) Purging py3-soupsieve (2.7-r0) (8/60) Purging py3-typing-extensions-pyc (4.13.2-r0) (9/60) Purging py3-typing-extensions (4.13.2-r0) (10/60) Purging py3-cachecontrol-pyc (0.14.3-r0) (11/60) Purging py3-cachecontrol (0.14.3-r0) (12/60) Purging py3-msgpack-pyc (1.0.8-r1) (13/60) Purging py3-msgpack (1.0.8-r1) (14/60) Purging py3-dateutil-pyc (2.9.0-r1) (15/60) Purging py3-dateutil (2.9.0-r1) (16/60) Purging py3-six-pyc (1.17.0-r0) (17/60) Purging py3-six (1.17.0-r0) (18/60) Purging py3-distro-pyc (1.9.0-r2) (19/60) Purging py3-distro (1.9.0-r2) (20/60) Purging py3-feedparser-pyc (6.0.11-r2) (21/60) Purging py3-feedparser (6.0.11-r2) (22/60) Purging py3-sgmllib3k-pyc (1.0.0-r11) (23/60) Purging py3-sgmllib3k (1.0.0-r11) (24/60) Purging py3-filelock-pyc (3.16.1-r1) (25/60) Purging py3-filelock (3.16.1-r1) (26/60) Purging py3-requests-pyc (2.32.5-r0) (27/60) Purging py3-requests (2.32.5-r0) (28/60) Purging py3-certifi-pyc (2025.4.26-r0) (29/60) Purging py3-certifi (2025.4.26-r0) (30/60) Purging py3-charset-normalizer-pyc (3.4.2-r0) (31/60) Purging py3-charset-normalizer (3.4.2-r0) (32/60) Purging py3-idna-pyc (3.10-r0) (33/60) Purging py3-idna (3.10-r0) (34/60) Purging py3-tqdm-pyc (4.67.1-r0) (35/60) Purging py3-tqdm (4.67.1-r0) (36/60) Purging py3-urllib3-pyc (1.26.20-r0) (37/60) Purging py3-urllib3 (1.26.20-r0) (38/60) Purging py3-yaml-pyc (6.0.2-r0) (39/60) Purging py3-yaml (6.0.2-r0) (40/60) Purging py3-gpep517-pyc (19-r0) (41/60) Purging py3-gpep517 (19-r0) (42/60) Purging py3-installer-pyc (0.7.0-r2) (43/60) Purging py3-installer (0.7.0-r2) (44/60) Purging py3-setuptools-pyc (80.9.0-r0) (45/60) Purging py3-setuptools (80.9.0-r0) (46/60) Purging py3-wheel-pyc (0.46.1-r0) (47/60) Purging py3-wheel (0.46.1-r0) (48/60) Purging py3-pytest-pyc (8.3.5-r0) (49/60) Purging py3-pytest (8.3.5-r0) (50/60) Purging py3-iniconfig-pyc (2.1.0-r0) (51/60) Purging py3-iniconfig (2.1.0-r0) (52/60) Purging py3-packaging-pyc (25.0-r0) (53/60) Purging py3-packaging (25.0-r0) (54/60) Purging py3-parsing-pyc (3.2.3-r0) (55/60) Purging py3-parsing (3.2.3-r0) (56/60) Purging py3-pluggy-pyc (1.5.0-r0) (57/60) Purging py3-pluggy (1.5.0-r0) (58/60) Purging py3-py-pyc (1.11.0-r4) (59/60) Purging py3-py (1.11.0-r4) (60/60) Purging yaml (0.2.5-r2) Executing busybox-1.37.0-r19.trigger OK: 296 MiB in 89 packages