From fbed5910c4fb94ed00d3661f0062dcb870f88a78 Mon Sep 17 00:00:00 2001 From: Tom Schraitle Date: Tue, 5 May 2020 21:25:06 +0200 Subject: [PATCH 1/3] Prepare semver 3 (#176) Generally, remove everything related to Python 2.7 & 3.4 and add missing 3.8 & 3.9: * Raise version to 2.99.99 (to indicate that it's different from 2.10.0) * Prepare (empty) CHANGELOG for 2.99.99 * Correct Trove categories and python_requires in setup.py * Adapt tox.ini & .travis.yml: remove old stuff, add missing (see above) * Adapt semver.py - Remove if clause for cmp - Don't check for `__name__`, use `__qualname__` instead - Use yield from ... (for loop is not necessary anymore) --- .travis.yml | 15 +++++++++------ CHANGELOG.rst | 22 ++++++++++++++++++++++ semver.py | 18 ++++++------------ setup.py | 7 +++---- tox.ini | 2 +- 5 files changed, 41 insertions(+), 23 deletions(-) diff --git a/.travis.yml b/.travis.yml index 54165f6e..c182f268 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,11 +13,6 @@ script: tox -v matrix: include: - - python: "2.7" - env: TOXENV=py27 - - - python: "3.4" - env: TOXENV=py34 - python: "3.6" env: TOXENV=checks @@ -32,5 +27,13 @@ matrix: dist: xenial env: TOXENV=py37 - - python: "pypy" + - python: "3.8" + dist: bionic + env: TOXENV=py38 + + - python: "nightly" + dist: bionic + env: TOXENV=py39 + + - python: "pypy3" env: TOXENV=pypy diff --git a/CHANGELOG.rst b/CHANGELOG.rst index c28880e1..bcebd23a 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -7,6 +7,26 @@ All notable changes to this code base will be documented in this file, in every released version. +Version 3.0.0-dev1 +================== + +Features +-------- + + +Bug Fixes +--------- + + +Additions +--------- + + +Removals +-------- + + + Version 2.10.1 ============== @@ -23,6 +43,7 @@ Features * :pr:`256`: Made docstrings consistent + Bug Fixes --------- @@ -38,6 +59,7 @@ Removals -------- + Version 2.10.0 ============== diff --git a/semver.py b/semver.py index 00338e8f..dff43107 100644 --- a/semver.py +++ b/semver.py @@ -10,7 +10,7 @@ import warnings -__version__ = "2.10.1" +__version__ = "3.0.0-dev1" __author__ = "Kostiantyn Rybnikov" __author_email__ = "k-bx@k-bx.com" __maintainer__ = ["Sebastien Celles", "Tom Schraitle"] @@ -53,11 +53,9 @@ SEMVER_SPEC_VERSION = "2.0.0" -if not hasattr(__builtins__, "cmp"): - - def cmp(a, b): - """Return negative if ab.""" - return (a > b) - (a < b) +def cmp(a, b): + """Return negative if ab.""" + return (a > b) - (a < b) def deprecated(func=None, replace=None, version=None, category=DeprecationWarning): @@ -88,10 +86,8 @@ def wrapper(*args, **kwargs): else: msg.append("Use the respective 'semver.VersionInfo.{r}' instead.") - # hasattr is needed for Python2 compatibility: - f = func.__qualname__ if hasattr(func, "__qualname__") else func.__name__ + f = func.__qualname__ r = replace or f - frame = inspect.currentframe().f_back msg = " ".join(msg) @@ -300,9 +296,7 @@ def _asdict(self): def __iter__(self): """Implement iter(self).""" - # As long as we support Py2.7, we can't use the "yield from" syntax - for v in self.to_tuple(): - yield v + yield from self.to_tuple() @staticmethod def _increment_string(string): diff --git a/setup.py b/setup.py index 746c1436..357fe17d 100755 --- a/setup.py +++ b/setup.py @@ -92,16 +92,15 @@ def read_file(filename): "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", - "Programming Language :: Python :: 2", - "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", "Topic :: Software Development :: Libraries :: Python Modules", ], - python_requires=">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", + python_requires=">=3.5.*", tests_require=["tox", "virtualenv"], cmdclass={"clean": Clean, "test": Tox}, entry_points={"console_scripts": ["pysemver = semver:main"]}, diff --git a/tox.ini b/tox.ini index 833c9655..3bcfb34d 100644 --- a/tox.ini +++ b/tox.ini @@ -1,7 +1,7 @@ [tox] envlist = flake8 - py{27,34,35,36,37} + py{35,36,37,38,39} pypy [testenv] From 2bf59a0c5c41b139600b99f798e0248a938419a9 Mon Sep 17 00:00:00 2001 From: Tom Schraitle Date: Tue, 5 May 2020 22:28:39 +0200 Subject: [PATCH 2/3] Clean up setup.py (#234) --- setup.py | 67 +++++++------------------------------------------------- 1 file changed, 8 insertions(+), 59 deletions(-) diff --git a/setup.py b/setup.py index 357fe17d..38f74c82 100755 --- a/setup.py +++ b/setup.py @@ -1,68 +1,17 @@ #!/usr/bin/env python -import semver as package -from glob import glob -from os import remove from os.path import dirname, join from setuptools import setup -from setuptools.command.test import test as TestCommand - -try: - from setuptools.command.clean import clean as CleanCommand -except ImportError: - from distutils.command.clean import clean as CleanCommand -from shlex import split -from shutil import rmtree - - -class Tox(TestCommand): - user_options = [("tox-args=", "a", "Arguments to pass to tox")] - - def initialize_options(self): - TestCommand.initialize_options(self) - self.tox_args = None - - def finalize_options(self): - TestCommand.finalize_options(self) - self.test_args = [] - self.test_suite = True - - def run_tests(self): - from tox import cmdline - args = self.tox_args - if args: - args = split(self.tox_args) - errno = cmdline(args=args) - exit(errno) - - -class Clean(CleanCommand): - def run(self): - CleanCommand.run(self) - delete_in_root = ["build", ".cache", "dist", ".eggs", "*.egg-info", ".tox"] - delete_everywhere = ["__pycache__", "*.pyc"] - for candidate in delete_in_root: - rmtree_glob(candidate) - for visible_dir in glob("[A-Za-z0-9]*"): - for candidate in delete_everywhere: - rmtree_glob(join(visible_dir, candidate)) - rmtree_glob(join(visible_dir, "*", candidate)) - - -def rmtree_glob(file_glob): - for fobj in glob(file_glob): - try: - rmtree(fobj) - print("%s/ removed ..." % fobj) - except OSError: - try: - remove(fobj) - print("%s removed ..." % fobj) - except OSError: - pass +import semver as package def read_file(filename): + """ + Read RST file and return content + + :param filename: the RST file + :return: content of the RST file + """ with open(join(dirname(__file__), filename)) as f: return f.read() @@ -98,10 +47,10 @@ def read_file(filename): "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Libraries :: Python Modules", ], python_requires=">=3.5.*", tests_require=["tox", "virtualenv"], - cmdclass={"clean": Clean, "test": Tox}, entry_points={"console_scripts": ["pysemver = semver:main"]}, ) From 77348f79dd8ca51e59a27be5765cff46b83f2a60 Mon Sep 17 00:00:00 2001 From: Tom Schraitle Date: Thu, 7 May 2020 08:48:23 +0200 Subject: [PATCH 3/3] Use 3.0.0-dev.1 as version This makes it possible to distinguish between version 2 and version 3. For example, >=2.8,<3 --- CHANGELOG.rst | 4 ++-- semver.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index bcebd23a..5e4a0a1a 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -7,8 +7,8 @@ All notable changes to this code base will be documented in this file, in every released version. -Version 3.0.0-dev1 -================== +Version 3.0.0-dev.1 +=================== Features -------- diff --git a/semver.py b/semver.py index dff43107..cf214643 100644 --- a/semver.py +++ b/semver.py @@ -10,7 +10,7 @@ import warnings -__version__ = "3.0.0-dev1" +__version__ = "3.0.0-dev.1" __author__ = "Kostiantyn Rybnikov" __author_email__ = "k-bx@k-bx.com" __maintainer__ = ["Sebastien Celles", "Tom Schraitle"]