o
    iT	                     @  s   U d dl mZ d dlmZ d dlmZmZmZmZ d dl	m
Z
 d dlmZ eg dZded< ed	ZG d
d dee Zd"ddZd#ddZd$ddZd%ddZd%dd Zd!S )&    )annotations)Path)AnyFinalGenericTypeVar)is_path_or_str_sequence)PartitionBy)Zfile_cache_ttlmax_retriesZretry_timeout_msZretry_init_backoff_msZretry_max_backoff_msZretry_base_multiplierzFinal[frozenset[str]]POLARS_STORAGE_CONFIG_KEYSTc                   @  sD   e Zd ZdZddddZdd	d
ZdddZdddZdddZdS )NoPickleOptionz
    Wrapper that does not pickle the wrapped value.

    This wrapper will unpickle to contain a None. Useful for cached or sensitive
    values.
    N	opt_valueT | NonereturnNonec                 C  
   || _ d S NZ
_opt_value)selfr    r   M/home/app/Keep/.python/lib/python3.10/site-packages/polars/io/cloud/_utils.py__init__       
zNoPickleOption.__init__c                 C  s   | j S r   r   r   r   r   r   get#   s   zNoPickleOption.getvaluec                 C  r   r   r   )r   r   r   r   r   set&   r   zNoPickleOption.set	tuple[()]c                 C  s   dS )Nr   r   r   r   r   r   __getstate__)   s   zNoPickleOption.__getstate___statec                 C  s   t |  d S r   )r   r   )r   r    r   r   r   __setstate__-   s   zNoPickleOption.__setstate__r   )r   r   r   r   )r   r   )r   r   r   r   )r   r   )r    r   r   r   )	__name__
__module____qualname____doc__r   r   r   r   r!   r   r   r   r   r      s    


r   sourcer   r   str | Path | Nonec                 C  s<   t | ttfr	| S t| r| r| d S t | tr| jjS d S )Nr   )
isinstancestrr   r   r	   Z_pl_partition_by	base_path)r&   r   r   r   _first_scan_path1   s   
r+   path
str | Path
str | Nonec                 C  s*   t | }|d}|dkr|d | S d S )Nz://r   )r)   find)r,   Zpath_strir   r   r   _get_path_scheme>   s   
r1   schemer)   first_scan_pathboolc                   s   t  fdddD rdS  dks dkrA|d}|d|d	 }|d
t d |dks3d|v r5dS d|  k o>|k S   S dS )Nc                 3      | ]} |kV  qd S r   r   .0xr2   r   r   	<genexpr>F       z _is_aws_cloud.<locals>.<genexpr>)Zs3Zs3aThttphttpsz.s3.z.amazonaws.com/   /   r   ?F)anyr/   len)r2   r3   Z
bucket_endZ
region_endr   r9   r   _is_aws_cloudE   s   
rD   c                      t  fdddD S )Nc                 3  r5   r   r   r6   r9   r   r   r:   Y   r;   z"_is_azure_cloud.<locals>.<genexpr>)azZazureadlZabfsZabfssrB   r9   r   r9   r   _is_azure_cloudX      rI   c                   rE   )Nc                 3  r5   r   r   r6   r9   r   r   r:   ]   r;   z _is_gcp_cloud.<locals>.<genexpr>)gsZgcpZgcsrH   r9   r   r9   r   _is_gcp_cloud\   rJ   rL   N)r&   r   r   r'   )r,   r-   r   r.   )r2   r)   r3   r)   r   r4   )r2   r)   r   r4   )
__future__r   pathlibr   typingr   r   r   r   Zpolars._utils.variousr   Zpolars.io.partitionr	   	frozensetr   __annotations__r   r   r+   r1   rD   rI   rL   r   r   r   r   <module>   s    



