
    i                        U d dl mZ d dlZd dlZd dlmZ d dlmZ i Z	de
d<    G d de          Zej         G d	 d
                      ZddZdS )    )annotationsN)ABCMeta)ConfigurationErrorzdict[str, StorageRegistry]SCHEMESc                        e Zd Zd	 fdZ xZS )
StorageRegistrynamestrbasestuple[type, ...]dctdict[str, str | list[str]]returnc                    |                     dd           }t                                          | |||          }|r*t          |t                    r|g}n|}|D ]}|t
          |<   |S )NSTORAGE_SCHEME)getsuper__new__
isinstancer
   r   )	mcsr	   r   r   storage_schemeclsschemesscheme	__class__s	           f/var/www/html/crypto-mining-system/backend/venv/lib/python3.11/site-packages/limits/_storage_scheme.pyr   zStorageRegistry.__new__   s|     !1488ggooc444 	&.#.. ))*(! & &"%
    )r	   r
   r   r   r   r   r   r   )__name__
__module____qualname__r   __classcell__)r   s   @r   r   r      s=                 r   r   c                  d    e Zd ZU ded<   ded<   ded<   ded<   ded<   d	ed
<   edd            ZdS )StorageURIOptionsr
   r   z
str | Noneusernamepasswordzlist[tuple[str, int]]	locationspathzdict[str, list[str]]queryr   boolc                l    t          | j        du o| j        du o| j        p| j        p| j                   S )z
        whether this is just a scheme:// uri without any information
        that might be useful when constructing the actual storage
        instance
        N)r)   r$   r%   r&   r'   r(   )selfs    r   emptyzStorageURIOptions.empty(   sL     MT! @%@^>ty>DJ?
 
 	
r   N)r   r)   )r   r   r    __annotations__propertyr,    r   r   r#   r#      sy         KKK$$$$

 

 

 X

 

 

r   r#   urir
   r   c           
        t           j                            |           }|j                            d          dz   }g }	 |j        |d          r|j        |d                              d          D ]q}t           j                            d|                                           }|j        |j        }}||t          d|           |
                    ||f           rn%# t          $ r}t          d|            |d }~ww xY wt          |j        |j        |j        ||j        t           j                            |j                            S )N@   ,zfake://z!Missing host or port in location zUnable to parse storage uri )urllibparseurlparsenetlocfindsplitstriphostnameportr   append
ValueErrorr#   r   r$   r%   r'   parse_qsr(   )	r0   parsedsepr&   locsubr<   r=   errs	            r   parse_storage_urirF   6   sc   \""3''F
-

S
!
!A
%CI	P= 	3}STT*0055 3 3l++,Cciikk,C,CDD!$sx$#t|,-VQT-V-VWWW  (D!12222 P P P !E!E!EFFCOPfl++  s    B#C$ $
D.DD)r0   r
   r   r#   )
__future__r   dataclassesurllib.parser5   abcr   limits.errorsr   r   r-   r   	dataclassr#   rF   r/   r   r   <module>rM      s    " " " " " " "               , , , , , ,&( ( ( ( (    g   & 
 
 
 
 
 
 
 
,     r   