Changelog¶
rtflite 2.3.0¶
New features¶
- Added
concatenate_docxfunction to merge DOCX outputs without manual field refreshes, preserving per-section orientation (#160).
Testing¶
- Added DOCX concatenation coverage and centralized optional dependency
skip markers for
python-docxand LibreOffice to keep tests gated appropriately (#160).
Documentation¶
- Updated the assembly article to use
concatenate_docxin code examples and added a reference page for assemble function to the mkdocs site (#160).
rtflite 2.2.0¶
New features¶
- Added
RTFDocument.write_docxto export tables as DOCX via LibreOffice, withstr/Pathinput support and automatic parent directory creation (#156). - Improved
write_rtfto acceptPathinputs and create missing output directories (#156).
Documentation¶
- Expanded DOCX assembly guidance with toggle field caveats and
python-docxconcatenation examples (#157). - Documented installing the
docxextra in the README and assemble article, includinguv sync --extra docxfor developers (#155).
rtflite 2.1.1¶
Bug fixes¶
- Reduced packaging files size by excluding unnecessary files and directories (#152).
- Fixed an issue when paginating tables with
page_byandsubline_by(#152).
rtflite 2.1.0¶
New features¶
- Added
assemble_rtfandassemble_docxfunctions for RTF and DOCX assembly (#142).
Bug fixes¶
- Fixed an issue where
RTFPageorientation was not correctly respected during assembly in certain edge cases (#141).
rtflite 2.0.0¶
Breaking changes¶
- Removed legacy pagination/encoding APIs, including
ContentDistributor,PageDict/AdvancedPaginationService, and theSinglePageStrategy/PaginatedStrategyclasses; dropped backwards-compatibility helpers such astext_convertandget_color_index(#138).
Refactors¶
- Introduced a unified rendering pipeline (
UnifiedRTFEncoder) with a strategy registry, page feature processor, and renderer that handle pagination, borders, and page headers consistently, including combinedpage_byandsubline_bygrouping (#138). - Simplified public exports by re-exporting
RTFEncodingEngine,TableAttributes,RTFSubline, andget_string_widthfrom the top-level package while reorganizing core config/constants imports (#138).
Testing and documentation¶
- Added regression tests for combined grouping and
page_bycolumn alignment, and removed obsolete advanced pagination tests; cleaned up RTF doc fixtures and trimmed pagination reference docs to match the new architecture (#138).
rtflite 1.2.0¶
Bug fixes¶
- Fixed
page_bypagination when usingRTFPage(orientation="landscape"), covering single- and multi-page tables and aligning documentation examples (#128, #131, #134).
Maintenance¶
- Added GitHub Actions workflow to run
ruff checkfor code linting, updated GitHub Actions workflows to useactions/checkout@v6, and updated badges inREADME.md(#133).
rtflite 1.1.1¶
New features¶
- Enhanced group-by divider filtering functionality to support the
-----syntax (#118).
Bug fixes¶
- Fixed text conversion issue for greater than or equal (>=) and less than or equal (<=) symbols (#119).
rtflite 1.1.0¶
Python version support¶
- Added Python 3.14 support by conditionally requiring pyarrow >= 22.0.0 under Python 3.14 (#114).
Linting and typing¶
- Added ruff linter configuration to
pyproject.tomlwith popular rule sets and fixed all linting issues (#115). - Refactored type annotations to use built-in generics and abstract base classes following modern typing best practices (#107).
Documentation¶
- Added pharmaverse badge to the README (#108).
- Added
AGENTS.mdwith guidelines for AI coding agents (#109).
Maintenance¶
- Updated GitHub Actions workflows to use the latest
checkoutandsetup-pythonversions (#114). - Refactored the logo generation script to use ImageMagick, removing the R and hexSticker dependency (#111).
rtflite 1.0.2¶
Typing¶
- Adopted modern typing best practices: use
|unions instead ofUnion/Optional, and built-in generics instead oftypingaliases (#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.mdto 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
intfor 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_byparameter for creating paragraph headers before each page group. - Enhanced
group_byfunctionality with hierarchical value suppression within groups. - Implemented page context restoration for multi-page tables with
group_by.
- Added the
-
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_tableparameter forRTFFootnoteandRTFSourcecomponents. - Auto-inheritance of
col_rel_widthfromrtf_bodytortf_column_header. - Improved handling of table borders and footnote placement.
- Added the
Architecture improvements¶
-
Service-oriented architecture
- Introduced dedicated service layer for complex operations.
- Implemented strategy pattern for encoding (
SinglePageStrategy,PaginatedStrategy). - Created
RTFEncodingEnginefor 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
DataOrientationWarningin documentation examples.
Testing¶
- Added single-page RTF tests with fixtures generated by r2rtf.
- Added extensive multi-page tests for the
as_tablefeature.
rtflite 0.1.3¶
Documentation¶
- Add contributing guidelines to make it easy for onboarding new developers to the recommended development workflow (#25).
- Update
README.mdto 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, andRTFBody. 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.