
    FCf                        d Z ddlmZ ddlmZ 	  ed      ZdZ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y# e$ r dZY @w xY w)z#MONGODB-AWS Authentication helpers.    )annotations)lazy_importpymongo_auth_awsTF)TYPE_CHECKINGAnyMappingTypeNBinary)ConfigurationErrorOperationFailure)_ReadableBuffer)MongoCredential)
Connectionc                   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                  j                              }|j                  d	      }d
d|d}|j                  d|      }|}	t        d      D ]8  }
|j                  |	d         }d
|d   |d}|j                  d|      }	|	d   s8 y	 y	# t        j                   $ r-} |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y))_authenticate_aws.<locals>.AwsSaslContextc                    t         S )z#Return the bson.binary.Binary type.r
   )selfs    P/var/www/highfloat_scraper/venv/lib/python3.12/site-packages/pymongo/auth_aws.pybinary_typez5_authenticate_aws.<locals>.AwsSaslContext.binary_type<   s    M    c                ,    t        j                  |      S )zEncode a dictionary to BSON.)bsonencode)r   docs     r   bson_encodez5_authenticate_aws.<locals>.AwsSaslContext.bson_encode@   s    ;;s##r   c                ,    t        j                  |      S )zDecode BSON to a dictionary.)r   decode)r   datas     r   bson_decodez5_authenticate_aws.<locals>.AwsSaslContext.bson_decodeD   s    ;;t$$r   N)returnzType[Binary])r   Mapping[str, Any]r%   bytes)r#   r   r%   r&   )__name__
__module____qualname__r   r    r$    r   r   AwsSaslContextr   :   s    		$	%r   r,   N   zMONGODB-AWS)	saslStart	mechanismpayloadz	$external
   r0   conversationId)saslContinuer2   r0   donez (pymongo-auth-aws version ))_HAVE_MONGODB_AWSr   pymongo_auth_aws.authr   r   max_wire_versionr   r,   AwsCredentialusernamepasswordmechanism_propertiesaws_session_tokenstepcommandrangePyMongoAuthAwsErrorr   __version__	Exception)credentialsconnr   r   r,   ctxclient_payloadclient_firstserver_firstres_cmdexcs                r   _authenticate_awsrN   '   sw    A
 	

 t$q  !cdd%)88 %"**$$$$00BB
 $%&]~^||K>r 
	A XXc)n5N !"./?"@)C
 ,,{C0C6{
	 // t$e./?/K/K.LAN
	  t$s%   B2D 	D D E (EE)rD   r   rE   r   r%   None)__doc__
__future__r   pymongo._lazy_importr   r   r6   ImportErrortypingr   r   r   r	   r   bson.binaryr   pymongo.errorsr   r   bson.typingsr   pymongo.authr   pymongo.poolr   rN   r+   r   r   <module>rZ      sa    * " ,"#56
 5 4   ?,,'C!  s   
A AA