Skip to main content

Python bindings for wc(s)width

Project description

Python bindings for wc(s)width

cwcwidth provides Python bindings for wcwidth and wcswidth functions defined in POSIX.1-2001 and POSIX.1-2008 based on Cython. These functions compute the printable length of a unicode character/string on a terminal. The module provides the same functions as wcwidth and its behavior is compatible.

On systems not conforming to POSIX.1-2001 and POSIX.1-2008, Markus Kuhn's implementation is used to provide the functionality.

Dependencies

  • Cython >= 0.28 (optional, only for building). If Cython is not available, the C files are not regenerated from their source.

Quick installation guide

cwcwidth can be installed via pip:

pip install cwcwidth

or by running:

python3 setup.py install

Usage

>>> import cwcwidth
>>> cwcwidth.wcwidth("a")
1
>>> cwcwidth.wcswidth("コ")
2
>>> cwcwidth.wcswidth("コンニチハ, セカイ!")
19
>>> cwcwidth.wcswidth("コンニチハ, セカイ!", 5)
10

Comparison with wcwidth

>>> import wcwidth, cwcwidth, timeit
>>> timeit.timeit(lambda: wcwidth.wcswidth("コンニチハ, セカイ!"))
19.14463168097427
>>> timeit.timeit(lambda: cwcwidth.wcswidth("コンニチハ, セカイ!"))
0.16294104099506512

License

The code is licensed under the MIT license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cwcwidth-0.1.9.tar.gz (57.9 kB view hashes)

Uploaded Source

Built Distributions

cwcwidth-0.1.9-cp312-cp312-win_amd64.whl (24.9 kB view hashes)

Uploaded CPython 3.12 Windows x86-64

cwcwidth-0.1.9-cp312-cp312-win32.whl (22.2 kB view hashes)

Uploaded CPython 3.12 Windows x86

cwcwidth-0.1.9-cp312-cp312-musllinux_1_1_x86_64.whl (108.6 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.1+ x86-64

cwcwidth-0.1.9-cp312-cp312-musllinux_1_1_i686.whl (102.7 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.1+ i686

cwcwidth-0.1.9-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (106.6 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

cwcwidth-0.1.9-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (101.3 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

cwcwidth-0.1.9-cp312-cp312-macosx_10_9_x86_64.whl (22.3 kB view hashes)

Uploaded CPython 3.12 macOS 10.9+ x86-64

cwcwidth-0.1.9-cp311-cp311-win_amd64.whl (24.6 kB view hashes)

Uploaded CPython 3.11 Windows x86-64

cwcwidth-0.1.9-cp311-cp311-win32.whl (21.9 kB view hashes)

Uploaded CPython 3.11 Windows x86

cwcwidth-0.1.9-cp311-cp311-musllinux_1_1_x86_64.whl (102.7 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

cwcwidth-0.1.9-cp311-cp311-musllinux_1_1_i686.whl (98.8 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ i686

cwcwidth-0.1.9-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (100.3 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

cwcwidth-0.1.9-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (96.3 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

cwcwidth-0.1.9-cp311-cp311-macosx_10_9_x86_64.whl (21.8 kB view hashes)

Uploaded CPython 3.11 macOS 10.9+ x86-64

cwcwidth-0.1.9-cp310-cp310-win_amd64.whl (24.6 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

cwcwidth-0.1.9-cp310-cp310-win32.whl (22.0 kB view hashes)

Uploaded CPython 3.10 Windows x86

cwcwidth-0.1.9-cp310-cp310-musllinux_1_1_x86_64.whl (95.5 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

cwcwidth-0.1.9-cp310-cp310-musllinux_1_1_i686.whl (91.8 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ i686

cwcwidth-0.1.9-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (92.7 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

cwcwidth-0.1.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (89.2 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

cwcwidth-0.1.9-cp310-cp310-macosx_10_9_x86_64.whl (21.9 kB view hashes)

Uploaded CPython 3.10 macOS 10.9+ x86-64

cwcwidth-0.1.9-cp39-cp39-win_amd64.whl (24.6 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

cwcwidth-0.1.9-cp39-cp39-win32.whl (22.0 kB view hashes)

Uploaded CPython 3.9 Windows x86

cwcwidth-0.1.9-cp39-cp39-musllinux_1_1_x86_64.whl (95.2 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

cwcwidth-0.1.9-cp39-cp39-musllinux_1_1_i686.whl (91.6 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ i686

cwcwidth-0.1.9-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (92.5 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

cwcwidth-0.1.9-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (89.0 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

cwcwidth-0.1.9-cp39-cp39-macosx_10_9_x86_64.whl (21.9 kB view hashes)

Uploaded CPython 3.9 macOS 10.9+ x86-64

cwcwidth-0.1.9-cp38-cp38-win_amd64.whl (24.6 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

cwcwidth-0.1.9-cp38-cp38-win32.whl (22.1 kB view hashes)

Uploaded CPython 3.8 Windows x86

cwcwidth-0.1.9-cp38-cp38-musllinux_1_1_x86_64.whl (95.5 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

cwcwidth-0.1.9-cp38-cp38-musllinux_1_1_i686.whl (92.1 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ i686

cwcwidth-0.1.9-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (92.9 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

cwcwidth-0.1.9-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (89.5 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

cwcwidth-0.1.9-cp38-cp38-macosx_10_9_x86_64.whl (21.9 kB view hashes)

Uploaded CPython 3.8 macOS 10.9+ x86-64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page