
    <id                     $   d Z ddlZddlZddlZddlZddlmZ ddlmZm	Z	 ddl
mZmZ ddlmZmZ ddlmZmZ dd	lmZmZ dd
lmZmZmZ  G d d          Z G d deej                  Z G d deej                  Z G d de          ZdS )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                      e Zd ZU d                    e          Zee         ed<   edz   Z	ee         ed<   edz   Z
ee         ed<   e	e
z   dz   Zee         ed<   ed	efd
            Zed	eedf         fd            Zed	efd            Z	 	 	 ddedee         deee                  dee         dee         d	dfdZd	efdZd	efdZdded	efdZdded	efdZdded	efdZd	efdZdS )BaseFile _INVALID_PATH_CHARS/_INVALID_FILENAME_CHARSz:*?"<>|	
_INVALID_WIN_PATH_CHARS\_INVALID_WIN_FILENAME_CHARSreturnc                     | j         S N)_BaseFile__platformselfs    /Users/kimhansen/Desktop/03 Workspace/ceo-agents/chl-effectiveness/mcp-servers/whoop/.venv/lib/python3.11/site-packages/pathvalidate/_base.pyplatformzBaseFile.platform   s
        .c                     | j         S r   )_additional_reserved_namesr   s    r!   reserved_keywordszBaseFile.reserved_keywords   s    ..r#   c                     | j         S r   )_max_lenr   s    r!   max_lenzBaseFile.max_len#   
    }r#   Nr)   fs_encodingadditional_reserved_namesplatform_max_lenr"   c                 Z   |t                      }t          d |D                       | _        t          |          | _        ||                                 }|dk    r|| _        n|| _        t          | j        |          | _        |r	|| _        d S t          j	                    | _        d S )Nc              3   >   K   | ]}|                                 V  d S r   )upper).0ns     r!   	<genexpr>z$BaseFile.__init__.<locals>.<genexpr>1   s*      /]/]a		/]/]/]/]/]/]r#   r   )
tupler%   r   r   _get_default_max_path_lenr(   min_fs_encodingsysgetfilesystemencoding)r    r)   r+   r,   r-   r"   s         r!   __init__zBaseFile.__init__'   s     %,(-%*//]/]C\/]/]/]*]*]',X66##==??a<<,DMM#DMDM+;<< 	< +D # 9 ; ;Dr#   c                 ,    | j         t          j        k    S r   )r"   r
   POSIXr   s    r!   	_is_posixzBaseFile._is_posixD   s    }..r#   c                 ,    | j         t          j        k    S r   )r"   r
   	UNIVERSALr   s    r!   _is_universalzBaseFile._is_universalG   s    } 222r#   Finclude_universalc                 n    |r| j         t          j        t          j        fv S | j         t          j        k    S r   )r"   r
   r?   LINUXr    rA   s     r!   	_is_linuxzBaseFile._is_linuxJ   1     	I=X%7$HHH}..r#   c                 n    |r| j         t          j        t          j        fv S | j         t          j        k    S r   )r"   r
   r?   WINDOWSrD   s     r!   _is_windowszBaseFile._is_windowsP   s3     	K=X%79I$JJJ} 000r#   c                 n    |r| j         t          j        t          j        fv S | j         t          j        k    S r   )r"   r
   r?   MACOSrD   s     r!   	_is_macoszBaseFile._is_macosV   rF   r#   c                     |                                  rdS |                                 rdS |                                 s|                                 rdS dS )Ni   i  i   )rE   rI   r=   rL   r   s    r!   r5   z"BaseFile._get_default_max_path_len\   s_    >> 	4 	3>> 	t~~// 	4sr#   NNN)F)__name__
__module____qualname__joinr   r   r   str__annotations__r   r   r   propertyr
   r"   r4   r&   intr)   r   r   r   r:   boolr=   r@   rE   rI   rL   r5    r#   r!   r   r      sM        &(gg.E&F&FsFFF*=*CU3ZCCC*=@W*WU3ZWWW"99D@  s    (    X /5c? / / / X/     X >B*.+/< << c]< $,HSM#:	<
 #3-< <(< 
< < < <:/4 / / / /3t 3 3 3 3/ /4 /D / / / /1 1T 1d 1 1 1 1/ /4 /D / / / /
3 
 
 
 
 
 
r#   r   c                        e Zd Z	 	 	 ddedee         dedeee                  dee         dee         ddf fd	Z	e
ej        defd
                        Zej        deddfd            ZdedefdZdedefdZ xZS )AbstractValidatorNr)   r+   check_reservedr,   r-   r"   r   c                 b    || _         t                                          |||||           d S )N)r,   r-   r"   )_check_reservedsuperr:   )r    r)   r+   r[   r,   r-   r"   	__class__s          r!   r:   zAbstractValidator.__init__j   sG      .&?- 	 	
 	
 	
 	
 	
r#   c                     d S r   rX   r   s    r!   min_lenzAbstractValidator.min_len}   s	     	r#   valuec                     d S r   rX   r    rb   s     r!   validatezAbstractValidator.validate       r#   c                 d    	 |                      |           n# t          t          f$ r Y dS w xY wdS )NFT)re   	TypeErrorr   rd   s     r!   is_validzAbstractValidator.is_valid   sJ    	MM%    ?+ 	 	 	55	 ts    --c                 8    |                                 | j        v S r   )r0   r&   rd   s     r!   _is_reserved_keywordz&AbstractValidator._is_reserved_keyword   s    {{}} 666r#   rN   )rO   rP   rQ   rV   r   rS   rW   r   r   r:   rU   abcabstractmethodra   r   re   ri   rk   __classcell__r_   s   @r!   rZ   rZ   i   sS        >B*.+/
 

 c]
 	

 $,HSM#:
 #3-
 <(
 

 
 
 
 
 
&      X 	h 4    h 4    7# 7$ 7 7 7 7 7 7 7 7r#   rZ   )	metaclassc                        e Zd Z	 	 	 	 	 ddededee         dedee         dee         dee	e                  d	ee         d
ee
         ddf fdZej        ddededefd            Z xZS )AbstractSanitizerN	validatorr)   r+   validate_after_sanitizenull_value_handlerreserved_name_handlerr,   r-   r"   r   c
                     t                                          |||||	           |t          j        }|| _        |t
          j        }|| _        || _        || _	        d S )N)r)   r+   r,   r-   r"   )
r^   r:   r   return_null_string_null_value_handlerr   add_trailing_underscore_reserved_name_handler_validate_after_sanitize
_validator)r    rs   r)   r+   rt   ru   rv   r,   r-   r"   r_   s             r!   r:   zAbstractSanitizer.__init__   sx     	#&?- 	 	
 	
 	
 %!1!D#5  ($7$O!&;#(?%#r#   r   rb   replacement_textc                     d S r   rX   )r    rb   r~   s      r!   sanitizezAbstractSanitizer.sanitize   rf   r#   )NNNNN)r   )rO   rP   rQ   rZ   rV   r   rS   rW   r   r   r   r:   rl   rm   r   r   rn   ro   s   @r!   rr   rr      s        @DBF=A*.+/$ $$$ $ c]	$
 "&$ %%;<$  ((>?$ $,HSM#:$ #3-$ <($ 
$ $ $ $ $ $@ 	 h # x        r#   rr   c                   .    e Zd ZU  ej        d          Zeed<    ej        d          Zeed<   e	de
fd            Z	 	 	 dde
d	e
d
ee         dedeee                  dee
         dee         ddf fdZdeddfdZddZededefd            Z xZS )BaseValidatorz([^\.]+)_BaseValidator__RE_ROOT_NAMEz^\.{3,}_BaseValidator__RE_REPEAD_DOTr   c                     | j         S r   )_min_lenr   s    r!   ra   zBaseValidator.min_len   r*   r#   Nra   r)   r+   r[   r,   r-   r"   c                     |dk    rt           }t          |d          | _        t                                          ||||||           |                                  d S )Nr   r   )r)   r+   r[   r,   r-   r"   )r	   maxr   r^   r:   _validate_max_len)	r    ra   r)   r+   r[   r,   r-   r"   r_   s	           r!   r:   zBaseValidator.__init__   so     a<<%GGQ#)&?- 	 	
 	
 	
 	     r#   namec                     | j         sd S |                     |          }t          j                            |          }||fD ]3}|                     |          rt          d| dd|| j                  4d S )N'z' is a reserved nameF)reusable_namereserved_namer"   )r]   !_BaseValidator__extract_root_nameospathbasenamerk   r   r"   )r    r   	root_name	base_names       r!   _validate_reserved_keywordsz)BaseValidator._validate_reserved_keywords   s    # 	F,,T22	G$$T**		* 	 	D((.. '7	777"'"+!]	   	 	r#   c                 x    | j         dk     rt          d          | j        | j         k    rt          d          d S )Nr   z'max_len must be greater or equal to onez"min_len must be lower than max_len)r)   
ValueErrorra   r   s    r!   r   zBaseValidator._validate_max_len   sD    <!FGGG<$,&&ABBB '&r#   r   c                     |dv r|S | j                             |          r|S | j                            t          j                            |                    }|dS |                    d          S )N).z..r   r   )r   searchr   matchr   r   r   group)clsr   r   s      r!   __extract_root_namez!BaseValidator.__extract_root_name   sp    ;K%%d++ 	K"(()9)9$)?)?@@=2{{1~~r#   rN   )r   N)rO   rP   rQ   recompiler   r   rT   r   rU   rV   ra   r   rS   rW   r   r   r:   r   r   classmethodr   rn   ro   s   @r!   r   r      sy        &BJ{33NE333'RZ
33OU333    X >B*.+/! !! ! c]	!
 ! $,HSM#:! #3-! <(! 
! ! ! ! ! !2      C C C C s s    [    r#   r   )__doc__rl   r   r   r8   collections.abcr   typingr   r   _commonr   r   _constr	   r
   _typesr   r   errorr   r   handlerr   r   r   r   ABCMetarZ   rr   r   rX   r#   r!   <module>r      s    


 				 				 



 $ $ $ $ $ $ " " " " " " " " @ @ @ @ @ @ @ @ - - - - - - - - * * * * * * * * 5 5 5 5 5 5 5 5 R R R R R R R R R RS S S S S S S Sl&7 &7 &7 &7 &7CK &7 &7 &7 &7R# # # # #CK # # # #LD D D D D% D D D D Dr#   