{ "info": { "author": "kpe", "author_email": "kpe.git@gmailbox.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy" ], "description": "params-flow\n===========\n\n|Build Status| |Coverage Status| |Version Status| |Python Versions| |Downloads|\n\n`params-flow`_ provides an alternative style for defining your `Keras`_ model\nor layer configuration in order to reduce the boilerplate code related to\npassing and (de)serializing your model/layer configuration arguments.\n\n`params-flow`_ encourages this:\n\n.. code:: python\n\n import params_flow as pf\n\n class MyDenseLayer(pf.Layer): # using params_flow Layer/Model instead of Keras ones\n class Params(pf.Layer.Params): # extend one or more base Params configurations\n num_outputs = None # declare all configuration arguments\n activation = \"gelu\" # provide or override super() defaults\n # do not define an __init__()\n\n def build(self, in_shape):\n self.kernel = self.add_variable(\"kernel\",\n [int(in_shape[-1]),\n self.params.num_outputs]) # access config arguments\n\n\nwhich would be sufficient to pass the right configuration arguments to the\nsuper layer/model, as well as take care of (de)serialization, so you can concentrate\non the ``build()`` or ``call()`` implementations, instead of writing boilerplate\ncode like this:\n\n.. code:: python\n\n from tf.keras.layers import Layer\n\n class MyDenseLayer(Layer):\n def __init__(self,\n num_outputs, # put all of the layer configuration in the constructor\n activation = \"gelu\", # provide defaults\n **kwargs): # allow base layer configuration to be passed to super\n self.num_outputs = num_outputs\n self.activation = activation\n super().__init__(**kwargs)\n\n def build(self, in_shape):\n self.kernel = self.add_variable(\"kernel\",\n [int(in_shape[-1]),\n self.num_outputs]) # access config arguments\n\n def get_config(self): # serialize layer configuration, __init__() is the deserializer\n config = {\n 'num_outputs': self.num_outputs,\n 'activation': self.activation\n }\n base_config = super().get_config()\n return dict(list(base_config.items())) + list(config.items())\n\nNEWS\n----\n - **04.Apr.2020** - refactored to use ``WithParams`` mixin from `kpe/py-params`_. Make\n sure to use ``_construct()`` instead of ``__init__()`` in your ``Layer`` and ``Model`` subclasses.\n **Breaking Change** - ``_construct()`` signature has changed, please update\n your ``Layer`` and ``Model`` subclasses from:\n\n .. code:: python\n\n def _construct(self, params: Params):\n ...\n\n to:\n\n .. code:: python\n\n def _construct(self, **kwargs):\n super()._construct(**kwargs)\n params = self.params\n ...\n\n - **11.Sep.2019** - `LookAhead`_ optimizer wrapper implementation for efficient non eager graph mode execution (TPU) added.\n - **05.Sep.2019** - `LookAhead`_ optimizer implementation as Keras callback added.\n - **04.Sep.2019** - `RAdam`_ optimizer implementation added.\n\nLICENSE\n-------\n\nMIT. See `License File `_.\n\nInstall\n-------\n\n``params-flow`` is on the Python Package Index (PyPI):\n\n::\n\n pip install params-flow\n\n\nUsage\n-----\n\n``params-flow`` provides a ``Layer`` and ``Model`` base classes that help\nreducing common boilerplate code in your custom Keras layers and models.\n\nWhen subclassing a Keras ``Model`` or ``Layer``, each configuration parameter\nhas to be provided as an argument in ``__init__()``. Keras relies on both ``__init__()``\nand ``get_config()`` to make a model/layer serializable.\n\nWhile python idiomatic this style of defining your Keras models/layers results\nin a lot of boilerplate code. `params-flow`_ provides an alternative by\nencapsulating all those ``__init__()`` configuration arguments in a dedicated\n``Params`` instance (``Params`` is kind of a \"type-safe\" python dict -\nsee `kpe/py-params`_).\nThe model/layer specific configuration needs to be declared as\na nested ``Model.Params``/``Layer.Params`` subclass, and your model/layer have to\nsubclass ``params_flow.Model``/``params_flow.Layer`` instead of the Keras ones:\n\n.. code:: python\n\n class BertEmbeddingsLayer(Layer):\n class Params(PositionEmbeddingLayer.Params):\n vocab_size = None\n token_type_vocab_size = 2\n hidden_size = 768\n use_position_embeddings = True\n\n class TransformerEncoderLayer(Layer):\n class Params(TransformerSelfAttentionLayer.Params,\n ProjectionLayer.Params):\n intermediate_size = 3072\n intermediate_activation = \"gelu\"\n\n\n\nthis allows you to declare the model's configuration by simply extending\nthe ``Params`` of the underlying layers:\n\n.. code:: python\n\n class BertModel(Model):\n class Params(BertEmbeddingsLayer.Params,\n TransformerEncoderLayer.Params):\n pass\n\n**N.B.** The two code excerpts above are taken from `kpe/bert-for-tf2`_, so check there\nfor the details of a non-trivial `params-flow`_ based implementation (of `BERT`_).\n\nResources\n---------\n\n- `kpe/py-params`_ - A \"type-safe\" dict class for python.\n- `kpe/bert-for-tf2`_ - BERT implementation using the TensorFlow 2 Keras API with the help of `params-flow`_ for reducing some of the common Keras boilerplate code needed when passing parameters to custom layers.\n\n\n\n\n.. |Build Status| image:: https://travis-ci.org/kpe/params-flow.svg?branch=master\n :target: https://travis-ci.org/kpe/params-flow\n.. |Coverage Status| image:: https://coveralls.io/repos/kpe/params-flow/badge.svg?branch=master\n :target: https://coveralls.io/r/kpe/params-flow\n.. |Version Status| image:: https://badge.fury.io/py/params-flow.svg\n :target: https://badge.fury.io/py/params-flow\n.. |Python Versions| image:: https://img.shields.io/pypi/pyversions/params-flow.svg\n.. |Downloads| image:: https://img.shields.io/pypi/dm/params-flow.svg\n\n.. _`kpe/py-params`: https://github.com/kpe/py-params\n.. _`kpe/params-flow`: https://github.com/kpe/params-flow\n.. _`kpe/bert-for-tf2`: https://github.com/kpe/bert-for-tf2\n.. _`params-flow`: https://github.com/kpe/params-flow\n\n.. _`Keras`: https://keras.io\n.. _`BERT`: https://github.com/google-research/bert\n.. _`RAdam`: https://arxiv.org/abs/1908.03265\n.. _`LookAhead`: https://arxiv.org/abs/1907.08610", "description_content_type": "text/x-rst", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/kpe/params-flow/", "keywords": "tensorflow keras", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "params-flow", "package_url": "https://pypi.org/project/params-flow/", "platform": "", "project_url": "https://pypi.org/project/params-flow/", "project_urls": { "Homepage": "https://github.com/kpe/params-flow/" }, "release_url": "https://pypi.org/project/params-flow/0.8.2/", "requires_dist": null, "requires_python": ">=3.5", "summary": "Tensorflow Keras utilities for reducing boilerplate code.", "version": "0.8.2", "yanked": false, "yanked_reason": null }, "last_serial": 7119435, "releases": { "0.0.10": [ { "comment_text": "", "digests": { "md5": "1d4caa05d32fd7e3bbd6a72b3871654a", "sha256": "a528a83b08a9cad59ffcce5e7a17eac26177e82f370289a7c93bcccc465daf47" }, "downloads": -1, "filename": "params-flow-0.0.10.tar.gz", "has_sig": false, "md5_digest": "1d4caa05d32fd7e3bbd6a72b3871654a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 3635, "upload_time": "2019-05-22T07:38:24", "upload_time_iso_8601": "2019-05-22T07:38:24.336296Z", "url": "https://files.pythonhosted.org/packages/94/00/1c2e2dfa797899ef05d5df5d4b84ac00fccfc14f30edea95b0d4c4126b08/params-flow-0.0.10.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "cd6396a39534293e8ba07107532f1224", "sha256": "af28c49adee98c337d236f87f34d72d00fcb3f1f827d0ccfc97c26201cf3f1f5" }, "downloads": -1, "filename": "params_flow-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "cd6396a39534293e8ba07107532f1224", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 5442, "upload_time": "2019-04-08T21:02:37", "upload_time_iso_8601": "2019-04-08T21:02:37.540081Z", "url": "https://files.pythonhosted.org/packages/f9/ea/2df18a226c11ff7ff4774f55191225f1f90bcbab6f61be03109711b472bb/params_flow-0.0.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "31d51269fcb4853c5b7a736c925d17ad", "sha256": "8a1f63b85b3b8db7acdc026be6599b7f9b5850063dcf4357a48b644077634063" }, "downloads": -1, "filename": "params-flow-0.0.4.tar.gz", "has_sig": false, "md5_digest": "31d51269fcb4853c5b7a736c925d17ad", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 3531, "upload_time": "2019-04-08T21:02:39", "upload_time_iso_8601": "2019-04-08T21:02:39.551732Z", "url": "https://files.pythonhosted.org/packages/e0/ce/d98b753882505bceacbed4ce55084a9687e2619387d0c6c8fe619595de27/params-flow-0.0.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "c27e856d049b95f8e5acc62a6304e5f2", "sha256": "839a481d4ba92e311279ad634a769154f9bad3c73f9f2909129bea98e3dca125" }, "downloads": -1, "filename": "params-flow-0.0.6.tar.gz", "has_sig": false, "md5_digest": "c27e856d049b95f8e5acc62a6304e5f2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 3632, "upload_time": "2019-04-09T05:25:34", "upload_time_iso_8601": "2019-04-09T05:25:34.726535Z", "url": "https://files.pythonhosted.org/packages/6b/46/f4f027be26b6e350d26a7febb1549bf341ab99a278f5502989036184042a/params-flow-0.0.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "1a813282b0de78d71599d4304607d473", "sha256": "7163f94c094e6c8d55092cf1d52533a2378f75dbeaff3481d8bac42c934cd20d" }, "downloads": -1, "filename": "params-flow-0.0.9.tar.gz", "has_sig": false, "md5_digest": "1a813282b0de78d71599d4304607d473", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 3628, "upload_time": "2019-04-09T05:43:18", "upload_time_iso_8601": "2019-04-09T05:43:18.609996Z", "url": "https://files.pythonhosted.org/packages/1d/e5/bc5c1319bd831514b3af722822c7d4b60064c89c6893760a71a44854379f/params-flow-0.0.9.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "087a1815eebc9e5acea0297d35a55c48", "sha256": "2b6b338818c06e180d9f6599625985005b6661f0f6373af8b62842c9812447fb" }, "downloads": -1, "filename": "params-flow-0.1.0.tar.gz", "has_sig": false, "md5_digest": "087a1815eebc9e5acea0297d35a55c48", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 3685, "upload_time": "2019-05-22T08:42:30", "upload_time_iso_8601": "2019-05-22T08:42:30.352289Z", "url": "https://files.pythonhosted.org/packages/94/f4/625b7f9d9e67c7f96a1426783013f3bb054928c750b5ddd34d903378c0e8/params-flow-0.1.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "41a8a5937fb2e5445047cf9ecf3293dc", "sha256": "40da4564ee3a87cd462d64b73c8592d73cbe0f28600b596dda6c28cbd78afa38" }, "downloads": -1, "filename": "params-flow-0.1.1.tar.gz", "has_sig": false, "md5_digest": "41a8a5937fb2e5445047cf9ecf3293dc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 4180, "upload_time": "2019-05-22T10:00:28", "upload_time_iso_8601": "2019-05-22T10:00:28.683168Z", "url": "https://files.pythonhosted.org/packages/25/e3/41f5f55b3277fcea71eca01094bfb5429b6ad74f75ba22a84d0f223b5d38/params-flow-0.1.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "1b90d520bdef9e13df427022c584c123", "sha256": "df4c3ef42863d06fcff9ab00be9111fb9ff3a58f959ee47aa41a729f765c5e9a" }, "downloads": -1, "filename": "params-flow-0.1.2.tar.gz", "has_sig": false, "md5_digest": "1b90d520bdef9e13df427022c584c123", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 4187, "upload_time": "2019-05-22T11:36:33", "upload_time_iso_8601": "2019-05-22T11:36:33.845235Z", "url": "https://files.pythonhosted.org/packages/b8/d4/f28b8718fa1082da6800903df174054b8311f0348a634083d690d5f829ba/params-flow-0.1.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "6d3eaeadda072bd204a990f3b4ff070d", "sha256": "f34df2a2fff52ce3054204939d9ab22a1b14ef57889d8f36cca3b299b8a08bce" }, "downloads": -1, "filename": "params-flow-0.1.3.tar.gz", "has_sig": false, "md5_digest": "6d3eaeadda072bd204a990f3b4ff070d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 4195, "upload_time": "2019-05-22T13:53:16", "upload_time_iso_8601": "2019-05-22T13:53:16.266064Z", "url": "https://files.pythonhosted.org/packages/fc/7f/f19d96fe86a468b4d9578d11f163ce2b44f03a9d5e55648e3824a70a18de/params-flow-0.1.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "0bf64b4b642f49137b59376763c6dd44", "sha256": "6e45d997e0361236b6d21d3c1e12c3ea99dc9f20c39fa82ac5b91e753f3f2d6f" }, "downloads": -1, "filename": "params-flow-0.1.6.tar.gz", "has_sig": false, "md5_digest": "0bf64b4b642f49137b59376763c6dd44", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 4307, "upload_time": "2019-05-22T18:23:14", "upload_time_iso_8601": "2019-05-22T18:23:14.720540Z", "url": "https://files.pythonhosted.org/packages/06/02/62b809ac2797ad7f326142218787008bba2a40456dd73a1aa4dd790dfb0a/params-flow-0.1.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "8fa0d8c23aabcbb3a3b6a6167c7f0abc", "sha256": "d81fb64e36385f9efc1fef9867343532fc519ece222cec8c32e4f1d772b2c3f6" }, "downloads": -1, "filename": "params-flow-0.1.8.tar.gz", "has_sig": false, "md5_digest": "8fa0d8c23aabcbb3a3b6a6167c7f0abc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 4262, "upload_time": "2019-05-22T20:36:56", "upload_time_iso_8601": "2019-05-22T20:36:56.360448Z", "url": "https://files.pythonhosted.org/packages/82/6c/1e9100a23a057025a4a93c2fa90346eff6e6e4956387cb3509791c22d1cc/params-flow-0.1.8.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "3ac3ac71a574f79b7b60a0dda608ca18", "sha256": "2bc971c5e1acbfac12b65f040c0ab159da17a0a199f805b60b2c96cf87c76145" }, "downloads": -1, "filename": "params-flow-0.1.9.tar.gz", "has_sig": false, "md5_digest": "3ac3ac71a574f79b7b60a0dda608ca18", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 4262, "upload_time": "2019-05-22T20:58:34", "upload_time_iso_8601": "2019-05-22T20:58:34.049822Z", "url": "https://files.pythonhosted.org/packages/fa/57/2f30dbad626b62adcd94882afa2fd1f5b1755b444f681d6634ba29711869/params-flow-0.1.9.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "2e580351f58a6c0fae4af19d13296822", "sha256": "2759805ea055a33e36e8ce99e1bdf06274fb87336d3d251a319ea2f8400bb32e" }, "downloads": -1, "filename": "params-flow-0.2.0.tar.gz", "has_sig": false, "md5_digest": "2e580351f58a6c0fae4af19d13296822", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 4135, "upload_time": "2019-05-23T11:47:34", "upload_time_iso_8601": "2019-05-23T11:47:34.487183Z", "url": "https://files.pythonhosted.org/packages/53/f7/b070cb99bb1a996cf8a896679aca21a6e3571c2aa7f75f50449f30deb3a2/params-flow-0.2.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "89c53e43882cb1a2f19b5a4f54c2bf96", "sha256": "1f8b669405d8ea2d177debe22ef7b243fcd9f8fc37bb386eba9c3a4710a706c9" }, "downloads": -1, "filename": "params-flow-0.2.1.tar.gz", "has_sig": false, "md5_digest": "89c53e43882cb1a2f19b5a4f54c2bf96", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 4304, "upload_time": "2019-05-23T13:25:14", "upload_time_iso_8601": "2019-05-23T13:25:14.152067Z", "url": "https://files.pythonhosted.org/packages/db/88/673e0472d3fcc54f9cb24d4fdd7d8b0002420a2ed792b371060956377dbe/params-flow-0.2.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "730f44fec5c68744c513f2a2afa266e0", "sha256": "e5192c91e405095cd4fe9723501a31f34e3b45dfa8abbc53d28b4766519db05e" }, "downloads": -1, "filename": "params-flow-0.2.2.tar.gz", "has_sig": false, "md5_digest": "730f44fec5c68744c513f2a2afa266e0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 4463, "upload_time": "2019-05-23T14:00:36", "upload_time_iso_8601": "2019-05-23T14:00:36.138793Z", "url": "https://files.pythonhosted.org/packages/84/5d/1cde5d596f5f9a5bec0e9d8d7eaf4baedf438a49524ff632723a4657e277/params-flow-0.2.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "8459733001a409677c77e52729226c49", "sha256": "8d03e26725549bbd11772b4ed8bd31ef511812d09f798253c9a45df32fd0bc75" }, "downloads": -1, "filename": "params-flow-0.2.3.tar.gz", "has_sig": false, "md5_digest": "8459733001a409677c77e52729226c49", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 5707, "upload_time": "2019-07-27T13:39:44", "upload_time_iso_8601": "2019-07-27T13:39:44.979802Z", "url": "https://files.pythonhosted.org/packages/49/b7/846317ce69b8ffd1d17b0f4175df564affe7e8d5c5dce125207c65f46949/params-flow-0.2.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "c6cdeac58334b20d4a5b147e6b9c58c7", "sha256": "62d70f2a924ac031e62818d922ad49fe2205c9849e91c4e5b2a861308c99b89e" }, "downloads": -1, "filename": "params-flow-0.2.4.tar.gz", "has_sig": false, "md5_digest": "c6cdeac58334b20d4a5b147e6b9c58c7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 6195, "upload_time": "2019-07-30T14:35:42", "upload_time_iso_8601": "2019-07-30T14:35:42.099249Z", "url": "https://files.pythonhosted.org/packages/d2/8c/888b6fd311793078bcb8bf3c617587672ffe80db5e920ce4539e9cab89bf/params-flow-0.2.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "609420a95c23beb69b2ef0a2cccc4f71", "sha256": "4d8171ab13847cb30376fd35119cc7b982be926e3a79479231d7835f9e190a21" }, "downloads": -1, "filename": "params-flow-0.3.0.tar.gz", "has_sig": false, "md5_digest": "609420a95c23beb69b2ef0a2cccc4f71", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 6278, "upload_time": "2019-08-06T22:34:43", "upload_time_iso_8601": "2019-08-06T22:34:43.686550Z", "url": "https://files.pythonhosted.org/packages/b3/d7/b6e7fcf4fa17ac54e4696acebd6e1cc0ee726d0d7a53c52f8e788b096ef8/params-flow-0.3.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "183eaefc1864f3b157a97bfe9f1cbf73", "sha256": "90a9886816a2867cd0dcf7c51dd1716c61413d28d0686949480aa89645cccd56" }, "downloads": -1, "filename": "params-flow-0.4.0.tar.gz", "has_sig": false, "md5_digest": "183eaefc1864f3b157a97bfe9f1cbf73", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 7965, "upload_time": "2019-08-09T14:11:00", "upload_time_iso_8601": "2019-08-09T14:11:00.913964Z", "url": "https://files.pythonhosted.org/packages/4e/5f/c44842e527ffa4b0d3b5a8b1ab4eb428150cad171628fb66fe5ee917c5d0/params-flow-0.4.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "218365baaedc793b3fa3f25aa7aaf785", "sha256": "e4b052cb8f334363f6c7b2716ff67072cc6437e7c146a4906ecad811f6e0830a" }, "downloads": -1, "filename": "params-flow-0.5.0.tar.gz", "has_sig": false, "md5_digest": "218365baaedc793b3fa3f25aa7aaf785", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 8882, "upload_time": "2019-08-09T22:04:21", "upload_time_iso_8601": "2019-08-09T22:04:21.652839Z", "url": "https://files.pythonhosted.org/packages/96/66/5d9fc6dcc16a722fbdfe64e432ef56928583f86dead6306683b1a69f4287/params-flow-0.5.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "aa2efa7a8bb2ce9548d75d94cb9541b6", "sha256": "e01b746c57c137a5b1ba622cfdcdbbb1183e81a2fc4e0d5625f1e462270330e7" }, "downloads": -1, "filename": "params-flow-0.5.1.tar.gz", "has_sig": false, "md5_digest": "aa2efa7a8bb2ce9548d75d94cb9541b6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 9148, "upload_time": "2019-08-09T22:57:29", "upload_time_iso_8601": "2019-08-09T22:57:29.211626Z", "url": "https://files.pythonhosted.org/packages/de/26/d813fafb66022c62d311143fc15c883aea3c7b261a876572111355db10e1/params-flow-0.5.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "0982f64549b3f79f2a866cbe6896ebd8", "sha256": "ed945ec2a2dafb0846f1f0175befc33251150713cabbcf75b021988a555032d6" }, "downloads": -1, "filename": "params-flow-0.5.2.tar.gz", "has_sig": false, "md5_digest": "0982f64549b3f79f2a866cbe6896ebd8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 10729, "upload_time": "2019-08-10T12:52:34", "upload_time_iso_8601": "2019-08-10T12:52:34.157150Z", "url": "https://files.pythonhosted.org/packages/e2/21/422bbaab1e35f35f471dada93955b3736b8a5341878977bc1e17d2ea063a/params-flow-0.5.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "8ba94f22a7927144c27f7497020f695c", "sha256": "8d9bcf1a8660a0321e84cc11b3594a7205ce5961bbd9c9c5fa0f6731bcec5251" }, "downloads": -1, "filename": "params-flow-0.5.3.tar.gz", "has_sig": false, "md5_digest": "8ba94f22a7927144c27f7497020f695c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 10775, "upload_time": "2019-08-10T13:55:44", "upload_time_iso_8601": "2019-08-10T13:55:44.742726Z", "url": "https://files.pythonhosted.org/packages/01/22/bde352152b1f9eef07b8a6c5111eb6c8b0678fd3aa3aa00f0fd632e8299c/params-flow-0.5.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "23251a9acd6329c075db27b79684f89b", "sha256": "8f839345c458bf2566518a165b0890e9d5b09d8b06271afdf8b5dd2b4154d983" }, "downloads": -1, "filename": "params-flow-0.6.0.tar.gz", "has_sig": false, "md5_digest": "23251a9acd6329c075db27b79684f89b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 11067, "upload_time": "2019-08-10T16:02:08", "upload_time_iso_8601": "2019-08-10T16:02:08.553491Z", "url": "https://files.pythonhosted.org/packages/ee/c3/db0ac26c69ba60717c4527df4d811220a75d60355b61cce2abc097fbe5cc/params-flow-0.6.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "228ee50ab5d4155edd09828c4ed1e2b9", "sha256": "c19b6ae8451f2a1fe5dcae37c63153744b0598140cd41c13a34bd793af7fda11" }, "downloads": -1, "filename": "params-flow-0.6.1.tar.gz", "has_sig": false, "md5_digest": "228ee50ab5d4155edd09828c4ed1e2b9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 11049, "upload_time": "2019-08-10T18:27:02", "upload_time_iso_8601": "2019-08-10T18:27:02.050230Z", "url": "https://files.pythonhosted.org/packages/2d/7c/ca3b78773f6984c8299ad4675802afbd7424af868a797ec76a2f6e3a9548/params-flow-0.6.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "8249cb26f28c36074aee068356b22db9", "sha256": "ea3aca03af5c11fc7fd67a39315fac23558b792fd936742741774647a2d512a1" }, "downloads": -1, "filename": "params-flow-0.6.2.tar.gz", "has_sig": false, "md5_digest": "8249cb26f28c36074aee068356b22db9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 11050, "upload_time": "2019-08-16T20:37:17", "upload_time_iso_8601": "2019-08-16T20:37:17.786814Z", "url": "https://files.pythonhosted.org/packages/c2/28/b2c402db9ce56dccb958bc296b7c3ddbfe99794e8ae00b0b3db2077cdb93/params-flow-0.6.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.3": [ { "comment_text": "", "digests": { "md5": "a001bf74898b75defb854241f48ad02d", "sha256": "a7e68df93e26ed2082cca70e781140d006a84970f4633730ae92953205301b8e" }, "downloads": -1, "filename": "params-flow-0.6.3.tar.gz", "has_sig": false, "md5_digest": "a001bf74898b75defb854241f48ad02d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 12615, "upload_time": "2019-09-04T10:11:44", "upload_time_iso_8601": "2019-09-04T10:11:44.566780Z", "url": "https://files.pythonhosted.org/packages/5b/34/15ddc02f7ecf8c8be47a9a821cf75909f240ee01431a3476d35dd037202c/params-flow-0.6.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.5": [ { "comment_text": "", "digests": { "md5": "4a34e9c79ed26b0364171e8a5b121aba", "sha256": "f27444c2335772d3b23422ceb7e77e5a68a50af5d05408c98474d87207542e09" }, "downloads": -1, "filename": "params-flow-0.6.5.tar.gz", "has_sig": false, "md5_digest": "4a34e9c79ed26b0364171e8a5b121aba", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 13019, "upload_time": "2019-09-04T14:00:37", "upload_time_iso_8601": "2019-09-04T14:00:37.681506Z", "url": "https://files.pythonhosted.org/packages/76/bb/2f0e0068b3f7b97ccf3e498f1f5a8db72de6420de96d3cdf407acdfcaaec/params-flow-0.6.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.6": [ { "comment_text": "", "digests": { "md5": "4d18e10b74b9030a3437c7e75a52432f", "sha256": "b18d152b59d56d015a005aba1daeeb669d52b59110ad0c154ce4508cbbbf5d56" }, "downloads": -1, "filename": "params-flow-0.6.6.tar.gz", "has_sig": false, "md5_digest": "4d18e10b74b9030a3437c7e75a52432f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 13023, "upload_time": "2019-09-04T14:13:21", "upload_time_iso_8601": "2019-09-04T14:13:21.455792Z", "url": "https://files.pythonhosted.org/packages/b4/04/a7ef5de875d36e23788b986dc476de494763c6539dba85250a62346e9c57/params-flow-0.6.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.7": [ { "comment_text": "", "digests": { "md5": "622e72c2e959a6610334bff5254a12c0", "sha256": "bcf9a0152a03f4f8fce14077091d792d762ca4bfb4912ab24fdb8b7a61fe7283" }, "downloads": -1, "filename": "params-flow-0.6.7.tar.gz", "has_sig": false, "md5_digest": "622e72c2e959a6610334bff5254a12c0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 14378, "upload_time": "2019-09-05T16:25:42", "upload_time_iso_8601": "2019-09-05T16:25:42.168640Z", "url": "https://files.pythonhosted.org/packages/18/7e/35bcc4b702df5030ec8c8ee152ee410eff36742479f14e767f824dc552d7/params-flow-0.6.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.8": [ { "comment_text": "", "digests": { "md5": "101e04acbf9b7e90f2348c7b4f7dcb08", "sha256": "3d1cfb37541c57f0a3f87ed1a457cd906ac0cf88ce2486c409da79aac461cd21" }, "downloads": -1, "filename": "params-flow-0.6.8.tar.gz", "has_sig": false, "md5_digest": "101e04acbf9b7e90f2348c7b4f7dcb08", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 15956, "upload_time": "2019-09-11T16:02:17", "upload_time_iso_8601": "2019-09-11T16:02:17.886099Z", "url": "https://files.pythonhosted.org/packages/37/64/2c74d1c4907e4a2eb1e0483d9f44892148c82bc14d128b6c5734486bda8e/params-flow-0.6.8.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "bd1e140161cc137dd20631fe668a3283", "sha256": "ecd6360966e141965d6b96a987771e8d2154848885287b7688903122ba0d1534" }, "downloads": -1, "filename": "params-flow-0.7.0.tar.gz", "has_sig": false, "md5_digest": "bd1e140161cc137dd20631fe668a3283", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 17838, "upload_time": "2019-10-02T10:07:25", "upload_time_iso_8601": "2019-10-02T10:07:25.546785Z", "url": "https://files.pythonhosted.org/packages/b5/e3/f4e5ad1b62c268698c647ce190a0c7d4f70374fcbe411cda81a30cf21f28/params-flow-0.7.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "67ec0ed3c547a3973ea668e508dd3bab", "sha256": "576a8395b2eafecc17c87ead1be43f59d48670512748990cf4c014f3e2fce73c" }, "downloads": -1, "filename": "params-flow-0.7.1.tar.gz", "has_sig": false, "md5_digest": "67ec0ed3c547a3973ea668e508dd3bab", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 17867, "upload_time": "2019-10-29T01:36:12", "upload_time_iso_8601": "2019-10-29T01:36:12.177260Z", "url": "https://files.pythonhosted.org/packages/81/ae/c286650d720d3b3f7e6c758d5af9ab62dc5b4c0d1c3d910baccb1be6f70f/params-flow-0.7.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.2": [ { "comment_text": "", "digests": { "md5": "af2b3f73bb819eb9f3d7fc8f30d45646", "sha256": "89566bfab4af58e49b6bb43534137d4c29012823d8f11c773115e273a6f39d7c" }, "downloads": -1, "filename": "params-flow-0.7.2.tar.gz", "has_sig": false, "md5_digest": "af2b3f73bb819eb9f3d7fc8f30d45646", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 19124, "upload_time": "2019-11-29T16:05:02", "upload_time_iso_8601": "2019-11-29T16:05:02.091253Z", "url": "https://files.pythonhosted.org/packages/2b/44/eb1414c6c201bf2bdaa3f037d2f7f35d13f3242003278cef47bf8b3aa681/params-flow-0.7.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.3": [ { "comment_text": "", "digests": { "md5": "50f915a5e2bdc40b3469ef95d0adfeef", "sha256": "37a3ec05326c6bc47a2155cbd39b8e6c1dddde644d84f49c6fee1ee80d671dd7" }, "downloads": -1, "filename": "params-flow-0.7.3.tar.gz", "has_sig": false, "md5_digest": "50f915a5e2bdc40b3469ef95d0adfeef", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 19185, "upload_time": "2019-12-15T15:13:44", "upload_time_iso_8601": "2019-12-15T15:13:44.025889Z", "url": "https://files.pythonhosted.org/packages/fd/37/5b805cb303337f7e6d172c704a1a1643c2020be96b2c08a83e5e62a18c1a/params-flow-0.7.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.4": [ { "comment_text": "", "digests": { "md5": "3178b58585cf6c77cd9b343f24957974", "sha256": "150e0fa66dd869eeb00535daa74c8c36b24ef6aec9fbae10b1f36414a4a8fc83" }, "downloads": -1, "filename": "params-flow-0.7.4.tar.gz", "has_sig": false, "md5_digest": "3178b58585cf6c77cd9b343f24957974", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 19307, "upload_time": "2019-12-15T17:34:11", "upload_time_iso_8601": "2019-12-15T17:34:11.972203Z", "url": "https://files.pythonhosted.org/packages/0d/12/2604f88932f285a473015a5adabf08496d88dad0f9c1228fab1547ccc9b5/params-flow-0.7.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "9d1380927961f90e107a59d14ab663e1", "sha256": "32c48eb7b2c8567059f2043a9f13afe74781d82d455dc46e42a17169ea81e43f" }, "downloads": -1, "filename": "params-flow-0.8.0.tar.gz", "has_sig": false, "md5_digest": "9d1380927961f90e107a59d14ab663e1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 19351, "upload_time": "2020-04-06T13:03:18", "upload_time_iso_8601": "2020-04-06T13:03:18.396921Z", "url": "https://files.pythonhosted.org/packages/ac/0d/615c0d4aea541b4f47c761263809a02e160e7a2babd175f0ddd804776cf4/params-flow-0.8.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "f2c0caf14b101b2083a86d1359b6ad18", "sha256": "463d15e59868ac84841a710ea364a61351a1133b874e99db737c2f6dbfffa093" }, "downloads": -1, "filename": "params-flow-0.8.1.tar.gz", "has_sig": false, "md5_digest": "f2c0caf14b101b2083a86d1359b6ad18", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 19452, "upload_time": "2020-04-23T13:04:06", "upload_time_iso_8601": "2020-04-23T13:04:06.700056Z", "url": "https://files.pythonhosted.org/packages/9c/dd/f873dd2fb61103a0415cfb7b9af366228f3069bbef1b6d9ae4f2b8d5e717/params-flow-0.8.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.8.2": [ { "comment_text": "", "digests": { "md5": "6be1c75d140491fb9b17644ae22867f0", "sha256": "f6799a53433af84013f1fc7a5da3864ca341c5c7c7765506aa21314cdb53ddf0" }, "downloads": -1, "filename": "params-flow-0.8.2.tar.gz", "has_sig": false, "md5_digest": "6be1c75d140491fb9b17644ae22867f0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 22492, "upload_time": "2020-04-28T11:45:27", "upload_time_iso_8601": "2020-04-28T11:45:27.000447Z", "url": "https://files.pythonhosted.org/packages/a9/95/ff49f5ebd501f142a6f0aaf42bcfd1c192dc54909d1d9eb84ab031d46056/params-flow-0.8.2.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6be1c75d140491fb9b17644ae22867f0", "sha256": "f6799a53433af84013f1fc7a5da3864ca341c5c7c7765506aa21314cdb53ddf0" }, "downloads": -1, "filename": "params-flow-0.8.2.tar.gz", "has_sig": false, "md5_digest": "6be1c75d140491fb9b17644ae22867f0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 22492, "upload_time": "2020-04-28T11:45:27", "upload_time_iso_8601": "2020-04-28T11:45:27.000447Z", "url": "https://files.pythonhosted.org/packages/a9/95/ff49f5ebd501f142a6f0aaf42bcfd1c192dc54909d1d9eb84ab031d46056/params-flow-0.8.2.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }