
    ]h`9                     @   d dl mZmZ d dlmZmZmZmZmZm	Z	m
Z
 d dlmZmZmZ ddlmZmZmZmZmZmZmZ ddlmZmZmZ ddlmZ ddlmZmZ dd	l m!Z!m"Z"m#Z#m$Z$m%Z% e
rdd
l&m'Z'm(Z(m)Z) ddlm*Z*  e	d      Z+dZ,dZ-d Z.d$dZ/	 d$dddede0dee1ef   dddee1ef   de0dee2   dee2   dedee1ef   fdZ3	 	 	 d%dd de0dee1ef   dddee1ef   dedee2   dee0   dee2   dedee1ef   fd!Z4	 	 	 d%dd"de0dee1ef   dddee1ef   dedee2   dee0   dee2   dedee1ef   fd#Z5y)&    )SEEK_SETUnsupportedOperation)AnycastDictIOOptionalTypeVarTYPE_CHECKING)ResourceExistsErrorResourceModifiedErrorHttpResponseError   )_ENCRYPTION_PROTOCOL_V1_ENCRYPTION_PROTOCOL_V2encrypt_blobGCMBlobEncryptionStreamgenerate_blob_encryption_dataget_adjusted_upload_sizeget_blob_encryptor_and_padder)AppendPositionAccessConditionsBlockLookupListModifiedAccessConditions)StorageErrorCode)process_storage_errorreturn_response_headers)AppendBlobChunkUploaderBlockBlobChunkUploaderPageBlobChunkUploaderupload_data_chunksupload_substream_blocks)AppendBlobOperationsBlockBlobOperationsPageBlobOperations)StorageConfigurationBlobLeaseClienti  @ z@{0} should be a seekable file-like/io.IOBase type stream object.c                     | j                   j                  dd      }|j                  dd      }t        || j                  |       }t        j
                  |_        |)NzDThe condition specified using HTTP conditional header(s) is not met.z"The specified blob already exists.ConditionNotMetBlobAlreadyExists)messageresponseerror)r*   replacer   r+   r   blob_already_exists
error_code)r,   r*   overwrite_errors      h/var/www/core.comfia.cic-ware.com/crm/lib/python3.12/site-packages/azure/storage/blob/_upload_helpers.py_convert_mod_errorr2   -   s]    mm##N,.G oo/1DEG)O "2!E!EO
    Nc                 p    t        | j                  | j                  | j                  | j                  g      S N)anyif_modified_sinceif_unmodified_sinceif_none_matchif_match)modified_access_conditionskwargss     r1   _any_conditionsr=   :   s8    "44"66"00"++	  r3   clientr#   stream	overwriteencryption_optionsblob_settingsr%   headersvalidate_contentmax_concurrencylengthr<   returnc	                    	 |st        di |	s
d|	d   _        |}
|j                  d      |
t        |
|d         }
|	j	                  dd       }|	j	                  dd       }|	j	                  dd       }|	j	                  dd       }|d n|j
                  }|d n|j                  }|	j	                  d	d       }|	j	                  d
d       }|
|
|j                  k  r|j                  |xs d      }t        |t              st        d      |j                  d      rt        ||d   |d         \  }}||d<    | j                  d||
||t        ||
d|r|j                  nd ||||d|	}|r	 ||
|
       t!        t"        t$        t&        f   |      S |j(                  xso |xsk |j                  d      xsX |j*                  |j,                  k  xs= t/        |d      xr |j1                          xs t/        |d       xs t/        |d       }|r|}d\  }}|ro|j                  d      r^t3        |d   |d         \  }}}||d<   |d   t4        k(  rt7        ||d      \  }}|d   t8        k(  r|
}|t;        d      t=        ||      }t?        d| t@        ||j*                  |||||||d|	}n#tC        d| t@        ||j*                  |||||d	|	}tE        g g g       }||_#        t!        t"        t$        t&        f    | jH                  |f|t        |||r|j                  nd ||||d	|	      S # tJ        $ r6}	 tM        |       n# tN        $ r} |stQ        |         d } ~ ww xY wY d }~y d }~ww xY w)N*r;   keyversionblob_headersstandard_blob_tierblob_tags_stringimmutability_policy
legal_holdprogress_hookz"Blob data should be of type bytes.x-ms-meta-encryptiondatar   )bodycontent_lengthblob_http_headersrC   clsrD   data_stream_totalupload_stream_currenttierrN   immutability_policy_expiryimmutability_policy_moderP   requiredseekableseektell)NNTz3Generate encryption metadata failed. 'cek' is None.)serviceuploader_class
total_size
chunk_sizerE   r?   rD   rQ   	encryptorpadderrC   )	ra   rb   rc   rd   rE   r?   rD   rQ   rC   )	committeduncommittedlatest)	rV   rW   rD   rC   rZ   rN   r[   r\   rP    ))r=   r9   getr   popexpiry_timepolicy_modemax_single_put_sizeread
isinstancebytes	TypeErrorr   uploadr   valuer   r   strr   use_byte_buffermax_block_size min_large_block_upload_thresholdhasattrr^   r   r   r   r   
ValueErrorr   r    r   r!   r   ri   commit_block_listr   r   r   r2   )!r>   r?   r@   rA   rB   rC   rD   rE   rF   r<   adjusted_countrL   rZ   rN   rO   r[   r\   rP   rQ   dataencryption_datar+   use_original_upload_pathrc   re   rf   cekivencryption_metadata	block_idsblock_lookupr,   	mod_errors!                                    r1   upload_block_blobr   C   s0   z!:6!:ADF/0>""5)5N<V5nFXYbFcdNzz.$7zz.5!::&8$?$jj)>E-@-HTNaNmNm"+>+F4L_LkLk ZZd3


?D9 %>]=^=^+^;;v|,DdE* DEE!%%e,(4T;Me;TVhirVs(t%6E23$v}} -".+!1"0&'#'TZZT!1+E)A% H  nn=S#X11#0#@#@ $G$G 2 6 6z B$G((=+Y+YY$G FJ'A0A,A$G ''	$G 07vv/F+F	 	! $J *Iv!&8&<&<U&C/L&u-&y103,R, 7J23%i04KK(Ec2t(T%Iv &i04KK!/J{()^__4S&AF* 5%(77 /!1+# I 0 5!(77 /!1+ I 'BO'DcN$<F$<$<%*'-#-'A%=!% %  	  	!%($ 	"9-	 )s=   FL/ FL/ /	M.9MM)	M!MM!!M))M.r$   c	                    	 |st        di |	s
d|	d   _        ||dk  rt        d      |dz  dk7  rt        d| d      d }
|	j                  d      r|	j	                  d      }	 |j
                  }
|r,|j                  d	      rt        |d	   |d
         \  }}}||d<   |	j	                  dd       }|	j	                  dd       }t        t        t        t        f    | j                  dd|d |	j	                  dd       ||
t        |d|	      }|dk(  rt        t        t        t        f   |      S |r7|j                  d	      r&|d
   t        k(  rt        d      \  }}||	d<   ||	d<   t!        |d         |	d<   t        t        t        t        f   t#        d| t$        ||j&                  |||||d	|	      S # t        $ r |}
Y Uw xY w# t(        $ r6}	 t+        |       n# t,        $ r}|st/        |        d }~ww xY wY d }~y d }~ww xY w)NrI   r;   r   z3A content length must be specified for a Page Blob.i   zInvalid page blob size: z2. The size must be aligned to a 512-byte boundary.premium_page_blob_tierrJ   rK   rS   rN   rQ   rL   )rU   blob_content_lengthblob_sequence_numberrV   rN   rZ   rW   rC   Fre   rf   etag)r:   )	ra   rb   rc   rd   r?   rE   rD   rQ   rC   rj   )r=   r9   r{   rk   rl   ru   AttributeErrorr   r   r   rv   r   creater   r   r   r   r    r   max_page_sizer   r   r   r2   )r>   r@   rA   rB   rC   r?   rF   rD   rE   r<   rZ   r   r   r   r   rN   rQ   r+   re   rf   r,   r   s                         r1   upload_page_blobr      st   ?!:6!:ADF/0>>VaZRSSC<17x @P P Q Q::./%+ZZ0H%I".-33 "4"8"8"?'D"5)"9-(/$C_ 3BG./!::&8$?

?D9S#X 	) &!%$jj>-'	) 	) 	 Q;S#X11"4"8"8"?!),0GG$A#r5$Q!	6&/{##)x /GQYZ`Qa/b+,DcN$6 
%0$22+-'
% 
% 
 
	A " .-.X  	!%($ 	"9-	 )sb   A$G 'F: 3B=G 1BG :G	G G		G 	HG"!H"	G>+G99G>>HHr"   c	                 (   	 |dk(  ri S |	j                  dd       }
t        |	j                  dd       d       }|	j                  dd       }|	j                  dd       }	 |r | j                  dd|
||d|	 t        t        t
        t        f   t        d| t        ||j                  ||||||d
|	      S # t        $ r}|j                  j                  d	k7  r t        |d
      r,	 |j                  dt               n# t         $ r}||d }~ww xY w | j                  dd|
||d|	 t        t        t
        t        f   t        d| t        ||j                  ||||||d
|	      cY d }~S d }~ww xY w# t        $ r}t#        |       Y d }~y d }~ww xY w)Nr   rL   maxsize_condition)max_sizeappend_positionrN   rQ   )rU   rV   rC   rN   )
ra   rb   rc   rd   r?   rE   rD   !append_position_access_conditionsrQ   rC   i  rp   rj   )rl   r   r   r   r   rv   r   r    r   rx   r   r+   status_coderz   r_   r   r   r   )r>   r@   rA   rB   rC   r?   rF   rD   rE   r<   rL   append_conditionsrN   rQ   r,   excs                   r1   upload_append_blobr     s   <%Q;Izz.$7:ZZ 3T: " "::&8$?

?D90	 #$&2#%5	
  S#X(: )6!(77 /!12C+) )   ! 	~~))S0vv&)KK8,+ )S() FMM  ".!1	
  S#X(: )6!(77 /!12C+) )  #	:  %e$$%sm   E3 AE3 AB5 5	E0>&E+%C<;E+<	DDDAE+%E0&E3 +E00E3 3	F<FFr5   )NNN)6ior   r   typingr   r   r   r   r	   r
   r   azure.core.exceptionsr   r   r   _encryptionr   r   r   r   r   r   r   _generated.modelsr   r   r   _shared.modelsr   _shared.response_handlersr   r   _shared.uploadsr   r   r   r    r!   _generated.operationsr"   r#   r$   r%   r&   '_LARGE_BLOB_UPLOAD_MAX_READ_BUFFER_SIZE&_ERROR_VALUE_SHOULD_BE_SEEKABLE_STREAMr2   r=   boolrv   intr   r   r   rj   r3   r1   <module>r      si   . H H H _ _   
 - U  dd4/0O*9 ')k &
$ !F!FF F S#X	F
 *F #s(^F F c]F SMF F 
#s(^F` !'+%)K KK S#XK *	K
 #s(^K K SMK tnK c]K K 
#s(^Kj !'+%)H%"H%H% S#XH% *	H%
 #s(^H% H% SMH% tnH% c]H% H% 
#s(^H%r3   