Skip to main content
About Indenti
==================

Indenti is a Python package with tools that make string building,
writing indented text, and generating markup easier and prettier.

Indenti contains the following modules:

- IndentWriter
- XmlWriter
- StringBuilder

Installation
------------

Installation is simple. With python3-pip, do the following:

$ sudo pip install -e .

About IndentWriter
==================

IndentWriter is a module that simplifies the task of indenting output.
It keeps track of indent levels and provides a pythonic way of
incrementing and decrementing the indent level using the optional 'with'
syntax. By default, IndentWriter writes to sys.stdout, but can be told
to write to any other File object at construction.

Example Usage, IndentWriter(using 'with'):

::

from indenti import IndentWriter

iw = IndentWriter()

iw('def hello():')
with iw:
iw('print "Hello!"')

Example Usage, IndentWriter(without 'with'):

::

from indenti import IndentWriter

iw = IndentWriter()
iw('def hello():')
iw.indent()
iw('print "Hello!"')

Example Usage, IndentStringBuilder:

::

from indenti import IndentStringBuilder

sb = IndentStringBuilder()

sb('def hello():')
with sb:
sb('print "Hello!"')

print str(sb)

About XmlFactory
================

Via XmlFactory, any node name can be specified as an attribute, which
returns a functor to create a new node.

Example Usage, XmlWriter(A CherryPy HTML Servlet):

::

import cherrypy
from indenti import XmlFactory

class HelloWorld:
def index(self):
xf = XmlFactory()

xml = xf.html(
xf.head(
xf.title("Hello, world!")),
xf.body(
xf.h1("Hello, CherryPy!", style='color: red; font-size: 20px')))

return str(xml)

index.exposed = True

NOTE:
~~~~~

The word 'class' is a python keyword, so we can't use it as a keyword
argument to create an attribute name. In this case, we pass a
dictionary, which is interpreted as a map of attributes for the node.
You can always do this instead of using keyword arguments, if this is
your preference.

Example Usage, XmlWriter(Using attributes/nodes that conflict with
python keywords):

::

import cherrypy
from indenti import XmlFactory

class HelloWorld:
def index(self):
xf = XmlFactory()

xml = xf.html(
xf.head(
xf.title("Hello, world!")),
xf.body(
xf.h1("Hello, CherryPy!", {'class': 'header')))

return str(xml)

index.exposed = True

Change Log
----------

Version 1.4: April 22nd, 2017
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Make XmlFactory callable, allowing tags with dashes, e.g. xf('my-dash-tag')()

Version 1.2: November 1st, 2016
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Make parents respect the NOINDENT status of their children in HTML mode.

Version 1.1: October 18th, 2016
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Added support for unindented blocks in HTML mode (for textarea)
- Fixed escaping of XML attributes

Metadata

Release files for indenti 1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for indenti 1.4
File Size Uploaded Provenance Actions
indenti-1.4.tar.gz 7.3 kB Without provenance Details for indenti-1.4.tar.gz

Release files / indenti-1.4.tar.gz

Download URL indenti-1.4.tar.gz
Size 7.3 kB
Tags Source
SHA-256 checksum
How to use checksums
1099254a592ae685bcb91cab93b8356df73d1533272229e507e60b3d34c566ed
BLAKE2b-256 checksum
How to use checksums
fbb84155e1af854a93e37006b0f955b116127fdad12cce1fc67b781ef5b1d24d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for indenti 1.4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page