
    DhH                        S r SSKrSSKrSSKrSSKJrJr  \R                  " \5      r	 \R                  " 5          \R                  " S5        SSKrSSS5         " S S5      r " S S	\5      r " S
 S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      rg! , (       d  f       N[= f! \ a    \	R                  S5        Sr Nyf = f)z+Abstraction for sessions in various clouds.    N)_parse_path_UnparsedPathignorez>Could not import boto3, continuing with reduced functionality.c                       \ rS rSrSr\S 5       rS r\SS j5       r	\S 5       r
\S 5       r\S	 5       r\S
 5       rSrg)Session   zBase for classes that configure access to secured resources.

Attributes
----------
credentials : dict
    Keys and values for session credentials.

Notes
-----
This class is not intended to be instantiated.

c                     [         $ )Determine if the given configuration has proper credentials

Parameters
----------
cls : class
    A Session class.
config : dict
    GDAL configuration as a dict.

Returns
-------
bool

NotImplementedclsconfigs     `C:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\fiona/session.pyhascredsSession.hascreds"   s
          c                     [         $ EGet credentials as GDAL configuration options

Returns
-------
dict

r   selfs    r   get_credential_optionsSession.get_credential_options4   s
     r   Nc                 4    U(       d
  [        5       $ U" U 5      $ )zCreate a session object matching the foreign `session`.

Parameters
----------
session : obj
    A foreign session object.
cls : Session class, optional
    The class to return.

Returns
-------
Session

)DummySession)sessionr   s     r   from_foreign_sessionSession.from_foreign_session>   s      >!w<r   c                 
   U (       d  [         $ [        U 5      n [        U [        5      (       d  U R                  (       a  [         $ U R
                  S:X  d  SU R                  ;   a8  SU R                  ;  a(  [        b  [        $ [        R                  S5        [         $ U R
                  S:X  d  SU R                  ;   a  [        $ U R                  R                  S5      (       a  [        $ U R
                  S:X  a  [        $ [         $ )	zFind the session class suited to the data at `path`.

Parameters
----------
path : str
    A dataset path or identifier.

Returns
-------
class

s3zamazonaws.comzX-Amz-Signaturez4boto3 not available, falling back to a DummySession.osszaliyuncs.comz
/vsiswift/az)r   r   
isinstancer   is_localschemepathboto3
AWSSessionloginfo
OSSSession
startswithSwiftSessionAzureSession)r'   s    r   cls_from_pathSession.cls_from_pathS   s     4 dM**dmm KK4?dii#?tyy0 !!OP##[[E!^tyy%@YY!!,//[[D   r   c                 8    [         R                  U 5      " U0 UD6$ )a+  Create a session object suited to the data at `path`.

Parameters
----------
path : str
    A dataset path or identifier.
args : sequence
    Positional arguments for the foreign session constructor.
kwargs : dict
    Keyword arguments for the foreign session constructor.

Returns
-------
Session

)r   r0   )r'   argskwargss      r   	from_pathSession.from_path   s    $ $$T*D;F;;r   c                  <    [         b  [        U 0 UD6$ [        U 0 UD6$ )a6  Create an AWSSession if boto3 is available, else DummySession

Parameters
----------
path : str
    A dataset path or identifier.
args : sequence
    Positional arguments for the foreign session constructor.
kwargs : dict
    Keyword arguments for the foreign session constructor.
    
Returns
-------
Session
)r(   r)   r   )r3   r4   s     r   aws_or_dummySession.aws_or_dummy   s*    " t.v..000r   c                       [         R                  " U 0 UD6nUR                    U$ ! [         a$    [        R                  S5        [        U 0 UD6n U$ f = f)a+  Create a session object suited to the environment.

Parameters
----------
path : str
    A dataset path or identifier.
args : sequence
    Positional arguments for the foreign session constructor.
kwargs : dict
    Keyword arguments for the foreign session constructor.
    
Returns
-------
Session
zACredentials in environment have expired. Creating a DummySession.)r   r8   credentialsRuntimeErrorr*   warningr   )r3   r4   r   s      r   from_environSession.from_environ   sb    "	4**D;F;G   	4KKS #D3F3G	4s   "& *AA N)__name__
__module____qualname____firstlineno____doc__classmethodr   r   staticmethodr   r0   r5   r8   r>   __static_attributes__r@   r   r   r   r      s      "    ( ,  , \ < <& 1 1*  r   r   c                   4    \ rS rSrSrS r\S 5       rS rSr	g)r      zYA dummy session.

Attributes
----------
credentials : dict
    The session credentials.

c                      S U l         0 U l        g rA   _sessionr;   )r   r3   r4   s      r   __init__DummySession.__init__   s    r   c                     g)r
   Tr@   r   s     r   r   DummySession.hascreds   s      r   c                     0 $ r   r@   r   s    r   r   #DummySession.get_credential_options   s	     	r   rM   N)
rB   rC   rD   rE   rF   rO   rG   r   r   rI   r@   r   r   r   r      s%      "r   r   c                   Z    \ rS rSrSr         S	S jr\S 5       r\S 5       r	S r
Srg)
r)      z=Configures access to secured resources stored in AWS S3.
    Nc
                 N   U(       a  Xl         O[        R                  " UUUUUS9U l         Xl        [	        [
        R                  " SU5      5      U l        Xl        U R                  (       d1  U R                   (       a   U R                   R                  5       U l
        gSU l
        g)a  Create a new AWS session

Parameters
----------
session : optional
    A boto3 session object.
aws_unsigned : bool, optional (default: False)
    If True, requests will be unsigned.
aws_access_key_id : str, optional
    An access key id, as per boto3.
aws_secret_access_key : str, optional
    A secret access key, as per boto3.
aws_session_token : str, optional
    A session token, as per boto3.
region_name : str, optional
    A region name, as per boto3.
profile_name : str, optional
    A shared credentials profile name, as per boto3.
endpoint_url: str, optional
    An endpoint_url, as per GDAL's AWS_S3_ENDPOINT
requester_pays : bool, optional
    True if the requester agrees to pay transfer costs (default:
    False)

)aws_access_key_idaws_secret_access_keyaws_session_tokenregion_nameprofile_nameAWS_NO_SIGN_REQUESTN)rN   r(   r   requester_paysboolosgetenvunsignedendpoint_urlget_credentials_creds)
r   r   aws_unsignedrX   rY   rZ   r[   r\   rc   r^   s
             r   rO   AWSSession.__init__   s    J #M!MM"3&;"3')+DM -RYY'<lKL( ==T]] MM))+ 	  	r   c                 D    SS1R                  UR                  5       5      $ )r
   AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYissubsetkeysr   s     r   r   AWSSession.hascreds/  !      $%<=FFv{{}UUr   c                    0 nU R                   (       az  U R                   R                  5       nUR                  (       a  UR                  US'   UR                  (       a  UR                  US'   UR                  (       a  UR                  US'   U R
                  R                  (       a  U R
                  R                  US'   U R                  (       a  SUS'   U R                  (       a  U R                  US'   U$ )!The session credentials as a dictrX   rY   rZ   
aws_region	requesteraws_request_payeraws_s3_endpoint)	re   get_frozen_credentials
access_key
secret_keytokenrN   r[   r^   rc   )r   resfrozen_credss      r   r;   AWSSession.credentialsA  s     ;;;;==?L&&+7+B+B'(&&/;/F/F+,!!+7+=+='(==$$ $ 9 9C'2C#$%)%6%6C!"
r   c                     U R                   (       a(  SS0nSU R                  ;   a  U R                  S   US'   U$ U R                  R                  5        VVs0 s H  u  p#UR                  5       U_M     snn$ s  snnf )r   r]   YESrr   
AWS_REGION)rb   r;   itemsupper)r   optskvs       r   r   !AWSSession.get_credential_optionsU  sr     ==)51Dt///%)%5%5l%C\"K-1-=-=-C-C-EF-ETQAGGIqL-EFFFs   A8)re   rN   rc   r^   rb   )	NFNNNNNNFrB   rC   rD   rE   rF   rO   rG   r   propertyr;   r   rI   r@   r   r   r)   r)      sZ    
 "6
p V V"  &Gr   r)   c                   H    \ rS rSrSrS	S jr\S 5       r\S 5       r	S r
Srg)
	GSSessionif  zJConfigures access to secured resources stored in Google Cloud Storage
    Nc                 6    0 U l         Ub  XR                   S'   gg)zCreate new Google Cloud Storage session

Parameters
----------
google_application_credentials: string
    Path to the google application credentials JSON file.

Ngoogle_application_credentialsre   )r   r   s     r   rO   GSSession.__init__i  s#     )5<ZKK89 6r   c                     SU;   $ )r
   GOOGLE_APPLICATION_CREDENTIALSr@   r   s     r   r   GSSession.hascredsv  s      0699r   c                     U R                   $ rq   r   r   s    r   r;   GSSession.credentials       {{r   c                     U R                   R                  5        VVs0 s H  u  pUR                  5       U_M     snn$ s  snnf r   r;   r   r   r   r   r   s      r   r    GSSession.get_credential_options  9     *.)9)9)?)?)AB)A	1)ABBB   ?r   rA   r   r@   r   r   r   r   f  s;    [ : :"  Cr   r   c                   J    \ rS rSrSr S	S jr\S 5       r\S 5       r	S r
Srg)
r,   i  zCConfigures access to secured resources stored in Alibaba Cloud OSS.Nc                     UUUS.U l         g)a,  Create new Alibaba Cloud OSS session

Parameters
----------
oss_access_key_id: string, optional (default: None)
    An access key id
oss_secret_access_key: string, optional (default: None)
    An secret access key
oss_endpoint: string, optional (default: None)
    the region attached to the bucket

)oss_access_key_idoss_secret_access_keyoss_endpointNr   )r   r   r   r   s       r   rO   OSSSession.__init__  s      "3%:(
r   c                 D    SS1R                  UR                  5       5      $ )r
   OSS_ACCESS_KEY_IDOSS_SECRET_ACCESS_KEYrk   r   s     r   r   OSSSession.hascreds  ro   r   c                     U R                   $ r   r   r   s    r   r;   OSSSession.credentials  r   r   c                     U R                   R                  5        VVs0 s H  u  pUR                  5       U_M     snn$ s  snnf r   r   r   s      r   r   !OSSSession.get_credential_options  r   r   r   )NNNr   r@   r   r   r,   r,     sA    M PT
* V V"  Cr   r,   c                   T    \ rS rSrSr      S	S jr\S 5       r\S 5       r	S r
Srg)
r.   i  zPConfigures access to secured resources stored in OpenStack Swift Object Storage.Nc                     U(       a  U(       a  UUS.U l         gSSKJn  U(       a  Xl        OU" XEUS9U l        U R                  R	                  5       S   U R                  R	                  5       S   S.U l         g)aI  Create new OpenStack Swift Object Storage Session.

Three methods are possible:
    1. Create session by the swiftclient library.
    2. The SWIFT_STORAGE_URL and SWIFT_AUTH_TOKEN (this method
       is recommended by GDAL docs).
    3. The SWIFT_AUTH_V1_URL, SWIFT_USER and SWIFT_KEY (This
       depends on the swiftclient library).

Parameters
----------
session: optional
    A swiftclient connection object
swift_storage_url:
    the storage URL
swift_auth_token:
    the value of the x-auth-token authorization token
swift_storage_url: string, optional
    authentication URL
swift_user: string, optional
    user name to authenticate as
swift_key: string, optional
    key/password to authenticate with

Examples
--------
>>> import rasterio
>>> from rasterio.session import SwiftSession
>>> fp = '/vsiswift/bucket/key.tif'
>>> conn = Connection(
...     authurl='http://127.0.0.1:7777/auth/v1.0',
...     user='test:tester',
...     key='testing'
... )
>>> session = SwiftSession(conn)
>>> with rasterio.Env(session):
>>>     with rasterio.open(fp) as src:
>>>         print(src.profile)

)swift_storage_urlswift_auth_tokenr   )
Connection)authurluserkey   N)re   swiftclient.clientr   rN   get_auth)r   r   r   r   swift_auth_v1_url
swift_user	swift_keyr   s           r   rO   SwiftSession.__init__  sm    b !1%6$4DK
 6 ' *-I! &*]]%;%;%=a%@$(MM$:$:$<Q$?DKr   c                 D    SS1R                  UR                  5       5      $ )r
   SWIFT_STORAGE_URLSWIFT_AUTH_TOKENrk   r   s     r   r   SwiftSession.hascreds  s!      $%78AA&++-PPr   c                     U R                   $ r   r   r   s    r   r;   SwiftSession.credentials+  r   r   c                     U R                   R                  5        VVs0 s H  u  pUR                  5       U_M     snn$ s  snnf r   r   r   s      r   r   #SwiftSession.get_credential_options0  r   r   )re   rN   )NNNNNNr   r@   r   r   r.   r.     sP    Z BH Q Q"  Cr   r.   c                   P    \ rS rSrSr    S	S jr\S 5       r\S 5       r	S r
Srg)
r/   i;  zNConfigures access to secured resources stored in Microsoft Azure Blob Storage.Nc                    [        [        R                  " SU5      5      U l        [        R                  " SU5      U l        U(       a
  SU0U l        gU R                  (       d  U R                  US.U l        gSU R                  0U l        g)au  Create new Microsoft Azure Blob Storage session

Parameters
----------
azure_storage_connection_string: string
    A connection string contains both an account name and a secret key.
azure_storage_account: string
    An account name
azure_storage_access_key: string
    A secret key
azure_unsigned : bool, optional (default: False)
    If True, requests will be unsigned.

AZURE_NO_SIGN_REQUESTAZURE_STORAGE_ACCOUNTazure_storage_connection_string)azure_storage_accountazure_storage_access_keyr   N)r_   r`   ra   rb   storage_accountre   )r   r   r   r   azure_unsigneds        r   rO   AzureSession.__init__>  su    * RYY'>OP!yy)@BWX*13RDK )-)=)=,DDK
 3D4H4HIDKr   c                     SU;   =(       dI    SS1R                  UR                  5       5      =(       d!    SS1R                  UR                  5       5      $ )r
   AZURE_STORAGE_CONNECTION_STRINGr   AZURE_STORAGE_ACCESS_KEYr   rk   r   s     r   r   AzureSession.hascredsb  sW    " .7 ')CDMM ()@AJJ	
r   c                     U R                   $ r   r   r   s    r   r;   AzureSession.credentials|  r   r   c                     U R                   (       a  SU R                  S.$ U R                  R                  5        VVs0 s H  u  pUR	                  5       U_M     snn$ s  snnf )r   r~   )r   r   )rb   r   r;   r   r   r   s      r   r   #AzureSession.get_credential_options  sX     ==).)-)=)= 
 .2-=-=-C-C-EF-ETQAGGIqL-EFFFs   A)re   r   rb   )NNNFr   r@   r   r   r/   r/   ;  sH    X )-"!%"JH 
 
2  Gr   r/   )rF   loggingr`   warningsfiona._pathr   r   	getLoggerrB   r*   catch_warningssimplefilterr(   ImportErrordebugr   r   r)   r   r,   r.   r/   r@   r   r   <module>r      s    1  	  2!		 	 	"h' 
#q qh(7 (VpG pGf/C /Cd7C 7CtfC7 fCRTG7 TG_ 
#	"  IINOEs.   B8 B'B8 '
B51B8 5B8 8CC