XIST provides an extensible HTML and XML generator. XIST is also a XML parser with a very simple and pythonesque tree API. Every XML element type corresponds to a Python class and these Python classes provide a conversion method to transform the XML tree (e.g. into HTML). XIST can be considered ‘object oriented XSLT’.
XIST also includes the following modules and packages:
ll.ul4c is compiler for a cross-platform templating language with similar capabilities to Django’s templating language. UL4 templates are compiled to an internal format, which makes it possible to implement template renderers in other languages and makes the template code “secure” (i.e. template code can’t open or delete files).
There are implementations for Python, Java and Javascript.
ll.ul4on provides functions for encoding and decoding a lightweight machine-readable text-based format for serializing the object types supported by UL4. It is extensible to allow encoding/decoding arbitrary instances (i.e. it is basically a reimplementation of pickle, but with string input/output instead of bytes and with an eye towards cross-plattform support).
There are implementations for Python, Java and Javascript.
ll.orasql provides utilities for working with oracledb:
It allows calling functions and procedures with keyword arguments.
Query results will be put into Record objects, where database fields are accessible as object attributes.
The Connection class provides methods for iterating through the database metadata.
Importing the modules adds support for URLs with the scheme oracle to ll.url.
ll.vsql provides a way to build Oracle SQL queries safely and dynamically using UL4 expressions. Instead of manually concatenating strings, you can express query logic with vSQL (a variant of UL4), which is then compiled into proper SQL. This approach eliminates the risky parts of query construction, effectively preventing SQL injection attacks, while offering the expressive power of an ORM without the overhead.
ll.make is an object oriented make replacement. Like make it allows you to specify dependencies between files and actions to be executed when files don’t exist or are out of date with respect to one of their sources. But unlike make you can do this in a object oriented way and targets are not only limited to files.
ll.color provides classes and functions for handling RGB color values. This includes the ability to convert between different color models (RGB, HSV, HLS) as well as to and from CSS format, and several functions for modifying and mixing colors.
ll.sisyphus provides classes for running Python scripts as cron jobs.
ll.url provides classes for parsing and constructing RFC 2396 compliant URLs.
ll.nightshade can be used to serve the output of PL/SQL functions/procedures with CherryPy.
ll.misc provides several small utility functions and classes.
ll.astyle can be used for colored terminal output (via ANSI escape sequences).
ll.daemon can be used on UNIX to fork a daemon process.
ll.xml_codec contains a complete codec for encoding and decoding XML.
Changes in 5.90 (released 2026-09-15)
XIST now requires oracledb 26.0.0 or later.
Since oracledb 26.0.0 supports t-strings in Cursor.execute itself (with the format specs q and l working like they did in XIST, and the additional format spec i for SQL identifiers), the t-string support has been removed from ll.orasql.Cursor.execute. See MIGRATION for the one incompatible detail.
oracledb 26.0.0 no longer accepts str or bytes values for bind variables of type CLOB or BLOB. ll.orasql (when calling procedures and functions with large string arguments or bytes arguments) and ll.pysql (when passing such arguments to procedure() and sql() commands) now create temporary LOBs via Connection.createlob instead.
The new module ll.iterm2 contains functions for working with the terminal emulator iTerm2: ll.iterm2.running_in_iterm2 detects whether the program runs inside iTerm2, and there are functions that return the escape sequences for setting the session status, the tab and window title, the badge and for posting notifications. For each of those there’s also a set_* variant that writes the sequence directly to the controlling terminal (and does nothing when not running in iTerm2).
The new module ll.taskswarm executes tasks in parallel processes (via multiprocessing). Tasks are submitted to a ll.taskswarm.Swarm inside a with block and executed when the block is exited. A running task can itself submit new tasks to the swarm (e.g. a task that walks a directory can submit one task for each file it finds), so the total number of tasks doesn’t have to be known in advance. Log messages and task names can be t-strings: the values are formatted (and colored) by the swarm according to their type, and a format spec like {name:schema} selects a format_schema method of the swarm (sub)class for values whose type is ambiguous. The progress is shown on the terminal (either as a continuous log or updated in place, one line per process) and in the iTerm2 session status.
Release files for ll-xist 5.90
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ll_xist-5.90.tar.gz | 859.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ll_xist-5.90-cp314-cp314-macosx_26_0_arm64.whl | CPython 3.14 | CPython 3.14 | macOS 26.0+ ARM64 | Details |
Total release size: 2.3 MB
Release files / ll_xist-5.90.tar.gz
| Download URL | ll_xist-5.90.tar.gz |
|---|---|
| Size | 859.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d1c6f40e7b0420af13a07d1a6fa8cf1d2c15b6a5244d46fe094678df24ddf749
|
|
BLAKE2b-256 checksum How to use checksums |
8b45f84b7cb958dafa4c90bca963e5a6e0e762ad7ad8efe1b3f6376ef6b91728
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.7
|
Release files / ll_xist-5.90-cp314-cp314-macosx_26_0_arm64.whl
| Download URL | ll_xist-5.90-cp314-cp314-macosx_26_0_arm64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.14 macOS 26.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
1482c17a92bcd3f95f0117051c414a8567a2768cc365e36478c6e526ef5227f7
|
|
BLAKE2b-256 checksum How to use checksums |
9a82c45abbf6c75f72f24dc6554e0580d1bd7aa207395c4fe05bb302a2a71cb0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.7
|