mirror of
https://github.com/langgenius/dify.git
synced 2024-11-16 03:32:23 +08:00
build: initial support for poetry build tool (#4513)
Co-authored-by: Bowen Liang <bowenliang@apache.org>
This commit is contained in:
parent
f426e1b3bd
commit
f62f71a81a
72
.github/workflows/api-tests.yml
vendored
72
.github/workflows/api-tests.yml
vendored
|
@ -79,3 +79,75 @@ jobs:
|
||||||
|
|
||||||
- name: Test Vector Stores
|
- name: Test Vector Stores
|
||||||
run: dev/pytest/pytest_vdb.sh
|
run: dev/pytest/pytest_vdb.sh
|
||||||
|
|
||||||
|
test-in-poetry:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
python-version:
|
||||||
|
- "3.10"
|
||||||
|
- "3.11"
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Install poetry
|
||||||
|
uses: abatilo/actions-poetry@v3
|
||||||
|
with:
|
||||||
|
poetry-version: "1.8.1"
|
||||||
|
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set up Python ${{ matrix.python-version }}
|
||||||
|
uses: actions/setup-python@v5
|
||||||
|
with:
|
||||||
|
python-version: ${{ matrix.python-version }}
|
||||||
|
cache: 'poetry'
|
||||||
|
cache-dependency-path: ./api/poetry.lock
|
||||||
|
|
||||||
|
- name: Poetry check
|
||||||
|
run: poetry check -C api
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: poetry install -C api
|
||||||
|
|
||||||
|
- name: Run Unit tests
|
||||||
|
run: poetry run -C api bash dev/pytest/pytest_unit_tests.sh
|
||||||
|
|
||||||
|
- name: Run ModelRuntime
|
||||||
|
run: poetry run -C api bash dev/pytest/pytest_model_runtime.sh
|
||||||
|
|
||||||
|
- name: Run Tool
|
||||||
|
run: poetry run -C api bash dev/pytest/pytest_tools.sh
|
||||||
|
|
||||||
|
- name: Set up Sandbox
|
||||||
|
uses: hoverkraft-tech/compose-action@v2.0.0
|
||||||
|
with:
|
||||||
|
compose-file: |
|
||||||
|
docker/docker-compose.middleware.yaml
|
||||||
|
services: |
|
||||||
|
sandbox
|
||||||
|
ssrf_proxy
|
||||||
|
|
||||||
|
- name: Run Workflow
|
||||||
|
run: poetry run -C api bash dev/pytest/pytest_workflow.sh
|
||||||
|
|
||||||
|
- name: Set up Vector Stores (Weaviate, Qdrant, PGVector, Milvus, PgVecto-RS)
|
||||||
|
uses: hoverkraft-tech/compose-action@v2.0.0
|
||||||
|
with:
|
||||||
|
compose-file: |
|
||||||
|
docker/docker-compose.middleware.yaml
|
||||||
|
docker/docker-compose.qdrant.yaml
|
||||||
|
docker/docker-compose.milvus.yaml
|
||||||
|
docker/docker-compose.pgvecto-rs.yaml
|
||||||
|
docker/docker-compose.pgvector.yaml
|
||||||
|
services: |
|
||||||
|
weaviate
|
||||||
|
qdrant
|
||||||
|
etcd
|
||||||
|
minio
|
||||||
|
milvus-standalone
|
||||||
|
pgvecto-rs
|
||||||
|
pgvector
|
||||||
|
|
||||||
|
- name: Test Vector Stores
|
||||||
|
run: poetry run -C api bash dev/pytest/pytest_vdb.sh
|
||||||
|
|
6
api/.vscode/launch.json
vendored
6
api/.vscode/launch.json
vendored
|
@ -17,7 +17,8 @@
|
||||||
"FLASK_DEBUG": "1",
|
"FLASK_DEBUG": "1",
|
||||||
"GEVENT_SUPPORT": "True"
|
"GEVENT_SUPPORT": "True"
|
||||||
},
|
},
|
||||||
"console": "integratedTerminal"
|
"console": "integratedTerminal",
|
||||||
|
"python": "${command:python.interpreterPath}"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Python: Flask",
|
"name": "Python: Flask",
|
||||||
|
@ -36,7 +37,8 @@
|
||||||
"--debug"
|
"--debug"
|
||||||
],
|
],
|
||||||
"jinja": true,
|
"jinja": true,
|
||||||
"justMyCode": true
|
"justMyCode": true,
|
||||||
|
"python": "${command:python.interpreterPath}"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
|
@ -17,15 +17,30 @@
|
||||||
```bash
|
```bash
|
||||||
sed -i "/^SECRET_KEY=/c\SECRET_KEY=$(openssl rand -base64 42)" .env
|
sed -i "/^SECRET_KEY=/c\SECRET_KEY=$(openssl rand -base64 42)" .env
|
||||||
```
|
```
|
||||||
4. If you use Anaconda, create a new environment and activate it
|
4. Create environment.
|
||||||
|
- Anaconda
|
||||||
|
If you use Anaconda, create a new environment and activate it
|
||||||
```bash
|
```bash
|
||||||
conda create --name dify python=3.10
|
conda create --name dify python=3.10
|
||||||
conda activate dify
|
conda activate dify
|
||||||
```
|
```
|
||||||
|
- Poetry
|
||||||
|
If you use Poetry, you don't need to manually create the environment. You can execute `poetry shell` to activate the environment.
|
||||||
5. Install dependencies
|
5. Install dependencies
|
||||||
|
- Anaconda
|
||||||
```bash
|
```bash
|
||||||
pip install -r requirements.txt
|
pip install -r requirements.txt
|
||||||
```
|
```
|
||||||
|
- Poetry
|
||||||
|
```bash
|
||||||
|
poetry install
|
||||||
|
```
|
||||||
|
In case of contributors missing to update dependencies for `pyproject.toml`, you can perform the following shell instead.
|
||||||
|
```base
|
||||||
|
poetry shell # activate current environment
|
||||||
|
poetry add $(cat requirements.txt) # install dependencies of production and update pyproject.toml
|
||||||
|
poetry add $(cat requirements-dev.txt) --group dev # install dependencies of development and update pyproject.toml
|
||||||
|
```
|
||||||
6. Run migrate
|
6. Run migrate
|
||||||
|
|
||||||
Before the first launch, migrate the database to the latest version.
|
Before the first launch, migrate the database to the latest version.
|
||||||
|
|
7197
api/poetry.lock
generated
Normal file
7197
api/poetry.lock
generated
Normal file
File diff suppressed because it is too large
Load Diff
4
api/poetry.toml
Normal file
4
api/poetry.toml
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
[virtualenvs]
|
||||||
|
in-project = true
|
||||||
|
create = true
|
||||||
|
prefer-active-python = true
|
|
@ -77,3 +77,113 @@ MOCK_SWITCH = "true"
|
||||||
CODE_MAX_STRING_LENGTH = "80000"
|
CODE_MAX_STRING_LENGTH = "80000"
|
||||||
CODE_EXECUTION_ENDPOINT="http://127.0.0.1:8194"
|
CODE_EXECUTION_ENDPOINT="http://127.0.0.1:8194"
|
||||||
CODE_EXECUTION_API_KEY="dify-sandbox"
|
CODE_EXECUTION_API_KEY="dify-sandbox"
|
||||||
|
|
||||||
|
|
||||||
|
[tool.poetry]
|
||||||
|
name = "dify-api"
|
||||||
|
version = "0.6.10"
|
||||||
|
description = ""
|
||||||
|
authors = ["Dify <hello@dify.ai>"]
|
||||||
|
readme = "README.md"
|
||||||
|
|
||||||
|
[tool.poetry.dependencies]
|
||||||
|
python = "^3.10"
|
||||||
|
beautifulsoup4 = "^4.12.2"
|
||||||
|
flask = "^3.0.1"
|
||||||
|
flask-sqlalchemy = "^3.0.5"
|
||||||
|
sqlalchemy = "^2.0.29"
|
||||||
|
flask-compress = "^1.14"
|
||||||
|
flask-login = "^0.6.3"
|
||||||
|
flask-migrate = "^4.0.5"
|
||||||
|
flask-restful = "^0.3.10"
|
||||||
|
flask-cors = "^4.0.0"
|
||||||
|
gunicorn = "^22.0.0"
|
||||||
|
gevent = "^23.9.1"
|
||||||
|
openai = "^1.29.0"
|
||||||
|
tiktoken = "^0.7.0"
|
||||||
|
psycopg2-binary = "^2.9.6"
|
||||||
|
pycryptodome = "3.19.1"
|
||||||
|
python-dotenv = "1.0.0"
|
||||||
|
authlib = "1.2.0"
|
||||||
|
boto3 = "^1.28.17"
|
||||||
|
tenacity = "^8.2.2"
|
||||||
|
cachetools = "^5.3.0"
|
||||||
|
weaviate-client = "^3.21.0"
|
||||||
|
mailchimp-transactional = "^1.0.50"
|
||||||
|
scikit-learn = "1.2.2"
|
||||||
|
sentry-sdk = {version = "^1.39.2", extras = ["flask"]}
|
||||||
|
sympy = "1.12"
|
||||||
|
jieba = "0.42.1"
|
||||||
|
celery = "^5.3.6"
|
||||||
|
redis = {version = "^5.0.3", extras = ["hiredis"]}
|
||||||
|
openpyxl = "3.1.2"
|
||||||
|
chardet = "^5.1.0"
|
||||||
|
python-docx = "^1.1.0"
|
||||||
|
pypdfium2 = "^4.17.0"
|
||||||
|
resend = "^0.7.0"
|
||||||
|
pyjwt = "^2.8.0"
|
||||||
|
anthropic = "^0.23.1"
|
||||||
|
newspaper3k = "0.2.8"
|
||||||
|
wikipedia = "1.4.0"
|
||||||
|
readabilipy = "0.2.0"
|
||||||
|
google-ai-generativelanguage = "0.6.1"
|
||||||
|
google-api-core = "^2.18.0"
|
||||||
|
google-api-python-client = "^2.90.0"
|
||||||
|
google-auth = "^2.29.0"
|
||||||
|
google-auth-httplib2 = "0.2.0"
|
||||||
|
google-generativeai = "0.5.0"
|
||||||
|
google-search-results = "2.4.2"
|
||||||
|
googleapis-common-protos = "1.63.0"
|
||||||
|
google-cloud-storage = "2.16.0"
|
||||||
|
replicate = "^0.22.0"
|
||||||
|
websocket-client = "^1.7.0"
|
||||||
|
dashscope = {version = "^1.17.0", extras = ["tokenizer"]}
|
||||||
|
huggingface-hub = "^0.16.4"
|
||||||
|
transformers = "^4.35.0"
|
||||||
|
tokenizers = "^0.15.0"
|
||||||
|
pandas = "1.5.3"
|
||||||
|
xinference-client = "0.9.4"
|
||||||
|
safetensors = "^0.4.3"
|
||||||
|
zhipuai = "1.0.7"
|
||||||
|
werkzeug = "^3.0.1"
|
||||||
|
pymilvus = "2.3.1"
|
||||||
|
qdrant-client = "1.7.3"
|
||||||
|
cohere = "^5.2.4"
|
||||||
|
pyyaml = "^6.0.1"
|
||||||
|
numpy = "^1.26.4"
|
||||||
|
unstructured = {version = "^0.10.27", extras = ["docx", "epub", "md", "msg", "ppt", "pptx"]}
|
||||||
|
bs4 = "^0.0.1"
|
||||||
|
markdown = "^3.5.1"
|
||||||
|
httpx = {version = "^0.24.1", extras = ["socks"]}
|
||||||
|
matplotlib = "^3.8.2"
|
||||||
|
yfinance = "^0.2.35"
|
||||||
|
pydub = "^0.25.1"
|
||||||
|
gmpy2 = "^2.1.5"
|
||||||
|
numexpr = "^2.9.0"
|
||||||
|
duckduckgo-search = "5.2.2"
|
||||||
|
arxiv = "2.1.0"
|
||||||
|
yarl = "^1.9.4"
|
||||||
|
twilio = "^9.0.4"
|
||||||
|
qrcode = "^7.4.2"
|
||||||
|
azure-storage-blob = "12.9.0"
|
||||||
|
azure-identity = "1.15.0"
|
||||||
|
lxml = "5.1.0"
|
||||||
|
xlrd = "^2.0.1"
|
||||||
|
pydantic = "^1.10.0"
|
||||||
|
pgvecto-rs = "0.1.4"
|
||||||
|
firecrawl-py = "0.0.5"
|
||||||
|
oss2 = "2.15.0"
|
||||||
|
pgvector = "0.2.5"
|
||||||
|
pymysql = "^1.1.1"
|
||||||
|
tidb-vector = "^0.0.9"
|
||||||
|
google-cloud-aiplatform = "1.49.0"
|
||||||
|
vanna = {version = "==0.5.5", extras = ["postgres", "mysql", "clickhouse", "duckdb"]}
|
||||||
|
kaleido = "0.2.1"
|
||||||
|
|
||||||
|
|
||||||
|
[tool.poetry.group.dev.dependencies]
|
||||||
|
coverage = "^7.2.4"
|
||||||
|
pytest = "^8.1.1"
|
||||||
|
pytest-benchmark = "^4.0.0"
|
||||||
|
pytest-env = "^1.1.3"
|
||||||
|
pytest-mock = "^3.14.0"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user