Skip to content

Commit cae12dc

Browse files
committed
Fixed logging and regex regression in 3.11
1 parent 8188a42 commit cae12dc

File tree

7 files changed

+54
-33
lines changed

7 files changed

+54
-33
lines changed

.pre-commit-config.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -59,3 +59,5 @@ repos:
5959
rev: 0.27.1
6060
hooks:
6161
- id: check-azure-pipelines
62+
ci:
63+
autofix_prs: false

bumpversion/cli.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,8 @@
1111
from bumpversion.config import get_configuration
1212
from bumpversion.config.files import find_config_file
1313
from bumpversion.files import ConfiguredFile, modify_files
14-
from bumpversion.logging import setup_logging
1514
from bumpversion.show import do_show, log_list
16-
from bumpversion.ui import print_warning
15+
from bumpversion.ui import print_warning, setup_logging
1716
from bumpversion.utils import get_context, get_overrides
1817

1918
logger = logging.getLogger(__name__)

bumpversion/logging.py

-29
This file was deleted.

bumpversion/scm.py

+4
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
from tempfile import NamedTemporaryFile
1010
from typing import TYPE_CHECKING, ClassVar, List, MutableMapping, Optional, Type, Union
1111

12+
from utils import extract_regex_flags
13+
1214
if TYPE_CHECKING: # pragma: no-coverage
1315
from bumpversion.config import Config
1416

@@ -113,7 +115,9 @@ def get_all_tags(cls) -> List[str]:
113115
def get_version_from_tag(cls, tag: str, tag_name: str, parse_pattern: str) -> Optional[str]:
114116
"""Return the version from a tag."""
115117
version_pattern = parse_pattern.replace("\\\\", "\\")
118+
version_pattern, regex_flags = extract_regex_flags(version_pattern)
116119
rep = tag_name.replace("{new_version}", f"(?P<current_version>{version_pattern})")
120+
rep = f"{regex_flags}{rep}"
117121
tag_regex = re.compile(rep)
118122
return match["current_version"] if (match := tag_regex.match(tag)) else None
119123

bumpversion/ui.py

+28
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,33 @@
11
"""Utilities for user interface."""
2+
import logging
3+
4+
import click
25
from click import UsageError, secho
6+
from rich.logging import RichHandler
7+
8+
logger = logging.getLogger("bumpversion")
9+
10+
VERBOSITY = {
11+
0: logging.WARNING,
12+
1: logging.INFO,
13+
2: logging.DEBUG,
14+
}
15+
16+
17+
def setup_logging(verbose: int = 0) -> None:
18+
"""Configure the logging."""
19+
logging.basicConfig(
20+
level=VERBOSITY.get(verbose, logging.DEBUG),
21+
format="%(message)s",
22+
datefmt="[%X]",
23+
handlers=[
24+
RichHandler(
25+
rich_tracebacks=True, show_level=False, show_path=False, show_time=False, tracebacks_suppress=[click]
26+
)
27+
],
28+
)
29+
root_logger = logging.getLogger("")
30+
root_logger.setLevel(VERBOSITY.get(verbose, logging.DEBUG))
331

432

533
def print_info(msg: str) -> None:

bumpversion/utils.py

+18-1
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,30 @@
22
import string
33
from collections import ChainMap
44
from dataclasses import asdict
5-
from typing import TYPE_CHECKING, Any, List, Optional
5+
from typing import TYPE_CHECKING, Any, List, Optional, Tuple
66

77
if TYPE_CHECKING: # pragma: no-coverage
88
from bumpversion.config import Config
99
from bumpversion.version_part import Version
1010

1111

12+
def extract_regex_flags(regex_pattern: str) -> Tuple[str, str]:
13+
"""
14+
Extract the regex flags from the regex pattern.
15+
16+
Args:
17+
regex_pattern: The pattern that might start with regex flags
18+
19+
Returns:
20+
A tuple of the regex pattern without the flag string and regex flag string
21+
"""
22+
import re
23+
24+
flag_pattern = r"^(\(\?[aiLmsux]+\))"
25+
bits = re.split(flag_pattern, regex_pattern)
26+
return (regex_pattern, "") if len(bits) == 1 else (bits[2], bits[1])
27+
28+
1229
def recursive_sort_dict(input_value: Any) -> Any:
1330
"""Sort a dictionary recursively."""
1431
if not isinstance(input_value, dict):

tests/test_scm.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
from bumpversion import scm
99
from bumpversion.exceptions import DirtyWorkingDirectoryError
10-
from bumpversion.logging import setup_logging
10+
from bumpversion.ui import setup_logging
1111
from tests.conftest import get_config_data, inside_dir
1212

1313

0 commit comments

Comments
 (0)