Skip to main content

Sprinkling imperative logic into your template generation process.

Project description

Templatizer

Templatizer allows for sprinkling in some imperative logic to your declarative configuration files.

Why Imperative?

While a fully declarative configuration file is often nice to be able to describe the intended state of the world in a single place, these can also become quite verbose over time.

For Kubernetes, for example, you might be configuring a number of monitoring jobs. These will have different storage, CPU, and memory requirements. They also have unique configuration requirements for each one. I might be holding it wrong, but I find this very hard to make work in Helm and Kustomize without repeating myself over and over again.

What I want is something that runs before Helm, Kustomize, and whatever other tools you're using. I want something to generate files with the ability to do imperative logic first.

Example

import templatizer

class Simple(templatizer.Templatable):
    prop = 12345

class Imperative(templatizer.Templatable):
    tick = 0

    def prop(self):
        return 12345 + self.tick

simple = Simple()
assert simple.propval('prop') == 12345

imperative = Imperative()
assert imperative.propval('prop') == 12345
imperative.tick = 1
assert imperative.propval('prop') == 12346

The templatizer.run function takes a list of Templatable objects, generates them into strings, and adds separators in between. By default the --- separator is used, which is useful for generating YAML documents. This can be changed to suit your use case.

Kubernetes

The templatizer.k8s module includes generated definitions from the Kubernetes OpenAPI Spec.

This allows for generating Kubernetes manifests with imperative hooks. Examples of this are provided in the examples/ directory.

Project details


Download files

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

Source Distribution

pytemplatize-0.0.2.tar.gz (73.2 kB view details)

Uploaded Source

Built Distribution

pytemplatize-0.0.2-py3-none-any.whl (74.9 kB view details)

Uploaded Python 3

File details

Details for the file pytemplatize-0.0.2.tar.gz.

File metadata

  • Download URL: pytemplatize-0.0.2.tar.gz
  • Upload date:
  • Size: 73.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.10

File hashes

Hashes for pytemplatize-0.0.2.tar.gz
Algorithm Hash digest
SHA256 58bf78ac1eac6a94e4d9c7e18a6eae21c5ae7d14f01a8a6dc8e02b926c978238
MD5 6282fb01a403192c995e9989df5fd4cf
BLAKE2b-256 b8e0bb6b0b0cb1a5a0e9d6a4087c4ae74dd4a36a479e12fb868de1a38f8c71a5

See more details on using hashes here.

File details

Details for the file pytemplatize-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: pytemplatize-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 74.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.10

File hashes

Hashes for pytemplatize-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 dae069d68f5ba70f7bbbb8af7dbb74c8a705ff944213f347c5b3a2a532f90055
MD5 870143daa636c4dde74ea7a20ce96d57
BLAKE2b-256 3a02f5e494631e31ccd1203db28792a618d5e6caac2ebc92ba48fb480aff3193

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page