o
    㓝h*                     @   sT   d dl Z d dlmZ e  G dd dZd dlZd dlZdd Zdd Zd	d
 ZdS )    N)load_dotenvc                   @   sf   e Zd ZedZedZedZedZedZ	edZ
edZedZed	Zd
S )Config	MONGO_URI
SECRET_KEYSMS_API_KEYSMS_SENDER_IDSMS_TEMPLATE_ID
EMAIL_HOST
EMAIL_PORT
EMAIL_USEREMAIL_PASSWORDN)__name__
__module____qualname__osgetenvr   r   r   r   r   r	   r
   r   r    r   r   DD:\Internship2\StudyBuddy\EduRuby_flask\flask_backend-main\config.pyr      s    







r   c                 C   s4   t | dr|  }|S t | dr|  }|S td)z
    Return a JSON Schema dict for a Pydantic model class that is compatible with Gemini.
    Supports both pydantic v1 (schema()) and v2 (model_json_schema()).
    model_json_schemaschemaz3Unsupported Pydantic version; can't produce schema.N)hasattrr   r   RuntimeError)Zmodel_classrawr   r   r   _get_model_schema   s   

r   c                 C   s\   t | tr| dd t|  D ]\}}t| qdS t | tr*| D ]}t| q#dS dS )z
    Recursively remove any 'additionalProperties' keys from the JSON schema structure,
    because Gemini API does not support that keyword.
    ZadditionalPropertiesN)
isinstancedictpoplistitems_remove_additional_properties)objkvitemr   r   r   r   %   s   



r   c                 C   s(   t | }t|}t| d|d}|S )zP
    Build a cleaned schema equivalent to `List[Model]` for the Gemini API.
    array)typer   N)r   copydeepcopyr   )Zpydantic_model_classZitem_schemaZarray_schemar   r   r   $build_response_schema_for_model_list2   s   
r(   )	r   dotenvr   r   r&   inspectr   r   r(   r   r   r   r   <module>   s    