cwcwidth 0.1.12


pip install cwcwidth

  Latest version

Released: Nov 01, 2025

Project Links

Meta
Author: Sebastian Ramacher
Requires Python: >=3.11

Classifiers

Development Status
  • 5 - Production/Stable

Intended Audience
  • Developers

Programming Language
  • Python :: 3

Topic
  • Software Development :: Libraries :: Python Modules

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 >= 3.1 (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

In case the extension should be built with the limited Python API, set the environment variable USE_LIMITED_API to any value.

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.

Wheel compatibility matrix

Platform CPython 3.11 CPython >=3.11 (abi3) CPython 3.12 CPython 3.13 CPython 3.14 CPython (additional flags: t) 3.14
macosx_11_0_arm64
manylinux1_x86_64
manylinux2014_aarch64
manylinux_2_17_aarch64
manylinux_2_28_aarch64
manylinux_2_28_x86_64
manylinux_2_5_x86_64
musllinux_1_2_aarch64
musllinux_1_2_x86_64
win32
win_amd64

Files in release

cwcwidth-0.1.12-cp311-abi3-macosx_11_0_arm64.whl (23.6KiB)
cwcwidth-0.1.12-cp311-abi3-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (81.5KiB)
cwcwidth-0.1.12-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (83.8KiB)
cwcwidth-0.1.12-cp311-abi3-musllinux_1_2_aarch64.whl (81.7KiB)
cwcwidth-0.1.12-cp311-abi3-musllinux_1_2_x86_64.whl (82.4KiB)
cwcwidth-0.1.12-cp311-abi3-win32.whl (22.4KiB)
cwcwidth-0.1.12-cp311-abi3-win_amd64.whl (24.2KiB)
cwcwidth-0.1.12-cp311-cp311-macosx_11_0_arm64.whl (24.9KiB)
cwcwidth-0.1.12-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (97.1KiB)
cwcwidth-0.1.12-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (100.9KiB)
cwcwidth-0.1.12-cp311-cp311-musllinux_1_2_aarch64.whl (99.3KiB)
cwcwidth-0.1.12-cp311-cp311-musllinux_1_2_x86_64.whl (98.9KiB)
cwcwidth-0.1.12-cp311-cp311-win32.whl (23.2KiB)
cwcwidth-0.1.12-cp311-cp311-win_amd64.whl (25.5KiB)
cwcwidth-0.1.12-cp312-cp312-macosx_11_0_arm64.whl (25.0KiB)
cwcwidth-0.1.12-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (102.5KiB)
cwcwidth-0.1.12-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (104.9KiB)
cwcwidth-0.1.12-cp312-cp312-musllinux_1_2_aarch64.whl (102.0KiB)
cwcwidth-0.1.12-cp312-cp312-musllinux_1_2_x86_64.whl (103.1KiB)
cwcwidth-0.1.12-cp312-cp312-win32.whl (23.4KiB)
cwcwidth-0.1.12-cp312-cp312-win_amd64.whl (25.6KiB)
cwcwidth-0.1.12-cp313-cp313-macosx_11_0_arm64.whl (24.4KiB)
cwcwidth-0.1.12-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (99.4KiB)
cwcwidth-0.1.12-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (101.6KiB)
cwcwidth-0.1.12-cp313-cp313-musllinux_1_2_aarch64.whl (99.6KiB)
cwcwidth-0.1.12-cp313-cp313-musllinux_1_2_x86_64.whl (99.4KiB)
cwcwidth-0.1.12-cp313-cp313-win32.whl (22.9KiB)
cwcwidth-0.1.12-cp313-cp313-win_amd64.whl (24.9KiB)
cwcwidth-0.1.12-cp314-cp314-macosx_11_0_arm64.whl (24.5KiB)
cwcwidth-0.1.12-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (98.1KiB)
cwcwidth-0.1.12-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (101.2KiB)
cwcwidth-0.1.12-cp314-cp314-musllinux_1_2_aarch64.whl (99.2KiB)
cwcwidth-0.1.12-cp314-cp314-musllinux_1_2_x86_64.whl (98.4KiB)
cwcwidth-0.1.12-cp314-cp314-win32.whl (24.2KiB)
cwcwidth-0.1.12-cp314-cp314-win_amd64.whl (26.0KiB)
cwcwidth-0.1.12-cp314-cp314t-macosx_11_0_arm64.whl (25.9KiB)
cwcwidth-0.1.12-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (124.5KiB)
cwcwidth-0.1.12-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (129.3KiB)
cwcwidth-0.1.12-cp314-cp314t-musllinux_1_2_aarch64.whl (124.9KiB)
cwcwidth-0.1.12-cp314-cp314t-musllinux_1_2_x86_64.whl (124.1KiB)
cwcwidth-0.1.12-cp314-cp314t-win32.whl (26.7KiB)
cwcwidth-0.1.12-cp314-cp314t-win_amd64.whl (29.0KiB)
cwcwidth-0.1.12.tar.gz (70.3KiB)
No dependencies