
    (Gg                         d dl Z d dlZd dlmZ d dlmZmZmZmZ d dlZd dl	m
Z
 d dlm
Z ddddedeeeef      dee   d	ee
ef   fd
Zded	efdZy)    N)is_dataclass)AnyDictOptionalUnion)	BaseModelfield_definitionsroot
model_namer
   r   returnc                    	 ddl m}  || ||      S # t        $ r! ddlm} i }|||d<    || fi ||xs i cY S w xY w)zCreate a pydantic model with the given field definitions.

    Args:
        model_name: The name of the model.
        field_definitions: The field definitions for the model.
        root: Type for a root model (RootModel)
    r   )create_model_v2r	   )create_model__root__)langchain_core.utils.pydanticr   ImportErrorlangchain_core.runnables.utilsr   )r   r
   r   r   r   	v1_kwargss         u/home/kushmeetdev/apache_webroot/langgraph_flaskproject/venv/lib/python3.12/site-packages/langgraph/utils/pydantic.pyr   r      sg    RA/
 	

  R?	$(Ij!JQ)Q8I8ORQQRs    '==type_c                    t        |       ryt        | t              rt        | t              ryt        | d      rM| j                  D ]>  }|t        j                  u r y|t        j                  u s*t        j                  dk\  s> y y)zCheck if a given "complex" type is supported by pydantic.

    This will return False for primitive types like int, str, etc.

    The check is meant for container types like dataclasses, TypedDicts, etc.
    T__orig_bases__)      F)r   
isinstancetype
issubclassr   hasattrr   typing_extensions	TypedDicttypingsysversion_info)r   bases     r   is_supported_by_pydanticr&   ,   s     E %:eY#?u&'(( 	 D(222))) ##w.	      )r#   r"   dataclassesr   r   r   r   r   r    pydanticr   pydantic.v1BaseModelV1strr   boolr&    r'   r   <module>r/      s    
  $ - -   0 37	RR  S#X/R 3-	R
 9k!"RBC D r'   