
    ZThT                         d dl mZmZmZmZmZmZ d dlmZm	Z	m
Z
 	 ddeeeeeeef   f   deeegeeeeeef      f      dee
   fdZdee
   deeeeeeef   f   fd	Zdee
   deeeef      fd
Zy)    )AnyCallableDictListOptionalUnion)MetadataKeyMetadataKeyTypeMetadataValueN	_metadataparsereturnc                 <   g }| j                         D ]  \  }}t        j                  }d}d}d}t        |t        t
        t        t        f      s|r	 ||      }nt        d| d|       t        |t              r|}t        j                  }n]t        |t              r|}t        j                  }n:t        |t        t
        f      r|}t        j                  }nt        d| d|       t        ||      }	t        |	|||      }
|j                  |
        |S )a  
    Wraps metadata dictionary into a list of MetadataValue objects.

    Args:
        _metadata: Dictionary of metadata key-value pairs.
        parse: Optional function to parse complex types into a compatible
           metadata type (i.e, str, float, int, or bool). Function should raise an
           Exception if it can't parse the value.
    Returns:
        List of MetadataValue objects.
    Nz)Unsupported metadata value type for key 'z': nametype)keystring_valueboolean_valuenumber_value)itemsr
   METADATA_KEY_TYPE_UNSPECIFIED
isinstancestrfloatboolint
ValueErrorMETADATA_KEY_TYPE_STRINGMETADATA_KEY_TYPE_BOOLEANMETADATA_KEY_TYPE_NUMBERr	   r   append)r   r   metadatar   valuer   r   r   r   wrapped_keywrapped_values              _/home/www/backend.miabetepe.com/venv/lib/python3.12/site-packages/sift_py/_internal/metadata.pymetadata_dict_to_pbr(      s    Hoo'  '
U<<%#udC!89e #LSEQTUZT[!\]]eS! L";;Dt$!M"<<DU|, L";;DHSQVPWXYY!s6%%'%	
 	&A 'D O    r#   c                 R   i }| D ]  }|j                   j                  |v r"t        d|j                   j                         |j                   j                  t        j
                  k(  r$|j                  ||j                   j                  <   |j                   j                  t        j                  k(  r$|j                  ||j                   j                  <   |j                   j                  t        j                  k(  s|j                  ||j                   j                  <   ! |S )z
    Unwraps a list of MetadataValue objects into a dictionary.

    Args:
        metadata: List of MetadataValue objects.

    Returns:
        Dictionary of metadata key-value pairs.
    zKey already exists: )r   r   r   r   r
   r   r   r    r   r!   r   )r#   unwrapped_metadatamds      r'   metadata_pb_to_dictr-   <   s     CE >66;;,,3BFFKK=ABB66;;/BBB.0oorvv{{+VV[[OEEE.0.>.>rvv{{+VV[[ODDD.0oorvv{{+> r)   c                 t    dt         dt        t        t        f   fd}| D cg c]
  } ||       }}|S c c}w )z
    Serializes a list of MetadataValue objects to a n API compatible dict,
    preserving the proto structure.

    Args:
        metadata: List of MetadataValue objects.

    Returns:
        Dict representing the metadata with proto structure.
    r,   r   c                     d| j                   j                  | j                   j                  di}| j                   j                  t        j                  k(  r| j
                  |d<   |S | j                   j                  t        j                  k(  r| j                  |d<   |S | j                   j                  t        j                  k(  r| j                  |d<   |S t        | j                   j                   d| j                   j                         )Nr   r   r   r   r   z set to invalid type: )r   r   r   r
   r   r   r    r   r!   r   r   )r,   
value_dicts     r'   metadata_value_to_dictz7metadata_pb_to_dict_api.<locals>.metadata_value_to_dict`   s    &+bffkk266;;-W%X
66;;/BBB)+J~&  VV[[OEEE*,*:*:J'
 	 VV[[ODDD)+J~&  },B266;;-PQQr)   )r   r   r   r   )r#   r1   r,   metadata_lists       r'   metadata_pb_to_dict_apir3   T   sE    
= 
T#s(^ 
 ;CCB+B/CMC Ds   5)N)typingr   r   r   r   r   r   sift.metadata.v1.metadata_pb2r	   r
   r   r   r   r   r   r(   r-   r3    r)   r'   <module>r7      s    = = U U
 PT3CsE445563HcUHU3tS3H-I$JJKL3 
-3l$}"5 $sE#uVZ\_J_D`?`:a 0d=&9 d4S>>R r)   