
    M}bg                        d Z ddlmZ ddlmZ 	  ed          ZdZn# e$ r dZY nw xY wddlm	Z	m
Z
mZmZ ddlZdd	lmZ dd
lmZmZ e	rddlmZ ddlmZ ddlmZ ddZdS )z#MONGODB-AWS Authentication helpers.    )annotations)lazy_importpymongo_auth_awsTF)TYPE_CHECKINGAnyMappingTypeNBinary)ConfigurationErrorOperationFailure)_ReadableBuffer)MongoCredential)
Connectioncredentialsr   connr   returnNonec                   t           st          d          ddlm}m}  |d           |j        dk     rt          d           G d dt          j                  }	  |t                              | j	        | j
        | j        j                            }|                    d	          }d
d|d}|                    d|          }|}	t          d          D ]J}
|                    |	d                   }d
|d         |d}|                    d|          }	|	d         r d	S Kd	S # t          j        $ r0} |d	           t#          | dt          j         d          d	d	}~wt&          $ r  |d	            w xY w)zAuthenticate using MONGODB-AWS.zhMONGODB-AWS authentication requires pymongo-auth-aws: install with: python -m pip install 'pymongo[aws]'r   )set_cached_credentialsset_use_cached_credentialsT	   z@MONGODB-AWS authentication requires MongoDB version 4.4 or laterc                  &    e Zd ZddZddZdd
ZdS ))_authenticate_aws.<locals>.AwsSaslContextr   Type[Binary]c                    t           S )z#Return the bson.binary.Binary type.r
   )selfs    c/home/e360mart.nyusoft.in/public_html/e360mart_env/lib/python3.11/site-packages/pymongo/auth_aws.pybinary_typez5_authenticate_aws.<locals>.AwsSaslContext.binary_type<   s    M    docMapping[str, Any]bytesc                *    t          j        |          S )zEncode a dictionary to BSON.)bsonencode)r   r!   s     r   bson_encodez5_authenticate_aws.<locals>.AwsSaslContext.bson_encode@   s    ;s###r    datar   c                *    t          j        |          S )zDecode BSON to a dictionary.)r%   decode)r   r(   s     r   bson_decodez5_authenticate_aws.<locals>.AwsSaslContext.bson_decodeD   s    ;t$$$r    N)r   r   )r!   r"   r   r#   )r(   r   r   r"   )__name__
__module____qualname__r   r'   r+    r    r   AwsSaslContextr   :   sP        	 	 	 		$ 	$ 	$ 	$	% 	% 	% 	% 	% 	%r    r0   N   zMONGODB-AWS)	saslStart	mechanismpayloadz	$external
   r4   conversationId)saslContinuer6   r4   donez (pymongo-auth-aws version ))_HAVE_MONGODB_AWSr   pymongo_auth_aws.authr   r   max_wire_versionr   r0   AwsCredentialusernamepasswordmechanism_propertiesaws_session_tokenstepcommandrangePyMongoAuthAwsErrorr   __version__	Exception)r   r   r   r   r0   ctxclient_payloadclient_firstserver_firstres_cmdexcs                r   _authenticate_awsrP   '   s$    
 A
 
 	
       
 t$$$q   !cddd% % % % %)8 % % %"n**$$0B 
 
 $%&]~^^||K>>r 
	 
	A XXc)n55N !"./?"@) C
 ,,{C00C6{ 
	 
	 /   t$$$NN/?/KNNN
 
	    t$$$s   CD% "D% %E94+EE9)r   r   r   r   r   r   )__doc__
__future__r   pymongo._lazy_importr   r   r:   ImportErrortypingr   r   r   r	   r%   bson.binaryr   pymongo.errorsr   r   bson.typingsr   pymongo.authr   pymongo.poolr   rP   r/   r    r   <module>r[      s2   * ) " " " " " " , , , , , ,"{#566    5 4 4 4 4 4 4 4 4 4 4 4        ? ? ? ? ? ? ? ? (,,,,,,,,,,,,''''''C C C C C Cs    ((