o
    Ni
                  	   @   s~  U d dl 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 ddlmZ ddlmZ ddlmZ dd	lmZ g d
ZdZeee  ed< z&d dlZejejjejdk raddlmZ nddlmZ ed W n eefyz   dZY nw i a e !e"Z#dee ddfddZ$eeee	fD ]Z%e$e% qedure$e dde&deee&e&f  defddZ'dee& fddZ(dS )    N)DictOptionalSetType   )GsClient)hf_get_from_cache)
HttpClient)R2Client)S3Client)SchemeClient)r   r	   r   r
   r   r   BeakerClientz2.0)r   clientreturnc                 C   sT   t | jtr| jD ]}| t|< q	dS t | jtr| t| j< dS td|  d| j )z
    Add a new :class:`SchemeClient`.

    This can be used to extend :func:`cached_path.cached_path()` to handle custom schemes, or handle
    existing schemes differently.
    zUnexpected type for z	 scheme: N)
isinstanceschemetuple_SCHEME_TO_CLIENTstr
ValueError)r   r    r   P/home/ubuntu/.local/lib/python3.10/site-packages/cached_path/schemes/__init__.pyadd_scheme_client"   s   

r   resourceheadersc                 C   sR   |  dd }t|t}|r%t|tr|| |dS d|j }t| || S )a  
    Get the right client for the given resource.

    Parameters
    ----------
    resource : str
        The URL or path to the resource.
    headers : Optional[Dict[str, str]], optional
        Custom headers to add to HTTP requests, by default None.
        Example: {"Authorization": "Bearer YOUR_TOKEN"} for private resources.
        Only used for HTTP/HTTPS resources.

    Returns
    -------
    SchemeClient
        The appropriate client for the resource.
    z://r   )r   z9Headers are only supported for HTTP/HTTPS resources, got )splitr   getr	   
issubclass__name__loggerwarning)r   r   maybe_scheme
client_clsmsgr   r   r   get_scheme_client9   s   

r$   c                   C   s   t t dhB S )z+
    Return all supported URL schemes.
    hf)setr   keysr   r   r   r   get_supported_schemesX   s   r(   )N))loggingtypingr   r   r   r   packaging.version	packaginggsr   r%   r   httpr	   r2r
   s3r   scheme_clientr   __all__r   __annotations__beaker.versionbeakerversionparseVERSION	beaker_v1appendImportErrorModuleNotFoundErrorr   	getLoggerr   r   r   r   r   r$   r(   r   r   r   r   <module>   s:   
 

$