o
    j9:j'                     @   s   d dl Z d dlZ d dlZd dlmZ d dlmZ edefddZ	de
eeef  ddeB fdd	Zd
edejdB fddZedefddZdS )    N)cache)versionreturnc                   C      t tdddkS )zx
    Single point to check if native DSL ops are disabled globally,
    checked via:
    TORCH_DISABLE_NATIVE_JIT=1
    TORCH_DISABLE_NATIVE_JITr      intosgetenv r   r   a/home/nk/hobo-godmode/plappi-mvp/.venv/lib/python3.10/site-packages/torch/_native/common_utils.pycheck_native_jit_disabled	      r   depsc                 C   s8   | D ]\}}t j|du rd| d| d  S qdS )z
    Check availability of required packages - cuteDSL & deps,
    informing user what (if anything) is missing

    NOTE: Doesn't actually import anything.
    Nzmissing optional dependency `z` (importlib.util.find_spec(z	) failed))	importlibutil	find_spec)r   package_namemodule_namer   r   r   _unavailable_reason   s   r   packagec                 C   sR   zt j| }W n t jjy   Y dS w zt|}W |S  tjy(   Y dS w )z
    Get the installed version of a package as (major, minor, patch).

    Handles pre-release suffixes like "0.7.0rc1" or "3.1.0.post1" by
    stripping non-numeric tails from each component. Returns None on
    parse failure.
    N)r   metadatar   PackageNotFoundError_packaging_versionparseInvalidVersion)r   r   vr   r   r   _available_version$   s   r   c                   C   r   )z
    Single point to check if native DSL version gating should be skipped,
    checked via:
    TORCH_NATIVE_SKIP_VERSION_CHECK=1
    TORCH_NATIVE_SKIP_VERSION_CHECKr   r   r   r   r   r   r   check_native_version_skip9   r   r    )r   importlib.metadatar
   	functoolsr   torch._vendor.packagingr   r   boolr   listtuplestrr   Versionr   r    r   r   r   r   <module>   s    "	