@@ -10,7 +10,7 @@ description = "Universal Cloud Knowledge Navigator - AI-Powered Code and Error S
1010readme = " README.md"
1111license = {text = " MIT" }
1212dynamic = [" version" ]
13- requires-python = " >=3.8 "
13+ requires-python = " >=3.11 "
1414dependencies = [
1515 # Core dependencies
1616 " fastapi>=0.100.0" ,
@@ -83,14 +83,11 @@ quality = [
8383 " types-requests>=2.31.0" ,
8484 " types-aiofiles>=23.0.0" ,
8585]
86- # Extended quality tools (for comprehensive analysis)
86+ # Extended quality tools (for comprehensive analysis) - pip only, not pixi
8787quality-extended = [
8888 " vulture>=2.7" , # Dead code detection
8989 " xenon>=0.9.0" , # Complexity analysis
9090 " radon>=6.0.0" , # Code metrics
91- " interrogate>=1.5.0" , # Documentation coverage
92- " semgrep>=1.35.0" , # Static analysis security
93- " prospector>=1.10.0" , # Multi-tool analysis
9491]
9592# CI-specific quality tools (optimized for CI environments)
9693quality-ci = [
@@ -148,29 +145,69 @@ packages = ["src/uckn"]
148145include = [" src/uckn" , " tests" , " pyproject.toml" , " README.md" ]
149146
150147[tool .pixi .project ]
151- channels = [" conda-forge" , " pytorch" , " nvidia" ]
152- platforms = [" linux-64" , " win-64 " , " osx-64 " , " osx-arm64 " ]
148+ channels = [" conda-forge" , " pytorch" , " nvidia" , " dnachun " ]
149+ platforms = [" linux-64" ]
153150
154151# NO pypi-dependencies - all dependencies come from conda-forge only
155152# The package is installed separately via pip install -e . after pixi install
156153
157154[tool .pixi .feature .core .dependencies ]
158155# System dependencies
159156python = " 3.12.*"
160- # Core runtime dependencies (MINIMAL SET)
161157pip = " *"
162- # CLI and development utilities
163158git = " *"
164159
160+ [tool .pixi .feature .quality .dependencies ]
161+ # Quality tools from conda-forge
162+ pytest = " >=8.0.0"
163+ pytest-cov = " >=4.0.0"
164+ pytest-asyncio = " >=0.21.0"
165+ pytest-timeout = " >=2.1.0"
166+ pytest-benchmark = " >=4.0.0"
167+ mypy = " >=1.5.0"
168+ ruff = " >=0.0.290"
169+ coverage = " >=7.3.0"
170+
171+ [tool .pixi .feature .quality-extended .dependencies ]
172+ # Extended quality tools from conda-forge/dnachun
173+ bandit = " >=1.7.5"
174+ vulture = " >=2.7"
175+ radon = " >=6.0.0"
176+ interrogate = " >=1.5.0"
177+ prospector = " >=1.10.0"
178+ # NOTE: semgrep moved to separate environment (requires Python 3.11)
179+
180+ [tool .pixi .feature .semgrep .dependencies ]
181+ # Semgrep requires Python 3.11 (incompatible with 3.12)
182+ python = " 3.11.*"
183+ semgrep = " >=1.35.0"
184+
185+ [tool .pixi .feature .dev .dependencies ]
186+ # Development tools from conda-forge
187+ black = " >=23.0.0"
188+ isort = " >=5.12.0"
189+ pre-commit = " >=3.0.0"
190+
191+ [tool .pixi .feature .loadtest .dependencies ]
192+ # Load testing from conda-forge
193+ locust = " >=2.15.0"
194+
195+ [tool .pixi .feature .docs .dependencies ]
196+ # Documentation from conda-forge
197+ mkdocs = " >=1.5.0"
198+ mkdocs-material = " >=9.0.0"
199+
165200[tool .pixi .environments ]
166- # All environments use only conda-forge dependencies (core feature)
167- # Additional Python packages are installed via pip after pixi install
201+ # All dependencies from conda-forge only
168202default = {features = [" core" ], solve-group = " default" }
169- dev = {features = [" core" ], solve-group = " default" }
170- ci = {features = [" core" ], solve-group = " default" }
171- docs = {features = [" core" ], solve-group = " default" }
172- quality = {features = [" core" ], solve-group = " default" }
173- quality-extended = {features = [" core" ], solve-group = " default" }
203+ dev = {features = [" core" , " quality" , " dev" ], solve-group = " default" }
204+ ci = {features = [" core" , " quality" ], solve-group = " default" }
205+ quality = {features = [" core" , " quality" ], solve-group = " default" }
206+ quality-extended = {features = [" core" , " quality" , " quality-extended" ], solve-group = " default" }
207+ loadtest = {features = [" core" , " loadtest" ], solve-group = " default" }
208+ docs = {features = [" core" , " docs" ], solve-group = " default" }
209+ # Semgrep requires Python 3.11 - separate solve-group
210+ semgrep = {features = [" semgrep" ], solve-group = " semgrep" }
174211
175212[tool .pixi .tasks ]
176213# Development tasks (STRICT COMPLIANCE: Use pip module with python)
@@ -282,8 +319,21 @@ filterwarnings = [
282319[tool .pytest_asyncio ]
283320asyncio_mode = " auto" # Automatically detect and run async tests
284321
285- [tool .pytest .benchmark ]
286- disable = false
322+ # pytest-benchmark settings moved to conftest.py or CLI args
323+ # [tool.pytest.benchmark] removed - conflicts with [tool.pytest.ini_options]
324+
325+ [tool .ruff ]
326+ target-version = " py311"
327+ line-length = 88
328+
329+ [tool .ruff .lint ]
330+ select = [" F" , " E9" ]
331+ ignore = []
332+
333+ [tool .ruff .lint .per-file-ignores ]
334+ # Allow star imports in conftest.py for pytest fixtures
335+ "tests/conftest.py" = [" F403" , " F405" ]
336+ "tests/**/conftest.py" = [" F403" , " F405" ]
287337
288338[tool .mypy ]
289339python_version = " 3.12"
0 commit comments