mirror of
				https://github.com/ets-labs/python-dependency-injector.git
				synced 2025-10-30 23:47:40 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			56 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """`Dependency injector` setup script."""
 | |
| 
 | |
| import os
 | |
| import sys
 | |
| 
 | |
| from Cython.Build import cythonize
 | |
| from Cython.Compiler import Options
 | |
| from setuptools import Extension, setup
 | |
| 
 | |
| debug = os.environ.get("DEPENDENCY_INJECTOR_DEBUG_MODE") == "1"
 | |
| limited_api = (
 | |
|     os.environ.get("DEPENDENCY_INJECTOR_LIMITED_API") == "1"
 | |
|     and sys.implementation.name == "cpython"
 | |
| )
 | |
| defined_macros = []
 | |
| options = {}
 | |
| compiler_directives = {
 | |
|     "language_level": 3,
 | |
|     "profile": debug,
 | |
|     "linetrace": debug,
 | |
| }
 | |
| Options.annotate = debug
 | |
| 
 | |
| # Adding debug options:
 | |
| if debug:
 | |
|     limited_api = False  # line tracing is not part of the Limited API
 | |
|     defined_macros.extend(
 | |
|         [
 | |
|             ("CYTHON_TRACE", "1"),
 | |
|             ("CYTHON_TRACE_NOGIL", "1"),
 | |
|             ("CYTHON_CLINE_IN_TRACEBACK", "1"),
 | |
|         ]
 | |
|     )
 | |
| 
 | |
| if limited_api:
 | |
|     options.setdefault("bdist_wheel", {})
 | |
|     options["bdist_wheel"]["py_limited_api"] = "cp38"
 | |
|     defined_macros.append(("Py_LIMITED_API", "0x03080000"))
 | |
| 
 | |
| setup(
 | |
|     options=options,
 | |
|     ext_modules=cythonize(
 | |
|         [
 | |
|             Extension(
 | |
|                 "*",
 | |
|                 ["src/**/*.pyx"],
 | |
|                 define_macros=defined_macros,
 | |
|                 py_limited_api=limited_api,
 | |
|             ),
 | |
|         ],
 | |
|         annotate=debug,
 | |
|         show_all_warnings=True,
 | |
|         compiler_directives=compiler_directives,
 | |
|     ),
 | |
| )
 |