o
    i&                     @   s  d dl mZmZmZmZmZmZ d dlmZ d dl	m
Z
 ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZ ddlmZ erdd dlmZ dd	l m!Z!m"Z"m#Z#m$Z$m%Z% dd
lm&Z& dddedee'ef fddZ(dddedee'ef defddZ)deee'e'f  deee  fddZ*dddedee'ef dedef fddZ+dddedee'ef defddZ,dddeeee'e-f  eee'e-f  f fddZ.d d!dee'ef fd"d#Z/d d$dee'ef fd%d&Z0d d'defd(d)Z1d*ed+ deee'e'f  fd,d-Z2d.e
d/e'dee
 fd0d1Z3	2d:d.e
d/e'd3ee' deee
  fd4d5Z4d.e
d/e'dee' fd6d7Z5d.e
d/e'dee- fd8d9Z6d2S );    )AnyDictListOptionalTupleTYPE_CHECKING)unquote)Element   )BlobAnalyticsLoggingBlobPropertiesBlobTypeContainerPropertiesContentSettingsCopyPropertiesCorsRuleImmutabilityPolicyLeasePropertiesMetricsObjectReplicationPolicyObjectReplicationRuleRetentionPolicyStaticWebsite)get_enum_value)deserialize_metadata)PipelineResponse)BlobItemInternalBlobTagsPageListStorageServicePropertiesStorageServiceStats)LocationModeresponser   objheadersc                 C   s.   z|j }W n ty   |}Y nw | |||S N)http_responseAttributeError)Z
cls_methodr"   r#   r$   Zdeserialized_response r(   V/home/app/Keep/.python/lib/python3.10/site-packages/azure/storage/blob/_deserialize.py&deserialize_pipeline_response_into_cls)   s   
r*   returnc                 C   sP   t dt| ||t| jjd|}d|v r&d|v r"|d |j_|S d |j_|S )N)metadata$object_replication_source_propertieszContent-Rangezx-ms-blob-content-md5r(   )r   r   deserialize_ors_policiesr&   r$   content_settingsZcontent_md5r"   r#   r$   Zblob_propertiesr(   r(   r)   deserialize_blob_properties1   s   

r1   policy_dictionaryc           	      C   s   | d u rd S dd |   D }i }|  D ]*\}}|dd d}|d }|d }||p1g ||< || t||d qdd	 |  D }|S )
Nc                 S   s&   i | ]\}}d |v r|dkr||qS )or-zx-ms-or-policy-idr(   ).0keyvalr(   r(   r)   
<dictcomp>F   s    z,deserialize_ors_policies.<locals>.<dictcomp>r3   r
   _r   )rule_idstatusc                 S   s   g | ]
\}}t ||d qS ))	policy_idrules)r   )r4   kvr(   r(   r)   
<listcomp>U   s    z,deserialize_ors_policies.<locals>.<listcomp>)itemssplitgetappendr   )	r2   Zor_policy_status_headersparsed_resultr5   r6   Zpolicy_and_rule_idsr;   r9   Zresult_listr(   r(   r)   r.   ?   s   r.   r!   c                 C   s   t | ||}||_| jj|fS r%   )r1   
propertiesr&   Zlocation_moder0   r(   r(   r)   deserialize_blob_streamZ   s   rF   c                 C   s"   t | ||}tdd|i|}|S )Nr,   r(   )r   r   )r"   r#   r$   r,   Zcontainer_propertiesr(   r(   r)    deserialize_container_propertiesd   s   rG   rangesr   c                 C   s<   g }g }| j rdd | j D }| jrdd | jD }||fS )Nc                 S      g | ]	}|j |jd qS startendrK   r4   br(   r(   r)   r?   u       z*get_page_ranges_result.<locals>.<listcomp>c                 S   rI   rJ   rK   rN   r(   r(   r)   r?   w   rP   )
page_rangeclear_range)rH   rQ   rR   r(   r(   r)   get_page_ranges_resultq   s   rS   	generatedr    c                 C   s0   d }d }| j d ur| j j}| j j}d||diS )Ngeo_replication)r:   last_sync_time)rU   r:   rV   )rT   r:   rV   r(   r(   r)   service_stats_deserialize{   s   
rW   r   c              	   C   s\   d }| j d urdd | j D }t| jt| jt| j|| jt| j	t
| jdS )Nc                 S   s   g | ]}t |qS r(   )r   _from_generated)r4   corsr(   r(   r)   r?          z2service_properties_deserialize.<locals>.<listcomp>)Zanalytics_logginghour_metricsminute_metricsrY   Ztarget_versiondelete_retention_policystatic_website)rY   r   rX   loggingr   r[   r\   Zdefault_service_versionr   r]   r   r^   )rT   Z	cors_listr(   r(   r)   service_properties_deserialize   s   





r`   r   c                 C   s  t  }| jjr| jjd urt| jj|_n| jj|_t| jj}t||_| jj	|_	| j
|_
| j|_| jj|_| jr>| jjni |_| jrH| jjnd |_t| |_t| |_| jj|_| jj|_t| |_| jj|_| jj|_| jj|_| jj |_ | jj!|_!| jj"|_"| jj#|_$| jj%|_%| jj&|_'| jj(|_(| jj)|_*| j+|_+| j,|_,| jj-|_-t.| j/|_0t1| j2|_3| jj4|_4t5| |_6| jj7|_8| j9|_9|S r%   ):r   nameencodedcontentr   r   rE   	blob_typer   etagZdeletedZsnapshotZ	is_sealedZis_append_blob_sealedr,   Zadditional_propertiesZ	encryptedZencrypted_metadatar   rX   Zleaser   copyZlast_modifiedZcreation_timer   r/   content_lengthsizeZblob_sequence_numberZpage_blob_sequence_numberZserver_encryptedZencryption_scopeZdeleted_timeZremaining_retention_daysZaccess_tierZ	blob_tierZrehydrate_priorityZaccess_tier_inferredZblob_tier_inferredZarchive_statusZaccess_tier_change_timeZblob_tier_change_time
version_idZis_current_versionZ	tag_count
parse_tagsZ	blob_tagstagsr.   Zobject_replication_metadatar-   Zlast_accessed_onr   Zimmutability_policyZ
legal_holdZhas_legal_holdZhas_versions_only)rT   Zblobrd   r(   r(   r)   'get_blob_properties_from_generated_code   sL   



















rl   generated_tagsr   c                 C   s   | rdd | j D }|S dS )a   Deserialize a list of BlobTag objects into a dict.

    :param Optional[BlobTags] generated_tags:
        A list containing the BlobTag objects from generated code.
    :return: A dictionary of the BlobTag objects.
    :rtype: Optional[Dict[str, str]]
    c                 S   s   i | ]}|j |jqS r(   )r5   value)r4   tr(   r(   r)   r7      rZ   zparse_tags.<locals>.<dictcomp>N)Zblob_tag_set)rm   Ztag_dictr(   r(   r)   rj      s   rj   elementra   c                 C   s
   |  |S r%   )find)rp   ra   r(   r(   r)   load_single_xml_node   s   
rr   Nwrapperc                 C   s,   | }|r	t | |}|d u rg S t||S r%   )rr   listfindall)rp   ra   rs   Zfound_elementr(   r(   r)   load_many_xml_nodes   s   
rv   c                 C   s"   |  |}|d u s|jsd S |jS r%   )rq   textrp   ra   noder(   r(   r)   load_xml_string   s   
rz   c                 C   s&   |  |}|d u s|jsd S t|jS r%   )rq   rw   intrx   r(   r(   r)   load_xml_int   s   

r|   r%   )7typingr   r   r   r   r   r   urllib.parser   xml.etree.ElementTreer	   Z_modelsr   r   r   r   r   r   r   r   r   r   r   r   r   r   Z_shared.modelsr   Z_shared.response_handlersr   Zazure.core.pipeliner   Z_generated.modelsr   r   r   r   r    r!   strr*   r1   r.   rF   rG   r{   rS   rW   r`   rl   rj   rr   rv   rz   r|   r(   r(   r(   r)   <module>   sb    @"&





2
")

