
    hj                     >    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d	S )
zACode generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.    )Enum)AnyOptionalmodel	fieldnamekeyreturnc                 T                                    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                 L   t          | t                    r| v r	|           S t          |           r0t          |           }t          |t                    r|j         S | S t          |           r0t          |           }t          |t                    r|j         S | S dS )z8Search for the discriminator attribute in a given field.N)
isinstancedicthasattrgetattrr   value)r   attrr   r   upper_fieldnames     h/var/www/app.qaans.com/backend/venv/lib/python3.11/site-packages/google/genai/_gaos/utils/annotations.pyget_field_discriminatorz2get_discriminator.<locals>.get_field_discriminator(   s     eT"" 	'e||*&5)$$ 	5),,D$%% '*&95/** 	5/22D$%% '*&9t    objc                 &    |           }||S t          | t                    rk|                                 D ]V}t          |t                    r|D ]} |          }||c c S 0t          |t                    r |          }||c S WdS )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4$   c4   	4 4 4eT** 
4 % 8 8/J/J4/P/P,/;#777777 <8  t,, 4+F+Fu+M+M(+73333tr   Nz#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7>>M($$$$ ) 0/66M 
Q9QQ%QQ
R
RRr   N)__doc__enumr   typingr   r   r    r"    r   r   <module>r'      s   " H G                      HSS HSS HSs HSs HS HS HS HS HS HSr   