U
    e h.                     @   s  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 dl	m
Z
 ejddrvejd Zed	e Zed
 Znee jd d
 ZdZdZdd ee
ejD Zdd Zdd Zdd Zdd Zd)ddZdd Zdd Zdd  Zd!d" Z d#d$ Z!d%d& Z"d'd( Z#dS )*    N)Path)AVAILABLE_LOCALES)	PROVIDERS)BaseProviderZREADTHEDOCSFZREADTHEDOCS_VERSIONz@/home/docs/checkouts/readthedocs.org/user_builds/faker/checkoutsZdocs   z#*=-~zk
.. autoclass:: {provider_class}
   :members: {provider_methods}
   :undoc-members:
   :show-inheritance:

c                 C   s   g | ]\}}| d s|qS _)
startswith.0namemethod r   ;/tmp/pip-unpacked-wheel-cwn3b9ao/faker/sphinx/documentor.py
<listcomp>   s    
 r   c              	   C   sh   z*|  dd\}}t|}t||d }W n ttfk
rD   Y dS X ddd t|tj	D S d S )N.    z, c                 S   s&   g | ]\}}| d s|tkr|qS r   )r	   BASE_PROVIDER_METHOD_NAMESr
   r   r   r   r   *   s   
 z)_get_provider_methods.<locals>.<listcomp>)
rsplit	importlibimport_modulegetattrModuleNotFoundErrorAttributeErrorjoininspect
getmembers
isfunction)provider_classZprovider_module_nameZobj_nameZprovider_moduleproviderr   r   r   _get_provider_methods!   s    
r!   c              
   C   sp   g }t D ]b}z&| d|  }t|}t|d}W n ttfk
rN   Y qY qX |j d}|||f q|S )Nr   ZProvider	.Provider)STANDARD_PROVIDER_NAMESr   r   r   r   r   
__module__append)localeinfoprovider_nameZlocale_module_pathZlocale_moduler    r   r   r   r   _get_localized_provider_info2   s    

r)   c                 C   s   |  |dS )Nzutf-8)writeencode)fhsr   r   r   _writeA   s    r.   c                 C   s   t | d d S )Nz:github_url: hide

r.   r,   r   r   r   _hide_edit_on_githubE   s    r1   r   c                 C   s   t |tr|dk s|dkr"td|dkrNt| t|d  t|  t| d t| | d t| t|d  t|  t| d d S )Nr      z&`level` must be an integer from 1 to 5r   


)
isinstanceint
ValueErrorr.   SECTION_ADORNMENTSlen)r,   titlelevelr   r   r   _write_titleI   s    
r<   c                 C   s   t | d t | d d S )Nz*.. include:: ../includes/substitutions.rstr4   r/   r0   r   r   r   _write_includesT   s    
r=   c               	   C   sj   t d dR} t|  t| d t| d t| d t| d tD ]}t| d| d qDW 5 Q R X d S )	Nzproviders.rstwbzStandard Providers.. toctree::
   :maxdepth: 2

z   providers/baseprovider
z   providers/r3   )	DOCS_ROOTopenr1   r<   r.   r#   )r,   r(   r   r   r   _write_standard_provider_indexY   s    



rC   c               	   C   sh   t d jddd t d d d:} t|  t| d t|  t| tjdd	t
d	 W 5 Q R X d S )
N	providersTparentsexist_okzbaseprovider.rstr>   z``faker.providers``zfaker.providers.BaseProvider,r   provider_methods)rA   mkdirrB   r1   r<   r=   r.   PROVIDER_AUTODOC_TEMPLATEformatr   r   r0   r   r   r   _write_base_provider_docsd   s    
rN   c               
   C   s   t d jddd tD ]p} t d |  d dN}|  d}t|}t| t|d|  d t| t|t	j
||d W 5 Q R X qd S )	NrD   TrE   .rstr>   r"   ``rI   )rA   rK   r#   rB   r!   r1   r<   r=   r.   rL   rM   )r(   r,   r   rJ   r   r   r   _write_standard_provider_docss   s    
rQ   c               	   C   s`   t d dH} t|  t| d t| d t| d tD ]}t| d| d q:W 5 Q R X d S )Nzlocales.rstr>   zLocalized Providersr?   r@   z   locales/r3   )rA   rB   r1   r<   r.   r   )r,   r&   r   r   r   _write_localized_provider_index   s    


rR   c               
   C   s   t d jddd tD ]} t| }t d |  d df}t| t|d|   t| |D ]:\}}t|}t|d| ddd	 t	|t
j||d
 q`W 5 Q R X qd S )NZlocalesTrE   rO   r>   zLocale rP   r   )r;   rI   )rA   rK   r   r)   rB   r1   r<   r=   r!   r.   rL   rM   )r&   r'   r,   r   Zstandard_provider_namerJ   r   r   r   _write_localized_provider_docs   s"    rS   c                   C   s0   t jddd t  t  t  t  t  d S )NTrE   )rA   rK   rC   rN   rQ   rR   rS   r   r   r   r   write_provider_docs   s    rT   )r   )$r   r   ospathlibr   Zfaker.configr   r   r#   Zfaker.providersr   environgetversionHOMErA   __file__resolverF   r8   rL   r   r   r   r!   r)   r.   r1   r<   r=   rC   rN   rQ   rR   rS   rT   r   r   r   r   <module>   s8   



