Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-devpi-process for openSUSE:Factory checked in at 2023-10-03 20:15:27 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-devpi-process (Old) and /work/SRC/openSUSE:Factory/.python-devpi-process.new.28202 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-devpi-process" Tue Oct 3 20:15:27 2023 rev:2 rq:1114346 version:1.0.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-devpi-process/python-devpi-process.changes 2023-05-11 12:34:18.126943668 +0200 +++ /work/SRC/openSUSE:Factory/.python-devpi-process.new.28202/python-devpi-process.changes 2023-10-03 20:17:11.074655839 +0200 @@ -1,0 +2,13 @@ +Tue Sep 26 19:22:07 UTC 2023 - Torsten Gruner <t.gru...@katodev.de> + +- update to version 1.0.0 + * Exclude dependabot and pre-commit ci from release notes +- version 0.3.1 + * Add pyproject-fmt + * [pre-commit.ci] pre-commit autoupdate + * Bump deps and tools + * Bump pypa/gh-action-pypi-publish 1.8.6 + * Add ruff +- split package to prevent build dependency (multibuild) + +------------------------------------------------------------------- Old: ---- devpi_process-0.3.0.tar.gz New: ---- _multibuild devpi_process-1.0.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-devpi-process.spec ++++++ --- /var/tmp/diff_new_pack.x5Dp76/_old 2023-10-03 20:17:12.382703015 +0200 +++ /var/tmp/diff_new_pack.x5Dp76/_new 2023-10-03 20:17:12.382703015 +0200 @@ -1,5 +1,5 @@ # -# spec file for package python-devpi-process +# spec file # # Copyright (c) 2023 SUSE LLC # @@ -16,27 +16,43 @@ # +%global flavor @BUILD_FLAVOR@%{nil} +%if "%{flavor}" == "test" +%define psuffix -test +%bcond_without test +%else +%define psuffix %{nil} +%bcond_with test +%endif %{?sle15_python_module_pythons} -Name: python-devpi-process -Version: 0.3.0 +%define skip_python39 1 +Name: python-devpi-process%{psuffix} +Version: 1.0.0 Release: 0 Summary: Programmatic API to create and use a devpi server process License: MIT URL: https://github.com/tox-dev/devpi-process -Source: https://files.pythonhosted.org/packages/source/d/devpi_process/devpi_process-0.3.0.tar.gz +Source: https://files.pythonhosted.org/packages/source/d/devpi_process/devpi_process-%{version}.tar.gz +BuildRequires: %{python_module hatch-vcs >= 0.3} +BuildRequires: %{python_module hatchling >= 1.18} BuildRequires: %{python_module pip} +BuildRequires: %{python_module typing-extensions >= 4.7.1 if %python-base < 3.11} BuildRequires: %{python_module wheel} BuildRequires: fdupes BuildRequires: python-rpm-macros -Requires: python-devpi-client >= 6.0.2 -Requires: python-devpi-server >= 6.7 -Suggests: python-httpx >= 0.23.1 +Requires: python-devpi-client >= 6.0.5 +Requires: python-devpi-server >= 6.9.2 +Suggests: python-httpx >= 0.24.1 BuildArch: noarch # SECTION test requirements -BuildRequires: %{python_module devpi-client >= 6.0.2} -BuildRequires: %{python_module devpi-server >= 6.7} -BuildRequires: %{python_module httpx} -BuildRequires: %{python_module pytest >= 7.2} +%if %{with test} +BuildRequires: %{python_module covdefaults >= 2.3} +BuildRequires: %{python_module devpi-client >= 6.0.5} +BuildRequires: %{python_module devpi-server >= 6.8} +BuildRequires: %{python_module httpx >= 0.24.1} +BuildRequires: %{python_module pytest >= 7.4} +BuildRequires: %{python_module pytest-cov} +%endif # /SECTION %python_subpackages @@ -46,10 +62,10 @@ %prep %autosetup -p1 -n devpi_process-%{version} - -# Both of these issues are resolved in the upstream master -sed -i -e '/^license_file =/s/ =/s =/' \ - -e '/^name/aversion = %{version}' setup.cfg +# Fix version check for pytest +sed -i -e '/import devpi_process/a\ \ \ \ from importlib import metadata' tests/test_devpi_process.py +sed -i "s/^.*assert devpi_process.__version__/ assert metadata.version('devpi_process')/" tests/test_devpi_process.py +sed -i "s/from ._version import __version__/from ._version import version/" src/devpi_process/__init__.py %build %pyproject_wheel @@ -59,11 +75,16 @@ %python_expand %fdupes %{buildroot}%{$python_sitelib} %check +%if %{with test} %pytest +%python_expand rm -r -f %{buildroot}/usr +%endif +%if !%{with test} %files %{python_files} %doc CHANGELOG.md README.md %license LICENSE.txt %{python_sitelib}/devpi_process %{python_sitelib}/devpi_process-%{version}*-info +%endif ++++++ _multibuild ++++++ <multibuild> <package>test</package> </multibuild> ++++++ devpi_process-0.3.0.tar.gz -> devpi_process-1.0.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi_process-0.3.0/.github/release.yml new/devpi_process-1.0.0/.github/release.yml --- old/devpi_process-0.3.0/.github/release.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/devpi_process-1.0.0/.github/release.yml 2020-02-02 01:00:00.000000000 +0100 @@ -0,0 +1,5 @@ +changelog: + exclude: + authors: + - dependabot + - pre-commit-ci diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi_process-0.3.0/.github/workflows/check.yml new/devpi_process-1.0.0/.github/workflows/check.yml --- old/devpi_process-0.3.0/.github/workflows/check.yml 2022-12-03 23:52:08.000000000 +0100 +++ new/devpi_process-1.0.0/.github/workflows/check.yml 2020-02-02 01:00:00.000000000 +0100 @@ -1,6 +1,7 @@ name: check on: push: + tags-ignore: ["**"] pull_request: schedule: - cron: "0 8 * * *" @@ -19,12 +20,10 @@ py: - "3.11" - "3.10" - - "pypy-3.7-v7.3.7" # ahead to start it earlier because takes longer - "3.9" - "3.8" - - "3.7" os: - - ubuntu-22.04 + - ubuntu-latest - windows-2022 - macos-12 @@ -65,7 +64,7 @@ fail-fast: false matrix: os: - - ubuntu-22.04 + - ubuntu-latest - windows-2022 tox_env: - dev @@ -87,26 +86,3 @@ run: tox -vv --notest -e ${{ matrix.tox_env }} - name: Run test suite run: tox --skip-pkg-install -e ${{ matrix.tox_env }} - - publish: - if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') - needs: [check, test] - runs-on: ubuntu-latest - steps: - - name: Setup python to build package - uses: actions/setup-python@v4 - with: - python-version: "3.11" - - name: Install build - run: python -m pip install build - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - name: Build sdist and wheel - run: python -m build -s -w . -o dist - - name: Publish to PyPi - uses: pypa/gh-action-pypi-publish@v1.5.2 - with: - skip_existing: true - user: __token__ - password: ${{ secrets.pypi_password }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi_process-0.3.0/.github/workflows/release.yml new/devpi_process-1.0.0/.github/workflows/release.yml --- old/devpi_process-0.3.0/.github/workflows/release.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/devpi_process-1.0.0/.github/workflows/release.yml 2020-02-02 01:00:00.000000000 +0100 @@ -0,0 +1,27 @@ +name: Release to PyPI +on: + push: + tags: ["*"] + +jobs: + release: + runs-on: ubuntu-latest + environment: + name: release + url: https://pypi.org/p/devpi-process + permissions: + id-token: write + steps: + - name: Setup python to build package + uses: actions/setup-python@v4 + with: + python-version: "3.11" + - name: Install build + run: python -m pip install build + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Build package + run: pyproject-build -s -w . -o dist + - name: Publish to PyPI + uses: pypa/gh-action-pypi-publish@v1.8.10 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi_process-0.3.0/.gitignore new/devpi_process-1.0.0/.gitignore --- old/devpi_process-0.3.0/.gitignore 2022-12-03 23:52:08.000000000 +0100 +++ new/devpi_process-1.0.0/.gitignore 2020-02-02 01:00:00.000000000 +0100 @@ -1,11 +1,7 @@ -.idea -*.egg-info/ -.tox/ +/.tox .coverage* coverage.xml .*_cache __pycache__ **.pyc -build -dist -src/devpi_process/version.py +src/devpi_process/_version.py diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi_process-0.3.0/.pre-commit-config.yaml new/devpi_process-1.0.0/.pre-commit-config.yaml --- old/devpi_process-0.3.0/.pre-commit-config.yaml 2022-12-03 23:52:08.000000000 +0100 +++ new/devpi_process-1.0.0/.pre-commit-config.yaml 2020-02-02 01:00:00.000000000 +0100 @@ -2,68 +2,32 @@ - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.4.0 hooks: - - id: check-ast - - id: check-builtin-literals - - id: check-docstring-first - - id: check-merge-conflict - - id: check-yaml - - id: check-toml - - id: debug-statements - id: end-of-file-fixer - id: trailing-whitespace - - repo: https://github.com/asottile/pyupgrade - rev: v3.3.0 + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: "v0.0.285" hooks: - - id: pyupgrade - args: ["--py36-plus"] - - repo: https://github.com/PyCQA/isort - rev: 5.10.1 - hooks: - - id: isort + - id: ruff + args: [--fix, --exit-non-zero-on-fix] - repo: https://github.com/psf/black - rev: 22.10.0 + rev: 23.7.0 hooks: - id: black - args: [--safe] - - repo: https://github.com/asottile/blacken-docs - rev: v1.12.1 - hooks: - - id: blacken-docs - additional_dependencies: [black==22.10] - - repo: https://github.com/asottile/setup-cfg-fmt - rev: v2.2.0 - hooks: - - id: setup-cfg-fmt - repo: https://github.com/tox-dev/tox-ini-fmt - rev: "0.5.2" + rev: "1.3.1" hooks: - id: tox-ini-fmt args: ["-p", "fix"] - - repo: https://github.com/PyCQA/flake8 - rev: 6.0.0 + - repo: https://github.com/tox-dev/pyproject-fmt + rev: "0.13.1" hooks: - - id: flake8 - additional_dependencies: - - flake8-bugbear==22.10.27 - - flake8-comprehensions==3.10.1 - - flake8-pytest-style==1.6 - - flake8-spellcheck==0.28 - - flake8-unused-arguments==0.0.12 - - flake8-noqa==1.3 - - pep8-naming==0.13.2 - - flake8-pyproject==1.2.1 + - id: pyproject-fmt + additional_dependencies: ["tox>=4.8"] - repo: https://github.com/pre-commit/mirrors-prettier - rev: "v2.7.1" + rev: "v3.0.2" hooks: - id: prettier - additional_dependencies: - - prettier@2.7.1 - - "@prettier/plugin-xml@2.2" args: ["--print-width=120", "--prose-wrap=always"] - - repo: https://github.com/igorshubovych/markdownlint-cli - rev: v0.32.2 - hooks: - - id: markdownlint - repo: meta hooks: - id: check-hooks-apply diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi_process-0.3.0/CODE_OF_CONDUCT.md new/devpi_process-1.0.0/CODE_OF_CONDUCT.md --- old/devpi_process-0.3.0/CODE_OF_CONDUCT.md 2022-12-03 23:52:08.000000000 +0100 +++ new/devpi_process-1.0.0/CODE_OF_CONDUCT.md 2020-02-02 01:00:00.000000000 +0100 @@ -44,9 +44,9 @@ ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at -tox-...@python.org. The project team will review and investigate all complaints, and will respond in a way that it deems -appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter -of an incident. Further details of specific enforcement policies may be posted separately. +`tox-...@python.org`. The project team will review and investigate all complaints, and will respond in a way that it +deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the +reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi_process-0.3.0/PKG-INFO new/devpi_process-1.0.0/PKG-INFO --- old/devpi_process-0.3.0/PKG-INFO 2022-12-03 23:52:15.693089700 +0100 +++ new/devpi_process-1.0.0/PKG-INFO 2020-02-02 01:00:00.000000000 +0100 @@ -1,36 +1,47 @@ Metadata-Version: 2.1 -Name: devpi_process -Version: 0.3.0 +Name: devpi-process +Version: 1.0.0 Summary: devpi process provides a programmatic API to create and use a devpi server process -Home-page: https://github.com/tox-dev/devpi-process -Maintainer: Bernat Gabor -Maintainer-email: gaborjber...@gmail.com -License: MIT +Project-URL: Homepage, https://github.com/tox-dev/devpi-process#readme Project-URL: Source, https://github.com/tox-dev/devpi-process -Project-URL: Tracker, https://github.com/tox-dev/devpi-process -Keywords: devpi,programmatic -Platform: any +Project-URL: Tracker, https://github.com/tox-dev/devpi-process/issues +Author-email: Bernát Gábor <gaborjber...@gmail.com> +Maintainer-email: Bernát Gábor <gaborjber...@gmail.com> +License-Expression: MIT +License-File: LICENSE.txt +Keywords: environments,isolated,testing,virtual Classifier: Development Status :: 5 - Production/Stable +Classifier: Framework :: tox Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: MIT License Classifier: Operating System :: MacOS :: MacOS X Classifier: Operating System :: Microsoft :: Windows Classifier: Operating System :: POSIX -Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3 :: Only +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 Classifier: Topic :: Software Development :: Libraries +Classifier: Topic :: Software Development :: Testing Classifier: Topic :: Utilities -Requires-Python: >=3.7 -Description-Content-Type: text/markdown +Requires-Python: >=3.8 +Requires-Dist: devpi-client>=6.0.5 +Requires-Dist: devpi-server>=6.9.2 +Requires-Dist: typing-extensions>=4.7.1; python_version < '3.11' Provides-Extra: test -License-File: LICENSE.txt +Requires-Dist: covdefaults>=2.3; extra == 'test' +Requires-Dist: httpx>=0.24.1; extra == 'test' +Requires-Dist: pytest-cov>=4.1; extra == 'test' +Requires-Dist: pytest>=7.4; extra == 'test' +Description-Content-Type: text/markdown # devpi-process [](https://pypi.org/project/devpi-process) [](https://pypi.org/project/devpi-process) [](https://pypi.org/project/devpi-process) -[](https://pypistats.org/packages/devpi-process) +[](https://pepy.tech/project/devpi-process) [](https://opensource.org/licenses/MIT) [](https://github.com/tox-dev/devpi-process/actions?query=workflow%3Acheck) [](https://pypi.org/project/devpi-process) [](https://pypi.org/project/devpi-process) [](https://pypi.org/project/devpi-process) -[](https://pypistats.org/packages/devpi-process) +[](https://pepy.tech/project/devpi-process) [](https://opensource.org/licenses/MIT) [](https://github.com/tox-dev/devpi-process/actions?query=workflow%3Acheck) [![Code style: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi_process-0.3.0/codecov.yml new/devpi_process-1.0.0/codecov.yml --- old/devpi_process-0.3.0/codecov.yml 2022-12-03 23:52:08.000000000 +0100 +++ new/devpi_process-1.0.0/codecov.yml 1970-01-01 01:00:00.000000000 +0100 @@ -1,6 +0,0 @@ -coverage: - status: - patch: - default: - informational: true -comment: false diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi_process-0.3.0/pyproject.toml new/devpi_process-1.0.0/pyproject.toml --- old/devpi_process-0.3.0/pyproject.toml 2022-12-03 23:52:08.000000000 +0100 +++ new/devpi_process-1.0.0/pyproject.toml 2020-02-02 01:00:00.000000000 +0100 @@ -1,31 +1,106 @@ [build-system] -requires = ["setuptools>=65.6.3", "setuptools_scm>=7.0.5"] -build-backend = 'setuptools.build_meta' +build-backend = "hatchling.build" +requires = [ + "hatch-vcs>=0.3", + "hatchling>=1.18", +] + +[project] +name = "devpi-process" +description = "devpi process provides a programmatic API to create and use a devpi server process" +readme.content-type = "text/markdown" +readme.file = "README.md" +keywords = [ + "environments", + "isolated", + "testing", + "virtual", +] +license = "MIT" +maintainers = [{ name = "Bernát Gábor", email = "gaborjber...@gmail.com" }] +authors = [{ name = "Bernát Gábor", email = "gaborjber...@gmail.com" }] +requires-python = ">=3.8" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Framework :: tox", + "Intended Audience :: Developers", + "License :: OSI Approved :: MIT License", + "Operating System :: MacOS :: MacOS X", + "Operating System :: Microsoft :: Windows", + "Operating System :: POSIX", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Topic :: Software Development :: Libraries", + "Topic :: Software Development :: Testing", + "Topic :: Utilities", +] +dynamic = [ + "version", +] +dependencies = [ + "devpi-client>=6.0.5", + "devpi-server>=6.9.2", + 'typing-extensions>=4.7.1; python_version < "3.11"', +] +optional-dependencies.test = [ + "covdefaults>=2.3", + "httpx>=0.24.1", + "pytest>=7.4", + "pytest-cov>=4.1", +] +urls.Homepage = "https://github.com/tox-dev/devpi-process#readme" +urls.Source = "https://github.com/tox-dev/devpi-process" +urls.Tracker = "https://github.com/tox-dev/devpi-process/issues" + +[tool.hatch] +build.hooks.vcs.version-file = "src/devpi_process/_version.py" +version.source = "vcs" [tool.black] line-length = 120 -[tool.isort] -profile = "black" -known_first_party = ["devpi_process"] - -[tool.setuptools_scm] -write_to = "src/devpi_process/version.py" -write_to_template = """ -\"\"\" Version information \"\"\" - -__version__ = "{version}" -""" - -[tool.pep8] -max-line-length = "120" - -[tool.flake8] -max-complexity = 22 -max-line-length = 120 -unused-arguments-ignore-abstract-functions = true -noqa-require-code = true -dictionaries = ["en_US", "python", "technical", "django"] +[tool.ruff] +select = ["ALL"] +line-length = 120 +target-version = "py38" +isort = {known-first-party = ["devpi_process"], required-imports = ["from __future__ import annotations"]} ignore = [ - "E203", # whitespace before ':' + "ANN101", # no typoe annotation for self + "ANN401", # allow Any as type annotation + "D203", # `one-blank-line-before-class` (D203) and `no-blank-line-before-class` (D211) are incompatible + "D212", # `multi-line-summary-first-line` (D212) and `multi-line-summary-second-line` (D213) are incompatible + "S104", # Possible binding to all interface +] +[tool.ruff.per-file-ignores] +"tests/**/*.py" = [ + "S101", # asserts allowed in tests... + "FBT", # don"t care about booleans as positional arguments in tests + "INP001", # no implicit namespace + "D", # don"t care about documentation in tests + "S603", # `subprocess` call: check for execution of untrusted input + "PLR2004", # Magic value used in comparison, consider replacing with a constant variable +] + +[tool.coverage] +html.show_contexts = true +html.skip_covered = false +paths.source = [ + "src", + ".tox*/*/lib/python*/site-packages", + ".tox*/pypy*/site-packages", + ".tox*\\*\\Lib\\site-packages", + "*/src", + "*\\src", ] +report.fail_under = 98 +report.omit = [] +run.parallel = true +run.plugins = ["covdefaults"] + +[tool.mypy] +python_version = "3.11" +show_error_codes = true +strict = true diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi_process-0.3.0/setup.cfg new/devpi_process-1.0.0/setup.cfg --- old/devpi_process-0.3.0/setup.cfg 2022-12-03 23:52:15.693089700 +0100 +++ new/devpi_process-1.0.0/setup.cfg 1970-01-01 01:00:00.000000000 +0100 @@ -1,82 +0,0 @@ -[metadata] -name = devpi_process -description = devpi process provides a programmatic API to create and use a devpi server process -long_description = file: README.md -long_description_content_type = text/markdown -url = https://github.com/tox-dev/devpi-process -maintainer = Bernat Gabor -maintainer_email = gaborjber...@gmail.com -license = MIT -license_file = LICENSE.txt -platforms = any -classifiers = - Development Status :: 5 - Production/Stable - Intended Audience :: Developers - License :: OSI Approved :: MIT License - Operating System :: MacOS :: MacOS X - Operating System :: Microsoft :: Windows - Operating System :: POSIX - Programming Language :: Python :: 3 - Programming Language :: Python :: 3 :: Only - Topic :: Software Development :: Libraries - Topic :: Utilities -keywords = devpi, programmatic -project_urls = - Source=https://github.com/tox-dev/devpi-process - Tracker=https://github.com/tox-dev/devpi-process - -[options] -packages = find: -install_requires = - devpi-client>=6.0.2 - devpi-server>=6.7 -python_requires = >=3.7 -include_package_data = True -package_dir = - =src -zip_safe = True - -[options.packages.find] -where = src - -[options.extras_require] -test = - covdefaults>=2.2.2 - httpx>=0.23.1 - pytest>=7.2 - pytest-cov>=4 - -[options.package_data] -devpi_process = py.typed - -[sdist] -formats = gztar - -[coverage:run] -plugins = covdefaults -parallel = true - -[coverage:paths] -src = - src - .tox/*/lib/python*/site-packages - .tox/pypy*/site-packages - .tox\*\Lib\site-packages\ - */src - *\src -other = - . - */devpi-process - *\devpi-process - -[coverage:report] -fail_under = 100 - -[coverage:html] -show_contexts = true -skip_covered = false - -[egg_info] -tag_build = -tag_date = 0 - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi_process-0.3.0/setup.py new/devpi_process-1.0.0/setup.py --- old/devpi_process-0.3.0/setup.py 2022-12-03 23:52:08.000000000 +0100 +++ new/devpi_process-1.0.0/setup.py 1970-01-01 01:00:00.000000000 +0100 @@ -1,5 +0,0 @@ -from __future__ import annotations - -from setuptools import setup - -setup() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi_process-0.3.0/src/devpi_process/__init__.py new/devpi_process-1.0.0/src/devpi_process/__init__.py --- old/devpi_process-0.3.0/src/devpi_process/__init__.py 2022-12-03 23:52:08.000000000 +0100 +++ new/devpi_process-1.0.0/src/devpi_process/__init__.py 2020-02-02 01:00:00.000000000 +0100 @@ -1,3 +1,4 @@ +"""Devpi PyPI to test with.""" from __future__ import annotations import random @@ -9,18 +10,35 @@ from pathlib import Path from subprocess import PIPE, Popen, run from threading import Thread -from types import TracebackType -from typing import IO, Iterator, Sequence, cast +from typing import IO, TYPE_CHECKING, Iterator, Sequence, cast -from .version import __version__ +from ._version import __version__ + +if TYPE_CHECKING: + from types import TracebackType + + if sys.version_info >= (3, 11): # pragma: no cover (py311+) + from typing import Self + else: # pragma: no cover (<py311) + from typing_extensions import Self def _check_call(cmd: list[str]) -> None: - run(cmd, check=True, stdout=PIPE, stderr=PIPE) + run(cmd, check=True, capture_output=True) # noqa: S603 class Index: + """Index.""" + def __init__(self, base_url: str, name: str, user: str, client_cmd_base: list[str]) -> None: + """ + Create index. + + :param base_url: base url + :param name: name for the index server + :param user: the username to use + :param client_cmd_base: + """ self._client_cmd_base = client_cmd_base self._server_url = base_url self.name = name @@ -28,31 +46,54 @@ @property def url(self) -> str: + """:return: the URL to the index server""" return f"{self._server_url}/{self.name}/+simple/" def use(self) -> None: - _check_call(self._client_cmd_base + ["use", f"{self.user}/{self.name}"]) + """Use this index server.""" + _check_call([*self._client_cmd_base, "use", f"{self.user}/{self.name}"]) def upload(self, *files: Path) -> None: + """ + Upload packages to the index. + + :param files: the files to upload + """ cmd = self._client_cmd_base + ["upload", "--index", self.name] + [str(i) for i in files] _check_call(cmd) def __repr__(self) -> str: + """:return: repr of the index""" return f"{self.__class__.__name__}(url={self.url})" class IndexServer: - def __init__(self, path: Path, with_root_pypi: bool = False, start_args: Sequence[str] | None = None) -> None: + """A PyPI index server locally.""" + + def __init__( + self, + path: Path, + with_root_pypi: bool = False, # noqa: FBT001, FBT002 + start_args: Sequence[str] | None = None, + ) -> None: + """ + Create the local index server. + + :param path: the path where to host files + :param with_root_pypi: access to upstream PyPI + :param start_args: additional arguments to start the server + """ self.path = path self._with_root_pypi = with_root_pypi self._start_args: Sequence[str] = [] if start_args is None else start_args self.host, self.port = "localhost", _find_free_port() - self._passwd = "".join(random.choices(string.ascii_letters, k=8)) + self._passwd = "".join(random.choices(string.ascii_letters, k=8)) # noqa: S311 scripts_dir = sysconfig.get_path("scripts") if scripts_dir is None: - raise RuntimeError("could not get scripts folder of host interpreter") # pragma: no cover + msg = "could not get scripts folder of host interpreter" # pragma: no cover + raise RuntimeError(msg) # pragma: no cover def _exe(name: str) -> str: return str(Path(scripts_dir) / f"{name}{'.exe' if sys.platform == 'win32' else ''}") @@ -70,9 +111,11 @@ @property def user(self) -> str: + """:return: username of the index server""" return "root" - def __enter__(self) -> IndexServer: + def __enter__(self) -> Self: + """:return: start the index server""" self._create_and_start_server() self._setup_client() return self @@ -89,7 +132,7 @@ # 2. start the server cmd = [self._server, "--serverdir", server_at, "--port", str(self.port)] cmd.extend(self._start_args) - self._process = Popen(cmd, stdout=PIPE, universal_newlines=True) + self._process = Popen(cmd, stdout=PIPE, universal_newlines=True) # noqa: S603 stdout = self._drain_stdout() for line in stdout: # pragma: no branch # will always loop at least once if "serving at url" in line: @@ -108,32 +151,47 @@ stdout = cast(IO[str], process.stdout) while True: if process.poll() is not None: # pragma: no cover - print(f"devpi server with pid {process.pid} at {self._server_dir} died") + print(f"devpi server with pid {process.pid} at {self._server_dir} died") # noqa: T201 break yield stdout.readline() def _setup_client(self) -> None: - """create a user on the server and authenticate it""" + """Create a user on the server and authenticate it.""" self._client_dir.mkdir(exist_ok=True) base = ["--clientdir", str(self._client_dir)] - _check_call([self._client, "use"] + base + [self.url]) - _check_call([self._client, "login"] + base + [self.user, "--password", self._passwd]) + _check_call([self._client, "use", *base, self.url]) + _check_call([self._client, "login", *base, self.user, "--password", self._passwd]) def create_index(self, name: str, *args: str) -> Index: + """ + Create an index on the server. + + :param name: with name + :param args: additional arguments + :return: the created index + """ if name in self._indexes: # pragma: no cover - raise ValueError(f"index {name} already exists") + msg = f"index {name} already exists" + raise ValueError(msg) base = [self._client, "--clientdir", str(self._client_dir)] - _check_call(base + ["index", "-c", name, *args]) + _check_call([*base, "index", "-c", name, *args]) index = Index(f"{self.url}/{self.user}", name, self.user, base) self._indexes[name] = index return index def __exit__( self, - exc_type: type[BaseException] | None, # noqa: U100 - exc_val: BaseException | None, # noqa: U100 - exc_tb: TracebackType | None, # noqa: U100 + exc_type: type[BaseException] | None, + exc_val: BaseException | None, + exc_tb: TracebackType | None, ) -> None: + """ + Stop the index server. + + :param exc_type: + :param exc_val: + :param exc_tb: + """ if self._process is not None: # pragma: no cover # defend against devpi startup fail self._process.terminate() if self._stdout_drain is not None and self._stdout_drain.is_alive(): # pragma: no cover # devpi startup fail @@ -141,9 +199,11 @@ @property def url(self) -> str: + """:return: url to the index server""" return f"http://{self.host}:{self.port}" def __repr__(self) -> str: + """:return: repr of the index server""" return f"{self.__class__.__name__}(url={self.url}, indexes={list(self._indexes)})" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi_process-0.3.0/src/devpi_process/_version.py new/devpi_process-1.0.0/src/devpi_process/_version.py --- old/devpi_process-0.3.0/src/devpi_process/_version.py 1970-01-01 01:00:00.000000000 +0100 +++ new/devpi_process-1.0.0/src/devpi_process/_version.py 2020-02-02 01:00:00.000000000 +0100 @@ -0,0 +1,4 @@ +# file generated by setuptools_scm +# don't change, don't track in version control +__version__ = version = '1.0.0' +__version_tuple__ = version_tuple = (1, 0, 0) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi_process-0.3.0/src/devpi_process/version.py new/devpi_process-1.0.0/src/devpi_process/version.py --- old/devpi_process-0.3.0/src/devpi_process/version.py 2022-12-03 23:52:15.000000000 +0100 +++ new/devpi_process-1.0.0/src/devpi_process/version.py 1970-01-01 01:00:00.000000000 +0100 @@ -1,3 +0,0 @@ -""" Version information """ - -__version__ = "0.3.0" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi_process-0.3.0/src/devpi_process.egg-info/PKG-INFO new/devpi_process-1.0.0/src/devpi_process.egg-info/PKG-INFO --- old/devpi_process-0.3.0/src/devpi_process.egg-info/PKG-INFO 2022-12-03 23:52:15.000000000 +0100 +++ new/devpi_process-1.0.0/src/devpi_process.egg-info/PKG-INFO 1970-01-01 01:00:00.000000000 +0100 @@ -1,66 +0,0 @@ -Metadata-Version: 2.1 -Name: devpi-process -Version: 0.3.0 -Summary: devpi process provides a programmatic API to create and use a devpi server process -Home-page: https://github.com/tox-dev/devpi-process -Maintainer: Bernat Gabor -Maintainer-email: gaborjber...@gmail.com -License: MIT -Project-URL: Source, https://github.com/tox-dev/devpi-process -Project-URL: Tracker, https://github.com/tox-dev/devpi-process -Keywords: devpi,programmatic -Platform: any -Classifier: Development Status :: 5 - Production/Stable -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: MIT License -Classifier: Operating System :: MacOS :: MacOS X -Classifier: Operating System :: Microsoft :: Windows -Classifier: Operating System :: POSIX -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3 :: Only -Classifier: Topic :: Software Development :: Libraries -Classifier: Topic :: Utilities -Requires-Python: >=3.7 -Description-Content-Type: text/markdown -Provides-Extra: test -License-File: LICENSE.txt - -# devpi-process - -[](https://pypi.org/project/devpi-process) -[](https://pypi.org/project/devpi-process) -[](https://pypi.org/project/devpi-process) -[](https://pypistats.org/packages/devpi-process) -[](https://opensource.org/licenses/MIT) -[](https://github.com/tox-dev/devpi-process/actions?query=workflow%3Acheck) -[](https://github.com/psf/black) - -Allows you to create [devpi](https://devpi.net/docs/devpi/devpi/stable/+d/index.html) server process with indexes, and -upload artifacts to that programmatically. - -## install - -```sh -pip install devpi-process -``` - -## use - -```python -from pathlib import Path - -from devpi_process import Index, IndexServer - -with IndexServer(Path("server-dir")) as server: - # create an index mirroring an Artifactory instance - magic_index_url = "https://magic.com/artifactory/api/pypi/magic-pypi/simple" - base_name = "magic" - server.create_index(base_name, "type=mirror", f"mirror_url={magic_index_url}") - - # create a dev index server that bases of magic PyPI, and upload a wheel to it - dev: Index = server.create_index("dev", f"bases={server.user}/{base_name}") - dev.upload("magic-2.24.0-py3-none-any.whl") - - assert dev.url # point the tool consuming the index server to this -``` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi_process-0.3.0/src/devpi_process.egg-info/SOURCES.txt new/devpi_process-1.0.0/src/devpi_process.egg-info/SOURCES.txt --- old/devpi_process-0.3.0/src/devpi_process.egg-info/SOURCES.txt 2022-12-03 23:52:15.000000000 +0100 +++ new/devpi_process-1.0.0/src/devpi_process.egg-info/SOURCES.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1,28 +0,0 @@ -.gitignore -.markdownlint.yaml -.pre-commit-config.yaml -CHANGELOG.md -CODE_OF_CONDUCT.md -LICENSE.txt -README.md -codecov.yml -pyproject.toml -setup.cfg -setup.py -tox.ini -whitelist.txt -.github/dependabot.yml -.github/workflows/check.yml -src/devpi_process/__init__.py -src/devpi_process/py.typed -src/devpi_process/version.py -src/devpi_process.egg-info/PKG-INFO -src/devpi_process.egg-info/SOURCES.txt -src/devpi_process.egg-info/dependency_links.txt -src/devpi_process.egg-info/requires.txt -src/devpi_process.egg-info/top_level.txt -src/devpi_process.egg-info/zip-safe -src/pytest_devpi/version.py -tests/test_devpi_process.py -tests/demo_pkg_inline/build.py -tests/demo_pkg_inline/pyproject.toml \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi_process-0.3.0/src/devpi_process.egg-info/dependency_links.txt new/devpi_process-1.0.0/src/devpi_process.egg-info/dependency_links.txt --- old/devpi_process-0.3.0/src/devpi_process.egg-info/dependency_links.txt 2022-12-03 23:52:15.000000000 +0100 +++ new/devpi_process-1.0.0/src/devpi_process.egg-info/dependency_links.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi_process-0.3.0/src/devpi_process.egg-info/requires.txt new/devpi_process-1.0.0/src/devpi_process.egg-info/requires.txt --- old/devpi_process-0.3.0/src/devpi_process.egg-info/requires.txt 2022-12-03 23:52:15.000000000 +0100 +++ new/devpi_process-1.0.0/src/devpi_process.egg-info/requires.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1,8 +0,0 @@ -devpi-client>=6.0.2 -devpi-server>=6.7 - -[test] -covdefaults>=2.2.2 -httpx>=0.23.1 -pytest>=7.2 -pytest-cov>=4 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi_process-0.3.0/src/devpi_process.egg-info/top_level.txt new/devpi_process-1.0.0/src/devpi_process.egg-info/top_level.txt --- old/devpi_process-0.3.0/src/devpi_process.egg-info/top_level.txt 2022-12-03 23:52:15.000000000 +0100 +++ new/devpi_process-1.0.0/src/devpi_process.egg-info/top_level.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -devpi_process diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi_process-0.3.0/src/devpi_process.egg-info/zip-safe new/devpi_process-1.0.0/src/devpi_process.egg-info/zip-safe --- old/devpi_process-0.3.0/src/devpi_process.egg-info/zip-safe 2022-12-03 23:52:15.000000000 +0100 +++ new/devpi_process-1.0.0/src/devpi_process.egg-info/zip-safe 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi_process-0.3.0/src/pytest_devpi/version.py new/devpi_process-1.0.0/src/pytest_devpi/version.py --- old/devpi_process-0.3.0/src/pytest_devpi/version.py 2022-12-03 23:52:08.000000000 +0100 +++ new/devpi_process-1.0.0/src/pytest_devpi/version.py 1970-01-01 01:00:00.000000000 +0100 @@ -1,4 +0,0 @@ -""" Version information """ -from __future__ import annotations - -__version__ = "0.1.dev1+gc78a9e3.d20210617" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi_process-0.3.0/tests/demo_pkg_inline/build.py new/devpi_process-1.0.0/tests/demo_pkg_inline/build.py --- old/devpi_process-0.3.0/tests/demo_pkg_inline/build.py 2022-12-03 23:52:08.000000000 +0100 +++ new/devpi_process-1.0.0/tests/demo_pkg_inline/build.py 2020-02-02 01:00:00.000000000 +0100 @@ -1,9 +1,9 @@ from __future__ import annotations -import os import sys import tarfile from io import BytesIO +from pathlib import Path from textwrap import dedent from zipfile import ZipFile @@ -18,10 +18,10 @@ record = f"{dist_info}/RECORD" content = { logic: f"def do():\n print('greetings from {name}')", - metadata: """ + metadata: f""" Metadata-Version: 2.1 - Name: {} - Version: {} + Name: {pkg_name} + Version: {version} Summary: UNKNOWN Home-page: UNKNOWN Author: UNKNOWN @@ -30,58 +30,52 @@ Platform: UNKNOWN UNKNOWN - """.format( - pkg_name, version - ), - wheel: """ + """, + wheel: f""" Wheel-Version: 1.0 - Generator: {}-{} + Generator: {name}-{version} Root-Is-Purelib: true - Tag: py{}-none-any - """.format( - name, version, sys.version_info[0] - ), + Tag: py{sys.version_info[0]}-none-any + """, f"{dist_info}/top_level.txt": name, - record: """ - {0}/__init__.py,, - {1}/METADATA,, - {1}/WHEEL,, - {1}/top_level.txt,, - {1}/RECORD,, - """.format( - name, dist_info - ), + record: f""" + {name}/__init__.py,, + {dist_info}/METADATA,, + {dist_info}/WHEEL,, + {dist_info}/top_level.txt,, + {dist_info}/RECORD,, + """, } def build_wheel( wheel_directory: str, - metadata_directory: str | None = None, # noqa: U100 - config_settings: None = None, # noqa: U100 + metadata_directory: str | None = None, # noqa: ARG001 + config_settings: None = None, # noqa: ARG001 ) -> str: base_name = f"{name}-{version}-py{sys.version_info[0]}-none-any.whl" - path = os.path.join(wheel_directory, base_name) - with ZipFile(path, "w") as zip_file_handler: + path = Path(wheel_directory) / base_name + with ZipFile(str(path), "w") as zip_file_handler: for arc_name, data in content.items(): # pragma: no branch zip_file_handler.writestr(arc_name, dedent(data).strip()) return base_name def get_requires_for_build_wheel( - config_settings: None = None, # noqa: U100 + config_settings: None = None, # noqa: ARG001 ) -> list[str]: return [] # pragma: no cover # only executed in non-host pythons def build_sdist( sdist_directory: str, - config_settings: None = None, # noqa: U100 + config_settings: None = None, # noqa: ARG001 ) -> str: result = f"{name}-{version}.tar.gz" - with tarfile.open(os.path.join(sdist_directory, result), "w:gz") as tar: - root = os.path.dirname(os.path.abspath(__file__)) - tar.add(os.path.join(root, "build.py"), "build.py") - tar.add(os.path.join(root, "pyproject.toml"), "pyproject.toml") + with tarfile.open(str(Path(sdist_directory) / result), "w:gz") as tar: + root = Path(__file__).parent + tar.add(str(root / "build.py"), "build.py") + tar.add(str(root / "pyproject.toml"), "pyproject.toml") pkg_info = dedent(content[metadata]).strip().encode("utf-8") info = tarfile.TarInfo("PKG-INFO") @@ -92,6 +86,6 @@ def get_requires_for_build_sdist( - config_settings: None = None, # noqa: U100 + config_settings: None = None, # noqa: ARG001 ) -> list[str]: return [] # pragma: no cover # only executed in non-host pythons diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi_process-0.3.0/tests/demo_pkg_inline/pyproject.toml new/devpi_process-1.0.0/tests/demo_pkg_inline/pyproject.toml --- old/devpi_process-0.3.0/tests/demo_pkg_inline/pyproject.toml 2022-12-03 23:52:08.000000000 +0100 +++ new/devpi_process-1.0.0/tests/demo_pkg_inline/pyproject.toml 2020-02-02 01:00:00.000000000 +0100 @@ -1,4 +1,7 @@ [build-system] -requires = [] build-backend = "build" -backend-path = ["."] +requires = [ +] +backend-path = [ + ".", +] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi_process-0.3.0/tests/test_devpi_process.py new/devpi_process-1.0.0/tests/test_devpi_process.py --- old/devpi_process-0.3.0/tests/test_devpi_process.py 2022-12-03 23:52:08.000000000 +0100 +++ new/devpi_process-1.0.0/tests/test_devpi_process.py 2020-02-02 01:00:00.000000000 +0100 @@ -2,13 +2,16 @@ from importlib.util import module_from_spec, spec_from_file_location from pathlib import Path +from typing import TYPE_CHECKING import pytest -from _pytest.tmpdir import TempPathFactory from httpx import get from devpi_process import IndexServer +if TYPE_CHECKING: + from _pytest.tmpdir import TempPathFactory + def test_version() -> None: import devpi_process @@ -66,5 +69,5 @@ def test_create_server_start_args(tmp_path: Path) -> None: with IndexServer(tmp_path, start_args=["--offline-mode"]) as server: - assert server._process is not None - assert server._process.args[-1] == "--offline-mode" # type: ignore + assert server._process is not None # noqa: SLF001 + assert server._process.args[-1] == "--offline-mode" # type: ignore[index] # noqa: SLF001 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi_process-0.3.0/tox.ini new/devpi_process-1.0.0/tox.ini --- old/devpi_process-0.3.0/tox.ini 2022-12-03 23:52:08.000000000 +0100 +++ new/devpi_process-1.0.0/tox.ini 2020-02-02 01:00:00.000000000 +0100 @@ -1,60 +1,61 @@ [tox] -envlist = +requires = + tox>=4.2 +env_list = fix + py311 py310 py39 py38 py37 type readme -isolated_build = true skip_missing_interpreters = true -minversion = 3.14 [testenv] description = run the unit tests with pytest under {basepython} -setenv = - COVERAGE_FILE = {toxworkdir}/.coverage.{envname} - COVERAGE_PROCESS_START = {toxinidir}/setup.cfg - _COVERAGE_SRC = {envsitepackagesdir}/sphinx_argparse_cli +package = wheel +wheel_build_env = .pkg extras = test +set_env = + COVERAGE_FILE = {toxworkdir}/.coverage.{envname} + COVERAGE_PROCESS_START = {toxinidir}/pyproject.toml + _COVERAGE_SRC = {envsitepackagesdir}/devpi_process commands = pytest {tty:--color=yes} {posargs: \ --junitxml {toxworkdir}{/}junit.{envname}.xml --cov {envsitepackagesdir}{/}devpi_process \ --cov {toxinidir}{/}tests --cov-fail-under=100 \ - --cov-config=setup.cfg --no-cov-on-fail --cov-report term-missing:skip-covered --cov-context=test \ + --cov-config=pyproject.toml --no-cov-on-fail --cov-report term-missing:skip-covered --cov-context=test \ --cov-report html:{envtmpdir}{/}htmlcov --cov-report xml:{toxworkdir}{/}coverage.{envname}.xml \ tests} -package = wheel -wheel_build_env = .pkg [testenv:fix] description = run static analysis and style check using flake8 -passenv = - HOMEPATH - PROGRAMDATA skip_install = true deps = - pre-commit>=2.20 + pre-commit>=3.3.3 +pass_env = + HOMEPATH + PROGRAMDATA commands = pre-commit run --all-files --show-diff-on-failure [testenv:type] description = run type check on code base -setenv = - {tty:MYPY_FORCE_COLOR = 1} deps = - mypy==0.991 + mypy==1.5 +set_env = + {tty:MYPY_FORCE_COLOR = 1} commands = - mypy --strict --python-version 3.10 src - mypy --strict --python-version 3.10 tests + mypy src + mypy tests [testenv:readme] description = check that the long description is valid skip_install = true deps = - build[virtualenv]>=0.9 + build[virtualenv]>=0.10 twine>=4.0.2 commands = python -m build --sdist --wheel -o {envtmpdir} . @@ -62,18 +63,10 @@ [testenv:dev] description = generate a DEV environment -usedevelop = true +package = editable extras = docs test commands = python -m pip list --format=columns python -c 'import sys; print(sys.executable)' - -[testenv:py311] -setenv = - {[testenv]setenv} - AIOHTTP_NO_EXTENSIONS = 1 - -[pytest] -junit_family = xunit2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi_process-0.3.0/whitelist.txt new/devpi_process-1.0.0/whitelist.txt --- old/devpi_process-0.3.0/whitelist.txt 2022-12-03 23:52:08.000000000 +0100 +++ new/devpi_process-1.0.0/whitelist.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1,10 +0,0 @@ -addfile -devpi -exe -getsockname -inet -mktemp -readline -sdist -sysconfig -tmpdir