3 vh @ s d Z ddlmZ ddlmZ ddlmZ ddlZddlZddl Z ddl Z ddlZddlZddl Z ddlmZ ddlmZmZ ddlmZ d d lmZ dd ZG d d deZdS )zpupload_docs Implements a Distutils 'upload_docs' subcommand (upload documentation to PyPI's pythonhosted.org). )standard_b64encode)log)DistutilsOptionErrorN)six)http_clienturllib)iter_entry_points )uploadc C s t jr dnd}| jd|S )Nsurrogateescapestrictzutf-8)r PY3encode)serrors r !/usr/lib/python3.6/upload_docs.py_encode s r c @ s e Zd ZdZdZdddej fddgZejZdd Zd efgZ dd Z dd Zdd Zdd Z edd Zedd Zdd ZdS )upload_docszhttps://pypi.python.org/pypi/zUpload documentation to PyPIzrepository=rzurl of repository [default: %s] show-responseN&display full response text from serverupload-dir=directory to uploadc C s$ | j d kr xtddD ]}dS W d S )Nzdistutils.commandsbuild_sphinxT) upload_dirr )selfZepr r r has_sphinx/ s zupload_docs.has_sphinxr c C s t j| d | _d | _d S )N)r initialize_optionsr target_dir)r r r r r 6 s zupload_docs.initialize_optionsc C s t j| | jd krN| j r0| jd}|j| _q`| jd}tjj |j d| _n| jd | j| _d| jkrtt jd | jd| j d S )Nr buildZdocsr zpypi.python.orgz3Upload_docs command is deprecated. Use RTD instead.zUsing upload directory %s)r finalize_optionsr r Zget_finalized_commandZbuilder_target_dirr ospathjoinZ build_baseZensure_dirname repositoryr warnannounce)r r r r r r r! ; s zupload_docs.finalize_optionsc C s t j|d}z| j| j xtj| jD ]~\}}}|| jkrT| rTd}t|| j xP|D ]H}tjj||}|t | jd j tjj} tjj| |} |j|| qZW q(W W d |j X d S )Nwz'no files found in upload directory '%s')zipfileZZipFileZmkpathr r" walkr r# r$ lenlstripsepwriteclose)r filenamezip_filerootdirsfilesZtmplnameZfullZrelativedestr r r create_zipfileK s zupload_docs.create_zipfilec C sl x| j D ]}| j| q W tj }| jjj }tjj |d| }z| j | | j| W d tj | X d S )Nz%s.zip)Zget_sub_commandsZrun_commandtempfileZmkdtempdistributionmetadataget_namer" r# r$ r7 upload_fileshutilZrmtree)r Zcmd_nameZtmp_dirr5 r1 r r r run[ s zupload_docs.runc c s | \}}d| }t |ts |g}xn|D ]f}t |trN|d|d 7 }|d }nt|}|V t|V dV |V |r&|dd dkr&dV q&W