
    k7i              	          % S r SSKrSSKrSSKrSSKrSSKrSSKJr  SSKJ	r	J
r
Jr  SSKJr  SSKJrJr  \R"                  " S5      r\
\S	'    S(S
\S\S\\   SS4S jjrS\S\4S jrS\S\4S jrS\	S\4S jrS\	S\4S jrS\\   4S jr\" \" 5       5      r\
\S'   S\\   4S jr\" \" 5       5      r \
\S'   \R"                  " SRC                  \RD                  " SRG                  \5      5      5      \RH                  5      r%\
\S'   \R"                  " S5      r&\
\S'   S
\SS4S jr'S)S
\S\S\4S  jjr(S)S
\S\S\4S! jjr)S\\   S\4S" jr*S#\\	   S\4S$ jr+S
\S%\S&\,S\4S' jr-g)*zA
.. codeauthor:: Tsuyoshi Hombashi <tsuyoshi.hombashi@gmail.com>
    N)PurePath)AnyFinalOptional   )Platform)PathTypePlatformTypez^[\s]+$_re_whitespacestextallow_whitespaces	error_msgreturnc                 "   SSK JnJn  [        U 5      (       d  [	        U [
        5      (       a  g U(       a$  [        R                  [        U 5      5      (       a  g [        U 5      (       a  U" UR                  S9e[        S[        U 5       35      e)Nr   )ErrorReasonValidationError)reasonztext must be a string: actual=)errorr   r   _is_not_null_string
isinstancer   r   searchstris_null_string	NULL_NAME	TypeErrortype)r   r   r   r   r   s        N/home/james-whalen/.local/lib/python3.13/site-packages/pathvalidate/_common.pyvalidate_pathtyper      sn     44  JtX$>$>_33CI>>d[%:%:;;
4T$ZLA
BB    namec                 F    [        U [        5      (       a  [        U 5      $ U $ )N)r   r   r   )r    s    r   to_strr"   %   s    $!!4yKr   valuec                 "   [         R                  S S nUS::  a  U R                  S5      (       a  gOUS:  a  [        R                  " U 5      $ [        R
                  " U 5      u  p#[        R                  " U 5      =(       a    [        U5      S:  $ )N   )   
   z\\T)r&      r   )sysversion_info
startswithntpathisabs
splitdrivelen)r#   ver_infodrive_tails       r   is_nt_abspathr3   ,   sz    #H7F## $	W	||E""$$U+LE<<13u:>1r   c                 d    U c  g [        U R                  5       5      S:H  $ ! [         a     gf = f)NTr   Fr/   stripAttributeErrorr#   s    r   r   r   9   s7    }5;;=!Q&& s   " 
//c                 \     [        U R                  5       5      S:  $ ! [         a     gf = f)Nr   Fr5   r8   s    r   r   r   C   s/    5;;=!A%% s    
++c                      [        S5       V s/ s H-  n [        U 5      [        R                  ;  d  M"  [        U 5      PM/     sn $ s  sn f N   )rangechrstring	printable)cs    r   _get_unprintable_ascii_charsrB   J   s5    !#JIJq#a&8H8H*HFCFJIIIs
   !AAunprintable_ascii_charsc                      / n [        S5       HP  n[        U5      nU[        ;   d%  U[        R                  [        R
                  -   ;   a  M?  U R                  U5        MR     U $ r;   )r=   r>   rC   r?   digitsascii_lettersappend)symbol_listirA   s      r   _get_ascii_symbolsrJ   Q   sV    K3ZF''1@T@T0T+T1  r   ascii_symbolsz[{}] __RE_UNPRINTABLE_CHARSzG(?:\x1B[@-Z\\-_]|[\x80-\x9A\x9C-\x9F]|(?:\x1B\[|\x9B)[0-?]*[ -/]*[@-~])__RE_ANSI_ESCAPEc                 p    SSK Jn  [        R                  [	        U 5      5      nU(       a  U" SU 35      eg )Nr   )InvalidCharErrorzunprintable character found: )r   rP   rM   findallr"   )r   rP   
match_lists      r   validate_unprintable_charrS   i   s4    ''//t=J!>zlKLL r   replacement_textc                 l     [         R                  X5      $ ! [        [        4 a    [        S5      ef = fNztext must be a string)rM   subr   r7   r   rT   s     r   replace_unprintable_charrY   q   s9    1%))*:AA~& 1/001    3c                 l     [         R                  X5      $ ! [        [        4 a    [        S5      ef = frV   )rN   rW   r   r7   rX   s     r   replace_ansi_escaper\   x   s9    1##$4;;~& 1/001rZ   c                    [        U [        5      (       a  U $ U (       d  [        R                  $ U R                  5       R	                  5       nUS:X  a  [        R
                  $ US:X  a#  [        R                  " 5       R	                  5       nUS;   a  [        R                  $ U(       a&  UR                  S5      (       a  [        R                  $ US;   a  [        R                  $ [        R                  $ )Nposixauto)linuxwin)macmacosdarwin)r   r   	UNIVERSALr6   casefoldPOSIXplatformsystemLINUXr+   WINDOWSMACOS)r    platform_strs     r   normalize_platformrn      s    $!!!!!::<((*Lw~~v(113y ~~//6611~~r   matchc                 d    U  Vs1 s H  n[        U5      iM     nnSR                  U5      $ s  snf )Nz, )reprjoin)ro   r   	uniq_lists      r   findall_to_strrt      s.    (-.dI.99Y /s   -encoding	max_bytesc                 R    U R                  U5      nUS U nUR                  US5      $ )Nignore)encodedecode)r   ru   rv   	str_bytess       r   truncate_strr|      s/    H%I*9%IHh//r   )FN)rL   ).__doc__r,   rh   rer?   r)   pathlibr   typingr   r   r   _constr   _typesr	   r
   compiler   __annotations__boolr   r   r"   r3   r   r   listrB   tuplerC   rJ   rK   formatescaperr   UNICODErM   rN   rS   rY   r\   rn   rt   intr|    r   r   <module>r      s     	  
  ' '  * J/ / QUC
C'+C@HC	C" c 
2 
2 
2# $ s t Jd3i J "''C'E!F  FDI  /12u 2 "


MM"))BGG$;<=>

!   **N % 
MC MD M13 1# 1s 11c 1S 1# 1Xl3  6 $s)    
0s 0c 0c 0c 0r   