
    5j                        % S SK Jr  S SKrS SKrS SKJr  S SKJr  0 r	S\
S'    " S S\5      r\R                   " S	 S
5      5       rSS jrg)    )annotationsN)ABCMeta)ConfigurationErrorzdict[str, StorageRegistry]SCHEMESc                  <   ^  \ rS rSr        SU 4S jjrSrU =r$ )StorageRegistry   c                   > UR                  SS 5      n[        TU ]	  XX#5      nU(       a-  [        U[        5      (       a  U/nOUnU H  nU[
        U'   M     U$ )NSTORAGE_SCHEME)getsuper__new__
isinstancestrr   )	mcsnamebasesdctstorage_schemeclsschemesscheme	__class__s	           U/root/lseg-credit/backend/venv/lib/python3.13/site-packages/limits/_storage_scheme.pyr   StorageRegistry.__new__   s]     !148goc4.#..)*(!"% " 
     )r   r   r   ztuple[type, ...]r   zdict[str, str | list[str]]returnr   )__name__
__module____qualname____firstlineno__r   __static_attributes____classcell__)r   s   @r   r   r      s-    /6P	 r   r   c                  f    \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S	'   S
\S'   \SS j5       rSrg)StorageURIOptions   r   r   z
str | Noneusernamepasswordzlist[tuple[str, int]]	locationspathzdict[str, list[str]]queryc                    [        U R                  SL =(       aL    U R                  SL =(       a7    U R                  =(       d    U R                  =(       d    U R
                  (       + 5      $ )z
whether this is just a scheme:// uri without any information
that might be useful when constructing the actual storage
instance
N)boolr(   r)   r*   r+   r,   )selfs    r   emptyStorageURIOptions.empty(   sQ     MMT! @%@^^>tyy>DJJ?
 	
r   r   N)r   r.   )r   r    r!   r"   __annotations__propertyr0   r#   r   r   r   r&   r&      s7    K$$


 

r   r&   c           
        [         R                  R                  U 5      nUR                  R	                  S5      S-   n/ n UR                  US  (       a  UR                  US  R                  S5       Hp  n[         R                  R                  SUR                  5        35      nUR                  UR                  pvUb  Uc  [        SU 35      eUR                  Xg45        Mr     [        UR                  UR                  UR                  UUR                   [         R                  R#                  UR$                  5      5      $ ! [         a  n[        SU  35      UeS nAff = f)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,   )	uriparsedsepr*   locsubr?   r@   errs	            r   parse_storage_urirJ   6   s5   \\""3'F
--

S
!A
%CI	P==}}ST*005ll++gciik],CD!$sxx$#t|,/PQTPU-VWW  (!12 6 fll+   P #?u!EFCOPs   B&E 
E$EE$)rD   r   r   r&   )
__future__r   dataclassesurllib.parser8   abcr   limits.errorsr   r   r2   r   	dataclassr&   rJ   r   r   r   <module>rQ      sO    "    ,&(	# (g & 
 
 
,r   