§
    rŠtjJ  ã                   ó†   — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 ej
        j        d„ ¦   «         Zd„ ZdS )é    N)Ú__version__)Ú_openmp_parallelism_enabledc                  ó„  — t           j                             t          j        ¦  «        g} g }t          j        | dd„ ¬¦  «        D ]Ø\  }}}|sd|v sd|v sd|v sd|v rŒt          j        |¦  «        }t          |dd	¦  «        pd	}| 
                    d
¦  «        sŒVt          j        |t          j        ¦  «        D ]b\  }}	 t          j        |¦  «        }	n# t          $ r Y Œ'w xY w|	|k    rŒ2|j        |k    r%|                     |› d|› d|j        ›d|›�¦  «         ŒcŒÙ|r J dd                     |¦  «        z   ¦   «         ‚dS )aë  Check that Cython extension types have a correct ``__module__``.

    When a subpackage containing Cython extension types has a misconfigured
    ``meson.build`` (e.g. missing ``__init__.py`` in its Cython tree), Cython
    cannot detect the package hierarchy and sets ``__module__`` to just the
    submodule name (e.g. ``'_loss'``) instead of the fully qualified
    ``'sklearn._loss._loss'``. This breaks downstream tools like skops that
    rely on ``__module__`` for serialization.
    zsklearn.c                 ó   — d S )N© )Ú_s    úV/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sklearn/tests/test_build.pyú<lambda>z,test_extension_type_module.<locals>.<lambda>   s   € À€ ó    )ÚpathÚprefixÚonerrorz.tests.z.externals.z._build_utils.z._cyutilityÚ__file__Ú )z.soz.pydú.z.__module__ == z, expected z+Extension types with incorrect __module__:
ú
N)Úosr   ÚdirnameÚsklearnr   ÚpkgutilÚwalk_packagesÚ	importlibÚimport_moduleÚgetattrÚendswithÚinspectÚ
getmembersÚisclassÚgetfileÚ	TypeErrorÚ
__module__ÚappendÚjoin)
Úsklearn_pathÚfailuresr   ÚmodnameÚispkgÚmodÚmod_fileÚnameÚclsÚcls_files
             r	   Útest_extension_type_moduler-      sÖ  € õ ”G—O’O¥GÔ$4Ñ5Ô5Ð6€LØ€HÝ$Ô2Ø *°n°nðñ ô ð )ð )Ñˆˆ7�Eð ð	à˜GÐ#Ð#Ø Ð'Ð'Ø 7Ð*Ð*Ø Ð'Ð'àÝÔ% gÑ.Ô.ˆÝ˜3 
¨BÑ/Ô/Ð5°2ˆð × Ò  Ñ1Ô1ð 	ØÝ Ô+¨Cµ´ÑAÔAð 	ð 	‰IˆD�#ðÝ"œ?¨3Ñ/Ô/��øÝð ð ð ð �ðøøøð ˜8Ò#Ð#ØØŒ~ Ò(Ð(Ø—’Øð ,ð , ð ,ð ,°c´nð ,ð ,Ø 'ð,ð ,ñô ð øð	ð" ð ð ÐGÈ$Ï)Ê)ØñKô Kñ ñ ô ˆ<ð ð s   Ã CÃ
C"Ã!C"c                  ó  — t          j        d¦  «        rt          j        d¦  «         t	          j        d¦  «        rdnd} t          j        d¦  «                             | ¦  «        }t          ¦   «         s
J |¦   «         ‚d S )NÚSKLEARN_SKIP_OPENMP_TESTz2test explicitly skipped (SKLEARN_SKIP_OPENMP_TEST)z.dev0ÚdevÚstableaÿ  
        This test fails because scikit-learn has been built without OpenMP.
        This is not recommended since some estimators will run in sequential
        mode instead of leveraging thread-based parallelism.

        You can find instructions to build scikit-learn with OpenMP at this
        address:

            https://scikit-learn.org/{}/developers/advanced_installation.html

        You can skip this test by setting the environment variable
        SKLEARN_SKIP_OPENMP_TEST to any value.
        )
r   ÚgetenvÚpytestÚskipr   r   ÚtextwrapÚdedentÚformatr   )Úbase_urlÚerr_msgs     r	   Útest_openmp_parallelism_enabledr:   J   sŒ   € õ 
„yÐ+Ñ,Ô,ð JÝŒÐHÑIÔIÐIå#Ô,¨WÑ5Ô5ÐCˆuˆu¸8€HÝŒoð	ñô ÷ ‚fˆXÑÔð õ  'Ñ(Ô(Ð1Ð1¨'Ñ1Ô1Ð(Ð1Ð1r   )r   r   r   r   r5   r3   r   r   Úsklearn.utils._openmp_helpersr   ÚmarkÚthread_unsafer-   r:   r   r   r	   ú<module>r>      s¦   ðØ Ð Ð Ð Ø €€€Ø 	€	€	€	Ø €€€Ø €€€à €€€à €€€Ø Ð Ð Ð Ð Ð Ø EÐ EÐ EÐ EÐ EÐ Eð „Ôð8ð 8ñ Ôð8ðv2ð 2ð 2ð 2ð 2r   