99from collections .abc import Sequence
1010from pathlib import Path , PurePath
1111from re import Pattern
12- from typing import Optional
12+ from typing import Final , Optional
1313
1414from ._base import AbstractSanitizer , AbstractValidator , BaseFile , BaseValidator
1515from ._common import findall_to_str , is_nt_abspath , to_str , truncate_str , validate_pathtype
1919from .handler import ReservedNameHandler , ValidationErrorHandler
2020
2121
22- _DEFAULT_MAX_FILENAME_LEN = 255
23- _RE_INVALID_FILENAME = re .compile (f"[{ re .escape (BaseFile ._INVALID_FILENAME_CHARS ):s} ]" , re .UNICODE )
24- _RE_INVALID_WIN_FILENAME = re .compile (
22+ _DEFAULT_MAX_FILENAME_LEN : Final = 255
23+ _RE_INVALID_FILENAME : Final = re .compile (
24+ f"[{ re .escape (BaseFile ._INVALID_FILENAME_CHARS ):s} ]" , re .UNICODE
25+ )
26+ _RE_INVALID_WIN_FILENAME : Final = re .compile (
2527 f"[{ re .escape (BaseFile ._INVALID_WIN_FILENAME_CHARS ):s} ]" , re .UNICODE
2628)
2729
@@ -122,7 +124,7 @@ def _get_sanitize_regexp(self) -> Pattern[str]:
122124
123125
124126class FileNameValidator (BaseValidator ):
125- _WINDOWS_RESERVED_FILE_NAMES = (
127+ _WINDOWS_RESERVED_FILE_NAMES : Final = (
126128 ("CON" , "PRN" , "AUX" , "CLOCK$" , "NUL" )
127129 + tuple (f"{ name :s} { num :d} " for name , num in itertools .product (("COM" , "LPT" ), range (0 , 10 )))
128130 + tuple (
@@ -133,7 +135,7 @@ class FileNameValidator(BaseValidator):
133135 )
134136 )
135137 )
136- _MACOS_RESERVED_FILE_NAMES = (":" ,)
138+ _MACOS_RESERVED_FILE_NAMES : Final = (":" ,)
137139
138140 @property
139141 def reserved_keywords (self ) -> tuple [str , ...]:
0 commit comments