-
Notifications
You must be signed in to change notification settings - Fork 1.4k
162 lines (153 loc) · 5.72 KB
/
ci.yml
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
152
153
154
155
156
157
158
159
160
161
162
name: ci
on:
push:
branches: [main]
pull_request:
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macOS-latest]
python-version: ["3.10", "3.11"]
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install Poetry (Unix)
if: matrix.os != 'windows-latest'
run: |
curl -sSL https://install.python-poetry.org | python3 -
echo 'export PATH="$HOME/.local/bin:$PATH"' >> $GITHUB_ENV
- name: Install Poetry (Windows)
if: matrix.os == 'windows-latest'
run: |
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -
echo "C:\\Users\\runneradmin\\AppData\\Roaming\\Python\\Scripts" >> $env:GITHUB_PATH
- name: Verify Poetry Installation
run: poetry --version
- name: Clear Poetry Cache
run: poetry cache clear pypi --all
- name: Install future
run: pip wheel --use-pep517 "future==0.18.3"
- name: Install dependencies
run: poetry install --all-extras --with dev --verbose
- name: Install extension dependencies
run: |
# Install LLM extension dependencies
for dir in extensions/llms/*/; do
if [ -f "$dir/pyproject.toml" ]; then
echo "Installing dependencies for $dir"
cd "$dir"
poetry install --all-extras --with dev
cd -
fi
done
# Install connector extension dependencies
for dir in extensions/connectors/*/; do
if [ -f "$dir/pyproject.toml" ]; then
echo "Installing dependencies for $dir"
cd "$dir"
poetry install --all-extras --with dev
cd -
fi
done
# Install enterprise extension dependencies
for dir in extensions/ee/*/*/; do
if [ -f "$dir/pyproject.toml" ]; then
echo "Installing dependencies for $dir"
cd "$dir"
poetry install --all-extras --with dev
cd -
fi
done
- name: Install extension dependencies (Windows)
if: matrix.os == 'windows-latest'
run: |
# Install LLM extension dependencies
Get-ChildItem -Path extensions/llms -Directory | ForEach-Object {
$projFile = Join-Path $_.FullName "pyproject.toml"
if (Test-Path $projFile) {
Write-Host "Installing dependencies for $_"
Push-Location $_.FullName
poetry install --all-extras --with dev
Pop-Location
}
}
# Install connector extension dependencies
Get-ChildItem -Path extensions/connectors -Directory | ForEach-Object {
$projFile = Join-Path $_.FullName "pyproject.toml"
if (Test-Path $projFile) {
Write-Host "Installing dependencies for $_"
Push-Location $_.FullName
poetry install --all-extras --with dev
Pop-Location
}
}
# Install enterprise extension dependencies
Get-ChildItem -Path extensions/ee -Recurse -Directory -Depth 2 | ForEach-Object {
$projFile = Join-Path $_.FullName "pyproject.toml"
if (Test-Path $projFile) {
Write-Host "Installing dependencies for $_"
Push-Location $_.FullName
poetry install --all-extras --with dev
Pop-Location
}
}
- name: Lint with ruff
run: make format_diff
- name: Spellcheck
run: make spell_check
- name: Run core tests
run: make test_core
- name: Run extension tests
if: matrix.os != 'windows-latest'
run: make test_extensions
- name: Run extension tests (Windows)
if: matrix.os == 'windows-latest'
run: |
# Run LLM extension tests
Get-ChildItem -Path extensions/llms -Directory | ForEach-Object {
$testDir = Join-Path $_.FullName "tests"
if (Test-Path $testDir) {
Write-Host "Running tests for $_"
Push-Location $_.FullName
poetry run pytest tests/
Pop-Location
}
}
# Run connector extension tests
Get-ChildItem -Path extensions/connectors -Directory | ForEach-Object {
$testDir = Join-Path $_.FullName "tests"
if (Test-Path $testDir) {
Write-Host "Running tests for $_"
Push-Location $_.FullName
poetry run pytest tests/
Pop-Location
}
}
# Run enterprise extension tests
Get-ChildItem -Path extensions/ee -Recurse -Directory -Depth 2 | ForEach-Object {
$testDir = Join-Path $_.FullName "tests"
if (Test-Path $testDir) {
Write-Host "Running tests for $_"
Push-Location $_.FullName
poetry run pytest tests/
Pop-Location
}
}
- name: Run code coverage
continue-on-error: true
run: |
poetry run coverage run --source=pandasai,extensions -m pytest tests extensions/*/tests extensions/ee/*/tests --ignore=tests/integration_tests
poetry run coverage xml
- name: Report coverage
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./coverage.xml
flags: unittests
name: codecov-umbrella
fail_ci_if_error: false