-
Notifications
You must be signed in to change notification settings - Fork 0
164 lines (127 loc) · 4.29 KB
/
Copy pathci.yml
File metadata and controls
164 lines (127 loc) · 4.29 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
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
163
164
name: CI
on:
pull_request:
push:
branches:
- main
permissions:
contents: read
jobs:
minimal-install-smoke:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v7
- name: Install uv
uses: astral-sh/setup-uv@v7
- name: Install Python
run: uv python install 3.11
- name: Install base dependencies only
run: uv sync
- name: Base install smoke
run: |
uv run python - <<'PY'
import aberrant
from aberrant.base import Pipeline
from aberrant.model import NullModel, QuantileThreshold, RandomModel, ThresholdModel
from aberrant.model.iforest import OnlineIsolationForest
from aberrant.transform.preprocessing import StandardScaler
assert isinstance(aberrant.__version__, str)
assert NullModel().score_one({"x": 1.0}) == 0.0
assert 0.0 <= RandomModel().score_one({"x": 1.0}) <= 1.0
assert ThresholdModel(ceiling=1.0).score_one({"x": 2.0}) == 1.0
q = QuantileThreshold()
q.learn_one({"score": 0.1})
_ = q.score_one({"score": 0.1})
p = StandardScaler() | OnlineIsolationForest()
assert isinstance(p, Pipeline)
PY
lint-type-test:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
python-version: ["3.10", "3.11", "3.12"]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v7
- name: Install uv
uses: astral-sh/setup-uv@v7
- name: Install Python
run: uv python install ${{ matrix.python-version }}
- name: Install dependencies
run: uv sync --extra dev
- name: Ruff
run: uv run python -m ruff check .
- name: Mypy
run: uv run python -m mypy aberrant
- name: Unit tests
run: uv run python -m pytest tests/models tests/drift tests/transformers -q
extras-smoke:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v7
- name: Install uv
uses: astral-sh/setup-uv@v7
- name: Install Python
run: uv python install 3.11
- name: Install extras
run: uv sync --extra dev --extra faiss
- name: Extras import smoke
run: |
uv run python - <<'PY'
from aberrant.model.deep import Autoencoder, KitNET
from aberrant.utils.similar.faiss_engine import FaissSimilaritySearchEngine
assert Autoencoder is not None
assert KitNET is not None
engine = FaissSimilaritySearchEngine(window_size=8, warm_up=2)
engine.append({"x": 0.0, "y": 0.0})
engine.append({"x": 1.0, "y": 1.0})
assert isinstance(engine.search({"x": 0.5, "y": 0.5}, n_neighbors=1), float)
PY
- name: FAISS model smoke tests
run: uv run python -m pytest tests/models/test_distance_knn.py -q
integration-smoke:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v7
- name: Install uv
uses: astral-sh/setup-uv@v7
- name: Install Python
run: uv python install 3.11
- name: Install dependencies
run: uv sync --extra dev
- name: Integration smoke
run: uv run python -m pytest tests/test_public_imports_base.py tests/test_public_imports_extras.py tests/integration -q
coverage:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v7
- name: Install uv
uses: astral-sh/setup-uv@v7
- name: Install Python
run: uv python install 3.11
- name: Install dependencies
run: uv sync --extra dev
- name: Coverage
run: uv run python -m pytest tests/models tests/drift tests/transformers --cov=aberrant --cov-report=xml --cov-report=term-missing -q
- name: Upload coverage artifact
uses: actions/upload-artifact@v7
with:
name: coverage-xml
path: coverage.xml
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v7
- name: Install uv
uses: astral-sh/setup-uv@v7
- name: Install Python
run: uv python install 3.11
- name: Build sdist and wheel
run: uv build