o
    !d<                     @   sD   d dl mZ d dlmZ dd Zdd Zdd ZG d	d
 d
eZdS )    )Shape)BaseCLIArgumentc                 K   s,   t |rt|}t|||dd| d< d S d S )Noutfile)response_keyoperation_modelsessionname)_has_streaming_output_get_streaming_argument_nameStreamingOutputArgument)Zargument_tabler   r   kwargsZstreaming_argument_name r   Lusr/lib/python3.10/site-packages/awscli/customizations/streamingoutputarg.pyadd_streaming_output_arg   s   r   c                 C      | j S N)Zhas_streaming_outputmodelr   r   r   r	      s   r	   c                 C   s   | j jd S )Npayload)Zoutput_shapeZserializationr   r   r   r   r
   "   s   r
   c                   @   sv   e Zd ZdZdZ	dddZedd Zedd	 Zed
d Z	e	j
dd Z	edd Zdd Zdd Zdd ZdS )r   i   z(Filename where the content will be savedNc                 C   sR   || _ tdddi| _|d u r| j}|| _|| _d | _|| _ d| _|| _|| _	d S )Nr   typestringT)
_namer   Zargument_modelBUFFER_SIZE_buffer_size_response_key_output_file	_required_operation_model_session)selfr   r   r   r   buffer_sizer   r   r   __init__+   s   
z StreamingOutputArgument.__init__c                 C   r   r   )r   r   r   r   r   cli_name<   s   z StreamingOutputArgument.cli_namec                 C   s   dS )Nr   r   r"   r   r   r   cli_type_nameC   s   z%StreamingOutputArgument.cli_type_namec                 C   r   r   r   r"   r   r   r   requiredG      z StreamingOutputArgument.requiredc                 C   s
   || _ d S r   r%   )r   valuer   r   r   r&   K   s   
c                 C   r   r   )HELPr"   r   r   r   documentationO   r'   z%StreamingOutputArgument.documentationc                 C   s   |j | j| j| jd d S )N)metavarhelp)add_argumentr   Zpy_namer)   )r   parserr   r   r   add_to_parserS   s   
z%StreamingOutputArgument.add_to_parserc                 C   s8   || _ | jjj }| jj}| jd||f | j d S )Nzafter-call.%s.%s)	r   r   Zservice_model
service_idZ	hyphenizer   r   register	save_file)r   
parametersr(   r0   Zoperation_namer   r   r   add_to_paramsW   s   z%StreamingOutputArgument.add_to_paramsc                 K   s|   | j |vrd S || j  }| j}t| jd}||}|r)|| ||}|sW d    n1 s3w   Y  || j = d S )Nwb)r   r   openr   readwrite)r   parsedr   bodyr    fpdatar   r   r   r2   ^   s   




z!StreamingOutputArgument.save_filer   )__name__
__module____qualname__r   r)   r!   propertyr#   r$   r&   setterr*   r/   r4   r2   r   r   r   r   r   &   s$    





r   N)Zbotocore.modelr   Zawscli.argumentsr   r   r	   r
   r   r   r   r   r   <module>   s   