{ "info": { "author": "Plumerai", "author_email": "lukas@plumerai.co.uk", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "Intended Audience :: Education", "Intended Audience :: Science/Research", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3 :: Only", "Topic :: Scientific/Engineering", "Topic :: Scientific/Engineering :: Artificial Intelligence", "Topic :: Scientific/Engineering :: Mathematics", "Topic :: Software Development" ], "description": "# Zookeeper\n\n[![Azure DevOps builds](https://img.shields.io/azure-devops/build/plumerai/larq/15.svg?logo=azure-devops)](https://plumerai.visualstudio.com/larq/_build/latest?definitionId=15&branchName=master) [![Azure DevOps coverage](https://img.shields.io/azure-devops/coverage/plumerai/larq/15.svg?logo=azure-devops)](https://plumerai.visualstudio.com/larq/_build/latest?definitionId=15&branchName=master) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/zookeeper.svg)](https://pypi.org/project/zookeeper/) [![PyPI](https://img.shields.io/pypi/v/zookeeper.svg)](https://pypi.org/project/zookeeper/) [![PyPI - License](https://img.shields.io/pypi/l/zookeeper.svg)](https://github.com/plumerai/zookeeper/blob/master/LICENSE) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black) [![Join the community on Spectrum](https://withspectrum.github.io/badge/badge.svg)](https://spectrum.chat/larq)\n\nA small library for managing deep learning models, hyper parameters and datasets designed to make training deep learning models easy and reproducible.\n\n## Getting Started\n\nZookeeper allows you to build command line interfaces for training deep learning models with very little boiler plate using [click](https://click.palletsprojects.com/) and [TensorFlow Datasets](https://www.tensorflow.org/datasets/). It helps you structure your machine learning projects in a framework agnostic and effective way.\nZookeeper is heavily inspired by [Tensor2Tensor](https://github.com/tensorflow/tensor2tensor) and [Fairseq](https://github.com/pytorch/fairseq/) but is designed to be used as a library making it lightweight and very flexible.\n\n### Installation\n\n```console\npip install zookeeper\npip install colorama # optional for colored console output\n```\n\n### Registry\n\nZookeeper keeps track of data preprocessing, models and hyperparameters to allow you to reference them by name from the commandline.\n\n#### Datasets and Preprocessing\n\nTensorFlow Datasets provides [many popular datasets](https://www.tensorflow.org/datasets/datasets) that can be downloaded automatically.\nIn the following we will use [MNIST](http://yann.lecun.com/exdb/mnist) and define a `default` preprocessing for the images that scales the image to `[0, 1]` and uses one-hot encoding for the class labels:\n\n```python\nimport tensorflow as tf\nfrom zookeeper import cli, build_train, HParams, registry, Preprocessing\n\nclass ImageClassification(Preprocessing):\n @property\n def kwargs(self):\n return {\n \"input_shape\": self.features[\"image\"].shape,\n \"num_classes\": self.features[\"label\"].num_classes,\n }\n\n def inputs(self, data):\n return tf.cast(data[\"image\"], tf.float32)\n\n def outputs(self, data):\n return tf.one_hot(data[\"label\"], self.features[\"label\"].num_classes)\n\n\n@registry.register_preprocess(\"mnist\")\nclass default(ImageClassification):\n def inputs(self, data):\n return super().inputs(data) / 255\n```\n\n#### Models\n\nNext we will register a model called `cnn`. We will use the [Keras API](https://keras.io) for this:\n\n```python\n@registry.register_model\ndef cnn(hp, input_shape, num_classes):\n return tf.keras.models.Sequential(\n [\n tf.keras.layers.Conv2D(\n hp.filters[0], (3, 3), activation=hp.activation, input_shape=input_shape\n ),\n tf.keras.layers.MaxPooling2D((2, 2)),\n tf.keras.layers.Conv2D(hp.filters[1], (3, 3), activation=hp.activation),\n tf.keras.layers.MaxPooling2D((2, 2)),\n tf.keras.layers.Conv2D(hp.filters[2], (3, 3), activation=hp.activation),\n tf.keras.layers.Flatten(),\n tf.keras.layers.Dense(hp.filters[3], activation=hp.activation),\n tf.keras.layers.Dense(num_classes, activation=\"softmax\"),\n ]\n )\n```\n\n#### Hyperparameters\n\nFor each model we can register one or more hyperparameters sets that will be passed to the model function when called:\n\n```python\n@registry.register_hparams(cnn)\nclass basic(HParams):\n activation = \"relu\"\n batch_size = 32\n filters = [64, 64, 64, 64]\n learning_rate = 1e-3\n\n @property\n def optimizer(self):\n return tf.keras.optimizers.Adam(self.learning_rate)\n```\n\n### Training loop\n\nTo train the models registered above we will need to write a custom training loop. Zookeeper will then tie everything together:\n\n```python\n@cli.command()\n@build_train()\ndef train(build_model, dataset, hparams, output_dir):\n \"\"\"Start model training.\"\"\"\n model = build_model(hparams, **dataset.preprocessing.kwargs)\n model.compile(\n optimizer=hparams.optimizer,\n loss=\"categorical_crossentropy\",\n metrics=[\"categorical_accuracy\", \"top_k_categorical_accuracy\"],\n )\n\n model.fit(\n dataset.train_data(hparams.batch_size),\n steps_per_epoch=dataset.train_examples // hparams.batch_size,\n validation_data=dataset.validation_data(hparams.batch_size),\n validation_steps=dataset.validation_examples // hparams.batch_size,\n )\n```\n\nThis will register Click command called `train` which can be executed from the command line.\n\n### Command Line Interface\n\nTo make the file we just created executable we will add the following lines at the bottom:\n\n```python\nif __name__ == \"__main__\":\n cli()\n```\n\nIf you want to register your models in separate files, make sure to import them before calling `cli` to allow zookeeper to properly register them. To install your CLI as a executable command checkout the [`setuptools` integration](http://click.palletsprojects.com/en/7.x/setuptools/) of Click.\n\n#### Usage\n\nZookeeper already ships with `prepare`, `plot`, and `tensorboard` commands, but now also includes the `train` command we created above:\n\n```console\npython examples/train.py --help\n```\n\n```console\nUsage: train.py [OPTIONS] COMMAND [ARGS]...\n\nOptions:\n --help Show this message and exit.\n\nCommands:\n install-completion Install shell completion.\n plot Plot data examples.\n prepare Downloads and prepares datasets for reading.\n tensorboard Start TensorBoard to monitor model training.\n train Start model training.\n```\n\nTo train the model we just registered run:\n\n```console\npython examples/train.py train cnn --dataset mnist --hparams-set basic --hparams batch_size=64\n```\n\nMultiple arguments are seperated by a comma, and strings should be passed without quotion marks:\n\n```console\npython examples/train.py train cnn --dataset mnist --hparams-set basic --hparams batch_size=32,actvation=relu\n```\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/larq/zookeeper", "keywords": "", "license": "Apache 2.0", "maintainer": "", "maintainer_email": "", "name": "zookeeper", "package_url": "https://pypi.org/project/zookeeper/", "platform": "", "project_url": "https://pypi.org/project/zookeeper/", "project_urls": { "Homepage": "https://github.com/larq/zookeeper" }, "release_url": "https://pypi.org/project/zookeeper/0.5.5/", "requires_dist": [ "click (>=7.0)", "click-completion (>=0.5.1)", "matplotlib (>=3.0.3)", "tensorflow-datasets (>=1.1.0)", "tensorflow (>=1.13.1) ; extra == 'tensorflow'", "tensorflow-gpu (>=1.13.1) ; extra == 'tensorflow_gpu'", "pytest (>=4.3.1) ; extra == 'test'", "pytest-cov (>=2.6.1) ; extra == 'test'" ], "requires_python": ">=3.6", "summary": "A small library for managing deep learning models, hyper parameters and datasets", "version": "0.5.5" }, "last_serial": 5972975, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "bbdc0864907fe501d048425eecdcd8ad", "sha256": "3a4892cba1d71c68695fb9816c003597f173f42895351059b225d1691ed69896" }, "downloads": -1, "filename": "zookeeper-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "bbdc0864907fe501d048425eecdcd8ad", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16832, "upload_time": "2019-05-30T16:37:09", "url": "https://files.pythonhosted.org/packages/48/eb/3480b8f126aa700b3f3234a5f9f83c78acbd1111b267f0de67d6f6bb96f1/zookeeper-0.1.0-py3-none-any.whl" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "81f971ff33bc1c54108a907bb27befa5", "sha256": "12c9b9043c3a32fc45710d86e726ac764b3cf1e69425359af1dbeccc97b9ffd5" }, "downloads": -1, "filename": "zookeeper-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "81f971ff33bc1c54108a907bb27befa5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16968, "upload_time": "2019-06-03T16:53:48", "url": "https://files.pythonhosted.org/packages/01/17/740957e03abfbb9a5457a28f17681034eecff48c82067afb4dd528518dba/zookeeper-0.1.1-py3-none-any.whl" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "8e72730bf7a0619dbc9891e4162d3817", "sha256": "a9673eec484ca6f9224462b9b3e73076253a80b3d3507a37b69df1fca72a69dd" }, "downloads": -1, "filename": "zookeeper-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "8e72730bf7a0619dbc9891e4162d3817", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17543, "upload_time": "2019-06-24T20:16:35", "url": "https://files.pythonhosted.org/packages/40/42/7c24d9d59319ddd08f5becccc8200496b210dfb214d90058d3c1dc137c18/zookeeper-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2bf1475a5c334f63d3c389d9c2ac9df6", "sha256": "ae72ebae17aafdeb7cd0123052fdfa5b42d171b190ba200d1d46b81112ff6e3f" }, "downloads": -1, "filename": "zookeeper-0.1.2.tar.gz", "has_sig": false, "md5_digest": "2bf1475a5c334f63d3c389d9c2ac9df6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13667, "upload_time": "2019-06-24T20:16:37", "url": "https://files.pythonhosted.org/packages/e0/8c/eac944fd4451f73b75612ca7ca518eb09e784c4e33d8ab0dc1870fd73960/zookeeper-0.1.2.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "3ca8ffe3f9caaa75ea0266bafc8d22db", "sha256": "56ec98ba627a4d52cdc7ace17152beb1a7a7dc540b0221ec7d6c3a0a948f9600" }, "downloads": -1, "filename": "zookeeper-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "3ca8ffe3f9caaa75ea0266bafc8d22db", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17837, "upload_time": "2019-06-25T17:18:50", "url": "https://files.pythonhosted.org/packages/aa/04/0698fa4896acd0eaff0cef534158f7997a02bdbbdc7ff865da9e63ca8a13/zookeeper-0.2.0-py3-none-any.whl" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "4178c568efc9c05e923a8056090e62c6", "sha256": "536d769883bf06fe5f5ff00ea66fb3fdb7b43148ce20b2dd845abe524d0efaf6" }, "downloads": -1, "filename": "zookeeper-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "4178c568efc9c05e923a8056090e62c6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17891, "upload_time": "2019-07-02T14:17:47", "url": "https://files.pythonhosted.org/packages/6c/2c/fc22e58e6ce6cd5cd2af611c0868f5929a5c59f3b060cc570256f8aeab3e/zookeeper-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "07decd84c1c4f723deaa2642dd3aff9c", "sha256": "7e0f913324eed0e545a88e44683fcfc0b6f74621175dae7176dda15c981a68e6" }, "downloads": -1, "filename": "zookeeper-0.2.1.tar.gz", "has_sig": false, "md5_digest": "07decd84c1c4f723deaa2642dd3aff9c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13950, "upload_time": "2019-07-02T14:17:49", "url": "https://files.pythonhosted.org/packages/ce/6d/2935ae28f7cbb52a5c9dde619d819cb26645b231f50ffc015cce56aad98f/zookeeper-0.2.1.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "1c76ddea1df4da2dd8372499b8b5be88", "sha256": "e111a922e2004def9be2367b75903e3a37ddfe75ed1a7a2211814e476a478f65" }, "downloads": -1, "filename": "zookeeper-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "1c76ddea1df4da2dd8372499b8b5be88", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17814, "upload_time": "2019-07-15T23:35:32", "url": "https://files.pythonhosted.org/packages/83/37/3cc67b1947514c5272523cda83e2f21ede4cab440b1e6761f9d613cca41e/zookeeper-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4506e175c23199223bb4f4ee291f23e4", "sha256": "9ded44aa4b5b3e45d89e796c85b02c449277d4c5a82e82893d7c8dd343d1d9b4" }, "downloads": -1, "filename": "zookeeper-0.3.0.tar.gz", "has_sig": false, "md5_digest": "4506e175c23199223bb4f4ee291f23e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13892, "upload_time": "2019-07-15T23:35:34", "url": "https://files.pythonhosted.org/packages/79/a3/35f655c5ce51a4000abaa496bfc3dd6fdc81bf1949445bbd14164fea2b12/zookeeper-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "fafab56d2f3dbc95c18754addb1c9a75", "sha256": "9a84ccf9754c15fe26a30d8a8c316e876022231187b64d82feadbc2d76f2b922" }, "downloads": -1, "filename": "zookeeper-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "fafab56d2f3dbc95c18754addb1c9a75", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17763, "upload_time": "2019-07-17T10:33:03", "url": "https://files.pythonhosted.org/packages/79/56/cf3134864f33fd287713fe3729a6791a2b154899c767e53e396d09cfde8f/zookeeper-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ee14f06156fb8e5fcf76524c6105653b", "sha256": "515935ff1a09c7c23f08e5b611d8d480113cb79a7be8daf067ed33c2a62dae1e" }, "downloads": -1, "filename": "zookeeper-0.3.1.tar.gz", "has_sig": false, "md5_digest": "ee14f06156fb8e5fcf76524c6105653b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13856, "upload_time": "2019-07-17T10:33:05", "url": "https://files.pythonhosted.org/packages/22/44/fefac9d633c39f2086e62744a4140e51eca2ffa6bf43958666e5b63d899d/zookeeper-0.3.1.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "d7c05664d62cfc62d7c4d94cebc3fc03", "sha256": "f425a04ea0daf3b4c2277de6fe31c1a4ee9080485db1ce44b4e7e87d509ca682" }, "downloads": -1, "filename": "zookeeper-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d7c05664d62cfc62d7c4d94cebc3fc03", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 17872, "upload_time": "2019-07-25T09:11:08", "url": "https://files.pythonhosted.org/packages/a8/81/592c8d876863dee776a0928382955280ad4f84cb59d00bbb3c04febfba5f/zookeeper-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "58cf8a9cf6774729be1708df1f1ce5c4", "sha256": "f1cc9f8a878d9bec2cc5df46f21b8b249551fcea83ad04c89c629416d701b84f" }, "downloads": -1, "filename": "zookeeper-0.4.0.tar.gz", "has_sig": false, "md5_digest": "58cf8a9cf6774729be1708df1f1ce5c4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 13937, "upload_time": "2019-07-25T09:11:10", "url": "https://files.pythonhosted.org/packages/e6/b3/96be46f850f230dc9126b6b5c78b05ff8ca28888a18ab917d587e68edb3e/zookeeper-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "184f7ff3f6694f85185cf253074f3d8e", "sha256": "52901c17631e31f9dd5893fa44ab73d852a06f235f9c4a8bf8cd7cbb37d951ad" }, "downloads": -1, "filename": "zookeeper-0.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "184f7ff3f6694f85185cf253074f3d8e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 17964, "upload_time": "2019-07-30T16:19:54", "url": "https://files.pythonhosted.org/packages/75/9d/c5edee414fc858e7446fe96c40a6606c854f36ecbd2e576a34463adb520d/zookeeper-0.4.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "37b6564e7d9c65be95aa63f65b69fa08", "sha256": "f9bf8af88c50d0ff2defc288c9170f2168fba6728ad8ba9fe988a94ce75ceacc" }, "downloads": -1, "filename": "zookeeper-0.4.1.tar.gz", "has_sig": false, "md5_digest": "37b6564e7d9c65be95aa63f65b69fa08", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 14007, "upload_time": "2019-07-30T16:19:56", "url": "https://files.pythonhosted.org/packages/12/60/b46d9d59398fe694f3fc415ba6cc54ce66051d20270089b11c9123be7b1e/zookeeper-0.4.1.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "8835888f988ff79543a01efbfe13a7b8", "sha256": "7d632cdf249c213ee451bf041950ccfbf4dbffd99c52b49bcbfb56a1a7217c4a" }, "downloads": -1, "filename": "zookeeper-0.5.0-py2-none-any.whl", "has_sig": false, "md5_digest": "8835888f988ff79543a01efbfe13a7b8", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=3.6", "size": 19099, "upload_time": "2019-08-08T16:12:26", "url": "https://files.pythonhosted.org/packages/c8/dc/f74261c723df945e391f0905feec14cc2ba95789e2205f0bdcdfdee066d1/zookeeper-0.5.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8b71a19668d6568f6cbced04a851ba72", "sha256": "1f18c86feea15aa83435f8d806d66427accb54c25c3fafb71917e730e0830679" }, "downloads": -1, "filename": "zookeeper-0.5.0.tar.gz", "has_sig": false, "md5_digest": "8b71a19668d6568f6cbced04a851ba72", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 12433, "upload_time": "2019-08-08T16:12:28", "url": "https://files.pythonhosted.org/packages/df/2a/5a22eb029a67fd839772498954c3a0f53538c4340ee09054961176bdee86/zookeeper-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "39cfd1f85088abf02bc857619cc40dff", "sha256": "f0acb822e1f67b5a9391de9bdfa7a138575a54b9cfe22c88c87b8c480edcb6d7" }, "downloads": -1, "filename": "zookeeper-0.5.1-py3-none-any.whl", "has_sig": false, "md5_digest": "39cfd1f85088abf02bc857619cc40dff", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 19140, "upload_time": "2019-08-09T17:05:36", "url": "https://files.pythonhosted.org/packages/d8/98/4019ef588610a9ce84b92d2c125b83d43bdb6f1950d8b4483a0e1cfafb62/zookeeper-0.5.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0b96d8840b85fa5eadb49d25e22fbb43", "sha256": "a34bae98bd810cede495b49eb3234a01861081e65ba46487653f932aedd42273" }, "downloads": -1, "filename": "zookeeper-0.5.1.tar.gz", "has_sig": false, "md5_digest": "0b96d8840b85fa5eadb49d25e22fbb43", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 12437, "upload_time": "2019-08-09T17:05:38", "url": "https://files.pythonhosted.org/packages/80/6e/761349f72ea82ae14b8bdbbedf2930d719df91b09ef793a9dba98758a4d4/zookeeper-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "89cdf4bc2b44886ed2bb9b9861d933ca", "sha256": "5093be35af11d51bdf671f6fd272d6bc4030648fcac29e842bb83a1c539b1870" }, "downloads": -1, "filename": "zookeeper-0.5.2-py3-none-any.whl", "has_sig": false, "md5_digest": "89cdf4bc2b44886ed2bb9b9861d933ca", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 19144, "upload_time": "2019-08-12T15:19:28", "url": "https://files.pythonhosted.org/packages/a8/db/b82cf54602f39b11e0a47891609ce87c89e0e9a5cb43d6d84fb6015a83bf/zookeeper-0.5.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1974900fe45685a95a7bfa8375f61f13", "sha256": "1b2a63ab61069e78dfd2ab18b78c1fe634588d9f89714f94195c36f56cf0c3eb" }, "downloads": -1, "filename": "zookeeper-0.5.2.tar.gz", "has_sig": false, "md5_digest": "1974900fe45685a95a7bfa8375f61f13", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 14839, "upload_time": "2019-08-12T15:19:30", "url": "https://files.pythonhosted.org/packages/d1/3f/e4317ca986812eed471fc911a86b70364eb24414763d437d4af3c3ba682d/zookeeper-0.5.2.tar.gz" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "313d709fde3016674805b7ca0c3535af", "sha256": "e591b36af0f1453139b7b2d1a2ab49608aaad8d978611e08e75c1a93c9aa6f62" }, "downloads": -1, "filename": "zookeeper-0.5.3-py3-none-any.whl", "has_sig": false, "md5_digest": "313d709fde3016674805b7ca0c3535af", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 19269, "upload_time": "2019-09-04T18:02:42", "url": "https://files.pythonhosted.org/packages/0c/48/63bd127d72dd7ab2ec8fb243673c948146f3a29129db6abd9f9841917caa/zookeeper-0.5.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2b26b1971e1988265d8b785eec4e1731", "sha256": "d032ba361f06d55031945febbe276f6531c75e433f6f7642e69db6a7ff3b76e8" }, "downloads": -1, "filename": "zookeeper-0.5.3.tar.gz", "has_sig": false, "md5_digest": "2b26b1971e1988265d8b785eec4e1731", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 14762, "upload_time": "2019-09-04T18:02:44", "url": "https://files.pythonhosted.org/packages/35/06/188648562ad6fd0ea803a2f85ba966377aba2c22dbd92e35a05831d435b0/zookeeper-0.5.3.tar.gz" } ], "0.5.4": [ { "comment_text": "", "digests": { "md5": "5aeb6b3bb38722e4cf661f9528c50aa3", "sha256": "3c3575e4150ba5e650d3126500c9454da233f1c81d87feed6b3ce74926c17b28" }, "downloads": -1, "filename": "zookeeper-0.5.4-py2-none-any.whl", "has_sig": false, "md5_digest": "5aeb6b3bb38722e4cf661f9528c50aa3", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=3.6", "size": 19719, "upload_time": "2019-09-19T10:18:15", "url": "https://files.pythonhosted.org/packages/e6/6a/ca3951ae4023b087912b693ecbca646c047a6a416f60f3a7e411b10d6fc6/zookeeper-0.5.4-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cd2b2477474e4f13eb71994ee9baf0a0", "sha256": "bb5545646779a97ebdf523621e00b589f1944dd31aacdee6eb0f05ac51b2a0a0" }, "downloads": -1, "filename": "zookeeper-0.5.4.tar.gz", "has_sig": false, "md5_digest": "cd2b2477474e4f13eb71994ee9baf0a0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 14474, "upload_time": "2019-09-19T10:18:17", "url": "https://files.pythonhosted.org/packages/ef/c7/c6e440ab5fb387982b6da807656d81c93dd4bba9a3f6daf6f440d50597f4/zookeeper-0.5.4.tar.gz" } ], "0.5.5": [ { "comment_text": "", "digests": { "md5": "e062b1f729bcdc34e64d04775e605602", "sha256": "9686c16df6f4b25c6caf1fadd2bdd560a97fb1292d65d973a96a299c6474e94e" }, "downloads": -1, "filename": "zookeeper-0.5.5-py3-none-any.whl", "has_sig": false, "md5_digest": "e062b1f729bcdc34e64d04775e605602", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 19836, "upload_time": "2019-10-02T14:51:18", "url": "https://files.pythonhosted.org/packages/9c/65/0e4491c8a256bfc234e4a39400fa89b5c7018c10a40861950a1d070db08b/zookeeper-0.5.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "27b0af228bb1cd2bfa33ece535a0e7e4", "sha256": "070c718092bb6d8016838a815ef24fa1e1becfaee8fa9b6d7e5021094fd525f8" }, "downloads": -1, "filename": "zookeeper-0.5.5.tar.gz", "has_sig": false, "md5_digest": "27b0af228bb1cd2bfa33ece535a0e7e4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 15259, "upload_time": "2019-10-02T14:51:20", "url": "https://files.pythonhosted.org/packages/fc/3a/035a48a5ab07829c9dce0e0bcf2f27104c7d3c50cb9fb16d02b8c7724cc8/zookeeper-0.5.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e062b1f729bcdc34e64d04775e605602", "sha256": "9686c16df6f4b25c6caf1fadd2bdd560a97fb1292d65d973a96a299c6474e94e" }, "downloads": -1, "filename": "zookeeper-0.5.5-py3-none-any.whl", "has_sig": false, "md5_digest": "e062b1f729bcdc34e64d04775e605602", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 19836, "upload_time": "2019-10-02T14:51:18", "url": "https://files.pythonhosted.org/packages/9c/65/0e4491c8a256bfc234e4a39400fa89b5c7018c10a40861950a1d070db08b/zookeeper-0.5.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "27b0af228bb1cd2bfa33ece535a0e7e4", "sha256": "070c718092bb6d8016838a815ef24fa1e1becfaee8fa9b6d7e5021094fd525f8" }, "downloads": -1, "filename": "zookeeper-0.5.5.tar.gz", "has_sig": false, "md5_digest": "27b0af228bb1cd2bfa33ece535a0e7e4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 15259, "upload_time": "2019-10-02T14:51:20", "url": "https://files.pythonhosted.org/packages/fc/3a/035a48a5ab07829c9dce0e0bcf2f27104c7d3c50cb9fb16d02b8c7724cc8/zookeeper-0.5.5.tar.gz" } ] }