Spaces:
Running
on
Zero
Running
on
Zero
| """Package installation setup.""" | |
| import os | |
| import subprocess | |
| import sys | |
| from pathlib import Path | |
| from setuptools import find_packages, setup | |
| from setuptools.command.develop import develop | |
| from setuptools.command.install import install | |
| def install_croco_rope(): | |
| """Install CroCo RoPE extension.""" | |
| try: | |
| curope_path = Path(__file__).parent / "uniception" / "models" / "libs" / "croco" / "curope" | |
| if curope_path.exists(): | |
| print("Installing CroCo RoPE extension...") | |
| original_cwd = os.getcwd() | |
| try: | |
| os.chdir(curope_path) | |
| subprocess.check_call([sys.executable, "setup.py", "build_ext", "--inplace"]) | |
| print("CroCo RoPE extension installed successfully!") | |
| return True | |
| except subprocess.CalledProcessError as e: | |
| print(f"Warning: Failed to install CroCo RoPE extension: {e}") | |
| print("You can install it later by running:") | |
| print(f"cd {curope_path} && python setup.py build_ext --inplace") | |
| return False | |
| finally: | |
| os.chdir(original_cwd) | |
| else: | |
| print("Warning: CroCo RoPE source code not found.") | |
| return False | |
| except Exception as e: | |
| print(f"Warning: Error during CroCo RoPE installation: {e}") | |
| return False | |
| def check_dependencies(): | |
| """Check if optional dependencies are available.""" | |
| try: | |
| import torch | |
| print(f"PyTorch version: {torch.__version__}") | |
| if torch.cuda.is_available(): | |
| print(f"CUDA available: {torch.version.cuda}") | |
| else: | |
| print("CUDA not available") | |
| except ImportError: | |
| print("PyTorch not installed") | |
| try: | |
| import xformers | |
| print(f"XFormers version: {xformers.__version__}") | |
| except ImportError: | |
| print("XFormers not installed") | |
| try: | |
| from uniception.models.libs.croco.curope import cuRoPE2D | |
| print("CroCo RoPE extension available") | |
| except ImportError: | |
| print("CroCo RoPE extension not available") | |
| class CustomDevelopCommand(develop): | |
| """Custom development installation command.""" | |
| def run(self): | |
| develop.run(self) | |
| # Only install CroCo RoPE if explicitly requested | |
| if os.getenv("INSTALL_CROCO_ROPE", "false").lower() in ("true", "1", "yes"): | |
| install_croco_rope() | |
| class CustomInstallCommand(install): | |
| """Custom installation command.""" | |
| def run(self): | |
| install.run(self) | |
| # Only install CroCo RoPE if explicitly requested | |
| if os.getenv("INSTALL_CROCO_ROPE", "false").lower() in ("true", "1", "yes"): | |
| install_croco_rope() | |
| class CrocoInstallCommand(install): | |
| """Install command that includes CroCo RoPE extension.""" | |
| def run(self): | |
| install.run(self) | |
| install_croco_rope() | |
| class CheckDependenciesCommand(install): | |
| """Command to check available dependencies.""" | |
| def run(self): | |
| check_dependencies() | |
| # Core dependencies (including PyTorch which is essential for UniCeption) | |
| install_requires = [ | |
| "numpy", | |
| "torch", | |
| "torchvision", | |
| "torchaudio", | |
| "timm", | |
| "black", | |
| "jaxtyping", | |
| "matplotlib", | |
| "Pillow", | |
| "scikit-learn", | |
| "einops", | |
| "rerun-sdk", | |
| "pre-commit", | |
| "minio", | |
| "pytest", | |
| "isort", | |
| ] | |
| # Optional dependencies | |
| extras_require = { | |
| "xformers": [ | |
| "xformers", # Will be installed from PyTorch wheel index | |
| ], | |
| "dev": [ | |
| "black", | |
| "isort", | |
| "pre-commit", | |
| "pytest", | |
| ], | |
| "minimal": [ | |
| # Minimal dependencies for basic functionality without PyTorch | |
| "numpy", | |
| "matplotlib", | |
| "Pillow", | |
| "scikit-learn", | |
| "einops", | |
| ], | |
| } | |
| # All optional dependencies combined (excluding minimal since it's subset of install_requires) | |
| extras_require["all"] = list(set(extras_require["xformers"] + extras_require["dev"])) | |
| setup( | |
| name="uniception", | |
| version="0.1.0", | |
| description="Generalizable Perception Stack for 3D, 4D, spatial AI and scene understanding", | |
| long_description=open("README.md").read(), | |
| long_description_content_type="text/markdown", | |
| author="AirLab", | |
| license="BSD Clause-3", | |
| packages=find_packages(), | |
| package_dir={"": "."}, | |
| include_package_data=True, | |
| python_requires=">=3.10", | |
| install_requires=install_requires, | |
| extras_require=extras_require, | |
| cmdclass={ | |
| "develop": CustomDevelopCommand, | |
| "install": CustomInstallCommand, | |
| "install_croco": CrocoInstallCommand, | |
| "check_deps": CheckDependenciesCommand, | |
| }, | |
| entry_points={ | |
| "console_scripts": [ | |
| "uniception-download-checkpoints=scripts.download_checkpoints:main", | |
| "uniception-validate=scripts.validate_installation:main", | |
| "uniception-prepare-offline=scripts.prepare_offline_install:main", | |
| "uniception-check-deps=scripts.check_dependencies:main", | |
| "uniception-install-croco=scripts.install_croco_rope:main", | |
| ], | |
| }, | |
| classifiers=[ | |
| "Development Status :: 3 - Alpha", | |
| "Intended Audience :: Developers", | |
| "Intended Audience :: Science/Research", | |
| "Programming Language :: Python :: 3", | |
| "Programming Language :: Python :: 3.10", | |
| "Programming Language :: Python :: 3.11", | |
| "Programming Language :: Python :: 3.12", | |
| "Topic :: Scientific/Engineering :: Artificial Intelligence", | |
| "Topic :: Software Development :: Libraries :: Python Modules", | |
| ], | |
| keywords="computer-vision, 3d-vision, spatial-ai, perception, deep-learning, pytorch", | |
| ) | |