+
    4j                        R t ^ RIHt ^ RIt^ RIt^ RIHt ^ RIHt ]'       d   ^ RI	H
t
 . ROt]! ]P                  ]P                  04      tR R lt ! R	 R]4      tR
 R ltR R ltR R ltR# )zGPath resolution, plus presence checks that tell absent from unreadable.)annotationsN)Enum)TYPE_CHECKING)Path	PathStatec                    V ^8  d   QhRRRR/# )   excOSErrorreturnbool )formats   "b/home/user/pdf2html-billing-ledger-validate/.venv/lib/python3.14/site-packages/nab_python/paths.py__annotate__r      s     ' ' 'T '    c                (    V P                   \        9   # )zWhether ``exc`` from a stat or an open means nothing is at the path.

``ENOTDIR`` is a non-directory component part-way along the path,
which leaves nothing at the path just as surely as ``ENOENT`` does.
)errno_ABSENT_ERRNOS)r	   s   &r   is_absent_errorr      s     99&&r   c                  D    ] tR t^!tRtRtRtRtRtRt	]
R R l4       tR	tR
# )r   zWhat a stat of a path found.absentfile	directoryother
unreadablec                   V ^8  d   QhRR/# )r   r   r   r   )r   s   "r   r   PathState.__annotate__+   s     > >T >r   c                H    V \         P                  \         P                  39   # )zWhether the caller should go on and open the path.

True for a regular file, and for one whose stat failed: what an
unreadable path means is the reader's call.
)r   FILE
UNREADABLE)selfs   &r   should_readPathState.should_read*   s     		(<(<===r   r   N)__name__
__module____qualname____firstlineno____doc__ABSENTr   	DIRECTORYOTHERr    propertyr"   __static_attributes__r   r   r   r   r   !   s0    &FDIEJ> >r   c                    V ^8  d   QhRRRR/# )r   pathr   r   r   r   )r   s   "r   r   r   4   s      T i r   c                    V P                  4       p\         P                  ! TP                  4      '       d   \        P                  # \         P                  ! TP                  4      '       d   \        P                  # \        P                  #   \         d    \        P                  u # \         dA   p\        T4      '       d   \        P                  u Rp?# \        P                  u Rp?# Rp?ii ; i)a  Classify ``path`` without raising, keeping the stat failures apart.

``Path.exists``/``is_file``/``is_dir`` answer with a bool, so an absent
path and a stat that failed collapse into one answer.  An unsearchable
parent directory fails the stat with ``EACCES``, which those methods
re-raise on Python 3.13 and below and report as absent on 3.14.
:data:`PathState.UNREADABLE` keeps that case separate, so the caller
can hand the path to the read that names the errno.
N)stat
ValueErrorr   r)   r
   r   r    S_ISREGst_moder   S_ISDIRr*   r+   )r/   str	   s   &  r   
path_stater7   4   s    
$YY[ ||BJJ~~||BJJ"""??     $3######$s5   B C5+C54C55 C0C5C0*C50C5c                    V ^8  d   QhRRRR/# )r   entrystrr   r   r   )r   s   "r   r   r   Q   s      s t r   c                    RV 9  # )zWhether the filesystem can carry ``entry`` as a name.

An embedded NUL has to be tested for rather than caught: building a
``Path`` never raises on one, and a non-strict resolve keeps it in
the path on Windows.
 r   )r9   s   &r   is_usable_path_namer=   Q   s     r   c               $    V ^8  d   QhRRRRRR/# )r   baser   r9   r:   r   zPath | Noner   )r   s   "r   r   r   [   s!     
 
t 
C 
K 
r   c                z    \        V4      '       g   R#  W,          P                  4       #   \         d     R# i ; i)zResolve ``entry`` against ``base``, or ``None`` for an unusable name.

Unencodable names other than a NUL raise from the resolve itself.
N)r=   resolver2   )r?   r9   s   &&r   resolve_pathrB   [   s:    
 u%%%%'' s   + ::)r   r   r=   r7   rB   )r(   
__future__r   r   r1   enumr   typingr   pathlibr   __all__	frozensetENOENTENOTDIRr   r   r   r7   r=   rB   r   r   r   <module>rK      s]    M "      ELL%--89'> >&:
r   