commit d5aee4aac1b6b5ae1f83b7ba1331c9478c111f9ce7b0f0d564cb0264def68037 Author: Steve Kowalik Date: Thu Sep 25 04:40:19 2025 +0000 - Add missing BuildRequires on pytest-asyncio. OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-devpi-server?expand=0&rev=30 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/devpi_server-6.11.0.tar.gz b/devpi_server-6.11.0.tar.gz new file mode 100644 index 0000000..4064245 --- /dev/null +++ b/devpi_server-6.11.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8e32d1f1978e85843b29dc9a8c4446a054287ef2b90fa25f4fb3d8978be9c76 +size 266378 diff --git a/python-devpi-server.changes b/python-devpi-server.changes new file mode 100644 index 0000000..5b3e2ab --- /dev/null +++ b/python-devpi-server.changes @@ -0,0 +1,267 @@ +------------------------------------------------------------------- +Thu Sep 25 04:39:49 UTC 2025 - Steve Kowalik + +- Add missing BuildRequires on pytest-asyncio. + +------------------------------------------------------------------- +Tue May 28 09:33:23 UTC 2024 - John Paul Adrian Glaubitz + +- Update to version 6.11.0 + * The ``devpi-fsck`` script now returns an error code when + there have been missing files or checksum errors. + * Fix #983: Add plugin hook for mirror authentication header. + * Preserve last modified of docs and toxresults during export/import. + * Fix #1033: Use ``int`` for ``--mirror-cache-expiry`` to fix value of + ``proxy_cache_valid`` in nginx caching config. +- from version 6.10.0 + * Use ``Authorization`` header instead of adding username/password + to URL when fetching from mirror. + * Fix #998: Use the pure Python httpx library instead of aiohttp to + prevent delays in supporting newest Python releases. + * Fix #996: support hashes other than sha256 in application/\ + vnd.pypi.simple.v1+json responses. + * Only compare hostname instead of full URL prefix when parsing mirror + packages to fix mirrors with basic authentication and absolute URLs. + See #1006 +- Adjust upstream source name in spec file +- Remove unrecognized --slow parameter from pytest command line +- Update BuildRequires and Requires from setup.py + +------------------------------------------------------------------- +Thu Oct 19 01:15:47 UTC 2023 - Steve Kowalik + +- Switch to pyproject macros. +- Stop using greedy globs in %files. +- Clean up skipping tests, packaging >22 is now required + +------------------------------------------------------------------- +Thu Aug 10 11:53:00 UTC 2023 - Dominique Leuenberger + +- Update to version 6.9.2: + * Prevent duplicates when adding values to lists in index + configuration with ``+=`` operator. +- Changes from version 6.9.1: + * Prevent error in find_pre_existing_file in case of incomplete + metadata. + * Remove long deprecated backward compatibility for old pluggy + versions to fix error with pluggy 1.1.0. +- Changes from version 6.9.0: + * Features + - Support export directory layout for + ``--replica-file-search-path`` option. + - Fix #931: Add ``mirror_no_project_list`` setting for mirror + indexes that have no full project list like google cloud + artifacts or if you want to prevent downloading the full list + for huge indexes like PyPI. + * Bug Fixes + - Keep a reference to async tasks to avoid their removal mid + execution. + - Support changed default of ``enforce_content_length`` in + urllib3 >= 2. + - Fix #934: Properly set PATH_INFO when outside URL is used + with sub-path. + - Fix #945: Adapt FatalError to be usable as an async HTTP + response when updating a project on a mirror. + - Fix wrong hash metadata introduced in 6.5.0 for toxresults + which prevents replication. The metadata can be fixed by an + export/import cycle. + +------------------------------------------------------------------- +Fri Jun 9 07:35:18 UTC 2023 - ecsos + +- Add %{?sle15_python_module_pythons} + +------------------------------------------------------------------- +Mon Apr 10 07:28:50 UTC 2023 - Daniel Garcia + +- Disable broken tests with latest version of python-packaging. gh#devpi/devpi#948 + +------------------------------------------------------------------- +Tue Dec 13 04:54:49 UTC 2022 - Yogalakshmi Arunachalam + +- Update to version 6.8.0 + * Features + - Fix #929: Cache normalized project names per transaction on mirror index instances. + * Bug Fixes + - Fix #914: add locking to list_projects_perstage of mirror indexes to + prevent multiple slow concurrent updates of the full project name list. + - Catch exceptions in async_httpget analog to httpget. + - Add locking to mirror name cache to prevent race condition on updates. + +------------------------------------------------------------------- +Fri Oct 21 07:47:48 UTC 2022 - Daniel Garcia + +- Version update to 6.7.0 + 6.7.0 (2022-09-28) + ================== + Features + -------- + - Add nginx example to devpi-gen-config with caching of simple pages for + installers like pip. + - Automatically check for +files when using --replica-file-search-path. + - Set headers to prevent caching for simple links with stale results. + Bug Fixes + --------- + - Fix #840: Correct url scheme in config if nginx is behind another proxy. + + 6.6.1 (2022-09-12) + ================== + Bug Fixes + --------- + - Fix slowdown introduced in 6.6.0 when simple links for mirrors are + requested more than once in the same thread. + - Removed preservation of original server uuid during import. Imported state + is different from the original server. Replicas could not detect the change + and get into an inconsistent state. + - Prevent cache trashing when updating simple links on mirrors for projects + with huge number of releases. + - Preserve toxresult filenames during import to keep them being accessible on + the same URLs after the fix for #686 in 5.2.0. + + 6.6.0 (2022-08-16) + ================== + Features + -------- + - Fix #592: return dict from list_projects_perstage of mirrors where the + values contain the un-normalized project name. This allows support in + devpi-web 4.1.0 to index them correctly. + - Check name in project list instead of fetching project page for mirrors. + This improves response times and avoids leaking typos of private package + names upstream. + - Use ETag header if provided by mirror to reduce bandwidth usage and + latency. + - Prevent concurrent updates of simple links on mirrors with a short lived + lock. + - Support PEP-691 conformant fetching for mirrors, and requests with JSON + result for installers. Proxy servers should add compression support for the + application/vnd.pypi.simple.v1+json content type (gzip_types for nginx). + Bug Fixes + --------- + - Fix #743: support PEP427 escaped wheels with local version, where the + is + replaced by _. + - Fix #895: store and return content of data-yanked. + - Fix #908: include basic auth from mirror_url when fetching packages. + - Fix #914: switch to write transaction as late as possible when streaming a + file from a mirror. + +------------------------------------------------------------------- +Mon May 2 09:29:09 UTC 2022 - pgajdos@suse.com + +- version update to 6.5.1 + 6.5.1 (2022-04-25) + ================== + Bug Fixes + --------- + - Fix traceback when trying to delete already deleted release or toxresult. + - Preserve index config settings of plugins during import instead of aborting, even if the plugin isn't installed during import. + 6.5.0 (2022-03-18) + ================== + Features + -------- + - Added ``--no-checksum`` option to ``devpi-fsck`` to skip checksum validation and only check for file existence. + - Split keyfs cache into a small changelog cache and a relpath cache, this lowers overall memory usage and prevents cache trashing. + - Lower memory usage by avoiding to read release files into memory and instead use existing file objects. + - Switch to ``platformdirs`` from ``appdirs``. + - Add streaming replica protocol, which is faster and uses less memory, especially when rebuilding a replica. + - Better logging and handling if a thread unexpectedly dies. + Bug Fixes + --------- + - Fix #871: authentication info in ``mirror_url`` wasn't passed on to release links anymore. + - Open database connection after file was downloaded during replication to avoid conflicts and locking. + - Avoid hashing data twice when writing to storage. + - Close HTTP responses and sessions when done to free resources as early as possible instead of waiting for garbage collection. + 6.4.0 (2022-01-24) + ================== + Deprecations and Removals + ------------------------- + - As announced with 6.0.0, support for Python 3.6 has been dropped, because it has reached its end of life. + Features + -------- + - When an installer user agent is detected the full list of projects is returned unsorted and with less info to improve performance and reduce memory usage. + Bug Fixes + --------- + - Use ``__slots__`` for some classes to reduce memory usage. + - Fix exceptions related to logging for some edge cases. + 6.3.1 (2021-12-07) + ================== + Bug Fixes + --------- + - Fix #864: enable settings from ``~/.netrc`` and ``HTTP_PROXY``/``HTTPS_PROXY`` env vars for aiohttp. + 6.3.0 (2021-11-19) + ================== + Features + -------- + - Use aiohttp (asyncio) for fetching release links from mirrors to return stale links immediately in case of a timeout, but update the database in the background for the next request. + Bug Fixes + --------- + - fix #853: prevent duplicate mirror indexes in sro method when there are multiple inheritance chains to the same mirror + - fix #860: don't check for existing files and validate them during mirror links update, the operation is way to expensive and there is a low possibility for errors. + - Add missing `lazy` package dependency. Previously this was only a transitive dependency coming from the devpi-common package. + +------------------------------------------------------------------- +Mon Nov 8 11:58:00 UTC 2021 - Dirk Müller + +- update to 6.2.0: + * Optimized some database access patterns. A new index is added to the + database on first startup. For large databases that can take a while. + * Improved performance of loads from database. + * Optimized memory and cache use for database access. + * Use frozenset for project name cache of mirror indexes. This mitigates + memory fragmentation on some Linux distributions. + +------------------------------------------------------------------- +Tue Aug 3 09:11:58 UTC 2021 - Markéta Machová + +- Update to 6.1.0 + * Proxy requests from replica to master are now streamed if possible. + * Dropped support for Python 2.7, 3.4 and 3.5. Python 3.x versions + will be supported until their EOL. + * Remove deprecated command line options which were replaced by + separate scripts. + * The user creation and modification time is now stored. + * add explicit ruamel.yaml dependency declaration after strictyaml + vendored it + * Allow user and index URLs to work with a trailing slash. + +------------------------------------------------------------------- +Tue May 26 07:22:39 UTC 2020 - Petr Gajdos + +- %python3_only -> %python_alternative + +------------------------------------------------------------------- +Thu Apr 2 11:26:56 UTC 2020 - Marketa Calabkova + +- Update to 5.4.1 + * This is the last feature release with Python 2.7 support! + * Import won't abort anymore when a base index was removed. + The bases setting will be imported as is. + * The ``requires_python`` metadata is now included in version + data on mirror indexes. + * Downloaded files from mirrors can be included in exports with + the ``--include-mirrored-files`` option. + * On import files for mirror indexes are now imported when they + were included in the dump (see ``--include-mirrored-files``). + * Fix ``--no-root-pypi`` option when importing devpi data. + * Fix pushing from mirror to an index when the file was removed + and ``mirror_use_external_urls`` is active. +- Drop Python2 anyway because of pyramid dropping Python2 + +------------------------------------------------------------------- +Sun Jan 12 00:25:31 CET 2020 - Matej Cepl + +- Update from 5.1.0 to 5.3.1: + see + https://devpi.net/docs/devpi/devpi/stable/+d/changelog.html#devpi-server + for detailed changelog. + Many options to devpi (e.g., devpi --export) were replaced by + the dedicated commands (e.g., devpi-export). + +------------------------------------------------------------------- +Tue Sep 17 11:16:44 UTC 2019 - Jan Engelhardt + +- Ensure neutrality of descriptions. + +------------------------------------------------------------------- +Fri Dec 12 19:29:23 UTC 2014 - tbechtold@suse.com + +- Initial version diff --git a/python-devpi-server.spec b/python-devpi-server.spec new file mode 100644 index 0000000..f850028 --- /dev/null +++ b/python-devpi-server.spec @@ -0,0 +1,146 @@ +# +# spec file for package python-devpi-server +# +# Copyright (c) 2025 SUSE LLC and contributors +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%define commands export fsck gen-config import init passwd server gen-secret + +%{?sle15_python_module_pythons} +Name: python-devpi-server +Version: 6.11.0 +Release: 0 +Summary: Private PyPI caching server +License: MIT +URL: https://doc.devpi.net +Source: https://files.pythonhosted.org/packages/source/d/devpi-server/devpi_server-%{version}.tar.gz +BuildRequires: %{python_module httpx} +BuildRequires: %{python_module pip} +BuildRequires: %{python_module setuptools} +BuildRequires: %{python_module wheel} +BuildRequires: fdupes +BuildRequires: python-rpm-macros +Requires: python-aiohttp +Requires: python-argon2-cffi >= 16.2 +Requires: python-attrs +Requires: python-defusedxml +Requires: python-devpi-common >= 3.3.0 +Requires: python-execnet >= 1.2 +Requires: python-httpx +Requires: python-itsdangerous >= 0.24 +Requires: python-lazy +Requires: python-passlib +Requires: python-platformdirs +Requires: python-pluggy >= 0.6.0 +Requires: python-py >= 1.4.23 +Requires: python-pyramid >= 2 +Requires: python-repoze.lru >= 0.6 +Requires: python-ruamel.yaml >= 0.15.94 +Requires: python-strictyaml +Requires: python-waitress >= 1.0.1 +Requires(post): update-alternatives +Requires(postun): update-alternatives +# nginx tests failing when not skipped, likely due to rpmbuild environment +Suggests: nginx +Suggests: python-WebTest +Suggests: python-beautifulsoup4 +# https://github.com/devpi/devpi/issues/705 +BuildArch: noarch +# SECTION test requirements +BuildRequires: %{python_module WebTest} +BuildRequires: %{python_module aiohttp} +BuildRequires: %{python_module argon2-cffi >= 16.2} +BuildRequires: %{python_module attrs} +BuildRequires: %{python_module beautifulsoup4} +BuildRequires: %{python_module defusedxml} +BuildRequires: %{python_module devpi-common >= 3.3.0} +BuildRequires: %{python_module execnet >= 1.2} +BuildRequires: %{python_module itsdangerous >= 0.24} +BuildRequires: %{python_module lazy} +BuildRequires: %{python_module passlib} +BuildRequires: %{python_module platformdirs} +BuildRequires: %{python_module pluggy >= 0.6.0} +BuildRequires: %{python_module py >= 1.4.23} +BuildRequires: %{python_module pyramid >= 2} +BuildRequires: %{python_module pytest-asyncio} +BuildRequires: %{python_module pytest} +BuildRequires: %{python_module repoze.lru >= 0.6} +BuildRequires: %{python_module ruamel.yaml >= 0.15.94} +BuildRequires: %{python_module strictyaml} +BuildRequires: %{python_module waitress >= 1.0.1} +# /SECTION +%python_subpackages + +%description +A private PyPI caching server, providing user or team based indices which can +inherit packages from each other or from the pypi.org site. + +%prep +%setup -q -n devpi_server-%{version} +sed -i "s/ruamel.yaml<=[^']*,/ruamel.yaml/g" setup.py +sed -i "s/--flake8//" tox.ini + +%build +%pyproject_wheel + +%install +%pyproject_install +for c in %{commands}; do + %python_clone -a %{buildroot}%{_bindir}/devpi-$c +done +%python_expand %fdupes %{buildroot}%{$python_sitelib} + +%check +export PYTHONDONTWRITEBYTECODE=1 + +donttest="test_auth_mirror_url" + +%{python_expand \ +mkdir bin-%{$python_version} +for c in %{commands}; do + ln -s %{buildroot}%{_bindir}/devpi-$c-%{$python_version} bin-%{$python_version}/devpi-$c +done +export PATH=$PATH:`pwd`/bin-%{$python_version} +export PYTHONPATH=:%{buildroot}%{$python_sitelib} +$python -m pytest --ignore test_devpi_server -k "not ($donttest)" %{buildroot}%{$python_sitelib}/test_devpi_server +} + +%post +for c in %{commands}; do + %python_install_alternative devpi-$c +done + +%postun +for c in %{commands}; do + %python_uninstall_alternative devpi-$c +done + +%files %{python_files} +%doc CHANGELOG README.rst +%license LICENSE +%python_alternative %{_bindir}/devpi-export +%python_alternative %{_bindir}/devpi-fsck +%python_alternative %{_bindir}/devpi-gen-config +%python_alternative %{_bindir}/devpi-import +%python_alternative %{_bindir}/devpi-init +%python_alternative %{_bindir}/devpi-passwd +%python_alternative %{_bindir}/devpi-server +%python_alternative %{_bindir}/devpi-gen-secret +%{python_sitelib}/devpi_server +%{python_sitelib}/test_devpi_server +%{python_sitelib}/pytest_devpi_server +%{python_sitelib}/devpi_server-%{version}.dist-info + +%changelog