Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
83b2bb7
refactor: make xorq an optional dependency (extra)
deepyaman Jun 13, 2026
76cb4dc
fix: tighten any post-optionalization housekeeping
deepyaman Jun 13, 2026
7e88f23
fix: align test-no-xorq CI job with the main test job
deepyaman Jun 13, 2026
9a61507
fix: replace xo.window with ibis.window in test_chart.py
deepyaman Jun 13, 2026
e3c120d
refactor: restructure dev extra, drop self-referential bundle
deepyaman Jun 13, 2026
b6ce85f
fix: update CI install to skip xorq and examples extras
deepyaman Jun 13, 2026
b88fd7c
fix: skip xorq-dependent tests when xorq is not installed
deepyaman Jun 13, 2026
861ad2f
fix: replace xorq.vendor.ibis with plain ibis
deepyaman Jun 13, 2026
e12ae33
fix: update dependency group tests for new dev structure
deepyaman Jun 13, 2026
1d64bdb
fix: raise on undefined env vars in plain-ibis profiles
deepyaman Jun 13, 2026
4bbc547
fix: no-xorq parity for join rebinding and dimension-only shortcut
deepyaman Jun 13, 2026
5d97122
test: use xibis shim idiom for flavor-sensitive tests and demo
deepyaman Jun 13, 2026
05e7b4a
test: standardize xorq-only skips on importorskip; clarify pushdown x…
deepyaman Jun 13, 2026
dd2eb03
ci: parametrize test job over xorq extras; split build into its own job
deepyaman Jun 13, 2026
a2b367d
chore: minimize lockfile churn; document test-core extra
deepyaman Jun 14, 2026
d74c944
refactor: drop duplicated walk_nodes fallback; trim rebinding comments
deepyaman Jun 14, 2026
8d1fbc6
ci: self-skip integration dir without xorq via collect_ignore_glob
deepyaman Jun 14, 2026
b649f34
docs: hyphenate xorq-vendored ibis; clarify walk_nodes stub rationale
deepyaman Jun 14, 2026
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
52 changes: 46 additions & 6 deletions .github/workflows/ci-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,43 @@ concurrency:
cancel-in-progress: ${{ github.event_name != 'release' }}

jobs:
# Run tests, examples, and build docs
# Run the test suite with and without the xorq extra. The no-xorq leg
# verifies xorq is truly optional (its tests skip, not error).
test:
name: Test & Build
name: Test (${{ matrix.name }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- name: full
sync: uv sync --all-extras
- name: no-xorq
sync: uv sync --all-extras --no-extra xorq --no-extra examples
steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Install uv
uses: astral-sh/setup-uv@v6
with:
enable-cache: true

- name: Install dependencies (${{ matrix.name }})
run: ${{ matrix.sync }}

- name: Verify import works
run: uv run python -c "import boring_semantic_layer; print('import OK')"

Comment on lines +50 to +52

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this necessary? Was something like this there before?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes — it predates this refactor: main's test-no-xorq job had a Verify import works without xorq step. It's a cheap smoke test that separates "the package does not import" from "a test failed" — especially meaningful for the no-xorq leg, whose whole purpose is proving BSL imports cleanly without xorq before the slower suite runs. The matrix just kept it. Happy to gate it to no-xorq only if you'd rather not have the (redundant) run on the full leg.

- name: Run tests
run: uv run pytest

# Build examples, docs, and skills (require the full env incl. Node).
build:
name: Build (examples + docs + skills)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
Expand All @@ -47,8 +81,14 @@ jobs:
uv sync --all-extras
cd docs/web && npm ci

- name: Run all checks (tests + examples + docs build)
run: make check
- name: Run examples
run: make examples

- name: Build docs
run: make docs-build

- name: Check skills are up to date
run: make skills-check

- name: Upload docs artifact
if: github.event_name == 'release'
Expand All @@ -60,7 +100,7 @@ jobs:
deploy-docs:
name: Deploy Docs
if: github.event_name == 'release'
needs: test
needs: [test, build]
runs-on: ubuntu-latest
environment:
name: github-pages
Expand All @@ -74,7 +114,7 @@ jobs:
release-pypi:
name: Release to PyPI
if: github.event_name == 'release'
needs: test
needs: [test, build]
runs-on: ubuntu-latest
environment:
name: release
Expand Down
17 changes: 14 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ dependencies = [
"pyyaml>=6.0",
"returns>=0.26.0",
"toolz>=1.0.0",
"xorq>=0.3.25",
]
urls = { Homepage = "https://github.com/boringdata/boring-semantic-layer/tree/main" }
license = "MIT"
Expand All @@ -26,7 +25,8 @@ bsl = "boring_semantic_layer.agents.cli:main"
bsl = "boring_semantic_layer.serialization.tag_handler:bsl_tag_handler"

[project.optional-dependencies]
examples = ["xorq[duckdb]>=0.3.4", "xorq", "duckdb<1.4"]
xorq = ["xorq>=0.3.25"]
examples = ["xorq[duckdb]>=0.3.25", "duckdb<1.4"]

# Visualization backends
viz-altair = ["altair>=5.0.0", "vl-convert-python>=1.0.0"]
Expand All @@ -51,11 +51,22 @@ server = [
"uvicorn[standard]>=0.30.0",
]

# Baseline test environment for the no-xorq CI leg: pulled in via
# `uv sync --all-extras` so the suite has a duckdb backend (and pyarrow)
# without depending on xorq or the examples extra.
test-core = [
"ibis-framework[duckdb]>=11.0.0",
"pytest",
"pandas>=2.3.0",
"pytest-asyncio",
]

dev = [
"boring-semantic-layer[agent,mcp,server,examples,viz-altair,viz-plotly,viz-plotext]",
# LLM provider clients needed to test agent backends (not user-facing extras)
"openai>=1.0.0",
"langchain-openai>=0.3.0",
"langchain-anthropic>=0.3.0",
# Developer tooling
"ruff>=0.6.7",
"pre-commit>=4.2.0",
"pytest",
Expand Down
Loading
Loading