+
    h                     V    R t ^ RIt^ RIt^ RIHtHtHtHt ^ RIt^ RI	H
t
 ]
R 4       tR# )a  
Checks that SymPy does not contain indirect imports.

An indirect import is importing a symbol from a module that itself imported the
symbol from elsewhere. Such a constellation makes it harder to diagnose
inter-module dependencies and import order problems, and is therefore strongly
discouraged.

(Indirect imports from end-user code is fine and in fact a best practice.)

Implementation note: Forcing Python into actually unloading already-imported
submodules is a tricky and partly undocumented process. To avoid these issues,
the actual diagnostic code is in bin/diagnose_imports, which is run as a
separate, pristine Python process.
N)abspathdirnamejoinnormpath)XFAILc                     \        \        P                  ! \        P                  ! 4       4      4      p \	        V 4      p\        VR 4      p\        V4      p\        P                  ! \        P                  \        V4      RR.\        P                  \        P                  RR7      pVP                  4       w  rEVR8X  g   Q RVP                  4       ,           4       hR# )zdiagnose_imports.pyz
--problemsz--by-importer)stdoutstderrbufsize zThere are import problems:
N)r   inspectgetfilecurrentframer   r   r   
subprocessPopensys
executablePIPESTDOUTcommunicatedecode)my_filename
my_dirnamediagnose_imports_filenameprocessoutput_s         I/usr/lib/python3/dist-packages/sympy/testing/tests/test_module_imports.pytest_module_imports_are_directr      s    '//'*>*>*@ABK%J $Z1F G ()B CNN./		
   	G ##%IFR<I7&--/II<    )__doc__r   r   os.pathr   r   r   r   r   sympy.testing.pytestr   r    r    r   <module>r%      s2      
 4 4  &J Jr    