{
"info": {
"author": "Johann Kellerman",
"author_email": "kellerza@gmail.com",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 2 - Pre-Alpha",
"Intended Audience :: Developers",
"Natural Language :: English",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10"
],
"description": "# Data Playbook\n\n:book: Playbooks for data. Open, process and save table based data.\n[](https://github.com/kellerza/data-playbook/actions)\n[](https://codecov.io/gh/kellerza/data-playbook)\n\nAutomate repetitive tasks on table based data. Include various input and output tasks.\n\nInstall: `pip install dataplaybook`\n\nUse the `@task` and `@playbook` decorators\n\n```python\nfrom dataplaybook import task, playbook\nfrom dataplaybook.tasks.io_xlsx\n\n@task\ndef print\n```\n\n## Tasks\n\nTasks are implemented as simple Python functions and the modules can be found in the dataplaybook/tasks folder.\n\n| Module | Functions |\n| :----------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------- |\n| Generic function to work on tables
`dataplaybook.tasks` | build_lookup, build_lookup_var, combine, drop, extend, filter, print, replace, unique, vlookup |\n| Fuzzy string matching
`dataplaybook.taksk.fuzzy`
Requires _pip install fuzzywuzzy_ | |\n| Read/write excel files ()
`dataplaybook.tasks.io_xlsx` | read_excel, write_excel |\n| Misc IO tasks
`dataplaybook.tasks.io_misc` | read_csv, read_tab_delim, read_text_regex, wget, write_csv |\n| MongoDB functions
`dataplaybook.tasks.io_mongo` | read_mongo, write_mongo, columns_to_list, list_to_columns |\n| PDF functions. Requires _pdftotext_ on your path
`dataplaybook.tasks.io_pdf` | read_pdf_pages, read_pdf_files |\n| Read XML
`dataplaybook.tasks.io_xml` | read_xml |\n\n## Data Playbook v0\n\nThe [v0](https://github.com/kellerza/data-playbook/tree/v0) of dataplaybook used yaml files, very similar to playbooks\n\nUse: `dataplaybook playbook.yaml`\n\n### Playbook structure\n\nThe playbook.yaml file allows you to load additional modules (containing tasks) and specify the tasks to execute in sequence, with all their parameters.\n\nThe `tasks` to perform typically follow the the structure of read, process, write.\n\nExample yaml: (please note yaml is case sensitive)\n\n```yaml\nmodules: [list, of, modules]\n\ntasks:\n - task_name: # See a list of tasks below\n task_setting_1: 1\n tables: # The INPUT. One of more tables used by this task\n target: # The OUTPUT. Target table name of this function\n debug: True/False # Print extra debug message, default: False\n```\n\n### Templating\n\nJinja2 and JMESPath expressions can be used to create parameters for subsequent tasks. Jinja2 simply use the `\"{{ var[res1] }}\"` bracket syntax and jmespath expressions should start with the word _jmespath_ followed by a space.\n\nBoth the `vars` and `template` tasks achieve a similar result: (this will search a table matching string \"2\" on the key column and return the value in the value column)\n\n```yaml\n- vars:\n res1: jmespath test[?key=='2'].value | [0]\n# is equal to\n- template:\n jmespath: \"test[?key=='2'].value | [0]\"\n target: res1\n# ... then use it with `{{ var.res1 }}`\n```\n\nThe JMESpath task `template` task has an advantage that you can create new variables **or tables**.\n\nIf you have a lookup you use regularly you can do the following:\n\n```yaml\n - build_lookup_var:\n key: key\n columns: [value]\n target: lookup1\n # and then use it as follows to get a similar results to the previous example\n - vars:\n res1: \"{{ var['lookup1']['2'].value }}\"\n```\n\nWhen searching through a table with Jinja, a similar one-liner, using `selectattr`, seems much more complex:\n\n```yaml\n- vars:\n res1: \"{{ test | selectattr('key', 'equalto', '2') | map(attribute='value') | first }}\"\n```\n\n### Special yaml functions\n\n- `!re ` Regular expression\n- `!es ` Search a file using Everything by Voidtools\n\n### Install the development version\n\n1. Clone the repo\n2. `pip install -e`\n\n### Data Playbook v0 origins\n\nData playbooks was created to replace various snippets of code I had lying around. They were all created to ensure repeatability of some menial task, and generally followed a similar structure of load something, process it and save it. (Process network data into GIS tools, network audits & reporting on router & NMS output, Extract IETF standards to complete SOCs, read my bank statements into my Excel budgeting tool, etc.)\n\nFor many of these tasks I have specific processing code (`tasks_x.py`, loaded with `modules: [tasks_x]` in the playbook), but in almost all cases input & output tasks (and configuring these names etc) are common. The idea of the modular tasks originally came from Home Assistant, where I started learning Python and the idea of \"custom components\" to add your own integrations, although one could argue this also has similarities to Ansible playbooks.\n\nIn many cases I have a 'loose' coupling to actual file names, using Everything search (`!es search_pattern` in the playbook) to resolve a search pattern to the correct file used for input.\n\nIt has some parts in common with Ansible Playbooks, especially the name was chosen after I was introduced to Ansible Playbooks. The task structure has been updated in 2019 to match the Ansible Playbooks 2.0/2.5+ format and allow names. This format will also be easier to introduce loop mechanisms etc.\n\n#### Comparison to Ansible Playbooks\n\nData playbooks is intended to create and modify variables in the environment (similar to **inventory**). Data playbooks starts with an empty environment (although you can read the environment from various sources inside the play).\nAlthough new variables can be created using **register:** in Ansible, data playbook functions requires the output to be captured through `target:`.\n\nData playbook tasks are different form Ansible's **actions**:\n\n- They are mostly not idempotent, since the intention is to modify tables as we go along,\n- they can return lists containing rows or be Python iterators (that `yield` rows of a table)\n- if they dont return any tabular data (a list), the return value will be added to the `var` table in the environment\n- Each have a strict voluptuous schema, evaluated when loading and during runtime (e.g. to expand templates) to allow quick troubleshooting\n\nYou could argue I can do this with Ansible, but it won't be as elegant with single item hosts files, `gather_facts: no` and `delegate_to: localhost` throughout the playbooks. It will likely only be half as much fun trying to force it into my way of thinking.\n\n\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/kellerza/data-playbook",
"keywords": "data,tables,excel,mongodb,generators",
"license": "Apache License 2.0",
"maintainer": "",
"maintainer_email": "",
"name": "dataplaybook",
"package_url": "https://pypi.org/project/dataplaybook/",
"platform": "",
"project_url": "https://pypi.org/project/dataplaybook/",
"project_urls": {
"Homepage": "https://github.com/kellerza/data-playbook"
},
"release_url": "https://pypi.org/project/dataplaybook/1.0.9/",
"requires_dist": [
"colorlog",
"attrs (>=21)",
"voluptuous (>=0.11.5)",
"jinja2 (<4,>=3)",
"openpyxl (<4,>=3)",
"typeguard",
"icecream",
"fuzzywuzzy",
"python-Levenshtein",
"requests",
"pymongo ; extra == 'mongodb'"
],
"requires_python": ">=3.8",
"summary": "Playbooks for data. Open, process and save table based data.",
"version": "1.0.9",
"yanked": false,
"yanked_reason": null
},
"last_serial": 13076392,
"releases": {
"0.1": [
{
"comment_text": "",
"digests": {
"md5": "53ea512b0298aa62f1f6cc692debf079",
"sha256": "fba98b83303aa0da45af2f418d7ab9244413790a294ae324adf9a0d4651b7376"
},
"downloads": -1,
"filename": "dataplaybook-0.1.tar.gz",
"has_sig": false,
"md5_digest": "53ea512b0298aa62f1f6cc692debf079",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.5.3",
"size": 19816,
"upload_time": "2018-06-14T14:36:03",
"upload_time_iso_8601": "2018-06-14T14:36:03.065558Z",
"url": "https://files.pythonhosted.org/packages/bf/0c/5c112c37ca13764803d6c64baac97c4b915da04554d05019359da02c02d2/dataplaybook-0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"0.2": [
{
"comment_text": "",
"digests": {
"md5": "e8c63ce2f8cbd062f61441cbe716458c",
"sha256": "297aaec316a84fa5a40b41350b642ccbca974a1079ef9a868bdd22191219dfb1"
},
"downloads": -1,
"filename": "dataplaybook-0.2.tar.gz",
"has_sig": false,
"md5_digest": "e8c63ce2f8cbd062f61441cbe716458c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.5.3",
"size": 21629,
"upload_time": "2018-07-05T23:31:27",
"upload_time_iso_8601": "2018-07-05T23:31:27.925837Z",
"url": "https://files.pythonhosted.org/packages/a1/0e/f45089c9eb0c4b8144570b66cd1eb8cec825ace4fefeb94b73c4f0088552/dataplaybook-0.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"0.2.1": [
{
"comment_text": "",
"digests": {
"md5": "8d231f53230e8afdad2ea8e5e82238f0",
"sha256": "785feee02cb0ed554574bd1b5dc36161224cb795c11415d77f14181f188ffe6e"
},
"downloads": -1,
"filename": "dataplaybook-0.2.1.tar.gz",
"has_sig": false,
"md5_digest": "8d231f53230e8afdad2ea8e5e82238f0",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.5.3",
"size": 21309,
"upload_time": "2018-07-06T07:04:36",
"upload_time_iso_8601": "2018-07-06T07:04:36.638078Z",
"url": "https://files.pythonhosted.org/packages/4a/f3/1f58773c4e1a8827cf5bd28c2da0dcf9d85a920c1892350863f1ce977e81/dataplaybook-0.2.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"0.2.2": [
{
"comment_text": "",
"digests": {
"md5": "08c80847e0db615be20e274497558dc0",
"sha256": "82d50cfa32d13ee53916fe4fa1541b7d0f2df4ca7b4d274695c2b322c8cd107f"
},
"downloads": -1,
"filename": "dataplaybook-0.2.2.tar.gz",
"has_sig": false,
"md5_digest": "08c80847e0db615be20e274497558dc0",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.5.3",
"size": 21630,
"upload_time": "2018-07-06T07:29:41",
"upload_time_iso_8601": "2018-07-06T07:29:41.174193Z",
"url": "https://files.pythonhosted.org/packages/a3/3b/4665622487665a02bd1e285a28ef0d727e2afc90cdebd43aa0c4fe18ed17/dataplaybook-0.2.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"0.2.3": [
{
"comment_text": "",
"digests": {
"md5": "13727f61356bc39e04a340cf126f31ba",
"sha256": "75432dee350e089f9b12e204aaababe375aeba9b848a3f2853f88b2b801b0f9f"
},
"downloads": -1,
"filename": "dataplaybook-0.2.3.tar.gz",
"has_sig": false,
"md5_digest": "13727f61356bc39e04a340cf126f31ba",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 22014,
"upload_time": "2018-07-11T21:56:43",
"upload_time_iso_8601": "2018-07-11T21:56:43.741792Z",
"url": "https://files.pythonhosted.org/packages/22/b5/9cb5703b0520a36258ea320dd4edbdec6cea8ead48e738f4e8c3e32fabb9/dataplaybook-0.2.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"0.2.4": [
{
"comment_text": "",
"digests": {
"md5": "c6610244b44c2cd7c645b46b58cb7dec",
"sha256": "1204ddcad138e84a5247c11878323a33a7cb5b720a6b56b500d7162a0738db55"
},
"downloads": -1,
"filename": "dataplaybook-0.2.4.tar.gz",
"has_sig": false,
"md5_digest": "c6610244b44c2cd7c645b46b58cb7dec",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 22203,
"upload_time": "2018-07-12T21:50:19",
"upload_time_iso_8601": "2018-07-12T21:50:19.292273Z",
"url": "https://files.pythonhosted.org/packages/5e/3e/b2881b0b48e73ad3edf1ceda969911867f5a1336a8674d3040df41edb7fb/dataplaybook-0.2.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"0.3.0": [
{
"comment_text": "",
"digests": {
"md5": "2d1c1ffa795657b166b5123d6e5f3909",
"sha256": "3687dbbd54294fb847a2cb675d9beb985b51324a3df20e51d29584b02d63df9d"
},
"downloads": -1,
"filename": "dataplaybook-0.3.0.tar.gz",
"has_sig": false,
"md5_digest": "2d1c1ffa795657b166b5123d6e5f3909",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 25027,
"upload_time": "2018-11-06T20:53:34",
"upload_time_iso_8601": "2018-11-06T20:53:34.241006Z",
"url": "https://files.pythonhosted.org/packages/af/7d/c710d3e9d3f5f86c186751373d7d5902c88c0f98bd6985a43fa0a7e03a88/dataplaybook-0.3.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"0.3.2": [
{
"comment_text": "",
"digests": {
"md5": "8bb88897e4b443f74d4317e1afb91848",
"sha256": "c428ed4afab7f52e6651729f8f86efae0d2adadca1419c6075cdc879d8d91c32"
},
"downloads": -1,
"filename": "dataplaybook-0.3.2.tar.gz",
"has_sig": false,
"md5_digest": "8bb88897e4b443f74d4317e1afb91848",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 25467,
"upload_time": "2019-01-11T04:00:23",
"upload_time_iso_8601": "2019-01-11T04:00:23.503520Z",
"url": "https://files.pythonhosted.org/packages/03/06/f87141e7d8a80a59cf1cbca1bbc5f6c79b54a3f137f20110bcdad7535f33/dataplaybook-0.3.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"0.3.3": [
{
"comment_text": "",
"digests": {
"md5": "a16ac74930cf85fcb0fbd56ff3d1a3c8",
"sha256": "569b16c7b984d978c4a049f59a88430899a4d8326739ddf6fe0b3c03936a2e4e"
},
"downloads": -1,
"filename": "dataplaybook-0.3.3.tar.gz",
"has_sig": false,
"md5_digest": "a16ac74930cf85fcb0fbd56ff3d1a3c8",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 24598,
"upload_time": "2019-01-14T21:24:13",
"upload_time_iso_8601": "2019-01-14T21:24:13.261135Z",
"url": "https://files.pythonhosted.org/packages/00/54/41592e7246f39af747274fd804bc763759739efd90486546d12a47d16aa5/dataplaybook-0.3.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"0.3.4": [
{
"comment_text": "",
"digests": {
"md5": "e7b06093043af88f93a0f22df27eefda",
"sha256": "eba32dde84917d69ad2f4cc177c2586deb733129833aafe47fe7f35e4ade2919"
},
"downloads": -1,
"filename": "dataplaybook-0.3.4.tar.gz",
"has_sig": false,
"md5_digest": "e7b06093043af88f93a0f22df27eefda",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 25312,
"upload_time": "2019-01-24T04:33:39",
"upload_time_iso_8601": "2019-01-24T04:33:39.835555Z",
"url": "https://files.pythonhosted.org/packages/21/80/94bdbf0626b77ddd0c4a0563bd2a8d3308e60605a11bc3145e4fe630963a/dataplaybook-0.3.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"0.6": [
{
"comment_text": "",
"digests": {
"md5": "3d4c119d6d3259ae567121ea107115d4",
"sha256": "a03e7fcbffff56864cebe5eb9a20c9a657a67f100718b8696290eb71a074e3a6"
},
"downloads": -1,
"filename": "dataplaybook-0.6.tar.gz",
"has_sig": false,
"md5_digest": "3d4c119d6d3259ae567121ea107115d4",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 33981,
"upload_time": "2019-04-24T20:42:53",
"upload_time_iso_8601": "2019-04-24T20:42:53.410779Z",
"url": "https://files.pythonhosted.org/packages/b5/d9/9c726742681991f2470e099db3a2e7ce4e110d8a5a7f66c18454a4f86a36/dataplaybook-0.6.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"0.6.1": [
{
"comment_text": "",
"digests": {
"md5": "8eb68c728e9b5ba8b5e09b3f430021a6",
"sha256": "86c185592adce1b7c05c7479832c8767dfcc17fc24549567f9a1c6697575362e"
},
"downloads": -1,
"filename": "dataplaybook-0.6.1.tar.gz",
"has_sig": false,
"md5_digest": "8eb68c728e9b5ba8b5e09b3f430021a6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 34991,
"upload_time": "2019-05-09T07:15:39",
"upload_time_iso_8601": "2019-05-09T07:15:39.002928Z",
"url": "https://files.pythonhosted.org/packages/84/5a/688ecb9157f9b9e1eb491f491ae7ae7849208d215d0b834f76a8f67a0bce/dataplaybook-0.6.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"0.6.2": [
{
"comment_text": "",
"digests": {
"md5": "d7aa03b743be01770d8d119383e7ef7c",
"sha256": "57eca6ada9f44096f4825a5761326248f265e2510336bf2cef69bd3dfd189357"
},
"downloads": -1,
"filename": "dataplaybook-0.6.2.tar.gz",
"has_sig": false,
"md5_digest": "d7aa03b743be01770d8d119383e7ef7c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 37498,
"upload_time": "2019-05-29T09:39:32",
"upload_time_iso_8601": "2019-05-29T09:39:32.648026Z",
"url": "https://files.pythonhosted.org/packages/7b/f6/28c578d6a1c97d433c3266204e3d5b12f9710036b0101b10b1ae5153a7f1/dataplaybook-0.6.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"0.6.5": [
{
"comment_text": "",
"digests": {
"md5": "f121e0bc4c856eb6a8ab09cb9594d3cd",
"sha256": "2ac6a3b46b9e349b3290fb90d8e26bc8c8dc2955d3b2cb5b2f8680262968a481"
},
"downloads": -1,
"filename": "dataplaybook-0.6.5.tar.gz",
"has_sig": false,
"md5_digest": "f121e0bc4c856eb6a8ab09cb9594d3cd",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 40827,
"upload_time": "2019-10-30T08:19:04",
"upload_time_iso_8601": "2019-10-30T08:19:04.448628Z",
"url": "https://files.pythonhosted.org/packages/48/ef/8f5c928b08ee8629cb2a3787dbcbd05a1db3b01493fa6749f83998cd27b9/dataplaybook-0.6.5.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"0.6.7": [
{
"comment_text": "",
"digests": {
"md5": "e4ff1bacd4bb19561dc526b8d6b043ea",
"sha256": "29196989717a0c230218dc112f04fd41c78827ac50cbc7a9097a71057c8b4fab"
},
"downloads": -1,
"filename": "dataplaybook-0.6.7.tar.gz",
"has_sig": false,
"md5_digest": "e4ff1bacd4bb19561dc526b8d6b043ea",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 41537,
"upload_time": "2020-01-14T09:26:48",
"upload_time_iso_8601": "2020-01-14T09:26:48.189587Z",
"url": "https://files.pythonhosted.org/packages/1b/b9/388df75ede8e8b16f66cc76a58da048882a66a3d7de19e89956cd0503a60/dataplaybook-0.6.7.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"0.6.8": [
{
"comment_text": "",
"digests": {
"md5": "0318d62d1ccecd083aa8ec14152e368f",
"sha256": "6c727c9339fe2a8db17263c32a863b6c6bce7c2643cbb4f6d56684cc52559f85"
},
"downloads": -1,
"filename": "dataplaybook-0.6.8.tar.gz",
"has_sig": false,
"md5_digest": "0318d62d1ccecd083aa8ec14152e368f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 43044,
"upload_time": "2020-03-31T19:50:59",
"upload_time_iso_8601": "2020-03-31T19:50:59.664149Z",
"url": "https://files.pythonhosted.org/packages/d5/36/f46d0b26ebc5efaca2fc49fbde69c45c74eb301580cb940d2b659d6e762f/dataplaybook-0.6.8.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"1.0.2": [
{
"comment_text": "",
"digests": {
"md5": "87e0045ad190af921d5968b290135add",
"sha256": "05b418398a32501652c43e4d3f63bda8b7ed8ccb389d36c4e6f5f0bab70c0fa7"
},
"downloads": -1,
"filename": "dataplaybook-1.0.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "87e0045ad190af921d5968b290135add",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 49253,
"upload_time": "2021-06-01T11:24:29",
"upload_time_iso_8601": "2021-06-01T11:24:29.471849Z",
"url": "https://files.pythonhosted.org/packages/a5/91/04c06fbdc7b8d32dbe6ae54edeb673ee9bf9414b8ae9f7fdad7f6c239986/dataplaybook-1.0.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "d98669b9cc4e897b86a07c84da97e9da",
"sha256": "29db9004e66e43e89c0916b5b3bcc9f3ab27cf51273a4a3e90ed99f7034957f6"
},
"downloads": -1,
"filename": "dataplaybook-1.0.2.tar.gz",
"has_sig": false,
"md5_digest": "d98669b9cc4e897b86a07c84da97e9da",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 39868,
"upload_time": "2021-06-01T11:24:30",
"upload_time_iso_8601": "2021-06-01T11:24:30.355720Z",
"url": "https://files.pythonhosted.org/packages/87/6e/e447e7c6981894aaace0a66e2ca37ee553cc94b354c4f4f5a78c190b5e46/dataplaybook-1.0.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"1.0.3": [
{
"comment_text": "",
"digests": {
"md5": "2b76bfee128c093b3a5f1f6d0f9b4ef9",
"sha256": "09621c189e74a0d97ff229cc9b248496e8b839c918efb2e38958a0956860fe03"
},
"downloads": -1,
"filename": "dataplaybook-1.0.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "2b76bfee128c093b3a5f1f6d0f9b4ef9",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 49366,
"upload_time": "2021-06-01T18:28:28",
"upload_time_iso_8601": "2021-06-01T18:28:28.716249Z",
"url": "https://files.pythonhosted.org/packages/df/34/b3074ec9888387a8f7d7dfc6de383d480dd96eeee1b0d1bd73ae664c88f4/dataplaybook-1.0.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "40dd1528d16ea7e368489c30357a19d6",
"sha256": "dbe245438d672ada766c2a2450cb97cda197fdae0c262766a93971975b378269"
},
"downloads": -1,
"filename": "dataplaybook-1.0.3.tar.gz",
"has_sig": false,
"md5_digest": "40dd1528d16ea7e368489c30357a19d6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 39862,
"upload_time": "2021-06-01T18:28:29",
"upload_time_iso_8601": "2021-06-01T18:28:29.821692Z",
"url": "https://files.pythonhosted.org/packages/95/44/57d14471041649124df627699aaab285538ca12b495fb2c2649d0ee12cf9/dataplaybook-1.0.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"1.0.4": [
{
"comment_text": "",
"digests": {
"md5": "9a9c62dcb02fa8c520ffec6f218c8a10",
"sha256": "81ba712993ee88124723a3f35cf018c4b77f1f32e0b90f3cc73569c57293d007"
},
"downloads": -1,
"filename": "dataplaybook-1.0.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "9a9c62dcb02fa8c520ffec6f218c8a10",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 48409,
"upload_time": "2021-06-02T12:12:49",
"upload_time_iso_8601": "2021-06-02T12:12:49.371092Z",
"url": "https://files.pythonhosted.org/packages/57/f2/07e7b1caf774f761a65537c60b6463a11dec4921f4c0e4e25fc3bd91b4bd/dataplaybook-1.0.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "e4673fdcd9d1d513aed446290ff42e49",
"sha256": "02a50d09d567788b5241731931c95b504a4c857ccdf66bf82e037cac87ee13dd"
},
"downloads": -1,
"filename": "dataplaybook-1.0.4.tar.gz",
"has_sig": false,
"md5_digest": "e4673fdcd9d1d513aed446290ff42e49",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 39280,
"upload_time": "2021-06-02T12:12:50",
"upload_time_iso_8601": "2021-06-02T12:12:50.301357Z",
"url": "https://files.pythonhosted.org/packages/f4/b0/a27d5a7350e1feb83e086756783a636ec44b0d2f16c37122c1ff3dd243ae/dataplaybook-1.0.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"1.0.5": [
{
"comment_text": "",
"digests": {
"md5": "8bb916f02b7e723133f5b80101d17a6c",
"sha256": "b83d83bd39611828b90850ac7f88ee123240506588ba737a3b016158d0dcc60d"
},
"downloads": -1,
"filename": "dataplaybook-1.0.5-py3-none-any.whl",
"has_sig": false,
"md5_digest": "8bb916f02b7e723133f5b80101d17a6c",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 49221,
"upload_time": "2021-06-08T09:26:31",
"upload_time_iso_8601": "2021-06-08T09:26:31.984819Z",
"url": "https://files.pythonhosted.org/packages/83/52/df3600924f0c106cdcdb0deca52d735ae7d9e32054e17a0ba6b905ac1d50/dataplaybook-1.0.5-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "5cc5b0118b38c3b0da768b70f06c12f8",
"sha256": "83b9fc95161bcccc8349223744964f3f966ed3781f11426055eeac9231d018b8"
},
"downloads": -1,
"filename": "dataplaybook-1.0.5.tar.gz",
"has_sig": false,
"md5_digest": "5cc5b0118b38c3b0da768b70f06c12f8",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 40032,
"upload_time": "2021-06-08T09:26:33",
"upload_time_iso_8601": "2021-06-08T09:26:33.177868Z",
"url": "https://files.pythonhosted.org/packages/b2/7b/d659aef8e4d4c701d8cb8d16c58398ac6890f6b0a935aa1f530a3e01eed0/dataplaybook-1.0.5.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"1.0.6": [
{
"comment_text": "",
"digests": {
"md5": "9d4592e16f218eaa27009bea12f9b8ef",
"sha256": "7cced59b6f441c9711b12577fe158139b32c64f113e270c0da1937047d061b5d"
},
"downloads": -1,
"filename": "dataplaybook-1.0.6-py3-none-any.whl",
"has_sig": false,
"md5_digest": "9d4592e16f218eaa27009bea12f9b8ef",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 49335,
"upload_time": "2021-06-08T11:13:57",
"upload_time_iso_8601": "2021-06-08T11:13:57.850948Z",
"url": "https://files.pythonhosted.org/packages/d2/16/b4bed666f84cb5533ce2763d9b30bfb7d5508056a510842af20f801465a0/dataplaybook-1.0.6-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "07e4d0033a6897378dd6d33826b03e15",
"sha256": "635e2341be31e2dc461ed4c93e3fd63e7b04c9137a4ca95121c796dabb89a233"
},
"downloads": -1,
"filename": "dataplaybook-1.0.6.tar.gz",
"has_sig": false,
"md5_digest": "07e4d0033a6897378dd6d33826b03e15",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 40118,
"upload_time": "2021-06-08T11:13:58",
"upload_time_iso_8601": "2021-06-08T11:13:58.810980Z",
"url": "https://files.pythonhosted.org/packages/95/09/c80cc4146393a47183ab1ad09dca24bee0f479294270c42cf3e3cfec9030/dataplaybook-1.0.6.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"1.0.7": [
{
"comment_text": "",
"digests": {
"md5": "a6484946a0c7440726c453f9fc267152",
"sha256": "7d47e41414e834895c2eebb0737464863077269b02925866eefa2188cb1468f6"
},
"downloads": -1,
"filename": "dataplaybook-1.0.7-py3-none-any.whl",
"has_sig": false,
"md5_digest": "a6484946a0c7440726c453f9fc267152",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 49392,
"upload_time": "2021-06-30T15:56:45",
"upload_time_iso_8601": "2021-06-30T15:56:45.157118Z",
"url": "https://files.pythonhosted.org/packages/0a/97/e8a6f80a3a31e4874b4cf28e932921592dfe62f41aed80248f35c297390a/dataplaybook-1.0.7-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "d9dacf6a768c177307ae323a6ed9c803",
"sha256": "84a7f8ff15ee718a228b469533f19807fd4ee9e42005ab4074e71829e70aca3e"
},
"downloads": -1,
"filename": "dataplaybook-1.0.7.tar.gz",
"has_sig": false,
"md5_digest": "d9dacf6a768c177307ae323a6ed9c803",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 40168,
"upload_time": "2021-06-30T15:56:46",
"upload_time_iso_8601": "2021-06-30T15:56:46.118895Z",
"url": "https://files.pythonhosted.org/packages/d1/30/876183158d24e344f3798d391fbc7d94390bf9fd531b7513552b9e367901/dataplaybook-1.0.7.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"1.0.8": [
{
"comment_text": "",
"digests": {
"md5": "247c7220911898abbb797e6d4722d77d",
"sha256": "cfa03355bebe5760cfcfe20d3e1e48245f288b9a61307eda1ec79873183dcb59"
},
"downloads": -1,
"filename": "dataplaybook-1.0.8-py3-none-any.whl",
"has_sig": false,
"md5_digest": "247c7220911898abbb797e6d4722d77d",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 47887,
"upload_time": "2021-09-30T19:31:03",
"upload_time_iso_8601": "2021-09-30T19:31:03.579082Z",
"url": "https://files.pythonhosted.org/packages/42/5b/230e51cf2065a77b0112246b89c9cc7494b1fbabd8c8512d2b63fcfc0e50/dataplaybook-1.0.8-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "7875c2ca8247cd8a044485fbc594bce0",
"sha256": "56001adc5b455a94375306e54af2e4d5cb8a5b2e0cfc0bac678c52faa7aaba76"
},
"downloads": -1,
"filename": "dataplaybook-1.0.8.tar.gz",
"has_sig": false,
"md5_digest": "7875c2ca8247cd8a044485fbc594bce0",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 38664,
"upload_time": "2021-09-30T19:31:05",
"upload_time_iso_8601": "2021-09-30T19:31:05.640892Z",
"url": "https://files.pythonhosted.org/packages/88/ba/815f4a51f893d73f757a50f949cca8907fd8d36729e80b0789b513d54f0a/dataplaybook-1.0.8.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"1.0.9": [
{
"comment_text": "",
"digests": {
"md5": "d06e49b5bbd94e847573be8f058ed0bc",
"sha256": "78828c9758e2fb0cb739eb31137de0dbfd4e2f0c28eb3bb5a4b888be1abfbdcf"
},
"downloads": -1,
"filename": "dataplaybook-1.0.9-py3-none-any.whl",
"has_sig": false,
"md5_digest": "d06e49b5bbd94e847573be8f058ed0bc",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 47975,
"upload_time": "2022-03-04T04:46:42",
"upload_time_iso_8601": "2022-03-04T04:46:42.129829Z",
"url": "https://files.pythonhosted.org/packages/3d/eb/291e7b0b270c944eb807d20ff65e8bd3419cd9990eb11c5ef83ec3b6cbd1/dataplaybook-1.0.9-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "30735da2774fda43347d039c344d347f",
"sha256": "ab16236c9156ddf4242aa2aed7c94edbaab19c585e10c80618156781a0343727"
},
"downloads": -1,
"filename": "dataplaybook-1.0.9.tar.gz",
"has_sig": false,
"md5_digest": "30735da2774fda43347d039c344d347f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 38859,
"upload_time": "2022-03-04T04:46:44",
"upload_time_iso_8601": "2022-03-04T04:46:44.194034Z",
"url": "https://files.pythonhosted.org/packages/f9/3d/9f8cf1f88880af8844d89c3356039be31b1240205a1b486c16744952f341/dataplaybook-1.0.9.tar.gz",
"yanked": false,
"yanked_reason": null
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "d06e49b5bbd94e847573be8f058ed0bc",
"sha256": "78828c9758e2fb0cb739eb31137de0dbfd4e2f0c28eb3bb5a4b888be1abfbdcf"
},
"downloads": -1,
"filename": "dataplaybook-1.0.9-py3-none-any.whl",
"has_sig": false,
"md5_digest": "d06e49b5bbd94e847573be8f058ed0bc",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 47975,
"upload_time": "2022-03-04T04:46:42",
"upload_time_iso_8601": "2022-03-04T04:46:42.129829Z",
"url": "https://files.pythonhosted.org/packages/3d/eb/291e7b0b270c944eb807d20ff65e8bd3419cd9990eb11c5ef83ec3b6cbd1/dataplaybook-1.0.9-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "30735da2774fda43347d039c344d347f",
"sha256": "ab16236c9156ddf4242aa2aed7c94edbaab19c585e10c80618156781a0343727"
},
"downloads": -1,
"filename": "dataplaybook-1.0.9.tar.gz",
"has_sig": false,
"md5_digest": "30735da2774fda43347d039c344d347f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 38859,
"upload_time": "2022-03-04T04:46:44",
"upload_time_iso_8601": "2022-03-04T04:46:44.194034Z",
"url": "https://files.pythonhosted.org/packages/f9/3d/9f8cf1f88880af8844d89c3356039be31b1240205a1b486c16744952f341/dataplaybook-1.0.9.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"vulnerabilities": []
}