o
    i                    @   s~  d Z ddlmZ ddlmZmZmZmZmZ ddlm	Z	m
Z
 ddlmZmZmZ ddlmZ ddlT dd	lZdd	lZdd	lZdd	lZdd
lmZ eeZG dd deZG dd deZG dd deZdd fddZdd Z G dd deZ!G dd de!Z"G dd de"Z#G dd de!Z$G dd  d e!Z%G d!d" d"e"Z&G d#d$ d$e"Z'G d%d& d&e!Z(G d'd( d(e!Z)G d)d* d*eZ*G d+d, d,eZ+G d-d. d.eZ,G d/d0 d0e!Z-G d1d2 d2e!Z.G d3d4 d4e!Z/G d5d6 d6e!Z0G d7d8 d8eZ1d9Z2d:Z3d;Z4d<Z5G d=d> d>e!Z6G d?d@ d@eZ7G dAdB dBe!Z8G dCdD dDeZ9G dEdF dFe!Z:G dGdH dHe!Z;d:Z<d;Z=d<Z>dIZ?dJZ@dKZAdLZBdMZCdNZDdOZEdPZFdQZGdRZHdSZIdTZJdUZKG dVdW dWe!ZLG dXdY dYe!ZMG dZd[ d[eZNG d\d] d]e!eNZOG d^d_ d_eZPG d`da daeZQG dbdc dceZRG ddde deeZSG dfdg dgeZTG dhdi die!eQZUG djdk dke!eTZVG dldm dmeZWG dndo doe!eWZXG dpdq dqeZYG drds dseZZG dtdu dueZ[G dvdw dweZ\G dxdy dyeZ]G dzd{ d{eZ^G d|d} d}eZ_G d~d de!e_Z`G dd deZaG dd deZbG dd deZcG dd deZdG dd deZeG dd deZfG dd deZgG dd de!egZhG dd deZiG dd deZjG dd de!ejZkG dd deZlG dd deZmG dd deZnG dd deZoG dd deZpG dd deZqG dd deZrG dd deZsG dd de!emZtG dd de!emZuG dd de!enZvG dd de!eqZwG dd de!esZxG dd de!ZyG dd de!ZzdZ{dZ|G dd deZ}G dd deZ~G dd de!e}ZdZdZdZdZG dd deZG dd de!eZG ddĄ de!ZG ddƄ deZG ddȄ deZdZdZG dd̄ deZG dd΄ de!eZG ddЄ de!ZG dd҄ de!ZG ddԄ deZG ddք deZG dd؄ de!eZG ddڄ de!eZG dd܄ deZG ddބ de!eZdZdZdZdZdZG dd deZG dd de!ZG dd de!ZdZdZdZdZdZdZdZdZdZdZdZG dd deZG dd deZG dd deZG dd deZG dd deZG dd  d eZG dd deZG dd de!eZG dd de!ZdZdIZdZG d	d
 d
eZG dd deZG dd deZG dd de!ZG dd de!ZG dd deZG dd deZG dd deZG dd de!ZG dd de!ZG dd de!ZG dd  d e!ZG d!d" d"e!ZG d#d$ d$e!ZG d%d& d&e!ZG d'd( d(e!ZG d)d* d*eZG d+d, d,eZG d-d. d.e!ZG d/d0 d0eZG d1d2 d2eZG d3d4 d4e!ZG d5d6 d6e!ZG d7d8 d8eZG d9d: d:eZG d;d< d<eZG d=d> d>eZG d?d@ d@eZG dAdB dBe!ZG dCdD dDeZG dEdF dFeZG dGdH dHeZG dIdJ dJeZG dKdL dLe!ZG dMdN dNe!ZG dOdP dPe!ZG dQdR dRe!ZG dSdT dTe!ZG dUdV dVe!ZG dWdX dXe!ZG dYdZ dZe!ZG d[d\ d\eZG d]d^ d^e!ZG d_d` d`e!ZG dadb dbeZG dcdd dde!ZG dedf dfe!ZG dgdh dhe!ZG didj dje!ZG dkdl dle!ZG dmdn dne!ZG dodp dpe!ZG dqdr dre!ZG dsdt dte!ZG dudv dve!ZG dwdx dxe!ZG dydz dze!ZG d{d| d|e!ZG d}d| d|e!ZG d~d de!ZG dd de!ZG dd de!ZG dd de!ZG dd de!ZG dd deZG dd deZG dd de!ZG dd de!ZG dd de!ZG dd de!ZG dd de!ZG dd de!ZG dd de!ZG dd de!Zd	S (  um   
oss2.models
~~~~~~~~~~

该模块包含Python SDK API接口所需要的输入参数以及返回值类型。
   )utils)http_to_unixtimemake_progress_adaptermake_crc_adapterb64encode_as_stringb64decode_from_string)ClientErrorInconsistentError)
urlunquote	to_stringurlquote)SelectResponseAdapter)*    N)CaseInsensitiveDictc                   @      e Zd ZdZdddZdS )PartInfouA  表示分片信息的文件。

    该文件既用于 :func:`list_parts <oss2.Bucket.list_parts>` 的输出，也用于 :func:`complete_multipart_upload
    <oss2.Bucket.complete_multipart_upload>` 的输入。

    :param int part_number: 分片号
    :param str etag: 分片的ETag
    :param int size: 分片的大小。用在 `list_parts` 的结果里，也用与分片对象做crc combine得到整个对象crc64值
    :param int last_modified: 该分片最后修改的时间戳，类型为int。参考 :ref:`unix_time`
    :param int part_crc: 该分片的crc64值
    Nc                 C   "   || _ || _|| _|| _|| _d S N)part_numberetagsizelast_modifiedpart_crc)selfr   r   r   r   r    r   ?/home/ubuntu/.local/lib/python3.10/site-packages/oss2/models.py__init__$   
   
zPartInfo.__init__NNN__name__
__module____qualname____doc__r   r   r   r   r   r          r   c                   @   s0   e Zd Zd
ddZdddZdd Zdd	 ZdS )ContentCryptoMaterialNc                 C   s0   || _ |j| _|| _|| _|| _|| _d| _d S NF)cipheralgcek_algwrap_algencrypted_keyencrypted_ivmat_desc
deprecated)r   r(   r+   r,   r-   r.   r   r   r   r   -   s   
zContentCryptoMaterial.__init__c                 C   s   t |ts	t|}d|v r|d |t< |d= d|v r#|d |t< |d= t| j|t< t| j|t< | j	|t
< | j|t< |rQ|jrQ|jrQt|j|t< t|j|t< | jr\t| j|t< |S )Nzcontent-md5content-length)
isinstancer   2OSS_CLIENT_SIDE_ENCRYPTION_UNENCRYPTED_CONTENT_MD55OSS_CLIENT_SIDE_ENCRYPTION_UNENCRYPTED_CONTENT_LENGTHr   r,   OSS_CLIENT_SIDE_ENCRYPTION_KEYr-    OSS_CLIENT_SIDE_ENCRYPTION_STARTr*   "OSS_CLIENT_SIDE_ENCRYPTION_CEK_ALGr+   #OSS_CLIENT_SIDE_ENCRYPTION_WRAP_ALG	data_size	part_sizestr$OSS_CLIENT_SIDE_ENCRYPTION_DATA_SIZE$OSS_CLIENT_SIDE_ENCRYPTION_PART_SIZEr.   jsondumps"OSS_CLIENT_SIDE_ENCRYTPION_MATDESC)r   headersmultipart_upload_contextr   r   r   to_object_meta6   s$   


z$ContentCryptoMaterial.to_object_metac                 C   sr  t |ts	t|}t|v rd| _| jrRt|t}t|t}t|t}t|t}t|t}|dkr9|| _	|| _
t}n|r@t|| _	|rGt|| _
t}|tjkrQtj}n't|t}t|t}|rct|| _	|rjt|| _
t|t}t|t}t|t}|rt|| _|r|| jkrtd|| j d}t|| |r|| jkrtd|| j d}t|| || _|| _d S )NTkmszQCEK algorithm or is inconsistent, object meta: cek_alg:{0}, material: cek_alg:{1}z4Data encryption/decryption algorithm is inconsistentzTWRAP algorithm or is inconsistent, object meta: wrap_alg:{0}, material: wrap_alg:{1}z8Envelope encryption/decryption algorithm is inconsistent)r1   r   %DEPRECATED_CLIENT_SIDE_ENCRYPTION_KEYr/   _hget'DEPRECATED_CLIENT_SIDE_ENCRYPTION_START)DEPRECATED_CLIENT_SIDE_ENCRYPTION_CEK_ALG*DEPRECATED_CLIENT_SIDE_ENCRYPTION_WRAP_ALG)DEPRECATED_CLIENT_SIDE_ENCRYTPION_MATDESCr,   r-   KMS_ALI_WRAP_ALGORITHMr   #RSA_NONE_OAEPWithSHA1AndMGF1Paddingr   AES_GCMAES_CTRr4   r5   r6   r7   r?   r=   loadsr.   r*   loggererrorformatr	   r+   )r   r@   undecode_encrypted_keyundecode_encrypted_ivr*   r+   r.   err_msgr   r   r   from_object_metaP   s^   




















z&ContentCryptoMaterial.from_object_metac                 C   s    | j s| js| js| jsdS dS )NTF)r,   r-   r*   r+   r   r   r   r   is_unencrypted   s   z$ContentCryptoMaterial.is_unencryptedr   NN)r!   r"   r#   r   rB   rU   rW   r   r   r   r   r&   ,   s
    

	7r&   c                   @      e Zd ZdddZdS )MultipartUploadCryptoContextNc                 C   s   || _ || _|| _d S r   )content_crypto_materialr8   r9   )r   r8   r9   r[   r   r   r   r         
z%MultipartUploadCryptoContext.__init__r   r!   r"   r#   r   r   r   r   r   rZ          rZ   c                 C      | S r   r   xr   r   r   <lambda>   s    rb   c                 C   s   || v r
|| | S d S r   r   )r@   key	converterr   r   r   rE      s   rE   c                 C   s   t | ddd S )Nr   c                 S   s
   |  dS )N")stripr`   r   r   r   rb      s   
 z_get_etag.<locals>.<lambda>)rE   )r@   r   r   r   	_get_etag      rg   c                   @      e Zd Zdd ZdS )RequestResultc                 C   s@   || _ |j| _|j| _|j| _t| jd| _t| jdt| _d S )Nzx-oss-version-idzx-oss-delete-marker)respstatusr@   
request_idrE   	versionidbooldelete_markerr   rk   r   r   r   r      s   zRequestResult.__init__Nr]   r   r   r   r   rj          rj   c                       s(   e Zd Z fddZedd Z  ZS )HeadObjectResultc                    sl   t t| | t| jt| _t| jdt| _t| jd| _	t| jdt
| _t| j| _t| jdt
| _d S )Nlast-modifiedzcontent-typer0   zx-oss-hash-crc64ecma)superrs   r   rE   r@   OSS_OBJECT_TYPEobject_typer   r   content_typeintcontent_lengthrg   r   _server_crcrq   	__class__r   r   r      s   zHeadObjectResult.__init__c                 C   s   | j S r   )r{   rV   r   r   r   
server_crc   s   zHeadObjectResult.server_crc)r!   r"   r#   r   propertyr~   __classcell__r   r   r|   r   rs      s    rs   c                          e Zd Z fddZ  ZS )GetSelectObjectMetaResultc                    sT   t t| | t|d d d| _| jD ]}q| jj| _| jj| _| j| _| j| _d S r'   )	ru   r   r   r   select_resprowscsv_rowssplits
csv_splits)r   rk   datar|   r   r   r      s   


z"GetSelectObjectMetaResult.__init__r!   r"   r#   r   r   r   r   r|   r   r          r   c                       r   )GetObjectMetaResultc                    s@   t t| | t| jdt| _t| jdt| _t	| j| _
d S )Nrt   r0   )ru   r   r   rE   r@   r   r   ry   rz   rg   r   rq   r|   r   r   r      s   zGetObjectMetaResult.__init__r   r   r   r|   r   r      r   r   c                       r   )GetSymlinkResultc                    s&   t t| | tt| jt| _d S r   )ru   r   r   r
   rE   r@   OSS_SYMLINK_TARGET
target_keyrq   r|   r   r   r      s   zGetSymlinkResult.__init__r   r   r   r|   r   r      r   r   c                       s`   e Zd Zd fdd	Zedd Zddd	Zd
d Zdd Zdd Z	dd Z
edd Z  ZS )GetObjectResultNFr   c                    s  t t| | || _|| _t|jd| _| jr| | j}|r*t	| j
|| j| _n| j
| _| jr9t| j|d| _| jrt| jj| jj}||j | rVtd d S | j}|j| jjkrytd | j|j}|ru| j|}ntd||j}	|jr|jtkrt||j d}
nt||j }
n||j }d}| jr|!|d |d \}}|j"|}t##|j}|jr|$|	|
|  n|%|	|| |&| j||| _d S t'|jv st(|jv rtd	 d S d S )
NzContent-Range)discardzCThe object is not encrypted, use crypto provider is not recommendedzGThe material description of the object and the provider is inconsistentzMThere is no encryption materials match the material description of the objectTr   r   zjUsing Bucket to get an encrypted object will return raw data, please confirm if you really want to do this))ru   r   r   _GetObjectResult__crc_enabled!_GetObjectResult__crypto_providerrE   r@   content_range_parse_range_strr   rk   rz   streamr   r&   r(   r+   rU   rW   rO   infor.   warnget_encryption_materialsreset_encryption_materialsr   decrypt_encrypted_keyr,   r/   rJ   ry   decrypt_encrypted_ivr-   adjust_rangecalc_offsetcopyinitial_by_counter
initializemake_decrypt_adapterr4   rD   )r   rk   progress_callbackcrc_enabledcrypto_providerr   
byte_ranger[   encryption_materials	plain_keyplain_counterplain_ivoffsetstartendr(   r|   r   r   r      sf   

zGetObjectResult.__init__c                 C   s<   |  ddd  ddd }| dd\}}t|t|fS )N    r   /r   -)splitry   )r   
range_datarange_start	range_endr   r   r   r   1  s   z GetObjectResult._parse_range_strc                 C   s   | j |S r   )r   read)r   amtr   r   r   r   8     zGetObjectResult.readc                 C      | j j  d S r   rk   responsecloserV   r   r   r   r   ;  rh   zGetObjectResult.closec                 C   
   t | jS r   )iterr   rV   r   r   r   __iter__>     
zGetObjectResult.__iter__c                 C   r_   r   r   rV   r   r   r   	__enter__A     zGetObjectResult.__enter__c                 C      |    d S r   r   r   exc_typeexc_valexc_tbr   r   r   __exit__D  r   zGetObjectResult.__exit__c                 C   s   | j r| jjS d S r   )r   r   crcrV   r   r   r   
client_crcG  s   zGetObjectResult.client_crc)NFNr   r   )r!   r"   r#   r   staticmethodr   r   r   r   r   r   r   r   r   r   r   r|   r   r      s    >

r   c                       sN   e Zd Zd fdd	Zdd Zdd Zd	d
 Zdd Zdd Zdd Z	  Z
S )SelectObjectResultNFc                    s.   t t| | || _t||d | jd| _d S )N)
enable_crc)ru   r   r    _SelectObjectResult__crc_enabledr   r   )r   rk   r   r   r|   r   r   r   O  s   zSelectObjectResult.__init__c                 C   
   | j  S r   )r   r   rV   r   r   r   r   T  r   zSelectObjectResult.readc                 C   r   r   r   rV   r   r   r   r   W  rh   zSelectObjectResult.closec                 C   r   r   )r   r   rV   r   r   r   r   Z  r   zSelectObjectResult.__iter__c                 C   r   r   )r   nextrV   r   r   r   __next__]  r   zSelectObjectResult.__next__c                 C   r_   r   r   rV   r   r   r   r   `  r   zSelectObjectResult.__enter__c                 C   r   r   r   r   r   r   r   r   c  r   zSelectObjectResult.__exit__r'   )r!   r"   r#   r   r   r   r   r   r   r   r   r   r   r|   r   r   N  s    r   c                       r   )PutObjectResultc                    s0   t t| | t| j| _t|jtt| _	d S r   )
ru   r   r   rg   r@   r   rE   OSS_HASH_CRC64_ECMAry   r   rq   r|   r   r   r   g  s   zPutObjectResult.__init__r   r   r   r|   r   r   f  r   r   c                       r   )AppendObjectResultc                    s@   t t| | t| j| _t|jtt| _	t|jt
t| _d S r   )ru   r   r   rg   r@   r   rE   r   ry   r   OSS_NEXT_APPEND_POSITIONnext_positionrq   r|   r   r   r   r  s   zAppendObjectResult.__init__r   r   r   r|   r   r   q  r   r   c                   @   rY   )BatchDeleteObjectVersionNc                 C   s   |pd| _ |pd| _d S N )rc   rn   )r   rc   rn   r   r   r   r     s   
z!BatchDeleteObjectVersion.__init__rX   r]   r   r   r   r   r   ~  r^   r   c                   @   s&   e Zd ZdddZdd Zdd ZdS )	BatchDeleteObjectVersionListNc                 C      |pg | _ d S r   )object_version_list)r   r   r   r   r   r        z%BatchDeleteObjectVersionList.__init__c                 C   s   | j | d S r   )r   append)r   object_versionr   r   r   r     rh   z#BatchDeleteObjectVersionList.appendc                 C   r   r   )lenr   rV   r   r   r   r     r   z BatchDeleteObjectVersionList.lenr   )r!   r"   r#   r   r   r   r   r   r   r   r     s    
r   c                   @   rY   )BatchDeleteObjectVersionResultNc                 C   s(   || _ |pd| _|pd| _|pd| _d S Nr   F)rc   rn   rp   delete_marker_versionid)r   rc   rn   rp   r   r   r   r   r     s   

z'BatchDeleteObjectVersionResult.__init__r   r]   r   r   r   r   r     r^   r   c                       r   )BatchDeleteObjectsResultc                        t t| | g | _g | _d S r   )ru   r   r   deleted_keysdelete_versionsrq   r|   r   r   r     s   
z!BatchDeleteObjectsResult.__init__r   r   r   r|   r   r     r   r   c                       r   )InitMultipartUploadResultc                       t t| | d | _d S r   )ru   r   r   	upload_idrq   r|   r   r   r        
z"InitMultipartUploadResult.__init__r   r   r   r|   r   r     r   r   c                       r   )ListObjectsResultc                    ,   t t| | d| _d| _g | _g | _d S NFr   )ru   r   r   is_truncatednext_markerobject_listprefix_listrq   r|   r   r   r     
   
zListObjectsResult.__init__r   r   r   r|   r   r     r   r   c                       r   )ListObjectsV2Resultc                    r   r   )ru   r   r   r   next_continuation_tokenr   r   rq   r|   r   r   r     r   zListObjectsV2Result.__init__r   r   r   r|   r   r     r   r   c                   @      e Zd ZdddZdd ZdS )SimplifiedObjectInfoNc	           	      C   4   || _ || _|| _|| _|| _|| _|| _|| _d S r   )rc   r   r   typer   storage_classownerrestore_info)	r   rc   r   r   r   r   r   r   r   r   r   r   r        
zSimplifiedObjectInfo.__init__c                 C   
   | j du S )u?   如果是公共前缀，返回True；是文件，则返回FalseN)r   rV   r   r   r   	is_prefix     
zSimplifiedObjectInfo.is_prefixrX   r!   r"   r#   r   r   r   r   r   r   r     s    
r   defaultprivatezpublic-readzpublic-read-writec                       r   )GetObjectAclResultc                       t t| | d| _d S r   )ru   r  r   aclrq   r|   r   r   r     s   
zGetObjectAclResult.__init__r   r   r   r|   r   r    r   r  c                   @   r   )SimplifiedBucketInfouR   :func:`list_buckets <oss2.Service.list_objects>` 结果中的单个元素类型。Nc	           	      C   r   r   )namelocationcreation_dateextranet_endpointintranet_endpointr   regionresource_group_id)	r   r  r	  r
  r  r  r   r  r  r   r   r   r     r   zSimplifiedBucketInfo.__init__rX   r    r   r   r   r   r    s    r  c                       r   )ListBucketsResultc                    s2   t t| | d| _d| _g | _tdd| _d S r   )ru   r  r   r   r   bucketsOwnerr   rq   r|   r   r   r     s
   zListBucketsResult.__init__r   r   r   r|   r   r    r   r  c                   @   s   e Zd Zdd Zdd ZdS )MultipartUploadInfoc                 C      || _ || _|| _d S r   )rc   r   initiation_date)r   rc   r   r  r   r   r   r   (  s   
zMultipartUploadInfo.__init__c                 C   r   )u"   如果是公共前缀则返回TrueN)r   rV   r   r   r   r   2  r   zMultipartUploadInfo.is_prefixNr  r   r   r   r   r  '  s    
r  c                       r   )ListMultipartUploadsResultc                    s2   t t| | d| _d| _d| _g | _g | _d S r   )ru   r  r   r   next_key_markernext_upload_id_markerupload_listr   rq   r|   r   r   r   8  s   
z#ListMultipartUploadsResult.__init__r   r   r   r|   r   r  7  r   r  c                       r   )ListPartsResultc                    s&   t t| | d| _d| _g | _d S r   )ru   r  r   r   r   partsrq   r|   r   r   r   L  s   
zListPartsResult.__init__r   r   r   r|   r   r  K  r   r  StandardIAArchiveColdArchiveDeepColdArchiveLRSZRSMirrorExternalInternalAliCDNBucketOwner	Requesterc                       r   )GetBucketAclResultc                    r  r   )ru   r(  r   r  rq   r|   r   r   r   o  r   zGetBucketAclResult.__init__r   r   r   r|   r   r(  n  r   r(  c                       r   )GetBucketLocationResultc                    r  r   )ru   r)  r   r	  rq   r|   r   r   r   w  r   z GetBucketLocationResult.__init__r   r   r   r|   r   r)  v  r   r)  c                   @      e Zd ZdZdd ZdS )BucketLoggingu   Bucket日志配置信息。

    :param str target_bucket: 存储日志到这个Bucket。
    :param str target_prefix: 生成的日志文件名加上该前缀。
    c                 C      || _ || _d S r   )target_buckettarget_prefix)r   r-  r.  r   r   r   r        
zBucketLogging.__init__Nr    r   r   r   r   r+  ~      r+  c                   @   ri   )GetBucketLoggingResultc                 C   s   t | | t| dd d S r   )rj   r   r+  rq   r   r   r   r        zGetBucketLoggingResult.__init__Nr]   r   r   r   r   r1    rr   r1  c                   @   rY   )BucketCreateConfigNc                 C   r,  r   )r   data_redundancy_type)r   r   r4  r   r   r   r     r/  zBucketCreateConfig.__init__r   r]   r   r   r   r   r3    r^   r3  c                   @   s    e Zd Z					dddZdS )
BucketStatNc                 C   s   || _ || _|| _|| _|| _|| _|| _|| _|	| _|
| _	|| _
|| _|| _|| _|| _|| _|| _|| _|| _|| _|| _d S r   )storage_size_in_bytesobject_countmulti_part_upload_countlive_channel_countlast_modified_timestandard_storagestandard_object_countinfrequent_access_storageinfrequent_access_real_storageinfrequent_access_object_countarchive_storagearchive_real_storagearchive_object_countcold_archive_storagecold_archive_real_storagecold_archive_object_countmultipart_part_countdelete_marker_countdeep_cold_archive_storagedeep_cold_archive_real_storagedeep_cold_archive_object_count)r   r6  r7  r8  r9  r:  r;  r<  r=  r>  r?  r@  rA  rB  rC  rD  rE  rF  rG  rH  rI  rJ  r   r   r   r     s*   
zBucketStat.__init__)NNNNNNNNNNNNNNNNNNr]   r   r   r   r   r5    s    r5  c                   @   ri   )AccessControlListc                 C   
   || _ d S r   )grant)r   rM  r   r   r   r     r   zAccessControlList.__init__Nr]   r   r   r   r   rK    rr   rK  c                   @   ri   )r  c                 C   r,  r   )display_nameid)r   rN  owner_idr   r   r   r     r/  zOwner.__init__Nr]   r   r   r   r   r    rr   r  c                   @   s   e Zd Z				dddZdS )
BucketInfoNc                 C   sd   || _ || _|| _|| _|| _|| _|| _|| _|	| _|
| _	|| _
|| _|| _|| _|| _|| _d S r   )r  r   r	  r   r  r  r
  r  r4  commentbucket_encryption_ruleversioning_statusaccess_monitortransfer_accelerationcross_region_replicationr  )r   r  r   r	  r   r  r  r
  r  r4  rR  rS  rT  rU  rV  rW  r  r   r   r   r     s    
zBucketInfo.__init__)NNNNNNNNNNNNNNNNr]   r   r   r   r   rQ    s    rQ  c                   @   ri   )GetBucketStatResultc                 C   sD   t | | t| dddd d d d d d d d d d d d d d d d d d  d S Nr   )rj   r   r5  rq   r   r   r   r     s   8zGetBucketStatResult.__init__Nr]   r   r   r   r   rX    rr   rX  c                   @   ri   )GetBucketInfoResultc                 C      t | | t|  d S r   )rj   r   rQ  rq   r   r   r   r        zGetBucketInfoResult.__init__Nr]   r   r   r   r   rZ    rr   rZ  c                   @   r   )BucketRefereru   Bucket防盗链设置。

    :param bool allow_empty_referer: 是否允许空的Referer。
    :param referers: Referer列表，每个元素是一个str。
    :param black_referers: BlackReferer列表，每个元素是一个str。
    Nc                 C      || _ || _|| _|| _d S r   )allow_empty_refererreferersallow_truncate_query_stringblack_referers)r   r_  r`  ra  rb  r   r   r   r        
zBucketReferer.__init__rX   r    r   r   r   r   r]        r]  c                   @   ri   )GetBucketRefererResultc                 C   s"   t | | t| dg d g  d S r'   )rj   r   r]  rq   r   r   r   r     s   zGetBucketRefererResult.__init__Nr]   r   r   r   r   re    rr   re  c                   @   r   )	Conditionu   匹配规则

    :父节点: class `RoutingRule <oss2.models.RoutingRule>`
    :param key_prefix_equals: 匹配object的前缀，
    :type key_prefix_equals:  string str

    :param http_err_code_return_equals: 匹配访问object时返回的status。
    :type http_err_code_return_equals: int

    :param include_header_list: 匹配指定的header
    :type include_header_list: list of :class:`ConditionInlcudeHeader`
    Nc                 C   H   |d urt |tstdt|dkrtd|| _|| _|p g | _d S )Nz&class of include_header should be list   z=capacity of include_header_list should not > 5, please check!)r1   listr   r   key_prefix_equalshttp_err_code_return_equalsinclude_header_list)r   rj  rk  rl  r   r   r   r     s   
zCondition.__init__r   r    r   r   r   r   rf    s    rf  c                   @   r   )ConditionInlcudeHeaderu    指定匹配的header

    :父节点: class `Condition <oss2.models.Condition>`
    :param key: header key
    :type key: str
    :param key: header value
    :type key: str
    Nc                 C   r,  r   )rc   equals)r   rc   rn  r   r   r   r   *  r/  zConditionInlcudeHeader.__init__rX   r    r   r   r   r   rm  !      rm  c                   @   "   e Zd ZdZ				dddZdS )Redirectu	  匹配规则之后执行的动作
    
    :父节点: class `RoutingRule <oss2.models.RoutingRule>`

    :param redirect_type: 跳转类型, 取值为Mirror, External, Internal, AliCDN其中一个。
    :type redirect_type: class: str

    :param pass_query_string: 执行跳转或者镜像回源时，是否要携带发起请求的请求参数，默认false。
    :type pass_query_string: bool

    :param replace_key_with: Redirect的时候object name将替换成这个值，可以支持变量（目前支持的变量是${key}
        当RedirectType为Internal, External或者AliCDN时有效。
    :type replace_key_with: str

    :param replace_key_prefix_with: Redirect的时候object name的前缀将替换成这个值。如果前缀为空则将这个字符串插入在object namde的最前面。
        当RedirectType为Internal, External或者AliCDN时有效。
    :type replace_key_prefix_with: str

    :param proto: 跳转时的协议，只能取值为http或者https。
        当RedirectType为External或者AliCDN时有效。
    :type proto: class: str

    :param host_name: 跳转时的域名
        当RedirectType为External或者AliCDN时有效。
    :type host_name: str

    :param http_redirect_code: 跳转时返回的状态码，取值为301、302或307。
        当RedirectType为External或者AliCDN时有效。
    :type http_redirect_code: int （HTTP状态码）
    
    :mirror相关当参数只有当RedirectType为Mirror时有效。
    
    :param mirror_url: 镜像回源的源站地址，
    :type mirror_url: str

    :param mirror_url_slave: 镜像回源的备站地址
    :type mirror_url_slave: str

    :param mirror_url_probe: 主备切换模式的探测url，这个url需要代表主源站的健康程度，mirror_url_slave指定时，此项必须指定。
    :type mirror_url_probe: str

    :param mirror_pass_query_string: 作用同pass_query_string，默认false。
    :type mirror_pass_query_string: bool

    :param mirror_follow_redirect: 如果镜像回源获取的结果是3xx，是否要继续跳转到指定的Location获取数据。默认true。
    :type mirror_follow_redirect: bool

    :param mirror_check_md5: 是否要检查回源body的md5, 默认false。
    :type mirror_check_md5: bool

    :param mirror_headers: 指定匹配此规则后执行的动作。
    :type mirror_headers: class:`RedirectMirrorHeaders <oss2.models.RedirectMirrorHeaders>`

    Nc                 C   st  |t tttfvrtd|tkrt|||frtd|ttfv r1|d ur1|dk s-|dkr1td|tttfv rCt||frBtdnK|t krt|||||frTtd|d u r\td|d	sf|d
rk|dsotd|	d ur|
d u r{td|	d	s|	d
r|	dstd|| _	|| _
|| _|| _|| _|| _|| _|| _|	| _|
| _|| _|| _|| _|| _d S )Nz;redirect_type must be Internal, External, Mirror or AliCDN.zRhost_name, proto, http_redirect_code must be empty when redirect_type is Internal.i,  i  z8http_redirect_code must be a valid HTTP 3xx status code.z<replace_key_with or replace_key_prefix_with only choose one.z~host_name, replace_key_with, replace_key_prefix_with, http_redirect_code and proto must be empty when redirect_type is Mirror.z;mirror_url should not be None when redirect_type is Mirror.zhttp://zhttps://r   zPmirror_url is invalid, should startwith "http://" or "https://", and endwith "/"zFmirror_url_probe should not be none when mirror_url_slave is indicatedzVmirror_url_salve is invalid, should startwith "http://" or "https://", and endwith "/")REDIRECT_TYPE_MIRRORREDIRECT_TYPE_EXTERNALREDIRECT_TYPE_INTERNALREDIRECT_TYPE_ALICDNr   anyall
startswithendswithredirect_typepass_query_stringreplace_key_withreplace_key_prefix_withproto	host_namehttp_redirect_code
mirror_urlmirror_url_slavemirror_url_probemirror_pass_query_stringmirror_check_md5mirror_follow_redirectmirror_headers)r   rz  r{  r|  r}  r~  r  r  r  r  r  r  r  r  r  r   r   r   r   f  sN   
zRedirect.__init__)NNNNNNNNNNNNNNr    r   r   r   r   rq  /  s    6rq  c                   @   r   )RedirectMirrorHeadersur  指定镜像回源时携带的header
    
    :父节点: class `Redirect <oss2.models.Redirect>`
    :param pass_all: 是否透传请求中所有的header（除了保留的几个header以及以oss-/x-oss-/x-drs-开头的header）到源站。默认false
    :type pass_all: bool

    :param pass_list: 透传指定的header到源站，最多10个，只有在RedirectType为Mirror时生效
    :type pass_list: list of str

    :param remove_list: 禁止透传指定的header到源站，这个字段可以重复，最多10个
    :type remove_list: list of str

    :param set_list: 设置一个header传到源站，不管请求中是否携带这些指定的header，回源时都会设置这些header。
        该容器可以重复，最多10组。只有在RedirectType为Mirror时生效。
    :type set_list: list of :class:`MirrorHeadersSet <oss2.models.MirrorHeadersSet>`

    Nc                 C   s   |d urt |tstdt|dkrtd|d ur.t |ts$tdt|dkr.td|d urEt |ts;tdt|dkrEtd|| _|pKg | _|pPg | _|pUg | _d S )Nz%The type of pass_list should be list.
   z*The capacity of pass_list should not > 10!z'The type of remove_list should be list.z,The capacity of remove_list should not > 10!z$The type of set_list should be list.z)The capacity of set_list should not > 10!)r1   ri  r   r   pass_all	pass_listremove_listset_list)r   r  r  r  r  r   r   r   r     s&   




zRedirectMirrorHeaders.__init__NNNNr    r   r   r   r   r    s    r  c                   @   r   )MirrorHeadersSetuy  父节点: class `RedirectMirrorHeaders <oss2.models.RedirectMirrorHeaders>`
    :param key:设置header的key，最多1024个字节，字符集与Pass相同。只有在RedirectType为Mirror时生效。
    :type key: str

    :param value:设置header的value，最多1024个字节，不能出现”
” 。只有在RedirectType为Mirror时生效。
    :type value: str
    Nc                 C   r,  r   rc   valuer   rc   r  r   r   r   r     r/  zMirrorHeadersSet.__init__rX   r    r   r   r   r   r        r  c                   @   r   )RoutingRuleuh  设置静态网站托管模式中的跳转规则
    :param rule_num: RoutingRule的序号, 必须为正整数
    :type rule_num: int

    :param condition: 匹配条件
    :type condition: class:`Condition <oss2.models.Condition>`

    :param redirect: 指定匹配此规则后执行的动作
    :type redirect: class:`Redirect <oss2.models.Redirect>`
    Nc                 C   sl   |d u st |tr|dkrtd|d u s|d u rtd|jtkr+|jdkr+td|| _|| _|| _d S )Nr   z$rule_num should be positive integer.z+condition and redirect should be effective.i  z8http_err_code not match redirect_type, it should be 404!)	r1   ry   r   rz  rr  rk  rule_num	conditionredirect)r   r  r  r  r   r   r   r     s   
zRoutingRule.__init__r   r    r   r   r   r   r    s    
r  c                   @   r   )BucketWebsiteu   静态网站托管配置。

    :param str index_file: 索引页面文件
    :param str error_file: 404页面文件
    :param rules : list of class:`RoutingRule <oss2.models.RoutingRule>`
    
    Nc                 C   rg  )Nzrules type should be list.rh  z$capacity of rules should not be > 5.)r1   ri  r   r   
index_file
error_filerules)r   r  r  r  r   r   r   r     s   
zBucketWebsite.__init__r   r    r   r   r   r   r    r  r  c                   @   ri   )GetBucketWebsiteResultc                 C   s    t | | t| ddg  d S r   )rj   r   r  rq   r   r   r   r     s   zGetBucketWebsiteResult.__init__Nr]   r   r   r   r   r    rr   r  c                   @   r   )LifecycleExpirationu  过期删除操作。

    :param days: 表示在文件修改后过了这么多天，就会匹配规则，从而被删除
    :type days: int

    :param date: 表示在该日期之后，规则就一直生效。即每天都会对符合前缀的文件执行删除操作（如，删除），而不管文件是什么时候生成的。*不建议使用*
    :type date: `datetime.date`

    :param created_before_date: delete files if their last modified time earlier than created_before_date
    :type created_before_date: `datetime.date`

    :param expired_detete_marker: 真实文件删除之后是否自动移除删除标记，适用于多版本场景。
    :param expired_detete_marker: bool

    Nc                 C   sp   d}|d ur
|d7 }|d ur|d7 }|d ur|d7 }|d ur"|d7 }|dkr*t d|| _|| _|| _|| _d S )Nr   r   zaMore than one field(days, date and created_before_date, expired_detete_marker) has been specified)r   daysdatecreated_before_dateexpired_detete_marker)r   r  r  r  r  not_none_fieldsr   r   r   r     s   
zLifecycleExpiration.__init__r  r    r   r   r   r   r  
  s    r  c                   @   r   )AbortMultipartUploadu   删除parts

    :param days: 删除相对最后修改时间days天之后的parts
    :param created_before_date: 删除最后修改时间早于created_before_date的parts

    Nc                 C   s(   |d ur|d urt d|| _|| _d S Nz9days and created_before_date should not be both specified)r   r  r  )r   r  r  r   r   r   r   5  s   
zAbortMultipartUpload.__init__rX   r    r   r   r   r   r  .  rd  r  c                   @   r   )StorageTransitionu0  transit objects

    :param days: 将相对最后修改时间days天之后的Object转储
    :param created_before_date: 将最后修改时间早于created_before_date的对象转储
    :param storage_class: 对象转储到OSS的目标存储类型
    :param bool is_access_time: 指定lifecycle rule是否基于atime。
    :param bool return_to_std_when_visit: 指定对象转到低频层后再次访问时是否回到标准层。
    :param bool allow_small_file: 指定是否将小于64 KB的Object转储为低频、归档、冷归档文件类型。
    Nc                 C   s@   |d ur|d urt d|| _|| _|| _|| _|| _|| _d S r  )r   r  r  r   is_access_timereturn_to_std_when_visitallow_small_file)r   r  r  r   r  r  r  r   r   r   r   G  s   
zStorageTransition.__init__NNNNNNr    r   r   r   r   r  =      	r  c                   @   r*  )NoncurrentVersionExpirationu   OSS何时将非当前版本的object删除

    :param noncurrent_days: 指定多少天之后删除
    :type noncurrent_days: int
    c                 C   rL  r   )noncurrent_days)r   r  r   r   r   r   Y  r   z$NoncurrentVersionExpiration.__init__Nr    r   r   r   r   r  S  r0  r  c                   @   r   )"NoncurrentVersionStorageTransitionuI  生命周期内，OSS何时将指定Object的非当前版本转储为IA或者Archive存储类型。

    :param noncurrent_days: 多少天之后转存储
    :type noncurrent_days: int
    :param is_access_time: 指定lifecycle rule是否基于atime。
    :type is_access_time: bool
    :param return_to_std_when_visit: 指定对象转到低频层后再次访问时是否回到标准层。
    :type return_to_std_when_visit: bool
    :param allow_small_file: 指定是否将小于64 KB的Object转储为低频、归档、冷归档文件类型。
    :type allow_small_file: bool
    Nc                 C   r   r   )r  r   r  r  r  )r   r  r   r  r  r  r   r   r   r   i  r   z+NoncurrentVersionStorageTransition.__init__r   r    r   r   r   r   r  ]  r%   r  c                	   @   s4   e Zd ZdZdZdZeddddddddf	ddZdS )LifecycleRuleu  生命周期规则。

    :param id: 规则名
    :type id: str

    :param prefix: 只有文件名匹配该前缀的文件才适用本规则
    :type prefix: str

    :param expiration: 过期删除操作。
    :type expiration: :class:`LifecycleExpiration`

    :param status: 启用还是禁止该规则。可选值为 `LifecycleRule.ENABLED` 或 `LifecycleRule.DISABLED`

    :param storage_transitions: 存储类型转换规则
    :type storage_transitions: list of class:`StorageTransition <oss2.models.StorageTransition>`

    :param tagging: object tagging 规则
    :type tagging: :class:`Tagging <oss2.models.StorageTransition>`
    
    :param noncurrent_version_expiration: 指定Object非当前版本生命周期规则的过期属性。适用于多版本场景。
    :type noncurrent_version_expiration class:`NoncurrentVersionExpiration <oss2.models.NoncurrentVersionExpiration>`

    :param noncurrent_version_sotrage_transitions: 在有效生命周期中，OSS何时将指定Object的非当前版本转储为IA或者Archive存储类型，适用于多版本场景。
    :type noncurrent_version_sotrage_transitions: list of class:`NoncurrentVersionStorageTransition <oss2.models.NoncurrentVersionStorageTransition>`

    :param atime_base: last access time的时间戳
    :type atime_base: int

    :param filter: 规则的条件参数容器。
    :type filter class:`LifecycleFilter <oss2.models.LifecycleFilter>`
    EnabledDisabledNc                 C   sF   || _ || _|| _|| _|| _|| _|| _|| _|	| _|
| _	|| _
d S r   )rO  prefixrl   
expirationabort_multipart_uploadstorage_transitionstaggingnoncurrent_version_expiration&noncurrent_version_sotrage_transitions
atime_basefilter)r   rO  r  rl   r  r  r  r  r  r  r  r  r   r   r   r     s   
zLifecycleRule.__init__)r!   r"   r#   r$   ENABLEDDISABLEDr   r   r   r   r   r  q  s     r  c                   @   r   )BucketLifecycleu   Bucket的生命周期配置。

    :param rules: 规则列表，
    :type rules: list of :class:`LifecycleRule <oss2.models.LifecycleRule>`
    Nc                 C   r   r   )r  )r   r  r   r   r   r     r   zBucketLifecycle.__init__r   r    r   r   r   r   r        r  c                   @   ri   )GetBucketLifecycleResultc                 C   r[  r   )rj   r   r  rq   r   r   r   r     r\  z!GetBucketLifecycleResult.__init__Nr]   r   r   r   r   r    rr   r  c                   @   $   e Zd ZdZ					dddZdS )CorsRuleuh  CORS（跨域资源共享）规则。

    :param allowed_origins: 允许跨域访问的域。
    :type allowed_origins: list of str

    :param allowed_methods: 允许跨域访问的HTTP方法，如'GET'等。
    :type allowed_methods: list of str

    :param allowed_headers: 允许跨域访问的HTTP头部。
    :type allowed_headers: list of str


    Nc                 C   s2   |pg | _ |pg | _|pg | _|pg | _|| _d S r   )allowed_originsallowed_methodsallowed_headersexpose_headersmax_age_seconds)r   r  r  r  r  r  r   r   r   r     s
   




zCorsRule.__init__NNNNNr    r   r   r   r   r    s    r  c                   @   rY   )
BucketCorsNc                 C   s   |pg | _ || _d S r   )r  response_vary)r   r  r  r   r   r   r     s   

zBucketCors.__init__rX   r]   r   r   r   r   r    r^   r  c                   @   ri   )GetBucketCorsResultc                 C   r[  r   )rj   r   r  rq   r   r   r   r     r\  zGetBucketCorsResult.__init__Nr]   r   r   r   r   r    rr   r  c                   @   s"   e Zd ZdZ				d	ddZdS )
LiveChannelInfoTargetua  Live channel中的Target节点，包含目标协议的一些参数。

    :param type: 协议，目前仅支持HLS。
    :type type: str

    :param frag_duration: HLS协议下生成的ts文件的期望时长，单位为秒。
    :type frag_duration: int

    :param frag_count: HLS协议下m3u8文件里ts文件的数量。
    :type frag_count: intHLSrh     r   c                 C   r^  r   )r   frag_duration
frag_countplaylist_name)r   r   r  r  r  r   r   r   r     s   
zLiveChannelInfoTarget.__init__N)r  rh  r  r   r    r   r   r   r   r    s    r  c                   @   s*   e Zd ZdZdde ddddfddZdS )LiveChannelInfou   Live channel（直播频道）配置。

    :param status: 直播频道的状态，合法的值为"enabled"和"disabled"。
    :type status: str

    :param description: 直播频道的描述信息，最长为128字节。
    :type description: str

    :param target: 直播频道的推流目标节点，包含目标协议相关的参数。
    :type class:`LiveChannelInfoTarget <oss2.models.LiveChannelInfoTarget>`

    :param last_modified: 直播频道的最后修改时间，这个字段仅在`ListLiveChannel`时使用。
    :type last_modified: int, 参考 :ref:`unix_time`。
    
    :param name: 直播频道的名称。
    :type name: str
        
    :param play_url: 播放地址。
    :type play_url: str
        
    :param publish_url: 推流地址。
    :type publish_url: strenabledr   Nc                 C   .   || _ || _|| _|| _|| _|| _|| _d S r   )rl   descriptiontargetr   r  play_urlpublish_url)r   rl   r  r  r   r  r  r  r   r   r   r     s   
zLiveChannelInfo.__init__)r!   r"   r#   r$   r  r   r   r   r   r   r    s    r  c                   @   s$   e Zd ZdZ					dddZdS )	LiveChannelListuK  List直播频道的结果。

    :param prefix: List直播频道使用的前缀。
    :type prefix: str

    :param marker: List直播频道使用的marker。
    :type marker: str

    :param max_keys: List时返回的最多的直播频道的条数。
    :type max_keys: int

    :param is_truncated: 本次List是否列举完所有的直播频道
    :type is_truncated: bool

    :param next_marker: 下一次List直播频道使用的marker。
    :type marker: str

    :param channels: List返回的直播频道列表
    :type channels: list，类型为 :class:`LiveChannelInfo`r   d   Fc                 C   s(   || _ || _|| _|| _|| _g | _d S r   )r  markermax_keysr   r   channels)r   r  r  r  r   r   r   r   r   r   6  s   
zLiveChannelList.__init__N)r   r   r  Fr   r    r   r   r   r   r  !  s    r  c                   @   s$   e Zd ZdZ					dddZdS )LiveChannelVideoStatuB  LiveStat中的Video节点。

    :param width: 视频的宽度。
    :type width: int

    :param height: 视频的高度。
    :type height: int

    :param frame_rate: 帧率。
    :type frame_rate: int

    :param codec: 编码方式。
    :type codec: str

    :param bandwidth: 码率。
    :type bandwidth: intr   r   c                 C   r   r   )widthheight
frame_ratecodec	bandwidth)r   r  r  r  r  r  r   r   r   r   V  
   
zLiveChannelVideoStat.__init__N)r   r   r   r   r   r    r   r   r   r   r  D      r  c                   @   s    e Zd ZdZ			dddZdS )LiveChannelAudioStatu   LiveStat中的Audio节点。

    :param codec: 编码方式。
    :type codec: str

    :param sample_rate: 采样率。
    :type sample_rate: int

    :param bandwidth: 码率。
    :type bandwidth: intr   r   c                 C   r  r   )r  sample_rater  )r   r  r  r  r   r   r   r   o     
zLiveChannelAudioStat.__init__N)r   r   r   r    r   r   r   r   r  c      r  c                   @   s$   e Zd ZdZ					dddZdS )LiveChannelStatu  LiveStat结果。

    :param status: 直播状态。
    :type codec: str

    :param remote_addr: 客户端的地址。
    :type remote_addr: str

    :param connected_time: 本次推流开始时间。
    :type connected_time: int, unix time

    :param video: 视频描述信息。
    :type video: class:`LiveChannelVideoStat <oss2.models.LiveChannelVideoStat>`

    :param audio: 音频描述信息。
    :type audio: class:`LiveChannelAudioStat <oss2.models.LiveChannelAudioStat>`r   Nc                 C   r   r   )rl   remote_addrconnected_timevideoaudio)r   rl   r  r  r  r  r   r   r   r     r  zLiveChannelStat.__init__)r   r   r   NNr    r   r   r   r   r  x  r  r  c                   @   s    e Zd ZdZ			dddZdS )
LiveRecorduJ  直播频道中的推流记录信息

    :param start_time: 本次推流开始时间。
    :type start_time: int，参考 :ref:`unix_time`。

    :param end_time: 本次推流结束时间。
    :type end_time: int， 参考 :ref:`unix_time`。

    :param remote_addr: 推流时客户端的地址。
    :type remote_addr: strr   c                 C   r  r   )
start_timeend_timer  )r   r  r  r  r   r   r   r     r  zLiveRecord.__init__N)r   r   r   r    r   r   r   r   r    r  r  c                   @   r*  )LiveChannelHistoryu!   直播频道下的推流记录。c                 C   s
   g | _ d S r   )recordsrV   r   r   r   r     r   zLiveChannelHistory.__init__Nr    r   r   r   r   r        r  c                   @   ri   )CreateLiveChannelResultc                 C   r[  r   rj   r   r  rq   r   r   r   r     r\  z CreateLiveChannelResult.__init__Nr]   r   r   r   r   r    rr   r  c                   @   ri   )GetLiveChannelResultc                 C   r[  r   r  rq   r   r   r   r     r\  zGetLiveChannelResult.__init__Nr]   r   r   r   r   r    rr   r  c                   @   ri   )ListLiveChannelResultc                 C   r[  r   )rj   r   r  rq   r   r   r   r     r\  zListLiveChannelResult.__init__Nr]   r   r   r   r   r    rr   r  c                   @   ri   )GetLiveChannelStatResultc                 C   r[  r   )rj   r   r  rq   r   r   r   r     r\  z!GetLiveChannelStatResult.__init__Nr]   r   r   r   r   r    rr   r  c                   @   ri   )GetLiveChannelHistoryResultc                 C   r[  r   )rj   r   r  rq   r   r   r   r     r\  z$GetLiveChannelHistoryResult.__init__Nr]   r   r   r   r   r    rr   r  c                   @   ri   )GetVodPlaylistResultc                 C      t | | t| | _d S r   )rj   r   r   r   playlistrq   r   r   r   r     r2  zGetVodPlaylistResult.__init__Nr]   r   r   r   r   r    rr   r  c                   @   ri   )ProcessObjectResultc                 C   s   t | | d| _d| _d| _d| _tt|	 }d|v r$|d | _d|v r-|d | _d|v r6|d | _d|v rA|d | _d S d S )Nr   r   bucketfileSizeobjectrl   )
rj   r   r  r  r  process_statusr=   rN   r   r   )r   rk   resultr   r   r   r     s   


zProcessObjectResult.__init__Nr]   r   r   r   r   r    rr   r        c                   @   r   )TaggingNc                 C   s   |pt  | _d S r   )TaggingRuletag_set)r   tagging_rulesr   r   r   r     s   zTagging.__init__c                 C   s6   d}| j j}|D ]}||7 }|d||  d 7 }q|S )Nr   #r   )r  tagging_rule)r   tag_strr	  rc   r   r   r   __str__  s   zTagging.__str__r   )r!   r"   r#   r   r  r   r   r   r   r    s    
r  c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )r  c                 C   s   t  | _d S r   )dictr	  rV   r   r   r   r     r   zTaggingRule.__init__c                 C   sN   |d u s|dkrt dt|tkrt dt|tkr t d|| j|< d S )Nr   zTagging key should not be emptyzTagging key is too longzTagging value is too long)r   r   _MAX_OBJECT_TAGGING_KEY_LENGTH _MAX_OBJECT_TAGGING_VALUE_LENGTHr	  r  r   r   r   add  s   zTaggingRule.addc                 C   s   | j |= d S r   )r	  )r   rc   r   r   r   delete  r   zTaggingRule.deletec                 C   r   r   )r   r	  rV   r   r   r   r     r   zTaggingRule.lenc                 C   s^   d}| j D ]}|t|7 }|d7 }|t| j | 7 }|d7 }qt|dkr'dS |d d }|S )Nr   =&r   )r	  r   r   )r   query_stringrc   r   r   r   to_query_string  s   

zTaggingRule.to_query_stringN)r!   r"   r#   r   r  r  r   r  r   r   r   r   r    s    r  c                   @   ri   )GetTaggingResultc                 C   r[  r   )rj   r   r  rq   r   r   r   r   $  r\  zGetTaggingResult.__init__Nr]   r   r   r   r   r  "      r  AES256KMSSM4c                   @   rY   )ServerSideEncryptionRuleNc                 C   r  r   )sse_algorithmkms_master_keyidkms_data_encryption)r   r  r  r  r   r   r   r   /  s   
z!ServerSideEncryptionRule.__init__r   r]   r   r   r   r   r  -  s    r  c                   @   ri   )GetServerSideEncryptionResultc                 C   r[  r   )rj   r   r  rq   r   r   r   r   7  r\  z&GetServerSideEncryptionResult.__init__Nr]   r   r   r   r   r  5  r  r  c                       r   )ListObjectVersionsResultc                    sb   t t| | d| _d| _d| _d| _d| _d| _d| _	d| _
d| _d| _g | _g | _g | _d S r   )ru   r   r   r   
key_markerr  versionid_markernext_versionid_markerr  r   r  r  	delimiterrp   versionscommon_prefixrq   r|   r   r   r   <  s   
z!ListObjectVersionsResult.__init__r   r   r   r|   r   r   ;  r   r   c                   @   ri   )DeleteMarkerInfoc                 C   s(   d| _ d| _d| _d| _tdd| _d S r   )rc   rn   	is_latestr   r  r   rV   r   r   r   r   a  s
   zDeleteMarkerInfo.__init__Nr]   r   r   r   r   r'  `  rr   r'  c                   @   ri   )ObjectVersionInfoc                 C   sF   d| _ d| _d| _d| _tdd| _d| _d| _d| _d| _	d| _
d S r   )rc   rn   r(  r   r  r   r   r   r   r   r   rV   r   r   r   r   i  s   
zObjectVersionInfo.__init__Nr]   r   r   r   r   r)  h  rr   r)  r  	Suspendedc                   @   rY   )BucketVersioningConfigNc                 C   rL  r   rl   r   rl   r   r   r   r   y  r   zBucketVersioningConfig.__init__r   r]   r   r   r   r   r+  x  r^   r+  c                   @   ri   )GetBucketVersioningResultc                 C   r[  r   )rj   r   r+  rq   r   r   r   r   }  r\  z"GetBucketVersioningResult.__init__Nr]   r   r   r   r   r.  |  rr   r.  c                   @   ri   )GetBucketPolicyResultc                 C   r  r   rj   r   r   r   policyrq   r   r   r   r     r2  zGetBucketPolicyResult.__init__Nr]   r   r   r   r   r/    rr   r/  c                   @   ri   )GetBucketRequestPaymentResultc                 C   s   t | | d| _d S r   )rj   r   payerrq   r   r   r   r        
z&GetBucketRequestPaymentResult.__init__Nr]   r   r   r   r   r2    rr   r2  c                   @   ,   e Zd ZdZ									dddZdS )BucketQosInfou  bucket的Qos信息    
    :以下参数如果设置为0则表示完全禁止指定类型的访问，如果为-1则表示不单独限制

    :param total_upload_bw: 总上传带宽, 单位Gbps
    :type total_upload_bw: int

    :param intranet_upload_bw: 内网上传带宽, 单位Gbps
    :type intranet_upload_bw: int

    :param extranet_upload_bw: 外网上传带宽, 单位Gbps
    :type extranet_upload_bw: int

    :param total_download_bw: 总下载带宽, 单位Gbps
    :type total_download_bw: int

    :param intranet_download_bw: 内外下载带宽, 单位Gbps
    :type intranet_download_bw: int

    :param extranet_download_bw: 外网下载带宽, 单位Gbps
    :type extranet_download_bw: int

    :param total_qps: 总qps, 单位请求数/s
    :type total_qps: int

    :param intranet_qps: 内网访问qps, 单位请求数/s
    :type intranet_qps: int

    :param extranet_qps: 外网访问qps, 单位请求数/s
    :type extranet_qps: int
    Nc
           
      C   :   || _ || _|| _|| _|| _|| _|| _|| _|	| _d S r   	total_upload_bwintranet_upload_bwextranet_upload_bwtotal_download_bwintranet_download_bwextranet_download_bw	total_qpsintranet_qpsextranet_qps
r   r9  r:  r;  r<  r=  r>  r?  r@  rA  r   r   r   r        
zBucketQosInfo.__init__	NNNNNNNNNr    r   r   r   r   r6    s    r6  c                   @   .   e Zd ZdZ										dddZdS )UserQosInfou  User的Qos信息    

    :param region: 查询的qos配置生效的区域
    :type region: str

    :以下参数如果为0则表示完全禁止指定类型的访问，如果为-1表示不单独限制

    :param total_upload_bw: 总上传带宽, 单位Gbps
    :type total_upload_bw: int

    :param intranet_upload_bw: 内网上传带宽, 单位:Gbps
    :type intranet_upload_bw: int

    :param extranet_upload_bw: 外网上传带宽, 单位:Gbps
    :type extranet_upload_bw: int

    :param total_download_bw: 总下载带宽, 单位:Gbps
    :type total_download_bw: int

    :param intranet_download_bw: 内外下载带宽, 单位:Gbps
    :type intranet_download_bw: int

    :param extranet_download_bw: 外网下载带宽, 单位:Gbps
    :type extranet_download_bw: int

    :param total_qps: 总qps限制
    :type total_qps: int

    :param intranet_qps: 内网访问qps
    :type intranet_qps: int

    :param extranet_qps: 外网访问qps
    :type extranet_qps: int
    Nc                 C   s@   || _ || _|| _|| _|| _|| _|| _|| _|	| _|
| _	d S r   )
r  r9  r:  r;  r<  r=  r>  r?  r@  rA  )r   r  r9  r:  r;  r<  r=  r>  r?  r@  rA  r   r   r   r     s   
zUserQosInfo.__init__
NNNNNNNNNNr    r   r   r   r   rF    s    #rF  c                   @   ri   )GetUserQosInfoResultc                 C   r[  r   )rj   r   rF  rq   r   r   r   r     r\  zGetUserQosInfoResult.__init__Nr]   r   r   r   r   rH    rr   rH  c                   @   ri   )GetBucketQosInfoResultc                 C   r[  r   )rj   r   r6  rq   r   r   r   r     r\  zGetBucketQosInfoResult.__init__Nr]   r   r   r   r   rI    rr   rI  c                   @   r   )BucketUserQosuS   用户服务质量。
    :param int storage_capacity: 容量大小，单位GB
    Nc                 C   rL  r   )storage_capacity)r   rK  r   r   r   r     r   zBucketUserQos.__init__r   r    r   r   r   r   rJ    s    rJ  c                   @   ri   )GetBucketUserQosResultc                 C   r[  r   )rj   r   rJ  rq   r   r   r   r     r\  zGetBucketUserQosResult.__init__Nr]   r   r   r   r   rL  
  rr   rL  RunningRetryFetchSuccessCallbackFailedFailedSuccessc                   @   r  )AsyncFetchTaskConfigurationux  异步获取文件到bucket到任务配置项

    :param url: 源文件url
    :type url: str

    :param object_name: 文件的名称。
    :type task_state: str

    :param host: 文件所在服务器的host，如果不指定则会根据url解析填充。
    :type host: str

    :param content_md5: 指定校验源文件的md5
    :type content_md5: str

    :param callback: 指定fetch成功之后回调给用户的引用服务器，如果不指定则不回调。
            callback格式与OSS上传回调的请求头callback一致，详情见官网。
    :type callback: str

    :param ignore_same_key: 默认为True表示如果文件已存在则忽略本次任务，api调用将会报错。如果为False，则会覆盖已存在的object。
    :type ignore_same_key: bool

    :param callback_when_failed: 失败时是否回调。
    :type callback_when_failed: bool
    Nc                 C   r  r   )urlobject_namehostcontent_md5callbackignore_same_keycallback_when_failed)r   rS  rT  rU  rV  rW  rX  rY  r   r   r   r   /  s   	
z$AsyncFetchTaskConfiguration.__init__r  r    r   r   r   r   rR    s    rR  c                   @   rY   )PutAsyncFetchTaskResultNc                 C   s   t | | || _d S r   )rj   r   task_id)r   rk   r[  r   r   r   r   A  r4  z PutAsyncFetchTaskResult.__init__r   r]   r   r   r   r   rZ  @  r^   rZ  c                   @   rp  )GetAsyncFetchTaskResultu  获取异步获取文件到bucket的任务的返回结果

    :param task_id: 任务id
    :type task_id: str

    :param task_state: 取值范围：oss2.models.ASYNC_FETCH_TASK_STATE_RUNNING, oss2.models.ASYNC_FETCH_TASK_STATE_RETRY, 
            oss2.models.ASYNC_FETCH_TASK_STATE_FETCH_SUCCESS_CALLBACK_FAILED, oss2.models.ASYNC_FETCH_TASK_STATE_FAILED, 
            oss2.models.ASYNC_FETCH_TASK_STATE_SUCCESS。
    :type task_state: str

    :param error_msg: 错误信息
    :type error_msg: str

    :param task_config: 任务配置信息
    :type task_config: class:`AsyncFetchTaskConfiguration <oss2.models.AsyncFetchTaskConfiguration>`
    Nc                 C   s(   t | | || _|| _|| _|| _d S r   )rj   r   r[  
task_state	error_msgtask_config)r   rk   r[  r]  r^  r_  r   r   r   r   V  s
   
z GetAsyncFetchTaskResult.__init__r  r    r   r   r   r   r\  E  s    r\  CurrentAllDailyWeeklyCSVSizeLastModifiedDateStorageClassETagIsMultipartUploadedEncryptionStatusc                   @   (   e Zd ZdZ							dddZdS )InventoryConfigurationu}  清单配置    

    :param str inventory_id: 清单的识别id
    :type inventory_id: str

    :param is_enabled: 是否生效
    :type is_enabled: bool

    :param include_object_versions: 包含的对象版本，
        取值可以是 INVENTORY_INCLUDE_OBJECT_VERSIONS_CURRENT 或者 INVENTORY_INCLUDE_OBJECT_VERSIONS_ALL.
    :type include_object_versions: str

    :param inventory_filter: 清单的过滤器
    :type inventory_filter: class:`InventoryFilter <oss2.models.InventoryFilter>`

    :param inventory_destination: 清单的目标地址
    :type inventory_destination: class:`InventoryDestination <oss2.models.InventoryDestination>`
    
    :param inventory_schedule: 清单的生成周期
    :type inventory_schedule: class:`InventoryDestination <oss2.models.InventorySchedule>`

    :param optional_fields: 清单中包含的字段
    :type optional_fields: str
    Nc                 C   s2   || _ || _|| _|| _|| _|| _|pg | _d S r   )inventory_id
is_enabledincluded_object_versionsinventory_filterinventory_destinationinventory_scheduleoptional_fields)r   rm  rn  ro  rp  rq  rr  rs  r   r   r   r     s   	zInventoryConfiguration.__init__NNNNNNNr    r   r   r   r   rl  q  s    rl  c                   @      e Zd ZdZ		dddZdS )InventoryFilteru+  清单过滤器   

    :param prefix: 清单筛选的前缀, 指定前缀后，清单将筛选出符合前缀设置的对象。
    :type prefix: str
    :param prefix: 筛选数据的起始时间戳。
    :type prefix: int
    :param prefix: 筛选数据的终止时间戳。
    :type prefix: int
    :param prefix: 筛选文件大小的最小大小。
    :type prefix: int
    :param prefix: 筛选文件大小的最大大小。
    :type prefix: int
    :param prefix: 筛选存储类型（支持多选)，默认选All。
    :type prefix: str
    Nc                 C   (   || _ || _|| _|| _|| _|| _d S r   )r  last_modify_begin_time_stamplast_modify_end_time_stamplower_size_boundupper_size_boundr   )r   r  rx  ry  rz  r{  r   r   r   r   r        
zInventoryFilter.__init__r  r    r   r   r   r   rv    s
    rv  c                   @   r*  )InventoryScheduleu   清单的生成周期

    :param frequency: 清单的生成周期，可以是oss2.models.INVENTORY_FREQUENCY_DAILY 或者 oss2.models.INVENTORY_FREQUENCY_WEEKLY
    :type frequency: str
    c                 C   rL  r   )	frequency)r   r~  r   r   r   r     r   zInventorySchedule.__init__Nr    r   r   r   r   r}    r0  r}  c                   @   r   )InventoryDestinationu   清单的接收目的地址

    :param bucket_destination: OSS Bucket作为目的地，需要配置的OSS Bucket信息。
    :type bucket_destination: class:`InventoryBucketDestination <oss2.models.InventoryBucketDestination>`
    Nc                 C   rL  r   )bucket_destination)r   r  r   r   r   r     r   zInventoryDestination.__init__r   r    r   r   r   r   r    r  r  c                   @   rk  )InventoryBucketDestinationu  OSS Bucket作为清单目的地的配置

    :param account_id: 接收方的account id
    :type account_id: class:`InventoryBucketDestination <oss2.models.InventoryBucketDestination>`
    
    :param role_arn: 接收方的ram role arn
    :type role_arn: str
    
    :param bucket: OSS Bucket名称
    :type bucket: str

    :param inventory_format: 清单格式，可以是 oss2.models.INVENTORY_FORMAT_CSV。
    :type inventory_format: str
    
    :param prefix: 清单文件的存储路径前缀
    :type prefix: str
    
    :param sse_kms_encryption: 服务端使用kms作为清单的加密项
    :type sse_kms_encryption: class:`InventoryServerSideEncryptionKMS <oss2.models.InventoryServerSideEncryptionKMS>`

    :param sse_oss_encryption: OSS服务端为清单提供加密支持。
    :type sse_oss_encryption: class:`InventoryServerSideEncryptionOSS <oss2.models.InventoryServerSideEncryptionOSS>`
    Nc                 C   sB   t ||fr
td|| _|| _|| _|| _|| _|| _|| _d S )Nz[only one encryption method between sse_kms_encryption and sse_oss_encryption can be chosen.)	rw  r   
account_idrole_arnr  inventory_formatr  sse_kms_encryptionsse_oss_encryption)r   r  r  r  r  r  r  r  r   r   r   r     s   	
z#InventoryBucketDestination.__init__rt  r    r   r   r   r   r    s    r  c                   @   r*  ) InventoryServerSideEncryptionKMSug   服务端使用kms加密清单的加密项。

    :param key_id: kms key id
    :type key_id: str
    c                 C   rL  r   )key_id)r   r  r   r   r   r     r   z)InventoryServerSideEncryptionKMS.__init__Nr    r   r   r   r   r    r0  r  c                   @   s   e Zd ZdZdS ) InventoryServerSideEncryptionOSSu-   OSS服务端加密清单的加密项。

    N)r!   r"   r#   r$   r   r   r   r   r    s    r  c                   @   r*  )GetInventoryConfigurationResultu,   获取清单配置的操作返回结果
    c                 C   r[  r   )rj   r   rl  rq   r   r   r   r     r\  z(GetInventoryConfigurationResult.__init__Nr    r   r   r   r   r    r  r  c                   @   r*  )!ListInventoryConfigurationsResultu]  列出清单配置的操作返回结果

    :param inventory_configurations: list of class:`InventoryConfiguration <oss2.models.InventoryConfiguration>`
    :type inventory_configurations: list 

    :param is_truncated: 罗列结果是否是截断的， true: 本地罗列结果并不完整, False: 所有清单配置项已经罗列完毕。
    :type is_truncated: bool 

    :param continuaiton_token: 本地罗列操作所携带的continuaiton_token
    :type continuaiton_token: str

    :param next_continuation_token: 下一个罗列操作携带的token
    :type next_continuation_token: str
    c                 C   s(   t | | g | _d | _d | _d | _d S r   )rj   r   inventory_configurationsr   continuaiton_tokenr   rq   r   r   r   r     s
   
z*ListInventoryConfigurationsResult.__init__Nr    r   r   r   r   r    s    r  	ExpeditedBulkc                   @   r*  )ResotreJobParametersu  冷归档类型（ColdArchive）文件的解冻优先级配置。
    请使用class:`RestoreJobParameters <oss2.models.RestoreJobParameters>`代替此类。

    :param tier: 解冻优先级, 取值范围: 
        oss2.models.RESTORE_TIER_EXPEDITED: 1个小时之内解冻完成。
        oss2.models.RESTORE_TIER_STANDARD: 5小时之内解冻完成。
        oss2.models.RESTORE_TIER_BULK: 10小时之内解冻完成。
    :type tier: str
    c                 C   rL  r   tierr   r  r   r   r   r   ,  r   zResotreJobParameters.__init__Nr    r   r   r   r   r  "  s    	r  c                   @   r*  )RestoreJobParametersud  冷归档类型（ColdArchive）文件的解冻优先级配置。

    :param tier: 解冻优先级, 取值范围:
        oss2.models.RESTORE_TIER_EXPEDITED: 1个小时之内解冻完成。
        oss2.models.RESTORE_TIER_STANDARD: 5小时之内解冻完成。
        oss2.models.RESTORE_TIER_BULK: 10小时之内解冻完成。
    :type tier: str
    c                 C   rL  r   r  r  r   r   r   r   8  r   zRestoreJobParameters.__init__Nr    r   r   r   r   r  /      r  c                   @   r   )RestoreConfigurationu  Archive, ColdArchive类型文件的解冻配置

    :param days: 解冻之后保持解冻状态的天数。
    :type days: int

    :param job_parameters: 解冻优先级配置, 解冻冷归档（ColdArchive）类型的文件才需要此配置。如果不配置此项，
            解冻优先级默认为 oss2.models.RESTORE_TIER_STANDARD: 5小时之内解冻完成。
    :type job_parameters: class:`RestoreJobParameters <oss2.models.RestoreJobParameters>`
    Nc                 C   r,  r   )r  job_parameters)r   r  r  r   r   r   r   E  r/  zRestoreConfiguration.__init__r   r    r   r   r   r   r  ;  r  r  c                           e Zd ZdZ fddZ  ZS )InitBucketWormResultu]   创建合规保留策略的返回结果

    :param str worm_id: 合规保留策略的id
    c                    r   r   )ru   r  r   worm_idrq   r|   r   r   r   O     
zInitBucketWormResult.__init__r!   r"   r#   r$   r   r   r   r   r|   r   r  J      r  c                       r  )GetBucketWormResultu]   获取合规保留策略的返回结果

    :param str worm_id: 合规保留策略的id
    c                    ,   t t| | d | _d | _d | _d | _d S r   )ru   r  r   r  
worm_stateretention_period_daysr
  rq   r|   r   r   r   X  s
   
zGetBucketWormResult.__init__r  r   r   r|   r   r  S  r  r  c                   @   sX   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
Z													dddZdS )ReplicationRuleuC  创建Bucket指定跨区域复制规则

    :param str rule_id: 规则ID。
    :param str target_bucket_name: 目的地Bucket名称。
    :param str target_bucket_location: 目的地Bucket所处地域。
    :param str target_transfer_type: 跨区域复制时使用的数据链路。
    :param list prefix_list: 待复制Object的前缀，只有匹配该前缀的Object才会被复制。
    :param list action_list: 新写入的数据与历史数据需要遵循的Action类型, 其中"ALL" 表示"PUT", "ABORT"与"DELETE"操作。
            均会被同步到Bucket，"PUT"表示同步到目标Bucket的写入操作。
    :param bool is_enable_historical_object_replication: 指定是否复制历史数据。
    :param str sync_role_name: 授权OSS使用哪个角色来进行数据复制。如果指定使用SSE-KMS加密目标对象，则必须指定sync_role。
    :param str replica_kms_keyid: 指定SSE-KMS密钥ID。
    :param str sse_kms_encrypted_objects_status: 指定OSS是否复制通过SSE-KMS加密创建的对象。
            取值范围[ReplicationRule.ENABLED, ReplicationRule.DISABLED]。
    :param str status: 复制状态，由服务端赋值，可能为:starting, doing 或closing。
    :param str target_cloud: 目标云名称
    :param str target_cloud_location: 目标云内目标Bucket所处的Location
    r  r  ALLPUTDELETEABORTstartingdoingclosingNc                 C   s   || _ || _|| _|| _|pg | _|pg | _|d ur#t|ts#td|| _	|| _
|	| _|
d ur<|
| j| jfvr<td|
| _|| _|| _|| _d S )NzCis_enable_historical_object_replication should be instance of bool.zCsse_kms_encrypted_objects_status should be "Enabled" or "Disabled".)rule_idtarget_bucket_nametarget_bucket_locationtarget_transfer_typer   action_listr1   ro   r   'is_enable_historical_object_replicationsync_role_namereplica_kms_keyidr  r   sse_kms_encrypted_objects_statusrl   target_cloudtarget_cloud_location)r   r  r  r  r  r   r  r  r  r  r  rl   r  r  r   r   r   r     s"   


zReplicationRule.__init__)NNNNNNNNNNNNN)r!   r"   r#   r$   r  r  r  r  r  r  STARTINGDOINGCLOSINGr   r   r   r   r   r  d  s2    r  c                   @   rE  )BucketReplicationProgressu.  Bucket跨区域复制进度

    :param str rule_id: 规则ID。
    :param str target_bucket_name: 目的地Bucket名称。
    :param str target_bucket_location: 目的地Bucket所处地域。
    :param str target_transfer_type: 跨区域复制时使用的数据链路。
    :param list prefix_list: 待复制Object的前缀，只有匹配该前缀的Object才会被复制。
    :param list action_list: 新写入的数据与历史数据需要遵循的Action类型, 其中"ALL" 表示"PUT", "ABORT"与"DELETE"操作。
            均会被同步到Bucket，"PUT"表示同步到目标Bucket的写入操作。
    :param bool is_enable_historical_object_replication: 指定是否复制历史数据。
    :param str status: 复制状态，可能为starting, doing 或closing。
    :param float historical_object_progress: 已复制历史数据的百分比。
    :param str new_object_progress: 数据复制到目标Bucket的时间点。
            例如Thu, 24 Sep 2015 15:39:18 GMT，表示早于这个时间点写入的数据都已复制到目标Bucket。
    Nc                 C   sL   || _ || _|| _|| _|pg | _|pg | _|| _|| _|	pd| _|
| _	d S rY  )
r  r  r  r  r   r  r  rl   historical_object_progressnew_object_progress)r   r  r  r  r  r   r  r  rl   r  r  r   r   r   r     s   



z"BucketReplicationProgress.__init__rG  r    r   r   r   r   r    s    r  c                   @   r*  )LocationTransferTypeu   包含TransferType到Location信息

    :param str location: 可复制到的目标Bucket所在的地域。
    :param str transfer_type: 跨区域复制时使用的数据传输类型。
    c                 C   s   d | _ d | _d S r   )r	  transfer_typerV   r   r   r   r     r/  zLocationTransferType.__init__Nr    r   r   r   r   r    r0  r  c                       r  )GetBucketReplicationResultu  获取Bucket跨区域复制规则的结果

    :param rule_list: Bucket跨区域复制到规则集合，目前只允许配置一条规则，所以返回list大小最多为1。
    :type rule_list:  list， 元素类型为class:`ReplicationRule <oss2.models.ReplicationRule>`。
    c                       t t| | g | _d S r   )ru   r  r   	rule_listrq   r|   r   r   r     r  z#GetBucketReplicationResult.__init__r  r   r   r|   r   r        r  c                       r  )"GetBucketReplicationLocationResultu  获取可复制到的目标存储空间（Bucket）所在的地域信息

    :param location_list: 可复制到的目标Bucket所在的地域集合
    :type location_list: list， 元素类型为str, 比如'oss-cn-beijing'
    :param location_transfer_type_list: 包含TransferType到Location信息列表。
    :type location_transfer_type_list: list, 元素类型为:class:`LocationTransferType <oss2.models.LocationTransferType>`。
    c                    r   r   )ru   r  r   location_listlocation_transfer_type_listrq   r|   r   r   r        
z+GetBucketReplicationLocationResult.__init__r  r   r   r|   r   r        r  c                       r  )"GetBucketReplicationProgressResultu   获取某个存储空间（Bucket）的跨区域复制进度结果。

    :param progress: Bucket跨区域复制进度
    :type progress: class:`BucketReplicationProgress <oss2.models.BucketReplicationProgress>`。
    c                    r   r   )ru   r  r   progressrq   r|   r   r   r     r  z+GetBucketReplicationProgressResult.__init__r  r   r   r|   r   r    r  r  c                       r  )#GetBucketTransferAccelerationResultu   获取目标存储空间（Bucket）的传输加速配置。

    :param enabled: Bucket传输加速状态
    :type progress: class:`GetBucketTransferAccelerationResult <oss2.models.GetBucketTransferAccelerationResult>`。
    c                    r   r   )ru   r  r   r  rq   r|   r   r   r     r  z,GetBucketTransferAccelerationResult.__init__r  r   r   r|   r   r    r  r  c                       r  )CreateBucketCnameTokenResultu  创建域名所有权验证所需的CnameToken。

    :param str bucket: 绑定Cname的Bucket名称。
    :param str cname: 绑定的Cname名称。
    :param str token: OSS返回的CnameToken。
    :param str expire_time: CnameToken的有效时间。
    c                    r  r   )ru   r  r   r  cnametokenexpire_timerq   r|   r   r   r   	  
   
z%CreateBucketCnameTokenResult.__init__r  r   r   r|   r   r  	      r  c                       r  )GetBucketCnameTokenResultu   获取已创建的CnameToken。

    :param str bucket: 绑定Cname的Bucket名称。
    :param str cname: 绑定的Cname名称。
    :param str token: OSS返回的CnameToken。
    :param str expire_time: CnameToken的有效时间。
    c                    r  r   )ru   r  r   r  r  r  r  rq   r|   r   r   r   	  r  z"GetBucketCnameTokenResult.__init__r  r   r   r|   r   r  	  r  r  c                       r  )ListBucketCnameResultu$  查询某个存储空间（Bucket）下绑定的所有Cname列表。

    :param str bucket: 已绑定Cname列表的Bucket名称。
    :param str owner: Bucket Owner名称。
    :param str cname: Cname信息列表的容器。元素类型为:class:`CnameInfo <oss2.models.CnameInfo>`。
    c                    &   t t| | d | _d | _g | _d S r   )ru   r  r   r  r   r  rq   r|   r   r   r   .	     
zListBucketCnameResult.__init__r  r   r   r|   r   r  &	  r  r  c                   @   r*  )	CnameInfou-  Cname信息列表。

    :param str domain: 自定义域名。
    :param str last_modified: 绑定自定义域名的时间
    :param str status: 域名所处状态。
    :param class certificate: 证书信息的容器。元素类型为:class:`CertificateInfo <oss2.models.CertificateInfo>`。
    c                 C   s"   d | _ d | _d | _d | _d | _d S r   )domainr   rl   is_purge_cdn_cachecertificaterV   r   r   r   r   >	  r   zCnameInfo.__init__Nr    r   r   r   r   r  5	  r  r  c                   @   r*  )CertificateInfouc  证书信息。

    :param str type: 证书来源。
    :param str cert_id: 证书ID。
    :param str status: 证书状态。
    :param str creation_date: 证书绑定时间。
    :param str fingerprint: 证书签名。
    :param str valid_start_date: 证书有效期起始时间。
    :param str valid_end_date: 证书有效期终止时间。
    c                 C   s.   d | _ d | _d | _d | _d | _d | _d | _d S r   )r   cert_idrl   r
  fingerprintvalid_start_datevalid_end_daterV   r   r   r   r   R	  s   
zCertificateInfo.__init__Nr    r   r   r   r   r  F	  s    r  c                   @   r   )PutBucketCnameRequestu   绑定证书请求。

    :param str domain: 自定义域名。
    :param class cert: 证书。元素类型为:class:`CertInfo <oss2.models.CertInfo>`。

    Nc                 C   r,  r   )r  cert)r   r  r  r   r   r   r   d	  r/  zPutBucketCnameRequest.__init__r   r    r   r   r   r   r  \	  r  r  c                   @   ru  )CertInfou@  绑定证书信息请求参数。

    :param str cert_id: 证书ID。
    :param str certificate: 证书公钥。
    :param str private_key: 证书私钥。
    :param str previous_cert_id: 当前证书ID。
    :param bool force: 是否强制覆盖证书
    :param bool delete_certificate: 是否删除证书。
    Nc                 C   rw  r   )r  r  private_keyprevious_cert_idforcedelete_certificate)r   r  r  r  r  r  r  r   r   r   r   t	  r|  zCertInfo.__init__r  r    r   r   r   r   r  i	  s
    
r  c                   @   s&   e Zd ZdZ						dddZdS )	MetaQueryuQ  元数据索引库信息查询信息设置

    :param str next_token: 当Object总数大于设置的MaxResults时，用于翻页的token。
    :param str max_results: 返回Object的最大个数，取值范围为0~200。不设置此参数或者设置为0时，则默认值为100。
    :param str query: 查询条件。
    :param str sort: 对指定字段排序。
    :param str order: 排序方式。asc（默认）：升序; desc：降序。
    :param list aggregations: 聚合操作信息的容器。元素类型为:class:`AggregationsRequest <oss2.models.AggregationsRequest>`。
    Nc                 C   s0   || _ t|| _|| _|| _|| _|pg | _d S r   )
next_tokenr:   max_resultsquerysortorderaggregations)r   r  r  r  r  r  r  r   r   r   r   	  s   
zMetaQuery.__init__r  r    r   r   r   r   r  ~	  s    r  c                   @   ru  )AggregationsRequestu   聚合操作信息的容器。

    :param str field: 字段名称。
    :param str operation: 聚合操作中的操作符。
    Nc                 C   r,  r   )field	operation)r   r  r  r   r   r   r   	  s   
zAggregationsRequest.__init__rX   r    r   r   r   r   r  	  s
    r  c                       r  )GetBucketMetaQueryResultu  获取指定存储空间（Bucket）的元数据索引库信息。

    :param str state: 元数据索引库的状态。
    :param str phase: 当前扫描类型。
    :param str create_time: 元数据索引库的创建时间，遵循RFC 3339标准格式，格式为YYYY-MM-DDTHH:mm:ss+TIMEZONE。
    :param str update_time: 元数据索引库的更新时间，遵循RFC 3339标准格式，格式为YYYY-MM-DDTHH:mm:ss+TIMEZONE。
    c                    r  r   )ru   r  r   statephasecreate_timeupdate_timerq   r|   r   r   r   	  r  z!GetBucketMetaQueryResult.__init__r  r   r   r|   r   r  	  r  r  c                       r  )DoBucketMetaQueryResultu  查询满足指定条件的文件（Object），并按照指定字段和排序方式列出文件信息。

    :param str next_token: Object完整路径。
    :param list files: Object信息的容器。元素类型为:class:`MetaQueryFile <oss2.models.MetaQueryFile>`。
    :param list aggregations: 聚合操作信息的容器。元素类型为:class:`AggregationsInfo <oss2.models.AggregationsInfo>`。
    c                    s&   t t| | d | _g | _g | _d S r   )ru   r  r   r  filesr  rq   r|   r   r   r   	  r  z DoBucketMetaQueryResult.__init__r  r   r   r|   r   r  	  r  r  c                   @   r*  )MetaQueryFileu  Object信息的容器。

    :param str file_name: Object完整路径。
    :param int size: Object大小。单位为字节。
    :param str file_modified_time: Object的最近一次修改时间，遵循RFC 3339标准格式，格式为YYYY-MM-DDTHH:mm:ss.ms+TIMEZONE。
    :param str file_create_time: Object的创建时间，遵循RFC 3339标准格式，格式为YYYY-MM-DDTHH:mm:ss.ms+TIMEZONE。
    :param str file_access_time: Object的智能分层时间，遵循RFC 3339标准格式，格式为YYYY-MM-DDTHH:mm:ss.ms+TIMEZONE。
    :param str oss_object_type: Object的类型。
    :param str oss_storage_class: Object的存储类型。
    :param str object_acl: Object的访问权限。
    :param str etag: Object生成时会创建相应的ETag ，ETag用于标识一个Object的内容。
    :param str oss_crc64: Object的64位CRC值。该64位CRC根据ECMA-182标准计算得出。
    :param int oss_tagging_count: Object的标签个数。
    :param list oss_tagging: 标签信息的容器。元素类型为:class:`OSSTaggingInfo <oss2.models.OSSTaggingInfo>`。
    :param list oss_user_meta: 用户自定义元数据的容器。元素类型为:class:`OSSUserMetaInfo <oss2.models.OSSUserMetaInfo>`。
    c                 C   sR   d | _ d | _d | _d | _d | _d | _d | _d | _d | _d | _	d | _
g | _g | _d S r   )	file_namer   file_modified_timefile_create_timefile_access_timeoss_object_typeoss_storage_class
object_aclr   	oss_crc64oss_tagging_countoss_taggingoss_user_metarV   r   r   r   r   	  s   
zMetaQueryFile.__init__Nr    r   r   r   r   r  	  s    r  c                   @   r*  )AggregationsInfou@  聚合操作信息的容器。

    :param str field: 字段名称。
    :param str operation: 聚合操作中的操作符。
    :param float value: 聚合操作的结果值。
    :param list groups: 分组聚合的结果列表。元素类型为:class:`AggregationGroupInfo <oss2.models.AggregationGroupInfo>`。
    c                 C   s   d | _ d | _d | _g | _d S r   )r  r  r  groupsrV   r   r   r   r   	  rc  zAggregationsInfo.__init__Nr    r   r   r   r   r   	  r  r   c                   @   r*  )OSSTaggingInfou   标签信息的容器。

    :param key: 标签或者用户自定义元数据的Key。
    :type key: str
    :param value: 标签或者用户自定义元数据的Value。
    :type value: str
    c                 C   r,  r   r  r  r   r   r   r   
  r/  zOSSTaggingInfo.__init__Nr    r   r   r   r   r  	  r  r  c                   @   r*  )OSSUserMetaInfou   用户自定义元数据的容器。

    :param key: 用户自定义元数据的 key。
    :type key: str
    :param value: 用户自定义元数据的 value。
    :type value: str
    c                 C   r,  r   r  r  r   r   r   r   
  r/  zOSSUserMetaInfo.__init__Nr    r   r   r   r   r  
  r  r  c                   @   r*  )AggregationGroupInfou   分组聚合的结果列表。

    :param value: 分组聚合的值。
    :type value: str
    :param count: 分组聚合的总个数。
    :type count: int
    c                 C   r,  r   )r  count)r   r  r  r   r   r   r   
  r/  zAggregationGroupInfo.__init__Nr    r   r   r   r   r  
  r  r  c                       r  )GetBucketAccessMonitorResultu   获取目标存储空间（Bucket）的访问跟踪状态。

    :param class access_monitor: Bucket访问跟踪状态容器. 元素类型为:class:`AccessMonitorInfo <oss2.models.AccessMonitorInfo>`。
    c                    r   r   )ru   r  r   rU  rq   r|   r   r   r   &
  r  z%GetBucketAccessMonitorResult.__init__r  r   r   r|   r   r  !
  r  r  c                   @   r*  )AccessMonitorInfous   获取目标存储空间（Bucket）的访问跟踪状态。

    :param str status: Bucket访问跟踪状态.
    c                 C   rL  r   r,  r-  r   r   r   r   /
  r   zAccessMonitorInfo.__init__Nr    r   r   r   r   r  *
  s    r  c                   @   r   )LifecycleFilteru  规则的条件参数容器。

    :param list filter_not: 规则的匹配容器。 元素类型为:class:`FilterNot <oss2.models.FilterNot>`。
    :param int object_size_greater_than: object大小大于.
    :param int object_size_less_than: object大小小于.
    Nc                 C   s   |pg | _ || _|| _d S r   )
filter_notobject_size_greater_thanobject_size_less_than)r   r	  r
  r  r   r   r   r   :
  s   

zLifecycleFilter.__init__r   r    r   r   r   r   r  2
  r  r  c                   @   r   )	FilterNotu   规则的匹配容器。

    :param str prefix: 排除规则所适用的前缀。
    :param class tag: 排除规则所适用的对象标签。元素类型为:class:`FilterNotTag <oss2.models.FilterNotTag>`。
    Nc                 C   r,  r   )r  tag)r   r  r  r   r   r   r   F
  r/  zFilterNot.__init__rX   r    r   r   r   r   r  ?
  rd  r  c                   @   r   )FilterNotTagu[   对象标签。

    :param str key: 标签key。
    :param str value: 标签value。
    Nc                 C   r,  r   r  r  r   r   r   r   Q
  r/  zFilterNotTag.__init__rX   r    r   r   r   r   r  J
  rd  r  c                       r  )GetBucketResourceGroupResultu   显示资源组ID的容器。

    :param resource_group_id: Bucket所属的资源组ID
    :type progress: class:`GetBucketResourceGroupResult <oss2.models.GetBucketResourceGroupResult>`。
    c                    r   r   )ru   r  r   r  rq   r|   r   r   r   \
  r  z%GetBucketResourceGroupResult.__init__r  r   r   r|   r   r  V
  r  r  c                       r  )GetBucketStyleResultu?  获取图片样式内容的容器。

    :param name: 图片样式名称。
    :param content: 图片样式内容。
    :param create_time: 图片样式创建时间。
    :param last_modify_time: 图片样式修改时间。
    :type progress: class:`GetBucketStyleResult <oss2.models.GetBucketStyleResult>`。
    c                    r  r   )ru   r  r   r  contentr  last_modify_timerq   r|   r   r   r   j
  r  zGetBucketStyleResult.__init__r  r   r   r|   r   r  a
  r  r  c                   @   r   )BucketStyleInfou/  图片样式内容的容器。

    :param name: 图片样式名称。
    :param content: 图片样式内容。
    :param create_time: 图片样式创建时间。
    :param last_modify_time: 图片样式修改时间。
    :type progress: class:`BucketStyleInfo <oss2.models.BucketStyleInfo>`。
    Nc                 C   r^  r   )r  r  r  r  )r   r  r  r  r  r   r   r   r   {
  rc  zBucketStyleInfo.__init__r  r    r   r   r   r   r  r
  ro  r  c                       r  )ListBucketStyleResultu   查询图片样式信息列表的容器。

    :param str styles: 图片样式内容的容器。元素类型为:class:`BucketStyleInfo <oss2.models.BucketStyleInfo>`。
    c                    r  r   )ru   r  r   stylesrq   r|   r   r   r   
  r  zListBucketStyleResult.__init__r  r   r   r|   r   r  
  r  r  c                   @   r   )
RegionInfou&  地域信息。

    :param region: 地域ID。
    :param internet_endpoint: 地域对应的外网Endpoint。
    :param internal_endpoint: 地域对应的内网Endpoint。
    :param accelerate_endpoint: 地域对应的传输加速Endpoint。取值固定为oss-accelerate.aliyuncs.com。
    Nc                 C   r^  r   )r  internet_endpointinternal_endpointaccelerate_endpoint)r   r  r  r  r  r   r   r   r   
  rc  zRegionInfo.__init__r  r    r   r   r   r   r  
  r  r  c                       r  )DescribeRegionsResultu   地域信息列表。

    :param list regions: 地域信息列表。元素类型为:class:`RegionInfo <oss2.models.RegionInfo>`。
    c                    r  r   )ru   r  r   regionsrq   r|   r   r   r   
  r  zDescribeRegionsResult.__init__r  r   r   r|   r   r  
  r  r  c                       r  )AsyncProcessObjectu   异步多媒体处理返回信息。

    :param str event_id: 事件id。
    :param str async_request_id: 请求id。
     :param str task_id: 任务id。
    c                    s&   t t| | d | _d | _d | _d S r   )ru   r  r   event_idasync_request_idr[  rq   r|   r   r   r   
  r  zAsyncProcessObject.__init__r  r   r   r|   r   r  
  r  r  c                   @   r   )CallbackPolicyInfou   回调policy信息。

    :param policy_name: policy名称。
    :param callback: 回调参数。
    :param callback_var: 自定义回调参数。
    Nc                 C   r  r   )policy_namerW  callback_var)r   r   rW  r!  r   r   r   r   
  r\   zCallbackPolicyInfo.__init__r   r    r   r   r   r   r  
  rd  r  c                   @   r   )CallbackPolicyu   设置回调policy请求。

    :param list callback_policies: 回调策略集合。 元素类型为:class:`<oss2.models.CallbackPolicyInfo>`。
    Nc                 C   r   r   )callback_policies)r   r#  r   r   r   r   
  r   zCallbackPolicy.__init__r   r    r   r   r   r   r"  
  r  r"  c                       r  )CallbackPolicyResultu   返回回调policy。

    :param list callback_policies: 回调策略集合。元素类型为:class:`<oss2.models.CallbackPolicyInfo>`。
    c                    r  r   )ru   r$  r   r#  rq   r|   r   r   r   
  r  zCallbackPolicyResult.__init__r  r   r   r|   r   r$  
  r  r$  c                       r  ) GetBucketArchiveDirectReadResultuS   获取归档直读。

    :param bool enabled: Bucket是否开启归档直读
    c                    r   r   )ru   r%  r   r  rq   r|   r   r   r   
  r  z)GetBucketArchiveDirectReadResult.__init__r  r   r   r|   r   r%  
  r  r%  c                   @   s   e Zd ZdZdddZdS )BucketTlsVersionu   BucketTLS版本设置。

    :param bool tls_enabled: 是否为Bucket开启TLS版本设置。
    :param tls_version: TLS版本。
    FNc                 C   r,  r   )tls_enabledtls_version)r   r'  r(  r   r   r   r   
  r/  zBucketTlsVersion.__init__)FNr    r   r   r   r   r&  
  r  r&  c                       r  )HttpsConfigResultu   返回Bucket TLS版本信息。

    :param bool tls_enabled: bucket是否开启TLS版本设置。
    :param tls_version: TLS版本。
    c                    s    t t| | d | _g | _d S r   )ru   r)  r   r'  r(  rq   r|   r   r   r   
  r  zHttpsConfigResult.__init__r  r   r   r|   r   r)  
      r)  c                   @   r   )DataRedundancyTransitionInfoS  冗余转换任务信息。

    :param str bucket: 存储桶名称。
    :param str task_id: 存储冗余转换任务的ID。
    :param str create_time: 存储冗余转换任务的创建时间。
    :param str start_time: 存储冗余转换任务的开始时间。任务处于Processing、Finished状态时，有该字段。
    :param str end_time: 存储冗余转换任务的结束时间。任务处于Finished状态时，有该字段。
    :param str transition_status: 存储冗余转换任务的状态。
    :param int estimated_remaining_time: 存储冗余转换任务的预计剩余耗时。单位为小时。任务处于Processing、Finished状态时，有该字段。
    :param int process_percentage: 存储冗余转换任务的进度百分比。取值范围：0-100。任务处于Processing、Finished状态时，有该字段。
    Nc	           	      C   r   r   )r  r[  r  r  r  transition_statusestimated_remaining_timeprocess_percentage)	r   r  r[  r  r  r  r-  r.  r/  r   r   r   r     s   
z%DataRedundancyTransitionInfo.__init__)NNNNNNNNr    r   r   r   r   r+  
  r%   r+  c                       r  )"DataRedundancyTransitionInfoResultr,  c                    sD   t t| | d | _d | _d | _d | _d | _d | _d | _	d | _
d S r   )ru   r0  r   r  r[  r  r  r  r-  r.  r/  rq   r|   r   r   r     s   
z+DataRedundancyTransitionInfoResult.__init__r  r   r   r|   r   r0    s    r0  c                       r  )$CreateDataRedundancyTransitionResultu`   存储冗余转换任务的容器。

    :param str task_id: 存储冗余转换任务的ID
    c                    r   r   )ru   r1  r   r[  rq   r|   r   r   r   ,  r  z-CreateDataRedundancyTransitionResult.__init__r  r   r   r|   r   r1  &  r  r1  c                       r  )&ListUserDataRedundancyTransitionResultu  某个Bucket下所有的存储冗余转换任务。

    :param bool is_truncated: 罗列结果是否是截断的， true: 本地罗列结果并不完整, False: 所有清单配置项已经罗列完毕。
    :param str next_continuation_token: 下一个罗列操作携带的token
    :param list data_redundancy_transition: 冗余转换任务信息列表。元素类型为:class:`DataRedundancyTransitionInfo <oss2.models.DataRedundancyTransitionInfo>`。
    c                    r  r   )ru   r2  r   r   r   data_redundancy_transitionsrq   r|   r   r   r   9  r  z/ListUserDataRedundancyTransitionResult.__init__r  r   r   r|   r   r2  1  r  r2  c                       r  )(ListBucketDataRedundancyTransitionResultu   某个Bucket下所有的存储冗余转换任务。

    :param list data_redundancy_transition: 冗余转换任务信息列表。元素类型为:class:`DataRedundancyTransitionInfo <oss2.models.DataRedundancyTransitionInfo>`。
    c                    r  r   )ru   r4  r   r3  rq   r|   r   r   r   F  r  z1ListBucketDataRedundancyTransitionResult.__init__r  r   r   r|   r   r4  @  r  r4  c                   @   r   )CreateAccessPointRequestu   创建接入点请求信息。

    :param str access_point_name: 接入点名称。
    :param str network_origin: 网络类型。
    :param class vpc: vpc信息。元素类型为:class:`<oss2.models.AccessPointVpcConfiguration>`。
    Nc                 C   r  r   )access_point_namenetwork_originvpc)r   r6  r7  r8  r   r   r   r   R  r\   z!CreateAccessPointRequest.__init__r   r    r   r   r   r   r5  K  rd  r5  c                       r  )CreateAccessPointResultuu   创建接入点返回信息。

    :param str access_point_arn: 接入点arn。
    :param str alias: 别名。
    c                        t t| | d | _d | _d S r   )ru   r9  r   access_point_arnaliasrq   r|   r   r   r   _  r  z CreateAccessPointResult.__init__r  r   r   r|   r   r9  X  r*  r9  c                   @   r   )AccessPointVpcConfigurationu8   vpc信息。

    :param str vpc_id: vpc网络id。
    Nc                 C   rL  r   )vpc_id)r   r>  r   r   r   r   j  r   z$AccessPointVpcConfiguration.__init__r   r    r   r   r   r   r=  e      r=  c                   @   r   )PublicAccessBlockConfigurationu   保存阻止公共访问信息。

    :param bool block_public_access: 获取接入点的阻止公共访问配置信息。
    Nc                 C   rL  r   )block_public_access)r   rA  r   r   r   r   r  r   z'PublicAccessBlockConfiguration.__init__r   r    r   r   r   r   r@  m  r?  r@  c                       r  )GetAccessPointResultu  获取接入点返回信息。

    :param str access_point_name: 接入点名称。
    :param str bucket: bucket名称。
    :param str account_id: 账户id。
    :param str network_origin: 网络类型。
    :param class vpc: vpc信息。元素类型为:class:`<oss2.models.AccessPointVpcConfiguration>`。
    :param str access_point_arn: 接入点arn。
    :param str creation_date: 创建日期。
    :param str alias: 别名。
    :param str access_point_status: 状态。
    :param class endpoints: 接入点endpoint。元素类型为:class:`<oss2.models.AccessPointEndpoints>`。
    :param class public_access_block_configuration: 获取接入点的阻止公共访问配置。元素类型为:class:`<oss2.models.PublicAccessBlockConfiguration>`。
    c                    sV   t t| | d | _d | _d | _d | _d | _d | _d | _	d | _
d | _d | _d | _d S r   )ru   rB  r   r6  r  r  r7  r8  r;  r
  r<  access_point_status	endpoints!public_access_block_configurationrq   r|   r   r   r     s   
zGetAccessPointResult.__init__r  r   r   r|   r   rB  w  s    rB  c                   @   r   )AccessPointEndpointsu   接入点endpoint信息。

    :param str public_endpoint: 公共endpoint。
    :param str internal_endpoint: 内部endpoint。
    Nc                 C   r,  r   )public_endpointr  )r   rG  r  r   r   r   r     r/  zAccessPointEndpoints.__init__rX   r    r   r   r   r   rF    r  rF  c                       r  )GetAccessPointPolicyResultu[   获取接入点策略信息。

    :param str access_point_policy: 接入点策略。
    c                    r   r   )ru   rH  r   access_point_policyrq   r|   r   r   r     r  #GetAccessPointPolicyResult.__init__r  r   r   r|   r   rH    r  rH  c                   @   ri   )rH  c                 C   r  r   r0  rq   r   r   r   r     r2  rJ  Nr]   r   r   r   r   rH    rr   c                   @   r   )AccessPointInfouK  接入点信息。

    :param str access_point_name: 接入点名称。
    :param str bucket: bucket名称。
    :param str network_origin: 网络类型。
    :param class vpc: vpc信息。元素类型为:class:`<oss2.models.AccessPointVpcConfiguration>`。
    :param str alias: 别名。
    :param str status: 状态。
    Nc                 C   rw  r   )r6  r  r7  r8  r<  rl   )r   r6  r  r7  r8  r<  rl   r   r   r   r     s   
zAccessPointInfo.__init__r  r    r   r   r   r   rK    r  rK  c                       r  )ListAccessPointResultu  返回所有接入点信息。

        :param str account_id: 账户id。
        :param int max_keys: List时返回的最多的接入点的条数。
        :param bool is_truncated: 是否列举完所有的接入点。
        :param str next_continuation_token: 下一个罗列操作携带的token。
        :param str marker: 标记位。
        :param str access_points: 接入点集合。元素类型为:class:`<oss2.models.AccessPointInfo>`
    c                    s8   t t| | d | _d | _d | _d | _d | _g | _d S r   )	ru   rL  r   r  r  r   r   r  access_pointsrq   r|   r   r   r        
zListAccessPointResult.__init__r  r   r   r|   r   rL        
rL  c                       r  )GetPublicAccessBlockResultu~   保存阻止公共访问信息的容器。

    :param block_public_access: OSS全局阻止公共访问的配置信息。
    c                    r   r   )ru   rP  r   rA  rq   r|   r   r   r     r  z#GetPublicAccessBlockResult.__init__r  r   r   r|   r   rP    r  rP  c                       r  ) GetBucketPublicAccessBlockResultu   保存bucket阻止公共访问信息的容器。

    :param block_public_access: Bucket的阻止公共访问配置信息。
    c                    r   r   )ru   rQ  r   rA  rq   r|   r   r   r     r  z)GetBucketPublicAccessBlockResult.__init__r  r   r   r|   r   rQ    r  rQ  c                       r  )%GetAccessPointPublicAccessBlockResultu   保存access point阻止公共访问信息的容器。

    :param block_public_access: 接入点的阻止公共访问配置信息。
    c                    r   r   )ru   rR  r   rA  rq   r|   r   r   r     r  z.GetAccessPointPublicAccessBlockResult.__init__r  r   r   r|   r   rR    r  rR  c                   @   r5  )QoSConfigurationuJ  Qos信息

    :param total_upload_bw: 总上传带宽, 单位Gbps
    :type total_upload_bw: int

    :param intranet_upload_bw: 内网上传带宽, 单位Gbps
    :type intranet_upload_bw: int

    :param extranet_upload_bw: 外网上传带宽, 单位Gbps
    :type extranet_upload_bw: int

    :param total_download_bw: 总下载带宽, 单位Gbps
    :type total_download_bw: int

    :param intranet_download_bw: 内外下载带宽, 单位Gbps
    :type intranet_download_bw: int

    :param extranet_download_bw: 外网下载带宽, 单位Gbps
    :type extranet_download_bw: int

    :param total_qps: 总qps, 单位请求数/s
    :type total_qps: int

    :param intranet_qps: 内网访问qps, 单位请求数/s
    :type intranet_qps: int

    :param extranet_qps: 外网访问qps, 单位请求数/s
    :type extranet_qps: int
    Nc
           
      C   r7  r   r8  rB  r   r   r   r     rC  zQoSConfiguration.__init__rD  r    r   r   r   r   rS    s    rS  c                   @   r   )RequesterQoSInfou   流控配置信息。

    :param str requester: 请求者UID
    :param list qos_configuration: 流控配置信息。元素类型为:class:`QoSConfiguration <oss2.models.QoSConfiguration>`。
    Nc                 C   r,  r   )	requesterqos_configuration)r   rU  rV  r   r   r   r   2  s   
zRequesterQoSInfo.__init__rX   r    r   r   r   r   rT  +  rd  rT  c                       r  )RequesterQoSInfoResultu   流控配置。

    :param str requester: 请求者UID
    :param list qos_configuration: 流控配置信息。元素类型为:class:`QoSConfiguration <oss2.models.QoSConfiguration>`。
    c                    r:  r   )ru   rW  r   rU  rV  rq   r|   r   r   r   ?  r  zRequesterQoSInfoResult.__init__r  r   r   r|   r   rW  8  r*  rW  c                       r  )ResourcePoolInfoResultu`  资源池的基本信息。

    :param str region: 资源池所属的地域
    :param str name: 资源池的名称
    :param str owner: 资源池所属的用户
    :param str create_time: 资源池创建的时间
    :param list qos_configuration: 流控配置信息。元素类型为:class:`QoSConfiguration <oss2.models.QoSConfiguration>`。
    c                    s2   t t| | d | _d | _d | _d | _d | _d S r   )ru   rX  r   r  r  r   r  rV  rq   r|   r   r   r   O     
zResourcePoolInfoResult.__init__r  r   r   r|   r   rX  E      	rX  c                   @   r   )ResourcePoolInfou~   资源池的简单信息。

    :param str name: 资源池的名称
    :param str create_time: 资源池创建的时间
    Nc                 C   r,  r   )r  r  )r   r  r  r   r   r   r   _  r/  zResourcePoolInfo.__init__rX   r    r   r   r   r   r[  X  rd  r[  c                       r  )ListResourcePoolsResultu  资源池集合。

    :param str region: 资源池所属的地域
    :param str owner: 资源池所属的用户
    :param str continuation_token: 本次列举使用的ContinuationToken
    :param str next_continuation_token: 下次列举请求的ContinuationToken
    :param bool is_truncated: 本次返回结果是否截断
    :param list resource_pool: 资源池信息。元素类型为:class:`ResourcePoolInfo <oss2.models.ResourcePoolInfo>`。
    c                    s8   t t| | d | _d | _d| _d| _d| _g | _d S r   )	ru   r\  r   r  r   continuation_tokenr   r   resource_poolrq   r|   r   r   r   o  rN  z ListResourcePoolsResult.__init__r  r   r   r|   r   r\  d  rO  r\  c                   @   r   )ResourcePoolBucketInfou   资源池的基本信息。

    :param str name: Bucket的名称
    :param str join_time: Bucket加入资源池的时间，ISO8601格式
    Nc                 C   r,  r   )r  	join_time)r   r  r`  r   r   r   r     r/  zResourcePoolBucketInfo.__init__rX   r    r   r   r   r   r_  y  rd  r_  c                       r  )ListResourcePoolBucketsResultu  资源池中的Bucket列表。

    :param str resource_pool: 目标资源池名称
    :param str continuation_token: 本次列举使用的ContinuationToken
    :param str next_continuation_token: 下次列举请求的ContinuationToken
    :param bool is_truncated: 本次返回结果是否截断
    :param list resource_pool_buckets: 资源池中Bucket的信息。元素类型为:class:`ResourcePoolBucketInfo <oss2.models.ResourcePoolBucketInfo>`。
    c                    2   t t| | d | _d| _d| _d| _g | _d S r   )ru   ra  r   r^  r]  r   r   resource_pool_bucketsrq   r|   r   r   r     rY  z&ListResourcePoolBucketsResult.__init__r  r   r   r|   r   ra    rZ  ra  c                       r  )'ListResourcePoolRequesterQoSInfosResultu  资源池的请求者流控配置信息。

    :param str resource_pool: 目标资源池名称
    :param str continuation_token: 本次列举使用的ContinuationToken
    :param str next_continuation_token: 下次列举请求的ContinuationToken
    :param bool is_truncated: 本次返回结果是否截断
    :param list requester_qos_info: 请求者流控配置信息。元素类型为:class:`RequesterQoSInfo <oss2.models.RequesterQoSInfo>`。
    c                    rb  r   )ru   rd  r   r^  r]  r   r   requester_qos_inforq   r|   r   r   r     rY  z0ListResourcePoolRequesterQoSInfosResult.__init__r  r   r   r|   r   rd    rZ  rd  c                       r  )!ListBucketRequesterQoSInfosResultu  bucket的请求者流控配置信息。

    :param str bucket: 请求者流控对应的Bucket名称
    :param str continuation_token: 本次列举使用的ContinuationTokenRequesterQoSInfo
    :param str next_continuation_token: 下次列举请求的ContinuationToken
    :param bool is_truncated: 本次返回结果是否截断
    :param list requester_qos_info: 请求者流控配置信息。元素类型为:class:`RequesterQoSInfo <oss2.models.RequesterQoSInfo>`。
    c                    rb  r   )ru   rf  r   r  r]  r   r   re  rq   r|   r   r   r     rY  z*ListBucketRequesterQoSInfosResult.__init__r  r   r   r|   r   rf    rZ  rf  )r$   r   r   r   r   r   r   r   
exceptionsr   r	   compatr
   r   r   select_responser   r@   r=   loggingr   structrequests.structuresr   	getLoggerr!   rO   r  r   r&   rZ   rE   rg   rj   rs   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   OBJECT_ACL_DEFAULTOBJECT_ACL_PRIVATEOBJECT_ACL_PUBLIC_READOBJECT_ACL_PUBLIC_READ_WRITEr  r  r  r  r  r  BUCKET_ACL_PRIVATEBUCKET_ACL_PUBLIC_READBUCKET_ACL_PUBLIC_READ_WRITEBUCKET_STORAGE_CLASS_STANDARDBUCKET_STORAGE_CLASS_IABUCKET_STORAGE_CLASS_ARCHIVE!BUCKET_STORAGE_CLASS_COLD_ARCHIVE&BUCKET_STORAGE_CLASS_DEEP_COLD_ARCHIVEBUCKET_DATA_REDUNDANCY_TYPE_LRSBUCKET_DATA_REDUNDANCY_TYPE_ZRSrr  rs  rt  ru  PAYER_BUCKETOWNERPAYER_REQUESTERr(  r)  r+  r1  r3  r5  rK  r  rQ  rX  rZ  r]  re  rf  rm  rq  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  SERVER_SIDE_ENCRYPTION_AES256SERVER_SIDE_ENCRYPTION_KMSSERVER_SIDE_ENCRYPTION_SM4KMS_DATA_ENCRYPTION_SM4r  r  r   r'  r)  BUCKET_VERSIONING_ENABLEBUCKET_VERSIONING_SUSPENDr+  r.  r/  r2  r6  rF  rH  rI  rJ  rL  ASYNC_FETCH_TASK_STATE_RUNNINGASYNC_FETCH_TASK_STATE_RETRY4ASYNC_FETCH_TASK_STATE_FETCH_SUCCESS_CALLBACK_FAILEDASYNC_FETCH_TASK_STATE_FAILEDASYNC_FETCH_TASK_STATE_SUCCESSrR  rZ  r\  *INVENTORY_INCLUDED_OBJECT_VERSIONS_CURRENT&INVENTORY_INCLUDED_OBJECT_VERSIONS_ALLINVENTORY_FREQUENCY_DAILYINVENTORY_FREQUENCY_WEEKLYINVENTORY_FORMAT_CSV
FIELD_SIZEFIELD_LAST_MODIFIED_DATEFIELD_STORAG_CLASS
FIELD_ETAGFIELD_IS_MULTIPART_UPLOADEDFIELD_ENCRYPTION_STATUSrl  rv  r}  r  r  r  r  r  r  RESTORE_TIER_EXPEDITEDRESTORE_TIER_STANDARDRESTORE_TIER_BULKr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r$  r%  r&  r)  r+  r0  r1  r2  r4  r5  r9  r=  r@  rB  rF  rH  rK  rL  rP  rQ  rR  rS  rT  rW  rX  r[  r\  r_  ra  rd  rf  r   r   r   r   <module>   s  
b\
 	/m.$
9
)#(%4:**		,		?'"	
	




3