Skip to content

Commit 2cbac3d

Browse files
authored
Merge branch 'v3' into pre-commit
2 parents c411b48 + 642f2c8 commit 2cbac3d

33 files changed

+2534
-178
lines changed

.github/dependabot.yml

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
version: 2
2+
updates:
3+
-
4+
# Maintain dependencies for GitHub Actions
5+
package-ecosystem: github-actions
6+
directory: /
7+
schedule:
8+
interval: daily
9+
labels:
10+
- dependencies
11+
commit-message:
12+
prefix: "ci(actions)"
13+
include: "scope"
14+
-
15+
# Maintain python dependencies
16+
package-ecosystem: pip
17+
directory: /
18+
schedule:
19+
interval: daily
20+
labels:
21+
- dependencies
22+
commit-message:
23+
prefix: "build(poetry)"
24+
include: "scope"

.github/workflows/pythonpackage.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ jobs:
66
python-check:
77
strategy:
88
matrix:
9-
python-version: ["3.7", "3.8", "3.9", "3.10"]
9+
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"]
1010
platform: [ubuntu-20.04, macos-latest, windows-latest]
1111
runs-on: ${{ matrix.platform }}
1212
steps:

.gitignore

-3
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,5 @@ venv.bak/
108108
.vscode/
109109
*.bak
110110

111-
# build
112-
poetry.lock
113-
114111
# macOSX
115112
.DS_Store

commitizen/cli.py

+5-3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import logging
33
import sys
44
from functools import partial
5+
from types import TracebackType
56
from typing import List
67

78
import argcomplete
@@ -330,21 +331,22 @@
330331

331332

332333
def commitizen_excepthook(
333-
type, value, tracekback, debug=False, no_raise: List[int] = None
334+
type, value, traceback, debug=False, no_raise: List[int] = None
334335
):
336+
traceback = traceback if isinstance(traceback, TracebackType) else None
335337
if not no_raise:
336338
no_raise = []
337339
if isinstance(value, CommitizenException):
338340
if value.message:
339341
value.output_method(value.message)
340342
if debug:
341-
original_excepthook(type, value, tracekback)
343+
original_excepthook(type, value, traceback)
342344
exit_code = value.exit_code
343345
if exit_code in no_raise:
344346
exit_code = 0
345347
sys.exit(exit_code)
346348
else:
347-
original_excepthook(type, value, tracekback)
349+
original_excepthook(type, value, traceback)
348350

349351

350352
commitizen_debug_excepthook = partial(commitizen_excepthook, debug=True)

commitizen/commands/bump.py

+6-5
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
NotAllowed,
2222
NoVersionSpecifiedError,
2323
)
24+
from commitizen.providers import get_provider
2425

2526
logger = getLogger("commitizen")
2627

@@ -94,14 +95,14 @@ def find_increment(self, commits: List[git.GitCommit]) -> Optional[str]:
9495

9596
def __call__(self): # noqa: C901
9697
"""Steps executed to bump."""
98+
provider = get_provider(self.config)
99+
current_version: str = provider.get_version()
100+
97101
try:
98-
current_version_instance: Version = Version(self.bump_settings["version"])
102+
current_version_instance: Version = Version(current_version)
99103
except TypeError:
100104
raise NoVersionSpecifiedError()
101105

102-
# Initialize values from sources (conf)
103-
current_version: str = self.config.settings["version"]
104-
105106
tag_format: str = self.bump_settings["tag_format"]
106107
bump_commit_message: str = self.bump_settings["bump_message"]
107108
version_files: List[str] = self.bump_settings["version_files"]
@@ -280,7 +281,7 @@ def __call__(self): # noqa: C901
280281
check_consistency=self.check_consistency,
281282
)
282283

283-
self.config.set_key("version", str(new_version))
284+
provider.set_version(str(new_version))
284285

285286
if self.pre_bump_hooks:
286287
hooks.run(

commitizen/commands/changelog.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -144,9 +144,7 @@ def __call__(self):
144144
tag_format=self.tag_format,
145145
)
146146

147-
commits = git.get_commits(
148-
start=start_rev, end=end_rev, args="--author-date-order"
149-
)
147+
commits = git.get_commits(start=start_rev, end=end_rev, args="--topo-order")
150148
if not commits:
151149
raise NoCommitsFoundError("No commits found")
152150

commitizen/commands/version.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from commitizen import out
55
from commitizen.__version__ import __version__
66
from commitizen.config import BaseConfig
7+
from commitizen.providers import get_provider
78

89

910
class Version:
@@ -21,14 +22,14 @@ def __call__(self):
2122
out.write(f"Python Version: {self.python_version}")
2223
out.write(f"Operating System: {self.operating_system}")
2324
elif self.parameter.get("project"):
24-
version = self.config.settings["version"]
25+
version = get_provider(self.config).get_version()
2526
if version:
2627
out.write(f"{version}")
2728
else:
2829
out.error("No project information in this project.")
2930
elif self.parameter.get("verbose"):
3031
out.write(f"Installed Commitizen Version: {__version__}")
31-
version = self.config.settings["version"]
32+
version = get_provider(self.config).get_version()
3233
if version:
3334
out.write(f"Project Version: {version}")
3435
else:

commitizen/cz/__init__.py

+24-23
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
1+
from __future__ import annotations
2+
13
import importlib
24
import pkgutil
35
import warnings
4-
from typing import Dict, Iterable, Type
6+
from typing import Iterable, Optional
7+
8+
import importlib_metadata as metadata
59

610
from commitizen.cz.base import BaseCommitizen
7-
from commitizen.cz.conventional_commits import ConventionalCommitsCz
8-
from commitizen.cz.customize import CustomizeCommitsCz
9-
from commitizen.cz.jira import JiraSmartCz
1011

1112

12-
def discover_plugins(path: Iterable[str] = None) -> Dict[str, Type[BaseCommitizen]]:
13+
def discover_plugins(
14+
path: Optional[Iterable[str]] = None,
15+
) -> dict[str, type[BaseCommitizen]]:
1316
"""Discover commitizen plugins on the path
1417
1518
Args:
@@ -19,21 +22,19 @@ def discover_plugins(path: Iterable[str] = None) -> Dict[str, Type[BaseCommitize
1922
Returns:
2023
Dict[str, Type[BaseCommitizen]]: Registry with found plugins
2124
"""
22-
plugins = {}
23-
for _finder, name, _ispkg in pkgutil.iter_modules(path):
24-
try:
25-
if name.startswith("cz_"):
26-
plugins[name] = importlib.import_module(name).discover_this
27-
except AttributeError as e:
28-
warnings.warn(UserWarning(e.args[0]))
29-
continue
30-
return plugins
31-
32-
33-
registry: Dict[str, Type[BaseCommitizen]] = {
34-
"cz_conventional_commits": ConventionalCommitsCz,
35-
"cz_jira": JiraSmartCz,
36-
"cz_customize": CustomizeCommitsCz,
37-
}
38-
39-
registry.update(discover_plugins())
25+
for _, name, _ in pkgutil.iter_modules(path):
26+
if name.startswith("cz_"):
27+
mod = importlib.import_module(name)
28+
if hasattr(mod, "discover_this"):
29+
warnings.warn(
30+
UserWarning(
31+
f"Legacy plugin '{name}' has been ignored: please expose it the 'commitizen.plugin' entrypoint"
32+
)
33+
)
34+
35+
return {
36+
ep.name: ep.load() for ep in metadata.entry_points(group="commitizen.plugin")
37+
}
38+
39+
40+
registry: dict[str, type[BaseCommitizen]] = discover_plugins()

commitizen/defaults.py

+2
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ class Settings(TypedDict, total=False):
3333
name: str
3434
version: Optional[str]
3535
version_files: List[str]
36+
version_provider: Optional[str]
3637
tag_format: Optional[str]
3738
bump_message: Optional[str]
3839
allow_abort: bool
@@ -63,6 +64,7 @@ class Settings(TypedDict, total=False):
6364
"name": "cz_conventional_commits",
6465
"version": None,
6566
"version_files": [],
67+
"version_provider": "commitizen",
6668
"tag_format": None, # example v$version
6769
"bump_message": None, # bumped v$current_version to $new_version
6870
"allow_abort": False,

commitizen/exceptions.py

+5
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ class ExitCode(enum.IntEnum):
3131
INVALID_MANUAL_VERSION = 24
3232
INIT_FAILED = 25
3333
RUN_HOOK_FAILED = 26
34+
VERSION_PROVIDER_UNKNOWN = 27
3435

3536

3637
class CommitizenException(Exception):
@@ -173,3 +174,7 @@ class InitFailedError(CommitizenException):
173174

174175
class RunHookError(CommitizenException):
175176
exit_code = ExitCode.RUN_HOOK_FAILED
177+
178+
179+
class VersionProviderUnknown(CommitizenException):
180+
exit_code = ExitCode.VERSION_PROVIDER_UNKNOWN

0 commit comments

Comments
 (0)