Skip to content

Commit 86c6b1e

Browse files
Refactor version schemes into proper package structure
- Create _scm_version.py module with ScmVersion, meta(), tag_to_version() and parsing utilities - Create _version_schemes/ package with organized submodules: - _common.py: shared utilities (SEMVER constants, combine_version_with_local_parts) - _standard.py: standard version and local schemes - _towncrier.py: towncrier-based version scheme - __init__.py: public API with format_version() - Update all imports throughout vcs-versioning and setuptools-scm - Update test imports to use new module structure - Delete old _version_schemes.py and _version_schemes_towncrier.py files This refactoring improves code organization by: 1. Separating the core ScmVersion data structure from version schemes 2. Grouping related schemes in dedicated modules 3. Making the package structure more maintainable and extensible 4. Maintaining full backward compatibility through re-exports All tests pass (380 vcs-versioning + 127 setuptools-scm)
1 parent 86a3246 commit 86c6b1e

21 files changed

+463
-352
lines changed

vcs-versioning/src/vcs_versioning/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
# Public API exports
1111
from ._config import DEFAULT_LOCAL_SCHEME, DEFAULT_VERSION_SCHEME, Configuration
1212
from ._pyproject_reading import PyProjectData
13+
from ._scm_version import ScmVersion
1314
from ._version_cls import NonNormalizedVersion, Version
1415
from ._version_inference import infer_version_string
15-
from ._version_schemes import ScmVersion
1616

1717

1818
def build_configuration_from_pyproject(

vcs-versioning/src/vcs_versioning/_backends/_git.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
from .._run_cmd import CompletedProcess as _CompletedProcess
2222
from .._run_cmd import require_command as _require_command
2323
from .._run_cmd import run as _run
24-
from .._version_schemes import ScmVersion, meta, tag_to_version
24+
from .._scm_version import ScmVersion, meta, tag_to_version
2525
from ._scm_workdir import Workdir, get_latest_file_mtime
2626

2727
if TYPE_CHECKING:

vcs-versioning/src/vcs_versioning/_backends/_hg.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
from .._run_cmd import CompletedProcess
1313
from .._run_cmd import require_command as _require_command
1414
from .._run_cmd import run as _run
15+
from .._scm_version import ScmVersion, meta, tag_to_version
1516
from .._version_cls import Version
16-
from .._version_schemes import ScmVersion, meta, tag_to_version
1717
from ._scm_workdir import Workdir, get_latest_file_mtime
1818

1919
log = logging.getLogger(__name__)

vcs-versioning/src/vcs_versioning/_backends/_scm_workdir.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from pathlib import Path
77

88
from .._config import Configuration
9-
from .._version_schemes import ScmVersion
9+
from .._scm_version import ScmVersion
1010

1111
log = logging.getLogger(__name__)
1212

vcs-versioning/src/vcs_versioning/_dump_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
if TYPE_CHECKING:
1313
from . import _types as _t
14-
from ._version_schemes import ScmVersion
14+
from ._scm_version import ScmVersion
1515

1616
log = logging.getLogger(__name__)
1717

vcs-versioning/src/vcs_versioning/_entrypoints.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,21 @@
1212
]
1313
if TYPE_CHECKING:
1414
from . import _types as _t
15-
from . import _version_schemes
1615
from ._config import Configuration, ParseFunction
16+
from ._scm_version import ScmVersion
1717

1818
log = logging.getLogger(__name__)
1919

2020

2121
def version_from_entrypoint(
2222
config: Configuration, *, entrypoint: str, root: _t.PathT
23-
) -> _version_schemes.ScmVersion | None:
23+
) -> ScmVersion | None:
2424
from ._discover import iter_matching_entrypoints
2525

2626
log.debug("version_from_ep %s in %s", entrypoint, root)
2727
for ep in iter_matching_entrypoints(root, entrypoint, config):
2828
fn: ParseFunction = ep.load()
29-
maybe_version: _version_schemes.ScmVersion | None = fn(root, config=config)
29+
maybe_version: ScmVersion | None = fn(root, config=config)
3030
log.debug("%s found %r", ep, maybe_version)
3131
if maybe_version is not None:
3232
return maybe_version
@@ -55,7 +55,7 @@ def _iter_version_schemes(
5555
entrypoint: str,
5656
scheme_value: _t.VERSION_SCHEMES,
5757
_memo: set[object] | None = None,
58-
) -> Iterator[Callable[[_version_schemes.ScmVersion], str]]:
58+
) -> Iterator[Callable[[ScmVersion], str]]:
5959
if _memo is None:
6060
_memo = set()
6161
if isinstance(scheme_value, str):
@@ -75,7 +75,7 @@ def _iter_version_schemes(
7575

7676

7777
def _call_version_scheme(
78-
version: _version_schemes.ScmVersion,
78+
version: ScmVersion,
7979
entrypoint: str,
8080
given_value: _t.VERSION_SCHEMES,
8181
default: str | None = None,

vcs-versioning/src/vcs_versioning/_fallbacks.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from . import _types as _t
1010
from ._config import Configuration
1111
from ._integration import data_from_mime
12-
from ._version_schemes import ScmVersion, meta, tag_to_version
12+
from ._scm_version import ScmVersion, meta, tag_to_version
1313

1414
log = logging.getLogger(__name__)
1515

vcs-versioning/src/vcs_versioning/_get_version_impl.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
from . import _types as _t
1313
from ._config import Configuration
1414
from ._overrides import _read_pretended_version_for
15+
from ._scm_version import ScmVersion
1516
from ._version_cls import _validate_version_cls
16-
from ._version_schemes import ScmVersion
1717
from ._version_schemes import format_version as _format_version
1818

1919
EMPTY_TAG_REGEX_DEPRECATION = DeprecationWarning(

vcs-versioning/src/vcs_versioning/_overrides.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
from . import _config
2121
from . import _types as _t
22-
from . import _version_schemes as version
22+
from ._scm_version import ScmVersion, meta # noqa: F401 - for type checking
2323
from ._version_cls import Version as _Version
2424

2525
log = logging.getLogger(__name__)
@@ -173,9 +173,9 @@ def _read_pretended_metadata_for(
173173

174174

175175
def _apply_metadata_overrides(
176-
scm_version: version.ScmVersion | None,
176+
scm_version: ScmVersion | None,
177177
config: _config.Configuration,
178-
) -> version.ScmVersion | None:
178+
) -> ScmVersion | None:
179179
"""Apply metadata overrides to a ScmVersion object.
180180
181181
This function reads pretend metadata from environment variables and applies
@@ -247,7 +247,7 @@ def _apply_metadata_overrides(
247247

248248
def _read_pretended_version_for(
249249
config: _config.Configuration,
250-
) -> version.ScmVersion | None:
250+
) -> ScmVersion | None:
251251
"""read a a overridden version from the environment
252252
253253
tries ``SETUPTOOLS_SCM_PRETEND_VERSION``
@@ -265,7 +265,7 @@ def _read_pretended_version_for(
265265
pretended = reader.read("PRETEND_VERSION")
266266

267267
if pretended:
268-
return version.meta(tag=pretended, preformatted=True, config=config)
268+
return meta(tag=pretended, preformatted=True, config=config)
269269
else:
270270
return None
271271

0 commit comments

Comments
 (0)