Skip to content

Commit e351354

Browse files
committed
Lock all dependencies for the CI.
1 parent afb21c6 commit e351354

5 files changed

Lines changed: 229 additions & 25 deletions

File tree

.github/workflows/test.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ jobs:
2121
with:
2222
python-version: ${{ matrix.python-version }}
2323
cache: pip
24-
cache-dependency-path: requirements-ci.txt
24+
cache-dependency-path: requirements-dev.lock
2525

2626
- name: Install dependencies
27-
run: pip install -r requirements-ci.txt
27+
run: pip install -r requirements-dev.lock
2828

2929
- name: Run tests
3030
run: python -m pytest tests/ --cov=app --cov-report=term-missing

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,10 @@ machine-init:
9595
# pydantic-v1 native extensions are incompatible with the host Python.
9696

9797
test-install:
98-
# Create a local virtualenv and install all test + app dependencies.
98+
# Create a local virtualenv and install pinned test dependencies.
9999
python3 -m venv .venv
100100
.venv/bin/pip install -q --upgrade pip
101-
.venv/bin/pip install -q -r requirements-dev.txt
101+
.venv/bin/pip install -q -r requirements-dev.lock
102102

103103
test:
104104
# Run the full test suite with per-module coverage report.

requirements-ci.txt

Lines changed: 0 additions & 16 deletions
This file was deleted.

requirements-dev.lock

Lines changed: 209 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,209 @@
1+
annotated-doc==0.0.4
2+
# via typer
3+
annotated-types==0.7.0
4+
# via pydantic
5+
anyio==4.12.1
6+
# via
7+
# httpx
8+
# mcp
9+
# sse-starlette
10+
# starlette
11+
# watchfiles
12+
authlib==1.6.9
13+
# via fastmcp
14+
certifi==2026.2.25
15+
# via
16+
# httpcore
17+
# httpx
18+
# requests
19+
cffi==2.0.0
20+
# via cryptography
21+
charset-normalizer==3.4.5
22+
# via requests
23+
click==8.3.1
24+
# via
25+
# typer
26+
# uvicorn
27+
coverage==7.13.4
28+
# via pytest-cov
29+
cryptography==46.0.5
30+
# via authlib
31+
exceptiongroup==1.3.1
32+
# via fastmcp
33+
fastapi==0.114.2
34+
# via -r requirements-dev.txt
35+
fastmcp==2.9.2
36+
# via obsidian-mcp-guard
37+
freezegun==1.5.5
38+
# via -r requirements-dev.txt
39+
h11==0.16.0
40+
# via
41+
# httpcore
42+
# uvicorn
43+
httpcore==1.0.9
44+
# via httpx
45+
httptools==0.7.1
46+
# via uvicorn
47+
httpx==0.28.1
48+
# via
49+
# -r requirements-dev.txt
50+
# fastmcp
51+
# langsmith
52+
# mcp
53+
httpx-sse==0.4.3
54+
# via mcp
55+
idna==3.11
56+
# via
57+
# anyio
58+
# httpx
59+
# requests
60+
iniconfig==2.3.0
61+
# via pytest
62+
jsonpatch==1.33
63+
# via langchain-core
64+
jsonpointer==3.0.0
65+
# via jsonpatch
66+
langchain==0.3.27
67+
# via -r requirements-dev.txt
68+
langchain-core==0.3.83
69+
# via
70+
# langchain
71+
# langchain-text-splitters
72+
langchain-text-splitters==0.3.11
73+
# via
74+
# -r requirements-dev.txt
75+
# langchain
76+
langsmith==0.7.14
77+
# via
78+
# langchain
79+
# langchain-core
80+
markdown-it-py==3.0.0
81+
# via
82+
# -r requirements-dev.txt
83+
# rich
84+
mcp==1.9.4
85+
# via fastmcp
86+
mdlint-obsidian==0.2.6
87+
# via obsidian-mcp-guard
88+
mdurl==0.1.2
89+
# via markdown-it-py
90+
obsidian-mcp-guard==0.1.7
91+
# via -r requirements-dev.txt
92+
openapi-pydantic==0.5.1
93+
# via fastmcp
94+
orjson==3.11.7
95+
# via langsmith
96+
packaging==25.0
97+
# via
98+
# langchain-core
99+
# langsmith
100+
# pytest
101+
pluggy==1.6.0
102+
# via
103+
# pytest
104+
# pytest-cov
105+
pycparser==3.0
106+
# via cffi
107+
pydantic==2.9.2
108+
# via
109+
# -r requirements-dev.txt
110+
# fastapi
111+
# langchain
112+
# langchain-core
113+
# langsmith
114+
# mcp
115+
# openapi-pydantic
116+
# pydantic-settings
117+
pydantic-core==2.23.4
118+
# via pydantic
119+
pydantic-settings==2.13.1
120+
# via mcp
121+
pygments==2.19.2
122+
# via
123+
# pytest
124+
# rich
125+
pytest==9.0.2
126+
# via
127+
# -r requirements-dev.txt
128+
# pytest-cov
129+
pytest-cov==7.0.0
130+
# via -r requirements-dev.txt
131+
python-dateutil==2.9.0.post0
132+
# via freezegun
133+
python-dotenv==1.2.2
134+
# via
135+
# fastmcp
136+
# pydantic-settings
137+
# uvicorn
138+
python-frontmatter==1.1.0
139+
# via -r requirements-dev.txt
140+
python-multipart==0.0.22
141+
# via
142+
# -r requirements-dev.txt
143+
# mcp
144+
pyyaml==6.0.3
145+
# via
146+
# langchain
147+
# langchain-core
148+
# mdlint-obsidian
149+
# python-frontmatter
150+
# uvicorn
151+
requests==2.32.5
152+
# via
153+
# langchain
154+
# langsmith
155+
# requests-toolbelt
156+
requests-toolbelt==1.0.0
157+
# via langsmith
158+
rich==14.3.3
159+
# via
160+
# fastmcp
161+
# typer
162+
shellingham==1.5.4
163+
# via typer
164+
six==1.17.0
165+
# via python-dateutil
166+
sqlalchemy==2.0.48
167+
# via langchain
168+
sse-starlette==3.0.3
169+
# via mcp
170+
starlette==0.38.6
171+
# via
172+
# fastapi
173+
# mcp
174+
tenacity==9.1.4
175+
# via langchain-core
176+
typer==0.24.1
177+
# via fastmcp
178+
typing-extensions==4.15.0
179+
# via
180+
# fastapi
181+
# langchain-core
182+
# pydantic
183+
# pydantic-core
184+
# sqlalchemy
185+
# typing-inspection
186+
typing-inspection==0.4.2
187+
# via pydantic-settings
188+
urllib3==2.6.3
189+
# via requests
190+
uuid-utils==0.14.1
191+
# via
192+
# langchain-core
193+
# langsmith
194+
uvicorn==0.30.6
195+
# via
196+
# -r requirements-dev.txt
197+
# mcp
198+
uvloop==0.22.1
199+
# via uvicorn
200+
watchdog==5.0.2
201+
# via -r requirements-dev.txt
202+
watchfiles==1.1.1
203+
# via uvicorn
204+
websockets==16.0
205+
# via uvicorn
206+
xxhash==3.6.0
207+
# via langsmith
208+
zstandard==0.25.0
209+
# via langsmith

requirements-dev.txt

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
1-
-r app/requirements.txt
2-
pytest>=8.0
3-
pytest-cov>=5.0
4-
freezegun>=1.5
5-
obsidian-mcp-guard>=0.1.0
1+
# Test dependencies — heavy app packages (chromadb, spacy, langchain-chroma,
2+
# langchain-ollama) are stubbed in conftest.py and don't need to be installed.
3+
fastapi==0.114.2
4+
uvicorn[standard]==0.30.6
5+
pydantic==2.9.2
6+
python-multipart>=0.0.9
7+
langchain==0.3.27
8+
langchain-text-splitters==0.3.11
9+
markdown-it-py==3.0.0
10+
python-frontmatter==1.1.0
11+
watchdog==5.0.2
12+
httpx>=0.28.1
13+
pytest==9.0.2
14+
pytest-cov==7.0.0
15+
freezegun==1.5.5
16+
obsidian-mcp-guard==0.1.7

0 commit comments

Comments
 (0)