1
1
from __future__ import annotations
2
2
3
3
import os
4
+ import re
4
5
from abc import ABCMeta
5
6
from re import Pattern
6
7
from typing import IO , Any , ClassVar
@@ -24,30 +25,29 @@ def __init__(self, config: BaseConfig):
24
25
# Constructor needs to be redefined because `Protocol` prevent instantiation by default
25
26
# See: https://bugs.python.org/issue44807
26
27
self .config = config
27
- self .tag_format = self .config .settings . get ( "tag_format" )
28
+ self .tag_format = self .config .settings [ "tag_format" ]
28
29
29
30
@property
30
31
def version_parser (self ) -> Pattern :
32
+ tag_regex : str = self .tag_format
31
33
version_regex = get_version_scheme (self .config ).parser .pattern
32
- if self .tag_format != "$version" :
33
- TAG_FORMAT_REGEXS = {
34
- "$version" : version_regex ,
35
- "$major" : "(?P<major>\d+)" ,
36
- "$minor" : "(?P<minor>\d+)" ,
37
- "$patch" : "(?P<patch>\d+)" ,
38
- "$prerelease" : "(?P<prerelease>\w+\d+)?" ,
39
- "$devrelease" : "(?P<devrelease>\.dev\d+)?" ,
40
- "${version}" : version_regex ,
41
- "${major}" : "(?P<major>\d+)" ,
42
- "${minor}" : "(?P<minor>\d+)" ,
43
- "${patch}" : "(?P<patch>\d+)" ,
44
- "${prerelease}" : "(?P<prerelease>\w+\d+)?" ,
45
- "${devrelease}" : "(?P<devrelease>\.dev\d+)?" ,
46
- }
47
- version_regex = self .tag_format
48
- for pattern , regex in TAG_FORMAT_REGEXS .items ():
49
- version_regex = version_regex .replace (pattern , regex )
50
- return rf"{ version_regex } "
34
+ TAG_FORMAT_REGEXS = {
35
+ "$version" : version_regex ,
36
+ "$major" : r"(?P<major>\d+)" ,
37
+ "$minor" : r"(?P<minor>\d+)" ,
38
+ "$patch" : r"(?P<patch>\d+)" ,
39
+ "$prerelease" : r"(?P<prerelease>\w+\d+)?" ,
40
+ "$devrelease" : r"(?P<devrelease>\.dev\d+)?" ,
41
+ "${version}" : version_regex ,
42
+ "${major}" : r"(?P<major>\d+)" ,
43
+ "${minor}" : r"(?P<minor>\d+)" ,
44
+ "${patch}" : r"(?P<patch>\d+)" ,
45
+ "${prerelease}" : r"(?P<prerelease>\w+\d+)?" ,
46
+ "${devrelease}" : r"(?P<devrelease>\.dev\d+)?" ,
47
+ }
48
+ for pattern , regex in TAG_FORMAT_REGEXS .items ():
49
+ tag_regex = tag_regex .replace (pattern , regex )
50
+ return re .compile (tag_regex )
51
51
52
52
def get_metadata (self , filepath : str ) -> Metadata :
53
53
if not os .path .isfile (filepath ):
0 commit comments