Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
6 changes: 4 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ jobs:
# guest).
- name: Set up WSL (Windows)
if: matrix.os == 'windows-latest'
uses: Vampire/setup-wsl@887f39deb6c0976365e546926fe66f41b77d65ff # v6.1.0
uses: Vampire/setup-wsl@d1da7f2c0322a5ee4f24975344f67fc0f5baf364 # v7.0.0
with:
distribution: Ubuntu-24.04
additional-packages: |
Expand All @@ -107,6 +107,8 @@ jobs:
- name: install Spice in WSL (Windows)
if: matrix.os == 'windows-latest'
shell: wsl-bash {0}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
curl https://install.spiceai.org | /bin/bash
$HOME/.spice/bin/spice install
Expand Down Expand Up @@ -220,7 +222,7 @@ jobs:
pytest --cov=spicepy --cov-report=xml --cov-report=term-missing --ignore=tests/test_main.py tests/
- name: Upload coverage to Codecov
if: matrix.python-version == '3.12'
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v4.5.0
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
with:
files: ./coverage.xml
fail_ci_if_error: false
Expand Down
35 changes: 26 additions & 9 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ readme = "README.md"
license = {text = "Apache-2.0"}
requires-python = ">=3.11"
dependencies = [
"pyarrow>=23.0.1",
"pyarrow>=24.0.0",
"pandas>=3.0.2",
"certifi>=2026.2.25",
"certifi>=2026.4.22",
"requests>=2.33.1",
]
authors = [
Expand Down Expand Up @@ -41,26 +41,30 @@ Issues = "https://github.com/spiceai/spicepy/issues"
test = [
"pylint>=4.0.5",
"flake8>=7.3.0",
"ruff>=0.15.10",
"mypy>=1.20.0",
"ruff>=0.15.12",
"mypy>=1.20.2",
"pytest>=9.0.3",
"pytest-cov>=7.1.0",
"pytest-xdist>=3.8.0",
"pytest-timeout>=2.4.0",
"pytest_httpserver==1.1.5",
"types-requests>=2.33.0",
"pandas-stubs>=3.0.0",
"types-requests>=2.33.0.20260408",
"pandas-stubs>=3.0.0.260204",
"black>=26.3.1",
"bandit>=1.9.4",
"pandas>=3.0.2",
"pyarrow>=23.0.1",
"pyarrow>=24.0.0",
"adbc-driver-flightsql>=1.11.0",
"adbc-driver-manager>=1.11.0",
"polars>=1.0.0",
]
params = [
"adbc-driver-flightsql>=1.11.0",
"adbc-driver-manager>=1.11.0",
]
polars = [
"polars>=1.0.0",
]

# ============== Tool Configuration ==============

Expand Down Expand Up @@ -93,6 +97,8 @@ module = [
"adbc_driver_manager.*",
"certifi",
"pandas",
"polars",
"polars.*",
"_pytest.*",
"pytest.*",
]
Expand Down Expand Up @@ -185,6 +191,14 @@ ignore = [
"PLR2004", # Magic values ok in tests
"ARG", # Unused arguments ok in tests (fixtures)
"T20", # Print statements ok in tests
"N812", # `functions as F` is the DataFrame convention
"S608", # asserting SQL fragments is the point of these tests
]
"spicepy/_client.py" = [
"S608", # SQL is constructed from escaped identifiers/literals; lint can't tell
]
"spicepy/_dataframe.py" = [
"S608", # The DataFrame layer's entire job is composing SQL; identifiers and literals are escaped
]

[tool.ruff.lint.isort]
Expand Down Expand Up @@ -246,9 +260,12 @@ directory = "htmlcov"

[tool.bandit]
exclude_dirs = ["tests", ".venv"]
skips = ["B101"] # assert_used
skips = [
"B101", # assert_used
"B608", # hardcoded_sql_expressions: composing SQL with escaped identifiers/literals is this package's job
]

[dependency-groups]
dev = [
"build>=1.4.3",
"build>=1.4.4",
]
4 changes: 2 additions & 2 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
pyarrow>=23.0.1
pyarrow>=24.0.0
pandas>=3.0.2
certifi>=2026.2.25
certifi>=2026.4.22
requests>=2.33.1
14 changes: 14 additions & 0 deletions spicepy/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,19 @@
"""

# flake8: noqa
from . import functions
from ._client import Client
from ._dataframe import SpiceDataFrame
from ._expr import Expr, case, col, lit
from ._http import RefreshOpts

__all__ = [
"Client",
"Expr",
"RefreshOpts",
"SpiceDataFrame",
"case",
"col",
"functions",
"lit",
]
Loading
Loading