{ "info": { "author": "Aljosha Friemann", "author_email": "aljosha.friemann@clark.de", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python :: 3" ], "description": "# k8t\n\n*Pronounced katie [\u02c8ke\u026ati]*\n\n[![CircleCI](https://circleci.com/gh/ClarkSource/k8t/tree/master.svg?style=shield)](https://circleci.com/gh/ClarkSource/k8t/tree/master)\n[![PyPI](https://img.shields.io/pypi/v/k8t?color=blue)](https://pypi.org/project/k8t/)\n[![PyPI - Downloads](https://img.shields.io/pypi/dm/k8t)](https://pypi.org/project/k8t/)\n[![CLARK Open Source](https://img.shields.io/badge/CLARK-Open%20Source-%232B6CDE.svg)](https://www.clark.de/de/jobs)\n\nSimple cluster and environment specific aware templating for kubernetes manifests.\n\n\n\n**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)*\n\n- [Installation](#installation)\n - [Docker](#docker)\n - [Completion](#completion)\n- [Concepts](#concepts)\n - [*Clusters* and *Environments*](#clusters-and-environments)\n - [Templating](#templating)\n - [Template helper functions](#template-helper-functions)\n- [Configuration inheritance](#configuration-inheritance)\n- [Usage](#usage)\n - [Scaffolding](#scaffolding)\n - [Config management](#config-management)\n - [Validate templates](#validate-templates)\n - [Shortcomings](#shortcomings)\n - [is defined](#is-defined)\n - [Generate manifests](#generate-manifests)\n - [Overriding templates](#overriding-templates)\n - [Managing secrets](#managing-secrets)\n - [Providers](#providers)\n - [SSM](#ssm)\n - [Random](#random)\n- [TODO](#todo)\n\n\n\n## Installation\n\nrun this\n\n```bash\n$ pip install --user --upgrade k8t\n```\n\nrun the following to install [ujson](https://pypi.org/project/ujson/) as a dependency\n\n```bash\n$ pip install --user --upgrade k8t[ujson]\n```\n\n**note**: k8t is not Python 2 compatible\n\n### Docker\n\nYou can also run k8t via docker\n\n```bash\n$ docker run clarksource/k8t:latest\n```\n\n**hint**: the docker image comes with [aws-cli](https://aws.amazon.com/cli/), and [kubectl](https://github.com/kubernetes/kubectl).\n\n### Completion\n\nRun the following and store the file in your distribution/OS specific spot\n\nbash:\n\n```bash\n$ _K8T_COMPLETE=source k8t > k8t-completion.sh\n```\n\nzsh:\n\n```zsh\n$ _K8T_COMPLETE=source_zsh k8t > k8t-completion.sh\n```\n\n## Concepts\n\nBy combining those concepts you can quickly add completely new environments to your deployment pipeline just by\nmodifying specializing values and sharing the rest.\n\nCheck out our examples [here](examples/).\n\n### *Clusters* and *Environments*\n\nk8t comes with a builtin framework for *clusters* and *environments* (e.g. production, staging). This came from the need to be able to deploy\nthe same application over multiple clusters and in different environments with completely different setups and values.\nThis idea is helped by the fact that k8t deep-merges values and configs, allowing easy variation through different\nstages of your application deployment.\n\nBoth *clusters* and *environments* are intentionally working the same way and can be used to add another degree of freedom when\ncombined. *Environments* however are also available globally, meaning clusters can share environment specific\nconfiguration while specifying differences in those environments.\n\n### Templating\n\nTemplating is supported via [Jinja](https://jinja.palletsprojects.com). k8t also comes with some additional\n[helper functions](#template-helper-functions) and a [validation function](#validate-templates) with verbose output to\nquickly verify the written templates.\n\n#### Template helper functions\n\n* `random_password(N: int)` - generate a random string of length N\n* `envvar(key: str, [default])` - get a value from any environment variable with optional default\n* `b64encode(value: str)` - encodes a value in base64 (usually required for secrets)\n* `b64decode(value: str)` - decodes a value from base64\n* `hash(value: str, [method: str])` - hashes a given value (default using `sha256`)\n* `get_secret(key: str)` - provides a secret value from a given provider (see [here](#managing-secrets))\n* `bool(value: Any)` - casts value to boolean (\"true\", \"on\", \"yes\", \"1\", 1 are considered as `True`)\n* `sanitize_label(value: str)` - sanitizes label values according to kubernetes spec\n\n## Configuration inheritance\n\nConfiguration, values and templates are used according to the scope they are in. The following snippet shows an example project with low scores (1) and high scores (4) for evaluation order.\n\nSo variables and templates will be overridden from `project` -> `environments` -> `clusters` -> `cluster-environments` resulting in more specific configuration overriding lower values.\n\n```bash\n. (1) # k8t new project .\n\u251c\u2500\u2500 clusters\n\u2502 \u251c\u2500\u2500 foo (3) # k8t new cluster foo\n\u2502 \u2502 \u251c\u2500\u2500 config.yaml\n\u2502 \u2502 \u251c\u2500\u2500 values.yaml\n\u2502 \u2502 \u251c\u2500\u2500 environments\n\u2502 \u2502 \u2502 \u251c\u2500\u2500 production (4) # k8t new environment production -c foo\n\u2502 \u2502 \u2502 \u2502 \u251c\u2500\u2500 config.yaml\n\u2502 \u2502 \u2502 \u2502 \u2514\u2500\u2500 values.yaml\n\u2502 \u2502 \u2502 \u2514\u2500\u2500 staging (4) # k8t new environment staging -c foo\n\u2502 \u2502 \u2502 \u251c\u2500\u2500 config.yaml\n\u2502 \u2502 \u2502 \u251c\u2500\u2500 values.yaml\n\u2502 \u2502 \u2502 \u2514\u2500\u2500 templates\n\u2502 \u2502 \u2502 \u2514\u2500\u2500 deployment.yaml.j2 (4) # k8t new template deployment -c foo -e staging\n\u2502 \u2502 \u2514\u2500\u2500 templates\n\u2502 \u2502 \u2514\u2500\u2500 deployment.yaml.j2 (3) # k8t new template deployment -c foo\n\u2502 \u2514\u2500\u2500 bar (3) # k8t new cluster bar\n\u2502 \u251c\u2500\u2500 config.yaml\n\u2502 \u2514\u2500\u2500 values.yaml\n\u251c\u2500\u2500 environments\n\u2502 \u251c\u2500\u2500 production (2) # k8t new environment production\n\u2502 \u2502 \u251c\u2500\u2500 config.yaml\n\u2502 \u2502 \u2514\u2500\u2500 values.yaml\n\u2502 \u2514\u2500\u2500 staging (2) # k8t new environment staging\n\u2502 \u251c\u2500\u2500 config.yaml\n\u2502 \u2514\u2500\u2500 values.yaml\n\u251c\u2500\u2500 config.yaml (1)\n\u2514\u2500\u2500 values.yaml (1)\n\n```\n\n## Usage\n\n### Scaffolding\n\nCreate a new project folder with a cluster directory and an empty defaults file\n\n```bash\n$ k8t new project .\n```\n\nCreate a new cluster\n\n```bash\n$ k8t new cluster MyCluster\n```\n\nCreate a new global environment\n\n```bash\n$ k8t new environment staging\n```\n\nAnd a new cluster environment\n\n```bash\nk8t new environment staging -c MyCluster\n```\n\nGenerate a new deployment template for cluster MyCluster (for a list of available templates see the `k8t new template --help`)\n\n```bash\n$ k8t new template deployment -c MyCluster -e staging\n```\n\n### Config management\n\nTo ease file access a little bit k8t can open config and value files in your `$EDITOR` or fallback to a sensible\ndefault.\n\n```bash\n$ k8t edit values --environment staging\n```\n\n```bash\n$ k8t edit config --cluster MyCluster\n```\n\n### Validate templates\n\nWhile validation is done before generating, templates can be validated for environment files easily.\n\n```bash\n$ k8t validate\n```\n\nTo validate for clusters/environments the usual options can be used\n\n```bash\n$ k8t validate -c MyCluster -e production\n```\n\n#### Shortcomings\n\nThe validation is currently not a 100% correct and can miss certain edge cases. If you notice any other issues please let us know.\n\n##### is defined\n\nThe following will result in a false negative for `foobar` being defined\n\n```\n{{ foobar }}\n\n{% if foobar is defined %}\n{{ foobar }}\n{% endif %}\n```\n\nTo avoid this make sure that the `is defined` test is applied to all instances of the variable.\n\nThe following may result in a false positive for `bar` being undefined\n\n```\n{% if foobar is defined %}\n{{ bar }}\n{% endif %}\n```\n\n### Generate manifests\n\nThe **--cluster** flag will load variables from a directory. By default the file **default.yaml** in that directory will be\nloaded, however an environment can be specified with **--environment**.\n\n```bash\n$ k8t gen -c MyCluster -e staging\n```\n\nAdditionally k8t will attempt to load a file **defaults.yaml** in the root directory. This way a set of default\nvariables can be specified and selectively overriden via cluster and environment.\n\nAdditional values can be given via flag **--value-file** in the form of a file or **--value KEY VALUE**, both can be\nsupplied multiple times.\n\nVariables will be merged via deep merging. Default merge strategy is left-to-right.\n\n### Overriding templates\n\nTemplates can be overriden on a cluster/environment level.\n\nIf a file `application.yaml` exists in the root templates folder, simply add a file with the same name to the\ncluster/environment template folder.\n\n### Managing secrets\n\nSecrets can be interpolated with the helper function `get_secret`. It requires a key as first argument and providers\nare configurable by environment/cluster.\n\n```yaml\nfoobar: \"{{ get_secret('/my-key') }}\"\n```\n\n#### Providers\n\n##### SSM\n\nSetup secrets on SSM\n\n```yaml\nsecrets:\n provider: ssm\n region: \"eu-central-1\"\n prefix: \"/foobar\"\n```\n\n> Keep in mind that SSM parameter names can be formed as a path and they can only consist of sub-paths divided by slash symbol; each sub-path can be formed as a mix of letters, numbers and the following 3 symbols: `.-_`\n>\n> Be careful to follow this format when setting up the provider `prefix` and `get_secret(key)`.\n\n##### Random\n\nRandom secrets can be generated easily by using the random provider. This provider uses a global dictionary to store\nresults for the time of the run in python so keys should always produce the same result.\n\n```yaml\nsecrets:\n provider: random\n```\n\n##### Hash\n\nIn case consistent (fake) secrets are needed, the `hash` provider can be used that hashes the secret key for the value.\n\n```yaml\nsecrets:\n provider: hash\n```\n\n## TODO\n\n* testing needs to be expanded\n* the ability to add additional template directories via the CLI\n* validation functions for template values (e.g. memory/cpu values)\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ClarkSource/k8t", "keywords": "kubernetes,jinja,multi-cluster,templating", "license": "", "maintainer": "", "maintainer_email": "", "name": "k8t", "package_url": "https://pypi.org/project/k8t/", "platform": "linux", "project_url": "https://pypi.org/project/k8t/", "project_urls": { "Homepage": "https://github.com/ClarkSource/k8t" }, "release_url": "https://pypi.org/project/k8t/0.7.8/", "requires_dist": [ "Jinja2", "ruamel.yaml", "boto3", "click", "coloredlogs", "simple-tools", "bitmath", "ujson ; extra == 'ujson'" ], "requires_python": "", "summary": "Kubernetes templating engine based on Jinja2", "version": "0.7.8", "yanked": false, "yanked_reason": null }, "last_serial": 13782029, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "363ed48b20651521fa3960ad77098ce7", "sha256": "c72de91e104d8f0f65e56edb0ff920584a2ea0ed8e0a84df47c89f22572b65ee" }, "downloads": -1, "filename": "k8t-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "363ed48b20651521fa3960ad77098ce7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16929, "upload_time": "2019-10-21T08:25:42", "upload_time_iso_8601": "2019-10-21T08:25:42.652770Z", "url": "https://files.pythonhosted.org/packages/7b/c9/742a94c4f29c8f22d9efbfaca756ea87321548e6573e3220a42e00254c1f/k8t-0.1.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "38b5f16f8a53e4515909934d046908c5", "sha256": "e8c44506ab57fe5e6940bcbd9a5b8d995bf0b40aa7653e5e28187af32983b3fc" }, "downloads": -1, "filename": "k8t-0.1.0.tar.gz", "has_sig": false, "md5_digest": "38b5f16f8a53e4515909934d046908c5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8824, "upload_time": "2019-10-21T08:25:46", "upload_time_iso_8601": "2019-10-21T08:25:46.138524Z", "url": "https://files.pythonhosted.org/packages/fb/a5/9e04a5f1cdb19d2cf9aadd185d68e9dabee83b458a9dfc456d04f761484c/k8t-0.1.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.10.post4": [ { "comment_text": "", "digests": { "md5": "348a68fad15444c55a52956738bf1a5f", "sha256": "c8217922b43e3fd754239ad86d4aeee8dc1bebe10b0d5ec7dd9bf80b3c37ccbe" }, "downloads": -1, "filename": "k8t-0.1.10.post4-py3-none-any.whl", "has_sig": false, "md5_digest": "348a68fad15444c55a52956738bf1a5f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21671, "upload_time": "2020-01-24T16:21:20", "upload_time_iso_8601": "2020-01-24T16:21:20.544572Z", "url": "https://files.pythonhosted.org/packages/ed/13/27a10dddebbed71dcbaed0da47e4139223e914b20df7345f8707bf3dc15d/k8t-0.1.10.post4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "b875ff442584bff626c93dc4ceedffe8", "sha256": "7c802507884d03114809058179f4d99c22351b1f0562e823a7a15c92c36d93d4" }, "downloads": -1, "filename": "k8t-0.1.10.post4.tar.gz", "has_sig": false, "md5_digest": "b875ff442584bff626c93dc4ceedffe8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21406, "upload_time": "2020-01-24T16:21:22", "upload_time_iso_8601": "2020-01-24T16:21:22.050781Z", "url": "https://files.pythonhosted.org/packages/a7/cc/7a55e66c11bea3ccf8d25943fbc0c7523a51c11ddfda120d90810ab3e10a/k8t-0.1.10.post4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.11": [ { "comment_text": "", "digests": { "md5": "e2cf4e3bd81ba143d836d954f037998e", "sha256": "c63678e8c6f695ce275cfe543c4d0fe33d155f24f391437451bb1084dcc1e062" }, "downloads": -1, "filename": "k8t-0.1.11-py3-none-any.whl", "has_sig": false, "md5_digest": "e2cf4e3bd81ba143d836d954f037998e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21618, "upload_time": "2020-01-30T09:47:06", "upload_time_iso_8601": "2020-01-30T09:47:06.313923Z", "url": "https://files.pythonhosted.org/packages/15/c9/511a73c702f0509b445a370321db6d23ecf9388208725c2a9834a1ab9605/k8t-0.1.11-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "8b6d78c057d88a80a2be0775bbebfd5a", "sha256": "8d838ec350d793b8b450fd73512d6d8359fd74d151166992d628cd8d7402910b" }, "downloads": -1, "filename": "k8t-0.1.11.tar.gz", "has_sig": false, "md5_digest": "8b6d78c057d88a80a2be0775bbebfd5a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21667, "upload_time": "2020-01-30T09:47:07", "upload_time_iso_8601": "2020-01-30T09:47:07.853681Z", "url": "https://files.pythonhosted.org/packages/12/6a/b1056ff8d4c478e522a0dd5551e298611557835b6a386f1abe953fde5d4b/k8t-0.1.11.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "58a32f75450c8359e5f3843bab502bd5", "sha256": "5d76bc604a4ff1e36d3fed24c47bed78b28e55c74fc56941f2b8fe1d185d054f" }, "downloads": -1, "filename": "k8t-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "58a32f75450c8359e5f3843bab502bd5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18457, "upload_time": "2019-10-21T08:46:15", "upload_time_iso_8601": "2019-10-21T08:46:15.536497Z", "url": "https://files.pythonhosted.org/packages/54/c0/f9706e7f5194e187d7240cbbf79ffb305c487e521836a58ee6906bba5642/k8t-0.1.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "571a3ea97e6a24d92851df8792314f0b", "sha256": "6c3fc17aebc64edd11a3d2d1b7745562000449226ce905f164fb811afca5eb5c" }, "downloads": -1, "filename": "k8t-0.1.2.tar.gz", "has_sig": false, "md5_digest": "571a3ea97e6a24d92851df8792314f0b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11060, "upload_time": "2019-10-21T08:46:17", "upload_time_iso_8601": "2019-10-21T08:46:17.064873Z", "url": "https://files.pythonhosted.org/packages/49/46/4ae4e7b261503b813b34ab7e0b9ffd3142620ab4cc1ff33288874f09a3ad/k8t-0.1.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "961b82a08dc40595b0bab0d9c9569bea", "sha256": "6728f512f04ef25f5b66e3a9b8f70438056abd9cc35a453f1ef5c325af35e811" }, "downloads": -1, "filename": "k8t-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "961b82a08dc40595b0bab0d9c9569bea", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21105, "upload_time": "2019-10-31T09:57:32", "upload_time_iso_8601": "2019-10-31T09:57:32.391254Z", "url": "https://files.pythonhosted.org/packages/6f/ab/3377f79cd9a66449d4228003eb2321010057593efe04ed81edfc286a7181/k8t-0.1.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "d0d8bfeb770dc136fc9597420d6e73bf", "sha256": "b8da4753a76ec13ceb293c81732117808819aa3305cabb6427d1f9528f26668c" }, "downloads": -1, "filename": "k8t-0.1.4.tar.gz", "has_sig": false, "md5_digest": "d0d8bfeb770dc136fc9597420d6e73bf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20505, "upload_time": "2019-10-31T09:57:35", "upload_time_iso_8601": "2019-10-31T09:57:35.027190Z", "url": "https://files.pythonhosted.org/packages/a2/c5/0cf995fcb5e3438e3e11126e1bd53199bcbd4b8fc8bf6026a04461081714/k8t-0.1.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "026f23cdf457d44cac9870ba69df7499", "sha256": "590317df2f594c73f0deabbb8cb94f59f3563ded6d443bf16ae98cf42a5e89c1" }, "downloads": -1, "filename": "k8t-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "026f23cdf457d44cac9870ba69df7499", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20675, "upload_time": "2019-10-31T10:58:43", "upload_time_iso_8601": "2019-10-31T10:58:43.139501Z", "url": "https://files.pythonhosted.org/packages/26/7d/00b68eca9ac567144fcd4966a763b180128611f1523d6057151f15d33541/k8t-0.1.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "36a01feaa65af3432db8cc60dfc22375", "sha256": "4fed859507e146495a34d9174aa09d72b3b5fb424fb83fc4ed426a358d963cda" }, "downloads": -1, "filename": "k8t-0.1.5.tar.gz", "has_sig": false, "md5_digest": "36a01feaa65af3432db8cc60dfc22375", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20543, "upload_time": "2019-10-31T10:58:44", "upload_time_iso_8601": "2019-10-31T10:58:44.858651Z", "url": "https://files.pythonhosted.org/packages/ab/ec/9c98ee45232bbd1430c566808b7a21f67cbc68cd9905a0464be631aab49e/k8t-0.1.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "a38c1497a174acbd7e0e1eff8cd37c6b", "sha256": "6c3391a0be43d5d63d9d128e8dd821e69b27fb1f1a50049b49e2c069e2a47ebd" }, "downloads": -1, "filename": "k8t-0.1.6-py3-none-any.whl", "has_sig": false, "md5_digest": "a38c1497a174acbd7e0e1eff8cd37c6b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20804, "upload_time": "2019-11-06T10:43:51", "upload_time_iso_8601": "2019-11-06T10:43:51.704834Z", "url": "https://files.pythonhosted.org/packages/d7/ca/5b583c7b5573498b30f874afb5229788b74d87ede61e3fcda1ab68fdb190/k8t-0.1.6-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "85b3f5627a5331a2da965752bd6a356d", "sha256": "f812aef93c2772188b32ae1029a6a06bdf192b6617dbf8c81de1d48b32a1b8ff" }, "downloads": -1, "filename": "k8t-0.1.6.tar.gz", "has_sig": false, "md5_digest": "85b3f5627a5331a2da965752bd6a356d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20732, "upload_time": "2019-11-06T10:43:53", "upload_time_iso_8601": "2019-11-06T10:43:53.400462Z", "url": "https://files.pythonhosted.org/packages/a8/87/512d88dc0f6f87f779960f55d8627c980077137b4010e7e4a44165e74b2c/k8t-0.1.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "7afbc83e71a90b1815d145cac05e40bf", "sha256": "888e831d78f765b667c072612cd3649ff45f3645b46a06e3ecc76e6f0ade3824" }, "downloads": -1, "filename": "k8t-0.1.7-py3-none-any.whl", "has_sig": false, "md5_digest": "7afbc83e71a90b1815d145cac05e40bf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20917, "upload_time": "2019-11-06T11:17:10", "upload_time_iso_8601": "2019-11-06T11:17:10.868913Z", "url": "https://files.pythonhosted.org/packages/1d/a1/8f2034ad6f0c025d77dfeaddd4d6605ac851b9b188ac1f9282728f64224b/k8t-0.1.7-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a63a5e14ea2afe5066ddcd4c65f7d730", "sha256": "e4c1440c6a4c7fb03e52d84ee3b93cfd67471ea3d066f77ee00b153ad2489de6" }, "downloads": -1, "filename": "k8t-0.1.7.tar.gz", "has_sig": false, "md5_digest": "a63a5e14ea2afe5066ddcd4c65f7d730", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20877, "upload_time": "2019-11-06T11:17:12", "upload_time_iso_8601": "2019-11-06T11:17:12.537690Z", "url": "https://files.pythonhosted.org/packages/ab/62/b96542be8d88b39ad85ce6cf58f7173bf6f98b319bac09e20bc17dbabe37/k8t-0.1.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "26c1cb4b01683faf7c05fb5b361f4588", "sha256": "99be8ccbc3b08c0aa787dc7b52ccd5f297d0b702461133d910d49c99c535a43d" }, "downloads": -1, "filename": "k8t-0.1.8-py3-none-any.whl", "has_sig": false, "md5_digest": "26c1cb4b01683faf7c05fb5b361f4588", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21023, "upload_time": "2019-11-06T21:21:12", "upload_time_iso_8601": "2019-11-06T21:21:12.125233Z", "url": "https://files.pythonhosted.org/packages/b9/c0/4e3f8a9d20b995d0db6c225965a7f62e7a7737ad38d6b665437797385c8c/k8t-0.1.8-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "75a77427a45151a840432ed28756a34e", "sha256": "6d0a946deb2fe26cd6f31c0f27d92f33c801136be0c4be93e9e4f710adebf0d0" }, "downloads": -1, "filename": "k8t-0.1.8.tar.gz", "has_sig": false, "md5_digest": "75a77427a45151a840432ed28756a34e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20969, "upload_time": "2019-11-06T21:21:13", "upload_time_iso_8601": "2019-11-06T21:21:13.508632Z", "url": "https://files.pythonhosted.org/packages/6f/27/72cc6f5e2cfcbaabd778cf60005d94f8fb883ddc1b85191e531fdf63b3b0/k8t-0.1.8.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "868b1a8536c8ebc1871337b3caf8fb82", "sha256": "55dd33a50827d239bb0f03fa872549ccfed9a8a706514c677677b9f76047f2bc" }, "downloads": -1, "filename": "k8t-0.1.9-py3-none-any.whl", "has_sig": false, "md5_digest": "868b1a8536c8ebc1871337b3caf8fb82", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21031, "upload_time": "2019-11-07T10:26:43", "upload_time_iso_8601": "2019-11-07T10:26:43.078783Z", "url": "https://files.pythonhosted.org/packages/d6/cd/3a55e855474e2dc0d6cc13ea5435127bdad15d3bcc3cca2a34fb859e4862/k8t-0.1.9-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f183b8eb22e65de7af56cb03e5d507f6", "sha256": "7ad1821afb380ffa79c0a8efe9438110ba0954ae6974b9de83ae2585299027bf" }, "downloads": -1, "filename": "k8t-0.1.9.tar.gz", "has_sig": false, "md5_digest": "f183b8eb22e65de7af56cb03e5d507f6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20971, "upload_time": "2019-11-07T10:26:44", "upload_time_iso_8601": "2019-11-07T10:26:44.474782Z", "url": "https://files.pythonhosted.org/packages/93/82/36d8251277395818ead802e5052860870c33a3e28151f194f2acde7da6d4/k8t-0.1.9.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "0652d97217e0a5f8eebe4ad03c09ef98", "sha256": "202d9877a617c43a4681985160102f8a491f10b7592ee03b527142b0d88fd8be" }, "downloads": -1, "filename": "k8t-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "0652d97217e0a5f8eebe4ad03c09ef98", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 25383, "upload_time": "2020-02-07T15:44:37", "upload_time_iso_8601": "2020-02-07T15:44:37.716921Z", "url": "https://files.pythonhosted.org/packages/dd/7b/91d6cfdd7f848bc788c724c0568c6d7721762d2eadea5bbd16bf5528de5f/k8t-0.2.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a24db8ccdae276d7ca3b6062eadacf05", "sha256": "e0d02b0dec34c7a834ce4aba2c9f8ceaa501e487467f7c207aa93efa6e5baa00" }, "downloads": -1, "filename": "k8t-0.2.0.tar.gz", "has_sig": false, "md5_digest": "a24db8ccdae276d7ca3b6062eadacf05", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27145, "upload_time": "2020-02-07T15:44:39", "upload_time_iso_8601": "2020-02-07T15:44:39.749019Z", "url": "https://files.pythonhosted.org/packages/2f/55/2daab437ddf64e8b72c08d3a279d40d36bf2bfa4099fede34efdbb2b2ef9/k8t-0.2.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "25ca45a231fc3fb502c16169fddea44f", "sha256": "001946d492ae2a8c199d1d3e88ece87d9355db6ac6e3be6f6caf7e20125f89d4" }, "downloads": -1, "filename": "k8t-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "25ca45a231fc3fb502c16169fddea44f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 25604, "upload_time": "2020-02-24T13:15:51", "upload_time_iso_8601": "2020-02-24T13:15:51.158197Z", "url": "https://files.pythonhosted.org/packages/89/a9/6e00b187a7d9afe6a9f9677294c7a4b2d2e5ad6069cc3d34f0f5e7b2aeaa/k8t-0.2.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "9c378377451a02f63b9dd5b4cc888c73", "sha256": "70c239294aad9ee9b3834e09498b6395f95377e4bdfb1662271e2a25ad01125e" }, "downloads": -1, "filename": "k8t-0.2.1.tar.gz", "has_sig": false, "md5_digest": "9c378377451a02f63b9dd5b4cc888c73", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27987, "upload_time": "2020-02-24T13:15:52", "upload_time_iso_8601": "2020-02-24T13:15:52.693607Z", "url": "https://files.pythonhosted.org/packages/91/7f/5091196c6f75a02b52e1c0149e052b8b64c907864a1bb00eb9b2df2c90dc/k8t-0.2.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "1a869e5579ca345999873a3d7d1605ab", "sha256": "cdf2f7d26ce8b080037377c44b941721ce45dfe2d35d9177e43a25d0b6984233" }, "downloads": -1, "filename": "k8t-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "1a869e5579ca345999873a3d7d1605ab", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 25659, "upload_time": "2020-04-15T11:33:03", "upload_time_iso_8601": "2020-04-15T11:33:03.574715Z", "url": "https://files.pythonhosted.org/packages/79/50/c60f7a38904a596229ddb3e730dae01badbb6793d4485a5bfb3fb9d4c4c3/k8t-0.3.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "4f84a74850f6fd78309264ee15b2b956", "sha256": "854be01c3921e0fd4557ad717fcffdcbf66e828074f6aeccf0520526c9147b07" }, "downloads": -1, "filename": "k8t-0.3.0.tar.gz", "has_sig": false, "md5_digest": "4f84a74850f6fd78309264ee15b2b956", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28194, "upload_time": "2020-04-15T11:33:05", "upload_time_iso_8601": "2020-04-15T11:33:05.073257Z", "url": "https://files.pythonhosted.org/packages/7d/39/d4e80b98721e56ac601a4899a3d7c1604ddcffc4663d54219b47f086061d/k8t-0.3.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "51799908fb9a83428349fd95f41edb8c", "sha256": "75dfb59d1291c8c47e170b2b1ea9fb2a3cf28d28a520e1e863aa6cbf1a1b42d6" }, "downloads": -1, "filename": "k8t-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "51799908fb9a83428349fd95f41edb8c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 25798, "upload_time": "2020-05-11T10:26:39", "upload_time_iso_8601": "2020-05-11T10:26:39.599070Z", "url": "https://files.pythonhosted.org/packages/19/4b/f25d831a6e1800845709865a78ddb8ede7055f1bfd2c29c79b6b6e68cd8c/k8t-0.3.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "3ff1aeb49231ab693eb65608917891e5", "sha256": "97fc318de9e200695c0133378acde1d83ee1e13feb4d5056d7f2254a311584a8" }, "downloads": -1, "filename": "k8t-0.3.1.tar.gz", "has_sig": false, "md5_digest": "3ff1aeb49231ab693eb65608917891e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28486, "upload_time": "2020-05-11T10:26:41", "upload_time_iso_8601": "2020-05-11T10:26:41.046226Z", "url": "https://files.pythonhosted.org/packages/de/71/4625ee2aa556219d84da6c559cf685609338e0f5e6cad2f4605180453d5e/k8t-0.3.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "4197624ada62af43b14fe8df092bf490", "sha256": "c130be6a8a7f2fbcdc1d4bfdf88104c1ebd34b697d8da7b5d4bd66615f1ef47a" }, "downloads": -1, "filename": "k8t-0.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "4197624ada62af43b14fe8df092bf490", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 25798, "upload_time": "2020-05-27T15:45:04", "upload_time_iso_8601": "2020-05-27T15:45:04.391881Z", "url": "https://files.pythonhosted.org/packages/01/7f/d3e0fe8f3ea4086dfee6cc6295cd70ec65d4a8c2f380f79b725996705c2f/k8t-0.3.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e1ad6a04de610f3b05dfa7b1d8af0916", "sha256": "5fc683334ed1cf8c059d0332b83b555de93250c80a8ac635430e424d0b0b89cd" }, "downloads": -1, "filename": "k8t-0.3.2.tar.gz", "has_sig": false, "md5_digest": "e1ad6a04de610f3b05dfa7b1d8af0916", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28477, "upload_time": "2020-05-27T15:45:05", "upload_time_iso_8601": "2020-05-27T15:45:05.630383Z", "url": "https://files.pythonhosted.org/packages/60/a4/5839afebc29998ee68e822dad48acec43d2b8956c497ce05b1ffee1515cf/k8t-0.3.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "b41495df6e7be8cd2a0e7235f33a18bc", "sha256": "0e039f2882a9f98f5491c381f6cdbfde1374e43c23bc5482e247c5c6906bf4ad" }, "downloads": -1, "filename": "k8t-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b41495df6e7be8cd2a0e7235f33a18bc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26221, "upload_time": "2020-06-15T16:58:21", "upload_time_iso_8601": "2020-06-15T16:58:21.282782Z", "url": "https://files.pythonhosted.org/packages/58/a8/86b62c620e5b5faafd197e13ccb7963601dd9bf8fbc23a22d2d4cd38430d/k8t-0.4.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "6f40c8ab3c36e70b3cdb0a5853ceac86", "sha256": "fade2ad94713eaa7bc4989c46fed8dff8a0db0fdadba1f60b09054cea8e0a2ea" }, "downloads": -1, "filename": "k8t-0.4.0.tar.gz", "has_sig": false, "md5_digest": "6f40c8ab3c36e70b3cdb0a5853ceac86", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29277, "upload_time": "2020-06-15T16:58:22", "upload_time_iso_8601": "2020-06-15T16:58:22.837529Z", "url": "https://files.pythonhosted.org/packages/58/9a/0730323552637a32d7f019d05384429f670ab41f194e0fad5cdb54d19a79/k8t-0.4.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "bb1ef8c6af7aa2f1461585487f5f7d1a", "sha256": "904f9cb96b9279fea440599abbdf0b36a1fd7566b3f2ff221f5062f00cff9f88" }, "downloads": -1, "filename": "k8t-0.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "bb1ef8c6af7aa2f1461585487f5f7d1a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26219, "upload_time": "2020-06-16T09:45:53", "upload_time_iso_8601": "2020-06-16T09:45:53.511460Z", "url": "https://files.pythonhosted.org/packages/db/8d/40338599e6e31290b09db686a8767aef80a000145a98019898806b483cb1/k8t-0.4.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "868c56f51f9dbf9ee0341054f3b456e5", "sha256": "5b0e303e67f95d20b595e8a7e607cbc1c7b2d5e296cb4b96f99badbb5a942a4f" }, "downloads": -1, "filename": "k8t-0.4.1.tar.gz", "has_sig": false, "md5_digest": "868c56f51f9dbf9ee0341054f3b456e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29277, "upload_time": "2020-06-16T09:45:54", "upload_time_iso_8601": "2020-06-16T09:45:54.752192Z", "url": "https://files.pythonhosted.org/packages/77/89/c3d7503f1dbc06e6504d7118095d5232d767736c22ab7b8d321b8d981c2d/k8t-0.4.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "6b71fc43ef95fa14422883f45bbf8c0d", "sha256": "cf1f9ae270bc24d2a99885db99a52dfdcc05b982803a2cf770558d690eb90354" }, "downloads": -1, "filename": "k8t-0.4.2-py3-none-any.whl", "has_sig": false, "md5_digest": "6b71fc43ef95fa14422883f45bbf8c0d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26219, "upload_time": "2020-06-26T15:34:55", "upload_time_iso_8601": "2020-06-26T15:34:55.326280Z", "url": "https://files.pythonhosted.org/packages/ac/f7/3c0be4b288a8b108a13a2c38e6fb12e3ce6a0f5fb485a8c2bee2ea3a2923/k8t-0.4.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "b66bedde540dddefea910541a2b665d0", "sha256": "311f8a88944cb568d3fd34b0db9ba021716b8021f3c2d82decdeba65e09a19c5" }, "downloads": -1, "filename": "k8t-0.4.2.tar.gz", "has_sig": false, "md5_digest": "b66bedde540dddefea910541a2b665d0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29835, "upload_time": "2020-06-26T15:34:56", "upload_time_iso_8601": "2020-06-26T15:34:56.683049Z", "url": "https://files.pythonhosted.org/packages/92/29/7ffdd215dd79cae6415ba3953c7e32c8ca7e1af2be66ab394f67c3a185fb/k8t-0.4.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "70e497f6bb2a87600ec9110247ec0bdd", "sha256": "1886c8bd25a41d4d0fa2229246c8673943cdf7a03aeaf1c47162ca0039243433" }, "downloads": -1, "filename": "k8t-0.4.3-py3-none-any.whl", "has_sig": false, "md5_digest": "70e497f6bb2a87600ec9110247ec0bdd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26279, "upload_time": "2020-07-21T08:15:55", "upload_time_iso_8601": "2020-07-21T08:15:55.783673Z", "url": "https://files.pythonhosted.org/packages/11/84/02387ea655114e2075f7fd85e91a0752c52dc07eccf4e97897a58dea9fec/k8t-0.4.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a95b24ac8bdfa2abad5c5a7259d7615b", "sha256": "49d768ec06a65bef89b1160962c33dc463f2911f42149abe98bd71a709650510" }, "downloads": -1, "filename": "k8t-0.4.3.tar.gz", "has_sig": false, "md5_digest": "a95b24ac8bdfa2abad5c5a7259d7615b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30228, "upload_time": "2020-07-21T08:15:57", "upload_time_iso_8601": "2020-07-21T08:15:57.137698Z", "url": "https://files.pythonhosted.org/packages/d0/25/d06587f22609d8253b12bea745902f197be6674f29938c4fc6a6e9349f04/k8t-0.4.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.4": [ { "comment_text": "", "digests": { "md5": "9094ac12d29d782a6590f609c8a9ade9", "sha256": "242e50f0a5e023c1edcaf52bec02547f80763db7b98d3768debc22719243134c" }, "downloads": -1, "filename": "k8t-0.4.4-py3-none-any.whl", "has_sig": false, "md5_digest": "9094ac12d29d782a6590f609c8a9ade9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26558, "upload_time": "2020-08-03T07:42:29", "upload_time_iso_8601": "2020-08-03T07:42:29.254779Z", "url": "https://files.pythonhosted.org/packages/d5/78/ae75141960615f8ec81c59960a7fb9aea63080e194f624a3c8ebb7702c0b/k8t-0.4.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "170d594825c3b205edce54a55cc9bd5b", "sha256": "08fee51147dcc48f9f16f63af2775688a6540fb86dda7a897bab846903c8a879" }, "downloads": -1, "filename": "k8t-0.4.4.tar.gz", "has_sig": false, "md5_digest": "170d594825c3b205edce54a55cc9bd5b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31084, "upload_time": "2020-08-03T07:42:32", "upload_time_iso_8601": "2020-08-03T07:42:32.486484Z", "url": "https://files.pythonhosted.org/packages/6c/9d/c72bc700929f34e9b957a6b91577ef571dcd22f6eb7abec6fe1c84ea4eda/k8t-0.4.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.5": [ { "comment_text": "", "digests": { "md5": "f9887c8021a2ce289f8255bf0656bba4", "sha256": "6ce2ab5ca195f14a2e6ba8ee03a5b819fa2c7150ad289481d017556427c3e7e8" }, "downloads": -1, "filename": "k8t-0.4.5-py3-none-any.whl", "has_sig": false, "md5_digest": "f9887c8021a2ce289f8255bf0656bba4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26686, "upload_time": "2020-08-12T14:06:52", "upload_time_iso_8601": "2020-08-12T14:06:52.506779Z", "url": "https://files.pythonhosted.org/packages/49/b5/2652078984f2d4355b360e61e00cb41f6b3ad065fa7722861cb78554d1db/k8t-0.4.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "d92bfa5addec1e97063e3fa3f75c75b0", "sha256": "6a7777ba2ffaab6c646ce21e5ab10825c8372a36aaec3283e15c82f84f622c57" }, "downloads": -1, "filename": "k8t-0.4.5.tar.gz", "has_sig": false, "md5_digest": "d92bfa5addec1e97063e3fa3f75c75b0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31259, "upload_time": "2020-08-12T14:06:54", "upload_time_iso_8601": "2020-08-12T14:06:54.015761Z", "url": "https://files.pythonhosted.org/packages/3f/19/d7e8f404224d3628982e8ac96b3245224661a908bd8bde1c52082ba88fa6/k8t-0.4.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.6": [ { "comment_text": "", "digests": { "md5": "636909668674277abdebb06c4378db34", "sha256": "d86edc3b984cd4a3acb5932c64e9c3246c7ea433926f98d020a4d861ea2487fa" }, "downloads": -1, "filename": "k8t-0.4.6-py3-none-any.whl", "has_sig": false, "md5_digest": "636909668674277abdebb06c4378db34", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 27144, "upload_time": "2020-09-22T14:38:09", "upload_time_iso_8601": "2020-09-22T14:38:09.798702Z", "url": "https://files.pythonhosted.org/packages/e2/1e/ae5bc77d10412f7e9bfe3deec78a2219018c9895ca40ee232f3f4d3347cf/k8t-0.4.6-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "aea6404a24e4912c72d3ba6fdd23814c", "sha256": "51e25c157daecefc299641c52fc05c51267a3cd102932d289dc5aed4ff569f77" }, "downloads": -1, "filename": "k8t-0.4.6.tar.gz", "has_sig": false, "md5_digest": "aea6404a24e4912c72d3ba6fdd23814c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32359, "upload_time": "2020-09-22T14:38:11", "upload_time_iso_8601": "2020-09-22T14:38:11.473981Z", "url": "https://files.pythonhosted.org/packages/7b/7a/27cf068f07971c814827e58dc5dc3ac1b2308cd47747778ade5560f6236c/k8t-0.4.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "b278111960143408a6ffd66d7a88f798", "sha256": "6fd3dcc2351a8e4436e1eef77d87ac5a362c71496fa31b78a741a13d9d66281a" }, "downloads": -1, "filename": "k8t-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b278111960143408a6ffd66d7a88f798", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 27258, "upload_time": "2020-11-03T14:00:40", "upload_time_iso_8601": "2020-11-03T14:00:40.558781Z", "url": "https://files.pythonhosted.org/packages/18/9a/f5fc429b0e8933420eea61f45077665f14e5de9854a5dbf6761035720ed2/k8t-0.5.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "d2f38e7b1ee6f37920c2bb5c2529a61b", "sha256": "d71c37ed62f791042c99039c61cd8a1e8c9df5bb94918df752ba9753f0b18ed6" }, "downloads": -1, "filename": "k8t-0.5.0.tar.gz", "has_sig": false, "md5_digest": "d2f38e7b1ee6f37920c2bb5c2529a61b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38227, "upload_time": "2020-11-03T14:00:42", "upload_time_iso_8601": "2020-11-03T14:00:42.958397Z", "url": "https://files.pythonhosted.org/packages/e4/23/5a072dc4cb1683ae06f803ee48f0a957b74fe658b4554f26e46fb9cf06b0/k8t-0.5.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "71f1843630e886a9b4c1ff62d015c179", "sha256": "72db07528c5fec53753091ffcee46c666a7c91cce1d190e161db7362ae3d12a4" }, "downloads": -1, "filename": "k8t-0.5.1-py3-none-any.whl", "has_sig": false, "md5_digest": "71f1843630e886a9b4c1ff62d015c179", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 27367, "upload_time": "2020-11-10T17:33:24", "upload_time_iso_8601": "2020-11-10T17:33:24.544245Z", "url": "https://files.pythonhosted.org/packages/25/ef/4d8232d5a2a42234bcaa31bd0eb4b0714302fc2d5438f4fdf599b7b2f1fb/k8t-0.5.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "755e5d45bd62c77217aaac6ba07e6732", "sha256": "e81a52a3b3e4be94e917072cc1a99f3a7bccd76299d88f125a246b5a7ae6d583" }, "downloads": -1, "filename": "k8t-0.5.1.tar.gz", "has_sig": false, "md5_digest": "755e5d45bd62c77217aaac6ba07e6732", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38609, "upload_time": "2020-11-10T17:33:25", "upload_time_iso_8601": "2020-11-10T17:33:25.866492Z", "url": "https://files.pythonhosted.org/packages/12/3b/2ed3ce28123fe8aeb1fa25b842260da760ce95feabc15e58fafa429b9d62/k8t-0.5.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "8537a045f8e44e0d2d3ca536c85974a7", "sha256": "0712cebc128517e0e380fa33f77892475701d5278961659dc091e9e60a5e1db6" }, "downloads": -1, "filename": "k8t-0.5.2-py3-none-any.whl", "has_sig": false, "md5_digest": "8537a045f8e44e0d2d3ca536c85974a7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 27383, "upload_time": "2020-11-18T09:02:12", "upload_time_iso_8601": "2020-11-18T09:02:12.698570Z", "url": "https://files.pythonhosted.org/packages/12/f5/66f5b2bbdb6d84556e01459eee76688bf501b2a50a9d2cb35dd2e0628f06/k8t-0.5.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "220f18de4ac2d1caf9af37a608603586", "sha256": "17c39baae6c5e2c298271176bcbb1015f71e29c0cc88c806e3a80f7a1eacfdcb" }, "downloads": -1, "filename": "k8t-0.5.2.tar.gz", "has_sig": false, "md5_digest": "220f18de4ac2d1caf9af37a608603586", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38660, "upload_time": "2020-11-18T09:02:14", "upload_time_iso_8601": "2020-11-18T09:02:14.366792Z", "url": "https://files.pythonhosted.org/packages/c9/bb/61bac67a040fb65eb5429acf53720e5bfad97d3e46c718e7cbe14ad41d56/k8t-0.5.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "2219ca56047ba10766f0b94a5650da82", "sha256": "64f4fab3f2a643f087c95c00d56c6c97e95b9290693e635d66e47ae6867031e6" }, "downloads": -1, "filename": "k8t-0.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "2219ca56047ba10766f0b94a5650da82", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 27762, "upload_time": "2021-01-18T10:51:08", "upload_time_iso_8601": "2021-01-18T10:51:08.316393Z", "url": "https://files.pythonhosted.org/packages/df/a5/8a7feffa05797c572761eedb204c0a97d5ef9e9396eb5391170ffaa6230d/k8t-0.6.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a66c10bc1d753d52415a75475dd0a546", "sha256": "2a6216587be5c99542214d260cd0d84f6c39f331dc655b8090af1900cb86f8a3" }, "downloads": -1, "filename": "k8t-0.6.0.tar.gz", "has_sig": false, "md5_digest": "a66c10bc1d753d52415a75475dd0a546", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40046, "upload_time": "2021-01-18T10:51:09", "upload_time_iso_8601": "2021-01-18T10:51:09.962908Z", "url": "https://files.pythonhosted.org/packages/28/a0/facadc543bcad97236d5621971c42d9c1ef2f0e617f6e07193d455aa592c/k8t-0.6.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "eb74accca8401e8e9d561b7f5064e75b", "sha256": "87f6b784dbd0518c7bc74ec9f3638d8fff865ed040b6517d22b58aa0ce42ba72" }, "downloads": -1, "filename": "k8t-0.7.0-py3-none-any.whl", "has_sig": false, "md5_digest": "eb74accca8401e8e9d561b7f5064e75b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 27890, "upload_time": "2021-08-20T14:46:36", "upload_time_iso_8601": "2021-08-20T14:46:36.779913Z", "url": "https://files.pythonhosted.org/packages/23/dc/44d3b8dc0d2fa1328bcbb7e4e7097bb1c1715a6b5e3ef33274b0def25797/k8t-0.7.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "d433ee6ab0e1576dbee97bfdc7f27f81", "sha256": "2a0ab136be999e34a1b3dfe05ba3bb1be736d6e51b7342a7563d1c2917cd84a5" }, "downloads": -1, "filename": "k8t-0.7.0.tar.gz", "has_sig": false, "md5_digest": "d433ee6ab0e1576dbee97bfdc7f27f81", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38889, "upload_time": "2021-08-20T14:46:38", "upload_time_iso_8601": "2021-08-20T14:46:38.837946Z", "url": "https://files.pythonhosted.org/packages/2d/73/9d82d455fd90905554a6c4e60c3ab3719ad0cd18ffebe794d4e320711f66/k8t-0.7.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "1c34bb01c57c23974c4ddf4dc96d8559", "sha256": "0670c666d3929ae7c501739358c52ec7e1ffa756b996f556f10dba8b760179b1" }, "downloads": -1, "filename": "k8t-0.7.1-py3-none-any.whl", "has_sig": false, "md5_digest": "1c34bb01c57c23974c4ddf4dc96d8559", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 27890, "upload_time": "2021-08-23T09:08:23", "upload_time_iso_8601": "2021-08-23T09:08:23.602733Z", "url": "https://files.pythonhosted.org/packages/ec/4d/0cbed9c88f6350c74e3bf5bd0a971a1762126ee50590f9c47d0d86cee869/k8t-0.7.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "542ae341e81a94f1de513861903abb7b", "sha256": "20f71d820109140d650e3d7339ce27c425eed3a3680e8d71e28d90a2c053f808" }, "downloads": -1, "filename": "k8t-0.7.1.tar.gz", "has_sig": false, "md5_digest": "542ae341e81a94f1de513861903abb7b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38882, "upload_time": "2021-08-23T09:08:24", "upload_time_iso_8601": "2021-08-23T09:08:24.575994Z", "url": "https://files.pythonhosted.org/packages/c8/fd/33595674e397b8279676e7a104b5dcd99ecc5c28af6ab796bf06b9f96b2e/k8t-0.7.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.2": [ { "comment_text": "", "digests": { "md5": "8407596a3fd7815a2d18cab9c20c4e9f", "sha256": "fe10af1dd3b9ad4905f21121937dcde9d56dc1fbb2c15e0e6515cdf81ef2fea1" }, "downloads": -1, "filename": "k8t-0.7.2-py3-none-any.whl", "has_sig": false, "md5_digest": "8407596a3fd7815a2d18cab9c20c4e9f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 27897, "upload_time": "2021-09-22T10:14:24", "upload_time_iso_8601": "2021-09-22T10:14:24.100240Z", "url": "https://files.pythonhosted.org/packages/2a/f3/ba1d9a47a3f2be9a762c24691cf62c485519e0c1535d647190f05bba73da/k8t-0.7.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "87b155ba3948788fba5005a20826f001", "sha256": "54589b7cc1f4929a9910e78f97180fabcbc00a6dbf5a40c1c76312bca50029cf" }, "downloads": -1, "filename": "k8t-0.7.2.tar.gz", "has_sig": false, "md5_digest": "87b155ba3948788fba5005a20826f001", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38928, "upload_time": "2021-09-22T10:14:25", "upload_time_iso_8601": "2021-09-22T10:14:25.424615Z", "url": "https://files.pythonhosted.org/packages/57/dd/3e2d32354fe2c3880e58cc543cc434f05d2dc553f01ee58965c64bd07435/k8t-0.7.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.3": [ { "comment_text": "", "digests": { "md5": "13df54f6ae2a2d41fceef0e7fee765de", "sha256": "cb46f37d6f17dc27f849ee64567a359ac7c4a804dff62a7416403ee378b1aa99" }, "downloads": -1, "filename": "k8t-0.7.3-py3-none-any.whl", "has_sig": false, "md5_digest": "13df54f6ae2a2d41fceef0e7fee765de", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 28182, "upload_time": "2021-12-02T13:08:26", "upload_time_iso_8601": "2021-12-02T13:08:26.905519Z", "url": "https://files.pythonhosted.org/packages/4e/35/03b6f425c091bf364824adc90bcb6e74b5fe28268fcbdbd4deb9d0d852fd/k8t-0.7.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "8c39628b5df9b4b37fc76b1a9a8e9b67", "sha256": "c6afaef825eec6da7cb8aeba3ca7ceb3220fb9e5d19f489b3dc6e6648ec1f56a" }, "downloads": -1, "filename": "k8t-0.7.3.tar.gz", "has_sig": false, "md5_digest": "8c39628b5df9b4b37fc76b1a9a8e9b67", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39135, "upload_time": "2021-12-02T13:08:28", "upload_time_iso_8601": "2021-12-02T13:08:28.230415Z", "url": "https://files.pythonhosted.org/packages/56/4d/ede61b3705bc22eaaf1a69734edd576479fd365b1f52545face834230359/k8t-0.7.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.4": [ { "comment_text": "", "digests": { "md5": "78e54abf1adc1231440c56396544275a", "sha256": "28df4eb8ee8107fe4a1ac3e7ae399fa5a63fd88df1980b8ccbdf5348b913c91d" }, "downloads": -1, "filename": "k8t-0.7.4-py3-none-any.whl", "has_sig": false, "md5_digest": "78e54abf1adc1231440c56396544275a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 28492, "upload_time": "2021-12-02T13:55:16", "upload_time_iso_8601": "2021-12-02T13:55:16.218858Z", "url": "https://files.pythonhosted.org/packages/d1/e0/fa7b2d8bb3aa8e6fd8e329b14c930dbc904996fe60ae9768077c1afa9b14/k8t-0.7.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "8d30d4cb7e7a3b336ba47817867133fa", "sha256": "4e9c549262c2cef026f9689a2ec519cc2114e8c0b383e9349d61104c4325550d" }, "downloads": -1, "filename": "k8t-0.7.4.tar.gz", "has_sig": false, "md5_digest": "8d30d4cb7e7a3b336ba47817867133fa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39473, "upload_time": "2021-12-02T13:55:17", "upload_time_iso_8601": "2021-12-02T13:55:17.531361Z", "url": "https://files.pythonhosted.org/packages/75/c7/d5805a199a2ef09e849722af5da5bb83e282ec27f33382140373ba445f9a/k8t-0.7.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.5": [ { "comment_text": "", "digests": { "md5": "f82441f7f2aff3d584381127bdfca6e6", "sha256": "c00dc1348e747ba1468f5090b8a7212dbe8de59c053f6c4c6edbb15df9318e4d" }, "downloads": -1, "filename": "k8t-0.7.5-py3-none-any.whl", "has_sig": false, "md5_digest": "f82441f7f2aff3d584381127bdfca6e6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 28469, "upload_time": "2022-01-24T13:38:25", "upload_time_iso_8601": "2022-01-24T13:38:25.854225Z", "url": "https://files.pythonhosted.org/packages/37/b8/bcef8289e18fe4d9a5f76b1a85e86002ab0f116bd2eefe7cc6e7b7a7c122/k8t-0.7.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "2051bcce43cdf2cddd29c9c6fd08e808", "sha256": "e694dd8fd74bd7dddef68c0cf3ad3cbaa9b805defb20a8be37d0b41a38ef55dd" }, "downloads": -1, "filename": "k8t-0.7.5.tar.gz", "has_sig": false, "md5_digest": "2051bcce43cdf2cddd29c9c6fd08e808", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39323, "upload_time": "2022-01-24T13:38:26", "upload_time_iso_8601": "2022-01-24T13:38:26.966686Z", "url": "https://files.pythonhosted.org/packages/46/24/5fef97b9f022a023655877edd822661c312aeca3cb9fb61942276e240d44/k8t-0.7.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.6": [ { "comment_text": "", "digests": { "md5": "06a750be865da6dbc4bf70dc45ff57de", "sha256": "28df8da88fe048b374ef33de2f81dbb32ec6a86abac3e8f8710a301151dbd36f" }, "downloads": -1, "filename": "k8t-0.7.6-py3-none-any.whl", "has_sig": false, "md5_digest": "06a750be865da6dbc4bf70dc45ff57de", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 28927, "upload_time": "2022-05-11T08:05:05", "upload_time_iso_8601": "2022-05-11T08:05:05.817938Z", "url": "https://files.pythonhosted.org/packages/41/23/cac2e742751e8c089944cdfddf51bbc23218873f3135e137a5eeccf8d382/k8t-0.7.6-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "8a48872c791ea251e92ce24886132f3a", "sha256": "b120354570d49504ef1970bcc4c9e279928d3e82bbe3ef70a7e114ecc4cb2c73" }, "downloads": -1, "filename": "k8t-0.7.6.tar.gz", "has_sig": false, "md5_digest": "8a48872c791ea251e92ce24886132f3a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40271, "upload_time": "2022-05-11T08:05:07", "upload_time_iso_8601": "2022-05-11T08:05:07.290071Z", "url": "https://files.pythonhosted.org/packages/4b/50/80bfffb831a78307c76d27c71f528fa998477f637278aab2e4e900eddf83/k8t-0.7.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.7": [ { "comment_text": "", "digests": { "md5": "95efd11b130cdddbb600a65b4f23dae4", "sha256": "71562fe9646918a9603c903ac43291af4a7faeebd9ea7d335ad868b96d3eb057" }, "downloads": -1, "filename": "k8t-0.7.7-py3-none-any.whl", "has_sig": false, "md5_digest": "95efd11b130cdddbb600a65b4f23dae4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 28953, "upload_time": "2022-05-11T12:10:07", "upload_time_iso_8601": "2022-05-11T12:10:07.865819Z", "url": "https://files.pythonhosted.org/packages/d6/7d/dbc916bae60ea640c280747e32b2a2711bbfc80a3a6b44277fb03a241d64/k8t-0.7.7-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "7ce40b441c7b9118f3ba3cf8d5bf2667", "sha256": "14ba0e9848f9b4e69b7caa84ba4ac034b2a973999e90812699f404f9cf7e5ff4" }, "downloads": -1, "filename": "k8t-0.7.7.tar.gz", "has_sig": false, "md5_digest": "7ce40b441c7b9118f3ba3cf8d5bf2667", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40401, "upload_time": "2022-05-11T12:10:09", "upload_time_iso_8601": "2022-05-11T12:10:09.232456Z", "url": "https://files.pythonhosted.org/packages/93/32/a4b6c8910cc4363b1657f372f46e07ca69a5de1f854817279645cb6f9929/k8t-0.7.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.8": [ { "comment_text": "", "digests": { "md5": "579d0e94f789a9d998b86d1b901c6a9f", "sha256": "30ba61d6c262582a0e0501915e5e42ff8060db63d26103dd6edd2084f5beac0d" }, "downloads": -1, "filename": "k8t-0.7.8-py3-none-any.whl", "has_sig": false, "md5_digest": "579d0e94f789a9d998b86d1b901c6a9f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 28958, "upload_time": "2022-05-11T12:34:58", "upload_time_iso_8601": "2022-05-11T12:34:58.005887Z", "url": "https://files.pythonhosted.org/packages/74/6a/d806495f1850cf5f4298ef67d67606513f81dd9444c2ef8f1b80a04c278c/k8t-0.7.8-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "8534441272500694506599c19028f8fa", "sha256": "ac111c79bc16746fac560cc5431394e766dcdd8a407181169588e52a5cad7051" }, "downloads": -1, "filename": "k8t-0.7.8.tar.gz", "has_sig": false, "md5_digest": "8534441272500694506599c19028f8fa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40374, "upload_time": "2022-05-11T12:34:59", "upload_time_iso_8601": "2022-05-11T12:34:59.764827Z", "url": "https://files.pythonhosted.org/packages/a5/0c/802f044844963e4617c5a7c01cef1ebdc03edd4e59089ae3db9693570acb/k8t-0.7.8.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "579d0e94f789a9d998b86d1b901c6a9f", "sha256": "30ba61d6c262582a0e0501915e5e42ff8060db63d26103dd6edd2084f5beac0d" }, "downloads": -1, "filename": "k8t-0.7.8-py3-none-any.whl", "has_sig": false, "md5_digest": "579d0e94f789a9d998b86d1b901c6a9f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 28958, "upload_time": "2022-05-11T12:34:58", "upload_time_iso_8601": "2022-05-11T12:34:58.005887Z", "url": "https://files.pythonhosted.org/packages/74/6a/d806495f1850cf5f4298ef67d67606513f81dd9444c2ef8f1b80a04c278c/k8t-0.7.8-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "8534441272500694506599c19028f8fa", "sha256": "ac111c79bc16746fac560cc5431394e766dcdd8a407181169588e52a5cad7051" }, "downloads": -1, "filename": "k8t-0.7.8.tar.gz", "has_sig": false, "md5_digest": "8534441272500694506599c19028f8fa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40374, "upload_time": "2022-05-11T12:34:59", "upload_time_iso_8601": "2022-05-11T12:34:59.764827Z", "url": "https://files.pythonhosted.org/packages/a5/0c/802f044844963e4617c5a7c01cef1ebdc03edd4e59089ae3db9693570acb/k8t-0.7.8.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }