
    N                     $    S SK Jr   " S S5      rg)    )is_json_value_headerc                   H    \ rS rSrSr S
S jr    SS jrS rS rS r	S	r
g)ShapeDocumenter    Nc                 N    Xl         X l        X0l        X@l        Uc
  S0 0U l        g g )Nspecial_shape_types)_service_name_operation_name_event_emitter_context)selfservice_nameoperation_nameevent_emittercontexts        &lib/third_party/botocore/docs/shape.py__init__ShapeDocumenter.__init__   s1     *-+?2B7DM     c                    UR                   n[        US0 5      R                  S5      (       a  SnUR                  U;   a  U R	                  XUS9  gUR                  UR                  5        [        U5      S:H  n	[        US5      (       a  UR                  (       a  Sn[        U SU 3U R                  5      " UUUUUUU	US	9  U	(       aD  U R                  R                  S
U R                   SU R                   SU R                   SU 3US9  [        U5      S:H  n
U
(       aB  U R                  R                  S
U R                   SU R                   SU R                   S3US9  UR                  5         g)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_shape+ShapeDocumenter.traverse_and_document_shape#   s}   @ __
5/2.22=AA'J:: ))'t)DNN5::&!$W!2u011e6L6L'
&zl3++
 #5' "##((DOO,Ad.@.@-A4CWCWBXXYZ^Y_`# )  +.g,!*;'*##((DOO,Ad.@.@-A4CWCWBXXij# )  KKMr   c                 4    SSSSSS.nU R                  X5      $ )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   r3   special_defaultss      r   _get_special_py_default'ShapeDocumenter._get_special_py_defaulth   s,    I L%6&7(7
 //HHr   c                 4    SSSSSS.nU R                  X5      $ )Nz:ref:`document<document>`zJSON serializablez"bytes or seekable file-like objectz:class:`.StreamingBody`z:class:`.EventStream`r9   r?   )r   r3   special_type_namess      r   _get_special_py_type_name)ShapeDocumenter._get_special_py_type_namer   s,    8 3%I&?(?
 //JJr   c                     [        U5      (       a  US   $ [        US5      (       a  UR                  (       a  US   $ U R                  S   R	                  5        H  u  p4X2;   d  M  X:X  d  M  X#   s  $    g )Nr;   r   r:   r	   )r   r.   r   r   items)r   r3   special_type_mapspecial_typemarked_shapes        r   r@   +ShapeDocumenter._get_value_for_special_type|   s{    &&#$6775,--%2H2H#O44*.--!+

%'+&L /(+99+ r   )r   r   r   r
   )N)NNNF)__name__
__module____qualname____firstlineno__r1   r   r6   rB   rF   r@   __static_attributes__ r   r   r   r      s9    J DH8 CJIKr   r   N)botocore.utilsr   r   rS   r   r   <module>rU      s   & 0q qr   