Skip to main content

Extensible HTML/XML generator, cross-platform templating language, Oracle utilities and various other tools

Project description

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, Javascript and PHP.

  • 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, Javascript and PHP.

  • ll.orasql provides utilities for working with cx_Oracle:

    • 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.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 4.10 (released 03/04/2013)

  • It’s now possible to use UL4 templates as functions by using the <?return?> tag:

    >>> from ll import ul4c
    >>> f = ul4c.Template("<?return 2*x?>")
    >>> f(x=42)

    It’s also possible to call a template as a function inside another template:

    >>> from ll import ul4c
    >>> t = ul4c.Template("<?def x?><?return 42?><?end def?><?print x()?>")
    >>> t.renders()

    Normal output of the template will be ignored if it is used as a function.

    If the template runs through to the end without encountering a <?return?> tag, None will be returned if the template is used as a function.

    If the template is used as a template and a <?return?> tag is encountered executing the template will be stopped (the return value will be ignored).

  • The UL4 tag <?code?> may now contain not only variable assigments, but any other expression. Of course this makes only sense for expressions that have side effects (e.g. a call to the render method).

  • The tag <?render?> has been removed. To update your code replace <?render r.render()?> with <?code r.render()?>.

  • UL4 functions print and printx have been added. They behave like the respective tags <?print?> and <?printx?>, but can output an arbitrary number of arguments.

  • The builtin UL4 functions are now real objects that can be passed to templates as arguments.

  • The UL4 methods days, seconds, microseconds and months have been added for timedelta/monthdelta objects.

  • Lists in UL4 now support the methods append, insert and pop.

  • Dictionaries in UL4 now support the method update.

  • The db2ul4 script now supports a -w/--keepws argument.

  • The UL4 functions vars and get have been removed.

  • The ** syntax has been removed for UL4 dict literals.

  • The automatic UL4 variable stack has been removed too.

Project details

Release history Release notifications

This version
History Node


Download files

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

Filename, size & hash SHA256 hash help File type Python version Upload date
ll_xist-4.10-py3.3-macosx-10.7-x86_64.egg (1.2 MB) Copy SHA256 hash SHA256 Egg 3.3
ll-xist-4.10.tar.bz2 (471.7 kB) Copy SHA256 hash SHA256 Source None
ll-xist-4.10.tar.gz (562.0 kB) Copy SHA256 hash SHA256 Source None (662.0 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page