
    /h.                         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ZddlmZ ddlmZ d	d
lmZ d Z G d de          ZdS )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                 .    |                      dd          S )Nzutf-8surrogateescape)encode)ss    Q/var/www/html/venv/lib/python3.11/site-packages/setuptools/command/upload_docs.py_encoder      s    88G.///    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dS )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                 Z    t          | j        d u ot          j        dd                    S )Nzdistutils.commandsbuild_sphinx)groupname)bool
upload_dirr   entry_pointsselfs    r   
has_sphinxzupload_docs.has_sphinx/   s8    Ot# W%,@~VVV
 
 	
r   r   c                 J    t          j        |            d | _        d | _        d S )N)r
   initialize_optionsr   
target_dirr   s    r   r    zupload_docs.initialize_options7   s%    !$'''r   c                    t          j        d           t          j        |            | j        |                                 r5|                     d          }t          |j                  d         | _	        na|                     d          }t          j                            |j        d          | _	        n!|                     d           | j        | _	        |                     d| j	        z             d S )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	2 	2 	2 	%%%?"   I#99.II"&|'G"H"H"P227;;"$',,u/?"H"H---"oDO1DOCDDDDDr   c                    t          j        |d          }	 |                     | j                   t	          j        | j                  D ]\  }}}|| j        k    r|sd}t          || j        z            |D ]}t          j                            ||          }|t          | j                  d          
                    t          j        j                  }	t          j                            |	|          }
|                    ||
           	 |                                 d S # |                                 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_zipfileM   s.   ?8S11	KK(((%'WT_%=%= / /!dE4?**5*DD.tdo/EFFF! / /D7<<d33D#C$8$8$9$9:AA"'+NNH7<<$77DNN4....	/	/ NNHNNs   C9D' 'D=c                    t          j        dt                     |                                 D ]}|                     |           t          j                    }| j        j        	                                }t          j                            |d|z            }	 |                     |           |                     |           t          j        |           d S # t          j        |           w xY w)Nziupload_docs is deprecated and will be removed in a future version. Use tools like httpie or curl instead.z%s.zip)warningsr&   r   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47<<D99	#)))X&&&M'"""""FM'""""s   *C C2c              #   0  K   | \  }}d|z  }t          |t                    s|g}|D ]n}t          |t                    r|d|d         z  z  }|d         }nt          |          }|V  t          |          V  dV  |V  |r|dd          dk    rdV  od S )	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_partq   s      V=C&$'' 	XF 	 	E%'' '*U1X55a%..   MMMKKK rssu,,	 	r   c                 b   d}d|                     d          z   }|dz   }|df}t          j        | j        |          }t	          ||                                          }t          j                            |          }t          j        ||          }	d|z  }
d	                    |	          |
fS )	z=
        Build up the MIME payload for the POST data
        z3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254s   
--asciis   --rW   )r\   z multipart/form-data; boundary=%sr   )
r   	functoolspartialra   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9#e+ %(	#O%
 
 
 '4::<<00--k::_UI66
9HDxx
##\11r   c                 R   t          |d          5 }|                                }d d d            n# 1 swxY w Y   | j        j        }d|                                t
          j                            |          |fd}t          | j	        dz   | j
        z             }t          |                              d          }d|z   }|                     |          \  }}	d| j        z  }
|                     |
t           j                   t$          j                            | j                  \  }}}}}}|s|s|rJ |dk    r t*          j                            |          }n8|d	k    r t*          j                            |          }nt3          d
|z             d}	 |                                 |                    d|           |	}|                    d|           |                    dt;          t=          |                               |                    d|           |                                 |                     |           nJ# tB          j"        $ r8}|                     t;          |          t           j#                   Y d }~d S d }~ww xY w|$                                }|j%        dk    r3d|j%        d|j&        }
|                     |
t           j                   n|j%        dk    rT|'                    d          }|d|                                z  }d|z  }
|                     |
t           j                   n2d|j%        d|j&        }
|                     |
t           j#                   | j(        r%tS          d|                                d           d S d S )Nrb
doc_upload)z:actionr   content:rc   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readrL   r   rM   r+   r,   basenamer   usernamepasswordr   decoderu   
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<   fry   metarl   credentialsauthbodyctmsgschemanetlocurlparamsquery	fragmentsconnrt   er   locations                         r   rN   zupload_docs.upload_file   s   (D!! 	QffhhG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 )#MMOO((22G<
 
 dmc1DMABB(55<<WEE+%((..b.$/Bc38$$$ L!!$/22 	6VUI9%9	999V;--f55DDw;..v66DD !6!?@@@	LLNNNOOFC(((LNN><888NN+ST^^<<<NN?D111OOIIdOOOO| 	 	 	MM#a&&#),,,FFFFF	 8s???01!((CCMM#sx((((X__{{:..H9DMMOOK/(:CMM#sx((((  /0hhhACMM#sy))) 	0(AFFHHh/////	0 	0s%   266B1I J-JJN)__name__
__module____qualname__DEFAULT_REPOSITORYdescriptionr
   user_optionsboolean_optionsr   sub_commandsr    r'   rE   rS   staticmethodra   classmethodru   rN    r   r   r   r      s         9OK 
	*V-F	F	H	34L ,O
 
 
 $Z01L  
E E E"   # # #(   \& 2 2 [2$<0 <0 <0 <0 <0r   r   )__doc__base64r   	distutilsr   distutils.errorsr   r+   r   r3   rJ   rO   rh   rd   http.clientr{   urllib.parser   rG   
_importlibr   r}   r   r
   r   r   r   r   r   <module>r      s0    & % % % % %       1 1 1 1 1 1 				                      ! ! ! ! ! ! + + + + + +      0 0 0u0 u0 u0 u0 u0& u0 u0 u0 u0 u0r   