
    g                     ~    S SK r S SKrS SKJr  S SKJr  S SKJr  S SK	J
r
  S SKJr  S SKJr  S SKJr   " S	 S
\5      rg)    N)DataNotFoundError)ServiceDocumenter)DocumentStructure)ServiceContext)Boto3ClientDocumenter)ResourceDocumenter)ServiceResourceDocumenterc                      ^  \ rS rSr\R
                  R                  \R
                  R                  \R                  5      S5      r
U 4S jrS rS rS rS rS rS	 rS
rU =r$ )r      examplesc                 :  > [         [        U ]  UUR                  S9  X l        U R                  R                  U5      U l        S U l        U R                  U R                  R                  5       ;   a   U R                  R                  U5      U l        / SQU l        g )N)service_namesession)titletable-of-contentsclient
paginatorswaitersservice-resource	resourcesr   )superr   __init___session_boto3_sessionr   _client_service_resource_service_nameget_available_resourcesresourcesections)selfr   r   	__class__s      %lib/third_party/boto3/docs/service.pyr   ServiceDocumenter.__init__   s    /% $$	 	0 	
 &**11,?!%!4!4!L!L!NN%)%8%8%A%A,%OD"	
    c                    [        U R                  U R                  SS9nU R                  UR	                  S5      5        U R                  UR	                  S5      5        U R                  UR	                  S5      5        U R                  UR	                  S5      5        U R                  UR	                  S5      5        U R                  (       a@  U R                  UR	                  S5      5        U R                  UR	                  S	5      5        U R                  UR	                  S
5      5        UR                  5       $ )zYDocuments an entire service.

:returns: The reStructured text of the documented service.
html)section_namestargetr   r   r   r   r   r   r   r   )r   r   r    r   get_sectiontable_of_contents
client_apipaginator_api
waiter_apir   _document_service_resource_document_resources_document_examplesflush_structure)r!   doc_structures     r#   document_service"ServiceDocumenter.document_service5   s   
 *dmm 	

=,,W56}889LMN11(;<=44\BC11)<=!!++))*<=?$$]%>%>{%KL 9 9* EF,,..r%   c                     S n U R                  U R                  5      n[        U R                  U5      R                  U5        g ! [         a     N2f = fN)get_examplesr   r   r   r   document_client)r!   sectionr   s      r#   r,   ServiceDocumenter.client_apiJ   sQ    	((););<H 	dllH5EEgN ! 		s   A 
AAc                 b    [        U R                  U R                  5      R                  U5        g r7   )r	   r   r   document_resource)r!   r:   s     r#   r/   ,ServiceDocumenter._document_service_resourceS   s'    !""DMM	33D3D4r%   c                    SnU R                   R                  S5      nUR                  U R                  S5      nU R                  R
                  R                  R
                  R                  nUS    H  nUS   U   nU R                  R                  R                  UU[        U R                  US   US S9S9nUR
                  R                  R                  n	/ n
U	 H  nU
R                  U5        M     U" U
SU R                  06n[!        XR                   5      R#                  UR%                  UR
                  R                  R&                  5      5        M     g )Nfoodata_loaderzresources-1r   )r   resource_json_definitionsservice_modelservice_waiter_model)resource_namesingle_resource_json_definitionservice_contextr   )r   get_componentload_service_modelr   r   metar   rC   r   resource_factoryload_from_definitionr   resource_modelidentifiersappendr   r   r=   add_new_sectionname)r!   r:   temp_identifier_valueloaderjson_resource_modelrC   rE   rM   resource_clsrN   args_r   s                r#   r0   %ServiceDocumenter._document_resourcesX   sF    %,,];$77/..33::??MM0=M0=mLN..??$$"/4B$2%)%7%72E'3)&3-1% % 
  '++::FFKD 12 !#T?$,,?H--)):):++HMM,H,H,M,MN*P) >r%   c                     [         R                  R                  [         R                  R                  U R                  U R
                  S-   5      5      $ )Nz.rst)ospathrealpathjoinEXAMPLE_PATHr   )r!   s    r#   _get_example_file#ServiceDocumenter._get_example_fileu   s?    wwGGLL**++f467 	7r%   c                    U R                  5       n[        R                  R                  U5      (       a  UR                  R                  S5        UR                  R                  5         UR                  S5        UR                  R                  5         UR                  R                  5         [        US5       nUR                  UR                  5       5        S S S 5        g g ! , (       d  f       g = f)NExamplesz'.. contents::
    :local:
    :depth: 1r)
r_   rZ   r[   isfilestyleh2new_linewriteopenread)r!   r:   examples_filefs       r#   r1   $ServiceDocumenter._document_examplesz   s    ..077>>-((MMZ(MM""$MMEFMM""$MM""$mS)Qaffh' *) ) *)s   ; C%%
C3)r   r   r   r    )__name__
__module____qualname____firstlineno__rZ   r[   r]   dirnameboto3__file__r^   r   r4   r,   r/   r0   r_   r1   __static_attributes____classcell__)r"   s   @r#   r   r      sR    77<< ?LL
./*O
P:7
	( 	(r%   r   )rZ   rs   botocore.exceptionsr   botocore.docs.servicer   BaseServiceDocumenterbotocore.docs.bcdoc.restdocr   boto3.utilsr   boto3.docs.clientr   boto3.docs.resourcer   r	    r%   r#   <module>r      s1    
  1 L 9 & 3 2 9i(- i(r%   