§
    »"½j]	  ã                   óÞ   — d Z ddlZddlZddlZddlZddlZddlZ G d„ dej	        j
        ¦  «        Z G d„ dej	        j        ¦  «        Z G d„ dej	        j
        ej        ¦  «        Zd
d	„ZdS )z>Basic http server for tests to simulate PyPI or custom indexesé    Nc                   óD   — e Zd ZdZdej        j        fd„Zd„ Zd„ Z	d„ Z
dS )ÚIndexServeraY  Basic single-threaded http server simulating a package index

    You can use this server in unittest like this::
        s = IndexServer()
        s.start()
        index_url = s.base_url() + 'mytestindex'
        # do some test requests to the index
        # The index files should be located in setuptools/tests/indexes
        s.stop()
    ©Ú r   c                 ó`   — t           j        j                             | ||¦  «         d| _        d S ©NT)ÚhttpÚserverÚ
HTTPServerÚ__init__Ú_run©ÚselfÚserver_addressÚRequestHandlerClasss      úW/home/spazio/kingdom_calls/venv/lib/python3.11/site-packages/setuptools/tests/server.pyr   zIndexServer.__init__   s-   € õ
 	ŒÔ×'Ò'¨¨nÐ>QÑRÔRÐRØˆŒ	ˆ	ˆ	ó    c                 óv   — t          j        | j        ¬¦  «        | _        | j                             ¦   «          d S )N)Útarget)Ú	threadingÚThreadÚserve_foreverÚthreadÚstart©r   s    r   r   zIndexServer.start   s4   € ÝÔ&¨dÔ.@ÐAÑAÔAˆŒØŒ×ÒÑÔÐÐÐr   c                 óº   — t          j        d¦  «         |                      ¦   «          | j                             ¦   «          | j                             ¦   «          dS )zStop the servergš™™™™™¹?N)ÚtimeÚsleepÚshutdownr   ÚjoinÚsocketÚcloser   s    r   ÚstopzIndexServer.stop#   sL   € õ 	Œ
�3‰Œˆà�Š‰ŒˆØŒ×ÒÑÔÐØŒ×ÒÑÔÐÐÐr   c                 ó   — | j         }d|› d�S )Nzhttp://127.0.0.1:z/setuptools/tests/indexes/©Úserver_port)r   Úports     r   Úbase_urlzIndexServer.base_url-   s   € ØÔˆØC 4ÐCÐCÐCÐCr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   r
   ÚSimpleHTTPRequestHandlerr   r   r#   r(   © r   r   r   r      sq   € € € € € ð	ð 	ð Ø œKÔ@ðð ð ð ðð ð ðð ð ðDð Dð Dð Dð Dr   r   c                   ó   — e Zd Zd„ ZdS )ÚRequestRecorderc                 ó¬   — t          | j        ¦  «                             dg ¦  «        }|                     | ¦  «         |                      dd¦  «         d S )NÚrequestséÈ   ÚOK)Úvarsr
   Ú
setdefaultÚappendÚsend_response)r   r2   s     r   Údo_GETzRequestRecorder.do_GET3   sO   € Ý˜œÑ$Ô$×/Ò/°
¸BÑ?Ô?ˆØ�Š˜ÑÔÐØ×Ò˜3 Ñ%Ô%Ð%Ð%Ð%r   N)r)   r*   r+   r9   r.   r   r   r0   r0   2   s#   € € € € € ð&ð &ð &ð &ð &r   r0   c                   óP   — e Zd ZdZdefd„Zd„ Zed„ ¦   «         Zed„ ¦   «         Z	dS )Ú
MockServerzD
    A simple HTTP Server that records the requests made to it.
    r   c                 ó¬   — t           j        j                             | ||¦  «         t          j                             | ¦  «         d| _        g | _        d S r   )r	   r
   r   r   r   r   Údaemonr2   r   s      r   r   zMockServer.__init__>   sI   € ÝŒÔ×'Ò'¨¨nÐ>QÑRÔRÐRÝÔ×!Ò! $Ñ'Ô'Ð'ØˆŒØˆŒˆˆr   c                 ó.   — |                       ¦   «          d S ©N)r   r   s    r   ÚrunzMockServer.runD   s   € Ø×ÒÑÔÐÐÐr   c                 ó   — d| j         › �S )Nz
localhost:r%   r   s    r   ÚnetloczMockServer.netlocG   s   € à.˜DÔ,Ð.Ð.Ð.r   c                 ó   — d| j         › d�S )Nzhttp://ú/)rB   r   s    r   ÚurlzMockServer.urlK   s   € à'˜œÐ'Ð'Ð'Ð'r   N)
r)   r*   r+   r,   r0   r   r@   ÚpropertyrB   rE   r.   r   r   r;   r;   9   s~   € € € € € ðð ð '.À?ð ð ð ð ðð ð ð ð/ð /ñ „Xð/ð ð(ð (ñ „Xð(ð (ð (r   r;   c                 ó  — t           j                             t           j                             | ¦  «        ¦  «        } d}|�|d|z   z  }t          j                             |t          j                             | ¦  «        ¦  «        S )zConvert a path to a file: URL.zfile:Nz//)	ÚosÚpathÚnormpathÚabspathÚurllibÚparseÚurljoinÚrequestÚpathname2url)rI   Ú	authorityÚbases      r   Úpath_to_urlrS   P   sg   € åŒ7×Ò�BœGŸOšO¨DÑ1Ô1Ñ2Ô2€DØ€DØÐØ��yÑ Ñ ˆÝŒ<×Ò ¥f¤n×&AÒ&AÀ$Ñ&GÔ&GÑHÔHÐHr   r?   )r,   Úhttp.serverr	   rH   r   r   Úurllib.parserL   Úurllib.requestr
   r   r   ÚBaseHTTPRequestHandlerr0   r   r;   rS   r.   r   r   ú<module>rX      s  ðØ DÐ Dà Ð Ð Ð Ø 	€	€	€	Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð ð$Dð $Dð $Dð $Dð $D�$”+Ô(ñ $Dô $Dð $DðN&ð &ð &ð &ð &�d”kÔ8ñ &ô &ð &ð(ð (ð (ð (ð (�”Ô'¨Ô)9ñ (ô (ð (ð.Ið Ið Ið Ið Ið Ir   