Skip to main content
Tonnikala

PyPI version Python versions License: MIT Documentation Status Coverage Status GitHub stars

Tonnikala is the latest reincarnation among the Python templating languages that feed on Kid-inspired XML syntax. It doesn’t use the tagstreams and trees of Genshi or Kid, but follows in footsteps of Chameleon and Kajiki in making the template to compile into Python bytecode directly. The syntax is very close to that of Kajiki, but the internals are very different: Tonnikala writes code as Abstract Syntax Trees and optimizes the resulting trees extensively. In addition, there is an optional speed-up module, that provides a specialized class used for output buffering.

Examples

from tonnikala.loader import Loader

template_source = u"""
<table>
    <tr py:for="row in table">
        <py:for each="key, value in row.items()"
            ><td>$key</td><td>$literal(value)</td></py:for>
    </tr>
</table>
"""

template = Loader().load_string(template_source)

ctx = {
    'table': [dict(a=1,b=2,c=3,d=4,e=5,f=6,g=7,h=8,i=9,j=10)
        for x in range(1000)]
}

print(template.render(ctx))

Variable interpolation

Within attributes and text, all contents starting with $ followed by a {, an alphabetic character or _ is considered an interpolated expression. If the interpolated expression starts with ${, the expression continues until the matching } token. Otherwise the interpolation consists of an identifier, followed by any number of attribute accesses, indexing brackets [...], and method call operators (...), without any intervening whitespace (except within the brackets). The expression parsing stops whenever the next token cannot match this rule anymore.

While the form

HELLO, ${user.name.upper()}.

is accepted, it is also perfectly OK to write

HELLO, $user.name.upper().

In the above code, user is an object with name attribute or property, which evaluates to a string; upper() method is called on the resulting string. Suppose the user’s name is Antti Haapala, the resulting output would be HELLO, ANTTI HAAPALA..

The rules also ensure that you can do an interpolation as follows:

Your word $digit has the integer value ${{'one': 1, 'two': 2}[digit]}

Now, if digit == 'one', the output of this fragment would be

Your word one has the integer value 1.

An interpolated expression is auto-escaped appropriately for its context. If you do not want to be the expression to be escaped you can bracket it with a function call to literal(), or in markupsafe.Markup. The literal is especially efficient as it is optimized away in the compile time whenever possible.

Control tags/attributes

Most of the control tags and attributes have a reach of one element (those which do not, have an effect for the whole file). For all these you have the choice of using them as an attribute or as an element; e.g.

<py:for each="i in iterable"></py:for>

or

<div py:for="i in iterable"></div>

The latter attribute form is preferred as they are more concise, but sometimes clarity or structure necessitates the use of the element form.

py:if

<py:if test="condition"><span>the condition was true</span></py:if>

or

<span py:if="condition">the condition was true</span>

results in the output

<span>the condition was true</span>

if the condition was true

py:unless

py:unless="expression" is an alternative way to type py:if="not expression".

py:for

<py:for each="i in range(5)"><td>$i</td></py:for>

or

<td py:for="i in range(5)">$i</td>

results in the output

<td>0</td><td>1</td><td>2</td><td>3</td><td>4</td>

py:strip

Strips the tag if the expression is true; keeping the contents. Keeps the tag if the expression evaluates to false.

<div py:strip="True">content</div>

results in rendered output

content

py:strip="" is equivalen to py:strip="True".

Warning: py:strip will evaluate the expression twice: once for the opening and once for the closing tag.

py:def

Declares a callable function with optional arguments. The function, when called, will return the rendered contents of the py:def tag.

For example a function without argments (you can omit the empty parentheses ()):

<!-- define a function -->
<py:def function="copyright">(C) 2015 Tonnikala contributors</py:def>

<!-- call the function -->
$copyright()

With arguments:

<button
     py:def="button(caption, type='submit' cls='btn-default', id=None)"
     class="btn $btn_cls"
     type="$type"
     id="$id">$caption</button>

$button('Cancel', id='cancel')
$button('OK', cls='btn-primary', id='ok')
$button('Reset', type='reset')

Will render to

<button class="btn btn-default" type="submit" id="cancel">Cancel</button>
<button class="btn btn-primary" type="submit" id="ok">OK</button>
<button class="btn btn-default" type="reset">Reset</button>

The functions created by py:def form closures - that is they remember the variable values from the context where they were created.

<li py:def="li_element(content)">$content</li>

<ul py:def="make_list(elements, format_item=li_element)">
    <py:for each="item in elements">$format_item(item)</py:for>
</ul>

<py:def function="make_color_list(elements, color='#ccc')">
    <li py:def="colorized_li_element(content)" style="color: $color">$content</li>
    $make_list(elements, format_item=colorized_li_element)
</py:def>

$make_list(plain)
$make_color_list(good, color="#0F0")
$make_color_list(bad, color="#F00")

might render to

<ul>
    <li>Plain item 0</li>
    <li>Plain item 1</li>
    <li>Plain item 2</li>
</ul>
<ul>
    <li style="color: #0F0">Good item 0</li>
    <li style="color: #0F0">Good item 1</li>
    <li style="color: #0F0">Good item 2</li>
    <li style="color: #0F0">Good item 3</li>
</ul>
<ul>
    <li style="color: #F00">Bad item 0</li>
    <li style="color: #F00">Bad item 1</li>
    <li style="color: #F00">Bad item 2</li>
</ul>

py:with

py:with declares one or more lexical variable bindings to be available within the element. This is useful in eliminating repeated calculations in a declarative context

<py:with vars="a = 5; b = 6"><span>$a * $b = ${a * b}</span></py:with>

or

<span py:with="a = 5; b = 6">$a * $b = ${a * b}</span>

results in the output

<span>5 * 6 = 30</span>

Template inheritance

base.tk

<html>
<title><py:block name="title_block">I am $title</py:block></title>
<py:def function="foo()">I can be overridden too!</py:def>
<h1>${title_block()}</h1>
${foo()}
</html>

child.tk

<py:extends href="base.tk">
<py:block name="title_block">But I am $title instead</py:block>
<py:def function="foo()">I have overridden the function in parent template</py:def>
</py:extends>

Template imports

importable.tk

<html>
<py:def function="foo()">I am an importable function</py:def>
</html>

importer.tk

<html>
<py:import href="importable.tk" alias="imp" />
${imp.foo()}
</html>

FileLoader

To load templates from files, use the tonnikala.FileLoader class:

loader = FileLoader(paths=['/path/to/templates'])
template = loader.load('child.tk')

A FileLoader currently implicitly caches all loaded templates in memory.

Template

To render the template:

result = template.render(ctx)

You can specify a block, or no-argument def to render explicitly:

result = template.render(ctx, funcname='title_block')

Pyramid integration

Include ‘tonnikala.pyramid’ into your config to enable Tonnikala. When included, Tonnikala adds the following configuration directives:

add_tonnikala_extensions(*extensions)

Registers Tonnikala renderer for these template extensions. By default Tonnikala is not registered as a renderer for any extension. For example: config.add_tonnikala_extensions('.html', '.tk') would enable Tonnikala renderer for templates with either of these extensions.

add_tonnikala_search_paths(*paths)

Adds the given paths to the end of Tonnikala search paths that are searched for templates. These can be absolute paths, or package.module:directory/subdirectory-style asset specs. By default no search path is set (though of course you can use an asset spec for template).

set_tonnikala_reload(reload)

If True, makes Tonnikala not cache templates. Default is False.

set_tonnikala_l10n(reload)

If True, makes Tonnikala translate templates. Default is False.

These 4 can also be controlled by tonnikala.extensions, tonnikala.search_paths, tonnikala.reload and tonnikala.l10n respectively in the deployment settings (the .ini files). If tonnikala.reload is not set, Tonnikala shall follow the pyramid.reload_templates setting.

set_debug_templates(debug)

If True, makes Tonnikala skip some optimizations that make debugging harder.

Status

Stable. Features:

  • Structural elements py:if, py:unless, py:def, py:for, py:replace, py:content

  • Basic template inheritance: py:extends and py:block; the child template also inherits top level function declarations from the parent template, and the child can override global functions that the parent defines and uses.

  • Expression interpolation using $simple_identifier and ${complex + python + "expression"}

  • Boolean attributes: <tag attr="${False}">, <tag attr="$True">

  • Implicit escaping

  • Disabling implicit escaping (literal())

  • C speedups for Python 3

  • Importing def blocks from another template: py:import

  • Basic I18N using gettext.

  • Pyramid integration

  • Javascript as the target language (using js: prefix)

  • Overriding attributes, setting attrs from dictionary: py:attrs

  • Understandable exceptions and readable tracebacks on CPython

  • Lexical variable assignments with py:with

Upcoming features:

  • Structural elements: py:switch, py:case; py:else for for, if and switch.

  • Custom tags mapping to py:def

  • I18N with optional in-parse-tree localization (partially done)

  • Pluggable frontend syntax engines (partially done)

  • METAL-like macros

  • Pluggable expression languages akin to Chameleon

  • Even better template inheritance

  • Better documentation

Contributors

  • Antti Haapala

  • Ilja Everilä

  • Pete Sevander

  • Hiếu Nguyễn

Release files for tonnikala 1.0.2

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

Source distribution (sdist)

Source distribution for tonnikala 1.0.2
File Size Uploaded
tonnikala-1.0.2.tar.gz 63.5 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for tonnikala 1.0.2
File
tonnikala-1.0.2-py3-none-any.whl Python 3 none any Details
tonnikala-1.0.2-cp314-cp314-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ x86-64 Details
tonnikala-1.0.2-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.5+ x86-64, Linux glibc 2.17+ x86-64 Details
tonnikala-1.0.2-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
tonnikala-1.0.2-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
tonnikala-1.0.2-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64, Linux glibc 2.5+ x86-64 Details
tonnikala-1.0.2-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
tonnikala-1.0.2-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
tonnikala-1.0.2-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.5+ x86-64, Linux glibc 2.17+ x86-64 Details
tonnikala-1.0.2-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
tonnikala-1.0.2-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
tonnikala-1.0.2-cp311-cp311-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64, Linux glibc 2.5+ x86-64 Details
tonnikala-1.0.2-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
tonnikala-1.0.2-cp310-cp310-musllinux_1_2_x86_64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-64 Details
tonnikala-1.0.2-cp310-cp310-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64, Linux glibc 2.5+ x86-64 Details
tonnikala-1.0.2-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
tonnikala-1.0.2-cp39-cp39-musllinux_1_2_x86_64.whl CPython 3.9 CPython 3.9 Linux musl 1.2+ x86-64 Details
tonnikala-1.0.2-cp39-cp39-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ x86-64, Linux glibc 2.5+ x86-64 Details
tonnikala-1.0.2-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details
tonnikala-1.0.2-cp38-cp38-musllinux_1_2_x86_64.whl CPython 3.8 CPython 3.8 Linux musl 1.2+ x86-64 Details
tonnikala-1.0.2-cp38-cp38-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.5+ x86-64, Linux glibc 2.17+ x86-64 Details
tonnikala-1.0.2-cp38-cp38-macosx_11_0_arm64.whl CPython 3.8 CPython 3.8 macOS 11.0+ ARM64 Details

Total release size: 1.6 MB

Release files / tonnikala-1.0.2.tar.gz

Download URL tonnikala-1.0.2.tar.gz
Size 63.5 kB
Tags Source
SHA-256 checksum
How to use checksums
fa1ea77a4ec114a7a08a14ddc546fb13707ec1a8339e775ac8fbcec308ade46c
BLAKE2b-256 checksum
How to use checksums
d6f1e5868e22dca89a99dd6086d9386775483528b7385709ba51581d1dd03ec0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Release files / tonnikala-1.0.2-py3-none-any.whl

Download URL tonnikala-1.0.2-py3-none-any.whl
Size 55.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7b2fca870f2fbfcb4e95306af0c8eaf5876b674812b1b7ad512ac984f4866795
BLAKE2b-256 checksum
How to use checksums
7ad882e2457ad607013a36261e8e9805b366679037898d639d778af2e3e44154
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Release files / tonnikala-1.0.2-cp314-cp314-musllinux_1_2_x86_64.whl

Download URL tonnikala-1.0.2-cp314-cp314-musllinux_1_2_x86_64.whl
Size 75.3 kB
Tags CPython 3.14 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
98579b40e80bcff2201ffbf2a5099e208b641117d7194b997d969e5744d0fe95
BLAKE2b-256 checksum
How to use checksums
9590c5f37361d159e026d2b20921e0cdb409a2e720d9eb0b24eb195076bb4afc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Release files / tonnikala-1.0.2-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl

Download URL tonnikala-1.0.2-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl
Size 75.5 kB
Tags CPython 3.14 Linux glibc 2.17+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
3774fce1d03bcf48c41006acc233f588c4e0be2b82d6d9f1d3fb0e8c748a4b51
BLAKE2b-256 checksum
How to use checksums
4baf9591a45f5105322ee773a73af345029ccc89ae689fa529b743755ef9db33
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Release files / tonnikala-1.0.2-cp314-cp314-macosx_11_0_arm64.whl

Download URL tonnikala-1.0.2-cp314-cp314-macosx_11_0_arm64.whl
Size 63.4 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
bfaacffa3a47af1e7a681524e0e80a5326dccb2638b9cd3f04051f790bf8bd9c
BLAKE2b-256 checksum
How to use checksums
7755bacc74a72602d84f2bc9749a7f4bb9428f21b3d27b91114f50d7ce12c3a2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Release files / tonnikala-1.0.2-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL tonnikala-1.0.2-cp313-cp313-musllinux_1_2_x86_64.whl
Size 75.5 kB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
4aef9b1afc7656ef752337d53080a29c2f8139578bec92f3a9689a05f4dfe957
BLAKE2b-256 checksum
How to use checksums
5b65bdaca332af4fd71d733e9d7b9932b6acb22e202a57c758e01f5e41d2f376
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Release files / tonnikala-1.0.2-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl

Download URL tonnikala-1.0.2-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl
Size 75.7 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
d778c6e92453517ffc2e2c58b4cc88852904b6a8d5466b0236b8b3acd168d2dd
BLAKE2b-256 checksum
How to use checksums
aa79cf24f94f2d1a8345fba35b24fd406ec5f17ba5438e848f0e0cff4e6f8315
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Release files / tonnikala-1.0.2-cp313-cp313-macosx_11_0_arm64.whl

Download URL tonnikala-1.0.2-cp313-cp313-macosx_11_0_arm64.whl
Size 63.3 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f159850c0fbb793741a93292fed1d07176ee8cc90b269ec8bb26c35abe603b84
BLAKE2b-256 checksum
How to use checksums
938358833e65498367f68162f0d45075b3f797513a76e20f05f0edd64413b85e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Release files / tonnikala-1.0.2-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL tonnikala-1.0.2-cp312-cp312-musllinux_1_2_x86_64.whl
Size 75.4 kB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
749d52b662eedfe18b2cbf76c6ac66ce94ebb4b469f7e26d3c17426f0bf1388b
BLAKE2b-256 checksum
How to use checksums
68b80e113e9021192a316a70b10d60e362f71d0df6927e66ce555acbddd72f4b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Release files / tonnikala-1.0.2-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl

Download URL tonnikala-1.0.2-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl
Size 75.7 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
47af805b16c2368fdb464c5b57ca07de2b473d54f3ebbadfe464c19da91c9229
BLAKE2b-256 checksum
How to use checksums
87b98210032777604e01d5321759dc5afe974593f524a776d3c9fe99dddd26e7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Release files / tonnikala-1.0.2-cp312-cp312-macosx_11_0_arm64.whl

Download URL tonnikala-1.0.2-cp312-cp312-macosx_11_0_arm64.whl
Size 63.3 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
956ded2e3d5353a05170686f0bc069d5d4fe40940950c4c443cb5a4407ca7f5d
BLAKE2b-256 checksum
How to use checksums
0fc855977bf5cd4129b1126f649c0ceb231197db34f2641413669748bd5a57ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Release files / tonnikala-1.0.2-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL tonnikala-1.0.2-cp311-cp311-musllinux_1_2_x86_64.whl
Size 74.3 kB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
881cbac7f0544eea130c4060a460196c276297d1db7e1fa7d5c3220228a36884
BLAKE2b-256 checksum
How to use checksums
62e4577baabe56a46d124a136bb595076a8ddb3ad83f21c396012c5d5fc711fc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Release files / tonnikala-1.0.2-cp311-cp311-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl

Download URL tonnikala-1.0.2-cp311-cp311-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl
Size 74.6 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
acd461abcb094fda94b26e522aab53659e7d688c9fe4c9847f48e8b786a3a4cc
BLAKE2b-256 checksum
How to use checksums
986a83f8168f8dbb6907ee48ba48cb0508545fe001e64cd18b50875d78e0fbe6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Release files / tonnikala-1.0.2-cp311-cp311-macosx_11_0_arm64.whl

Download URL tonnikala-1.0.2-cp311-cp311-macosx_11_0_arm64.whl
Size 63.2 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
97d2cea3042c0b397db2acfb2a55f68ad9062dd194f551444b3689064d3810f0
BLAKE2b-256 checksum
How to use checksums
e9d846ab98a6967cc6383ed737f4a62a24fb32fa5fd7eb13badd4fdbd8e9cd05
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Release files / tonnikala-1.0.2-cp310-cp310-musllinux_1_2_x86_64.whl

Download URL tonnikala-1.0.2-cp310-cp310-musllinux_1_2_x86_64.whl
Size 73.4 kB
Tags CPython 3.10 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
be8f019e729dfa593eb2bdc45a4198ddd23b85dee7189758dadaf86b4b2d0426
BLAKE2b-256 checksum
How to use checksums
47bffa77719593a69564d938479c7b066fc9593efda2f95393c9c1f02feeb02a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Release files / tonnikala-1.0.2-cp310-cp310-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl

Download URL tonnikala-1.0.2-cp310-cp310-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl
Size 73.7 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
a85e3c09fc0f875da25dd7ca3b7bae207bca348a6c5a712bba540e8e1441c67a
BLAKE2b-256 checksum
How to use checksums
001f7410409ba59d4cf40b169d55ef068c0a95af0b46af2508e9488be969dea4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Release files / tonnikala-1.0.2-cp310-cp310-macosx_11_0_arm64.whl

Download URL tonnikala-1.0.2-cp310-cp310-macosx_11_0_arm64.whl
Size 63.2 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
7a512e6ab728bd05cf83d751a3855aaffddcb61fc3732fc658cc0169dd3cdc62
BLAKE2b-256 checksum
How to use checksums
058188d1974e0ff403544c3a6872926ae58539cfb3ffba0f9148e9d074cb450a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Release files / tonnikala-1.0.2-cp39-cp39-musllinux_1_2_x86_64.whl

Download URL tonnikala-1.0.2-cp39-cp39-musllinux_1_2_x86_64.whl
Size 73.2 kB
Tags CPython 3.9 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
2c567fc573cc32a8e506c5a8d57a720428f053b0156273c15c2eb851a017136c
BLAKE2b-256 checksum
How to use checksums
eb750541e74e90927eff341f0ec257beeaef62f2dffdc2c747e6c3334e5aae25
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Release files / tonnikala-1.0.2-cp39-cp39-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl

Download URL tonnikala-1.0.2-cp39-cp39-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl
Size 73.5 kB
Tags CPython 3.9 Linux glibc 2.17+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
0c05823c82522754bfc549b5cd01832d69bae6539181c0bd6af94977eb0c97e1
BLAKE2b-256 checksum
How to use checksums
8f32d23bace1c59b5d6f22ee3080ba6c5e132a152499c9d2bae7c1b479a195dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Release files / tonnikala-1.0.2-cp39-cp39-macosx_11_0_arm64.whl

Download URL tonnikala-1.0.2-cp39-cp39-macosx_11_0_arm64.whl
Size 63.2 kB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
801200eabac1abddbc3c09f467c01ae3189ecc6973fc956ff0b1205b6228ef06
BLAKE2b-256 checksum
How to use checksums
f69cdbb07f6644835d7ec1c72c48c9ed1ad1dd9b27dba004975c628eb6177d6b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Release files / tonnikala-1.0.2-cp38-cp38-musllinux_1_2_x86_64.whl

Download URL tonnikala-1.0.2-cp38-cp38-musllinux_1_2_x86_64.whl
Size 73.3 kB
Tags CPython 3.8 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
2cff064b559bb052c414fcc13324b084d0776bbc9320c9092b3cdeb60285a4a7
BLAKE2b-256 checksum
How to use checksums
8d8adfb179676a649e5b88397712020ec9c86c9c02334fdeb76a1dfc4a1b8732
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Release files / tonnikala-1.0.2-cp38-cp38-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl

Download URL tonnikala-1.0.2-cp38-cp38-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl
Size 74.1 kB
Tags CPython 3.8 Linux glibc 2.17+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
36bcdc86d1bc2eb939f3c95e4dd073bb61ffff193c54ff7ca00df599370eafe4
BLAKE2b-256 checksum
How to use checksums
72892696080e4b2e6da262d5e988837b42502a96ad0ce58cf655146d0a17365e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Release files / tonnikala-1.0.2-cp38-cp38-macosx_11_0_arm64.whl

Download URL tonnikala-1.0.2-cp38-cp38-macosx_11_0_arm64.whl
Size 63.0 kB
Tags CPython 3.8 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
4316e498db61ead8f0f7f4eb12fa3917d3ba7f50bd83c9b1bdb6a889877dd8a7
BLAKE2b-256 checksum
How to use checksums
81554e6a355dd23bbd2a3508943df9d79bda738583ce3187249aeebf75ebb2e8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log
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