
    PjN                     $    d dl mZ  G d d      Zy)    )is_json_value_headerc                   <    e Zd ZdZ	 ddZ	 	 	 	 d	dZd Zd Zd Zy)
ShapeDocumenter Nc                 T    || _         || _        || _        || _        |
di i| _        y y )Nspecial_shape_types)_service_name_operation_name_event_emitter_context)selfservice_nameoperation_nameevent_emittercontexts        K/root/$HERMES_HOME/venv/lib/python3.12/site-packages/botocore/docs/shape.py__init__zShapeDocumenter.__init__   s9     *-+?2B7DM     c           
         |j                   }t        |di       j                  d      rd}|j                  |v r| j	                  |||       y|j                  |j                         t        |      dk(  }	t        |d      r|j                  rd} t        | d| | j                        |||||||	|	       |	rG| j                  j                  d
| j                   d| j                   d| j                   d| |       t        |      dk(  }
|
rE| j                  j                  d
| j                   d| j                   d| j                   d|       |j                          y)a  Traverses and documents a shape

        Will take a self class and call its appropriate methods as a shape
        is traversed.

        :param section: The section to document.

        :param history: A list of the names of the shapes that have been
            traversed.

        :type include: Dictionary where keys are parameter names and
            values are the shapes of the parameter names.
        :param include: The parameter shapes to include in the documentation.

        :type exclude: List of the names of the parameters to exclude.
        :param exclude: The names of the parameters to exclude from
            documentation.

        :param name: The name of the shape.

        :param is_required: If the shape is a required member.
        serializationeventstreamevent_stream)name   is_document_typedocumentdocument_shape_type_)historyr   includeexcludeis_top_level_paramis_requiredzdocs..)section   z.complete-sectionN)	type_namegetattrgetr   document_recursive_shapeappendlenhasattrr   document_shape_defaultr   emit
EVENT_NAMEr	   r
   pop)r   r$   shaper   r   r    r   r"   
param_typer!   at_overlying_method_sections              r   traverse_and_document_shapez+ShapeDocumenter.traverse_and_document_shape#   s}   @ __
5/2.22=A'J:: ))'5t)DNN5::&!$W!2u01e6L6L'
G&zl3++
 #5' "##((DOO,Ad.@.@-A4CWCWBXXYZ^Y_`# )  +.g,!*;'*##((DOO,Ad.@.@-A4CWCWBXXij# )  KKMr   c                 6    dddddd}| j                  ||      S )Nz({...}|[...]|123|123.4|'string'|True|Nonezb'bytes'|filezStreamingBody()zEventStream()document_typejsonvalue_headerstreaming_input_shapestreaming_output_shapeeventstream_output_shape_get_value_for_special_type)r   r1   special_defaultss      r   _get_special_py_defaultz'ShapeDocumenter._get_special_py_defaulth   s/    I L%6&7(7
 //7GHHr   c                 6    dddddd}| j                  ||      S )Nz:ref:`document<document>`zJSON serializablez"bytes or seekable file-like objectz:class:`.StreamingBody`z:class:`.EventStream`r6   r<   )r   r1   special_type_namess      r   _get_special_py_type_namez)ShapeDocumenter._get_special_py_type_namer   s/    8 3%I&?(?
 //7IJJr   c                     t        |      r|d   S t        |d      r|j                  r|d   S | j                  d   j	                         D ]  \  }}||v s||k(  s||   c S  y )Nr8   r   r7   r   )r   r,   r   r   items)r   r1   special_type_mapspecial_typemarked_shapes        r   r=   z+ShapeDocumenter._get_value_for_special_type|   s~    &#$6775,-%2H2H#O44*.--!+

%'	:&L, //L(+L99	: r   )N)NNNF)	__name__
__module____qualname__r/   r   r4   r?   rB   r=    r   r   r   r      s9    J DH8 CJIKr   r   N)botocore.utilsr   r   rK   r   r   <module>rM      s   & 0q qr   