o
    pkj                     @   s>   d Z ddlmZ ddlmZmZ dedededefdd	Zd
S )zACode generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.    )Enum)AnyOptionalmodel	fieldnamekeyreturnc                    s      dtdtt f fdddtdtt ffddt| tr7| D ]}|}|dur6|  S q(| }|durA|S td	  d
|  )a  
    Recursively search for the discriminator attribute in a model.

    Args:
        model (Any): The model to search within.
        fieldname (str): The name of the field to search for.
        key (str): The key to search for in dictionaries.

    Returns:
        str: The name of the discriminator attribute.

    Raises:
        ValueError: If the discriminator attribute is not found.
    fieldr   c                    sx   t | tr| v r|   S t|  r$t|  }t |tr!|j S | S t| r:t| }t |tr7|j S | S dS )z8Search for the discriminator attribute in a given field.N)
isinstancedicthasattrgetattrr   value)r	   attr)r   r   upper_fieldname b/home/djax/ivt_ai_plugin/venv/lib/python3.10/site-packages/google/genai/_gaos/utils/annotations.pyget_field_discriminator(   s   







z2get_discriminator.<locals>.get_field_discriminatorobjc                    s    | }|dur
|S t | tr@|  D ],}t |tr.|D ]}|}|dur,|    S qqt |tr?|}|dur?|  S qdS )z:Recursively search for discriminator in nested structures.N)r
   r   valueslist)r   discriminatorr   itemnested_discriminator)r   search_nested_discriminatorr   r   r   =   s$   


z6get_discriminator.<locals>.search_nested_discriminatorNz#Could not find discriminator field z in )upperr   r   strr
   r   
ValueError)r   r   r   r	   r   r   )r   r   r   r   r   r   get_discriminator   s   
r   N)__doc__enumr   typingr   r   r   r   r   r   r   r   <module>   s   