Security News
38% of CISOs Fear They’re Not Moving Fast Enough on AI
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
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
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
Research
Security News
Socket researchers uncovered a backdoored typosquat of BoltDB in the Go ecosystem, exploiting Go Module Proxy caching to persist undetected for years.
Security News
Company News
Socket is joining TC54 to help develop standards for software supply chain security, contributing to the evolution of SBOMs, CycloneDX, and Package URL specifications.