Repository navigation
Release Summary
This release fixes emoji rendering in ASCII tables and migrates the project to a modern uv-based packaging setup.
Core changes:
-
Replaced str.format() padding with a manual _pad() method that respects visual character widths, fixing broken table borders when emojis are present
-
Added a robust _len() implementation that counts emojis, CJK wide characters, and zero-width combining marks/variation selectors as 2 columns
Bug fixes:
-
Fixed create() mutating self.width on every render call, making it idempotent
-
Added row length validation — now raises ValueError if a row doesn't match the header's column count
Packaging:
- Migrated from setup.py to pyproject.toml with uv_build backend
- Configured flat package layout (module-root = ".", module-name = "tableascii") so no src/ directory is needed
- Added PEP 639 license fields (license + license-files)
- Removed stale [project.scripts] entry that referenced a nonexistent main function
- Python requirement lowered to >=3.6
Testing:
- Added 6 targeted tests covering basic tables, emoji alignment, multiple emojis, idempotency, CJK characters, and mixed content
CI/CD:
- Added .github/workflows/python-publish.yml that builds on every push to main and publishes to PyPI on release publication