- Added
executable_pathparameter to write_docx() method. - Added
/tmp/sofficeand/tmp/libreofficepaths for Linux.
- Added
concatenate_docxfunction to merge DOCX outputs without manual field refreshes, preserving per-section orientation (#160).
- Added DOCX concatenation coverage and centralized optional dependency
skip markers for
python-docxand LibreOffice to keep tests gated appropriately (#160).
- Updated the assembly article to use
concatenate_docxin code examples and added a reference page for assemble function to the mkdocs site (#160).
- 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).
- 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).
- Reduced packaging files size by excluding unnecessary files and directories (#152).
- Fixed an issue when paginating tables with
page_byandsubline_by(#152).
- Added
assemble_rtfandassemble_docxfunctions for RTF and DOCX assembly (#142).
- Fixed an issue where
RTFPageorientation was not correctly respected during assembly in certain edge cases (#141).
- Removed legacy pagination/encoding APIs, including
ContentDistributor,PageDict/AdvancedPaginationService, and theSinglePageStrategy/PaginatedStrategyclasses; dropped backwards-compatibility helpers such astext_convertandget_color_index(#138).
- 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).
- 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).
- Fixed
page_bypagination when usingRTFPage(orientation="landscape"), covering single- and multi-page tables and aligning documentation examples (#128, #131, #134).
- Added GitHub Actions workflow to run
ruff checkfor code linting, updated GitHub Actions workflows to useactions/checkout@v6, and updated badges inREADME.md(#133).
- Enhanced group-by divider filtering functionality to support the
-----syntax (#118).
- Fixed text conversion issue for greater than or equal (>=) and less than or equal (<=) symbols (#119).
- Added Python 3.14 support by conditionally requiring pyarrow >= 22.0.0 under Python 3.14 (#114).
- 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).
- Added pharmaverse badge to the README (#108).
- Added
AGENTS.mdwith guidelines for AI coding agents (#109).
- 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).
- 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).
- Added a developer script to compare current RTF outputs with snapshots generated from mkdocs site articles (#102).
- Updated
CLAUDE.mdto replace outdated.qmd-based rendering instructions with the markdown-exec approach (#93).
- Fixed hard-coded font in pagination calculations to properly use user-selected fonts (#91).
- Lowered minimum Pillow version to 8.0.0 with automatic font size type
coercion to
intfor Pillow < 10.0.0 compatibility (#89).
- Improved readability and technical accuracy of documentation (#85, #86, #87).
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.
-
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
-
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.
- 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.
- 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.
- Added single-page RTF tests with fixtures generated by r2rtf.
- Added extensive multi-page tests for the
as_tablefeature.
- 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).
- Remove the strict version requirement for the development dependency mkdocs-autorefs (#21).
- Manage project with uv (#19).
- Update the logo image generation workflow to use web fonts (#18).
- Use absolute URL to replace relative path for logo image in
README.md, for proper rendering on PyPI (#16).
- 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.
- Added an article on creating baseline characteristics tables.
- Integrated code coverage reports via pytest-cov into the documentation site.