@@ -13,7 +13,7 @@ class UserAgentMatcher(Matcher[UserAgent]):
1313
1414 """
1515
16- regex : Pattern [str ]
16+ pattern : Pattern [str ]
1717 family : str
1818 major : Optional [str ]
1919 minor : Optional [str ]
@@ -29,15 +29,15 @@ def __init__(
2929 patch : Optional [str ] = None ,
3030 patch_minor : Optional [str ] = None ,
3131 ) -> None :
32- self .regex = re .compile (regex )
32+ self .pattern = re .compile (regex )
3333 self .family = family or "$1"
3434 self .major = major
3535 self .minor = minor
3636 self .patch = patch
3737 self .patch_minor = patch_minor
3838
3939 def __call__ (self , ua : str ) -> Optional [UserAgent ]:
40- if m := self .regex .search (ua ):
40+ if m := self .pattern .search (ua ):
4141 return UserAgent (
4242 family = (
4343 self .family .replace ("$1" , m [1 ])
@@ -52,8 +52,8 @@ def __call__(self, ua: str) -> Optional[UserAgent]:
5252 return None
5353
5454 @property
55- def pattern (self ) -> str :
56- return self .regex .pattern
55+ def regex (self ) -> str :
56+ return self .pattern .pattern
5757
5858 def __repr__ (self ) -> str :
5959 fields = [
@@ -65,7 +65,7 @@ def __repr__(self) -> str:
6565 ]
6666 args = "" .join (f", { k } ={ v !r} " for k , v in fields if v is not None )
6767
68- return f"UserAgentMatcher({ self .pattern !r} { args } )"
68+ return f"UserAgentMatcher({ self .regex !r} { args } )"
6969
7070
7171class OSMatcher (Matcher [OS ]):
@@ -74,7 +74,7 @@ class OSMatcher(Matcher[OS]):
7474
7575 """
7676
77- regex : Pattern [str ]
77+ pattern : Pattern [str ]
7878 family : str
7979 major : str
8080 minor : str
@@ -90,15 +90,15 @@ def __init__(
9090 patch : Optional [str ] = None ,
9191 patch_minor : Optional [str ] = None ,
9292 ) -> None :
93- self .regex = re .compile (regex )
93+ self .pattern = re .compile (regex )
9494 self .family = family or "$1"
9595 self .major = major or "$2"
9696 self .minor = minor or "$3"
9797 self .patch = patch or "$4"
9898 self .patch_minor = patch_minor or "$5"
9999
100100 def __call__ (self , ua : str ) -> Optional [OS ]:
101- if m := self .regex .search (ua ):
101+ if m := self .pattern .search (ua ):
102102 family = replacer (self .family , m )
103103 if family is None :
104104 raise ValueError (f"Unable to find OS family in { ua } " )
@@ -112,8 +112,8 @@ def __call__(self, ua: str) -> Optional[OS]:
112112 return None
113113
114114 @property
115- def pattern (self ) -> str :
116- return self .regex .pattern
115+ def regex (self ) -> str :
116+ return self .pattern .pattern
117117
118118 def __repr__ (self ) -> str :
119119 fields = [
@@ -125,7 +125,7 @@ def __repr__(self) -> str:
125125 ]
126126 args = "" .join (f", { k } ={ v !r} " for k , v in fields if v is not None )
127127
128- return f"OSMatcher({ self .pattern !r} { args } )"
128+ return f"OSMatcher({ self .regex !r} { args } )"
129129
130130
131131class DeviceMatcher (Matcher [Device ]):
@@ -134,7 +134,7 @@ class DeviceMatcher(Matcher[Device]):
134134
135135 """
136136
137- regex : Pattern [str ]
137+ pattern : Pattern [str ]
138138 family : str
139139 brand : str
140140 model : str
@@ -147,13 +147,15 @@ def __init__(
147147 brand : Optional [str ] = None ,
148148 model : Optional [str ] = None ,
149149 ) -> None :
150- self .regex = re .compile (regex , flags = re .IGNORECASE if regex_flag == "i" else 0 )
150+ self .pattern = re .compile (
151+ regex , flags = re .IGNORECASE if regex_flag == "i" else 0
152+ )
151153 self .family = family or "$1"
152154 self .brand = brand or ""
153155 self .model = model or "$1"
154156
155157 def __call__ (self , ua : str ) -> Optional [Device ]:
156- if m := self .regex .search (ua ):
158+ if m := self .pattern .search (ua ):
157159 family = replacer (self .family , m )
158160 if family is None :
159161 raise ValueError (f"Unable to find device family in { ua } " )
@@ -165,12 +167,16 @@ def __call__(self, ua: str) -> Optional[Device]:
165167 return None
166168
167169 @property
168- def pattern (self ) -> str :
169- return self .regex .pattern
170+ def regex (self ) -> str :
171+ return self .pattern .pattern
172+
173+ @property
174+ def regex_flag (self ) -> str :
175+ return "i" if self .flags & re .IGNORECASE else ""
170176
171177 @property
172178 def flags (self ) -> int :
173- return self .regex .flags
179+ return self .pattern .flags
174180
175181 def __repr__ (self ) -> str :
176182 fields = [
@@ -181,4 +187,4 @@ def __repr__(self) -> str:
181187 iflag = ', "i"' if self .flags & re .IGNORECASE else ""
182188 args = iflag + "" .join (f", { k } ={ v !r} " for k , v in fields if v is not None )
183189
184- return f"DeviceMatcher({ self .pattern !r} { args } )"
190+ return f"DeviceMatcher({ self .regex !r} { args } )"
0 commit comments