mirror of
https://github.com/ThearchyHelios/AgentLab.git
synced 2026-11-15 00:21:58 +00:00
后端依赖锁到测过的那一套:pyproject 卡版本范围,requirements.lock 写精确版本
langgraph 和四个 langchain 包原来完全不写版本,fastapi、sqlalchemy、aiosqlite 只有下限, uv.lock 还在 .gitignore 里。按旧写法今天新装,22 个包和测过的版本不同,其中 sqlalchemy 会从 2.0.52 跳到 2.1.1。 1. pyproject.toml:LangGraph / LangChain 一族放行到下一个小版本——引擎依赖它们的断点 格式、interrupt / resume、流式事件和 thinking 块,这些在小版本里也改过行为。aiosqlite 与 SQLAlchemy 同样卡小版本:db/base.py 给 aiosqlite 0.22 的 stop() 打了补丁,连接池 强制断开时会走到它。mcp 卡在大版本 1。 2. backend/requirements.lock:后端全部依赖(含间接依赖、全部 extras)的精确版本, --universal 跨平台。锁的是 473 条测试跑过的那个 conda 环境:本机要装的 96 个包逐一 对上,另外 3 个只在 Windows / emscripten 上装。 3. environment.yml 装包时以锁文件为约束(-c),换机器装到的是同一套。 4. scripts/lock-deps.sh 重新生成锁文件:已锁的版本默认不动,升级用 --upgrade-package / --upgrade。README 补了用法,补装 extras 的命令都带上 -c。 验证:用同版本 Python 新建空环境,照 conda 的方式按 environment.yml 的 pip 行安装—— 装到的 96 个包和测过的环境完全一致,473 passed。
This commit is contained in:
@@ -34,6 +34,8 @@ conda env create -f environment.yml # 首次:创建 agentlab 环境并安装
|
|||||||
|
|
||||||
`dev.sh` 自动定位 `agentlab` conda 环境;环境不存在时依 `environment.yml` 创建。
|
`dev.sh` 自动定位 `agentlab` conda 环境;环境不存在时依 `environment.yml` 创建。
|
||||||
如需使用其他环境名,设置 `AGENTLAB_CONDA_ENV`。
|
如需使用其他环境名,设置 `AGENTLAB_CONDA_ENV`。
|
||||||
|
后端依赖的版本以 `backend/requirements.lock` 为准,装到的是测试跑过的那一套,
|
||||||
|
不是当天的最新版(见[依赖与锁文件](#依赖与锁文件))。
|
||||||
|
|
||||||
服务启动于 http://localhost:5273 。
|
服务启动于 http://localhost:5273 。
|
||||||
|
|
||||||
@@ -399,13 +401,36 @@ conda run -n agentlab python -c "import asyncio,microsandbox as m; asyncio.run(m
|
|||||||
|
|
||||||
### 可选依赖
|
### 可选依赖
|
||||||
|
|
||||||
|
`environment.yml` 默认已经全部装上。单独补装时带上锁文件,版本才和测过的一致:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pip install -e 'backend[docs]' # PDF / Word / PowerPoint / Excel 解析
|
pip install -e 'backend[docs]' -c backend/requirements.lock # PDF / Word / PowerPoint / Excel 解析
|
||||||
pip install -e 'backend[db]' # MySQL / PostgreSQL / Oracle 驱动
|
pip install -e 'backend[db]' -c backend/requirements.lock # MySQL / PostgreSQL / Oracle 驱动
|
||||||
pip install -e 'backend[microvm]' # microVM 沙箱
|
pip install -e 'backend[microvm]' -c backend/requirements.lock # microVM 沙箱
|
||||||
pip install -e 'backend[dev]' # pytest
|
pip install -e 'backend[dev]' -c backend/requirements.lock # pytest
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### 依赖与锁文件
|
||||||
|
|
||||||
|
`backend/pyproject.toml` 写版本范围,`backend/requirements.lock` 写精确版本:后端全部
|
||||||
|
依赖(含间接依赖、全部 extras)锁在测试跑过的那一套上,跨平台通用。`environment.yml`
|
||||||
|
装包时以它为约束,所以换一台机器装到的也是同一套。
|
||||||
|
|
||||||
|
LangGraph / LangChain 一族在 `pyproject.toml` 里只放行到下一个小版本:引擎直接依赖
|
||||||
|
它们的断点格式、interrupt / resume 和流式事件,这些在小版本里也改过行为。aiosqlite
|
||||||
|
与 SQLAlchemy 同理——`db/base.py` 给 aiosqlite 打了补丁,连接池断开连接时会走到它。
|
||||||
|
|
||||||
|
升级依赖要主动做,改完跑一遍测试再提交:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/lock-deps.sh --upgrade-package langgraph # 升一个包(连带它必须跟着动的)
|
||||||
|
./scripts/lock-deps.sh --upgrade # 全部升到 pyproject 允许的最新
|
||||||
|
./scripts/lock-deps.sh # 只加了新依赖:补上它,已锁的不动
|
||||||
|
pip install -e 'backend[microvm,dev,db,docs]' -c backend/requirements.lock # 装到当前环境
|
||||||
|
```
|
||||||
|
|
||||||
|
重新生成锁文件需要 [uv](https://docs.astral.sh/uv/);装依赖本身只用 pip。
|
||||||
|
|
||||||
### 数据位置
|
### 数据位置
|
||||||
|
|
||||||
全部位于 `data/`:`agentlab.db` 业务数据、`checkpoints.db` 执行断点、
|
全部位于 `data/`:`agentlab.db` 业务数据、`checkpoints.db` 执行断点、
|
||||||
|
|||||||
+15
-9
@@ -8,18 +8,24 @@ dependencies = [
|
|||||||
"uvicorn[standard]>=0.32",
|
"uvicorn[standard]>=0.32",
|
||||||
"pydantic>=2.9",
|
"pydantic>=2.9",
|
||||||
"pydantic-settings>=2.6",
|
"pydantic-settings>=2.6",
|
||||||
"sqlalchemy[asyncio]>=2.0.36",
|
# db/base.py 给 aiosqlite 0.22 的 stop() 打了补丁(并发调用会死锁),SQLAlchemy 连接池
|
||||||
"aiosqlite>=0.20",
|
# 强制 terminate 时也会走到它。两个一起卡住小版本,换版本前先确认补丁还成立
|
||||||
|
"sqlalchemy[asyncio]>=2.0.36,<2.1",
|
||||||
|
"aiosqlite>=0.22.1,<0.23",
|
||||||
"greenlet>=3.1",
|
"greenlet>=3.1",
|
||||||
"httpx>=0.28",
|
"httpx>=0.28",
|
||||||
"python-multipart>=0.0.17",
|
"python-multipart>=0.0.17",
|
||||||
"langgraph",
|
# 引擎直接依赖这一族的运行时语义:断点格式、interrupt / resume、流式事件、
|
||||||
"langgraph-checkpoint-sqlite",
|
# thinking 块。小版本也改过行为(resume 发 Command 在当前版本会直接崩),
|
||||||
"langchain-core",
|
# 所以上限卡到下一个小版本——升级要主动改这里、重新锁、跑一遍测试。
|
||||||
"langchain-anthropic",
|
# 精确版本在 requirements.lock 里
|
||||||
"langchain-openai",
|
"langgraph>=1.2.11,<1.3",
|
||||||
"langchain-mcp-adapters",
|
"langgraph-checkpoint-sqlite>=3.1.1,<3.2",
|
||||||
"mcp",
|
"langchain-core>=1.6.3,<1.7",
|
||||||
|
"langchain-anthropic>=1.7.2,<1.8",
|
||||||
|
"langchain-openai>=1.6.2,<1.7",
|
||||||
|
"langchain-mcp-adapters>=0.3.2,<0.4",
|
||||||
|
"mcp>=1.30,<2",
|
||||||
"numpy>=2.0",
|
"numpy>=2.0",
|
||||||
"jsonschema>=4.23",
|
"jsonschema>=4.23",
|
||||||
"beautifulsoup4>=4.12",
|
"beautifulsoup4>=4.12",
|
||||||
|
|||||||
@@ -0,0 +1,331 @@
|
|||||||
|
# This file was autogenerated by uv via the following command:
|
||||||
|
# ./scripts/lock-deps.sh
|
||||||
|
aiomysql==0.3.2
|
||||||
|
# via agentlab-backend (pyproject.toml)
|
||||||
|
aiosqlite==0.22.1
|
||||||
|
# via
|
||||||
|
# agentlab-backend (pyproject.toml)
|
||||||
|
# langgraph-checkpoint-sqlite
|
||||||
|
annotated-doc==0.0.5
|
||||||
|
# via fastapi
|
||||||
|
annotated-types==0.8.0
|
||||||
|
# via pydantic
|
||||||
|
anthropic==1.5.0
|
||||||
|
# via langchain-anthropic
|
||||||
|
anyio==4.15.1
|
||||||
|
# via
|
||||||
|
# anthropic
|
||||||
|
# httpx
|
||||||
|
# httpx2
|
||||||
|
# langsmith
|
||||||
|
# mcp
|
||||||
|
# openai
|
||||||
|
# sse-starlette
|
||||||
|
# starlette
|
||||||
|
# watchfiles
|
||||||
|
asyncpg==0.31.0
|
||||||
|
# via agentlab-backend (pyproject.toml)
|
||||||
|
attrs==26.1.0
|
||||||
|
# via
|
||||||
|
# jsonschema
|
||||||
|
# referencing
|
||||||
|
beautifulsoup4==4.15.0
|
||||||
|
# via agentlab-backend (pyproject.toml)
|
||||||
|
certifi==2026.7.22
|
||||||
|
# via
|
||||||
|
# httpcore
|
||||||
|
# httpx
|
||||||
|
# langchain-openai
|
||||||
|
# requests
|
||||||
|
cffi==2.1.1 ; platform_python_implementation != 'PyPy'
|
||||||
|
# via cryptography
|
||||||
|
charset-normalizer==3.5.1
|
||||||
|
# via requests
|
||||||
|
click==8.5.0
|
||||||
|
# via uvicorn
|
||||||
|
colorama==0.4.6 ; sys_platform == 'win32'
|
||||||
|
# via pytest
|
||||||
|
cryptography==50.0.1
|
||||||
|
# via
|
||||||
|
# agentlab-backend (pyproject.toml)
|
||||||
|
# oracledb
|
||||||
|
# pyjwt
|
||||||
|
distro==1.9.0
|
||||||
|
# via langsmith
|
||||||
|
docstring-parser==0.18.0
|
||||||
|
# via anthropic
|
||||||
|
et-xmlfile==2.0.0
|
||||||
|
# via openpyxl
|
||||||
|
fastapi==0.141.1
|
||||||
|
# via agentlab-backend (pyproject.toml)
|
||||||
|
greenlet==3.5.5
|
||||||
|
# via
|
||||||
|
# agentlab-backend (pyproject.toml)
|
||||||
|
# sqlalchemy
|
||||||
|
h11==0.16.0
|
||||||
|
# via
|
||||||
|
# httpcore
|
||||||
|
# httpcore2
|
||||||
|
# uvicorn
|
||||||
|
httpcore==1.0.9
|
||||||
|
# via httpx
|
||||||
|
httpcore2==2.12.0 ; sys_platform != 'emscripten'
|
||||||
|
# via httpx2
|
||||||
|
httptools==0.8.0
|
||||||
|
# via uvicorn
|
||||||
|
httpx==0.28.1
|
||||||
|
# via
|
||||||
|
# agentlab-backend (pyproject.toml)
|
||||||
|
# langchain-core
|
||||||
|
# langgraph-sdk
|
||||||
|
# mcp
|
||||||
|
httpx-sse==0.4.3
|
||||||
|
# via mcp
|
||||||
|
httpx2==2.12.0
|
||||||
|
# via
|
||||||
|
# anthropic
|
||||||
|
# langsmith
|
||||||
|
# openai
|
||||||
|
httpx2-jsfetch==1.0 ; sys_platform == 'emscripten'
|
||||||
|
# via httpx2
|
||||||
|
idna==3.19
|
||||||
|
# via
|
||||||
|
# anyio
|
||||||
|
# httpx
|
||||||
|
# httpx2
|
||||||
|
# requests
|
||||||
|
iniconfig==2.3.0
|
||||||
|
# via pytest
|
||||||
|
jiter==0.17.0
|
||||||
|
# via
|
||||||
|
# anthropic
|
||||||
|
# openai
|
||||||
|
jsonpatch==1.33
|
||||||
|
# via langchain-core
|
||||||
|
jsonpointer==3.1.1
|
||||||
|
# via jsonpatch
|
||||||
|
jsonschema==4.26.0
|
||||||
|
# via
|
||||||
|
# agentlab-backend (pyproject.toml)
|
||||||
|
# mcp
|
||||||
|
jsonschema-specifications==2025.9.1
|
||||||
|
# via jsonschema
|
||||||
|
langchain-anthropic==1.7.2
|
||||||
|
# via agentlab-backend (pyproject.toml)
|
||||||
|
langchain-core==1.6.3
|
||||||
|
# via
|
||||||
|
# agentlab-backend (pyproject.toml)
|
||||||
|
# langchain-anthropic
|
||||||
|
# langchain-mcp-adapters
|
||||||
|
# langchain-openai
|
||||||
|
# langgraph
|
||||||
|
# langgraph-checkpoint
|
||||||
|
# langgraph-prebuilt
|
||||||
|
# langgraph-sdk
|
||||||
|
langchain-mcp-adapters==0.3.2
|
||||||
|
# via agentlab-backend (pyproject.toml)
|
||||||
|
langchain-openai==1.6.2
|
||||||
|
# via agentlab-backend (pyproject.toml)
|
||||||
|
langchain-protocol==0.0.19
|
||||||
|
# via
|
||||||
|
# langchain-core
|
||||||
|
# langgraph-sdk
|
||||||
|
langgraph==1.2.11
|
||||||
|
# via agentlab-backend (pyproject.toml)
|
||||||
|
langgraph-checkpoint==4.2.0
|
||||||
|
# via
|
||||||
|
# langgraph
|
||||||
|
# langgraph-checkpoint-sqlite
|
||||||
|
# langgraph-prebuilt
|
||||||
|
langgraph-checkpoint-sqlite==3.1.1
|
||||||
|
# via agentlab-backend (pyproject.toml)
|
||||||
|
langgraph-prebuilt==1.1.0
|
||||||
|
# via langgraph
|
||||||
|
langgraph-sdk==0.4.4
|
||||||
|
# via langgraph
|
||||||
|
langsmith==0.12.4
|
||||||
|
# via langchain-core
|
||||||
|
lxml==6.1.3
|
||||||
|
# via
|
||||||
|
# python-docx
|
||||||
|
# python-pptx
|
||||||
|
mcp==1.30.0
|
||||||
|
# via
|
||||||
|
# agentlab-backend (pyproject.toml)
|
||||||
|
# langchain-mcp-adapters
|
||||||
|
microsandbox==0.6.18
|
||||||
|
# via agentlab-backend (pyproject.toml)
|
||||||
|
numpy==2.5.3
|
||||||
|
# via agentlab-backend (pyproject.toml)
|
||||||
|
openai==3.13.0
|
||||||
|
# via langchain-openai
|
||||||
|
openpyxl==3.1.5
|
||||||
|
# via agentlab-backend (pyproject.toml)
|
||||||
|
oracledb==26.0.0
|
||||||
|
# via agentlab-backend (pyproject.toml)
|
||||||
|
orjson==3.12.0
|
||||||
|
# via
|
||||||
|
# langgraph-sdk
|
||||||
|
# langsmith
|
||||||
|
ormsgpack==1.12.2
|
||||||
|
# via langgraph-checkpoint
|
||||||
|
packaging==26.3
|
||||||
|
# via
|
||||||
|
# langchain-core
|
||||||
|
# langsmith
|
||||||
|
# pytest
|
||||||
|
pillow==12.3.0
|
||||||
|
# via python-pptx
|
||||||
|
pluggy==1.6.0
|
||||||
|
# via pytest
|
||||||
|
pycparser==3.0 ; implementation_name != 'PyPy' and platform_python_implementation != 'PyPy'
|
||||||
|
# via cffi
|
||||||
|
pydantic==2.13.5
|
||||||
|
# via
|
||||||
|
# agentlab-backend (pyproject.toml)
|
||||||
|
# anthropic
|
||||||
|
# fastapi
|
||||||
|
# langchain-anthropic
|
||||||
|
# langchain-core
|
||||||
|
# langgraph
|
||||||
|
# langsmith
|
||||||
|
# mcp
|
||||||
|
# openai
|
||||||
|
# pydantic-settings
|
||||||
|
pydantic-core==2.46.5
|
||||||
|
# via pydantic
|
||||||
|
pydantic-settings==2.15.0
|
||||||
|
# via
|
||||||
|
# agentlab-backend (pyproject.toml)
|
||||||
|
# mcp
|
||||||
|
pygments==2.21.0
|
||||||
|
# via pytest
|
||||||
|
pyjwt==2.14.0
|
||||||
|
# via mcp
|
||||||
|
pymysql==1.2.0
|
||||||
|
# via aiomysql
|
||||||
|
pypdf==6.19.0
|
||||||
|
# via agentlab-backend (pyproject.toml)
|
||||||
|
pytest==9.1.1
|
||||||
|
# via
|
||||||
|
# agentlab-backend (pyproject.toml)
|
||||||
|
# pytest-asyncio
|
||||||
|
pytest-asyncio==1.4.0
|
||||||
|
# via agentlab-backend (pyproject.toml)
|
||||||
|
python-docx==1.2.0
|
||||||
|
# via agentlab-backend (pyproject.toml)
|
||||||
|
python-dotenv==1.2.3
|
||||||
|
# via
|
||||||
|
# pydantic-settings
|
||||||
|
# uvicorn
|
||||||
|
python-multipart==0.0.32
|
||||||
|
# via
|
||||||
|
# agentlab-backend (pyproject.toml)
|
||||||
|
# mcp
|
||||||
|
python-pptx==1.0.2
|
||||||
|
# via agentlab-backend (pyproject.toml)
|
||||||
|
pywin32==312 ; sys_platform == 'win32'
|
||||||
|
# via mcp
|
||||||
|
pyyaml==6.0.3
|
||||||
|
# via
|
||||||
|
# langchain-core
|
||||||
|
# uvicorn
|
||||||
|
referencing==0.37.0
|
||||||
|
# via
|
||||||
|
# jsonschema
|
||||||
|
# jsonschema-specifications
|
||||||
|
regex==2026.9.10
|
||||||
|
# via tiktoken
|
||||||
|
requests==2.34.2
|
||||||
|
# via
|
||||||
|
# langsmith
|
||||||
|
# requests-toolbelt
|
||||||
|
# tiktoken
|
||||||
|
requests-toolbelt==1.0.0
|
||||||
|
# via langsmith
|
||||||
|
rpds-py==2026.6.3
|
||||||
|
# via
|
||||||
|
# jsonschema
|
||||||
|
# referencing
|
||||||
|
sniffio==1.3.1
|
||||||
|
# via
|
||||||
|
# anthropic
|
||||||
|
# langsmith
|
||||||
|
# openai
|
||||||
|
soupsieve==2.9.2
|
||||||
|
# via beautifulsoup4
|
||||||
|
sqlalchemy==2.0.52
|
||||||
|
# via agentlab-backend (pyproject.toml)
|
||||||
|
sqlite-vec==0.1.9
|
||||||
|
# via langgraph-checkpoint-sqlite
|
||||||
|
sse-starlette==3.4.11
|
||||||
|
# via mcp
|
||||||
|
starlette==1.6.0
|
||||||
|
# via
|
||||||
|
# fastapi
|
||||||
|
# mcp
|
||||||
|
# sse-starlette
|
||||||
|
tenacity==9.1.4
|
||||||
|
# via langchain-core
|
||||||
|
tiktoken==0.14.0
|
||||||
|
# via langchain-openai
|
||||||
|
truststore==0.10.4 ; sys_platform != 'emscripten'
|
||||||
|
# via
|
||||||
|
# httpcore2
|
||||||
|
# httpx2
|
||||||
|
typing-extensions==4.16.0
|
||||||
|
# via
|
||||||
|
# anthropic
|
||||||
|
# anyio
|
||||||
|
# beautifulsoup4
|
||||||
|
# fastapi
|
||||||
|
# httpx2
|
||||||
|
# langchain-core
|
||||||
|
# langchain-mcp-adapters
|
||||||
|
# langchain-protocol
|
||||||
|
# langsmith
|
||||||
|
# mcp
|
||||||
|
# openai
|
||||||
|
# oracledb
|
||||||
|
# pydantic
|
||||||
|
# pydantic-core
|
||||||
|
# pytest-asyncio
|
||||||
|
# python-docx
|
||||||
|
# python-pptx
|
||||||
|
# referencing
|
||||||
|
# sqlalchemy
|
||||||
|
# starlette
|
||||||
|
# typing-inspection
|
||||||
|
typing-inspection==0.4.4
|
||||||
|
# via
|
||||||
|
# fastapi
|
||||||
|
# mcp
|
||||||
|
# pydantic
|
||||||
|
# pydantic-settings
|
||||||
|
urllib3==2.7.0
|
||||||
|
# via requests
|
||||||
|
uuid-utils==0.17.1
|
||||||
|
# via
|
||||||
|
# langchain-core
|
||||||
|
# langsmith
|
||||||
|
uvicorn==0.52.4
|
||||||
|
# via
|
||||||
|
# agentlab-backend (pyproject.toml)
|
||||||
|
# mcp
|
||||||
|
uvloop==0.22.1 ; platform_python_implementation != 'PyPy' and sys_platform != 'cygwin' and sys_platform != 'win32'
|
||||||
|
# via uvicorn
|
||||||
|
watchfiles==1.2.0
|
||||||
|
# via uvicorn
|
||||||
|
websockets==16.1.1
|
||||||
|
# via
|
||||||
|
# langgraph-sdk
|
||||||
|
# langsmith
|
||||||
|
# uvicorn
|
||||||
|
xlsxwriter==3.2.9
|
||||||
|
# via python-pptx
|
||||||
|
xxhash==4.0.1
|
||||||
|
# via
|
||||||
|
# langgraph
|
||||||
|
# langsmith
|
||||||
|
zstandard==0.25.0
|
||||||
|
# via langsmith
|
||||||
@@ -12,6 +12,9 @@ dependencies:
|
|||||||
- python=3.12
|
- python=3.12
|
||||||
- pip
|
- pip
|
||||||
- pip:
|
- pip:
|
||||||
|
# 版本以锁文件为准:装到的就是测过的那一套,不是当天的最新版。
|
||||||
|
# 升级依赖见 scripts/lock-deps.sh
|
||||||
|
- -c backend/requirements.lock
|
||||||
# [microvm] 带上独立内核的沙箱后端(约 35MB wheel,首次运行还要下载
|
# [microvm] 带上独立内核的沙箱后端(约 35MB wheel,首次运行还要下载
|
||||||
# 约 50MB 运行时,外加一次 OCI 镜像拉取)。不需要就把方括号去掉,
|
# 约 50MB 运行时,外加一次 OCI 镜像拉取)。不需要就把方括号去掉,
|
||||||
# 沙箱会退回 Seatbelt —— 代价是内存限额在 macOS 上限不住。
|
# 沙箱会退回 Seatbelt —— 代价是内存限额在 macOS 上限不住。
|
||||||
|
|||||||
Executable
+23
@@ -0,0 +1,23 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# 重新生成 backend/requirements.lock:后端全部依赖(含间接依赖、全部 extras)的精确版本。
|
||||||
|
#
|
||||||
|
# ./scripts/lock-deps.sh 加了依赖:只补新的,已锁的版本不动
|
||||||
|
# ./scripts/lock-deps.sh --upgrade-package langgraph 升一个包(连带它必须跟着动的)
|
||||||
|
# ./scripts/lock-deps.sh --upgrade 全部升到 pyproject 允许的最新
|
||||||
|
#
|
||||||
|
# 升级之后跑一遍 pytest 和前端检查再提交——锁文件的意义就是"这一套测过"。
|
||||||
|
# 锁是跨平台的(--universal),Linux / Windows 上装到的也是同一套版本。
|
||||||
|
# 需要 uv(brew install uv);装包慢可以在命令前加 UV_INDEX_URL=<镜像地址>。
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||||
|
command -v uv >/dev/null || { echo "缺少 uv:https://docs.astral.sh/uv/"; exit 1; }
|
||||||
|
|
||||||
|
cd "$ROOT/backend"
|
||||||
|
uv pip compile pyproject.toml \
|
||||||
|
--all-extras \
|
||||||
|
--universal \
|
||||||
|
--python-version 3.12 \
|
||||||
|
--custom-compile-command "./scripts/lock-deps.sh" \
|
||||||
|
-o requirements.lock \
|
||||||
|
"$@"
|
||||||
Reference in New Issue
Block a user