44 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
| """
 | |
| Provides a function to report all internal modules for using freezing tools
 | |
| pytest
 | |
| """
 | |
| from __future__ import absolute_import, division, print_function
 | |
| 
 | |
| 
 | |
| def freeze_includes():
 | |
|     """
 | |
|     Returns a list of module names used by py.test that should be
 | |
|     included by cx_freeze.
 | |
|     """
 | |
|     import py
 | |
|     import _pytest
 | |
|     result = list(_iter_all_modules(py))
 | |
|     result += list(_iter_all_modules(_pytest))
 | |
|     return result
 | |
| 
 | |
| 
 | |
| def _iter_all_modules(package, prefix=''):
 | |
|     """
 | |
|     Iterates over the names of all modules that can be found in the given
 | |
|     package, recursively.
 | |
|     Example:
 | |
|         _iter_all_modules(_pytest) ->
 | |
|             ['_pytest.assertion.newinterpret',
 | |
|              '_pytest.capture',
 | |
|              '_pytest.core',
 | |
|              ...
 | |
|             ]
 | |
|     """
 | |
|     import os
 | |
|     import pkgutil
 | |
|     if type(package) is not str:
 | |
|         path, prefix = package.__path__[0], package.__name__ + '.'
 | |
|     else:
 | |
|         path = package
 | |
|     for _, name, is_package in pkgutil.iter_modules([path]):
 | |
|         if is_package:
 | |
|             for m in _iter_all_modules(os.path.join(path, name), prefix=name + '.'):
 | |
|                 yield prefix + m
 | |
|         else:
 | |
|             yield prefix + name
 |