Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
2629f6f
ci: Added the compatability matrix workflow
shacharlevy1991 Dec 17, 2025
cf619a4
ci: Added option to run on pr for testing
shacharlevy1991 Dec 17, 2025
e703e0e
ci: try installing dev dependencies separately
shacharlevy1991 Dec 17, 2025
bad59b5
ci: try installing packages globally since each runner is isolated
shacharlevy1991 Dec 17, 2025
8e1a323
ci: replace list of requirements to a text file instead of a list
shacharlevy1991 Dec 17, 2025
82527bd
ci: Added the missing dev-deps.txt file
shacharlevy1991 Dec 17, 2025
b0fac3a
ci: fixed missing install command
shacharlevy1991 Dec 17, 2025
fa52068
ci: Removed cache to see if it affects versions installed
shacharlevy1991 Dec 17, 2025
f4aff90
ci: Try running pip install not from a whl file so lowest deps are in…
shacharlevy1991 Dec 17, 2025
16d0892
ci: Try installing dev deps only using poetry
shacharlevy1991 Dec 17, 2025
bc45ca8
ci: Install dependencies and straight from source instead of wheel file
shacharlevy1991 Dec 17, 2025
a5d1be9
ci: Fixed command for latest
shacharlevy1991 Dec 17, 2025
e0f0612
ci: Try highest flag
shacharlevy1991 Dec 18, 2025
8ac6a17
ci: fixed uv command
shacharlevy1991 Dec 18, 2025
a2cbf01
ci: add the --system flag to uv
shacharlevy1991 Dec 18, 2025
41ca722
ci: Removed the pull_reuest trigger
shacharlevy1991 Dec 18, 2025
20df96b
ci: Removed requirements file
shacharlevy1991 Dec 18, 2025
3e22177
added a newline
shacharlevy1991 Dec 18, 2025
46092e2
Reordered so dev depdendencies are installed after runtime and do not…
shacharlevy1991 Dec 23, 2025
45c0d94
Created a script to generate fixed dev dependencies list
shacharlevy1991 Dec 23, 2025
d6bae31
Created a script to generate fixed dev dependencies list
shacharlevy1991 Dec 23, 2025
5627e07
Fixed script file path
shacharlevy1991 Dec 23, 2025
356c4cf
Change chmod path
shacharlevy1991 Dec 23, 2025
60c168f
Try GITHUB_WORKSPACE instead
shacharlevy1991 Dec 23, 2025
54605ed
Fixed file name
shacharlevy1991 Dec 23, 2025
5dc89e6
Removed trailing slash
shacharlevy1991 Dec 23, 2025
b28429b
Removed dot
shacharlevy1991 Dec 23, 2025
0367f39
Add --system flag to uv
shacharlevy1991 Dec 23, 2025
4514104
Created a python script
shacharlevy1991 Dec 24, 2025
10351ab
Fixed script name
shacharlevy1991 Dec 24, 2025
ac29a7b
Added a version skew for pyarrow dependency
shacharlevy1991 Dec 24, 2025
87daccc
Update system deps to include libopenblas package
shacharlevy1991 Dec 24, 2025
aff1b72
Added missing sudo
shacharlevy1991 Dec 24, 2025
e1b3e58
Fixed python script to pass linting
shacharlevy1991 Dec 24, 2025
9925f63
Reverted to build packages from source and instead install wheel
shacharlevy1991 Dec 24, 2025
044bcd2
Fixed more ruff lints
shacharlevy1991 Dec 24, 2025
2baf921
Fixed even more ruff lints
shacharlevy1991 Dec 24, 2025
d6a6ad4
Update compatability-matrix.yml
shacharlevy1991 Dec 24, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions .github/workflows/compatability-matrix.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
name: Dependency Compatability Matrix
on:
# schedule:
# - cron: "0 3 * * *" # daily
workflow_dispatch:


jobs:
test-dependency-matrix:
runs-on: ubuntu-latest

strategy:
fail-fast: false
matrix:
python-version: ["3.12", "3.13", "3.14"]
dep-mode: ["lowest", "latest"]

name: Python ${{ matrix.python-version }} / ${{ matrix.dep-mode }} deps

steps:
- uses: actions/checkout@v4

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}

- name: Install Poetry
uses: snok/install-poetry@v1
with:
version: "2.0.1"
virtualenvs-create: false
installer-parallel: true

- name: Install uv
run: |
python -m pip install --upgrade pip setuptools wheel
pip install uv

- name: Generate development dependencies list
run: |
python ${GITHUB_WORKSPACE}/ci/scripts/generate_dev_deps.py

- name: Install package (latest dependency versions)
if: matrix.dep-mode == 'latest'
run: |
uv pip install --system --resolution highest --upgrade .
uv pip install --system -r requirements-dev.txt

- name: Install package (oldest supported dependency versions)
if: matrix.dep-mode == 'lowest'
run: |
uv pip install --system --resolution=lowest-direct .
uv pip install --system -r requirements-dev.txt

- name: Run tests
run: |
poetry run python -m pytest
Empty file added ci/scripts/__init__.py
Empty file.
77 changes: 77 additions & 0 deletions ci/scripts/generate_dev_deps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
#!/usr/bin/env python3

import tomllib
from pathlib import Path


def caret_to_pip(name: str, spec: str) -> str:
"""Convert Poetry caret constraints to pip-compatible ranges.

Examples:
^1.18.2 -> >=1.18.2,<2.0.0
^0.12.11 -> >=0.12.11,<0.13.0
^0.0.5 -> >=0.0.5,<0.0.6
"""
if not spec.startswith('^'):
return f'{name}{spec}'

version = spec[1:]
parts = version.split('.')

num_version_parts = 3

while len(parts) < num_version_parts:
parts.append('0')

major, minor, patch = map(int, parts[:3])

if major > 0:
upper = f'{major + 1}.0.0'
elif minor > 0:
upper = f'0.{minor + 1}.0'
else:
upper = f'0.0.{patch + 1}'

return f'{name}>={version},<{upper}'


def normalize_dep(name: str, spec: str) -> str:
"""Normalize a Poetry dependency entry into pip-compatible syntax."""
if isinstance(spec, dict):
spec = spec.get('version', '')
spec = spec.strip()

if not spec:
return name

return caret_to_pip(name, spec)


def main() -> None:
pyproject_path = Path('pyproject.toml')

if not pyproject_path.exists():
raise FileNotFoundError('pyproject.toml not found')

with pyproject_path.open('rb') as f:
data = tomllib.load(f)

dev_deps = (
data
.get('tool', {})
.get('poetry', {})
.get('group', {})
.get('dev', {})
.get('dependencies', {})
)

output = Path('requirements-dev.txt')

with output.open('w') as f:
for name, spec in dev_deps.items():
line = normalize_dep(name, spec)
f.write(f'{line}\n')


if __name__ == '__main__':
main()
4 changes: 2 additions & 2 deletions poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,10 @@ packages = [{include = "agentune"}]
[tool.poetry.dependencies]
python = "^3.12.6"
duckdb = ">=1.4.1,<1.5.0"
pyarrow = ">=19.0.1"
pyarrow = [
{ version = ">=19.0.1", python = "<3.14" },
{ version = ">=22.0.0", python = ">=3.14" }
]
numpy = "^2.2.4"
janus = "^2.0.0"
polars = "^1.27.1"
Expand Down