Ë
    øÿæiË  ã                   óD  — d Z ddlZddlZddlZddlmZ ddlmZmZ ddl	m
Z
 dZd ej                  d«      _        d ej                  d	«      _        d
Zdee   fd„ZdZdee   deeef   fd„Z ed¬«      dee   fd„«       Zdedefd„Zddee
j,                     fd„Zy)zX
Common utils for testing.
These functions allow testing only some frameworks, not all.
é    N)Ú	lru_cache)ÚListÚTuple)Ú	_backendszAlex RogozhnikovTÚ
tensorflowÚ
matplotlib)ÚminÚmaxÚsumÚmeanÚprodÚreturnc                  óò   — g } t         j                  j                  «       }|r7|j                  «       }||j                  «       z  }| j	                  |«       |rŒ7| D �cg c]  }|j
                  ‘Œ c}S c c}w )N)r   ÚAbstractBackendÚ__subclasses__ÚpopÚappendÚframework_name)Úbackend_subclassesÚbackendsÚbackendÚbs       új/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/einops/tests/__init__.pyÚfind_names_of_all_frameworksr      sr   € ØÐÜ×(Ñ(×7Ñ7Ó9€HÙ
Ø—,‘,“.ˆØ�G×*Ñ*Ó,Ñ,ˆØ×!Ñ! 'Ô*ò ñ '9Ó9Ñ&8 ˆA×ÓÐ&8Ñ9Ð9ùÒ9s   ÁA4ÚEINOPS_TEST_BACKENDSÚbackend_namesc                 óv   — t        «       }| D ]  }||vsŒt        d|› �«      ‚ t        dj                  | «      fS )NúUnknown framework: Ú,)r   ÚRuntimeErrorÚENVVAR_NAMEÚjoin)r   Ú_known_backendsÚbackend_names      r   Úunparse_backendsr%   %   sE   € Ü2Ó4€OÛ%ˆØ˜Ò.ÜÐ!4°\°NÐCÓDÐDð &ô ˜Ÿ™ Ó/Ð/Ð/ó    é   )Úmaxsizec                  óê   — t         t        j                  vrt        dt         › d�«      ‚t        j                  t            j	                  d«      } t        «       }| D ]  }||vsŒt        d|› �«      ‚ | S )Nz/Testing frameworks were not specified, env var z not setr   r   )r!   ÚosÚenvironr    Úsplitr   )Úparsed_backendsr#   r$   s      r   Úparse_backends_to_testr.   -   sr   € äœ"Ÿ*™*Ñ$ÜÐLÌ[ÈMÐYaÐbÓcÐcÜ—j‘j¤Ñ-×3Ñ3°CÓ8€OÜ2Ó4€OÛ'ˆØ˜Ò.ÜÐ!4°\°NÐCÓDÐDð (ð Ðr&   r   c                 óN   — | t        «       vrt        d| › �«      ‚| t        «       v S )z8Used to skip test if corresponding backend is not testedzUnknown framework )r   r    r.   )r   s    r   Úis_backend_testedr0   :   s0   € àÔ2Ó4Ñ4ÜÐ/°¨yÐ9Ó:Ð:ØÔ,Ó.Ð.Ð.r&   c                 óT  — | sž|slt         j                  t         j                  t         j                  t         j                  t         j
                  t         j                  t         j                  g}nUt         j                  t         j
                  t         j                  g}n%|st         j                  g}nt         j                  g}t        «       }g }|D ](  }|j                  |vrŒ	 |j                   |«       «       Œ* |S # t        $ r t        j                  d|› �d¬«       Y ŒRw xY w)zž
    :param symbolic: symbolic or imperative frameworks?
    :param layers: layers or operations?
    :return: list of backends satisfying set conditions
    z,backend could not be initialized for tests: r'   )Ú
stacklevel)r   ÚNumpyBackendÚ
JaxBackendÚTorchBackendÚTensorflowBackendÚOneFlowBackendÚPaddleBackendÚCupyBackendÚPyTensorBackendÚTFKerasBackendr.   r   r   ÚImportErrorÚwarningsÚwarn)ÚsymbolicÚlayersÚbackend_typesÚbackend_names_to_testÚresultÚbackend_types         r   Úcollect_test_backendsrE   A   s  € ñ Ùä×&Ñ&Ü×$Ñ$Ü×&Ñ&Ü×+Ñ+Ü×(Ñ(Ü×'Ñ'Ü×%Ñ%ð‰Mô ×&Ñ&Ü×(Ñ(Ü×'Ñ'ð‰Mñ ä×)Ñ)ð‰Mô
 ×(Ñ(ðˆMô 3Ó4ÐØ€FÛ%ˆØ×&Ñ&Ð.CÑCØð	gØ�M‰M™,›.Õ)ð	 &ð €Møô	 ò 	gô �M‰MÐHÈÈÐWÐde×fð	gús   Ã'DÄ#D'Ä&D')FF)Ú__doc__Úloggingr*   r=   Ú	functoolsr   Útypingr   r   Úeinopsr   Ú
__author__Ú	getLoggerÚdisabledÚFLOAT_REDUCTIONSÚstrr   r!   r%   r.   Úboolr0   r   rE   © r&   r   Ú<module>rR      sÛ   ðñó
 Û 	Û Ý ß å à€
ð ,0Ð €× Ñ �,Ó Ô (Ø+/Ð €× Ñ �,Ó Ô (à8Ð ð: d¨3¡ió :ð %€ð0 D¨¡Ið 0°%¸¸S¸±/ó 0ñ �1Ôð	  S¡	ò 	ó ð	ð/˜sð / tó /ñ,¸4À	×@YÑ@YÑ;Zô ,r&   