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
@@ -25,30 +26,29 @@ def __init__(self, config: BaseConfig):
25
26
# See: https://bugs.python.org/issue44807
26
27
self .config = config
27
28
self .encoding = self .config .settings ["encoding" ]
28
- self .tag_format = self .config .settings . get ( "tag_format" )
29
+ self .tag_format = self .config .settings [ "tag_format" ]
29
30
30
31
@property
31
32
def version_parser (self ) -> Pattern :
33
+ tag_regex : str = self .tag_format
32
34
version_regex = get_version_scheme (self .config ).parser .pattern
33
- if self .tag_format != "$version" :
34
- TAG_FORMAT_REGEXS = {
35
- "$version" : version_regex ,
36
- "$major" : "(?P<major>\d+)" ,
37
- "$minor" : "(?P<minor>\d+)" ,
38
- "$patch" : "(?P<patch>\d+)" ,
39
- "$prerelease" : "(?P<prerelease>\w+\d+)?" ,
40
- "$devrelease" : "(?P<devrelease>\.dev\d+)?" ,
41
- "${version}" : version_regex ,
42
- "${major}" : "(?P<major>\d+)" ,
43
- "${minor}" : "(?P<minor>\d+)" ,
44
- "${patch}" : "(?P<patch>\d+)" ,
45
- "${prerelease}" : "(?P<prerelease>\w+\d+)?" ,
46
- "${devrelease}" : "(?P<devrelease>\.dev\d+)?" ,
47
- }
48
- version_regex = self .tag_format
49
- for pattern , regex in TAG_FORMAT_REGEXS .items ():
50
- version_regex = version_regex .replace (pattern , regex )
51
- return rf"{ version_regex } "
35
+ TAG_FORMAT_REGEXS = {
36
+ "$version" : version_regex ,
37
+ "$major" : r"(?P<major>\d+)" ,
38
+ "$minor" : r"(?P<minor>\d+)" ,
39
+ "$patch" : r"(?P<patch>\d+)" ,
40
+ "$prerelease" : r"(?P<prerelease>\w+\d+)?" ,
41
+ "$devrelease" : r"(?P<devrelease>\.dev\d+)?" ,
42
+ "${version}" : version_regex ,
43
+ "${major}" : r"(?P<major>\d+)" ,
44
+ "${minor}" : r"(?P<minor>\d+)" ,
45
+ "${patch}" : r"(?P<patch>\d+)" ,
46
+ "${prerelease}" : r"(?P<prerelease>\w+\d+)?" ,
47
+ "${devrelease}" : r"(?P<devrelease>\.dev\d+)?" ,
48
+ }
49
+ for pattern , regex in TAG_FORMAT_REGEXS .items ():
50
+ tag_regex = tag_regex .replace (pattern , regex )
51
+ return re .compile (tag_regex )
52
52
53
53
def get_metadata (self , filepath : str ) -> Metadata :
54
54
if not os .path .isfile (filepath ):
0 commit comments