Skip to content

v0.3.0: Hardening pass

Choose a tag to compare

@Vinicius-Teixeirac Vinicius-Teixeirac released this 28 Jul 13:45
· 292 commits to main since this release

Added

  • Documentation site (MkDocs Material), deployed to GitHub Pages
  • docs/filtered-sampling.md and docs/recipes.md, replacing the old standalone guide and example scripts
  • GitHub Actions CI: Ruff + Pyright, tests on Python 3.10 and 3.12, and a package-build check on every push/PR to main
  • Pre-commit hooks: Ruff on every commit, Pyright and pytest on every push
  • Unit test coverage for filter.py, samplers.py, indexer.py, and rng.py, including the reservoir-sampling and filter AND/OR DSL logic, which previously had none
  • Community health files: Code of Conduct, Contributing guide, Security policy (private vulnerability reporting), issue templates, pull request template
  • World-on-anvil emblem as the project's brand mark
  • PyPI-readiness metadata in pyproject.toml (authors, keywords, classifiers, project URLs)
  • hatch-vcs-based versioning

Changed

  • Relicensed from MIT to Apache License 2.0
  • README's "Known Limitations" and "Roadmap" sections consolidated into a single docs-site page instead of two independently-drifting copies
  • scrape, convert, and filter now exit non-zero and report failed files instead of silently discarding partial failures

Removed

  • filtered_sampling_guide.md, sample.example.sh, sample.example.cmd (content moved into the docs site)

Fixed

  • CI silently installed the wrong Python version, since setup-uv has no python-version input (now passed via uv sync --python)
  • Various Ruff and Pyright findings across the codebase
  • _is_gdelt_dataset_file matched same-length non-ZIP files (e.g. 2020.csv) as monthly/yearly GDELT archives, since it only checked the digit-prefix length and never verified the .zip suffix
  • Sample output (gdeltforge sample) was written directly to its destination path, so a process killed mid-write could leave a corrupt or empty file there with no indication anything was wrong; sample output and scraped downloads now write atomically via a temp file, and warn instead of silently overwriting a leftover incomplete file from a previous interrupted run

Full Changelog: v0.2.0...v0.3.0