+
    O(id                         R t ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIHtH	t	 ^RI
HtHt ^RIHtHt ^RIHtHt ^RIHtHt ^RIHtHtHt  ! R	 R
4      t ! R R]]P6                  R7      t ! R R]]P6                  R7      t ! R R]4      tR# )zA
.. codeauthor:: Tsuyoshi Hombashi <tsuyoshi.hombashi@gmail.com>
N)Sequence)FinalOptional)normalize_platformunprintable_ascii_chars)DEFAULT_MIN_LENPlatform)PathTypePlatformType)ReservedNameErrorValidationError)NullValueHandlerReservedNameHandlerValidationErrorHandlerc                   t  a  ] tR t^t o RP	                  ]4      t]R,           t]R,           t]],           R,           t	]
V 3R lR l4       t]
V 3R lR l4       t]
V 3R	 lR
 l4       tRV 3R lR lltV 3R lR ltV 3R lR ltRV 3R lR lltRV 3R lR lltRV 3R lR lltV 3R lR ltV 3R ltRtV tR# )BaseFile /z:*?"<>|	
\c                    < V ^8  d   QhRS[ /#    return)r   )format__classdict__s   "X/Users/agent/.openclaw/workspace/venv/lib/python3.14/site-packages/pathvalidate/_base.py__annotate__BaseFile.__annotate__   s      (     c                    V P                   # N)_BaseFile__platformselfs   &r   platformBaseFile.platform   s    r   c                4   < V ^8  d   QhRS[ S[R3,          /# )r   r   .)tuplestr)r   r   s   "r   r   r       s     / /5c? /r   c                    V P                   # r    )_additional_reserved_namesr"   s   &r   reserved_keywordsBaseFile.reserved_keywords   s    ...r   c                    < V ^8  d   QhRS[ /# r   int)r   r   s   "r   r   r   $          r   c                    V P                   # r    )_max_lenr"   s   &r   max_lenBaseFile.max_len#       }}r   Nc                   < V ^8  d   QhRS[ RS[S[,          RS[S[S[,          ,          RS[S[ ,          RS[S[,          RR/# )r   r3   fs_encodingadditional_reserved_namesplatform_max_lenr$   r   N)r/   r   r(   r   r
   )r   r   s   "r   r   r   '   s]     < << c]< $,HSM#:	<
 #3-< <(< 
<r   c                ~   Vf   \        4       p\         ;QJ d    . R V 4       F  NK  	  5M! R V 4       4      V n        \        V4      V n        Vf   V P	                  4       pV^ 8:  d   W@n        MWn        \        V P
                  V4      V n        V'       d	   W n        R # \        P                  ! 4       V n        R # )Nc              3   @   "   T F  qP                  4       x  K  	  R # 5ir    )upper).0ns   & r   	<genexpr>$BaseFile.__init__.<locals>.<genexpr>1   s     /]C\a		C\s   )
r'   r*   r   r!   _get_default_max_path_lenr2   min_fs_encodingsysgetfilesystemencoding)r#   r3   r7   r8   r9   r$   s   &&&&&&r   __init__BaseFile.__init__'   s     %,(-%*/%/]C\/]%%/]C\/]*]',X6##==?a<,M#MDMM+;< + # 9 9 ;Dr   c                    < V ^8  d   QhRS[ /# r   bool)r   r   s   "r   r   r   D   s     / /4 /r   c                <    V P                   \        P                  8H  # r    )r$   r   POSIXr"   s   &r   	_is_posixBaseFile._is_posixD   s    }}..r   c                    < V ^8  d   QhRS[ /# r   rI   )r   r   s   "r   r   r   G   s     3 3t 3r   c                <    V P                   \        P                  8H  # r    )r$   r   	UNIVERSALr"   s   &r   _is_universalBaseFile._is_universalG   s    }} 2 222r   c                &   < V ^8  d   QhRS[ RS[ /# r   include_universalr   rI   )r   r   s   "r   r   r   J        / /4 /D /r   c                    V'       d.   V P                   \        P                  \        P                  39   # V P                   \        P                  8H  # r    )r$   r   rQ   LINUXr#   rV   s   &&r   	_is_linuxBaseFile._is_linuxJ   6    ==X%7%7$HHH}}..r   c                &   < V ^8  d   QhRS[ RS[ /# rU   rI   )r   r   s   "r   r   r   P   s     1 1T 1d 1r   c                    V'       d.   V P                   \        P                  \        P                  39   # V P                   \        P                  8H  # r    )r$   r   rQ   WINDOWSrZ   s   &&r   _is_windowsBaseFile._is_windowsP   s:    ==X%7%79I9I$JJJ}} 0 000r   c                &   < V ^8  d   QhRS[ RS[ /# rU   rI   )r   r   s   "r   r   r   V   rW   r   c                    V'       d.   V P                   \        P                  \        P                  39   # V P                   \        P                  8H  # r    )r$   r   rQ   MACOSrZ   s   &&r   	_is_macosBaseFile._is_macosV   r]   r   c                    < V ^8  d   QhRS[ /# r   r.   )r   r   s   "r   r   r   \   s     
 
3 
r   c                    V P                  4       '       d   R # V P                  4       '       d   R# V P                  4       '       g   V P                  4       '       d   R# R# )i   i  i   )r[   ra   rM   rf   r"   s   &r   rA   "BaseFile._get_default_max_path_len\   sC    >>>>t~~//r   c                   < V ^8  d   Qh/ S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   # )r   _INVALID_PATH_CHARS_INVALID_FILENAME_CHARS_INVALID_WIN_PATH_CHARS_INVALID_WIN_FILENAME_CHARS)r   r(   )r   r   s   "r   r   r      sG     sF "3ZC  #3ZW  "'s 	 r   )
__platformr*   rC   r2   NNN)F)__name__
__module____qualname____firstlineno__joinr   rl   rm   rn   ro   propertyr$   r+   r3   rF   rM   rR   r[   ra   rf   rA   __annotate_func____static_attributes____classdictcell__)r   s   @r   r   r      s     &(gg.E&F*=*C*=@W*W"99D@     / /  < <:/ /3 3/ /1 1/ /
 
S  r   r   c                      a a ] tR t^it oRV3R lV 3R lllt]]P                  V3R lR l4       4       t]P                  V3R lR l4       t	V3R lR lt
V3R	 lR
 ltRtVtV ;t# )AbstractValidatorc                   < V ^8  d   QhRS[ RS[S[,          RS[RS[S[S[,          ,          RS[S[ ,          RS[S[,          RR/# )	r   r3   r7   check_reservedr8   r9   r$   r   Nr/   r   r(   rJ   r   r
   )r   r   s   "r   r   AbstractValidator.__annotate__j   sg     
 

 c]
 	

 $,HSM#:
 #3-
 <(
 

r   c                <   < W0n         \        SV `	  VVVVVR 7       R# ))r8   r9   r$   N)_check_reservedsuperrF   )r#   r3   r7   r~   r8   r9   r$   	__class__s   &&&&&&&r   rF   AbstractValidator.__init__j   s,      .&?- 	 	
r   c                    < V ^8  d   QhRS[ /# r   r.   )r   r   s   "r   r   r      s       r   c                    R # r     r"   s   &r   min_lenAbstractValidator.min_len}   s     	r   c                $   < V ^8  d   QhRS[ RR/# )r   valuer   N)r	   )r   r   s   "r   r   r      s      h 4 r   c                    R # r    r   r#   r   s   &&r   validateAbstractValidator.validate       r   c                &   < V ^8  d   QhRS[ RS[/# r   r   r   )r	   rJ   )r   r   s   "r   r   r      s      h 4 r   c                Z     V P                  V4       R#   \        \        3 d     R # i ; i)FT)r   	TypeErrorr   r   s   &&r   is_validAbstractValidator.is_valid   s1    	MM%   ?+ 		s    **c                &   < V ^8  d   QhRS[ RS[/# r   )r(   rJ   )r   r   s   "r   r   r      s     7 7# 7$ 7r   c                <    VP                  4       V P                  9   # r    )r<   r+   r   s   &&r   _is_reserved_keyword&AbstractValidator._is_reserved_keyword   s    {{} 6 666r   )r   rq   )rr   rs   rt   ru   rF   rw   abcabstractmethodr   r   r   r   ry   rz   __classcell__r   r   s   @@r   r|   r|   i   sd     
 
&    	  7 7 7r   r|   )	metaclassc                   v   a a ] tR t^t oRV3R lV 3R lllt]P                  RV3R lR ll4       tRtVt	V ;t
# )AbstractSanitizerc                   < V ^8  d   QhRS[ RS[RS[S[,          RS[RS[S[,          RS[S[,          RS[S[S[,          ,          RS[S[,          R	S[S[,          R
R/
# )r   	validatorr3   r7   validate_after_sanitizenull_value_handlerreserved_name_handlerr8   r9   r$   r   N)r|   r/   r   r(   rJ   r   r   r
   )r   r   s   "r   r   AbstractSanitizer.__annotate__   s     $ $$$ $ c]	$
 "&$ %%;<$  ((>?$ $,HSM#:$ #3-$ <($ 
$r   c
                   < \         S
V `  VVVVV	R 7       Vf   \        P                  pWPn        Vf   \
        P                  pW`n        W@n        Wn	        R# ))r3   r7   r8   r9   r$   N)
r   rF   r   return_null_string_null_value_handlerr   add_trailing_underscore_reserved_name_handler_validate_after_sanitize
_validator)r#   r   r3   r7   r   r   r   r8   r9   r$   r   s   &&&&&&&&&&r   rF   AbstractSanitizer.__init__   sc     	#&?- 	 	
 %!1!D!D#5  ($7$O$O!&;#(?%#r   c                ,   < V ^8  d   QhRS[ RS[RS[ /# )r   r   replacement_textr   )r	   r(   )r   r   s   "r   r   r      s"      h # x r   c                    R # r    r   )r#   r   r   s   &&&r   sanitizeAbstractSanitizer.sanitize   r   r   )r   r   r   r   )NNNNN)r   )rr   rs   rt   ru   rF   r   r   r   ry   rz   r   r   s   @@r   r   r      s4     $ $@ 	   r   r   c                      a a ] tR t^t o]P
                  ! R4      t]P
                  ! R4      t]V3R lR l4       t	RV3R lV 3R lllt
V3R lR ltV3R	 lR
 lt]V3R lR l4       tV3R ltRtVtV ;t# )BaseValidatorz([^\.]+)z^\.{3,}c                    < V ^8  d   QhRS[ /# r   r.   )r   r   s   "r   r   BaseValidator.__annotate__   r0   r   c                    V P                   # r    _min_lenr"   s   &r   r   BaseValidator.min_len   r5   r   c                   < V ^8  d   QhRS[ RS[ RS[S[,          RS[RS[S[S[,          ,          RS[S[ ,          RS[S[,          RR	/# )
r   r   r3   r7   r~   r8   r9   r$   r   Nr   )r   r   s   "r   r   r      sq     ! !! ! c]	!
 ! $,HSM#:! #3-! <(! 
!r   c           	        < V^ 8:  d   \         p\        V^4      V n        \        SV `  VVVVVVR7       V P                  4        R# )    )r3   r7   r~   r8   r9   r$   N)r   maxr   r   rF   _validate_max_len)	r#   r   r3   r7   r~   r8   r9   r$   r   s	   &&&&&&&&r   rF   BaseValidator.__init__   sP     a<%GGQ#)&?- 	 	
 	 r   c                $   < V ^8  d   QhRS[ RR/# )r   namer   Nr(   )r   r   s   "r   r   r      s        r   c                
   V P                   '       g   R # V P                  V4      p\        P                  P	                  V4      pW#3 F7  pV P                  V4      '       g   K  \        RV R2RVV P                  R7      h	  R # )N'z' is a reserved nameF)reusable_namereserved_namer$   )r   !_BaseValidator__extract_root_nameospathbasenamer   r   r$   )r#   r   	root_name	base_names   &&  r   _validate_reserved_keywords)BaseValidator._validate_reserved_keywords   sz    ###,,T2	GG$$T*	*D((..'	{"67"'"+!]]	  +r   c                   < V ^8  d   QhRR/# )r   r   Nr   )r   r   s   "r   r   r      s     C C4 Cr   c                    V P                   ^8  d   \        R4      hV P                  V P                   8  d   \        R4      hR# )   z'max_len must be greater or equal to onez"min_len must be lower than max_lenN)r3   
ValueErrorr   r"   s   &r   r   BaseValidator._validate_max_len   s;    <<!FGG<<$,,&ABB 'r   c                &   < V ^8  d   QhRS[ RS[ /# )r   r   r   r   )r   r   s   "r   r   r      s      s s r   c                    VR9   d   V# V P                   P                  V4      '       d   V# V P                  P                  \        P
                  P                  V4      4      pVf   R# VP                  ^4      # ).r   )r   z..)_BaseValidator__RE_REPEAD_DOTsearch_BaseValidator__RE_ROOT_NAMEmatchr   r   r   group)clsr   r   s   && r   __extract_root_name!BaseValidator.__extract_root_name   sf    ;K%%d++K""(()9)9$)?@={{1~r   c                2   < V ^8  d   Qh/ S[ ;R&   S[ ;R&   # )r   r   r   )r   )r   r   s   "r   r   r      s     3 3 r   r   rq   )rr   rs   rt   ru   recompiler   r   rw   r   rF   r   r   classmethodr   rx   ry   rz   r   r   s   @@r   r   r      so     JJ{3NZZ
3O ! !2  C C  s  r   r   )__doc__r   r   r   rD   collections.abcr   typingr   r   _commonr   r   _constr   r   _typesr	   r
   errorr   r   handlerr   r   r   r   ABCMetar|   r   r   r   r   r   <module>r      sr     	 	 
 $ " @ - * 5 R RS Sl&7CKK &7R#CKK #LD% Dr   