+
    êh]	  ã                   ó  € R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt ! R R]P                  P                  4      t ! R R]P                  P                  4      t ! R R]P                  P                  ]P                  4      tR	R ltR# )
z>Basic http server for tests to simulate PyPI or custom indexesNc                   ól   a € ] tR t^t o RtR]P                  P                  3R ltR t	R t
R tRtV tR# )	ÚIndexServera9  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()
c                óh   € \         P                  P                  P                  WV4       R V n        R# ©TN)ÚhttpÚserverÚ
HTTPServerÚ__init__Ú_run©ÚselfÚserver_addressÚRequestHandlerClasss   &&&Ú9/usr/lib/python3/dist-packages/setuptools/tests/server.pyr	   ÚIndexServer.__init__   s&   € ô
 	�‰×Ñ×'Ñ'¨Ð>QÔRØˆŽ	ó    c                ó†   € \         P                  ! V P                  R 7      V n        V P                  P	                  4        R# ))ÚtargetN)Ú	threadingÚThreadÚserve_foreverÚthreadÚstart©r   s   &r   r   ÚIndexServer.start   s*   € Ü×&Ò&¨d×.@Ñ.@ÔAˆŒØ�‰×ÑÖr   c                óº   € \         P                  ! R4       V P                  4        V P                  P	                  4        V P
                  P                  4        R# )zStop the servergš™™™™™¹?N)ÚtimeÚsleepÚshutdownr   ÚjoinÚsocketÚcloser   s   &r   ÚstopÚIndexServer.stop#   s8   € ô 	�
Š
�3Œà�‰ŒØ�‰×ÑÔØ�‰×ÑÖr   c                ó&   € V P                   pR V R2# )zhttp://127.0.0.1:z/setuptools/tests/indexes/©Úserver_port)r   Úports   & r   Úbase_urlÚIndexServer.base_url-   s   € Ø×ÑˆØ" 4 &Ð(BÐCÐCr   )r
   r   N©Ú é    )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   ÚSimpleHTTPRequestHandlerr	   r   r"   r(   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r      s7   ø‡ € ñ	ð Ø ŸK™K×@Ñ@ôòò÷Dð Dr   r   c                   ó&   a € ] tR t^2t o R tRtV tR# )ÚRequestRecorderc                ó–   € \        V P                  4      P                  R . 4      pVP                  V 4       V P	                  ^ÈR4       R# )ÚrequestsÚOKN)Úvarsr   Ú
setdefaultÚappendÚsend_response)r   r:   s   & r   Údo_GETÚRequestRecorder.do_GET3   s9   € Ü˜Ÿ™Ó$×/Ñ/°
¸BÓ?ˆØ�‰˜ÔØ×Ñ˜3 Ö%r   © N)r-   r.   r/   r0   r@   r3   r4   r5   s   @r   r8   r8   2   s   ø‡ € ÷&ð &r   r8   c                   óX   a € ] tR t^9t o RtR]3R ltR t]R 4       t	]R 4       t
RtV tR# )	Ú
MockServerz<
A simple HTTP Server that records the requests made to it.
c                ó´   € \         P                  P                  P                  WV4       \        P
                  P                  V 4       R V n        . V n        R# r   )r   r   r   r	   r   r   Údaemonr:   r   s   &&&r   r	   ÚMockServer.__init__>   s?   € Ü�‰×Ñ×'Ñ'¨Ð>QÔRÜ×Ñ×!Ñ! $Ô'ØˆŒØˆŽr   c                ó&   € V P                  4        R # ©N)r   r   s   &r   ÚrunÚMockServer.runD   s   € Ø×ÑÖr   c                ó    € R V P                    2# )z
localhost:r%   r   s   &r   ÚnetlocÚMockServer.netlocG   s   € à˜D×,Ñ,Ð-Ð.Ð.r   c                ó"   € R V P                    R2# )zhttp://Ú/)rM   r   s   &r   ÚurlÚMockServer.urlK   s   € à˜Ÿ™˜ QÐ'Ð'r   )rF   r:   Nr*   )r-   r.   r/   r0   r1   r8   r	   rJ   ÚpropertyrM   rQ   r3   r4   r5   s   @r   rD   rD   9   sC   ø‡ € ñð '.À?ô òð ñ/ó ð/ð ñ(ó ö(r   rD   c                ó   € \         P                  P                  \         P                  P                  V 4      4      p RpVe   VRV,           ,          p\        P
                  P                  V\        P                  P                  V 4      4      # )zConvert a path to a file: URL.zfile:z//)	ÚosÚpathÚnormpathÚabspathÚurllibÚparseÚurljoinÚrequestÚpathname2url)rV   Ú	authorityÚbases   && r   Úpath_to_urlr`   P   sc   € ä�7‰7×ÑœBŸG™GŸO™O¨DÓ1Ó2€DØ€DØÒØ��yÕ Õ ˆÜ�<‰<×Ñ ¤f§n¡n×&AÑ&AÀ$Ó&GÓHÐHr   rI   )r1   Úhttp.serverr   rU   r   r   Úurllib.parserY   Úurllib.requestr   r   r   ÚBaseHTTPRequestHandlerr8   r   rD   r`   rB   r   r   Ú<module>re      sm   ðÙ Dã Û 	Û Û Û Û ô$D�$—+‘+×(Ñ(ô $DôN&�d—k‘k×8Ñ8ô &ô(�—‘×'Ñ'¨×)9Ñ)9ô (ö.Ir   