Skip to content

Changelog

rtflite 1.0.2

Typing

  • Adopted modern typing best practices: use | unions instead of Union/Optional, and built-in generics instead of typing aliases (#95).
  • Resolved all mypy issues; type checks now pass cleanly (#97, #99, #101).
  • Added a mypy GitHub Actions workflow for continuous type checking (#100).

Testing

  • Added a developer script to compare current RTF outputs with snapshots generated from mkdocs site articles (#102).

Documentation

  • Updated CLAUDE.md to replace outdated .qmd-based rendering instructions with the markdown-exec approach (#93).

rtflite 1.0.1

Bug fixes

  • Fixed hard-coded font in pagination calculations to properly use user-selected fonts (#91).

Dependencies

  • Lowered minimum Pillow version to 8.0.0 with automatic font size type coercion to int for Pillow < 10.0.0 compatibility (#89).

Documentation

  • Improved readability and technical accuracy of documentation (#85, #86, #87).

rtflite 1.0.0

This major release marks rtflite as production-ready for table, listing, and figure generation in RTF format. It introduces advanced pagination features, enhanced group handling, complete color support, and significant architectural improvements for better maintainability and performance.

New features

  • Advanced pagination features

    • Added the subline_by parameter for creating paragraph headers before each page group.
    • Enhanced group_by functionality with hierarchical value suppression within groups.
    • Implemented page context restoration for multi-page tables with group_by.
  • Enhanced color system

    • Complete 657-color support with full r2rtf R package compatibility.
  • Text conversion improvements

    • Text conversion (LaTeX to Unicode) enabled by default for all components.
    • Better handling of special characters and symbols.
    • Enhanced validation for text conversion operations.
  • Table formatting

    • Added the as_table parameter for RTFFootnote and RTFSource components.
    • Auto-inheritance of col_rel_width from rtf_body to rtf_column_header.
    • Improved handling of table borders and footnote placement.

Architecture improvements

  • Service-oriented architecture

    • Introduced dedicated service layer for complex operations.
    • Implemented strategy pattern for encoding (SinglePageStrategy, PaginatedStrategy).
    • Created RTFEncodingEngine for strategy orchestration.
  • Code organization

    • Consolidated constants and eliminated magic numbers throughout the codebase.
    • Method decomposition and improved input validation.
    • Cleaner public interfaces with thorough error handling.

Dependency changes

  • Removed numpy and pandas as hard dependencies.
  • Moved pyarrow to development dependencies.
  • Now uses narwhals for DataFrame abstraction.
  • Prefer polars as the primary DataFrame interface.

Documentation

  • Added vignette-style articles to document the new features.
  • Reorganized API reference for better user experience.
  • Renamed documentation files to use hyphens consistently.
  • Updated all examples to use modern best practices.
  • Fixed Polars DataOrientationWarning in documentation examples.

Testing

  • Added single-page RTF tests with fixtures generated by r2rtf.
  • Added extensive multi-page tests for the as_table feature.

rtflite 0.1.3

Documentation

  • Add contributing guidelines to make it easy for onboarding new developers to the recommended development workflow (#25).
  • Update README.md to add hyperlink to the R package r2rtf (#24).

Maintenance

  • Remove the strict version requirement for the development dependency mkdocs-autorefs (#21).

rtflite 0.1.2

Maintenance

  • Manage project with uv (#19).
  • Update the logo image generation workflow to use web fonts (#18).

rtflite 0.1.1

Documentation

  • Use absolute URL to replace relative path for logo image in README.md, for proper rendering on PyPI (#16).

rtflite 0.1.0

New features

  • Introduced core RTF document components, such as RTFDocument, RTFPage, RTFTitle, RTFColumnHeader, and RTFBody. These classes establish the foundation for composing structured RTF documents with a text encoding pipeline. Use Pydantic for data validation.
  • Implemented string width calculation using Pillow with metric-compatible fonts. This will be incorporated in the pagination and layout algorithms in future releases.
  • Implemented a LibreOffice-based document converter for RTF to PDF conversion with automatic LibreOffice detection mechanisms under Linux, macOS, and Windows.

Documentation

  • Added an article on creating baseline characteristics tables.
  • Integrated code coverage reports via pytest-cov into the documentation site.