
    ]jV                       d dl mZ d dlmZ d dlmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZ d dlmZ d dlmZmZmZmZ d dlmZmZ d dlmZ d dlm Z  d d	l!m"Z" d d
l#m$Z$ d dl%m&Z&m'Z'm(Z(m)Z) d dl*m+Z+m,Z, d dl-m.Z.m/Z/m0Z0 	 d dl1Z1e1jh                  jj                  jm                         Z7ddZ8 ed       G d de'             Z9y# e2$ r	  e3d      w xY w)    )annotations)Path)AnyCallableDefaultDictDictIterableIteratorListMappingOptionalSequenceSetTupleTypeUnion)ParseResult)DefaultPutDictLiteralTypePythonVersionsnooper_to_methods)	DataModelDataModelFieldBase)pydantic)Enum)DataTypeScalar)DataTypeUnion)DataTypeParserSourceescape_characters)	ModelType	Reference)DataTypeManagerStrictTypesTypesNzkPlease run `$pip install 'datamodel-code-generator[graphql]`' to generate data-model from a GraphQL schema.c                V    t        j                  |       }t        j                  |      S )z%Build a graphql schema from a string.)graphqlbuild_schemalexicographic_sort_schema)
schema_strschemas     Q/root/env/lib/python3.12/site-packages/datamodel_code_generator/parser/graphql.pybuild_graphql_schemar.   5   s#    !!*-F,,V44    )max_variable_lengthc            F          e Zd ZU ded<   ded<   i Zded<   ded<   ej                  j                  j                  j                  ej                  j                  j                  j                  ej                  j                  j                  j                  ej                  j                  j                  j                  ej                  j                  j                  j                  ej                  j                  j                  j                  gZd	ed
<   ej"                  ej$                  eeej*                  ej,                  ddddej0                  dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fdZddZddZd dZ	 	 	 	 	 	 	 	 d!dZd"dZd#dZ	 	 	 	 	 	 	 	 d$dZ 	 	 	 	 d%dZ!	 	 	 	 d&dZ"d'dZ#	 	 	 	 d(dZ$d)dZ%d*dZ& xZ'S )+GraphQLParsergraphql.GraphQLSchemaraw_objz#Dict[str, graphql.GraphQLNamedType]all_graphql_objectszDict[str, Reference]
referenceszIDict[graphql.type.introspection.TypeKind, List[graphql.GraphQLNamedType]]support_graphql_typesz)List[graphql.type.introspection.TypeKind]parse_orderNFzutf-8)Edata_model_typedata_model_root_typedata_model_scalar_typedata_model_union_typedata_type_manager_typedata_model_field_type
base_classadditional_importscustom_template_dirextra_template_datatarget_python_versiondump_resolve_reference_action
validationfield_constraintssnake_case_fieldstrip_default_nonealiasesallow_population_by_field_name(apply_default_values_for_required_fieldsallow_extra_fields"force_optional_for_required_fields
class_nameuse_standard_collections	base_pathuse_schema_descriptionuse_field_descriptionuse_default_kwargreuse_modelencodingenum_field_as_literalset_default_enum_memberuse_subclass_enumstrict_nullableuse_generic_container_typesenable_faux_immutabilityremote_text_cachedisable_appending_item_suffixstrict_typesempty_enum_field_namecustom_class_name_generatorfield_extra_keysfield_include_all_keys!field_extra_keys_without_x_prefixwrap_string_literaluse_title_as_nameuse_operation_id_as_nameuse_unique_items_as_sethttp_headershttp_ignore_tlsuse_annotated2use_non_positive_negative_number_constrained_typesoriginal_field_name_delimiteruse_double_quotesuse_union_operatorallow_responses_without_contentcollapse_root_modelsspecial_field_name_prefix remove_special_field_name_prefixcapitalise_enum_memberskeep_model_orderuse_one_literal_as_defaultknown_third_partycustom_formatterscustom_formatters_kwargsuse_pendulumhttp_query_parameterstreat_dots_as_moduleuse_exact_importsdefault_field_extrasc       E           t        G|   dEi d|d|d|d|d|d|d|	d|
d	|d
|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|>d| d |!d!|"d"|#d#|$d$|%d%|&d&|'d'|(d(|)d)|*d*|+d+|,d,|-d-|.d.|/d/|0d0|1d1|2d2|3d3|4d4|5d5|6d6|7d7|8d8|9d9|:d:|;d;|<d<|=d=|?d>@d?Ad@BdACdBDdCEdDF || _        || _        || _        |7| _        y )FNsourcer9   r:   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rL   rK   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   ru   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   rv   rw   rx   ry   rz   r{   r|   r}    )super__init__r;   r<   rO   rn   )Hselfr   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   	__class__sH                                                                          r-   r   zGraphQLParser.__init__W   sx   T 	 E	
E	
+E	
 "6E	
 $:	E	

 #8E	
 "E	
  2E	
 !4E	
 !4E	
 #8E	
 +HE	
 "E	
 0E	
 .E	
  2E	
  !E	
" ,J#E	
$  2%E	
& 6^'E	
( 0R)E	
* "+E	
, &>-E	
.  /E	
0 $:1E	
2 #83E	
4 05E	
6 $7E	
8 9E	
: #8;E	
< (B=E	
> %<?E	
@ 0AE	
B ,CE	
D )DEE	
F &>GE	
H 0IE	
J +HKE	
L &ME	
N #8OE	
P )DQE	
R .SE	
T $:UE	
V /PWE	
X !4YE	
Z 0[E	
\ &>]E	
^ %<_E	
` &aE	
b ,cE	
d (eE	
f @rgE	
h +HiE	
j 0kE	
l  2mE	
n -LoE	
p "6qE	
r '@sE	
t .NuE	
v %<wE	
x .yE	
z 0{E	
| 0}E	
~ &>E	
@ &AE	
B #8CE	
D "6EE	
F 0GE	
H "6IE	
N '=#%:"(@%"4r/   c              #    K   t        | j                  t              s4t        | j                  t              r| j                  j	                         rwt               | _        | j                  D ch c]C  }| j                  j                  |j                        j                         j                         E c}| j                  _        | j                  D ]  }t        | j                  t              r| j                  | j                        }nt        |j                  j                         }| j
                  |j                  | _        | j                  j#                  |j                  j$                        5  | j                  j'                  |      5  ||f d d d        d d d         y c c}w # 1 sw Y   xY w# 1 sw Y   xY wwN)
isinstancer   listr   is_dircurrent_source_pathiter_sourcerP   joinpathpathresolveas_posixmodel_resolverafter_load_filesr   get_url_path_partspartscurrent_base_path_contextparentcurrent_root_context)r   sr   
path_partss       r-   _get_context_source_path_partsz,GraphQLParser._get_context_source_path_parts   se     dkk4(t{{D)dkk.@.@.B'+vD$ ))4 ''/779BBD4D0
 && 
	)F$++{3!44T[[A
!&++"3"34
''3+1;;($$>>"" )""77
C) j(() ) )
	)4) ) ) )sD   A,G.AF.6CG8F?F3F?#G3F<8F??G	Gc                   |j                   j                         D ]  \  }}|j                  d      r|dv rt        j	                  |d       }|| j
                  v sB|| j                  |j                  <   t        t        |  d|j                   d|j                   |j                  |j                        | j                  |j                  <   | j
                  |   j                  |        y )N__)QueryMutation/)r   nameoriginal_name)type_mapitems
startswithgraphql_resolverkindr7   r5   r   r#   strvaluer6   append)r   pathsr,   	type_nametype_resolved_types         r-   _resolve_typeszGraphQLParser._resolve_types  s     & 5 5 7 	HIu##D)11,11%>M : ::7<((4.7K=-*=*=)>a

|L"'**/

+ **=9@@G%	Hr/   c           
         | j                  dt        |g| j                  | j                        || j                  dddd      S )N
typename__)literalsrn   rO   F
__typenameT)r   	data_typedefaultrj   requiredaliasru   has_default)r>   r   rn   rO   rj   )r   r   s     r-   _typename_fieldzGraphQLParser._typename_field  sV    ))#'#:#:)-)F)F
 ,,'+ * 
 	
r/   c                    t        |t        j                        r4|j                  t        j                  j
                  k(  ry |j                  S |du r|j                  ry y )NF)r   r(   GraphQLInputFielddefault_valuepyutils	Undefinedis_list)r   fieldfinal_data_typer   s       r-   _get_defaultzGraphQLParser._get_default+  sR     eW667""goo&?&??&&&u&&r/   c           	         | j                   j                  | j                  | j                  |j                     g | j
                  | j                  |j                               y )N)	referencefieldsrA   rB   description)resultsr   r;   r6   r   rA   rB   r   )r   scalar_graphql_objects     r-   parse_scalarzGraphQLParser.parse_scalar;  sX    ''//*?*D*DE$($<$<$($<$<1== ( 	
r/   c                   g }t               }|j                  j                         D ]  \  }}t        |t              rd|j                  t               dn|}| j                  j                  ||t        j                        }|j                  |       |j                  | j                  || j                  j                  t         j"                        |d| j$                  d|j&                  d ud               t)        | j*                  |j,                     || j.                  |j&                  | j0                        }| j2                  j                  |       y )N')excludes
model_typeT)r   r   r   r   rH   r   rR   r   )r   r   r   r   rA   )setvaluesr   r   r   	translater!   r   get_valid_field_namer"   ENUMaddr   r>   data_type_managerget_data_typer&   stringrH   r   r   r6   r   r   rA   r   )	r   enum_objectenum_fieldsexclude_field_names
value_namer   r   
field_nameenums	            r-   
parse_enumzGraphQLParser.parse_enumF  sO   02(+!,!3!3!9!9!; 	J j#. J(():;<A>  ,,AA%8Y^^ B J  ##J/**#"44BB $!'+'>'> $*/*;*;4*G"& + 	6 ook&6&67))#// $ 8 8
 	D!r/   c                   t        d| j                  | j                        }|}|j                  }t	        j
                  |      st	        j                  |      rt	        j
                  |      r4d|_        t        d| j                  | j                        }|g|_        |}nt	        j                  |      rd|_	        |j                  }t	        j
                  |      rt	        j                  |      r|j                  |_        | j                   xr |j                   }| j                  |||      }	| j                  i n| j                  j                         }
|j                   |j                   |
d<   | j#                  ||	|||
|| j$                  | j&                  | j(                  | j*                  ||	d u      S )NT)is_optionalrn   rO   Fr   )r   r   r   r   extrasr   rH   rj   rR   rS   r   r   )r   rn   rO   typer(   is_list_typeis_non_null_typer   
data_typesr   of_typer   rM   r   r}   copyr   r>   rH   rj   rR   rS   )r   r   r   r   r   r   objnew_data_typer   r   r   s              r-   parse_fieldzGraphQLParser.parse_fieldn  s    ##66%)%B%B

 $	jj""3'7+C+CC+H##C($(	! ( $'+'>'>-1-J-J!
 )6	$)	))#.(-	%++C ""3'7+C+CC+H" 	??? 
+++ 	 ##E?HE ((0 **//1 	 ($)$5$5F=!))%#66,,"&"<"<"44$t+ * 
 	
r/   c           
        g }t               }|j                  j                         D ]Z  \  }}| j                  j	                  ||      \  }}|j                  |       | j                  |||      }|j                  |       \ |j                  | j                  |j                               g }	t        |d      r0|j                  D 
cg c]  }
| j                  |
j                      }	}
| j                  | j                  |j                     ||	| j                  | j                  | j                   | j"                  |j$                        }| j&                  j                  |       y c c}
w )N)r   
interfaces)r   r   base_classescustom_base_classrA   rB   r   r   )r   r   r   r   get_valid_field_name_and_aliasr   r   r   r   r   hasattrr   r6   r9   r?   rA   rB   r   r   r   )r   r   r   r   r   r   field_name_r   r>   r   ir9   s               r-   parse_object_likezGraphQLParser.parse_object_like  sI    (+!$!1!1!3 	1J!%!4!4!S!S%8 "T "K  ##K0$($4$4[%$O!MM/0	1 	d**388453%=@^^LDOOAFF3LLL..oochh/%"oo $ 8 8 $ 8 8)) / 	
 	O, Ms   
 E*c                &    | j                  |       y r   r   )r   interface_graphql_objects     r-   parse_interfacezGraphQLParser.parse_interface  s     	78r/   c                &    | j                  |       y r   r   )r   graphql_objects     r-   parse_objectzGraphQLParser.parse_object  s    ~.r/   c                &    | j                  |       y r   r   )r   input_graphql_objects     r-   parse_input_objectz GraphQLParser.parse_input_object  s     	34r/   c           	        g }|j                   D ]6  }|j                  | j                  |j                  t	                            8 | j                  | j                  |j                     || j                  | j                  | j                  | j                  |j                        }| j                  j                  |       y )N)r   r   )r   r   r   rA   rB   r   r   )typesr   r>   r   r   r<   r6   r?   rA   rB   r   r   r   )r   union_objectr   r   r9   s        r-   parse_unionzGraphQLParser.parse_union  s    !'' 	EMM**

hj*Q	
 44ool&7&78"oo $ 8 8 $ 8 8))$00 5 
 	O,r/   c                   i | _         i | _        t        j                  j                  j
                  j                  g t        j                  j                  j
                  j                  g t        j                  j                  j
                  j                  g t        j                  j                  j
                  j                  g t        j                  j                  j
                  j                  g t        j                  j                  j
                  j                  g i| _        t        j                  j                  j
                  j                  | j                  t        j                  j                  j
                  j                  | j                  t        j                  j                  j
                  j                  | j                  t        j                  j                  j
                  j                  | j                   t        j                  j                  j
                  j                  | j"                  t        j                  j                  j
                  j                  | j$                  i}| j'                         D ]e  \  }}t)        |j*                        }|| _        | j/                  ||       | j0                  D ]#  }| j                  |   D ]  }||   } ||        % g y r   )r5   r6   r(   r   introspectionTypeKindSCALARr   UNION	INTERFACEOBJECTINPUT_OBJECTr7   r   r   r   r   r   r   r   r.   textr4   r   r8   )r   *_mapper_from_graphql_type_to_parser_methodr   r   r,   	next_typer   parser_s           r-   	parse_rawzGraphQLParser.parse_raw  s   #% 02 LL&&//66LL&&//44bLL&&//55rLL&&//992LL&&//66LL&&//<<b&
" LL&&//668I8ILL&&//44dooLL&&//994;O;OLL&&//668I8ILL&&//<<d>U>ULL&&//55t7G7G6
2 #'"E"E"G 		!FJ,@,MF!DL
F3!-- !	55i@ !CHSGCL!!		!r/   )r   zUnion[str, Path, ParseResult]r9   Type[DataModel]r:   r  r;   r  r<   r  r=   zType[DataTypeManager]r>   zType[DataModelFieldBase]r?   Optional[str]r@   Optional[List[str]]rA   Optional[Path]rB   z*Optional[DefaultDict[str, Dict[str, Any]]]rC   r   rD   z(Optional[Callable[[Iterable[str]], str]]rE   boolrF   r  rG   r  rH   r  rI   zOptional[Mapping[str, str]]rJ   r  rK   r  rL   r  rM   r  rN   r  rO   r  rP   r  rQ   r  rR   r  rS   r  rT   r  rU   r   rV   zOptional[LiteralType]rW   r  rX   r  rY   r  rZ   r  r[   r  r\   z"Optional[DefaultPutDict[str, str]]r]   r  r^   zOptional[Sequence[StrictTypes]]r_   r  r`   zOptional[Callable[[str], str]]ra   Optional[Set[str]]rb   r  rc   r  rd   zOptional[bool]re   r  rf   r  rg   r  rh   #Optional[Sequence[Tuple[str, str]]]ri   r  rj   r  rk   r  rl   r  rm   r  rn   r  ro   r  rp   r  rq   r  rr   r  rs   r  rt   r  ru   r  rv   r  rw   r  rx   Optional[Dict[str, Any]]ry   r  rz   r  r{   r  r|   r  r}   r  returnNone)r  z"Iterator[Tuple[Source, List[str]]])r   z	List[str]r,   r3   r  r  )r   r   r  r   )r   6Union[graphql.GraphQLField, graphql.GraphQLInputField]r   r   r   r  r  r   )r   zgraphql.GraphQLScalarTyper  r  )r   zgraphql.GraphQLEnumTyper  r  )r   r   r   r   r   r  r  r   )r   z^Union[graphql.GraphQLInterfaceType, graphql.GraphQLObjectType, graphql.GraphQLInputObjectType]r  r  )r   zgraphql.GraphQLInterfaceTyper  r  )r   zgraphql.GraphQLObjectTyper  r  )r   zgraphql.GraphQLInputObjectTyper  r  )r   zgraphql.GraphQLUnionTyper  r  )r  r  )(__name__
__module____qualname____annotations__r6   r(   r   r   r  r  r   r  r  r  r  r8   pydantic_model	BaseModelCustomRootTyper   r   r$   DataModelFieldr   PY_38r   r   r   r   r   r   r   r   r   r   r   r   r   r  __classcell__)r   s   @r-   r2   r2   ;   s    #" =< (*J$)
  	""++22""++00""++55""++22""++88""++11>K:  ,:+C+C0>0M0M2@1>8F8V8V:H:W:W$(26.2JN/</B/BRV "'!&#(/3/49>#(38$().$(',&+"'!7;(-"' %,1).@D.38</3FJ/3',@D.2"').(-<@ %#CH7;"'#(05%*3716(-!&+01515=A"EI%*"'9=QT5-T5 )	T5
 .T5 !0T5  /T5 !6T5  8T5 "T5 0T5 ,T5 HT5  -T5 (PT5  !T5"  #T5$ %T5& !'T5( -)T5* )-+T5, 37-T5. !/T50 -11T52 "3T54 #'5T56 "7T58 !%9T5:  $;T5<  =T5> ?T5@ AT5B  5CT5D "&ET5F  GT5H IT5J &*KT5L #'MT5N >OT5P (,QT5R 6ST5T  -UT5V &DWT5X -YT5Z !%[T5\ ,>]T5^ ,_T5`  aT5b #'cT5d "&eT5f :gT5h iT5j kT5l =AmT5n (5oT5p  qT5r !sT5t *.uT5v #wT5x $1yT5z +/{T5| "&}T5~ T5@ %)AT5B /CT5D /ET5F #;GT5H IT5J  CKT5L #MT5N  OT5P 7QT5R 
ST5l)2H*
 E " 	
 
 	
&"P<
<
 <
 F	<

 
<
|$-
$- 
$-L9(D9	9
/5$B5	5
-& !r/   r2   )r+   r   r  r3   ):
__future__r   pathlibr   typingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   urllib.parser   datamodel_code_generatorr   r   r   r   datamodel_code_generator.modelr   r   r   r  #datamodel_code_generator.model.enumr   %datamodel_code_generator.model.scalarr   $datamodel_code_generator.model.unionr   $datamodel_code_generator.parser.baser   r   r    r!   "datamodel_code_generator.referencer"   r#   datamodel_code_generator.typesr$   r%   r&   r(   ImportError	Exceptionr   r   TypeResolversr   r.   r2   r   r/   r-   <module>r0     s    "      %  I E 4 @ >  D N N <<--;;= 5 -V!F V! .V!!  
u s   >C C