
    UEj                     <    d Z ddlmZ ddlmZmZ dedededefdZy	)
zACode generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.    )Enum)AnyOptionalmodel	fieldnamekeyreturnc                    j                         dt        dt        t           ffddt        dt        t           ffdt	        | t
              r| D ]  } |      }||c S   |       }||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                    t        | t              r
| v r|     S t        |       r,t        |       }t        |t              r|j
                   S | S t        |       r,t        |       }t        |t              r|j
                   S | S y)z8Search for the discriminator attribute in a given field.N)
isinstancedicthasattrgetattrr   value)r   attrr   r   upper_fieldnames     Z/var/www/html/qr/venv/lib/python3.12/site-packages/google/genai/_gaos/utils/annotations.pyget_field_discriminatorz2get_discriminator.<locals>.get_field_discriminator(   s     eT"e|*&5)$5),D$%**&V5/*5/2D$%**&V    objc                      |       }||S t        | t              r\| j                         D ]I  }t        |t              r|D ]  } |      }||c c S  +t        |t              s< |      }|G|c S  y)z:Recursively search for discriminator in nested structures.N)r   r   valueslist)r   discriminatorr   itemnested_discriminatorr   search_nested_discriminators        r   r   z6get_discriminator.<locals>.search_nested_discriminator=   s     04$   c4  4eT* % 8/J4/P,/;#778  t,+Fu+M(+7334 r   z#Could not find discriminator field z in )upperr   r   strr   r   
ValueError)r   r   r   r   r   r   r   r   s    ``  @@@r   get_discriminatorr"      s      oo'Os x} * # 0 % 	%E7>M($$	%
 06M 
:9+T%Q
RRr   N)__doc__enumr   typingr   r   r    r"    r   r   <module>r'      s<   " H   HSS HSS HSs HSs HSr   