11from itertools import chain , islice
22import attr
3-
3+ import re
44from allure_commons .types import Severity , LabelType , LinkType
55from allure_commons .types import ALLURE_UNIQUE_LABELS
66from allure_commons .model2 import Label , Link
77
88
99TAG_PREFIX = "allure"
1010
11+ semi_sep = re .compile (r"allure[\.\w]+:" )
12+ eq_sep = re .compile (r"allure[\.\w]+=" )
13+
14+
15+ def allure_tag_sep (tag ):
16+ if semi_sep .search (tag ):
17+ return ":"
18+ if eq_sep .search (tag ):
19+ return "="
20+
1121
1222def __is (kind , t ):
1323 return kind in [v for k , v in t .__dict__ .items () if not k .startswith ('__' )]
@@ -39,7 +49,8 @@ def parse_tag(tag, issue_pattern=None, link_pattern=None):
3949 >>> parse_tag("allure.foo:1")
4050 Label(name='tag', value='allure.foo:1')
4151 """
42- schema , value = islice (chain (tag .split (':' , 1 ), [None ]), 2 )
52+ sep = allure_tag_sep (tag )
53+ schema , value = islice (chain (tag .split (sep , 1 ), [None ]), 2 )
4354 prefix , kind , name = islice (chain (schema .split ('.' ), [None ], [None ]), 3 )
4455
4556 if tag in [severity for severity in Severity ]:
@@ -57,6 +68,9 @@ def parse_tag(tag, issue_pattern=None, link_pattern=None):
5768 if __is (kind , LabelType ):
5869 return Label (name = kind , value = value )
5970
71+ if kind == "id" :
72+ return Label (name = LabelType .ID , value = value )
73+
6074 if kind == "label" and name is not None :
6175 return Label (name = name , value = value )
6276
0 commit comments