Skip to content
Draft
Show file tree
Hide file tree
Changes from 9 commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
24fa83b
Replace SQLAlchemy with ibis-framework for all database operations
daniel-thom Apr 8, 2026
26393c7
Fix review issues: cleanup safety, column ordering, schema uniqueness
daniel-thom Apr 9, 2026
6584bd4
Address PR comments
daniel-thom Apr 9, 2026
0eede6f
Fix spark functionality
daniel-thom Apr 10, 2026
afd1a8f
Code cleanup
daniel-thom Apr 10, 2026
0e71e9a
Code cleanup
daniel-thom Apr 10, 2026
cc44ef3
Code cleanup
daniel-thom Apr 10, 2026
177ca7e
Code cleanup
daniel-thom Apr 10, 2026
a6f710b
Fix CI
daniel-thom Apr 10, 2026
184317b
Address PR comments
daniel-thom Apr 10, 2026
874ebd0
Add test coverage
daniel-thom Apr 10, 2026
7ca977b
Fix dispose in owned session
daniel-thom Apr 10, 2026
650a506
Fix tests
daniel-thom Apr 11, 2026
b4f2d6a
Spark fixes
daniel-thom Apr 11, 2026
bfc2684
Fix CI failures
daniel-thom Apr 11, 2026
ed8c2a2
Increase test coverage
daniel-thom Apr 11, 2026
472d7bc
Address PR review feedback
daniel-thom Apr 12, 2026
cdcef84
Update lab name
daniel-thom Apr 12, 2026
5ec2b2e
Spark fixes
daniel-thom Apr 12, 2026
827d849
Restore DuckDB native fetch_df path and limit cache invalidation to DDL
daniel-thom Apr 12, 2026
c2e8d06
Use transactions
daniel-thom Apr 12, 2026
63ea56a
Move per-backend I/O logic from functions.py into IbisBackend
daniel-thom Apr 12, 2026
04cffe0
Return ibis.Table from Store.read_query/read_table
daniel-thom Apr 12, 2026
652a7a2
Remove table cache and collapse pure-delegation backend methods
daniel-thom Apr 13, 2026
4cd5c4c
Fix mypy strict-mode errors in ibis backends
daniel-thom Apr 13, 2026
beaabc7
Use ibis to_parquet in backend write_parquet implementations
daniel-thom Apr 13, 2026
aaa08c3
Use Ibis natives in Store and drop chronify.duckdb helpers
daniel-thom Apr 13, 2026
42db94a
Apply schema-driven type casts to Store.read_table
daniel-thom Apr 13, 2026
fc3a69f
Delegate backend insert/view creation to Ibis natives
daniel-thom Apr 13, 2026
d43760f
Defer ibis.Table materialization through the write path
daniel-thom Apr 13, 2026
96bf822
Drop intermediate ymdh table even when apply_mapping fails
daniel-thom Apr 13, 2026
d176f59
Fix Spark test cleanup and period lookup
daniel-thom Apr 13, 2026
85423a1
Fix mypy error
daniel-thom Apr 13, 2026
cb1fe37
Restore docstrings on Store ingest and time-config methods
daniel-thom Apr 13, 2026
4eedfa2
Replace raw SQL with ibis expressions in checker and CSV reader
daniel-thom Apr 13, 2026
d7a4ce8
Fix UTC handling for Spark
daniel-thom Apr 14, 2026
280c950
Update docs
daniel-thom Apr 24, 2026
c6c7a6a
Refactor code
daniel-thom Apr 27, 2026
f7a52b8
Fix SQLite DDL atomicity and simplify transaction handling
daniel-thom Apr 27, 2026
17ca716
Make parquet promotion crash-safe
daniel-thom Apr 27, 2026
511cf7b
Make post-promotion backup cleanup non-fatal
daniel-thom Apr 27, 2026
6af444c
Harden post-failure cleanup and document Spark rollback limits
daniel-thom Apr 27, 2026
17bccf6
Restore _in_transaction type annotation for mypy
daniel-thom Apr 27, 2026
b03b41a
Fix Spark partitioned Parquet writes
daniel-thom Apr 27, 2026
e6755fb
Suppress pyarrow.compute attr-defined error for assume_timezone
daniel-thom Apr 27, 2026
0a8df8f
Address Copilot review: 'None' tz sentinel and cursor cleanup
daniel-thom Apr 28, 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
7 changes: 1 addition & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,9 @@ jobs:
run: |
python -m pip install --upgrade pip
python -m pip install ".[dev,spark]"
wget https://dlcdn.apache.org/spark/spark-4.0.1/spark-4.0.1-bin-hadoop3.tgz
tar -xzf spark-4.0.1-bin-hadoop3.tgz
export SPARK_HOME=$(pwd)/spark-4.0.1-bin-hadoop3
export PATH=$SPARK_HOME/sbin:$PATH
start-thriftserver.sh
- name: Run pytest with coverage
run: |
CHRONIFY_HIVE_URL=hive://localhost:10000/default pytest -v --cov --cov-report=xml
pytest -v --cov --cov-report=xml
- name: codecov
uses: codecov/codecov-action@v4.2.0
if: ${{ matrix.os == env.DEFAULT_OS && matrix.python-version == env.DEFAULT_PYTHON }}
Expand Down
28 changes: 12 additions & 16 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -27,24 +27,20 @@ classifiers = [
]
dependencies = [
"duckdb ~= 1.1.0",
"duckdb_engine",
"ibis-framework[duckdb,sqlite] >= 9.0",
"loguru",
"pandas >= 2.2, < 3",
"pyarrow",
"pydantic >= 2.7, < 3",
"pytz",
"rich",
"sqlalchemy == 2.0.37",
"tzdata",
# Required by pyhive
"future",
"python-dateutil",
]

[project.optional-dependencies]
spark = [
"thrift",
"thrift_sasl",
"ibis-framework[pyspark]",
"pyspark == 4.0.0",
]
Comment thread
daniel-thom marked this conversation as resolved.
Comment thread
daniel-thom marked this conversation as resolved.

dev = [
Expand All @@ -63,11 +59,6 @@ dev = [
"sphinx-tabs~=3.4",
]

[project.entry-points."sqlalchemy.dialects"]
hive = "pyhive.sqlalchemy_hive:HiveDialect"
"hive.http" = "pyhive.sqlalchemy_hive:HiveHTTPDialect"
"hive.https" = "pyhive.sqlalchemy_hive:HiveHTTPSDialect"

[project.urls]
Documentation = "https://github.com/NREL/chronify#readme"
Issues = "https://github.com/NREL/chronify/issues"
Expand All @@ -77,11 +68,17 @@ Source = "https://github.com/NREL/chronify"
files = [
"src",
]
exclude = [
"src/chronify/_vendor/*",
]
strict = true

[[tool.mypy.overrides]]
module = [
"ibis",
"ibis.*",
"pyarrow",
"pyarrow.*",
]
ignore_missing_imports = true

[tool.pytest.ini_options]
pythonpath = "src"
minversion = "6.0"
Expand All @@ -99,7 +96,6 @@ exclude = [
"dist",
"env",
"venv",
"src/chronify/_vendor/*",
]

line-length = 99
Expand Down
8 changes: 0 additions & 8 deletions src/chronify/__init__.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
import importlib.metadata as metadata
import sys

from chronify._vendor.kyuubi import TCLIService
from chronify._vendor.kyuubi import pyhive
from chronify.exceptions import (
ChronifyExceptionBase,
ConflictingInputsError,
Expand Down Expand Up @@ -61,8 +58,3 @@
)

__version__ = metadata.metadata("chronify")["Version"]


# Make pyhive importable as if it were installed separately.
sys.modules["pyhive"] = pyhive
sys.modules["TCLIService"] = TCLIService
201 changes: 0 additions & 201 deletions src/chronify/_vendor/kyuubi/LICENSE

This file was deleted.

12 changes: 0 additions & 12 deletions src/chronify/_vendor/kyuubi/README.md

This file was deleted.

Loading
Loading