66from typing import TYPE_CHECKING
77from typing import Any
88from typing import Callable
9+ from typing import ClassVar
910from typing import Match
1011from typing import Sequence
1112from typing import cast
@@ -66,7 +67,9 @@ class Formatter:
6667
6768 _FROM_FORMAT_RE : re .Pattern [str ] = re .compile (r"(?<!\\\[)" + _TOKENS + r"(?!\\\])" )
6869
69- _LOCALIZABLE_TOKENS : dict [str , str | Callable [[Locale ], Sequence [str ]] | None ] = {
70+ _LOCALIZABLE_TOKENS : ClassVar [
71+ dict [str , str | Callable [[Locale ], Sequence [str ]] | None ]
72+ ] = {
7073 "Qo" : None ,
7174 "MMMM" : "months.wide" ,
7275 "MMM" : "months.abbreviated" ,
@@ -91,7 +94,7 @@ class Formatter:
9194 ),
9295 }
9396
94- _TOKENS_RULES : dict [str , Callable [[pendulum .DateTime ], str ]] = {
97+ _TOKENS_RULES : ClassVar [ dict [str , Callable [[pendulum .DateTime ], str ] ]] = {
9598 # Year
9699 "YYYY" : lambda dt : f"{ dt .year :d} " ,
97100 "YY" : lambda dt : f"{ dt .year :d} " [2 :],
@@ -137,7 +140,7 @@ class Formatter:
137140 "z" : lambda dt : f'{ dt .timezone_name or "" } ' ,
138141 }
139142
140- _DATE_FORMATS = {
143+ _DATE_FORMATS : ClassVar [ dict [ str , str ]] = {
141144 "LTS" : "formats.time.full" ,
142145 "LT" : "formats.time.short" ,
143146 "L" : "formats.date.short" ,
@@ -146,7 +149,7 @@ class Formatter:
146149 "LLLL" : "formats.datetime.full" ,
147150 }
148151
149- _DEFAULT_DATE_FORMATS = {
152+ _DEFAULT_DATE_FORMATS : ClassVar [ dict [ str , str ]] = {
150153 "LTS" : "h:mm:ss A" ,
151154 "LT" : "h:mm A" ,
152155 "L" : "MM/DD/YYYY" ,
@@ -155,7 +158,7 @@ class Formatter:
155158 "LLLL" : "dddd, MMMM D, YYYY h:mm A" ,
156159 }
157160
158- _REGEX_TOKENS : dict [str , str | Sequence [str ] | None ] = {
161+ _REGEX_TOKENS : ClassVar [ dict [str , str | Sequence [str ] | None ] ] = {
159162 "Y" : _MATCH_SIGNED ,
160163 "YY" : (_MATCH_1_TO_2 , _MATCH_2 ),
161164 "YYYY" : (_MATCH_1_TO_4 , _MATCH_4 ),
@@ -196,7 +199,7 @@ class Formatter:
196199 "z" : _MATCH_TIMEZONE ,
197200 }
198201
199- _PARSE_TOKENS : dict [str , Callable [[str ], Any ]] = {
202+ _PARSE_TOKENS : ClassVar [ dict [str , Callable [[str ], Any ] ]] = {
200203 "YYYY" : lambda year : int (year ),
201204 "YY" : lambda year : int (year ),
202205 "Q" : lambda quarter : int (quarter ),
0 commit comments