Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-versioningit for openSUSE:Factory checked in at 2022-11-10 14:23:13 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-versioningit (Old) and /work/SRC/openSUSE:Factory/.python-versioningit.new.1597 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-versioningit" Thu Nov 10 14:23:13 2022 rev:4 rq:1034977 version:2.1.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-versioningit/python-versioningit.changes 2022-10-12 18:26:13.245891828 +0200 +++ /work/SRC/openSUSE:Factory/.python-versioningit.new.1597/python-versioningit.changes 2022-11-10 14:24:10.510991758 +0100 @@ -1,0 +2,8 @@ +Wed Nov 9 19:36:14 UTC 2022 - Yogalakshmi Arunachalam <yarunacha...@suse.com> + +- Update to version 2.1.0 + * Drop support for Python 3.6 + * Support Python 3.11 + * Use tomllib on Python 3.11 + +------------------------------------------------------------------- Old: ---- versioningit-2.0.1.tar.gz New: ---- versioningit-2.1.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-versioningit.spec ++++++ --- /var/tmp/diff_new_pack.ixHM9k/_old 2022-11-10 14:24:10.994994498 +0100 +++ /var/tmp/diff_new_pack.ixHM9k/_new 2022-11-10 14:24:11.002994543 +0100 @@ -25,7 +25,7 @@ %endif Name: python-versioningit -Version: 2.0.1 +Version: 2.1.0 Release: 0 Summary: Versioning It with your Version In Git License: MIT ++++++ versioningit-2.0.1.tar.gz -> versioningit-2.1.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/CHANGELOG.md new/versioningit-2.1.0/CHANGELOG.md --- old/versioningit-2.0.1/CHANGELOG.md 2022-08-01 18:10:19.000000000 +0200 +++ new/versioningit-2.1.0/CHANGELOG.md 2022-10-26 00:44:23.000000000 +0200 @@ -1,3 +1,9 @@ +v2.1.0 (2022-10-25) +------------------- +- Drop support for Python 3.6 +- Support Python 3.11 +- Use `tomllib` on Python 3.11 + v2.0.1 (2022-08-01) ------------------- - Don't run the `onbuild` step under setuptools' upcoming PEP 660 editable mode @@ -40,6 +46,12 @@ - When resolving entry points, if multiple entry points with the given group & name are found, error instead of using the first one returned +v1.1.2 (2022-08-12) +------------------- +- Backport "Don't run the `onbuild` step under setuptools' upcoming PEP 660 + editable mode" from v2.0.1 (contributed by + [@abravalheri](https://github.com/abravalheri)) + v1.1.1 (2022-04-08) ------------------- - Do not import setuptools unless needed (contributed by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/PKG-INFO new/versioningit-2.1.0/PKG-INFO --- old/versioningit-2.0.1/PKG-INFO 2022-08-01 18:10:26.419421200 +0200 +++ new/versioningit-2.1.0/PKG-INFO 2022-10-26 00:44:29.964681100 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: versioningit -Version: 2.0.1 +Version: 2.1.0 Summary: Versioning It with your Version In Git Home-page: https://github.com/jwodder/versioningit Author: John Thorvald Wodder II @@ -13,11 +13,11 @@ Classifier: Development Status :: 5 - Production/Stable Classifier: Programming Language :: Python :: 3 :: Only Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 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: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy Classifier: License :: OSI Approved :: MIT License @@ -28,7 +28,7 @@ Classifier: Topic :: Software Development :: Version Control :: Git Classifier: Topic :: Software Development :: Version Control :: Mercurial Classifier: Typing :: Typed -Requires-Python: >=3.6 +Requires-Python: >=3.7 Description-Content-Type: text/x-rst License-File: LICENSE @@ -101,7 +101,7 @@ Installation & Setup ==================== -``versioningit`` requires Python 3.6 or higher. Just use `pip +``versioningit`` requires Python 3.7 or higher. Just use `pip <https://pip.pypa.io>`_ for Python 3 (You have pip, right?) to install ``versioningit`` and its dependencies:: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/README.rst new/versioningit-2.1.0/README.rst --- old/versioningit-2.0.1/README.rst 2022-07-07 15:00:11.000000000 +0200 +++ new/versioningit-2.1.0/README.rst 2022-10-16 19:53:49.000000000 +0200 @@ -67,7 +67,7 @@ Installation & Setup ==================== -``versioningit`` requires Python 3.6 or higher. Just use `pip +``versioningit`` requires Python 3.7 or higher. Just use `pip <https://pip.pypa.io>`_ for Python 3 (You have pip, right?) to install ``versioningit`` and its dependencies:: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/docs/changelog.rst new/versioningit-2.1.0/docs/changelog.rst --- old/versioningit-2.0.1/docs/changelog.rst 2022-08-01 18:10:19.000000000 +0200 +++ new/versioningit-2.1.0/docs/changelog.rst 2022-10-26 00:44:23.000000000 +0200 @@ -3,6 +3,13 @@ Changelog ========= +v2.1.0 (2022-10-25) +------------------- +- Drop support for Python 3.6 +- Support Python 3.11 +- Use `tomllib` on Python 3.11 + + v2.0.1 (2022-08-01) ------------------- - Don't run the ``onbuild`` step under setuptools' upcoming PEP 660 editable @@ -61,6 +68,13 @@ name are found, error instead of using the first one returned +v1.1.2 (2022-08-12) +------------------- +- Backport "Don't run the ``onbuild`` step under setuptools' upcoming PEP 660 + editable mode" from v2.0.1 (contributed by `@abravalheri + <https://github.com/abravalheri>`_) + + v1.1.1 (2022-04-08) ------------------- - Do not import setuptools unless needed (contributed by `@jenshnielsen diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/docs/index.rst new/versioningit-2.1.0/docs/index.rst --- old/versioningit-2.0.1/docs/index.rst 2022-07-07 15:00:17.000000000 +0200 +++ new/versioningit-2.1.0/docs/index.rst 2022-10-16 19:53:49.000000000 +0200 @@ -61,7 +61,7 @@ Installation & Setup ==================== -``versioningit`` requires Python 3.6 or higher. Just use `pip +``versioningit`` requires Python 3.7 or higher. Just use `pip <https://pip.pypa.io>`_ for Python 3 (You have pip, right?) to install ``versioningit`` and its dependencies:: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/docs/notes.rst new/versioningit-2.1.0/docs/notes.rst --- old/versioningit-2.0.1/docs/notes.rst 2022-06-20 00:29:24.000000000 +0200 +++ new/versioningit-2.1.0/docs/notes.rst 2022-08-12 22:55:51.000000000 +0200 @@ -47,3 +47,7 @@ dependency. .. _Semantic Versioning: https://semver.org + +Bug fixes may, on occasion, be backported to previous major versions of +``versioningit``, but this is in general unlikely to happen unless a user +specifically requests it. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/docs/writing-methods.rst new/versioningit-2.1.0/docs/writing-methods.rst --- old/versioningit-2.0.1/docs/writing-methods.rst 2022-06-12 17:36:17.000000000 +0200 +++ new/versioningit-2.1.0/docs/writing-methods.rst 2022-10-16 21:48:33.000000000 +0200 @@ -52,7 +52,7 @@ A custom ``vcs`` method is a callable with the following synopsis: -.. function:: funcname(*, project_dir: Union[str, pathlib.Path], params: Dict[str, Any]) -> versioningit.VCSDescription +.. function:: funcname(*, project_dir: str | pathlib.Path, params: dict[str, Any]) -> versioningit.VCSDescription :noindex: :param path project_dir: the path to a project directory @@ -71,7 +71,7 @@ A custom ``tag2version`` method is a callable with the following synopsis: -.. function:: funcname(*, tag: str, params: Dict[str, Any]) -> str +.. function:: funcname(*, tag: str, params: dict[str, Any]) -> str :noindex: :param str tag: a tag retrieved from version control @@ -85,7 +85,7 @@ A custom ``next-version`` method is a callable with the following synopsis: -.. function:: funcname(*, version: str, branch: Optional[str], params: Dict[str, Any]) -> str +.. function:: funcname(*, version: str, branch: Optional[str], params: dict[str, Any]) -> str :noindex: :param str version: a project version (as extracted from a VCS tag) @@ -103,7 +103,7 @@ A custom ``format`` method is a callable with the following synopsis: -.. function:: funcname(*, description: versioningit.VCSDescription, base_version: str, next_version: str, params: Dict[str, Any]) -> str +.. function:: funcname(*, description: versioningit.VCSDescription, base_version: str, next_version: str, params: dict[str, Any]) -> str :noindex: :param description: @@ -128,7 +128,7 @@ A custom ``template-fields`` method is a callable with the following synopsis: -.. function:: funcname(*, version: str, description: Optional[VCSDescription], base_version: Optional[str], next_version: Optional[str], params: Dict[str, Any]) -> Dict[str, Any] +.. function:: funcname(*, version: str, description: Optional[VCSDescription], base_version: Optional[str], next_version: Optional[str], params: dict[str, Any]) -> dict[str, Any] :noindex: :param str version: the project's final version @@ -142,14 +142,14 @@ a "next version" calculated by the ``next-version`` step; `None` if the step or a previous one failed :param dict params: a collection of user-supplied parameters - :rtype: Dict[str, Any] + :rtype: dict[str, Any] ``write`` --------- A custom ``write`` method is a callable with the following synopsis: -.. function:: funcname(*, project_dir: Union[str, pathlib.Path], template_fields: Dict[str, Any], params: Dict[str, Any]) -> None +.. function:: funcname(*, project_dir: str | pathlib.Path, template_fields: dict[str, Any], params: dict[str, Any]) -> None :noindex: :param path project_dir: the path to a project directory @@ -168,7 +168,7 @@ A custom ``onbuild`` method is a callable with the following synopsis: -.. function:: funcname(*, build_dir: Union[str, pathlib.Path], is_source: bool, template_fields: Dict[str, Any], params: Dict[str, Any]) -> None +.. function:: funcname(*, build_dir: str | pathlib.Path, is_source: bool, template_fields: dict[str, Any], params: dict[str, Any]) -> None :noindex: Modifies one or more files in ``build_dir`` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/setup.cfg new/versioningit-2.1.0/setup.cfg --- old/versioningit-2.0.1/setup.cfg 2022-08-01 18:10:26.420459700 +0200 +++ new/versioningit-2.1.0/setup.cfg 2022-10-26 00:44:29.965502500 +0200 @@ -20,11 +20,11 @@ Development Status :: 5 - Production/Stable Programming Language :: Python :: 3 :: Only Programming Language :: Python :: 3 - Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 Programming Language :: Python :: 3.10 + Programming Language :: Python :: 3.11 Programming Language :: Python :: Implementation :: CPython Programming Language :: Python :: Implementation :: PyPy License :: OSI Approved :: MIT License @@ -45,12 +45,11 @@ package_dir = =src include_package_data = True -python_requires = >=3.6 +python_requires = >=3.7 install_requires = - dataclasses; python_version < "3.7" importlib-metadata >= 3.6; python_version < "3.10" packaging >= 17.1 - tomli >= 1.2, < 3.0 + tomli >= 1.2, < 3.0; python_version < "3.11" [options.packages.find] where = src @@ -82,19 +81,19 @@ replace-version = versioningit.onbuild:replace_version_onbuild [mypy] +allow_incomplete_defs = False +allow_untyped_defs = False ignore_missing_imports = True -disallow_untyped_defs = True -disallow_incomplete_defs = True no_implicit_optional = True -warn_redundant_casts = True -warn_return_any = True -warn_unreachable = True +implicit_reexport = False local_partial_types = True -no_implicit_reexport = True -strict_equality = True +pretty = True show_error_codes = True show_traceback = True -pretty = True +strict_equality = True +warn_redundant_casts = True +warn_return_any = True +warn_unreachable = True exclude = test/data/ [egg_info] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/src/versioningit/__init__.py new/versioningit-2.1.0/src/versioningit/__init__.py --- old/versioningit-2.0.1/src/versioningit/__init__.py 2022-08-01 18:10:19.000000000 +0200 +++ new/versioningit-2.1.0/src/versioningit/__init__.py 2022-10-26 00:44:23.000000000 +0200 @@ -38,7 +38,7 @@ <https://versioningit.rtfd.io> for more information. """ -__version__ = "2.0.1" +__version__ = "2.1.0" __author__ = "John Thorvald Wodder II" __author_email__ = "versionin...@varonathe.org" __license__ = "MIT" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/src/versioningit/__main__.py new/versioningit-2.1.0/src/versioningit/__main__.py --- old/versioningit-2.0.1/src/versioningit/__main__.py 2022-06-12 22:46:11.000000000 +0200 +++ new/versioningit-2.1.0/src/versioningit/__main__.py 2022-10-16 20:26:28.000000000 +0200 @@ -1,10 +1,11 @@ +from __future__ import annotations import argparse import logging import os import subprocess import sys import traceback -from typing import List, Optional +from typing import Optional from . import __version__ from .core import get_next_version, get_version from .errors import Error @@ -12,7 +13,7 @@ from .util import showcmd -def main(argv: Optional[List[str]] = None) -> None: +def main(argv: Optional[list[str]] = None) -> None: parser = argparse.ArgumentParser( description="Show the version of a versioningit-enabled project" ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/src/versioningit/basics.py new/versioningit-2.1.0/src/versioningit/basics.py --- old/versioningit-2.0.1/src/versioningit/basics.py 2022-06-12 17:36:17.000000000 +0200 +++ new/versioningit-2.1.0/src/versioningit/basics.py 2022-10-16 20:26:48.000000000 +0200 @@ -1,7 +1,8 @@ +from __future__ import annotations from copy import deepcopy from pathlib import Path import re -from typing import Any, Dict, Optional, Union +from typing import Any, Optional from .core import VCSDescription from .errors import ConfigError, InvalidTagError from .logging import log, warn_extra_fields @@ -23,7 +24,7 @@ } -def basic_tag2version(*, tag: str, params: Dict[str, Any]) -> str: +def basic_tag2version(*, tag: str, params: dict[str, Any]) -> str: """Implements the ``"basic"`` ``tag2version`` method""" params = params.copy() try: @@ -82,7 +83,7 @@ description: VCSDescription, base_version: str, next_version: str, - params: Dict[str, Any], + params: dict[str, Any], ) -> str: """Implements the ``"basic"`` ``format`` method""" branch: Optional[str] @@ -110,9 +111,9 @@ def basic_write( *, - project_dir: Union[str, Path], - template_fields: Dict[str, Any], - params: Dict[str, Any], + project_dir: str | Path, + template_fields: dict[str, Any], + params: dict[str, Any], ) -> None: """Implements the ``"basic"`` ``write`` method""" params = params.copy() @@ -148,8 +149,8 @@ description: Optional[VCSDescription], base_version: Optional[str], next_version: Optional[str], - params: Dict[str, Any], -) -> Dict[str, Any]: + params: dict[str, Any], +) -> dict[str, Any]: """Implements the ``"basic"`` ``template-fields`` method""" params = deepcopy(params) vtuple_params = params.pop("version-tuple", {}) @@ -185,7 +186,7 @@ version_tuple = split_version( version, split_on=split_on, double_quote=double_quote ) - fields: Dict[str, Any] = {} + fields: dict[str, Any] = {} if description is not None: fields.update(description.fields) fields["branch"] = description.branch diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/src/versioningit/cmdclasses.py new/versioningit-2.1.0/src/versioningit/cmdclasses.py --- old/versioningit-2.0.1/src/versioningit/cmdclasses.py 2022-08-01 18:09:43.000000000 +0200 +++ new/versioningit-2.1.0/src/versioningit/cmdclasses.py 2022-10-16 20:35:59.000000000 +0200 @@ -1,5 +1,6 @@ +from __future__ import annotations from pathlib import Path -from typing import TYPE_CHECKING, Any, Dict, Optional, Type +from typing import TYPE_CHECKING, Any, Optional from .core import get_template_fields_from_distribution, run_onbuild from .logging import init_logging, log @@ -8,8 +9,8 @@ def get_cmdclasses( - bases: Optional[Dict[str, Type["Command"]]] = None -) -> Dict[str, Type["Command"]]: + bases: Optional[dict[str, type[Command]]] = None +) -> dict[str, type[Command]]: """ .. versionadded:: 1.1.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/src/versioningit/config.py new/versioningit-2.1.0/src/versioningit/config.py --- old/versioningit-2.0.1/src/versioningit/config.py 2022-06-12 17:36:17.000000000 +0200 +++ new/versioningit-2.1.0/src/versioningit/config.py 2022-10-25 22:25:54.000000000 +0200 @@ -1,7 +1,8 @@ +from __future__ import annotations from dataclasses import Field, dataclass, field, fields from pathlib import Path -from typing import Any, Dict, Optional, Union -import tomli +import sys +from typing import Any, Optional from .errors import ConfigError, NotVersioningitError from .logging import warn_extra_fields from .methods import ( @@ -13,6 +14,11 @@ ) from .util import optional_str_guard +if sys.version_info[:2] >= (3, 11): + from tomllib import load as toml_load +else: + from tomli import load as toml_load + @dataclass class ConfigSection: @@ -22,9 +28,9 @@ method_spec: MethodSpec #: Additional parameters to pass to the method - params: Dict[str, Any] + params: dict[str, Any] - def load(self, project_dir: Union[str, Path]) -> VersioningitMethod: + def load(self, project_dir: str | Path) -> VersioningitMethod: """Loads the method and returns a `VersioningitMethod`""" return VersioningitMethod(self.method_spec.load(project_dir), self.params) @@ -63,7 +69,7 @@ default_version: Optional[str] = None @classmethod - def parse_toml_file(cls, filepath: Union[str, Path]) -> "Config": + def parse_toml_file(cls, filepath: str | Path) -> Config: """ Parse the ``[tool.versioningit]`` table in the given TOML file @@ -74,13 +80,13 @@ the correct type """ with open(filepath, "rb") as fp: - data = tomli.load(fp).get("tool", {}).get("versioningit") + data = toml_load(fp).get("tool", {}).get("versioningit") if data is None: raise NotVersioningitError("versioningit not enabled in pyproject.toml") return cls.parse_obj(data) @classmethod - def parse_obj(cls, obj: Any) -> "Config": + def parse_obj(cls, obj: Any) -> Config: """ Parse a raw Python configuration structure @@ -94,7 +100,7 @@ default_version = optional_str_guard( obj.pop("default-version", None), "tool.versioningit.default-version" ) - sections: Dict[str, Optional[ConfigSection]] = {} + sections: dict[str, Optional[ConfigSection]] = {} for f in fields(cls): if not f.metadata: continue diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/src/versioningit/core.py new/versioningit-2.1.0/src/versioningit/core.py --- old/versioningit-2.0.1/src/versioningit/core.py 2022-06-12 17:36:17.000000000 +0200 +++ new/versioningit-2.1.0/src/versioningit/core.py 2022-10-16 21:27:09.000000000 +0200 @@ -1,7 +1,8 @@ +from __future__ import annotations from dataclasses import dataclass import os from pathlib import Path -from typing import TYPE_CHECKING, Any, Dict, Optional, Union +from typing import TYPE_CHECKING, Any, Optional from .config import Config from .errors import Error, MethodError, NotSdistError, NotVCSError, NotVersioningitError from .logging import log, warn_bad_version @@ -35,7 +36,7 @@ #: A `dict` of additional information about the repository state to make #: available to the ``format`` method. Custom ``vcs`` methods are advised #: to adhere closely to the set of fields used by the built-in methods. - fields: Dict[str, Any] + fields: dict[str, Any] @dataclass @@ -64,7 +65,7 @@ #: A `dict` of fields for use in templating by the "write" and "onbuild" #: steps - template_fields: Dict[str, Any] + template_fields: dict[str, Any] #: `True` iff an error occurred during version calculation, causing a #: ``default-version`` setting to be used @@ -138,8 +139,8 @@ @classmethod def from_project_dir( - cls, project_dir: Union[str, Path] = os.curdir, config: Optional[dict] = None - ) -> "Versioningit": + cls, project_dir: str | Path = os.curdir, config: Optional[dict] = None + ) -> Versioningit: """ Construct a `Versioningit` object for the project rooted at ``project_dir`` (default: the current directory). @@ -170,9 +171,7 @@ return cls.from_config(project_dir, cfg) @classmethod - def from_config( - cls, project_dir: Union[str, Path], config: Config - ) -> "Versioningit": + def from_config(cls, project_dir: str | Path, config: Config) -> Versioningit: """ Construct a `Versioningit` object from a parsed configuration object @@ -223,7 +222,7 @@ def run( self, write: bool = False, fallback: bool = True - ) -> Union[Report, FallbackReport]: + ) -> Report | FallbackReport: """ .. versionadded:: 2.0.0 @@ -410,7 +409,7 @@ log.debug("Template fields available to `write` and `onbuild`: %r", fields) return fields - def do_write(self, template_fields: Dict[str, Any]) -> None: + def do_write(self, template_fields: dict[str, Any]) -> None: """ Run the ``write`` step @@ -425,9 +424,9 @@ def do_onbuild( self, - build_dir: Union[str, Path], + build_dir: str | Path, is_source: bool, - template_fields: Dict[str, Any], + template_fields: dict[str, Any], ) -> None: """ .. versionadded:: 1.1.0 @@ -449,7 +448,7 @@ def get_version( - project_dir: Union[str, Path] = os.curdir, + project_dir: str | Path = os.curdir, config: Optional[dict] = None, write: bool = False, fallback: bool = True, @@ -492,7 +491,7 @@ def get_next_version( - project_dir: Union[str, Path] = os.curdir, config: Optional[dict] = None + project_dir: str | Path = os.curdir, config: Optional[dict] = None ) -> str: """ .. versionadded:: 0.3.0 @@ -525,7 +524,7 @@ return next_version -def get_version_from_pkg_info(project_dir: Union[str, Path]) -> str: +def get_version_from_pkg_info(project_dir: str | Path) -> str: """ Return the :mailheader:`Version` field from the :file:`PKG-INFO` file in ``project_dir`` @@ -545,10 +544,10 @@ def run_onbuild( *, - build_dir: Union[str, Path], + build_dir: str | Path, is_source: bool, - template_fields: Dict[str, Any], - project_dir: Union[str, Path] = os.curdir, + template_fields: dict[str, Any], + project_dir: str | Path = os.curdir, config: Optional[dict] = None, ) -> None: """ @@ -596,8 +595,8 @@ def get_template_fields_from_distribution( - dist: "Distribution", -) -> Optional[Dict[str, Any]]: + dist: Distribution, +) -> Optional[dict[str, Any]]: """ Extract the template fields (calculated by the "template-fields" step) that were stashed on the `setuptools.Distribution` by ``versioningit``'s diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/src/versioningit/git.py new/versioningit-2.1.0/src/versioningit/git.py --- old/versioningit-2.0.1/src/versioningit/git.py 2022-06-12 17:36:17.000000000 +0200 +++ new/versioningit-2.1.0/src/versioningit/git.py 2022-10-16 21:26:47.000000000 +0200 @@ -1,9 +1,10 @@ +from __future__ import annotations from dataclasses import dataclass from datetime import datetime from pathlib import Path import re import subprocess -from typing import Any, Dict, List, NamedTuple, Optional, Union +from typing import Any, NamedTuple, Optional from .core import VCSDescription from .errors import ConfigError, NoTagError, NotVCSError from .logging import log, warn_extra_fields @@ -50,7 +51,7 @@ rev: str @classmethod - def parse(cls, s: str) -> "Describe": + def parse(cls, s: str) -> Describe: m = re.fullmatch(r"(?P<tag>.+)-(?P<distance>[0-9]+)-g(?P<rev>[0-9a-f]+)?", s) if not m: raise ValueError("Could not parse `git describe` output") @@ -65,19 +66,19 @@ @dataclass class DescribeOpts: tags: bool - match: List[str] - exclude: List[str] + match: list[str] + exclude: list[str] @classmethod - def parse_describe_subst(cls, s: str) -> "DescribeOpts": + def parse_describe_subst(cls, s: str) -> DescribeOpts: m = re.fullmatch(r"\$Format:%\(describe(?::(?P<options>.*))?\)\$", s) if not m: raise ValueError( f"Expected string in format '$Format:%(describe[:options])$', got {s!r}" ) tags = False - match: List[str] = [] - exclude: List[str] = [] + match: list[str] = [] + exclude: list[str] = [] options = m["options"] if options: # As of Git 2.35.1, though the docs say that %(describe) options @@ -117,8 +118,8 @@ raise ValueError(f"Unknown option: {opt!r}") return cls(tags=tags, match=match, exclude=exclude) - def as_args(self) -> List[str]: - args: List[str] = [] + def as_args(self) -> list[str]: + args: list[str] = [] if self.tags: args.append("--tags") for pat in self.match: @@ -133,7 +134,7 @@ """Methods for querying a Git repository""" #: The repository's working tree or a subdirectory thereof - path: Union[str, Path] + path: str | Path def ensure_is_repo(self) -> None: """ @@ -208,9 +209,7 @@ return None -def describe_git( - *, project_dir: Union[str, Path], params: Dict[str, Any] -) -> VCSDescription: +def describe_git(*, project_dir: str | Path, params: dict[str, Any]) -> VCSDescription: """Implements the ``"git"`` ``vcs`` method""" params = params.copy() match = list_str_guard(params.pop("match", []), "tool.versioningit.vcs.match") @@ -241,7 +240,7 @@ def describe_git_archive( - *, project_dir: Union[str, Path], params: Dict[str, Any] + *, project_dir: str | Path, params: dict[str, Any] ) -> VCSDescription: """Implements the ``"git-archive"`` ``vcs`` method""" params = params.copy() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/src/versioningit/hg.py new/versioningit-2.1.0/src/versioningit/hg.py --- old/versioningit-2.0.1/src/versioningit/hg.py 2022-06-05 03:29:46.000000000 +0200 +++ new/versioningit-2.1.0/src/versioningit/hg.py 2022-10-16 20:35:59.000000000 +0200 @@ -1,8 +1,9 @@ +from __future__ import annotations from dataclasses import dataclass import os from pathlib import Path import subprocess -from typing import Any, Dict, Union +from typing import Any from .core import VCSDescription from .errors import NoTagError, NotVCSError from .logging import log, warn_extra_fields @@ -14,7 +15,7 @@ """Methods for querying a Mercurial repository""" #: The repository's working tree or a subdirectory thereof - path: Union[str, Path] + path: str | Path def ensure_is_repo(self) -> None: """ @@ -54,9 +55,7 @@ ) -def describe_hg( - *, project_dir: Union[str, Path], params: Dict[str, Any] -) -> VCSDescription: +def describe_hg(*, project_dir: str | Path, params: dict[str, Any]) -> VCSDescription: """Implements the ``"hg"`` ``vcs`` method""" params = params.copy() pattern = optional_str_guard( @@ -139,8 +138,8 @@ ) -def parse_hg_archival(path: Path) -> Dict[str, str]: - data: Dict[str, str] = {} +def parse_hg_archival(path: Path) -> dict[str, str]: + data: dict[str, str] = {} with path.open() as fp: for line in fp: key, _, value = line.strip().partition(": ") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/src/versioningit/hook.py new/versioningit-2.1.0/src/versioningit/hook.py --- old/versioningit-2.0.1/src/versioningit/hook.py 2022-06-12 17:36:17.000000000 +0200 +++ new/versioningit-2.1.0/src/versioningit/hook.py 2022-10-16 21:31:14.000000000 +0200 @@ -1,3 +1,4 @@ +from __future__ import annotations from pathlib import Path from typing import TYPE_CHECKING from .core import Report, Versioningit @@ -8,7 +9,7 @@ from setuptools import Distribution -def setuptools_finalizer(dist: "Distribution") -> None: +def setuptools_finalizer(dist: Distribution) -> None: """ The entry point called by setuptools to retrieve the version for a project """ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/src/versioningit/logging.py new/versioningit-2.1.0/src/versioningit/logging.py --- old/versioningit-2.0.1/src/versioningit/logging.py 2022-06-09 03:41:30.000000000 +0200 +++ new/versioningit-2.1.0/src/versioningit/logging.py 2022-10-16 20:35:59.000000000 +0200 @@ -1,7 +1,8 @@ +from __future__ import annotations from difflib import get_close_matches import logging import os -from typing import Iterable, List, Optional +from typing import Iterable, Optional from packaging.version import Version log = logging.getLogger(__package__) @@ -55,7 +56,7 @@ def warn_extra_fields( - params: dict, fieldname: str, valid: Optional[List[str]] = None + params: dict, fieldname: str, valid: Optional[list[str]] = None ) -> None: """ For each key in ``params``, emit a log message indicating that the given diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/src/versioningit/methods.py new/versioningit-2.1.0/src/versioningit/methods.py --- old/versioningit-2.0.1/src/versioningit/methods.py 2022-06-12 22:21:23.000000000 +0200 +++ new/versioningit-2.1.0/src/versioningit/methods.py 2022-10-16 20:30:51.000000000 +0200 @@ -1,11 +1,13 @@ +from __future__ import annotations from abc import ABC, abstractmethod +from collections.abc import Callable from contextlib import suppress from dataclasses import dataclass from importlib import import_module import os.path from pathlib import Path import sys -from typing import Any, Callable, Dict, Optional, Union, cast +from typing import Any, Optional, cast from .errors import ConfigError, MethodError from .logging import didyoumean, log @@ -27,7 +29,7 @@ """ @abstractmethod - def load(self, project_dir: Union[str, Path]) -> Callable: + def load(self, project_dir: str | Path) -> Callable: """ Load & return the callable specified by the `MethodSpec`. ``project_dir`` is provided in case the method needs to load anything @@ -48,7 +50,7 @@ #: The name of the entry point name: str - def load(self, _project_dir: Union[str, Path]) -> Callable: + def load(self, _project_dir: str | Path) -> Callable: """ Loads & returns the entry point @@ -96,7 +98,7 @@ #: ``project_dir`` module_dir: Optional[str] - def load(self, project_dir: Union[str, Path]) -> Callable: + def load(self, project_dir: str | Path) -> Callable: """ Loads the module and returns the callable @@ -134,7 +136,7 @@ #: The callable func: Callable - def load(self, _project_dir: Union[str, Path]) -> Callable: + def load(self, _project_dir: str | Path) -> Callable: """Return the callable""" return self.func @@ -150,7 +152,7 @@ method: Callable #: User-supplied parameters obtained from the original configuration - params: Dict[str, Any] + params: dict[str, Any] def __call__(self, **kwargs: Any) -> Any: """ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/src/versioningit/next_version.py new/versioningit-2.1.0/src/versioningit/next_version.py --- old/versioningit-2.0.1/src/versioningit/next_version.py 2022-06-05 03:29:46.000000000 +0200 +++ new/versioningit-2.1.0/src/versioningit/next_version.py 2022-10-16 21:26:52.000000000 +0200 @@ -1,6 +1,7 @@ +from __future__ import annotations from dataclasses import dataclass import re -from typing import Any, Dict, List, Optional +from typing import Any, Optional from packaging.version import Version from .errors import InvalidVersionError from .logging import warn_extra_fields @@ -14,10 +15,10 @@ epoch: int #: The integer values of the components of the release segment - release: List[int] + release: list[int] @classmethod - def parse(cls, version: str) -> "BasicVersion": + def parse(cls, version: str) -> BasicVersion: """ Parse the initial epoch and release segment from a version string and discard any other trailing characters @@ -52,7 +53,7 @@ *, version: str, branch: Optional[str], # noqa: U100 - params: Dict[str, Any], + params: dict[str, Any], ) -> str: """Implements the ``"minor"`` ``next-version`` method""" warn_extra_fields(params, "tool.versioningit.next-version") @@ -67,7 +68,7 @@ *, version: str, branch: Optional[str], # noqa: U100 - params: Dict[str, Any], + params: dict[str, Any], ) -> str: """Implements the ``"smallest"`` ``next-version`` method""" warn_extra_fields(params, "tool.versioningit.next-version") @@ -80,7 +81,7 @@ *, version: str, branch: Optional[str], # noqa: U100 - params: Dict[str, Any], + params: dict[str, Any], ) -> str: """Implements the ``"null"`` ``next-version`` method""" warn_extra_fields(params, "tool.versioningit.next-version") @@ -91,7 +92,7 @@ *, version: str, branch: Optional[str], # noqa: U100 - params: Dict[str, Any], + params: dict[str, Any], ) -> str: """ Implements the ``"minor-release"`` ``next-version`` method. @@ -119,7 +120,7 @@ *, version: str, branch: Optional[str], # noqa: U100 - params: Dict[str, Any], + params: dict[str, Any], ) -> str: """ Implements the ``"smallest-release"`` ``next-version`` method. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/src/versioningit/onbuild.py new/versioningit-2.1.0/src/versioningit/onbuild.py --- old/versioningit-2.0.1/src/versioningit/onbuild.py 2022-06-12 17:36:17.000000000 +0200 +++ new/versioningit-2.1.0/src/versioningit/onbuild.py 2022-10-16 20:31:34.000000000 +0200 @@ -1,6 +1,7 @@ +from __future__ import annotations from pathlib import Path import re -from typing import Any, Dict, Union +from typing import Any from .errors import ConfigError from .logging import log, warn_extra_fields from .util import bool_guard, ensure_terminated, optional_str_guard, str_guard @@ -8,10 +9,10 @@ def replace_version_onbuild( *, - build_dir: Union[str, Path], + build_dir: str | Path, is_source: bool, - template_fields: Dict[str, Any], - params: Dict[str, Any], + template_fields: dict[str, Any], + params: dict[str, Any], ) -> None: """Implements the ``"replace-version"`` ``onbuild`` method""" @@ -66,7 +67,7 @@ m = rgx.search(ln) if m: log.debug("onbuild.regex matched file on line %d", i + 1) - vgroup: Union[str, int] + vgroup: str | int if "version" in m.groupdict(): vgroup = "version" else: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/src/versioningit/util.py new/versioningit-2.1.0/src/versioningit/util.py --- old/versioningit-2.0.1/src/versioningit/util.py 2022-06-12 22:46:11.000000000 +0200 +++ new/versioningit-2.1.0/src/versioningit/util.py 2022-10-16 20:32:32.000000000 +0200 @@ -1,3 +1,5 @@ +from __future__ import annotations +from collections.abc import Sequence from datetime import datetime, timezone import json import os @@ -5,7 +7,7 @@ import re import shlex import subprocess -from typing import Any, List, Optional, Sequence, Union +from typing import Any, Optional from packaging.version import Version from .errors import ConfigError, InvalidVersionError from .logging import log @@ -33,7 +35,7 @@ raise ConfigError(f"{fieldname} must be a string") -def list_str_guard(v: Any, fieldname: str) -> List[str]: +def list_str_guard(v: Any, fieldname: str) -> list[str]: """ If ``v`` is a `list` of `str`\\s, return it; otherwise, raise a `ConfigError`. ``fieldname`` is an identifier for ``v`` to include in the @@ -56,7 +58,7 @@ raise ConfigError(f"{fieldname} must be set to a boolean") -def runcmd(*args: Union[str, Path], **kwargs: Any) -> subprocess.CompletedProcess: +def runcmd(*args: str | Path, **kwargs: Any) -> subprocess.CompletedProcess: """Run and log a given command""" arglist = [str(a) for a in args] log.debug("Running: %s", showcmd(arglist)) @@ -64,9 +66,9 @@ return subprocess.run(arglist, **kwargs) -def readcmd(*args: Union[str, Path], **kwargs: Any) -> str: +def readcmd(*args: str | Path, **kwargs: Any) -> str: """Run a command, capturing & returning its stdout""" - s = runcmd(*args, stdout=subprocess.PIPE, universal_newlines=True, **kwargs).stdout + s = runcmd(*args, stdout=subprocess.PIPE, text=True, **kwargs).stdout assert isinstance(s, str) return s.strip() @@ -137,7 +139,7 @@ return " ".join(shlex.quote(os.fsdecode(a)) for a in args) -def is_sdist(project_dir: Union[str, Path]) -> bool: +def is_sdist(project_dir: str | Path) -> bool: """ Performs a simplistic check whether ``project_dir`` (which presumably is not under version control) is an unpacked sdist by testing whether @@ -169,7 +171,7 @@ vobj = Version(v) except ValueError: raise InvalidVersionError(f"{v!r} is not a valid PEP 440 version") - parts: List[Union[str, int]] = [] + parts: list[str | int] = [] if epoch or (vobj.epoch and epoch is None): parts.append(vobj.epoch) parts.extend(vobj.release) @@ -185,8 +187,8 @@ return repr_tuple(parts, double_quote) -def repr_tuple(parts: Sequence[Union[str, int]], double_quote: bool = True) -> str: - strparts: List[str] = [] +def repr_tuple(parts: Sequence[str | int], double_quote: bool = True) -> str: + strparts: list[str] = [] for p in parts: if isinstance(p, int): strparts.append(str(p)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/src/versioningit.egg-info/PKG-INFO new/versioningit-2.1.0/src/versioningit.egg-info/PKG-INFO --- old/versioningit-2.0.1/src/versioningit.egg-info/PKG-INFO 2022-08-01 18:10:26.000000000 +0200 +++ new/versioningit-2.1.0/src/versioningit.egg-info/PKG-INFO 2022-10-26 00:44:29.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: versioningit -Version: 2.0.1 +Version: 2.1.0 Summary: Versioning It with your Version In Git Home-page: https://github.com/jwodder/versioningit Author: John Thorvald Wodder II @@ -13,11 +13,11 @@ Classifier: Development Status :: 5 - Production/Stable Classifier: Programming Language :: Python :: 3 :: Only Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 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: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy Classifier: License :: OSI Approved :: MIT License @@ -28,7 +28,7 @@ Classifier: Topic :: Software Development :: Version Control :: Git Classifier: Topic :: Software Development :: Version Control :: Mercurial Classifier: Typing :: Typed -Requires-Python: >=3.6 +Requires-Python: >=3.7 Description-Content-Type: text/x-rst License-File: LICENSE @@ -101,7 +101,7 @@ Installation & Setup ==================== -``versioningit`` requires Python 3.6 or higher. Just use `pip +``versioningit`` requires Python 3.7 or higher. Just use `pip <https://pip.pypa.io>`_ for Python 3 (You have pip, right?) to install ``versioningit`` and its dependencies:: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/src/versioningit.egg-info/requires.txt new/versioningit-2.1.0/src/versioningit.egg-info/requires.txt --- old/versioningit-2.0.1/src/versioningit.egg-info/requires.txt 2022-08-01 18:10:26.000000000 +0200 +++ new/versioningit-2.1.0/src/versioningit.egg-info/requires.txt 2022-10-26 00:44:29.000000000 +0200 @@ -1,8 +1,7 @@ packaging>=17.1 -tomli<3.0,>=1.2 [:python_version < "3.10"] importlib-metadata>=3.6 -[:python_version < "3.7"] -dataclasses +[:python_version < "3.11"] +tomli<3.0,>=1.2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/test/test_config.py new/versioningit-2.1.0/test/test_config.py --- old/versioningit-2.0.1/test/test_config.py 2022-06-12 17:36:17.000000000 +0200 +++ new/versioningit-2.1.0/test/test_config.py 2022-10-16 20:33:06.000000000 +0200 @@ -1,6 +1,7 @@ +from __future__ import annotations from operator import attrgetter from pathlib import Path -from typing import Any, Dict +from typing import Any import pytest from versioningit.config import Config, ConfigSection from versioningit.errors import ConfigError, NotVersioningitError @@ -18,7 +19,7 @@ ) def test_parse_toml_file(tomlfile: Path) -> None: cfg = Config.parse_toml_file(tomlfile) - namespace: Dict[str, Any] = {} + namespace: dict[str, Any] = {} exec(tomlfile.with_suffix(".py").read_text(encoding="utf-8"), namespace) assert cfg == namespace["cfg"] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/test/test_end2end.py new/versioningit-2.1.0/test/test_end2end.py --- old/versioningit-2.0.1/test/test_end2end.py 2022-06-12 17:36:17.000000000 +0200 +++ new/versioningit-2.1.0/test/test_end2end.py 2022-10-16 20:33:51.000000000 +0200 @@ -1,10 +1,12 @@ +from __future__ import annotations +from collections.abc import Iterator import logging import os from pathlib import Path import shutil import subprocess import sys -from typing import Iterator, List, Optional, Tuple, Type, Union, cast +from typing import List, Optional, Type, Union, cast from _pytest.mark.structures import ParameterSet from pydantic import BaseModel, Field import pytest @@ -50,7 +52,7 @@ level: str message: str - def as_tuple(self) -> Tuple[str, int, str]: + def as_tuple(self) -> tuple[str, int, str]: return ("versioningit", getattr(logging, self.level), self.message) @@ -69,7 +71,7 @@ def mkcases( subdir: str, - marks: List[pytest.MarkDecorator], + marks: list[pytest.MarkDecorator], details_cls: Type[BaseModel] = CaseDetails, ) -> Iterator[ParameterSet]: for repozip in sorted((DATA_DIR / "repos" / subdir).glob("*.zip")): @@ -238,7 +240,7 @@ [sys.executable, "-m", "build", "--no-isolation", str(tmp_path)], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, - universal_newlines=True, + text=True, ) assert r.returncode != 0 out = r.stdout @@ -254,7 +256,7 @@ [sys.executable, "-m", "build", "--no-isolation", str(tmp_path)], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, - universal_newlines=True, + text=True, ) assert r.returncode != 0 out = r.stdout @@ -334,7 +336,7 @@ ["setup.py", "develop"], ], ) -def test_editable_mode(cmd: List[str], tmp_path: Path) -> None: +def test_editable_mode(cmd: list[str], tmp_path: Path) -> None: repozip = DATA_DIR / "repos" / "git" / "onbuild-write-fields.zip" details = CaseDetails.parse_file(repozip.with_suffix(".json")) srcdir = tmp_path / "src" @@ -401,7 +403,7 @@ return sdist_src -def unpack_wheel(dist_dir: Path, tmp_path: Path) -> Tuple[Path, Path]: +def unpack_wheel(dist_dir: Path, tmp_path: Path) -> tuple[Path, Path]: (wheel,) = dist_dir.glob("*.whl") wheel_src = tmp_path / "wheel" shutil.unpack_archive(str(wheel), str(wheel_src), "zip") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/test/test_methods/test_format.py new/versioningit-2.1.0/test/test_methods/test_format.py --- old/versioningit-2.0.1/test/test_methods/test_format.py 2022-06-12 17:36:17.000000000 +0200 +++ new/versioningit-2.1.0/test/test_methods/test_format.py 2022-10-16 20:34:06.000000000 +0200 @@ -1,5 +1,6 @@ +from __future__ import annotations from datetime import datetime, timezone -from typing import Any, Dict +from typing import Any import pytest from versioningit.basics import basic_format from versioningit.core import VCSDescription @@ -137,7 +138,7 @@ description: VCSDescription, base_version: str, next_version: str, - params: Dict[str, Any], + params: dict[str, Any], r: str, ) -> None: assert ( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/test/test_methods/test_git.py new/versioningit-2.1.0/test/test_methods/test_git.py --- old/versioningit-2.0.1/test/test_methods/test_git.py 2022-06-12 17:36:17.000000000 +0200 +++ new/versioningit-2.1.0/test/test_methods/test_git.py 2022-10-16 20:34:17.000000000 +0200 @@ -1,10 +1,11 @@ +from __future__ import annotations from datetime import datetime, timezone import logging from pathlib import Path import re import shutil import subprocess -from typing import Any, Dict +from typing import Any import pytest from versioningit.core import VCSDescription from versioningit.errors import ConfigError, NoTagError, NotVCSError @@ -224,7 +225,7 @@ ], ) def test_describe_git( - repo: str, params: Dict[str, Any], description: VCSDescription, tmp_path: Path + repo: str, params: dict[str, Any], description: VCSDescription, tmp_path: Path ) -> None: shutil.unpack_archive( str(DATA_DIR / "repos" / "git" / f"{repo}.zip"), str(tmp_path) @@ -254,7 +255,7 @@ @needs_git @pytest.mark.parametrize("params", [{}, {"default-tag": "0.0.0"}]) -def test_describe_git_no_commits(tmp_path: Path, params: Dict[str, Any]) -> None: +def test_describe_git_no_commits(tmp_path: Path, params: dict[str, Any]) -> None: subprocess.run(["git", "init"], check=True, cwd=str(tmp_path)) with pytest.raises(NotVCSError) as excinfo: describe_git(project_dir=tmp_path, params=params) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/test/test_methods/test_hg.py new/versioningit-2.1.0/test/test_methods/test_hg.py --- old/versioningit-2.0.1/test/test_methods/test_hg.py 2022-06-12 17:36:17.000000000 +0200 +++ new/versioningit-2.1.0/test/test_methods/test_hg.py 2022-10-16 20:34:32.000000000 +0200 @@ -1,3 +1,4 @@ +from __future__ import annotations from datetime import datetime, timezone import json import logging @@ -5,7 +6,7 @@ from pathlib import Path import shutil import subprocess -from typing import Any, Dict +from typing import Any import pytest from versioningit.core import VCSDescription from versioningit.errors import NoTagError, NotVCSError @@ -129,7 +130,7 @@ ], ) def test_describe_hg( - repo: str, params: Dict[str, Any], description: VCSDescription, tmp_path: Path + repo: str, params: dict[str, Any], description: VCSDescription, tmp_path: Path ) -> None: shutil.unpack_archive(str(DATA_DIR / "repos" / "hg" / f"{repo}.zip"), str(tmp_path)) desc = describe_hg(project_dir=tmp_path, params=params) @@ -160,7 +161,7 @@ @needs_hg @pytest.mark.parametrize("params", [{}, {"default-tag": "0.0.0"}]) -def test_describe_hg_no_commits(tmp_path: Path, params: Dict[str, Any]) -> None: +def test_describe_hg_no_commits(tmp_path: Path, params: dict[str, Any]) -> None: subprocess.run(["hg", "--cwd", str(tmp_path), "init"], check=True) with pytest.raises(NotVCSError) as excinfo: describe_hg(project_dir=tmp_path, params=params) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/test/test_methods/test_onbuild.py new/versioningit-2.1.0/test/test_methods/test_onbuild.py --- old/versioningit-2.0.1/test/test_methods/test_onbuild.py 2022-06-12 17:36:17.000000000 +0200 +++ new/versioningit-2.1.0/test/test_methods/test_onbuild.py 2022-10-16 20:34:42.000000000 +0200 @@ -1,7 +1,8 @@ +from __future__ import annotations from datetime import datetime, timezone from pathlib import Path from shutil import copytree -from typing import Any, Dict +from typing import Any import pytest from versioningit.errors import ConfigError from versioningit.onbuild import replace_version_onbuild @@ -160,7 +161,7 @@ ], ) def test_replace_version_onbuild( - outfile: str, is_source: bool, params: Dict[str, Any], tmp_path: Path + outfile: str, is_source: bool, params: dict[str, Any], tmp_path: Path ) -> None: tmp_path /= "tmp" # copytree() can't copy to a dir that already exists copytree(DATA_DIR / "replace-version" / "base", tmp_path) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/test/test_methods/test_tag2version.py new/versioningit-2.1.0/test/test_methods/test_tag2version.py --- old/versioningit-2.0.1/test/test_methods/test_tag2version.py 2022-06-12 17:36:17.000000000 +0200 +++ new/versioningit-2.1.0/test/test_methods/test_tag2version.py 2022-10-16 20:34:51.000000000 +0200 @@ -1,4 +1,5 @@ -from typing import Any, Dict +from __future__ import annotations +from typing import Any import pytest from versioningit.basics import basic_tag2version from versioningit.errors import InvalidTagError @@ -28,7 +29,7 @@ ), ], ) -def test_basic_tag2version(tag: str, params: Dict[str, Any], version: str) -> None: +def test_basic_tag2version(tag: str, params: dict[str, Any], version: str) -> None: assert basic_tag2version(tag=tag, params=params) == version diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/test/test_methods/test_template_fields.py new/versioningit-2.1.0/test/test_methods/test_template_fields.py --- old/versioningit-2.0.1/test/test_methods/test_template_fields.py 2022-06-12 17:36:17.000000000 +0200 +++ new/versioningit-2.1.0/test/test_methods/test_template_fields.py 2022-10-16 20:35:13.000000000 +0200 @@ -1,6 +1,7 @@ +from __future__ import annotations from datetime import datetime, timezone import logging -from typing import Any, Dict, List, Optional +from typing import Any, Optional import pytest from versioningit.basics import basic_template_fields from versioningit.core import VCSDescription @@ -79,9 +80,9 @@ def test_basic_template_fields( caplog: pytest.LogCaptureFixture, version: str, - params: Dict[str, Any], + params: dict[str, Any], version_tuple: str, - warnings: List[str], + warnings: list[str], ) -> None: assert basic_template_fields( version=version, @@ -177,7 +178,7 @@ description: Optional[VCSDescription], base_version: Optional[str], next_version: Optional[str], - fields: Dict[str, Any], + fields: dict[str, Any], ) -> None: assert ( basic_template_fields( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/test/test_methods/test_write.py new/versioningit-2.1.0/test/test_methods/test_write.py --- old/versioningit-2.0.1/test/test_methods/test_write.py 2022-06-12 17:36:17.000000000 +0200 +++ new/versioningit-2.1.0/test/test_methods/test_write.py 2022-10-16 20:35:32.000000000 +0200 @@ -1,6 +1,7 @@ +from __future__ import annotations from datetime import datetime, timezone from pathlib import Path -from typing import Any, Dict +from typing import Any import pytest from versioningit.basics import basic_write from versioningit.errors import ConfigError @@ -31,7 +32,7 @@ ], ) def test_basic_write( - filename: str, params: Dict[str, Any], content: str, tmp_path: Path + filename: str, params: dict[str, Any], content: str, tmp_path: Path ) -> None: basic_write( project_dir=tmp_path, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/test/test_util.py new/versioningit-2.1.0/test/test_util.py --- old/versioningit-2.0.1/test/test_util.py 2022-06-12 17:36:17.000000000 +0200 +++ new/versioningit-2.1.0/test/test_util.py 2022-10-16 20:35:51.000000000 +0200 @@ -1,7 +1,8 @@ +from __future__ import annotations from datetime import datetime, timedelta, timezone import os from pathlib import Path -from typing import Any, List, Optional, Union +from typing import Any, Optional import pytest from versioningit.errors import ConfigError, InvalidVersionError from versioningit.git import DescribeOpts @@ -162,7 +163,7 @@ ), ], ) -def test_showcmd(cmd: List[Union[str, Path]], s: str) -> None: +def test_showcmd(cmd: list[str | Path], s: str) -> None: assert showcmd(cmd) == s @@ -341,7 +342,7 @@ ), ], ) -def test_parse_describe_opts(fmt: str, opts: DescribeOpts, args: List[str]) -> None: +def test_parse_describe_opts(fmt: str, opts: DescribeOpts, args: list[str]) -> None: actual = DescribeOpts.parse_describe_subst(fmt) assert actual == opts assert actual.as_args() == args diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/versioningit-2.0.1/tox.ini new/versioningit-2.1.0/tox.ini --- old/versioningit-2.0.1/tox.ini 2022-06-05 03:29:46.000000000 +0200 +++ new/versioningit-2.1.0/tox.ini 2022-10-25 21:03:32.000000000 +0200 @@ -1,18 +1,31 @@ [tox] -envlist = lint,typing,py36,py37,py38,py39,py310,pypy3 +envlist = lint,typing,py37,py38,py39,py310,py311,pypy3,py-oldsetup skip_missing_interpreters = True isolated_build = True minversion = 3.3.0 [testenv] deps = - build~=0.7 # Must be a version that builds wheels from sdists + build>=0.7 # Must be a version that builds wheels from sdists setuptools>=42 pip - pydantic~=1.8 - pytest~=7.0 - pytest-cov~=3.0 - pytest-mock~=3.0 + pydantic + pytest + pytest-cov + pytest-mock + wheel +commands = + pytest {posargs:-v} test + +[testenv:py-oldsetup] +deps = + build>=0.7 # Must be a version that builds wheels from sdists + setuptools<64 + pip + pydantic + pytest + pytest-cov + pytest-mock wheel commands = pytest {posargs:-v} test @@ -20,17 +33,16 @@ [testenv:lint] skip_install = True deps = - flake8~=4.0 + flake8 flake8-bugbear - flake8-builtins~=1.4 + flake8-builtins flake8-unused-arguments commands = flake8 src test [testenv:typing] deps = - mypy~=0.900 - types-dataclasses; python_version < "3.7" + mypy types-setuptools {[testenv]deps} commands = @@ -69,11 +81,11 @@ doctests = True exclude = .*/,build/,dist/,test/data,venv/ hang-closing = False -max-doc-length = 80 +max-doc-length = 100 max-line-length = 80 unused-arguments-ignore-stub-functions = True -select = C,B,B902,B950,E,E242,F,I,U100,W -ignore = B005,E203,E262,E266,E501,I201,W503 +select = C,B,B902,B950,E,E242,F,U100,W +ignore = B005,E203,E262,E266,E501,W503 [isort] atomic = True