from setuptools import setup, Extension from setuptools.command.build_ext import build_ext import os # Function to safely check if Cython is installed def has_cython(): try: from Cython.Build import cythonize return True except ImportError: return False # Define extensions for "Pro" modules that need obfuscation extensions = [] if has_cython(): from Cython.Build import cythonize # List of modules to compile to binary # We will compile the core coordinator and licensing logic modules_to_compile = [ "upif/core/coordinator.py", "upif/core/licensing.py", "upif/modules/neural_guard.py", "upif/integrations/openai.py", "upif/integrations/langchain.py" ] # Only try to compile if files exist existing_modules = [m for m in modules_to_compile if os.path.exists(m)] if existing_modules: extensions = cythonize( existing_modules, compiler_directives={'language_level': "3"} ) setup( ext_modules=extensions, entry_points={ "console_scripts": [ "upif=upif.cli:main", ], }, include_package_data=True, zip_safe=False, )