Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-setuptools for
openSUSE:Factory checked in at 2022-11-15 13:18:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-setuptools (Old)
and /work/SRC/openSUSE:Factory/.python-setuptools.new.1597 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-setuptools"
Tue Nov 15 13:18:19 2022 rev:72 rq:1035638 version:65.5.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-setuptools/python-setuptools.changes
2022-10-20 11:09:53.447798348 +0200
+++
/work/SRC/openSUSE:Factory/.python-setuptools.new.1597/python-setuptools.changes
2022-11-15 13:21:04.908694312 +0100
@@ -1,0 +2,9 @@
+Mon Nov 14 09:53:11 UTC 2022 - Daniel Garcia <[email protected]>
+
+- Delete remove_mock.patch, that's not needed anymore, it's upstreamed
+- Update to 65.5.1:
+ * #3638: Drop a test dependency on the mock package, always use
+ :external+python:py:mod:`unittest.mock` -- by :user:`hroncok`
+ * #3659: Fixed REDoS vector in package_index.
+
+-------------------------------------------------------------------
Old:
----
remove_mock.patch
setuptools-65.5.0.tar.gz
New:
----
setuptools-65.5.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-setuptools.spec ++++++
--- /var/tmp/diff_new_pack.OYNqtk/_old 2022-11-15 13:21:05.616697967 +0100
+++ /var/tmp/diff_new_pack.OYNqtk/_new 2022-11-15 13:21:05.620697988 +0100
@@ -16,7 +16,6 @@
#
-%{?!python_module:%define python_module() python3-%{**}}
%define skip_python2 1
%global flavor @BUILD_FLAVOR@%{nil}
%if "%{flavor}" == "test"
@@ -38,15 +37,13 @@
# in order to avoid rewriting for subpackage generator
%define mypython python
Name: python-setuptools%{psuffix}
-Version: 65.5.0
+Version: 65.5.1
Release: 0
Summary: Download, build, install, upgrade, and uninstall Python
packages
License: Apache-2.0 AND MIT AND BSD-2-Clause AND Python-2.0
URL: https://github.com/pypa/setuptools
Source:
https://files.pythonhosted.org/packages/source/s/setuptools/setuptools-%{version}.tar.gz
Patch0: sort-for-reproducibility.patch
-# PATCH-FIX-OPENSUSE remove_mock.patch [email protected]
-Patch1: remove_mock.patch
# PATCH-FIX-OPENSUSE fix-get-python-lib-python38.patch bsc#1204395
Patch2: fix-get-python-lib-python38.patch
BuildRequires: %{python_module base >= 3.7}
@@ -68,6 +65,7 @@
BuildRequires: %{python_module pip >= 19.1}
BuildRequires: %{python_module pip-run >= 8.8}
BuildRequires: %{python_module pytest >= 6}
+BuildRequires: %{python_module pytest-timeout}
BuildRequires: %{python_module pytest-xdist}
BuildRequires: %{python_module setuptools = %{version}}
BuildRequires: %{python_module tomli-w >= 1.0.0}
++++++ fix-get-python-lib-python38.patch ++++++
--- /var/tmp/diff_new_pack.OYNqtk/_old 2022-11-15 13:21:05.656698174 +0100
+++ /var/tmp/diff_new_pack.OYNqtk/_new 2022-11-15 13:21:05.660698194 +0100
@@ -1,8 +1,8 @@
-Index: setuptools-63.2.0/setuptools/_distutils/sysconfig.py
+Index: setuptools-65.5.1/setuptools/_distutils/sysconfig.py
===================================================================
---- setuptools-63.2.0.orig/setuptools/_distutils/sysconfig.py
-+++ setuptools-63.2.0/setuptools/_distutils/sysconfig.py
-@@ -229,9 +229,13 @@ def get_python_lib(plat_specific=0, stan
+--- setuptools-65.5.1.orig/setuptools/_distutils/sysconfig.py
++++ setuptools-65.5.1/setuptools/_distutils/sysconfig.py
+@@ -238,9 +238,13 @@ def get_python_lib(plat_specific=0, stan
if os.name == "posix":
if plat_specific or standard_lib:
++++++ setuptools-65.5.0.tar.gz -> setuptools-65.5.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools-65.5.0/CHANGES.rst
new/setuptools-65.5.1/CHANGES.rst
--- old/setuptools-65.5.0/CHANGES.rst 2022-10-14 14:34:42.000000000 +0200
+++ new/setuptools-65.5.1/CHANGES.rst 2022-11-04 20:19:31.000000000 +0100
@@ -1,3 +1,13 @@
+v65.5.1
+-------
+
+
+Misc
+^^^^
+* #3638: Drop a test dependency on the ``mock`` package, always use
:external+python:py:mod:`unittest.mock` -- by :user:`hroncok`
+* #3659: Fixed REDoS vector in package_index.
+
+
v65.5.0
-------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools-65.5.0/PKG-INFO
new/setuptools-65.5.1/PKG-INFO
--- old/setuptools-65.5.0/PKG-INFO 2022-10-14 14:35:13.036669700 +0200
+++ new/setuptools-65.5.1/PKG-INFO 2022-11-04 20:19:53.997620000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: setuptools
-Version: 65.5.0
+Version: 65.5.1
Summary: Easily download, build, install, upgrade, and uninstall Python
packages
Home-page: https://github.com/pypa/setuptools
Author: Python Packaging Authority
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools-65.5.0/docs/userguide/quickstart.rst
new/setuptools-65.5.1/docs/userguide/quickstart.rst
--- old/setuptools-65.5.0/docs/userguide/quickstart.rst 2022-10-14
14:34:42.000000000 +0200
+++ new/setuptools-65.5.1/docs/userguide/quickstart.rst 2022-11-04
20:19:31.000000000 +0100
@@ -299,7 +299,7 @@
---------------------
Packages built with ``setuptools`` can specify dependencies to be automatically
installed when the package itself is installed.
-The example below show how to configure this kind of dependencies:
+The example below shows how to configure this kind of dependencies:
.. tab:: pyproject.toml
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/setuptools-65.5.0/pkg_resources/tests/test_markers.py
new/setuptools-65.5.1/pkg_resources/tests/test_markers.py
--- old/setuptools-65.5.0/pkg_resources/tests/test_markers.py 2022-10-14
14:34:42.000000000 +0200
+++ new/setuptools-65.5.1/pkg_resources/tests/test_markers.py 2022-11-04
20:19:31.000000000 +0100
@@ -1,4 +1,4 @@
-import mock
+from unittest import mock
from pkg_resources import evaluate_marker
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/setuptools-65.5.0/pkg_resources/tests/test_pkg_resources.py
new/setuptools-65.5.1/pkg_resources/tests/test_pkg_resources.py
--- old/setuptools-65.5.0/pkg_resources/tests/test_pkg_resources.py
2022-10-14 14:34:42.000000000 +0200
+++ new/setuptools-65.5.1/pkg_resources/tests/test_pkg_resources.py
2022-11-04 20:19:31.000000000 +0100
@@ -9,10 +9,7 @@
import distutils.dist
import distutils.command.install_egg_info
-try:
- from unittest import mock
-except ImportError:
- import mock
+from unittest import mock
from pkg_resources import (
DistInfoDistribution, Distribution, EggInfoDistribution,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools-65.5.0/pytest.ini
new/setuptools-65.5.1/pytest.ini
--- old/setuptools-65.5.0/pytest.ini 2022-10-14 14:34:42.000000000 +0200
+++ new/setuptools-65.5.1/pytest.ini 2022-11-04 20:19:31.000000000 +0100
@@ -64,3 +64,6 @@
ignore:Support for .* in .pyproject.toml. is still .beta.
ignore::setuptools.command.editable_wheel.InformationOnly
+
+ # https://github.com/pypa/setuptools/issues/3655
+ ignore:The --rsyncdir command line argument and rsyncdirs config
variable are deprecated.:DeprecationWarning
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools-65.5.0/setup.cfg
new/setuptools-65.5.1/setup.cfg
--- old/setuptools-65.5.0/setup.cfg 2022-10-14 14:35:13.036669700 +0200
+++ new/setuptools-65.5.1/setup.cfg 2022-11-04 20:19:53.997620000 +0100
@@ -1,6 +1,6 @@
[metadata]
name = setuptools
-version = 65.5.0
+version = 65.5.1
author = Python Packaging Authority
author_email = [email protected]
description = Easily download, build, install, upgrade, and uninstall Python
packages
@@ -51,7 +51,6 @@
pytest-enabler >= 1.3
pytest-perf
- mock
flake8-2020
virtualenv>=13.0.0
wheel
@@ -64,6 +63,7 @@
pip_run>=8.8
ini2toml[lite]>=0.9
tomli-w>=1.0.0
+ pytest-timeout
testing-integration =
pytest
pytest-xdist
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools-65.5.0/setuptools/command/build.py
new/setuptools-65.5.1/setuptools/command/build.py
--- old/setuptools-65.5.0/setuptools/command/build.py 2022-10-14
14:34:42.000000000 +0200
+++ new/setuptools-65.5.1/setuptools/command/build.py 2022-11-04
20:19:31.000000000 +0100
@@ -48,8 +48,8 @@
Subcommands **SHOULD** take advantage of ``editable_mode=True`` to
adequate
its behaviour or perform optimisations.
- For example, if a subcommand don't need to generate any extra file
and
- everything it does is to copy a source file into the build directory,
+ For example, if a subcommand doesn't need to generate an extra file
and
+ all it does is to copy a source file into the build directory,
``run()`` **SHOULD** simply "early return".
Similarly, if the subcommand creates files that would be placed
alongside
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools-65.5.0/setuptools/package_index.py
new/setuptools-65.5.1/setuptools/package_index.py
--- old/setuptools-65.5.0/setuptools/package_index.py 2022-10-14
14:34:42.000000000 +0200
+++ new/setuptools-65.5.1/setuptools/package_index.py 2022-11-04
20:19:31.000000000 +0100
@@ -1,4 +1,5 @@
-"""PyPI and direct package downloading"""
+"""PyPI and direct package downloading."""
+
import sys
import os
import re
@@ -19,9 +20,20 @@
import setuptools
from pkg_resources import (
- CHECKOUT_DIST, Distribution, BINARY_DIST, normalize_path, SOURCE_DIST,
- Environment, find_distributions, safe_name, safe_version,
- to_filename, Requirement, DEVELOP_DIST, EGG_DIST, parse_version,
+ CHECKOUT_DIST,
+ Distribution,
+ BINARY_DIST,
+ normalize_path,
+ SOURCE_DIST,
+ Environment,
+ find_distributions,
+ safe_name,
+ safe_version,
+ to_filename,
+ Requirement,
+ DEVELOP_DIST,
+ EGG_DIST,
+ parse_version,
)
from distutils import log
from distutils.errors import DistutilsError
@@ -40,7 +52,9 @@
EXTENSIONS = ".tar.gz .tar.bz2 .tar .zip .tgz".split()
__all__ = [
- 'PackageIndex', 'distros_for_url', 'parse_bdist_wininst',
+ 'PackageIndex',
+ 'distros_for_url',
+ 'parse_bdist_wininst',
'interpret_distro_name',
]
@@ -48,7 +62,8 @@
_tmpl = "setuptools/{setuptools.__version__} Python-urllib/{py_major}"
user_agent = _tmpl.format(
- py_major='{}.{}'.format(*sys.version_info), setuptools=setuptools)
+ py_major='{}.{}'.format(*sys.version_info), setuptools=setuptools
+)
def parse_requirement_arg(spec):
@@ -120,13 +135,15 @@
wheel = Wheel(basename)
if not wheel.is_compatible():
return []
- return [Distribution(
- location=location,
- project_name=wheel.project_name,
- version=wheel.version,
- # Increase priority over eggs.
- precedence=EGG_DIST + 1,
- )]
+ return [
+ Distribution(
+ location=location,
+ project_name=wheel.project_name,
+ version=wheel.version,
+ # Increase priority over eggs.
+ precedence=EGG_DIST + 1,
+ )
+ ]
if basename.endswith('.exe'):
win_base, py_ver, platform = parse_bdist_wininst(basename)
if win_base is not None:
@@ -137,7 +154,7 @@
#
for ext in EXTENSIONS:
if basename.endswith(ext):
- basename = basename[:-len(ext)]
+ basename = basename[: -len(ext)]
return interpret_distro_name(location, basename, metadata)
return [] # no extension matched
@@ -150,8 +167,7 @@
def interpret_distro_name(
- location, basename, metadata, py_version=None, precedence=SOURCE_DIST,
- platform=None
+ location, basename, metadata, py_version=None, precedence=SOURCE_DIST,
platform=None
):
"""Generate alternative interpretations of a source distro name
@@ -178,9 +194,13 @@
for p in range(1, len(parts) + 1):
yield Distribution(
- location, metadata, '-'.join(parts[:p]), '-'.join(parts[p:]),
- py_version=py_version, precedence=precedence,
- platform=platform
+ location,
+ metadata,
+ '-'.join(parts[:p]),
+ '-'.join(parts[p:]),
+ py_version=py_version,
+ precedence=precedence,
+ platform=platform,
)
@@ -197,8 +217,10 @@
return wrapper
-REL = re.compile(r"""<([^>]*\srel\s*=\s*['"]?([^'">]+)[^>]*)>""", re.I)
-# this line is here to fix emacs' cruddy broken syntax highlighting
+REL = re.compile(r"""<([^>]*\srel\s{0,10}=\s{0,10}['"]?([^'" >]+)[^>]*)>""",
re.I)
+"""
+Regex for an HTML tag with 'rel="val"' attributes.
+"""
@unique_values
@@ -282,11 +304,16 @@
"""A distribution index that scans web pages for download URLs"""
def __init__(
- self, index_url="https://pypi.org/simple/", hosts=('*',),
- ca_bundle=None, verify_ssl=True, *args, **kw
+ self,
+ index_url="https://pypi.org/simple/",
+ hosts=('*',),
+ ca_bundle=None,
+ verify_ssl=True,
+ *args,
+ **kw
):
super().__init__(*args, **kw)
- self.index_url = index_url + "/" [:not index_url.endswith('/')]
+ self.index_url = index_url + "/"[: not index_url.endswith('/')]
self.scanned_urls = {}
self.fetched_urls = {}
self.package_pages = {}
@@ -379,7 +406,8 @@
return True
msg = (
"\nNote: Bypassing %s (disallowed host; see "
- "http://bit.ly/2hrImnY for details).\n")
+ "http://bit.ly/2hrImnY for details).\n"
+ )
if fatal:
raise DistutilsError(msg % url)
else:
@@ -417,9 +445,7 @@
if not link.startswith(self.index_url):
return NO_MATCH_SENTINEL
- parts = list(map(
- urllib.parse.unquote, link[len(self.index_url):].split('/')
- ))
+ parts = list(map(urllib.parse.unquote, link[len(self.index_url)
:].split('/')))
if len(parts) != 2 or '#' in parts[1]:
return NO_MATCH_SENTINEL
@@ -461,16 +487,15 @@
def need_version_info(self, url):
self.scan_all(
"Page at %s links to .py file(s) without version info; an index "
- "scan is required.", url
+ "scan is required.",
+ url,
)
def scan_all(self, msg=None, *args):
if self.index_url not in self.fetched_urls:
if msg:
self.warn(msg, *args)
- self.info(
- "Scanning index of all packages (this may take a while)"
- )
+ self.info("Scanning index of all packages (this may take a while)")
self.scan_url(self.index_url)
def find_packages(self, requirement):
@@ -501,9 +526,7 @@
"""
checker is a ContentChecker
"""
- checker.report(
- self.debug,
- "Validating %%s checksum for %s" % filename)
+ checker.report(self.debug, "Validating %%s checksum for %s" % filename)
if not checker.is_valid():
tfp.close()
os.unlink(filename)
@@ -540,7 +563,8 @@
else: # no distros seen for this name, might be misspelled
meth, msg = (
self.warn,
- "Couldn't find index page for %r (maybe misspelled?)")
+ "Couldn't find index page for %r (maybe misspelled?)",
+ )
meth(msg, requirement.unsafe_name)
self.scan_all()
@@ -579,8 +603,14 @@
return getattr(self.fetch_distribution(spec, tmpdir), 'location', None)
def fetch_distribution( # noqa: C901 # is too complex (14) # FIXME
- self, requirement, tmpdir, force_scan=False, source=False,
- develop_ok=False, local_index=None):
+ self,
+ requirement,
+ tmpdir,
+ force_scan=False,
+ source=False,
+ develop_ok=False,
+ local_index=None,
+ ):
"""Obtain a distribution suitable for fulfilling `requirement`
`requirement` must be a ``pkg_resources.Requirement`` instance.
@@ -612,15 +642,13 @@
if dist.precedence == DEVELOP_DIST and not develop_ok:
if dist not in skipped:
self.warn(
- "Skipping development or system egg: %s", dist,
+ "Skipping development or system egg: %s",
+ dist,
)
skipped[dist] = 1
continue
- test = (
- dist in req
- and (dist.precedence <= SOURCE_DIST or not source)
- )
+ test = dist in req and (dist.precedence <= SOURCE_DIST or not
source)
if test:
loc = self.download(dist.location, tmpdir)
dist.download_location = loc
@@ -669,10 +697,15 @@
def gen_setup(self, filename, fragment, tmpdir):
match = EGG_FRAGMENT.match(fragment)
- dists = match and [
- d for d in
- interpret_distro_name(filename, match.group(1), None) if d.version
- ] or []
+ dists = (
+ match
+ and [
+ d
+ for d in interpret_distro_name(filename, match.group(1), None)
+ if d.version
+ ]
+ or []
+ )
if len(dists) == 1: # unambiguous ``#egg`` fragment
basename = os.path.basename(filename)
@@ -689,8 +722,9 @@
"from setuptools import setup\n"
"setup(name=%r, version=%r, py_modules=[%r])\n"
% (
- dists[0].project_name, dists[0].version,
- os.path.splitext(basename)[0]
+ dists[0].project_name,
+ dists[0].version,
+ os.path.splitext(basename)[0],
)
)
return filename
@@ -766,23 +800,22 @@
if warning:
self.warn(warning, v.reason)
else:
- raise DistutilsError("Download error for %s: %s"
- % (url, v.reason)) from v
+ raise DistutilsError(
+ "Download error for %s: %s" % (url, v.reason)
+ ) from v
except http.client.BadStatusLine as v:
if warning:
self.warn(warning, v.line)
else:
raise DistutilsError(
'%s returned a bad status line. The server might be '
- 'down, %s' %
- (url, v.line)
+ 'down, %s' % (url, v.line)
) from v
except (http.client.HTTPException, socket.error) as v:
if warning:
self.warn(warning, v)
else:
- raise DistutilsError("Download error for %s: %s"
- % (url, v)) from v
+ raise DistutilsError("Download error for %s: %s" % (url, v))
from v
def _download_url(self, scheme, url, tmpdir):
# Determine download filename
@@ -887,10 +920,13 @@
if rev is not None:
self.info("Checking out %s", rev)
- os.system("git -C %s checkout --quiet %s" % (
- filename,
- rev,
- ))
+ os.system(
+ "git -C %s checkout --quiet %s"
+ % (
+ filename,
+ rev,
+ )
+ )
return filename
@@ -903,10 +939,13 @@
if rev is not None:
self.info("Updating to %s", rev)
- os.system("hg --cwd %s up -C -r %s -q" % (
- filename,
- rev,
- ))
+ os.system(
+ "hg --cwd %s up -C -r %s -q"
+ % (
+ filename,
+ rev,
+ )
+ )
return filename
@@ -1010,7 +1049,8 @@
@property
def creds_by_repository(self):
sections_with_repositories = [
- section for section in self.sections()
+ section
+ for section in self.sections()
if self.get(section, 'repository').strip()
]
@@ -1114,8 +1154,8 @@
files.append('<a href="{name}">{name}</a>'.format(name=f))
else:
tmpl = (
- "<html><head><title>{url}</title>"
- "</head><body>{files}</body></html>")
+ "<html><head><title>{url}</title>"
"</head><body>{files}</body></html>"
+ )
body = tmpl.format(url=url, files='\n'.join(files))
status, message = 200, "OK"
else:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/setuptools-65.5.0/setuptools/tests/test_bdist_deprecations.py
new/setuptools-65.5.1/setuptools/tests/test_bdist_deprecations.py
--- old/setuptools-65.5.0/setuptools/tests/test_bdist_deprecations.py
2022-10-14 14:34:42.000000000 +0200
+++ new/setuptools-65.5.1/setuptools/tests/test_bdist_deprecations.py
2022-11-04 20:19:31.000000000 +0100
@@ -1,7 +1,7 @@
"""develop tests
"""
-import mock
import sys
+from unittest import mock
import pytest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/setuptools-65.5.0/setuptools/tests/test_build_clib.py
new/setuptools-65.5.1/setuptools/tests/test_build_clib.py
--- old/setuptools-65.5.0/setuptools/tests/test_build_clib.py 2022-10-14
14:34:42.000000000 +0200
+++ new/setuptools-65.5.1/setuptools/tests/test_build_clib.py 2022-11-04
20:19:31.000000000 +0100
@@ -1,6 +1,7 @@
+from unittest import mock
+
import pytest
-import mock
from distutils.errors import DistutilsSetupError
from setuptools.command.build_clib import build_clib
from setuptools.dist import Distribution
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/setuptools-65.5.0/setuptools/tests/test_easy_install.py
new/setuptools-65.5.1/setuptools/tests/test_easy_install.py
--- old/setuptools-65.5.0/setuptools/tests/test_easy_install.py 2022-10-14
14:34:42.000000000 +0200
+++ new/setuptools-65.5.1/setuptools/tests/test_easy_install.py 2022-11-04
20:19:31.000000000 +0100
@@ -12,7 +12,6 @@
import distutils.errors
import io
import zipfile
-import mock
import time
import re
import subprocess
@@ -20,6 +19,7 @@
import warnings
from collections import namedtuple
from pathlib import Path
+from unittest import mock
import pytest
from jaraco import path
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/setuptools-65.5.0/setuptools/tests/test_packageindex.py
new/setuptools-65.5.1/setuptools/tests/test_packageindex.py
--- old/setuptools-65.5.0/setuptools/tests/test_packageindex.py 2022-10-14
14:34:42.000000000 +0200
+++ new/setuptools-65.5.1/setuptools/tests/test_packageindex.py 2022-11-04
20:19:31.000000000 +0100
@@ -5,8 +5,8 @@
import urllib.request
import urllib.error
import http.client
+from unittest import mock
-import mock
import pytest
import setuptools.package_index
@@ -21,7 +21,9 @@
<a href="http://some_url">Name</a>
(<a title="MD5 hash"
href="{hash_url}">md5</a>)
- """.lstrip().format(**locals())
+ """.lstrip().format(
+ **locals()
+ )
assert setuptools.package_index.PYPI_MD5.match(doc)
def test_bad_url_bad_port(self):
@@ -38,9 +40,7 @@
# issue 16
# easy_install inquant.contentmirror.plone breaks because of a typo
# in its home URL
- index = setuptools.package_index.PackageIndex(
- hosts=('www.example.com',)
- )
+ index =
setuptools.package_index.PackageIndex(hosts=('www.example.com',))
url = (
'url:%20https://svn.plone.org/svn'
@@ -54,9 +54,7 @@
assert isinstance(v, urllib.error.HTTPError)
def test_bad_url_bad_status_line(self):
- index = setuptools.package_index.PackageIndex(
- hosts=('www.example.com',)
- )
+ index =
setuptools.package_index.PackageIndex(hosts=('www.example.com',))
def _urlopen(*args):
raise http.client.BadStatusLine('line')
@@ -74,9 +72,7 @@
"""
A bad URL with a double scheme should raise a DistutilsError.
"""
- index = setuptools.package_index.PackageIndex(
- hosts=('www.example.com',)
- )
+ index =
setuptools.package_index.PackageIndex(hosts=('www.example.com',))
# issue 20
url = 'http://http://svn.pythonpaste.org/Paste/wphp/trunk'
@@ -93,22 +89,17 @@
raise RuntimeError("Did not raise")
def test_bad_url_screwy_href(self):
- index = setuptools.package_index.PackageIndex(
- hosts=('www.example.com',)
- )
+ index =
setuptools.package_index.PackageIndex(hosts=('www.example.com',))
# issue #160
if sys.version_info[0] == 2 and sys.version_info[1] == 7:
# this should not fail
url = 'http://example.com'
- page = ('<a href="http://www.famfamfam.com]('
- 'http://www.famfamfam.com/">')
+ page = '<a href="http://www.famfamfam.com]('
'http://www.famfamfam.com/">'
index.process_index(url, page)
def test_url_ok(self):
- index = setuptools.package_index.PackageIndex(
- hosts=('www.example.com',)
- )
+ index =
setuptools.package_index.PackageIndex(hosts=('www.example.com',))
url = 'file:///tmp/test_package_index'
assert index.url_ok(url, True)
@@ -169,9 +160,7 @@
'b0',
'rc0',
]
- post = [
- '.post0'
- ]
+ post = ['.post0']
dev = [
'.dev0',
]
@@ -186,10 +175,14 @@
for e in epoch
for r in releases
for p in sum([pre, post, dev], [''])
- for locs in local]
+ for locs in local
+ ]
for v, vc in versions:
- dists = list(setuptools.package_index.distros_for_url(
- 'http://example.com/example.zip#egg=example-' + v))
+ dists = list(
+ setuptools.package_index.distros_for_url(
+ 'http://example.com/example.zip#egg=example-' + v
+ )
+ )
assert dists[0].version == ''
assert dists[1].version == vc
@@ -204,8 +197,7 @@
expected_dir = str(tmpdir / 'project@master')
expected = (
- 'git clone --quiet '
- 'https://github.example/group/project {expected_dir}'
+ 'git clone --quiet ' 'https://github.example/group/project
{expected_dir}'
).format(**locals())
first_call_args = os_system_mock.call_args_list[0][0]
assert first_call_args == (expected,)
@@ -226,8 +218,7 @@
expected_dir = str(tmpdir / 'project')
expected = (
- 'git clone --quiet '
- 'https://github.example/group/project {expected_dir}'
+ 'git clone --quiet ' 'https://github.example/group/project
{expected_dir}'
).format(**locals())
os_system_mock.assert_called_once_with(expected)
@@ -243,8 +234,7 @@
expected_dir = str(tmpdir / 'project')
expected = (
- 'svn checkout -q '
- 'svn+https://svn.example/project {expected_dir}'
+ 'svn checkout -q ' 'svn+https://svn.example/project {expected_dir}'
).format(**locals())
os_system_mock.assert_called_once_with(expected)
@@ -252,7 +242,8 @@
class TestContentCheckers:
def test_md5(self):
checker = setuptools.package_index.HashChecker.from_url(
- 'http://foo/bar#md5=f12895fdffbd45007040d2e44df98478')
+ 'http://foo/bar#md5=f12895fdffbd45007040d2e44df98478'
+ )
checker.feed('You should probably not be using MD5'.encode('ascii'))
assert checker.hash.hexdigest() == 'f12895fdffbd45007040d2e44df98478'
assert checker.is_valid()
@@ -260,25 +251,27 @@
def test_other_fragment(self):
"Content checks should succeed silently if no hash is present"
checker = setuptools.package_index.HashChecker.from_url(
- 'http://foo/bar#something%20completely%20different')
+ 'http://foo/bar#something%20completely%20different'
+ )
checker.feed('anything'.encode('ascii'))
assert checker.is_valid()
def test_blank_md5(self):
"Content checks should succeed if a hash is empty"
- checker = setuptools.package_index.HashChecker.from_url(
- 'http://foo/bar#md5=')
+ checker =
setuptools.package_index.HashChecker.from_url('http://foo/bar#md5=')
checker.feed('anything'.encode('ascii'))
assert checker.is_valid()
def test_get_hash_name_md5(self):
checker = setuptools.package_index.HashChecker.from_url(
- 'http://foo/bar#md5=f12895fdffbd45007040d2e44df98478')
+ 'http://foo/bar#md5=f12895fdffbd45007040d2e44df98478'
+ )
assert checker.hash_name == 'md5'
def test_report(self):
checker = setuptools.package_index.HashChecker.from_url(
- 'http://foo/bar#md5=f12895fdffbd45007040d2e44df98478')
+ 'http://foo/bar#md5=f12895fdffbd45007040d2e44df98478'
+ )
rep = checker.report(lambda x: x, 'My message about %s')
assert rep == 'My message about md5'
@@ -287,8 +280,8 @@
def temp_home(tmpdir, monkeypatch):
key = (
'USERPROFILE'
- if platform.system() == 'Windows' and sys.version_info > (3, 8) else
- 'HOME'
+ if platform.system() == 'Windows' and sys.version_info > (3, 8)
+ else 'HOME'
)
monkeypatch.setitem(os.environ, key, str(tmpdir))
@@ -298,13 +291,25 @@
class TestPyPIConfig:
def test_percent_in_password(self, temp_home):
pypirc = temp_home / '.pypirc'
- pypirc.write(DALS("""
+ pypirc.write(
+ DALS(
+ """
[pypi]
repository=https://pypi.org
username=jaraco
password=pity%
- """))
+ """
+ )
+ )
cfg = setuptools.package_index.PyPIConfig()
cred = cfg.creds_by_repository['https://pypi.org']
assert cred.username == 'jaraco'
assert cred.password == 'pity%'
+
+
[email protected](1)
+def test_REL_DoS():
+ """
+ REL should not hang on a contrived attack string.
+ """
+ setuptools.package_index.REL.search('< rel=' + ' ' * 2**12)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools-65.5.0/setuptools/tests/test_register.py
new/setuptools-65.5.1/setuptools/tests/test_register.py
--- old/setuptools-65.5.0/setuptools/tests/test_register.py 2022-10-14
14:34:42.000000000 +0200
+++ new/setuptools-65.5.1/setuptools/tests/test_register.py 2022-11-04
20:19:31.000000000 +0100
@@ -2,10 +2,7 @@
from setuptools.dist import Distribution
from setuptools.errors import RemovedCommandError
-try:
- from unittest import mock
-except ImportError:
- import mock
+from unittest import mock
import pytest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools-65.5.0/setuptools/tests/test_upload.py
new/setuptools-65.5.1/setuptools/tests/test_upload.py
--- old/setuptools-65.5.0/setuptools/tests/test_upload.py 2022-10-14
14:34:42.000000000 +0200
+++ new/setuptools-65.5.1/setuptools/tests/test_upload.py 2022-11-04
20:19:31.000000000 +0100
@@ -2,10 +2,7 @@
from setuptools.dist import Distribution
from setuptools.errors import RemovedCommandError
-try:
- from unittest import mock
-except ImportError:
- import mock
+from unittest import mock
import pytest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools-65.5.0/setuptools.egg-info/PKG-INFO
new/setuptools-65.5.1/setuptools.egg-info/PKG-INFO
--- old/setuptools-65.5.0/setuptools.egg-info/PKG-INFO 2022-10-14
14:35:12.000000000 +0200
+++ new/setuptools-65.5.1/setuptools.egg-info/PKG-INFO 2022-11-04
20:19:53.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: setuptools
-Version: 65.5.0
+Version: 65.5.1
Summary: Easily download, build, install, upgrade, and uninstall Python
packages
Home-page: https://github.com/pypa/setuptools
Author: Python Packaging Authority
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools-65.5.0/setuptools.egg-info/requires.txt
new/setuptools-65.5.1/setuptools.egg-info/requires.txt
--- old/setuptools-65.5.0/setuptools.egg-info/requires.txt 2022-10-14
14:35:12.000000000 +0200
+++ new/setuptools-65.5.1/setuptools.egg-info/requires.txt 2022-11-04
20:19:53.000000000 +0100
@@ -24,7 +24,6 @@
flake8<5
pytest-enabler>=1.3
pytest-perf
-mock
flake8-2020
virtualenv>=13.0.0
wheel
@@ -37,6 +36,7 @@
pip_run>=8.8
ini2toml[lite]>=0.9
tomli-w>=1.0.0
+pytest-timeout
[testing-integration]
pytest