Repository navigation
Expand file tree
/
Copy pathpyproject.toml
More file actions
124 lines (111 loc) · 3.3 KB
/
Copy pathpyproject.toml
File metadata and controls
124 lines (111 loc) · 3.3 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
[tool.poetry]
name = "apollo"
version = "1.0.0"
description = "A python monorepo for AI code generation"
authors = ["Isma-Ilou Sadou <isma@openfn.org>"]
license = "LGPLv3"
readme = "README.md"
package-mode = false
requires-poetry = ">=2.3.2"
[tool.poetry.dependencies]
python = ">=3.11,<3.12"
openai = "^3.39"
python-dotenv = "^1.2.4"
anthropic = "^1.15.0"
langchain-pinecone = "^0.2.13"
langchain-core = "^1.7"
langchain-community = "^0.4.2"
langchain-openai = "^1.7"
langchain-text-splitters = "^1.1"
nltk = "^3.10.4"
pytest = "^9.1.1"
sentry-sdk = "^2.73.0"
psycopg2-binary = "^2.9.13"
langfuse = "^4.15.6"
opentelemetry-instrumentation-anthropic = "^0.62.4"
opentelemetry-instrumentation-threading = "0.66b0"
pandas = "^3.1"
pgvector = "^0.5.1"
[tool.poetry.group.dev]
optional = false
[tool.poetry.group.dev.dependencies]
pytest = "^9.1.1"
ruff = "^0.17.3"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
[tool.pytest.ini_options]
# Make `services/` importable the same way `services/entry.py` does it.
# Without this, `from workflow_chat.workflow_chat import ...` fails inside tests.
pythonpath = ["services"]
# Discovery roots. pytest walks these for test_*.py files.
testpaths = [
"services/echo/tests",
"services/global_chat/tests",
"services/workflow_chat/tests",
"services/job_chat/tests",
"services/latest_adaptors/tests",
"services/search_docsite/tests",
"services/testing/tests",
"services/embed_docsite/tests",
"services/tools",
]
python_files = ["test_*.py"]
python_classes = ["Test*"]
python_functions = ["test_*"]
markers = [
"unit: fast, isolated, no I/O. Runs on every PR push.",
# Declared but currently unused: nothing carries it, so `-m \"unit or service\"`
# is really `-m unit`. Kept because the tiers are referenced in the testing
# README; apply it when the first mocked-client suite lands.
"service: mocks HTTP/LLM clients; exercises service handlers. Runs on merge.",
"integration: hits real external services (LLM, Pinecone, Postgres). Manual/nightly.",
"acceptance: end-to-end acceptance criteria. Manual/nightly.",
]
addopts = [
"--strict-markers",
"--strict-config",
"-ra",
"--tb=short",
]
filterwarnings = [
"default::DeprecationWarning",
"ignore::DeprecationWarning:anthropic.*",
"ignore::DeprecationWarning:pydantic.*",
]
[tool.black]
line-length = 120
[tool.ruff]
select = [
"E", # pycodestyle
"F", # pyflakes
"W", # pycodestyle (warnings)
"I", # isort
"N", # pep8-naming
"UP", # pyupgrade
"ANN", # flake8-annotations
"B", # flake8-bugbear
"A", # flake8-builtins
"COM", # flake8-commas
"C4", # flake8-comprehensions
"DTZ", # flake8-datetimez
"EXE", # flake8-executable
"PIE", # flake8-pie
"T20", # flake8-print
"PT", # flake8-pytest
"SIM", # flake8-simplify
"ARG", # flake8-unused-arguments
"PTH", # flake8--use-pathlib
"ERA", # flake8-eradicate
"RUF", # ruff specific rules
"PL", # pylint
]
ignore = [
"ANN101", # Missing type annotation for self in method
"ANN204", # Missing type annotation for special method
"ANN003", # Missing type annotation for `**kwargs`
"UP007", # Use `X | Y` for type annotations instead of Union
"E501",
]
line-length = 120
target-version = "py311"