https://t.me/RX1948
Server : Apache
System : Linux iad1-shared-b8-43 6.6.49-grsec-jammy+ #10 SMP Thu Sep 12 23:23:08 UTC 2024 x86_64
User : dh_edsupp ( 6597262)
PHP Version : 8.2.26
Disable Function : NONE
Directory :  /lib/python3/dist-packages/boto/sdb/db/manager/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //lib/python3/dist-packages/boto/sdb/db/manager/__pycache__/sdbmanager.cpython-310.pyc
o

ckF[uj�@s�ddlZddlZddlmZddlZddlmZddlmZddl	m
Z
mZddlmZm
Z
mZddlmZmZddlmZmZmZd	ZGd
d�de�ZGdd
�d
e�ZGdd�de�ZdS)�N)�
find_class)�Key)�Blob)�ListProperty�MapProperty)�datetime�date�time)�SDBPersistenceError�S3ResponseError)�map�six�	long_typez%Y-%m-%dT%H:%M:%SZc@seZdZdS)�TimeDecodeErrorN)�__name__�
__module__�__qualname__�rr�@/usr/lib/python3/dist-packages/boto/sdb/db/manager/sdbmanager.pyr$src@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�ZeZd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Zd8d9�Z d:d;�Z!d<S)=�SDBConvertera�
    Responsible for converting base Python types to format compatible
    with underlying database.  For SimpleDB, that means everything
    needs to be converted to a string when stored in SimpleDB and from
    a string when retrieved.

    To convert a value, pass it to the encode or decode method.  The
    encode method will take a Python native value and convert to DB
    format.  The decode method will take a DB format value and convert
    it to Python native format.  To find the appropriate method to
    call, the generic encode/decode methods will look for the
    type-specific method by searching for a method
    called"encode_<type name>" or "decode_<type name>".
    cCs�ddlm}||_||_t|j|jft|j|j	ft
|j|jf|j|j
|jft|j
|jft|j|jft|j|jft|j|jft|j|jft|j|jfi
|_t j!rZ|j"|j#f|jt$<dSdS)Nr)�Model)%�boto.sdb.db.modelr�model_class�manager�bool�encode_bool�decode_bool�int�
encode_int�
decode_int�float�encode_float�decode_float�encode_reference�decode_referencerr�encode_datetime�decode_datetimer�encode_date�decode_dater	�encode_time�decode_timer�encode_blob�decode_blob�str�
encode_string�
decode_string�type_mapr
�PY2�encode_long�decode_long�long)�selfrrrrr�__init__7s&��
�zSDBConverter.__init__cCsFz|j|��vr|j}WnY||jvr!|j|d}||�S|S)Nr)r�mror0)r5�	item_type�value�encoderrrr:Ls�
zSDBConverter.encodecCs$||jvr|j|d}||�S|S)N�)r0)r5r8r9�decoderrrr<Ws
zSDBConverter.decodecCs^|dgfvrgSt|t�st|d�}|�||�Si}t|�D]
\}}||d|<q|�||�S)Nr8�%03d)�
isinstance�list�getattrr:�	enumerate�
encode_map)r5�propr9r8�values�k�vrrr�encode_list]s

zSDBConverter.encode_listcCs�ddl}|dur
dSt|t�stdt|���g}|D])}t|d�}|j|��vr,|j}|�|||�}|durD|�	d|�
|�|f�q|S)NrzExpected a dict value, got %sr8z%s:%s)�urllibr>�dict�
ValueError�typer@rr7r:�append�quote)r5rCr9rH�	new_value�keyr8�
encoded_valuerrrrBns

�zSDBConverter.encode_mapcC�:t|t�r|�||�St|t�r|�||�S|�|j|�S�N)r>rrGrrBr:�	data_type�r5rCr9rrr�encode_prop~�


zSDBConverter.encode_propcCsxt|t�s|g}t|d�r:t|d�}i}|D]}|dur5|�||�\}}zt|�}Wn|}Y|||<q|��}|S�Nr8)r>r?�hasattrr@�decode_map_elementrrD)r5rCr9r8�dec_val�valrErFrrr�decode_list�s 


�zSDBConverter.decode_listcCsDt|t�s|g}i}t|d�}|D]}|�||�\}}|||<q|SrW)r>r?r@rY)r5rCr9�	ret_valuer8r[rErFrrr�
decode_map�s


zSDBConverter.decode_mapcCsbddl}|}d|vr|�dd�\}}|�|�}|j|��vr'||d�}||fS|�||�}||fS)z!Decode a single element for a maprN�:r;)�id)rH�split�unquoterr7r<)r5r8r9rHrOrrrrY�s

�zSDBConverter.decode_map_elementcCrQrR)r>rr\rr^r<rSrTrrr�decode_prop�rVzSDBConverter.decode_propcC�t|�}|d7}d|S)N�z%010d)r�r5r9rrrr��zSDBConverter.encode_intcCsBzt|�}Wntj�d|�d}Yt|�}|d8}t|�S)NzError, %s is not an integerrre)r�boto�log�errorrfrrrr�szSDBConverter.decode_intcCrd)N�z%020d�rrfrrrr2�rgzSDBConverter.encode_longcCst|�}|d8}|S)Nrkrlrfrrrr3�szSDBConverter.decode_longcCs |dkst|���dvrdSdS)NT)�true�yesrm�false)r-�lowerrfrrrr�szSDBConverter.encode_boolcCs|��dkrdSdS)NrmTF)rprfrrrr�szSDBConverter.decode_boolcCs0d|}|�d�}|d�dd�}|d}|dkrd}d	}ns|dd
kr7|ddkr7d}|dd
��dd�}nZ|dd
krP|dd
krPd}dt|�}d|}nA|dd
krw|dd
krwd}ddt|�}|�dd�}|dd
��dd�}nd}ddt|�}|�dd�}dt|�}d|}d|||fS)zM
        See http://tools.ietf.org/html/draft-wood-ldapext-float-00.
        z%e�er��0r;��3�000�-�+�5N��4��r=�2�%f�
�1z%s %s %s)ra�ljust�rjustrr )r5r9�s�l�mantissa�exponent�caserrrr!�s2

zSDBConverter.encode_floatcCs�|d}|dd�}|dd�}|dkrdS|dkrn0|dkr(d	t|�d
}n#|dkr9dt|�d
}d|}ndt|�d
}d	tt|�d
�}t|d|�S)Nr���rurtryr{r=r|r}r~rrwrq)rr �abs)r5r9r�r�r�rrrr"�s
zSDBConverter.decode_floatcCs,t|tj�r|St|t�r|�t�S|��SrR)r>r
�string_typesr�strftime�ISO8601�	isoformatrfrrrr%s


zSDBConverter.encode_datetimecCs�|dur|Sz3d|vr"d|vrt�|�d�dd�WSt�|t�WS|�d�}tt|d�t|d�t|d��WStyCYdSw)	z'Handles both Dates and DateTime objectsN�T�.rz%Y-%m-%dT%H:%M:%Srwr;r�)r�strptimerar�rr�	Exceptionrfrrrr&s
&�zSDBConverter.decode_datetimecCst|tj�r|S|��SrR)r>r
r�r�rfrrrr'%szSDBConverter.encode_datecCs>z|�d�}tt|d�t|d�t|d��WSYdS)Nrwrr;r�)rarrrfrrrr(*s

&zSDBConverter.decode_datecCs`d|vsd|vrtd|��|�d�}tt|d�d��}t|�dkr,|�t|d��t|�S)	a converts strings in the form of HH:MM:SS.mmmmmm
            (created by datetime.time.isoformat()) to
            datetime.time objects.

            Timzone-aware strings ("HH:MM:SS.mmmmmm+HH:MM") won't
            be handled right now and will raise TimeDecodeError.
        rwrxz'Can't handle timezone aware objects: %rr�rr_r�r;)rrarr�lenrLr	)r5r9�tmp�argrrrr*3s
zSDBConverter.decode_timecCs"|dvrdSt|tj�r|S|jS)N)N�None�� )r>r
r�r`rfrrrr#Ds
zSDBConverter.encode_referencecCs|r|dkrdS|S)Nr�rrfrrrr$LszSDBConverter.decode_referencecCs�|sdSt|tj�r|S|js(|j��}|�tt�	���}d|j
j|jf|_n(t�
d|j�}|rI|j��}|j|�d�dd�}|�|�d��}ntd|j��|jdur[|�|j�|jS)N�
s3://%s/%s�^s3:\/\/([^\/]*)\/(.*)$r;F��validater�zInvalid Blob ID: %s)r>r
r�r`r�get_blob_bucket�new_keyr-�uuid�uuid4�bucket�name�re�match�get_s3_connection�
get_bucket�group�get_keyr
r9�set_contents_from_string)r5r9r�rOr��s3rrrr+Qs"


zSDBConverter.encode_blobc
Cs�|sdSt�d|�}|r?|j��}|j|�d�dd�}z
|�|�d��}Wnty>}z
|jdkr3�WYd}~dSd}~wwdS|rPt	|d|j
j|jfd�SdS)	Nr�r;Fr�r��	Forbiddenr�)�filer`)r�r�rr�r�r�r�r�reasonrr�r�)r5r9r�r�r�rOrqrrrr,hs$

��zSDBConverter.decode_blobc
CsTt|t�s|Szt�|d�WSg}|D]}|�t�t|���qd�|�YS)z/Convert ASCII, Latin-1 or UTF-8 to pure Unicodezutf-8r�)r>r-r
�	text_typerL�unichr�ord�join)r5r9�arr�chrrrr.|s
zSDBConverter.encode_stringcCs|S)zHDecoding a string is really nothing, just
        return the value as-isrrfrrrr/�szSDBConverter.decode_stringN)"rrr�__doc__r6r:r<rGrBrUr\r^rYrcrrr2r3rrr!r"r%r&r'r(r)r*r#r$r+r,r.r/rrrrr(s@


rc@s�eZdZ	d7dd�Zedd��Zedd��Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zd7dd�Zdd�Z
d7dd�Zdd�Zdd�Zd8dd�Zdd �Zd9d!d"�Zd#d$�Zd%d&�Zd7d'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�ZdS):�
SDBManagerNcCsz||_||_||_||_||_||_||_||_|	|_d|_	d|_
t|�|_d|_
d|_|
dur8t|d�r8|j}
|
|_dS)N�__consistent__)�cls�db_name�db_user�	db_passwd�db_host�db_port�db_table�ddl_dir�
enable_sslr�r�r�	converter�_sdb�_domainrXr��
consistent)r5r�r�r�r�r�r�r�r�r�r�rrrr6�s"

zSDBManager.__init__cC�|jdur	|��|jSrR)r��_connect�r5rrr�sdb��
zSDBManager.sdbcCr�rR)r�r�r�rrr�domain�r�zSDBManager.domaincs�t�j�j�jd�}z�fdd�tj��D�d}||d<Wn	ty'Ynwtjdi|���_	�j	j
�jdd��_�jsH�j	�
�j��_dSdS)	N)�aws_access_key_id�aws_secret_access_key�	is_securecsg|]
}|j�jkr|�qSr)�endpointr�)�.0�xr�rr�
<listcomp>�sz'SDBManager._connect.<locals>.<listcomp>r�regionFr�r)rIr�r�r�rhr��regions�
IndexError�connect_sdbr��lookupr�r��
create_domain)r5�argsr�rr�rr��s���zSDBManager._connectccs*�|D]}|�||j|�}|r|VqdSrR)�
get_objectr�)r5r��query_lister�item�objrrr�_object_lister�s���zSDBManager._object_listercCs&|durdS|st|�S|j�||�SrR)r-r�rUrTrrr�encode_value�s
zSDBManager.encode_valuecCs|j�||�SrR)r�rcrTrrr�decode_value��zSDBManager.decode_valuecCs|jst�|j|j�|_|jSrR)r�rh�
connect_s3r�r�r�rrrr��szSDBManager.get_s3_connectioncCsR|��}d|j|jjf}|��}z
|�|�|_W|jS|�|�|_Y|jS)Nz%s-%s)r�r�r�r�rpr�r��
create_bucket)r5�bucket_namer�rrrr��s�zSDBManager.get_blob_bucketcCs�|jsT|jj|j|jd�}d|vrO|jdd�D]7}|j|vrN|�|||j�}|�|�}z	t	||j|�Wqt
yM}ztj�
|�WYd}~qd}~wwqd|_dSdS)N��consistent_read�__type__F��hiddenT)�_loadedr��get_attributesr`r��
propertiesr�r��make_value_from_datastore�setattrr�rhri�	exception)r5r��arCr9rqrrr�load_object�s 

���
�zSDBManager.load_objectc	Cs�d}|s
|jj||jd�}d|vrh|r|d|jkr#t|d|d�}|rUi}|jdd�D]}|j|vrG|�|||j�}|�|�}|||j<q-||fi|��}d|_	|Sd||d|df}t
j�d|�|S)	Nr�r�rFr�Tz(%s) class %s.%s not foundzsdbmanager: %s)
r�r�r�rrr�r�r�r�r�rhri�info)	r5r�r`r�r��paramsrCr9r�rrrr��s(


��zSDBManager.get_objectcCs|�d|�SrR)r�)r5r`rrr�get_object_from_idszSDBManager.get_object_from_idcCsbd|jj|�|j|j|j|j�f}|jr|d|j7}|jj||j|jd�}||_	|�
|j|�S)Nzselect * from `%s` %sz	 limit %s)�	max_items�
next_token)r�r��_build_filter_partr�filters�sort_by�select�limitr��rsr�)r5�query�	query_strr�rrrr�s$zSDBManager.queryTc	CsRd|jj|�||||�f}d}|j�|�D]}|t|d�7}|r&|Sq|S)zX
        Get the number of results that would
        be returned in this query
        zselect count(*) from `%s` %sr�Count)r�r�r�r�r)	r5r�r��quickr�r�r��count�rowrrrrs�zSDBManager.countcCs�|dkrd}|dkrd|}|dur&|dvrdd|iS|dvr$d|Sd	}|jtkrE|dvr2d
}n|dvr8d}|d
vrA|�d�sEd|}d|||�dd�fS)N�__id__�
itemName()z`%s`)�is�=z%(name)s is nullr�)zis not�!=z%s is not nullr��like)r�not�not like)rr	�%z%%:%sz
%s %s '%s'�'z'')�	__class__r�
startswith�replace)r5�propertyr��opr[rrr�
_build_filter s$
zSDBManager._build_filtercCs�ddl}g}d}|r|ddkrd}|dd�}nd}|r,|r%||vr%d}|�d	|�t|tj�rSd
||jf}	|dvrE|	d|7}	|	S|durQ|	d
||f7}	|	S|D]�}
g}|
d}t|t�se|g}|D]�}
|
���dd�\}}|
d}|�	|�}||kr�d}|�
|�tkr�g}|D])}|�||�}t|t�r�|D]
}|�|�||||��q�q�|�|�||||��q�|�d	d�
|��qg|�||�}t|t�r�|D]
}|�|�||||��q�qg|�|�||||��qg|�d	d�
|��qUd|j}|�|���D]	}|d|7}�q|d7}|�|�d}|�r3|�s#|�d|�|dv�r-d|}nd
||f}t|�dk�rCdd�
|�|fSdS)z'
        Build the filter part
        rNFrw�DESCr;�ASCTz(%s)zWHERE %s AND `__type__` = '%s')rrz ORDER BY itemName() %sz ORDER BY `%s` %sr�z OR z or z(`__type__` = '%s'z or `__type__` = '%s'�)r�z`%s` LIKE '%%'zWHERE %s %sz AND )�typesrLr>r
r�rr?�stripra�
find_property�TypeTyper�rr��_get_all_decendents�keysr�)r5r�r��order_byr�r�query_parts�order_by_filtered�order_by_methodr��filter�filter_parts�filter_props�filter_propr�rr9r�filter_parts_subr[rF�
type_query�subclass�order_by_queryrrrr�5s~�


�
�



zSDBManager._build_filter_partcCs.i}|jD]}|||j<|�|�|��q|S)z$Get all decendents for a given class)�__sub_classes__r�updater)r5r��
decendents�scrrrr�s


zSDBManager._get_all_decendentscOstd��)Nz%GQL queries not supported in SimpleDB)�NotImplementedError)r5�query_stringr��kwdsrrr�	query_gql�szSDBManager.query_gqlc	CsX|js
tt���|_|jj|jj|��d�}g}|jdd�D]R}|�	|�}|dur/|�
||�}|gkr5d}|dur@|�|j�q|||j<|j
rpz|j|i}t|jd	i|���}|j|jkretd|j��WqtyoYqwq|r�|�|d�}	|d}
|
dur�t|
t�s�|�
|	|
�}
|
|d<|jj|j|d|d�t|�dkr�|j�|j|�|S)
N)r�r�__lineage__Fr��Error: %s must be unique!rr;T)r�expected_valuer)r`r-r�r�rrr�get_lineager��get_value_for_datastorer�rLr��unique�next�findr
�
StopIterationrr>rr��put_attributesr��delete_attributes)r5r�r1�attrs�	del_attrsrr9r��obj2rCrFrrr�save_object�sL�


���	zSDBManager.save_objectcCs|j�|j�dSrR�r�r9r`�r5r�rrr�
delete_object�szSDBManager.delete_objectcCs�t|||�|�|�}|�||�}|jr<z|j|i}t|jdi|���}|j|jkr1td|j��Wn	t	y;Ynw|j
j|j||idd�dS)Nr0T�rr)r�r3r�r4r�r5r6r`r
r7r�r8)r5rCr�r�r9r�r<rrr�set_property�s

��zSDBManager.set_propertycCsT|jj|j|jd�}||vr$|�|||�}|�|�}t||j|�|Std|��)Nr�z%s not found)	r�r�r`r�r�r�r�r��AttributeError)r5rCr�r�r�r9rrr�get_property�s
zSDBManager.get_propertycCs|jj|j||idd�dS)NTrA)r�r8r`)r5r�r�r9rrr�
set_key_value�szSDBManager.set_key_valuecCs|j�|j|�dSrRr>)r5r�r�rrr�delete_key_value�szSDBManager.delete_key_valuecCs*|jj|j||jd�}||vr||SdS)Nr�)r�r�r`r�)r5r�r�r�rrr�
get_key_value�szSDBManager.get_key_valuecCs|j�|j�SrR)r��get_itemr`r?rrr�get_raw_item�r�zSDBManager.get_raw_itemrR)TNN)NN)rrrr6rr�r�r�r�r�r�r�r�r�r�r�r�rrr�rr.r=r@rBrDrErFrGrIrrrrr��s<
�






R
&r�)rhr��
boto.utilsrr��boto.sdb.db.keyr�boto.sdb.db.blobr�boto.sdb.db.propertyrrrrr	�boto.exceptionr
r�boto.compatrr
rr�r�r�objectrr�rrrr�<module>s k

https://t.me/RX1948 - 2025