o
    i                     @  sh   d Z ddlmZ ddlZddlmZ dZdZ		 dZ
dd
dZdddZdddZdddZdddZdS )z@The `version` module holds the version information for Pydantic.    )annotationsN)__version__)VERSIONversion_infoz2.12.5z2.41.5returnstrc                   C  s   d tddd S )zmReturn the `major.minor` part of Pydantic version.

    It returns '2.1' if Pydantic version is '2.1.1'.
    .N   )joinr   split r   r   J/home/kim/smarthome/.venv/lib/python3.10/site-packages/pydantic/version.pyversion_short   s   r   c                  C  s   ddl } ddl}ddlm} ddlm} ddlm} h d}g }| j	 D ]}|jd }||v r;|
| d|j  q%|tjd  }	||	rS| rS||	nd	}
ttt|d
dp_|jtj| d||
d}ddd | D S )zFReturn complete version information for Pydantic and its dependencies.r   N)Path   )_git>   ZpyrightZfastapizemail-validatorZmypyzpydantic-settingszpydantic-extra-typesZtyping_extensionsName-unknownZ
build_info )zpydantic versionzpydantic-core versionzpydantic-core buildzpython versionplatformzrelated packagescommit
c                 s  s0    | ]\}}d  |d t|ddV  qdS )z	{:>30} {}:r   r   N)formatr   replace).0kvr   r   r   	<genexpr>J   s   . zversion_info.<locals>.<genexpr>)importlib.metadatar   pathlibr   Zpydantic_core._pydantic_coreZ_pydantic_core	_internalr   metadatadistributionsappendversion__file__parentsresolveZis_git_repoZhave_gitZgit_revisionr   __pydantic_core_version__getattrZbuild_profilesysr
   items)	importlibr   r   ZpdcgitZpackage_namesZrelated_packagesdistnameZpydantic_dirZmost_recent_commitinfor   r   r   r   !   s0   	
	r   boolc                   C  s   t tkS )zBCheck that the installed `pydantic-core` dependency is compatible.)r*   !_COMPATIBLE_PYDANTIC_CORE_VERSIONr   r   r   r   check_pydantic_core_versionM   s   r5   Nonec                  C  sd   t  s.d} tjdkr!ddlm} |d}tt|jdd ddr!d} | r0td	t d
t	 dd S d S )NT)      r   )distributionZpydanticdir_infoeditableFz%The installed pydantic-core version (zD) is incompatible with the current pydantic version, which requires zZ. If you encounter this error, make sure that you haven't upgraded pydantic-core manually.)
r5   r,   r   r    r9   r+   originSystemErrorr*   r4   )Zraise_errorr9   r0   r   r   r   _ensure_pydantic_core_versionR   s   

r>   r&   tuple[int, int, int]c                 C  s   t tt| dd dS )a>  Parse `mypy` string version to a 3-tuple of ints.

    It parses normal version like `1.11.0` and extra info followed by a `+` sign
    like `1.11.0+dev.d6d9d8cd4f27c52edac1f537e236ec48a01e54cb.dirty`.

    Args:
        version: The mypy version string.

    Returns:
        A triple of ints, e.g. `(1, 11, 0)`.
    +r   r   )tuplemapint	partitionr   )r&   r   r   r   parse_mypy_versione   s   rE   )r   r   )r   r3   )r   r6   )r&   r   r   r?   )__doc__
__future__r   Z_annotationsr,   Zpydantic_corer   r*   __all__r   r4   r   r   r5   r>   rE   r   r   r   r   <module>   s    



,
