
    j@                         d dl Z d dlZd dlmZmZmZ ddlmZmZm	Z	 ddl
mZ  ej                  e      ZdZ G d d	      Zd
edee   fdZy)    N)AnyDictOptional   )'PARSE_API_KEY_EMPTY_EXPECTED_ATTRIBUTESPARSE_API_KEY_EMPTY_KEYPARSE_API_KEY_TOO_MANY_PARTS   )decode_base64*c            
           e Zd ZdZ	 	 ddedee   deeeef      fdZe	dee   fd       Z
e	dee   fd	       Ze	dee   fd
       ZdedefdZy)
OpikApiKeya  
    This is Opik API key parser module which is able to parse enhanced API key format. The format as following:
    initial 25 chars apiKey + DELIMITER_CHAR + base64 encoded OPIK_BASE_URL and other attributes as JSON dictionary.

    The logic of this module is shared among comet_ml, comet_mpm, and opik projects.
    Please do not change this module without synchronization with mentioned projects.
    Napi_key_rawapi_key
attributesc                 .    || _         || _        || _        y N)_api_key_raw_api_key_attributes)selfr   r   r   s       r/Users/manta/Documents/Projects/TheRoad-I1/backend/.venv/lib/python3.12/site-packages/opik/api_key/opik_api_key.py__init__zOpikApiKey.__init__'   s     (%    returnc                     | j                   S r   )r   r   s    r   r   zOpikApiKey.api_key1   s       r   c                 J    | j                   | j                   S | j                  S r   )r   r   r   s    r   short_api_keyzOpikApiKey.short_api_key5   s"    ==$==    r   c                 *    | d   t        | d         S y )NbaseUrl)strr   s    r   base_urlzOpikApiKey.base_url;   s    	?&tI''r   keyc                 T    | j                   | j                   j                  |d       S y r   )r   get)r   r$   s     r   __getitem__zOpikApiKey.__getitem__B   s*    '##''T22r   )NN)__name__
__module____qualname____doc__r"   r   r   r   r   propertyr   r   r#   r'    r   r   r   r      s     "&/3	&& #& T#s(^,	& !# ! ! !x} ! !
 (3-  s s r   r   raw_keyr   c                    | t        |       dk(  rt        j                  t               y | j	                  t
              }t        |      }|dk(  r!t        j                  d       t        |       S |dk(  rh|d   }t        |      dkD  r!t        |      }t        j                  |      }n#t        j                  t        | z         |d   } d }t        | |d   |      S t        j                  t        ||        y )Nr   r
   z/Opik API key doesn't have attributes associated)r   r   )r   r   r   )lenLOGGERdebugr   splitDELIMITER_CHARr   r   jsonloadswarningr   r	   )r.   partssizeattr_stringdatar   s         r   parse_api_keyr<   I   s    #g,!+,-MM.)Eu:DqyFGg..	Ah{a -DD)J NNBWLMAhGJguQxJWW
NN/w?r   )r5   loggingtypingr   r   r   logging_messagesr   r   r	   base64_helperr   	getLoggerr(   r1   r4   r   r"   r<   r-   r   r   <module>rB      s\      & & 
 )			8	$( (V3 8J#7 r   