Skip to content

v8.1.0

Latest

Choose a tag to compare

@AzisK AzisK released this 20 Jan 12:05
· 4 commits to master since this release
3e3f0d3

Build System Migration: Poetry → uv + Hatch

  • Rewrote pyproject.toml using PEP 621 standard format
  • Replaced Poetry's poetry.lock with uv.lock
  • Switched build backend from poetry.core.masonry.api to hatchling.build
  • Removed legacy configuration files: setup.py, setup.cfg, tox.ini, .coveragerc
  • Removed individual requirements files (requirements.txt, requirements-dev.txt, requirements-extras-*.txt)
  • Consolidated all configuration (coverage, pytest, linting) into pyproject.toml

CI/CD Improvements

  • New unified ci.yml workflow replaces black.yml and pythonpackage.yml
    • Updated to GitHub Actions v5 (checkout@v5, setup-uv@v5)
    • Expanded test matrix: Python 3.9, 3.10, 3.11, 3.12, 3.13, 3.14
    • Coverage reporting runs on Python 3.13
  • New release.yml workflow for automated PyPI publishing using OIDC trusted publishing
  • Switched linting from Black to Ruff (same 120 char line length, quote style preserved)

Pandas 2.x Compatibility Fixes

  • Fixed deprecated DataFrame.applymap()DataFrame.map() throughout codebase
  • Added future.no_silent_downcasting option context to avoid FutureWarnings
  • Fixed groupby() level parameter to use scalar when single level
  • Added infer_objects(copy=False) after fillna for proper dtype inference
  • Convert DataFrame to object dtype before applying string formatting in pandas widget

PyPika Compatibility

  • Updated pypika dependency: 0.48.2 (pinned) → >=0.50.0,<1.0.0
  • Fixed test assertions for PyPika's NULL keyword formatting change

Other Changes

  • Added pre-commit configuration with Ruff hooks for linting and formatting
  • Relaxed pandas dependency: ==2.0.3 (pinned) → >=2.0.0
  • Relaxed toposort dependency: ==1.6 (pinned) → >=1.6,<2
  • Updated psycopg2-binary dependency: >=2.9.0>=2.9.11 (adds Python 3.14 support)
  • Dropped Python 3.8 support; minimum Python version is now >=3.9 (required by psycopg2-binary 2.9.11 and pandas 2.x)
  • Snowflake extra is temporarily unavailable on Python 3.14 (upstream snowflake-connector-python requires cffi<2, which lacks Python 3.14 wheels); Snowflake tests gracefully skip when dependencies are missing
  • Fixed invalid escape sequence in type_engine.py (was SyntaxWarning, will be error in Python 3.16)
  • Removed dead code from Snowflake database module
  • Configured Ruff to ignore intentional patterns (re-exports in __init__.py, star imports in tests)
  • Applied Ruff formatting to codebase
  • Fixed duplicate test method in test_build_filters.py
  • Fixed duplicate import in test_references.py
  • Snowflake: Moved cryptography.hazmat imports inside method for lazy loading
  • Version now read from package metadata using importlib.metadata.version()
  • Fixed filter_nones() to use lambda instead of None.__ne__
  • Added CLAUDE.md with project overview and development commands
  • Added Snowflake and MSSQL database extras to setup documentation
  • Added Snowflake database configuration example to documentation
  • Removed test API documentation files from docs

What's Changed

  • SEOD-1326. Bump fireant to pandas version 2 by @AzisK in #366
  • Bump urllib3 from 1.26.16 to 1.26.17 by @dependabot[bot] in #367
  • SEOD-811. Make filtering of date totals in highcharts more flexible by @AzisK in #369
  • SEOD-1531. Fix dataframe sort with a pivot with the new pandas v2 API by @AzisK in #371
  • Seod 2756 update fireant dependencies by @AzisK in #375
  • Lint-PR-375 by @AzisK in #376

New Contributors

Full Changelog: v7.9.0...v8.1.0