forked from razzant/ouroboros
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
151 lines (140 loc) · 5.84 KB
/
Copy pathpyproject.toml
File metadata and controls
151 lines (140 loc) · 5.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
[build-system]
requires = ["setuptools>=69", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "ouroboros"
version = "6.114.7"
description = "Self-creating AI agent with constitution, background consciousness, and persistent identity"
readme = "README.md"
license = {text = "MIT"}
requires-python = ">=3.10"
authors = [
{name = "Anton Razzhigaev"},
]
keywords = ["ai-agent", "self-modifying", "autonomous", "llm", "openrouter"]
classifiers = [
"Development Status :: 4 - Beta",
"License :: OSI Approved :: MIT License",
"Operating System :: MacOS",
"Operating System :: Microsoft :: Windows",
"Operating System :: POSIX :: Linux",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Scientific/Engineering :: Artificial Intelligence",
]
dependencies = [
"openai>=1.66.0",
"gigachat>=0.2.1,<0.3",
"requests",
# Runtime self-update and install paths execute ``sys.executable -m pip``.
# uv-created source/tool environments do not seed pip unless it is declared.
"pip",
"httpx",
# Runtime custom-tool calls are validated against the exact projected schema.
"jsonschema>=4.0",
"ddgs",
"dulwich",
"huggingface_hub",
"starlette",
"python-multipart",
"Pillow>=10.0",
"pypdf>=4.0",
"uvicorn[standard]",
"websockets",
"pytest>=7.0",
# Runtime, not test-only: the hermetic commit gate's parallel pass hard-blocks
# with PREFLIGHT_PLUGIN_MISSING rather than degrading to serial, so a wheel /
# `pip install .` that carries pytest without these cannot commit at all.
# Floors kept in step with _REQUIRED_PREFLIGHT_PLUGINS. These remain runtime
# dependencies because the packaged hermetic commit gate invokes them.
"pytest-xdist>=3.5",
"pytest-timeout>=2.1",
"mcp>=1.6,<2.0",
"PyYAML>=6.0",
"croniter",
# Upper-bounded: tree-sitter 0.25.x + language-pack 1.x changed the grammar/
# node-type behavior so the WS3 polyglot symbol extraction returned nothing
# (green locally on 0.23.2/0.9.1, red in CI which pulled the latest). Pin to
# the verified-working line until code_intelligence is updated for the new API.
"tree-sitter>=0.23.2,<0.25",
"tree-sitter-language-pack>=0.9.1,<1.0",
"tzdata",
# Python 3.10 needs typing_extensions.NotRequired for gateway contracts.
"typing_extensions>=4.5.0",
]
[project.scripts]
ouroboros = "ouroboros.cli:main"
ouroboros-web = "server:main"
[project.urls]
Homepage = "https://github.com/razzant/ouroboros"
Repository = "https://github.com/razzant/ouroboros"
Issues = "https://github.com/razzant/ouroboros/issues"
"Previous Version (Colab)" = "https://github.com/razzant/ouroboros/tree/legacy-google-colab"
[project.optional-dependencies]
browser = ["playwright", "playwright-stealth"]
desktop = [
"pywebview==5.4",
"pythonnet==3.0.5; platform_system == 'Windows'",
"clr_loader==0.2.7.post0; platform_system == 'Windows'",
]
local-model = ["llama-cpp-python"]
build = ["pyinstaller>=6.0"]
all = [
"playwright",
"playwright-stealth",
"pywebview==5.4",
"pythonnet==3.0.5; platform_system == 'Windows'",
"clr_loader==0.2.7.post0; platform_system == 'Windows'",
"llama-cpp-python",
"huggingface_hub",
]
[dependency-groups]
dev = ["ruff>=0.12"]
[tool.uv]
required-version = "==0.12.1"
[tool.pytest.ini_options]
testpaths = ["tests"]
python_files = ["test_*.py"]
python_functions = ["test_*"]
# Default local pytest excludes token-burning integration/browser suites.
addopts = "-q --tb=short -m 'not integration and not browser and not ui_browser and not ui_browser_docker and not portable_detail and not skill_smoke and not size_ratchet'"
markers = [
"integration: requires real provider API keys (OPENROUTER_API_KEY / OPENAI_API_KEY / ANTHROPIC_API_KEY / CLOUDRU_FOUNDATION_MODELS_API_KEY); excluded from default local runs, opt in via `pytest -m integration`",
"browser: launches real Playwright Chromium; excluded from default local runs, opt in via `pytest -m browser`",
"ui_browser: launches the real Ouroboros web UI in host/direct mode; excluded from default local runs",
"ui_browser_docker: launches UI smoke checks against Docker runtime; excluded from default local runs",
"portable_detail: portable/build artifact detail checks; excluded from default local runs",
"serial: real subprocess / real port / mutable module-global test — run in a serial pass, excluded from the `-n auto` parallel pass via `-m 'not serial'` (see .github/workflows/ci.yml AND the hermetic commit gate ouroboros/preflight_runner.py, which runs the same two-pass split)",
"skill_smoke: real-network OuroborosHub official-skill install + review-flow smoke; excluded from default local runs, opt in via `pytest -m skill_smoke` (canonical lane description: docs/DEVELOPMENT.md 'Pytest marker lanes')",
"size_ratchet: repository size gates against the live repo (manifest exactness, shrink-only pairwise transition, MAX_TOTAL_FUNCTIONS) — a BLOCKING lane only in official-repository CI; excluded from default local runs, which surface the same validator findings as warnings (canonical lane description: docs/DEVELOPMENT.md 'Pytest marker lanes')",
]
[tool.setuptools]
py-modules = ["server"]
[tool.setuptools.packages.find]
include = ["ouroboros*", "supervisor*", "web*"]
[tool.setuptools.package-data]
web = [
"*.html",
"*.js",
"*.css",
"*.png",
"*.jpg",
"modules/*.js",
"providers/*.svg",
"providers/*.png",
"providers/*.ico",
"vendor/VENDOR-MANIFEST.md",
"vendor/katex/*.css",
"vendor/katex/*.js",
"vendor/katex/contrib/*.js",
"vendor/katex/fonts/*.woff2",
"vendor/licenses/*",
]
[tool.ruff]
line-length = 120
target-version = "py310"
[tool.ruff.lint]
select = ["E", "F", "W", "I"]
ignore = ["E501"]