
    h,i0                       d Z ddlmZ ddlmZ ddlmZmZ ddl	m
Z
 ddlmZ ddlmZmZmZmZmZ ddlmZmZ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! ddl"m#Z# ddl$m%Z% ddl&m'Z' ddl(m)Z) d(d)dZ*d*d+dZ+	 	 	 d,	 	 	 	 	 	 	 	 	 d-dZ,d.dZ-d/dZ.d0dZ/d1dZ0d2dZ1d3dZ2d2dZ3	 	 	 	 d4	 	 	 	 	 	 	 	 	 	 	 	 	 d5dZ4d/d Z5d6d!Z6d7d"Z7d2d#Z8d8d$Z9	 	 	 d9	 	 	 	 	 	 	 	 	 	 	 d:d%Z:d;d&Z;g d'Z<y)<z0Utility functions for pydantic-settings sources.    )annotations)deque)MappingSequence)is_dataclass)Enum)AnyTypeVarcastget_args
get_origin)	BaseModelJson	RootModelSecret)is_model_class)is_pydantic_dataclass)	FieldInfo)Strict)typing_objects)is_union_origin   )SettingsError)_lenient_issubclass   EnvNoneTypec                *    |r| S | j                         S N)lower)keycase_sensitives     o/var/www/hypershopcomercio.com.br/hyper-ai/venv/lib/python3.12/site-packages/pydantic_settings/sources/utils.py_get_env_var_keyr$      s     31ciik1    Nc                *    | |k(  r|| S t        |       S r   r   )valueparse_none_strs     r#   _parse_env_none_strr)      s     .0^5O5hVabgVhhr%   c           	         | j                         D ci c]#  \  }}|r|dk(  st        ||      t        ||      % c}}S c c}}w )N )itemsr$   r)   )env_varsr"   ignore_emptyr(   kvs         r#   parse_env_varsr1       sL     NN$Aqb 	N+-@N-SS  s   (A c                   t        | t              r	| v r|    S t        |       }|s| S t        fd|D              }||k(  r| S t	        |       }|	 ||   S | S # t
        $ r' ddl}ddl}|j                  |j                  |      cY S w xY w)zLSubstitute TypeVars in a type annotation with concrete types from param_map.c              3  6   K   | ]  }t        |        y wr   )_substitute_typevars).0arg	param_maps     r#   	<genexpr>z'_substitute_typevars.<locals>.<genexpr>4   s     Jc)#y9J   Nr   )

isinstancer
   r   tupler   	TypeError	functoolsoperatorreduceor_)tpr7   argsnew_argsoriginr=   r>   s    `     r#   r4   r4   -   s    "g2?}B<D	JTJJH4	^F	<(## I  	< ##HLL(;;	<s   A -B
	B
c           	        t        j                  |       r| j                  S t        |       }t        j                  |      rIt	        |dd      }t        |       }|j                  }|r!|rt        |t        t        ||                  S |S | S )z[Resolve a TypeAliasType to its underlying value, substituting type params if parameterized.__type_params__ )	r   is_typealiastype	__value__r   getattrr   r4   dictzip)
annotationrD   type_params	type_argsr'   s        r#   _resolve_type_aliasrP   E   s    &&z2###
#F&&v.f&7<Z(	  9'tCY4O/PQQr%   c                   t        |       } | At        | t              r1| t        ur)t        d|       } | j                  d   j
                  }||} t        d |D              ryt        |       }t        j                  |      rt        |       ^}}t        ||      S |t        u ryt        |       xs' t        |      xs t        |d      xs t        |d      S )Nztype[RootModel[Any]]rootc              3  <   K   | ]  }t        |t                y wr   r:   r   r5   mds     r#   r8   z)_annotation_is_complex.<locals>.<genexpr>^   s     
3B:b$
3   F__pydantic_core_schema____get_pydantic_core_schema__)rP   r   r   r   model_fieldsrM   anyr   r   is_annotatedr   _annotation_is_complexr   _annotation_is_complex_innerhasattr)rM   metadataroot_annotationrD   innermetas         r#   r]   r]   T   s     %Z0J"5j)"LQ[clQl0*=
$11&9DD&(J

3(
33
#F ""6*
+%eT22 	%Z0 	;'/	;656	; 69:	r%   c                    t        | j                        }| j                  }t        |      }t	        j
                  |      rt        |      ^}}||z  }|S r   )rP   rM   r`   r   r   r\   r   )fieldrM   r`   rD   _rc   s         r#   _get_field_metadatarg   t   sP    $U%5%56J~~H
#F""6*J'DDOr%   c           
         t        | t        t        f      ryt        | t        t        t
        t        t        t        t        f      xs t        |       S )NF)r   strbytesr   r   r   r;   set	frozensetr   r   rM   s    r#   r^   r^   ~   sA    :U|4Y5#y%P "	j	!"r%   c                    t        |       D ]b  }t        ||      r yt        |      }||ur t        |      ^}}t        d |D              r@t	        t        |            sUt        ||      sb y y)z1Check if a union type contains any complex types.Tc              3  <   K   | ]  }t        |t                y wr   rT   rU   s     r#   r8   z$_union_is_complex.<locals>.<genexpr>   s     =B:b$'=rW   F)r   r]   _strip_annotatedr[   r   r   _union_is_complex)rM   r`   r6   rb   rf   
inner_metas         r#   rq   rq      st    
# !#x0
 !%%c]NA
=*==:e,- 1 r%   c                    t        |       D ]B  }t        j                  t        |            s"t        |      ^}}t	        d |D              sB y y)z:Check if a union type contains any strict-annotated types.c              3  <   K   | ]  }t        |t                y wr   )r:   r   )r5   ms     r#   r8   z*_union_has_strict_types.<locals>.<genexpr>   s     7Q:a(7rW   TF)r   r   r\   r   r[   )rM   r6   rf   rc   s       r#   _union_has_strict_typesrv      sK    
# &&z#7}HA7$77	
 r%   c           	         |rt                |du rMt               |v r|y|j                          |r(t        fd|D              r|y|j                          t	               D ]  }t        ||d|||      s| y |r(t         fd|D              r|y|j                           |v r||j                          yy)z?Check if a type annotation contains any of the specified types.Tc              3  6   K   | ]  }t        |        y wr   r:   )r5   type_rD   s     r#   r8   z-_annotation_contains_types.<locals>.<genexpr>   s     LUz&%8Lr9   )is_include_originis_strip_annotatedis_instancecollectc              3  6   K   | ]  }t        |        y wr   ry   )r5   rz   rM   s     r#   r8   z-_annotation_contains_types.<locals>.<genexpr>   s     LU:j%8Lr9   F)rp   r   addr[   r   _annotation_contains_types)rM   typesr{   r|   r}   r~   rz   rD   s   `      @r#   r   r      s     %j1
D J'U?KK
#3LeLLKK
#*% &"&#5'  sLeLL?JUKK
#r%   c                Z    t        j                  t        |             r| j                  S | S r   )r   r\   r   
__origin__rm   s    r#   rp   rp      s'    "":j#9:$$$r%   c                    | t        |       gt        |       D ]C  }t        |t              s||j                  j                         v s1 ||      j                  c S  y r   )r   r   r   r   __members__valuesname)rM   r'   rz   s      r#   _annotation_enum_val_to_namer      s[    j4Lx
7KL )ud+))0022U|((() r%   c                    | t        |       gt        |       D ]6  }t        |t              s||j                  j                         v s1||   c S  y r   )r   r   r   r   r   keys)rM   r   rz   s      r#   _annotation_enum_name_to_valr      sU    j4Lx
7KL #ud+u((--//T{"# r%   c                B   t        j                  t        |             rt        d t	        |       D              S t        j
                  t        |             rt	        |       d   }t        |      S t        t        |             rt        d t	        |       D              S y)zlCheck if annotation is a Literal type containing numeric Enum members (IntEnum, (int, Enum), (float, Enum)).c              3  l   K   | ],  }t        |t        t        f      xr t        |t               . y wr   )r:   intfloatr   r5   r6   s     r#   r8   z,_literal_has_numeric_enum.<locals>.<genexpr>   s*     ks:cC<0JZT5JJks   24r   c              3  2   K   | ]  }t        |        y wr   )_literal_has_numeric_enumr   s     r#   r8   z,_literal_has_numeric_enum.<locals>.<genexpr>   s     Rc,S1Rs   F)r   
is_literalr   r[   r   r\   r   r   )rM   rb   s     r#   r   r      s      J!78kV^_iVjkkk"":j#9:$Q'(//z*-.RXj=QRRRr%   c                    t        |       rt        | d      r| j                  S t        |       r| j                  S t        d| j                   d      )z.Get fields from a pydantic model or dataclass.__pydantic_fields__zError: z? is not subclass of BaseModel or pydantic.dataclasses.dataclass)r   r_   r   r   rZ   r   __name__)	model_clss    r#   _get_model_fieldsr      sR     Y'GI?T,U,,,i %%%
')"4"4!55tu
vvr%   c                   ddl m}m} g }d}t        |j                  |j
                  f      s
|| gz  }d}n]g }	|j                  |j
                  fD ]  }
|
t        |
t              r|j                  |
       d}*t        |
|      rG|
j                  D ]7  }t        |t              r|j                  |       d}'|	j                  |       9 }|	j                  |
        |	D ]  }t        t        |j                  d         }|s|j                         n|}|It        |j                        dkD  r,t        |j                  d   t              r|j                  d   nd||<   |r|s|j                  |        |r| |vr|j                  |        d}|s|D cg c]  }|j                          }}t        t         j#                  |            |fS c c}w )zGGet alias names for a field, handling alias paths and case sensitivity.r   )AliasChoices	AliasPathTFNr   )pydanticr   r   r[   aliasvalidation_aliasr:   ri   appendchoicesr   pathr    lenr   r;   rK   fromkeys)
field_name
field_infoalias_path_argsr"   populate_by_namer   r   alias_namesis_alias_path_onlynew_alias_pathsr   r   
alias_path
alias_names                 r#   _get_alias_namesr     s    1K#
  *"="=>?
|#"+- &&
(C(CD 	.E}E3'""5)%*"E<0!MM 5D!$,#**40-2*'..t45  &&u-	. * 	)JZ__Q/0D'54::<4D**-joo*>*BzR\RaRabcRdfiGjJOOA&pt  % #5""4(	) 
+ =z*!&<GHjz'')HH{+,.@@@ Is   Gc                .    ddl m}m} t        | ||f      S )z!Check if an object is a function.r   )BuiltinFunctionTypeFunctionType)r   r   r   r:   )objr   r   s      r#   _is_functionr   2  s    7cL*=>??r%   )r   r   r   r]   r^   r   r$   r   r   r   r)   rP   rp   rv   rq   r1   )F)r!   ri   r"   boolreturnri   r   )r'   
str | Noner(   r   r   zstr | None | EnvNoneType)FFN)
r-   Mapping[str, str | None]r"   r   r.   r   r(   r   r   r   )rA   r	   r7   zdict[Any, Any]r   r	   )rM   r	   r   r	   )rM   r	   r`   	list[Any]r   r   )re   r   r   r   )rM   type[Any] | Noner   r   )rM   r   r`   r   r   r   )TFFN)rM   r   r   ztuple[Any, ...]r{   r   r|   r   r}   r   r~   zset[Any] | Noner   r   )rM   r   r'   r	   r   r   )rM   r   r   r	   r   r	   )r   z	type[Any]r   zdict[str, Any])NTF)r   ri   r   r	   r   zdict[str, int | None] | Noner"   r   r   r   r   ztuple[tuple[str, ...], bool])r   r	   r   r   )=__doc__
__future__r   _annotationscollectionsr   collections.abcr   r   dataclassesr   enumr   typingr	   r
   r   r   r   r   r   r   r   r   pydantic._internal._utilsr   pydantic.dataclassesr   pydantic.fieldsr   pydantic.typesr   typing_inspectionr   typing_inspection.introspectionr   
exceptionsr   utilsr   r   r   r$   r)   r1   r4   rP   r]   rg   r^   rq   rv   r   rp   r   r   r   r   r   r   __all__rG   r%   r#   <module>r      sx   6 2  - $  ; ; 7 7 4 6 % ! , ; & ' 2i !!%	
&

 
 	

 
0@"( #$#* ** * 	*
 * * 
*Zw 59".A.A.A 2.A 	.A
 .A ".Ab@r%   