Skip to content

Commit 92903cf

Browse files
authored
refactor(provider): split provider code and related tests into individual files for maintainability (#830)
1 parent d19007e commit 92903cf

21 files changed

+805
-638
lines changed

commitizen/providers.py

-319
This file was deleted.

commitizen/providers/__init__.py

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
from __future__ import annotations
2+
3+
from typing import cast
4+
5+
import importlib_metadata as metadata
6+
7+
from commitizen.config.base_config import BaseConfig
8+
from commitizen.exceptions import VersionProviderUnknown
9+
10+
from commitizen.providers.base_provider import VersionProvider
11+
from commitizen.providers.cargo_provider import CargoProvider
12+
from commitizen.providers.commitizen_provider import CommitizenProvider
13+
from commitizen.providers.composer_provider import ComposerProvider
14+
from commitizen.providers.npm_provider import NpmProvider
15+
from commitizen.providers.pep621_provider import Pep621Provider
16+
from commitizen.providers.poetry_provider import PoetryProvider
17+
from commitizen.providers.scm_provider import ScmProvider
18+
19+
__all__ = [
20+
"get_provider",
21+
"CargoProvider",
22+
"CommitizenProvider",
23+
"ComposerProvider",
24+
"NpmProvider",
25+
"Pep621Provider",
26+
"PoetryProvider",
27+
"ScmProvider",
28+
]
29+
30+
PROVIDER_ENTRYPOINT = "commitizen.provider"
31+
DEFAULT_PROVIDER = "commitizen"
32+
33+
34+
def get_provider(config: BaseConfig) -> VersionProvider:
35+
"""
36+
Get the version provider as defined in the configuration
37+
38+
:raises VersionProviderUnknown: if the provider named by `version_provider` is not found.
39+
"""
40+
provider_name = config.settings["version_provider"] or DEFAULT_PROVIDER
41+
try:
42+
(ep,) = metadata.entry_points(name=provider_name, group=PROVIDER_ENTRYPOINT)
43+
except ValueError:
44+
raise VersionProviderUnknown(f'Version Provider "{provider_name}" unknown.')
45+
provider_cls = ep.load()
46+
return cast(VersionProvider, provider_cls(config))

0 commit comments

Comments
 (0)