jenkins-bot submitted this change.

View Change

Approvals: JJMC89: Looks good to me, approved jenkins-bot: Verified
[fix] Implement Version properties from setuptools 49.4.0/vendor package 20.4

This patch does not lead the bot to fail if newer pkg_resource
vendor package is missing

Bug: T284939
Change-Id: I9a16345a0a1a289b790b4ff7db9573e03ccb5cbe
---
M pwb.py
M pywikibot/tools/__init__.py
2 files changed, 44 insertions(+), 11 deletions(-)

diff --git a/pwb.py b/pwb.py
index 1b2527d..bf685f9 100755
--- a/pwb.py
+++ b/pwb.py
@@ -22,7 +22,6 @@
from __future__ import print_function

import os
-import pkg_resources
import sys
import types

@@ -43,25 +42,26 @@
- Scripts version must not be older than previous Pyvikibot version
due to deprecation policy
"""
- version = pkg_resources.packaging.version
- scripts_version = version.parse(getattr(package,
- '__version__',
- pwb.__version__))
- wikibot_version = version.parse(pwb.__version__)
+ from pywikibot.tools import Version
+ scripts_version = Version(getattr(package, '__version__', pwb.__version__))
+ wikibot_version = Version(pwb.__version__)
+
if scripts_version.release > wikibot_version.release:
print('WARNING: Pywikibot version {} is behind scripts package '
'version {}.\nYour Pywikibot may need an update or be '
'misconfigured.\n'.format(wikibot_version, scripts_version))

# calculate previous minor release
- prev_wikibot = version.parse('{v.major}.{}.{v.micro}'
- .format(wikibot_version.minor - 1,
- v=wikibot_version,))
+ prev_wikibot = Version('{v.major}.{}.{v.micro}'
+ .format(wikibot_version.minor - 1,
+ v=wikibot_version,))
+
if scripts_version.release < prev_wikibot.release:
print('WARNING: Scripts package version {} is behind legacy Pywikibot '
'version {} and current version {}\nYour scripts may need an '
'update or be misconfigured.\n'
.format(scripts_version, prev_wikibot, wikibot_version, ))
+ del Version


# The following snippet was developed by Ned Batchelder (and others)
@@ -91,8 +91,6 @@
if package:
main_mod.__package__ = package.__name__
check_pwb_versions(package)
- global pkg_resources
- del pkg_resources

# Set sys.argv and the first path element properly.
old_argv = sys.argv
@@ -176,6 +174,7 @@
:rtype: bool
:raise RuntimeError: wrong Python version found in setup.py
"""
+ import pkg_resources
if script:
from setup import script_deps
dependencies = script_deps.get(Path(script).name, [])
@@ -196,6 +195,7 @@
version_conflicts.append(requirement)
print(e)

+ del pkg_resources
del dependencies

_print_requirements(missing_requirements, script, 'missing')
diff --git a/pywikibot/tools/__init__.py b/pywikibot/tools/__init__.py
index efa2741..f81ee0b 100644
--- a/pywikibot/tools/__init__.py
+++ b/pywikibot/tools/__init__.py
@@ -45,6 +45,7 @@

from pywikibot.tools._unidata import _first_upper_exception

+pkg_Version = pkg_resources.packaging.version.Version # noqa: N816

try:
import bz2
@@ -511,6 +512,38 @@
return first_upper(username)


+class Version(pkg_Version):
+
+ """Version from pkg_resouce vendor package.
+
+ This Version provides propreties of vendor package 20.4 shipped with
+ setuptools 49.4.0.
+ """
+
+ def __init__(self, version):
+ """Add additional properties of not provided by base class."""
+ super().__init__(version)
+
+ def __getattr__(self, name):
+ """Provides propreties of vendor package 20.4."""
+ if name in ('epoch', 'release', 'pre', ):
+ return getattr(self._version, name)
+ if name in ('post', 'dev'):
+ attr = getattr(self._version, name)
+ return attr[1] if attr else None
+ if name == 'is_devrelease':
+ return self.dev is not None
+
+ parts = ('major', 'minor', 'micro')
+ try:
+ index = parts.index(name)
+ except ValueError:
+ raise AttributeError('{!r} object has to attribute {!r}'
+ .format(type(self).__name__, name)) from None
+ release = self.release
+ return release[index] if len(release) >= index + 1 else 0
+
+
@total_ordering
class MediaWikiVersion:


To view, visit change 699952. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: I9a16345a0a1a289b790b4ff7db9573e03ccb5cbe
Gerrit-Change-Number: 699952
Gerrit-PatchSet: 2
Gerrit-Owner: Xqt <info@gno.de>
Gerrit-Reviewer: Dvorapa <dvorapa@seznam.cz>
Gerrit-Reviewer: JJMC89 <JJMC89.Wikimedia@gmail.com>
Gerrit-Reviewer: jenkins-bot
Gerrit-MessageType: merged