
Security News
Node.js TSC Votes to Stop Distributing Corepack
Corepack will be phased out from future Node.js releases following a TSC vote.
Bi-directional
_ (BiDi) layout for Python providing 2 implementations:
unicode-bidi
_ Rust crate.Package documentation
_
.. _Bi-directional: http://en.wikipedia.org/wiki/Bi-directional_text .. _unicode-bidi: https://crates.io/crates/unicode-bidi .. _Package documentation: http://python-bidi.readthedocs.org/en/latest/
For the python implementation, and compatible with previous versions, use::
from bidi.algorithm import get_display
For the newer Rust based one, which seems to implement higher version of the algorithm (albeit with some missing see #25), use the top level import::
from bidi import get_display
The algorithm starts with a single entry point get_display
(see above for selecting the implementaion).
Required arguments:
str_or_bytes
: The string or bytes (i.e.: storage). If it's bytes
use the optional argument encoding
to specify it's encoding.Optional arguments:
encoding
: If unicode_or_str is a string, specifies the encoding. The
algorithm uses unicodedata_ which requires unicode. This encoding will be
used to decode and encode back to string before returning
(default: "utf-8").
base_dir
: 'L'
or 'R'
, override the calculated base_level.
debug
: True
to display the Unicode levels as seen by the algorithm
(default: False
).
The Python implementaion adds one more optional argument:
upper_is_rtl
: True to treat upper case chars as strong 'R' for
debugging (default: False).It returns the display layout, either as str
or encoding
encoded bytes
(depending on the type of str_or_bytes'
).
.. _unicodedata: http://docs.python.org/library/unicodedata.html
Example::
>>> from bidi import get_display
>>> # keep as list with char per line to prevent browsers from changing display order
>>> HELLO_HEB = "".join([
... "ש",
... "ל",
... "ו",
... "ם"
... ])
>>>
>>> HELLO_HEB_DISPLAY = "".join([
... "ם",
... "ו",
... "ל",
... "ש",
... ])
>>>
>>> get_display(HELLO_HEB) == HELLO_HEB_DISPLAY
True
pybidi
is a command line utility (calling bidi.main
) for running the
display algorithm. The script can get a string as a parameter or read text from
stdin
.
Usage::
$ pybidi -h
usage: pybidi [-h] [-e ENCODING] [-u] [-d] [-b {L,R}] [-r] [-v]
options:
-h, --help show this help message and exit
-e ENCODING, --encoding ENCODING
Text encoding (default: utf-8)
-u, --upper-is-rtl Treat upper case chars as strong 'R' for debugging (default: False), Ignored in Rust algo
-d, --debug Output to stderr steps taken with the algorithm
-b {L,R}, --base-dir {L,R}
Override base direction [L|R]
-r, --rust Use the Rust unicode-bidi implemention instead of the Python one
-v, --version show program's version number and exit
Examples::
$ pybidi -u 'Your string here'
$ cat ~/Documents/example.txt | pybidi
At the command line (assuming you're using some virtualenv)::
pip install python-bidi
To run the tests::
pip install nox
nox
FAQs
Python Bidi layout wrapping the Rust crate unicode-bidi
We found that python-bidi demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Corepack will be phased out from future Node.js releases following a TSC vote.
Research
Security News
Research uncovers Black Basta's plans to exploit package registries for ransomware delivery alongside evidence of similar attacks already targeting open source ecosystems.
Security News
Oxlint's beta release introduces 500+ built-in linting rules while delivering twice the speed of previous versions, with future support planned for custom plugins and improved IDE integration.