Improve grapheme and emoji flags (regional indicators) support #206
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Replacing grapheme_clusters with wcwidth.iter_grapheme() (new in wcwidth 0.3.0), we are able to correct a few errors shown by these new tests:
FAILED tests/test_screen.py::test_flag_emoji_40_in_80_columns - AssertionError: assert '🇺' == '🇺🇸'
FAILED tests/test_screen.py::test_grapheme_cluster_in_context[hangul_lv] - AssertionError: assert 'ᄀ' in ('가', '각', 'f')
FAILED tests/test_screen.py::test_grapheme_cluster_in_context[hangul_lvt] - AssertionError: assert '가' in ('가', '각', 'f')
FAILED tests/test_screen.py::test_regional_indicator_graphemes - AssertionError: assert '🇺' == '🇺🇸'
Also, wcwidth is now fully typed, so
# type: ignore[import-untyped]is removedAnd there have been many performance improvements in recent releases to benefit from ! As well as support for more complex languages (Brahmic scripts) and wcwidth.iter_grapheme() supports all of the world's languages, whereas the current implementation appears focused only on emoji