Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/pythonpackage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ jobs:
python-check:
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
platform: [ubuntu-22.04, macos-latest, windows-latest]
runs-on: ${{ matrix.platform }}
steps:
Expand Down
15 changes: 9 additions & 6 deletions commitizen/bump.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,19 @@
import os
import re
from collections import OrderedDict
from collections.abc import Generator, Iterable
from glob import iglob
from logging import getLogger
from string import Template
from typing import cast
from typing import TYPE_CHECKING, cast

from commitizen.defaults import BUMP_MESSAGE, MAJOR, MINOR, PATCH
from commitizen.exceptions import CurrentVersionNotFoundError
from commitizen.git import GitCommit, smart_open
from commitizen.version_schemes import Increment, Version

if TYPE_CHECKING:
from collections.abc import Generator, Iterable

from commitizen.version_schemes import Increment, Version

VERSION_TYPES = [None, PATCH, MINOR, MAJOR]

Expand Down Expand Up @@ -56,13 +59,13 @@ def find_increment(
if increment == MAJOR:
break

return cast(Increment, increment)
return cast("Increment", increment)


def update_version_in_files(
current_version: str,
new_version: str,
files: Iterable[str],
version_files: Iterable[str],
*,
check_consistency: bool,
encoding: str,
Expand All @@ -77,7 +80,7 @@ def update_version_in_files(
"""
updated_files = []

for path, pattern in _resolve_files_and_regexes(files, current_version):
for path, pattern in _resolve_files_and_regexes(version_files, current_version):
current_version_found = False
bumped_lines = []

Expand Down
8 changes: 4 additions & 4 deletions commitizen/changelog.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@

import re
from collections import OrderedDict, defaultdict
from collections.abc import Generator, Iterable, Mapping, MutableMapping, Sequence
from dataclasses import dataclass
from datetime import date
from itertools import chain
Expand All @@ -44,13 +43,14 @@
Template,
)

from commitizen.cz.base import ChangelogReleaseHook
from commitizen.exceptions import InvalidConfigurationError, NoCommitsFoundError
from commitizen.git import GitCommit, GitTag
from commitizen.tags import TagRules

if TYPE_CHECKING:
from commitizen.cz.base import MessageBuilderHook
from collections.abc import Generator, Iterable, Mapping, MutableMapping, Sequence

from commitizen.cz.base import ChangelogReleaseHook, MessageBuilderHook
from commitizen.git import GitCommit, GitTag


@dataclass
Expand Down
8 changes: 5 additions & 3 deletions commitizen/changelog_formats/__init__.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
from __future__ import annotations

import sys
from typing import Callable, ClassVar, Protocol
from typing import TYPE_CHECKING, Callable, ClassVar, Protocol

if sys.version_info >= (3, 10):
from importlib import metadata
else:
import importlib_metadata as metadata

from commitizen.changelog import Metadata
from commitizen.config.base_config import BaseConfig
from commitizen.exceptions import ChangelogFormatUnknown

if TYPE_CHECKING:
from commitizen.changelog import Metadata
from commitizen.config.base_config import BaseConfig

CHANGELOG_FORMAT_ENTRYPOINT = "commitizen.changelog_format"
TEMPLATE_EXTENSION = "j2"

Expand Down
6 changes: 4 additions & 2 deletions commitizen/changelog_formats/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,17 @@

import os
from abc import ABCMeta
from typing import IO, Any, ClassVar
from typing import IO, TYPE_CHECKING, Any, ClassVar

from commitizen.changelog import Metadata
from commitizen.config.base_config import BaseConfig
from commitizen.tags import TagRules, VersionTag
from commitizen.version_schemes import get_version_scheme

from . import ChangelogFormat

if TYPE_CHECKING:
from commitizen.config.base_config import BaseConfig


class BaseFormat(ChangelogFormat, metaclass=ABCMeta):
"""
Expand Down
32 changes: 10 additions & 22 deletions commitizen/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -543,13 +543,13 @@ def __call__(
},
{
"name": ["--major"],
"help": "get just the major version",
"help": "get just the major version. Need to be used with --project or --verbose.",
"action": "store_true",
"exclusive_group": "group2",
},
{
"name": ["--minor"],
"help": "get just the minor version",
"help": "get just the minor version. Need to be used with --project or --verbose.",
"action": "store_true",
"exclusive_group": "group2",
},
Expand All @@ -559,8 +559,6 @@ def __call__(
},
}

original_excepthook = sys.excepthook


def commitizen_excepthook(
type: type[BaseException],
Expand All @@ -571,26 +569,19 @@ def commitizen_excepthook(
) -> None:
traceback = traceback if isinstance(traceback, TracebackType) else None
if not isinstance(value, CommitizenException):
original_excepthook(type, value, traceback)
sys.__excepthook__(type, value, traceback)
return

if not no_raise:
no_raise = []
if value.message:
value.output_method(value.message)
if debug:
original_excepthook(type, value, traceback)
sys.__excepthook__(type, value, traceback)
exit_code = value.exit_code
if exit_code in no_raise:
exit_code = ExitCode.EXPECTED_EXIT
if no_raise is not None and exit_code in no_raise:
sys.exit(ExitCode.EXPECTED_EXIT)
sys.exit(exit_code)


commitizen_debug_excepthook = partial(commitizen_excepthook, debug=True)

sys.excepthook = commitizen_excepthook


def parse_no_raise(comma_separated_no_raise: str) -> list[int]:
"""Convert the given string to exit codes.

Expand Down Expand Up @@ -682,15 +673,12 @@ def main() -> None:
elif not conf.path:
conf.update({"name": "cz_conventional_commits"})

sys.excepthook = commitizen_excepthook
if args.debug:
logging.getLogger("commitizen").setLevel(logging.DEBUG)
sys.excepthook = commitizen_debug_excepthook
elif args.no_raise:
no_raise_exit_codes = parse_no_raise(args.no_raise)
no_raise_debug_excepthook = partial(
commitizen_excepthook, no_raise=no_raise_exit_codes
)
sys.excepthook = no_raise_debug_excepthook
sys.excepthook = partial(sys.excepthook, debug=True)
if args.no_raise:
sys.excepthook = partial(sys.excepthook, no_raise=parse_no_raise(args.no_raise))

args.func(conf, arguments)() # type: ignore[arg-type]

Expand Down
6 changes: 4 additions & 2 deletions commitizen/cmd.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@

import os
import subprocess
from collections.abc import Mapping
from typing import NamedTuple
from typing import TYPE_CHECKING, NamedTuple

from charset_normalizer import from_bytes

from commitizen.exceptions import CharacterSetDecodeError

if TYPE_CHECKING:
from collections.abc import Mapping


class Command(NamedTuple):
out: str
Expand Down
Loading