Vendor wcwidth using python's unicodedata #199
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.
This commit replaces wcwidth dependency by a simple vendored module, leveraging python's built-in unicodedata.
Notes:
wcwidth()
function, provided by wcwidth library, is already decorated withlru_cache(100)
. Hence following line wraps lru-cached function into another duplicated lru-cache layer, which may cause significant overhead.performance of vendored
wcwidth()
function is more or less equal to that provided bywcwidth
package.this change turns pyte into a self-contained library.
only possible downside is supported unicode version being bound/limited to that of used python interpreter. But that's probably rather minor as the interpreter wouldn't be able to decode more recent unicode chars anyway.
Benchmarks:
Credits:
The implementation is borrowed from pytest and slightly tweaked.