o ?cN@sddlmZGdddZdS))is_json_value_headerc@sFeZdZdZ dddZ    dddZdd Zd d Zd d ZdS)ShapeDocumenterNcCs2||_||_||_||_|durdii|_dSdS)Nspecial_shape_types) _service_name_operation_name_event_emitter_context)selfZ service_nameZoperation_nameZ event_emittercontextr n/private/var/folders/cw/wlscbxl13mj6wd668h7l9g9sllkg5j/T/pip-target-b31awkwq/lib/python/botocore/docs/shape.py__init__szShapeDocumenter.__init__Fc Cs|j}t|didrd}|j|vr|j|||ddS||jt|dk} t|dr3|jr3d}t|d||j ||||||| |d | r`|j j d |j d |j d |jd ||d t|d k} | r}|j j d |j d |j d |jd|d |dS)aTraverses 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. Z serializationZ eventstreamZ event_stream)nameis_document_typeZdocumentZdocument_shape_type_)historyrincludeexcludeis_top_level_param is_requiredzdocs..)sectionz.complete-sectionN) type_namegetattrgetrZdocument_recursive_shapeappendlenhasattrrZdocument_shape_defaultremit EVENT_NAMErrpop) r rshaperrrrrZ param_typerZat_overlying_method_sectionr r r traverse_and_document_shape#sF       z+ShapeDocumenter.traverse_and_document_shapecCsdddddd}|||S)Nz({...}|[...]|123|123.4|'string'|True|Nonez b'bytes'|filezStreamingBody()z EventStream() document_typejsonvalue_headerZstreaming_input_shapeZstreaming_output_shapeZeventstream_output_shape_get_value_for_special_type)r r#Zspecial_defaultsr r r _get_special_py_defaulth z'ShapeDocumenter._get_special_py_defaultcCsdddddd}|||S)Nz:ref:`document`zJSON serializablez"bytes or seekable file-like objectz:class:`.StreamingBody`z:class:`.EventStream`r%r()r r#Zspecial_type_namesr r r _get_special_py_type_namerr+z)ShapeDocumenter._get_special_py_type_namecCs`t|r|dSt|dr|jr|dS|jdD]\}}||vr-||kr-||SqdS)Nr'rr&r)rrrr items)r r#Zspecial_type_mapZ special_typeZ marked_shaper r r r)|s  z+ShapeDocumenter._get_value_for_special_type)N)NNNF) __name__ __module__ __qualname__r!rr$r*r,r)r r r r rs  E rN)Zbotocore.utilsrrr r r r s