Ë
    
_ßd]  ã                   ó´   — d Z ddlmZ ddlmZ ddlm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ddlZddlZddlZddlmZ ddlmZ d	d
lmZ d„ Z G d„ de«      Zy)z|upload_docs

Implements a Distutils 'upload_docs' subcommand (upload documentation to
sites other than PyPi such as devpi).
é    )Ústandard_b64encode)Úlog)ÚDistutilsOptionErrorNé   )Úmetadata)ÚSetuptoolsDeprecationWarningé   )Úuploadc                 ó&   — | j                  dd«      S )Nzutf-8Úsurrogateescape)Úencode)Úss    ú@/usr/lib/python3/dist-packages/setuptools/command/upload_docs.pyÚ_encoder      s   € Ø�8‰8�GÐ.Ó/Ð/ó    c                   ó¤   — e Zd ZdZdZdddej                  z  fddgZej                  Zd„ Zd	efgZ	d
„ Z
d„ Zd„ Zd„ Zed„ «       Zed„ «       Zd„ Zy)Úupload_docszhttps://pypi.python.org/pypi/z;Upload documentation to sites other than PyPi such as devpizrepository=Úrzurl of repository [default: %s])zshow-responseNz&display full response text from server)zupload-dir=Nzdirectory to uploadc                 ób   — t        | j                  d u xr t        j                  dd¬«      «      S )Nzdistutils.commandsÚbuild_sphinx)ÚgroupÚname)ÚboolÚ
upload_dirr   Úentry_points©Úselfs    r   Ú
has_sphinxzupload_docs.has_sphinx0   s2   € ÜØ�O‰O˜tÐ#ò WÜ×%Ñ%Ð,@À~ÔVó
ð 	
r   r   c                 óJ   — t        j                  | «       d | _        d | _        y )N)r
   Úinitialize_optionsr   Ú
target_dirr   s    r   r    zupload_docs.initialize_options8   s   € Ü×!Ñ! $Ô'ØˆŒØˆ�r   c                 óð  — t        j                  d«       t        j                  | «       | j                  €€| j                  «       r/| j                  d«      }t        |j                  «      d   | _	        nc| j                  d«      }t        j                  j                  |j                  d«      | _	        n"| j                  d«       | j                  | _	        | j                  d| j                  z  «       y )NzWUpload_docs command is deprecated. Use Read the Docs (https://readthedocs.org) instead.r   ÚhtmlÚbuildÚdocsr   zUsing upload directory %s)r   Úwarnr
   Úfinalize_optionsr   r   Úget_finalized_commandÚdictÚbuilder_target_dirsr!   ÚosÚpathÚjoinÚ
build_baseÚensure_dirnameÚannounce)r   r   r$   s      r   r'   zupload_docs.finalize_options=   s¹   € Ü�‰ð1ô	
ô 	×Ñ Ô%Ø�?‰?Ð"Ø�‰Ô Ø#×9Ñ9¸.ÓI�Ü"& |×'GÑ'GÓ"HÈÑ"P�•à×2Ñ2°7Ó;�Ü"$§'¡'§,¡,¨u×/?Ñ/?ÀÓ"H�•à×Ñ Ô-Ø"Ÿo™oˆDŒOØ�‰Ð1°D·O±OÑCÕDr   c                 óŠ  — t        j                  |d«      }	 | j                  | j                  «       t	        j
                  | j                  «      D ]É  \  }}}|| j                  k(  r|sd}t        || j                  z  «      ‚|D ]“  }t        j                  j                  ||«      }|t        | j                  «      d  j                  t        j                  j                  «      }	t        j                  j                  |	|«      }
|j                  ||
«       Œ• ŒË 	 |j                  «        y # |j                  «        w xY w)NÚwz'no files found in upload directory '%s')ÚzipfileÚZipFileÚmkpathr!   r+   Úwalkr   r,   r-   ÚlenÚlstripÚsepÚwriteÚclose)r   ÚfilenameÚzip_fileÚrootÚdirsÚfilesÚtmplr   ÚfullÚrelativeÚdests              r   Úcreate_zipfilezupload_docs.create_zipfileO   sö   € Ü—?‘? 8¨SÓ1ˆð	Ø�K‰K˜Ÿ™Ô(Ü%'§W¡W¨T¯_©_Ó%=ò /Ñ!��d˜EØ˜4Ÿ?™?Ò*±5ØD�DÜ.¨t°d·o±oÑ/EÓFÐFØ!ò /�DÜŸ7™7Ÿ<™<¨¨dÓ3�DØ#¤C¨¯©Ó$8Ð$:Ð;×BÑBÄ2Ç7Á7Ç;Á;ÓO�HÜŸ7™7Ÿ<™<¨°$Ó7�DØ—N‘N 4¨Õ.ñ	/ñ	/ð �N‰NÕøˆH�N‰NÕús   ˜DD0 Ä0Ec                 óÚ  — t        j                  ddd¬«       | j                  «       D ]  }| j                  |«       Œ t	        j
                  «       }| j                  j                  j                  «       }t        j                  j                  |d|z  «      }	 | j                  |«       | j                  |«       t        j                  |«       y # t        j                  |«       w xY w)NzDeprecated commanda  
            upload_docs is deprecated and will be removed in a future version.
            Instead, use tools like devpi and Read the Docs; or lower level tools like
            httpie and curl to interact directly with your hosting service API.
            )iç  é	   é   )Údue_datez%s.zip)r   ÚemitÚget_sub_commandsÚrun_commandÚtempfileÚmkdtempÚdistributionr   Úget_namer+   r,   r-   rE   Úupload_fileÚshutilÚrmtree)r   Úcmd_nameÚtmp_dirr   r=   s        r   Úrunzupload_docs.run_   sÁ   € Ü$×)Ñ)Ø ðð
 #õ	
ð ×-Ñ-Ó/ò 	'ˆHØ×Ñ˜XÕ&ð	'ô ×"Ñ"Ó$ˆØ× Ñ ×)Ñ)×2Ñ2Ó4ˆÜ—7‘7—<‘< ¨°D©Ó9ˆð	#Ø×Ñ Ô)Ø×Ñ˜XÔ&ä�M‰M˜'Õ"øŒF�M‰M˜'Õ"ús   Â"C ÃC*c              #   óþ   K  — | \  }}d|z  }t        |t        «      s|g}|D ]W  }t        |t        «      r|d|d   z  z  }|d   }nt        |«      }|–— t        |«      –— d–— |–— |sŒK|dd  dk(  sŒTd–— ŒY y ­w)	Nz*
Content-Disposition: form-data; name="%s"z; filename="%s"r   r	   s   

éÿÿÿÿó   ó   
)Ú
isinstanceÚlistÚtupler   )ÚitemÚsep_boundaryÚkeyÚvaluesÚtitleÚvalues         r   Ú_build_partzupload_docs._build_partw   s˜   è ø€ à‰ˆˆVØ=ÀÑCˆä˜&¤$Ô'Ø�XˆFØò 	ˆEÜ˜%¤Ô'ØÐ*¨U°1©XÑ5Ñ5�Ø˜a™‘ä ›�ØÒÜ˜%“.Ò ØŠMØŠKÚ˜˜r˜s˜ uÓ,Ø“ñ	ùs   ‚A*A=Á-A=Á6A=c                 óP  — d}d|j                  d«      z   }|dz   }|df}t        j                  | j                  |¬«      }t	        ||j                  «       «      }t        j                  j                  |«      }t        j                  ||«      }	d|z  }
dj                  |	«      |
fS )	z=
        Build up the MIME payload for the POST data
        z3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254s   
--Úasciis   --rZ   )r_   z multipart/form-data; boundary=%sr   )
r   Ú	functoolsÚpartialrd   ÚmapÚitemsÚ	itertoolsÚchainÚfrom_iterabler-   )ÚclsÚdataÚboundaryr_   Úend_boundaryÚ	end_itemsÚbuilderÚpart_groupsÚpartsÚ
body_itemsÚcontent_types              r   Ú_build_multipartzupload_docs._build_multipart‹   s¦   € ð
 IˆØ §¡°Ó!9Ñ9ˆØ# eÑ+ˆàØð
ˆ	ô ×#Ñ#Ø�O‰OØ%ô
ˆô ˜' 4§:¡:£<Ó0ˆÜ—‘×-Ñ-¨kÓ:ˆÜ—_‘_ U¨IÓ6ˆ
Ø9¸HÑDˆØ�x‰x˜
Ó# \Ð1Ð1r   c                 ó  — t        |d«      5 }|j                  «       }d d d «       | j                  j                  }d|j	                  «       t
        j                  j                  |«      fdœ}t        | j                  dz   | j                  z   «      }t        |«      j                  d«      }d|z   }| j                  |«      \  }}	d| j                  z  }
| j                  |
t         j"                  «       t$        j&                  j)                  | j                  «      \  }}}}}}|s|s|rJ ‚|dk(  r t*        j,                  j/                  |«      }n3|d	k(  r t*        j,                  j1                  |«      }nt3        d
|z   «      ‚d}	 |j5                  «        |j7                  d|«       |	}|j9                  d|«       |j9                  dt;        t=        |«      «      «       |j9                  d|«       |j?                  «        |jA                  |«       |jI                  «       }|jJ                  dk(  r=d|jJ                  ›d|jL                  ›�}
| j                  |
t         j"                  «       n—|jJ                  dk(  rL|jO                  d«      }|€d|j	                  «       z  }d|z  }
| j                  |
t         j"                  «       n<d|jJ                  ›d|jL                  ›�}
| j                  |
t         jF                  «       | jP                  rtS        d|j                  «       d«       y y # 1 sw Y   �ŒxY w# tB        jD                  $ r3}| j                  t;        |«      t         jF                  «       Y d }~y d }~ww xY w)NÚrbÚ
doc_upload)z:actionr   Úcontentú:rf   zBasic zSubmitting documentation to %sÚhttpÚhttpszunsupported schema Ú ÚPOSTzContent-typezContent-lengthÚAuthorizationéÈ   zServer response (z): i-  ÚLocationzhttps://pythonhosted.org/%s/zUpload successful. Visit %szUpload failed (zK---------------------------------------------------------------------------)*ÚopenÚreadrO   r   rP   r+   r,   Úbasenamer   ÚusernameÚpasswordr   Údecoderx   Ú
repositoryr0   r   ÚINFOÚurllibÚparseÚurlparser~   ÚclientÚHTTPConnectionÚHTTPSConnectionÚAssertionErrorÚconnectÚ
putrequestÚ	putheaderÚstrr7   Ú
endheadersÚsendÚsocketÚerrorÚERRORÚgetresponseÚstatusÚreasonÚ	getheaderÚshow_responseÚprint)r   r<   Úfr|   Úmetaro   ÚcredentialsÚauthÚbodyÚctÚmsgÚschemaÚnetlocÚurlÚparamsÚqueryÚ	fragmentsÚconnrw   Úer   Úlocations                         r   rQ   zupload_docs.upload_file¡   sÏ  € Ü�(˜DÓ!ð 	 QØ—f‘f“hˆG÷	à× Ñ ×)Ñ)ˆà#Ø—M‘M“OÜŸ™×(Ñ(¨Ó2°GÐ<ñ
ˆô ˜dŸm™m¨cÑ1°D·M±MÑAÓBˆÜ(¨Ó5×<Ñ<¸WÓEˆØ˜+Ñ%ˆà×(Ñ(¨Ó.‰ˆˆbà.°$·/±/ÑBˆØ�‰�cœ3Ÿ8™8Ô$ô
 9?¿¹×8MÑ8MØ�O‰Oó9
Ñ5ˆ�˜˜V U¨Iñ ¡%±	Ð9Ð9Ø�VÒÜ—;‘;×-Ñ-¨fÓ5‰DØ�wÒÜ—;‘;×.Ñ.¨vÓ6‰Dä Ð!6¸Ñ!?Ó@Ð@àˆð	Ø�L‰LŒNØ�O‰O˜F CÔ(ØˆLØ�N‰N˜>¨<Ô8Ø�N‰NÐ+¬S´°T³«^Ô<Ø�N‰N˜?¨DÔ1Ø�O‰OÔØ�I‰I�dŒOð
 ×ÑÓˆØ�8‰8�s‹?Ø01·³¸!¿(º(ÐCˆCØ�M‰M˜#œsŸx™xÕ(Ø�X‰X˜Š_Ø—{‘{ :Ó.ˆHØÐØ9¸D¿M¹M»OÑK�Ø/°(Ñ:ˆCØ�M‰M˜#œsŸx™xÕ(ð ð /0¯h«h¸¿ºÐAˆCØ�M‰M˜#œsŸy™yÔ)Ø×ÒÜ�(˜AŸF™F›H hÕ/ð ÷w	ñ 	ûôT �|‰|ò 	Ø�M‰Mœ#˜a›&¤#§)¡)Ô,Üûð	ús$   �L2Æ	BL? Ì2L<Ì?NÍ)N Î NN)Ú__name__Ú
__module__Ú__qualname__ÚDEFAULT_REPOSITORYÚdescriptionr
   Úuser_optionsÚboolean_optionsr   Úsub_commandsr    r'   rE   rV   Ústaticmethodrd   Úclassmethodrx   rQ   © r   r   r   r      s�   „ ð 9ÐàO€Kð ØØ-°×0IÑ0IÑIð	
ð
 	JØ4ð€Lð ×,Ñ,€Oò
ð $ ZÐ0Ð1€Lòò
Eò$ò #ð0 ñó ðð& ñ2ó ð2ó*=0r   r   )Ú__doc__Úbase64r   Ú	distutilsr   Údistutils.errorsr   r+   rš   r3   rM   rR   rk   rg   Úhttp.clientr~   Úurllib.parser�   Ú
_importlibr   Úwarningsr   r
   r   r   r½   r   r   ú<module>rÆ      sL   ðñõ &Ý Ý 1Û 	Û Û Û Û Û Û Û Û å !Ý 3å ò0ô@0�&õ @0r   