U
    RhQ                     @  s  d dl mZ d dlZd dlZd dlZd dlmZmZmZm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZmZmZmZmZmZmZmZ dd	lmZ dd
lmZ erd dlmZmZmZm Z  ne! Z Z ZZ G dd deee Z"ed-dddddddddd	ddZ#ed.dddddddddd	ddZ#d/ddddddddd d	d!dZ#d"d#d$d%d&Z$ed'd(G d)d* d*ed+ Z%G d,d+ d+Z&e'e& dS )0    )annotationsN)CallableIterableIteratorSequence)	dataclass)partial)PathLike)IOTYPE_CHECKINGAnyAnyStrAsyncIteratorFinalGenericoverload   )	to_thread)AsyncResource)OpenBinaryModeOpenTextModeReadableBufferWriteableBufferc                   @  s  e Zd ZdZdddddZddd	d
dZeddddZddddZddddZ	dFdddddZ
dGddddddZdddd Zd!dd"d#Zdd$dd%d&d'Zdd$dd%d(d)Zedd*dd%d+d,Zed-ddd%d.d,Zd/dd0d1d,Zedd2dd3d4d5Zed-d6dd3d7d5Zd8dd9d:d5ZdHd<ddd=d>Zejfdd<dd?d@dAZdddBdCZdddDdEZd;S )I	AsyncFilea  
    An asynchronous file object.

    This class wraps a standard file object and provides async friendly versions of the
    following blocking methods (where available on the original file object):

    * read
    * read1
    * readline
    * readlines
    * readinto
    * readinto1
    * write
    * writelines
    * truncate
    * seek
    * tell
    * flush

    All other methods are directly passed through.

    This class supports the asynchronous context manager protocol which closes the
    underlying file at the end of the context block.

    This class also supports asynchronous iteration::

        async with await open_file(...) as f:
            async for line in f:
                print(line)
    
IO[AnyStr]None)fpreturnc                 C  s
   || _ d S N_fp)selfr    r"   9./venv/lib/python3.8/site-packages/anyio/_core/_fileio.py__init__>   s    zAsyncFile.__init__strobjectnamer   c                 C  s   t | j|S r   )getattrr    r!   r(   r"   r"   r#   __getattr__A   s    zAsyncFile.__getattr__r   c                 C  s   | j S )zThe wrapped file object.r   r!   r"   r"   r#   wrappedD   s    zAsyncFile.wrappedzAsyncIterator[AnyStr]c                 C s"   |   I d H }|r|V  q qq d S r   )readline)r!   liner"   r"   r#   	__aiter__I   s    zAsyncFile.__aiter__c                   s   t | jjI d H S r   )r   run_syncr    closer-   r"   r"   r#   acloseQ   s    zAsyncFile.acloseintr   )sizer   c                   s   t | jj|I d H S r   )r   r2   r    readr!   r7   r"   r"   r#   r8   T   s    zAsyncFile.readAsyncFile[bytes]bytes)r!   r7   r   c                   s   t | jj|I d H S r   )r   r2   r    read1r9   r"   r"   r#   r<   W   s    zAsyncFile.read1c                   s   t | jjI d H S r   )r   r2   r    r/   r-   r"   r"   r#   r/   Z   s    zAsyncFile.readlinezlist[AnyStr]c                   s   t | jjI d H S r   )r   r2   r    	readlinesr-   r"   r"   r#   r=   ]   s    zAsyncFile.readlinesr   )r!   br   c                   s   t | jj|I d H S r   )r   r2   r    readintor!   r>   r"   r"   r#   r?   `   s    zAsyncFile.readintoc                   s   t | jj|I d H S r   )r   r2   r    	readinto1r@   r"   r"   r#   rA   c   s    zAsyncFile.readinto1r   c                   s   d S r   r"   r@   r"   r"   r#   writef   s    zAsyncFile.writeAsyncFile[str]c                   s   d S r   r"   r@   r"   r"   r#   rB   i   s    zReadableBuffer | str)r>   r   c                   s   t | jj|I d H S r   )r   r2   r    rB   r@   r"   r"   r#   rB   l   s    zIterable[ReadableBuffer])r!   linesr   c                   s   d S r   r"   r!   rD   r"   r"   r#   
writelineso   s    zAsyncFile.writelineszIterable[str]c                   s   d S r   r"   rE   r"   r"   r#   rF   t   s    z(Iterable[ReadableBuffer] | Iterable[str])rD   r   c                   s   t | jj|I d H S r   )r   r2   r    rF   rE   r"   r"   r#   rF   w   s    Nz
int | Nonec                   s   t | jj|I d H S r   )r   r2   r    truncater9   r"   r"   r#   rG   z   s    zAsyncFile.truncate)offsetwhencer   c                   s   t | jj||I d H S r   )r   r2   r    seek)r!   rH   rI   r"   r"   r#   rJ   }   s    zAsyncFile.seekc                   s   t | jjI d H S r   )r   r2   r    tellr-   r"   r"   r#   rK      s    zAsyncFile.tellc                   s   t | jjI d H S r   )r   r2   r    flushr-   r"   r"   r#   rL      s    zAsyncFile.flush)r5   )r5   )N)__name__
__module____qualname____doc__r$   r+   propertyr.   r1   r4   r8   r<   r/   r=   r?   rA   r   rB   rF   rG   osSEEK_SETrJ   rK   rL   r"   r"   r"   r#   r      s6   r   .zstr | PathLike[str] | intr   r6   
str | Noneboolz Callable[[str, int], int] | Noner:   )	filemode	bufferingencodingerrorsnewlineclosefdopenerr   c                   s   d S r   r"   rV   rW   rX   rY   rZ   r[   r\   r]   r"   r"   r#   	open_file   s    
r_   r   rC   c                   s   d S r   r"   r^   r"   r"   r#   r_      s    
rr5   Tr%   AsyncFile[Any]c           	        s(   t t| |||||||	I dH }t|S )z
    Open a file asynchronously.

    The arguments are exactly the same as for the builtin :func:`open`.

    :return: an asynchronous file object

    N)r   r2   openr   )	rV   rW   rX   rY   rZ   r[   r\   r]   r   r"   r"   r#   r_      s            
r   zAsyncFile[AnyStr])rV   r   c                 C  s   t | S )z
    Wrap an existing file as an asynchronous file.

    :param file: an existing file-like object
    :return: an asynchronous file object

    )r   )rV   r"   r"   r#   	wrap_file   s    rc   F)eqc                   @  s$   e Zd ZU ded< ddddZdS )_PathIteratorzIterator[PathLike[str]]iteratorPathr,   c                   s0   t jt| jd ddI d H }|d kr(td t|S NTZabandon_on_cancel)r   r2   nextrf   StopAsyncIterationrg   )r!   Znextvalr"   r"   r#   	__anext__   s       z_PathIterator.__anext__N)rM   rN   rO   __annotations__rl   r"   r"   r"   r#   re      s   
re   rg   c                	   @  s  e Zd ZU dZdZded< ddddd	Zd
dddZd
dddZd
dddZ	ddddZ
ddddZdddddZdddddZdddd d!Zdddd"d#Zdddd$d%Zdd dd&d'Zdd dd(d)Zed*dd+d,Zed
dd-d.Zed
dd/d0Zed
dd1d2Zed3dd4d5Zed dd6d7Zed
dd8d9Zed
dd:d;Zed<dd=d>Zed
dd?d@Zd ddAdBZd
ddCdDZd
ddEdFZ e!j"dGkre#j$j%Z%e&d
d dHdIdJZ'dKdLd
dMddNdOdPZ(dKdLd
dMddNdQdRZ)nd
ddSdTdRZ)ddddUdVZ*dWdXddddYdZd[Z+e&d dd\d]Z,ddd^d_Z-d dd`daZ.d
dbdcdddeZ/d
ddfdgZ0dhddidjdkZ1e&d ddldmZ2dddndoZ3dddpdqZ4dddrdsZ5dddtduZ6dddvdwZ7dddxdyZ8e!j"dzkr,ddd{d|Z9ddd}d~Z:ddddZ;ddddZ<ddddZ=dbdddZ>dd dddZ?dddddZ@ddddZAddddddddZBeCddddddddddZDeCddddddddddZDdd
ddddddddZDd
dddZEddddZFdddd
dddZGe!j"dzkrbddddd dddZHndd dddZHd dddZIdd diddZJdd diddZKddd dddZLd
dbdcddZMddddZNdddddZOdWdXdddddZPddhdddddĄZQdddddƜddȄZRddddɜdd˄ZSe!j"dzkrRddddddΜddЄZTd
d dќddӄZUd
d dԜddքZVd
d dלddلZWdd dڜdd܄ZXdddݜdd߄ZYdd
dddddddZZdKS )rg   aF
  
    An asynchronous version of :class:`pathlib.Path`.

    This class cannot be substituted for :class:`pathlib.Path` or
    :class:`pathlib.PurePath`, but it is compatible with the :class:`os.PathLike`
    interface.

    It implements the Python 3.10 version of :class:`pathlib.Path` interface, except for
    the deprecated :meth:`~pathlib.Path.link_to` method.

    Some methods may be unavailable or have limited functionality, based on the Python
    version:

    * :meth:`~pathlib.Path.from_uri` (available on Python 3.13 or later)
    * :meth:`~pathlib.Path.full_match` (available on Python 3.13 or later)
    * :meth:`~pathlib.Path.is_junction` (available on Python 3.12 or later)
    * :meth:`~pathlib.Path.match` (the ``case_sensitive`` paramater is only available on
      Python 3.13 or later)
    * :meth:`~pathlib.Path.relative_to` (the ``walk_up`` parameter is only available on
      Python 3.12 or later)
    * :meth:`~pathlib.Path.walk` (available on Python 3.12 or later)

    Any methods that do disk I/O need to be awaited on. These methods are:

    * :meth:`~pathlib.Path.absolute`
    * :meth:`~pathlib.Path.chmod`
    * :meth:`~pathlib.Path.cwd`
    * :meth:`~pathlib.Path.exists`
    * :meth:`~pathlib.Path.expanduser`
    * :meth:`~pathlib.Path.group`
    * :meth:`~pathlib.Path.hardlink_to`
    * :meth:`~pathlib.Path.home`
    * :meth:`~pathlib.Path.is_block_device`
    * :meth:`~pathlib.Path.is_char_device`
    * :meth:`~pathlib.Path.is_dir`
    * :meth:`~pathlib.Path.is_fifo`
    * :meth:`~pathlib.Path.is_file`
    * :meth:`~pathlib.Path.is_junction`
    * :meth:`~pathlib.Path.is_mount`
    * :meth:`~pathlib.Path.is_socket`
    * :meth:`~pathlib.Path.is_symlink`
    * :meth:`~pathlib.Path.lchmod`
    * :meth:`~pathlib.Path.lstat`
    * :meth:`~pathlib.Path.mkdir`
    * :meth:`~pathlib.Path.open`
    * :meth:`~pathlib.Path.owner`
    * :meth:`~pathlib.Path.read_bytes`
    * :meth:`~pathlib.Path.read_text`
    * :meth:`~pathlib.Path.readlink`
    * :meth:`~pathlib.Path.rename`
    * :meth:`~pathlib.Path.replace`
    * :meth:`~pathlib.Path.resolve`
    * :meth:`~pathlib.Path.rmdir`
    * :meth:`~pathlib.Path.samefile`
    * :meth:`~pathlib.Path.stat`
    * :meth:`~pathlib.Path.symlink_to`
    * :meth:`~pathlib.Path.touch`
    * :meth:`~pathlib.Path.unlink`
    * :meth:`~pathlib.Path.walk`
    * :meth:`~pathlib.Path.write_bytes`
    * :meth:`~pathlib.Path.write_text`

    Additionally, the following methods return an async iterator yielding
    :class:`~.Path` objects:

    * :meth:`~pathlib.Path.glob`
    * :meth:`~pathlib.Path.iterdir`
    * :meth:`~pathlib.Path.rglob`
    )_path__weakref__r   ro   zstr | PathLike[str]r   )argsr   c                 G  s   t j| | _d S r   )pathlibrg   rn   r!   rp   r"   r"   r#   r$     s    zPath.__init__r%   r,   c                 C  s
   | j  S r   )rn   
__fspath__r-   r"   r"   r#   rs      s    zPath.__fspath__c                 C  s
   | j  S r   )rn   __str__r-   r"   r"   r#   rt   #  s    zPath.__str__c                 C  s   | j j d|  dS )N())	__class__rM   as_posixr-   r"   r"   r#   __repr__&  s    zPath.__repr__r;   c                 C  s
   | j  S r   )rn   	__bytes__r-   r"   r"   r#   rz   )  s    zPath.__bytes__r6   c                 C  s
   | j  S r   )rn   __hash__r-   r"   r"   r#   r{   ,  s    zPath.__hash__r&   rU   )otherr   c                 C  s    t |tr|jn|}| j|S r   )
isinstancerg   rn   __eq__r!   r|   targetr"   r"   r#   r~   /  s    zPath.__eq__zpathlib.PurePath | Pathc                 C  s    t |tr|jn|}| j|S r   )r}   rg   rn   __lt__r   r"   r"   r#   r   3  s    zPath.__lt__c                 C  s    t |tr|jn|}| j|S r   )r}   rg   rn   __le__r   r"   r"   r#   r   7  s    zPath.__le__c                 C  s    t |tr|jn|}| j|S r   )r}   rg   rn   __gt__r   r"   r"   r#   r   ;  s    zPath.__gt__c                 C  s    t |tr|jn|}| j|S r   )r}   rg   rn   __ge__r   r"   r"   r#   r   ?  s    zPath.__ge__c                 C  s   t | j| S r   )rg   rn   r!   r|   r"   r"   r#   __truediv__C  s    zPath.__truediv__c                 C  s   t ||  S r   rg   r   r"   r"   r#   __rtruediv__F  s    zPath.__rtruediv__ztuple[str, ...]c                 C  s   | j jS r   )rn   partsr-   r"   r"   r#   r   I  s    z
Path.partsc                 C  s   | j jS r   )rn   driver-   r"   r"   r#   r   M  s    z
Path.drivec                 C  s   | j jS r   )rn   rootr-   r"   r"   r#   r   Q  s    z	Path.rootc                 C  s   | j jS r   )rn   anchorr-   r"   r"   r#   r   U  s    zPath.anchorzSequence[Path]c                 C  s   t dd | jjD S )Nc                 s  s   | ]}t |V  qd S r   r   ).0pr"   r"   r#   	<genexpr>[  s     zPath.parents.<locals>.<genexpr>)tuplern   parentsr-   r"   r"   r#   r   Y  s    zPath.parentsc                 C  s   t | jjS r   )rg   rn   parentr-   r"   r"   r#   r   ]  s    zPath.parentc                 C  s   | j jS r   )rn   r(   r-   r"   r"   r#   r(   a  s    z	Path.namec                 C  s   | j jS r   )rn   suffixr-   r"   r"   r#   r   e  s    zPath.suffixz	list[str]c                 C  s   | j jS r   )rn   suffixesr-   r"   r"   r#   r   i  s    zPath.suffixesc                 C  s   | j jS r   )rn   stemr-   r"   r"   r#   r   m  s    z	Path.stemc                   s   t | jjI d H }t|S r   )r   r2   rn   absoluterg   )r!   pathr"   r"   r#   r   q  s    zPath.absolutec                 C  s
   | j  S r   )rn   rx   r-   r"   r"   r#   rx   u  s    zPath.as_posixc                 C  s
   | j  S r   )rn   as_urir-   r"   r"   r#   r   x  s    zPath.as_uri)      )urir   c                 C  s   t tj |S r   )rg   rq   from_uri)clsr   r"   r"   r#   r   ~  s    zPath.from_uriNcase_sensitivezbool | None)path_patternr   r   c                C  s   | j j||dS Nr   )rn   
full_matchr!   r   r   r"   r"   r#   r     s    zPath.full_matchc                C  s   | j j||dS r   rn   matchr   r"   r"   r#   r     s    z
Path.match)r   r   c                 C  s   | j |S r   r   )r!   r   r"   r"   r#   r     s    c                 C  s,   z|  | W dS  tk
r&   Y dS X d S )NTF)relative_to
ValueErrorr   r"   r"   r#   is_relative_to  s
    
zPath.is_relative_toTfollow_symlinks)rW   r   r   c                  s$   t tj|d}t|| j|I d H S )Nr   )r   rR   chmodr   r2   rn   )r!   rW   r   funcr"   r"   r#   r     s    z
Path.chmodc                   s   t tjjI d H }| |S r   )r   r2   rq   rg   cwd)r   r   r"   r"   r#   r     s    zPath.cwdc                   s   t j| jjddI d H S rh   )r   r2   rn   existsr-   r"   r"   r#   r     s    zPath.existsc                   s   t tj| jjddI d H S rh   )rg   r   r2   rn   
expanduserr-   r"   r"   r#   r     s    zPath.expanduserzAsyncIterator[Path])patternr   c                 C  s   | j |}t|S r   )rn   globre   r!   r   genr"   r"   r#   r     s    z	Path.globc                   s   t j| jjddI d H S rh   )r   r2   rn   groupr-   r"   r"   r#   r     s    z
Path.groupz-str | bytes | PathLike[str] | PathLike[bytes])r   r   c                   s*   t |tr|j}ttj|| I d H  d S r   )r}   rg   rn   r   r2   rR   linkr!   r   r"   r"   r#   hardlink_to  s    
zPath.hardlink_toc                   s   t tjjI d H }| |S r   )r   r2   rq   rg   home)r   Z	home_pathr"   r"   r#   r     s    z	Path.homec                 C  s
   | j  S r   )rn   is_absoluter-   r"   r"   r#   r     s    zPath.is_absolutec                   s   t j| jjddI d H S rh   )r   r2   rn   is_block_devicer-   r"   r"   r#   r     s     zPath.is_block_devicec                   s   t j| jjddI d H S rh   )r   r2   rn   is_char_devicer-   r"   r"   r#   r     s     zPath.is_char_devicec                   s   t j| jjddI d H S rh   )r   r2   rn   is_dirr-   r"   r"   r#   r     s    zPath.is_dirc                   s   t j| jjddI d H S rh   )r   r2   rn   is_fifor-   r"   r"   r#   r     s    zPath.is_fifoc                   s   t j| jjddI d H S rh   )r   r2   rn   is_filer-   r"   r"   r#   r     s    zPath.is_file)r      c                   s   t | jjI d H S r   )r   r2   rn   is_junctionr-   r"   r"   r#   r     s    zPath.is_junctionc                   s   t jtjj| jddI d H S rh   )r   r2   rR   r   ismountrn   r-   r"   r"   r#   is_mount  s
      zPath.is_mountc                 C  s
   | j  S r   )rn   is_reservedr-   r"   r"   r#   r     s    zPath.is_reservedc                   s   t j| jjddI d H S rh   )r   r2   rn   	is_socketr-   r"   r"   r#   r     s    zPath.is_socketc                   s   t j| jjddI d H S rh   )r   r2   rn   
is_symlinkr-   r"   r"   r#   r     s    zPath.is_symlinkc                 C  s   | j  }t|S r   )rn   iterdirre   )r!   r   r"   r"   r#   r     s    
zPath.iterdirc                 G  s   t | jj| S r   )rg   rn   joinpathrr   r"   r"   r#   r     s    zPath.joinpath)rW   r   c                   s   t | jj|I d H  d S r   )r   r2   rn   lchmod)r!   rW   r"   r"   r#   r     s    zPath.lchmodzos.stat_resultc                   s   t j| jjddI d H S rh   )r   r2   rn   lstatr-   r"   r"   r#   r     s    z
Path.lstat  F)rW   r   exist_okr   c                   s   t | jj|||I d H  d S r   )r   r2   rn   mkdir)r!   rW   r   r   r"   r"   r#   r     s    z
Path.mkdir.r   rT   r:   )rW   rX   rY   rZ   r[   r   c                   s   d S r   r"   r!   rW   rX   rY   rZ   r[   r"   r"   r#   rb     s    z	Path.openr   rC   c                   s   d S r   r"   r   r"   r"   r#   rb     s    r`   r5   ra   c                   s&   t | jj|||||I d H }t|S r   )r   r2   rn   rb   r   )r!   rW   rX   rY   rZ   r[   r   r"   r"   r#   rb     s         
c                   s   t j| jjddI d H S rh   )r   r2   rn   ownerr-   r"   r"   r#   r     s    z
Path.ownerc                   s   t | jjI d H S r   )r   r2   rn   
read_bytesr-   r"   r"   r#   r     s    zPath.read_bytes)rY   rZ   r   c                   s   t | jj||I d H S r   )r   r2   rn   	read_text)r!   rY   rZ   r"   r"   r#   r     s    zPath.read_text)walk_up)r|   r   r   c                G  s   t | jj|d|iS )Nr   rg   rn   r   )r!   r   r|   r"   r"   r#   r   %  s    zPath.relative_toc                 G  s   t | jj| S r   r   r   r"   r"   r#   r   ,  s    c                   s   t tj| jI d H }t|S r   )r   r2   rR   readlinkrn   rg   r   r"   r"   r#   r   /  s    zPath.readlinkzstr | pathlib.PurePath | Pathc                   s.   t |tr|j}t| jj|I d H  t|S r   )r}   rg   rn   r   r2   renamer   r"   r"   r#   r   3  s    
zPath.renamec                   s.   t |tr|j}t| jj|I d H  t|S r   )r}   rg   rn   r   r2   replacer   r"   r"   r#   r   :  s    
zPath.replace)strictr   c                   s(   t | jj|d}ttj|ddI d H S )N)r   Tri   )r   rn   resolverg   r   r2   )r!   r   r   r"   r"   r#   r   A  s    zPath.resolvec                 C  s   | j |}t|S r   )rn   rglobre   r   r"   r"   r#   r   E  s    z
Path.rglobc                   s   t | jjI d H  d S r   )r   r2   rn   rmdirr-   r"   r"   r#   r   I  s    z
Path.rmdir)
other_pathr   c                   s*   t |tr|j}tj| jj|ddI d H S rh   )r}   rg   rn   r   r2   samefile)r!   r   r"   r"   r#   r   L  s    
  zPath.samefile)r   r   c                  s&   t tj|d}tj|| jddI d H S )Nr   Tri   )r   rR   statr   r2   rn   )r!   r   r   r"   r"   r#   r   T  s    z	Path.stat)r   target_is_directoryr   c                   s,   t |tr|j}t| jj||I d H  d S r   )r}   rg   rn   r   r2   
symlink_to)r!   r   r   r"   r"   r#   r   X  s    
zPath.symlink_to  )rW   r   r   c                   s   t | jj||I d H  d S r   )r   r2   rn   touch)r!   rW   r   r"   r"   r#   r   b  s    z
Path.touch)
missing_okr   c                   s8   zt | jjI d H  W n tk
r2   |s. Y nX d S r   )r   r2   rn   unlinkFileNotFoundError)r!   r   r"   r"   r#   r   e  s
    zPath.unlinkz"Callable[[OSError], object] | Nonez0AsyncIterator[tuple[Path, list[str], list[str]]])top_downon_errorr   r   c           	       s^   dd fdd}| j ||| t|I d H }|d kr>d S |\}}}t|||fV  q"d S )Nz0tuple[pathlib.Path, list[str], list[str]] | Noner,   c                     s&   z
t  W S  tk
r    Y d S X d S r   )rj   StopIterationr"   r   r"   r#   get_next_valuet  s    
z!Path.walk.<locals>.get_next_value)rn   walkr   r2   rg   )	r!   r   r   r   r   valuer   dirspathsr"   r   r#   r   n  s    
z	Path.walkr'   c                 C  s   t | j|S r   )rg   rn   	with_namer*   r"   r"   r#   r     s    zPath.with_name)r   r   c                 C  s   t | j|| jj S r   )rg   rn   r   r   )r!   r   r"   r"   r#   	with_stem  s    zPath.with_stem)r   r   c                 C  s   t | j|S r   )rg   rn   with_suffix)r!   r   r"   r"   r#   r     s    zPath.with_suffix)pathsegmentsr   c                 G  s   t | S r   r   )r!   r   r"   r"   r#   with_segments  s    zPath.with_segments)datar   c                   s   t | jj|I d H S r   )r   r2   rn   write_bytes)r!   r   r"   r"   r#   r     s    zPath.write_bytes)r   rY   rZ   r[   r   c                   s*   dd fdd}t |I d H S )Nr6   r,   c               
     s6   j jdd} |  W  5 Q R  S Q R X d S )Nw)rY   rZ   r[   )rn   rb   rB   )r   r   rY   rZ   r[   r!   r"   r#   sync_write_text  s       z(Path.write_text.<locals>.sync_write_text)r   r2   )r!   r   rY   rZ   r[   r   r"   r   r#   
write_text  s    zPath.write_text)r   FF)....).....)r`   r5   NNN)NN)F)F)r   T)F)TNF)NNN)[rM   rN   rO   rP   	__slots__rm   r$   rs   rt   ry   rz   r{   r~   r   r   r   r   r   r   rQ   r   r   r   r   r   r   r(   r   r   r   r   rx   r   sysversion_inforq   rg   parserclassmethodr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rb   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r"   r"   r"   r#   rg      s
  
F         	              
      )......).......)r`   r5   NNNTN)(Z
__future__r   rR   rq   r   Zcollections.abcr   r   r   r   Zdataclassesr   	functoolsr   r	   typingr
   r   r   r   r   r   r   r    r   abcr   Z	_typeshedr   r   r   r   r&   r   r_   rc   re   rg   registerr"   r"   r"   r#   <module>   s^   (i      "       "           T