Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-zc.buildout for openSUSE:Factory checked in at 2026-05-20 15:24:42 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-zc.buildout (Old) and /work/SRC/openSUSE:Factory/.python-zc.buildout.new.1966 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-zc.buildout" Wed May 20 15:24:42 2026 rev:27 rq:1354107 version:5.2.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-zc.buildout/python-zc.buildout.changes 2026-03-15 14:32:55.168752766 +0100 +++ /work/SRC/openSUSE:Factory/.python-zc.buildout.new.1966/python-zc.buildout.changes 2026-05-20 15:25:40.060973701 +0200 @@ -1,0 +2,10 @@ +Tue May 19 21:11:36 UTC 2026 - Dirk Müller <[email protected]> + +- update to 5.2.0: + * Restrict setuptools to less than 82 if it is not pinned. When + zc.buildout checks if it should upgrade itself or setuptools, + under some circumstances this could lead to a too new + setuptools version getting installed. [maurits] + * Test with pip 26.1. [maurits] + +------------------------------------------------------------------- Old: ---- zc_buildout-5.1.3.tar.gz New: ---- zc_buildout-5.2.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-zc.buildout.spec ++++++ --- /var/tmp/diff_new_pack.DiSp77/_old 2026-05-20 15:25:41.461031391 +0200 +++ /var/tmp/diff_new_pack.DiSp77/_new 2026-05-20 15:25:41.465031556 +0200 @@ -19,7 +19,7 @@ %bcond_without libalternatives %{?sle15_python_module_pythons} Name: python-zc.buildout -Version: 5.1.3 +Version: 5.2.0 Release: 0 Summary: System for managing development buildouts License: ZPL-2.1 ++++++ zc_buildout-5.1.3.tar.gz -> zc_buildout-5.2.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildout-5.1.3/.github/workflows/run-tests.yml new/buildout-5.2.0/.github/workflows/run-tests.yml --- old/buildout-5.1.3/.github/workflows/run-tests.yml 2026-03-06 21:29:56.000000000 +0100 +++ new/buildout-5.2.0/.github/workflows/run-tests.yml 2026-04-29 09:54:09.000000000 +0200 @@ -101,7 +101,7 @@ matrix: os: [ubuntu-24.04] python-version: ["3.10"] - pip-version: ["21.3.1", "22.3.1", "23.3.2", "24.3.1", "25.3", "26.0.1"] + pip-version: ["21.3.1", "22.3.1", "23.3.2", "24.3.1", "25.3", "26.1"] setuptools-version: ["65.7.0", "75.8.2"] runs-on: ${{ matrix.os }} steps: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildout-5.1.3/CHANGES.rst new/buildout-5.2.0/CHANGES.rst --- old/buildout-5.1.3/CHANGES.rst 2026-03-06 21:29:56.000000000 +0100 +++ new/buildout-5.2.0/CHANGES.rst 2026-04-29 09:54:09.000000000 +0200 @@ -8,6 +8,23 @@ .. towncrier release notes start +5.2.0 (2026-04-29) +------------------ + +New features: + + +- Restrict ``setuptools`` to less than 82 if it is not pinned. + When ``zc.buildout`` checks if it should upgrade itself or ``setuptools``, under some circumstances this could lead to a too new ``setuptools`` version getting installed. + [maurits] + + +Tests: + + +- Test with ``pip`` 26.1. [maurits] + + 5.1.3 (2026-03-06) ------------------ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildout-5.1.3/setup.py new/buildout-5.2.0/setup.py --- old/buildout-5.1.3/setup.py 2026-03-06 21:29:56.000000000 +0100 +++ new/buildout-5.2.0/setup.py 2026-04-29 09:54:09.000000000 +0200 @@ -12,7 +12,7 @@ # ############################################################################## name = "zc.buildout" -version = "5.1.3" +version = "5.2.0" import os from setuptools import setup diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buildout-5.1.3/src/zc/buildout/easy_install.py new/buildout-5.2.0/src/zc/buildout/easy_install.py --- old/buildout-5.1.3/src/zc/buildout/easy_install.py 2026-03-06 21:29:56.000000000 +0100 +++ new/buildout-5.2.0/src/zc/buildout/easy_install.py 2026-04-29 09:54:09.000000000 +0200 @@ -352,6 +352,34 @@ ) +class IncompatibleConstraintError(zc.buildout.UserError): + """A specified version is incompatible with a given requirement. + """ + +IncompatibleVersionError = IncompatibleConstraintError # Backward compatibility + + +def _constrained_requirement(constraint, requirement): + assert isinstance(requirement, pkg_resources.Requirement) + if constraint[0] not in '<>': + if constraint.startswith('='): + assert constraint.startswith('==') + version = constraint[2:] + else: + version = constraint + constraint = '==' + constraint + if version not in requirement: + msg = ("The requirement (%r) is not allowed by your [versions] " + "constraint (%s)" % (str(requirement), version)) + raise IncompatibleConstraintError(msg) + specifier = specifiers.SpecifierSet(constraint) + else: + specifier = requirement.specifier & constraint + constrained = copy.deepcopy(requirement) + constrained.specifier = specifier + return pkg_resources.Requirement.parse(str(constrained)) + + class Installer(object): _versions = {} @@ -796,6 +824,18 @@ except IncompatibleConstraintError: logger.info(self._version_conflict_information(canonical_name)) raise + elif requirement.project_name == "setuptools": + # Restrict setuptools to less than 82 if it is not pinned. + # Especially when zc.buildout checks if it should upgrade itself + # or setuptools, under some circumstances this could lead to a + # too new setuptools version getting installed. + # See https://github.com/buildout/buildout/issues/744 + try: + requirement = _constrained_requirement('<82', + requirement) + except IncompatibleConstraintError: + logger.info(self._version_conflict_information(canonical_name)) + raise return requirement @@ -1864,34 +1904,6 @@ req, ws = self.data return "Couldn't find a distribution for %r." % str(req) -def _constrained_requirement(constraint, requirement): - assert isinstance(requirement, pkg_resources.Requirement) - if constraint[0] not in '<>': - if constraint.startswith('='): - assert constraint.startswith('==') - version = constraint[2:] - else: - version = constraint - constraint = '==' + constraint - if version not in requirement: - msg = ("The requirement (%r) is not allowed by your [versions] " - "constraint (%s)" % (str(requirement), version)) - raise IncompatibleConstraintError(msg) - specifier = specifiers.SpecifierSet(constraint) - else: - specifier = requirement.specifier & constraint - constrained = copy.deepcopy(requirement) - constrained.specifier = specifier - return pkg_resources.Requirement.parse(str(constrained)) - - -class IncompatibleConstraintError(zc.buildout.UserError): - """A specified version is incompatible with a given requirement. - """ - -IncompatibleVersionError = IncompatibleConstraintError # Backward compatibility - - def call_pip_install(spec, dest, editable=False): """ Call `pip install` from a subprocess to install a
