_d]dZddlmZddlmZddlmZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlmZddlmZd d lmZd ZGd d eZy)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&|jddS)Nzutf-8surrogateescape)encode)ss @/usr/lib/python3/dist-packages/setuptools/command/upload_docs.py_encoders 88G. //ceZdZdZdZdddejzfddgZejZdZd efgZ d Z d Z d Z d Z edZedZdZy) upload_docszhttps://pypi.python.org/pypi/z;Upload documentation to sites other than PyPi such as devpiz repository=rzurl of repository [default: %s])z show-responseNz&display full response text from server)z upload-dir=Nzdirectory to uploadcbt|jduxrtjddS)Nzdistutils.commands build_sphinx)groupname)bool upload_dirr entry_pointsselfs r has_sphinxzupload_docs.has_sphinx0s2 OOt # W%%,@~V  rrcJtj|d|_d|_y)N)r initialize_optionsr target_dirrs rr zupload_docs.initialize_options8s!!$'rctjdtj||j|j r/|j d}t|jd|_ nc|j d}tjj|jd|_ n"|jd|j|_ |jd|jzy)NzWUpload_docs command is deprecated. Use Read the Docs (https://readthedocs.org) instead.rhtmlbuilddocsrzUsing upload directory %s)rwarnr finalize_optionsrrget_finalized_commanddictbuilder_target_dirsr!ospathjoin build_baseensure_dirnameannounce)rrr$s rr'zupload_docs.finalize_options=s  1  % ?? " #99.I "&|'G'G"H"P227;"$'',,u/?/?"H    -"ooDO 1DOOCDrctj|d} |j|jt j |jD]\}}}||jk(r|sd}t ||jz|D]}tjj||}|t|jdjtjj} tjj| |} |j||  |jy#|jwxYw)Nwz'no files found in upload directory '%s')zipfileZipFilemkpathr!r+walkrr,r-lenlstripsepwriteclose) rfilenamezip_filerootdirsfilestmplrfullrelativedests rcreate_zipfilezupload_docs.create_zipfileOs??8S1  KK (%'WWT__%= /!dE4??*5DD.tdoo/EFF!/D77<<d3D#C$8$:;BB277;;OH77<<$7DNN4. /  / NN HNN s DD00Ectjddd|jD]}|j|t j }|j jj}tjj|d|z} |j||j|tj|y#tj|wxYw)NzDeprecated 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)remitget_sub_commands run_commandtempfilemkdtemp distributionrget_namer+r,r-rE upload_fileshutilrmtree)rcmd_nametmp_dirrr=s rrunzupload_docs.run_s$))   # --/ 'H   X & '""$  ))22477<<D9 #    )   X & MM' "FMM' "s "CC*c#K|\}}d|z}t|ts|g}|D]W}t|tr|d|dzz }|d}n t|}|t|d||sK|dddk(sTdYyw) Nz* Content-Disposition: form-data; name="%s"z; filename="%s"rr s   ) isinstancelisttupler)item sep_boundarykeyvaluestitlevalues r _build_partzupload_docs._build_partws V=C&$'XF E%'*U1X55a %. MKrsu,  sA*A=-A=6A=cPd}d|jdz}|dz}|df}tj|j|}t ||j }t jj|}t j||} d|z} dj| | fS) z= Build up the MIME payload for the POST data z3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254s --asciis--rZ)r_z multipart/form-data; boundary=%sr) r functoolspartialrdmapitems itertoolschain from_iterabler-) clsdataboundaryr_ end_boundary end_itemsbuilder part_groupsparts body_items content_types r_build_multipartzupload_docs._build_multiparts I!99 #e+   ## OO% '4::<0 --k:__UI6 9HD xx #\11rct|d5}|j}ddd|jj}d|j t j j|fd}t|jdz|jz}t|jd}d|z}|j|\}} d|jz} |j| t j"t$j&j)|j\} } } }}}|s|s|rJ| dk(r t*j,j/| }n3| d k(r t*j,j1| }nt3d | zd } |j5|j7d | | }|j9d ||j9dt;t=||j9d||j?|jA||jI}|jJdk(r=d|jJd|jL} |j| t j"n|jJdk(rL|jOd}|d|j z}d|z} |j| t j"n< 8 NN+ST^ < NN?D 1 OO  IIdO     88s?01!((CC MM#sxx ( XX_{{:.H9DMMOK/(:C MM#sxx ( /0hhAC MM#syy )    (AFFHh / w  T||  MM#a&#)) ,  s$L2 B L?2L<?N)NNN)__name__ __module__ __qualname__DEFAULT_REPOSITORY descriptionr user_optionsboolean_optionsr sub_commandsr r'rErV staticmethodrd classmethodrxrQrrrrs9OK   -0I0I I J4L,,O $Z01L E$ #0&22*=0rr)__doc__base64r distutilsrdistutils.errorsrr+rr3rMrRrkrg http.clientr~ urllib.parser _importlibrwarningsrr rrrrrrsL &1  !30@0&@0r