Skip to content

35 trendify 20#36

Open
Hydrowelder wants to merge 14 commits into
mainfrom
35-trendify-20
Open

35 trendify 20#36
Hydrowelder wants to merge 14 commits into
mainfrom
35-trendify-20

Conversation

@Hydrowelder

@Hydrowelder Hydrowelder commented Jul 6, 2026

Copy link
Copy Markdown
Collaborator

This PR would move trendify to its 2.0.0.

Changed

Core

  • Now formally supporting Python 3.14
  • Versioning is now controlled by hatchling-vcs (when a new tag "vX.Y.Z" is pushed to main the test+publish CI/CD automatically fires)
  • Overhauled the pipeline for running and processing data products (now called records to reduce confusion)
    • Records are stored in a SQLite database with concurrent write protection for multiprocessing
      • Records are no longer serialized as JSON in the input directories
      • Records are no longer sorted and duplicated into a data_products folder
      • This change cut the storage required (and therefore runtime) more than in half
    • SQLite database allows for better tag indexing and the reduced file size greatly improves runtime
  • Format2D now supports a new renderer with options currently Raster (for JPG (default), PNG, etc.) and Vector (SVG)
  • Logger has been completely redone to use Rich logs and a rolling file backup
    • This includes a fix for concurrent logs being broken on Windows
  • The CLI was completely rewritten using typer to allow for better scalability

Asset Generator

  • Scatter2D was added as another option (Trace2D can also now optionally have no line style)
  • Histograms can now be plotted with Trace2D, Point2D, and Scatter2D (previously they could only have AxLine)
  • Table maker now uses polars instead of pandas
  • Overhauled the previous interactive dashboard tool to use the new DB and also rewrote it to work as a FastAPI app (removing streamlit)
    • The new dashboard is much more performant, user friendly, and now also include table views for TableEntry records
    • It also comes with light/dark/system theming and a proper toast/notification system

Misc.

  • Example data generator was updated to provide more "interesting" data (it is also now part of the trendify CLI namespace)
  • The documentation site was transitioned to Zensical and branding was updated across the package
    • User guide was rewritten to summarize how to use trendify and now include examples of the assets it produces
    • The README/index was updated to match one another
    • This also updated the CI/CD
  • Pyright and Ruff are now part of the pre-commit to improve code quality
  • Improved __init__.py to match PEP 8
  • Added a bunch of unit tests

Broke

  • Format2D is now its own tagged Record (no longer an attribute of Trace2D, Point2D, etc.)
    • This also removed the slow, and seldom used, union step that would be performed on every Format2D for every run
    • Breaking this greatly reduces the DB size, especially since it usually just stored redundant information
  • Trace2D.from_xy was removed since Point2D was removed from it (Trace2D now instantiated the same way as all other types)
  • Trace2D was optimized to remove the ability to set a different style for each Point2D (which actually was never even possible but this includes a schema change)
  • trendify_make_sample_data CLI exe moved to trendify (see Misc change)
  • Python 3.11 no longer supported due to old generic typing system

@Hydrowelder Hydrowelder linked an issue Jul 6, 2026 that may be closed by this pull request
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Trendify 2.0

1 participant