{ "info": { "author": "Erik R Berlin", "author_email": "erberlin.dev@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "========\nnamedzip\n========\n|license| |pypi| |pyversions| |wheel| |build| |docs|\n\n.. |license| image:: https://img.shields.io/badge/License-MIT-blue.svg\n :target: https://lbesson.mit-license.org/\n.. |pypi| image:: https://img.shields.io/pypi/v/namedzip.svg\n :target: https://pypi.org/project/namedzip/\n.. |pyversions| image:: https://img.shields.io/pypi/pyversions/namedzip.svg\n.. |wheel| image:: https://img.shields.io/pypi/wheel/namedzip.svg\n.. |build| image:: https://img.shields.io/circleci/project/github/erberlin/namedzip/master.svg\n.. |docs| image:: https://img.shields.io/readthedocs/namedzip.svg\n :target: https://namedzip.readthedocs.io/en/latest/\n\nThis Python package implements ``namedzip`` and ``namedzip_longest``, which extend ``zip`` and ``itertools.zip_longest`` respectively to generate named tuples.\n\nInstallation\n------------\n.. code-block:: shell\n\n $ pip install namedzip\n\nUsage examples\n--------------\n.. code:: python\n\n >>> from namedzip import namedtuple, namedzip, namedzip_longest\n\n``namedzip`` and ``namedzip_longest`` can either be used **with iterable arguments**,\nlike the interfaces which they extend, to return generator objects:\n\n.. code:: python\n\n >>> x_vals = [1, 2, 3]\n >>> y_vals = [9, 8]\n >>> Point = namedtuple(\"Point\", [\"x\", \"y\"])\n >>>\n >>> for point in namedzip(Point, x_vals, y_vals):\n ... print(point)\n ...\n Point(x=1, y=9)\n Point(x=2, y=8)\n >>>\n >>> for point in namedzip_longest(Point, x_vals, y_vals):\n ... print(point)\n ...\n Point(x=1, y=9)\n Point(x=2, y=8)\n Point(x=3, y=None)\n >>>\n\nOr **without iterable arguments** to return reusable function objects:\n\n.. code:: python\n\n >>> zip_points = namedzip(Point)\n >>> for point in zip_points(x_vals, y_vals):\n ... print(point)\n ...\n Point(x=1, y=9)\n Point(x=2, y=8)\n >>>\n >>> zip_points = namedzip_longest(Point)\n >>> for point in zip_points(x_vals, y_vals):\n ... print(point)\n ...\n Point(x=1, y=9)\n Point(x=2, y=8)\n Point(x=3, y=None)\n >>>\n\nJust like ``itertools.zip_longest``, ``namedzip_longest`` takes a custom ``fillvalue``.\n\n.. code:: python\n\n >>> iterables = [(1, 2), (9, 8, 7), (11, 22)]\n >>> Point3D = namedtuple(\"Point3D\", [\"x\", \"y\", \"z\"])\n >>>\n >>> for point in namedzip_longest(Point3D, *iterables, fillvalue=0):\n ... print(point)\n ...\n Point3D(x=1, y=9, z=11)\n Point3D(x=2, y=8, z=22)\n Point3D(x=0, y=7, z=0)\n >>>\n\nHowever ``namedzip_longest`` also allows for the use of individual default\nvalues specified in the named tuple or in the function call.\n\n.. code:: python\n\n >>> iterables = [(1, 2), (9, 8, 7), (11, 22)]\n >>> Point3D = namedtuple(\"Point3D\", [\"x\", \"y\", \"z\"], defaults=(100, 1, 0))\n >>>\n >>> for point in namedzip_longest(Point3D, *iterables):\n ... print(point)\n ...\n Point3D(x=1, y=9, z=11)\n Point3D(x=2, y=8, z=22)\n Point3D(x=100, y=7, z=0)\n >>>\n >>> for point in namedzip_longest(Point3D, *iterables, defaults=(77, 88, 99)):\n ... print(point)\n ...\n Point3D(x=1, y=9, z=11)\n Point3D(x=2, y=8, z=22)\n Point3D(x=77, y=7, z=99)\n >>>\n\nHow could this be useful?\n-------------------------\nThe idea behind this package is to help improve readability in cases where\nyou have a need to iterate over multiple collections/streams of data, as well\nas to allow for individual default values like show above.\n\nInstead of messing with indices or unpacking long tuples, ``namedzip`` allows you\nto access aggregated values by attribute names using dot notation.\n\n.. code:: python\n\n sensor_data = [fahrenheit_vals, humidity_vals, wind_mph_vals, pressure_hpa_vals]\n\n Data = namedtuple(\"Data\", (\"temp_f\", \"humidity\", \"wind_mph\", \"pressure_hpa\"))\n zip_data = namedzip_longest(Data, defaults=(57.2, 68.3, 17.1, 1016.93)) \n\n for data in zip_data(*sensor_data):\n temp_c = (data.temp_f - 32) / 1.8\n wind_knots = data.wind_mph / 1.15078\n pressure_atm = data.pressure_hpa / 1013.25\n dew_point = calculate_dew_point(temp_c, data.humidity)\n\n # NOTE: The formulas used above may not be accurate.\n\nDocumentation\n-------------\nAdditional documentation is available at https://namedzip.readthedocs.io/en/latest/.\n\nDevelopment setup\n-----------------\nClone repo:\n\n.. code-block:: shell\n\n $ git clone https://github.com/erberlin/namedzip.git\n $ cd namedzip\n\nCreate and activate virtual environment on Windows:\n\n.. code-block:: shell\n\n > python -m venv venv\n > venv\\Scripts\\activate\n\nCreate and activate virtual environment on OS X & Linux:\n\n.. code-block:: shell\n\n $ python3 -m venv venv\n $ source venv/bin/activate\n\nInstall development packages:\n\n.. code-block:: shell\n\n $ pip install -r requirements.txt\n\nRun test suite:\n\n.. code-block:: shell\n\n $ pytest -v\n\nMeta\n----\n\nErik R Berlin - erberlin.dev@gmail.com\n\nDistributed under the MIT license. See ``LICENSE`` for more information.\n\nhttps://github.com/erberlin/namedzip\n\n", "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/erberlin/namedzip", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "namedzip", "package_url": "https://pypi.org/project/namedzip/", "platform": "", "project_url": "https://pypi.org/project/namedzip/", "project_urls": { "Homepage": "https://github.com/erberlin/namedzip" }, "release_url": "https://pypi.org/project/namedzip/1.1.0/", "requires_dist": null, "requires_python": ">=3.4", "summary": "Extends zip() and itertools.zip_longest() to generate named tuples.", "version": "1.1.0" }, "last_serial": 5260693, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "7fbcce3644a3e3f17950b5fae62538e1", "sha256": "6f8daf24217ee88939af4e3feb7890b5f3c357f56154be6ac6ccd76b9a690f21" }, "downloads": -1, "filename": "namedzip-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "7fbcce3644a3e3f17950b5fae62538e1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4827, "upload_time": "2019-03-18T03:08:15", "url": "https://files.pythonhosted.org/packages/0f/2f/2ac862a6d855655ade5b9a98669e24aacec0229545f8cbcfdd7801afc473/namedzip-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6c8d43cd80701e99add0fd6e7f79d1e2", "sha256": "0607d75969ac5c3b1820ae2dc3df709623c5129b6a3ecf9f06bcca982960e805" }, "downloads": -1, "filename": "namedzip-1.0.0.tar.gz", "has_sig": false, "md5_digest": "6c8d43cd80701e99add0fd6e7f79d1e2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3669, "upload_time": "2019-03-18T03:08:17", "url": "https://files.pythonhosted.org/packages/ec/4c/30019b3444aabf13b3a08cd5bd97b700c004153718653886dc4152911fd3/namedzip-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "19a85709ec56f846f50d55fdae56d6a3", "sha256": "be543ff057d5bd6f3b91061bad3fca423f494c5bb8d6e0ea15c5b0c038861e79" }, "downloads": -1, "filename": "namedzip-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "19a85709ec56f846f50d55fdae56d6a3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4817, "upload_time": "2019-03-18T03:16:09", "url": "https://files.pythonhosted.org/packages/8a/2b/dfa4af9a172f9f6aa322d55a7ebaa558c8f63881c7d7d09a8270776dcf14/namedzip-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "59173463155da6c0d256d6b7b1522d29", "sha256": "d27c40a5622069909d30c92e2f2262af31a868fc8219dd71559395c9ca7b518e" }, "downloads": -1, "filename": "namedzip-1.0.1.tar.gz", "has_sig": false, "md5_digest": "59173463155da6c0d256d6b7b1522d29", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3660, "upload_time": "2019-03-18T03:16:11", "url": "https://files.pythonhosted.org/packages/a2/b4/c120e30aa94bbb6a555c5c39c33158230cd59bb5a773973c5d0fa89166f3/namedzip-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "c073b47ffb9e4e439c35fdcfed0effe3", "sha256": "47a62bce2faca33ebe36e0751a2196bd28ebf819f6a17872c327398e12eef69d" }, "downloads": -1, "filename": "namedzip-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "c073b47ffb9e4e439c35fdcfed0effe3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4956, "upload_time": "2019-03-19T05:41:54", "url": "https://files.pythonhosted.org/packages/c5/32/a44ba64e7102c7195dc06b1a2841da2f8d7213e5af109f3ead5a2e94a26b/namedzip-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e3175eed8b8d57a4b068f95881caebc9", "sha256": "bea0acf388c263eec407e7cdeb5e7ffa2a8706b3d6d23192d4d30bfe29a6d568" }, "downloads": -1, "filename": "namedzip-1.0.2.tar.gz", "has_sig": false, "md5_digest": "e3175eed8b8d57a4b068f95881caebc9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3841, "upload_time": "2019-03-19T05:41:55", "url": "https://files.pythonhosted.org/packages/97/5f/4c78356e9dc06ee3ab5218d6dfd8cd93defe9387b9033a4de78201590578/namedzip-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "976ac05d86c9efcd61c8faa3b825fe74", "sha256": "dbc889b691e360a3667825359d48d40be27212cf210e51a663755e9e16cfa916" }, "downloads": -1, "filename": "namedzip-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "976ac05d86c9efcd61c8faa3b825fe74", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 4969, "upload_time": "2019-03-19T05:58:35", "url": "https://files.pythonhosted.org/packages/f1/12/729b56cdf581a76bd2a2045cd2623907ee80baa87ad8f529884e7260229e/namedzip-1.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0adf57e4e1340e202fe617149232c0a5", "sha256": "7fc10b068269f4d855e74c2c6c5362ddc2ba8def17ad0ff00a3de077fd672bf3" }, "downloads": -1, "filename": "namedzip-1.0.3.tar.gz", "has_sig": false, "md5_digest": "0adf57e4e1340e202fe617149232c0a5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 3871, "upload_time": "2019-03-19T05:58:36", "url": "https://files.pythonhosted.org/packages/01/31/357324f5bf6cf3163b043356b184d4d43d26e47269ede06e51870d276f8b/namedzip-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "4c2b27e48b56cc8c221ae251432e8613", "sha256": "35e30feb85bae4aebfe024ac80b6cb324e301e7d5e77ca540232dde4b8b5f3c1" }, "downloads": -1, "filename": "namedzip-1.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "4c2b27e48b56cc8c221ae251432e8613", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 4989, "upload_time": "2019-03-22T03:03:52", "url": "https://files.pythonhosted.org/packages/67/6e/b798e00abac6033a4638d3a1fa9a2dd9844bba9b5e8795cc3565d4d7d2c2/namedzip-1.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d4a93453a435048421e2f6de2310b7ab", "sha256": "7587e794c998b00416f520d5e1911bc2df1174382887fbc73185d1295aaaa7bf" }, "downloads": -1, "filename": "namedzip-1.0.4.tar.gz", "has_sig": false, "md5_digest": "d4a93453a435048421e2f6de2310b7ab", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 3910, "upload_time": "2019-03-22T03:03:53", "url": "https://files.pythonhosted.org/packages/38/3e/b6827927dffb121a38d2df0300193be3940edf0d31f8490c44fa5b960dd7/namedzip-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "d0cc0817d3e4aead0c861fb2b377d433", "sha256": "92f480342302add14cceff18c9140a1b704f19dccbd4e870442dbba412311509" }, "downloads": -1, "filename": "namedzip-1.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "d0cc0817d3e4aead0c861fb2b377d433", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 5564, "upload_time": "2019-03-24T02:57:58", "url": "https://files.pythonhosted.org/packages/ad/5f/acd2fde9f8a01db86f1f79cf55c73f1eeb4f51d39e5f0f51ffd857c3b3e8/namedzip-1.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f19f89bcf96f0a14aafeed961a46f69d", "sha256": "771f0d69704c68c8035e36eb62c7409e2171556e79f1033a821e902baf7fddaf" }, "downloads": -1, "filename": "namedzip-1.0.5.tar.gz", "has_sig": false, "md5_digest": "f19f89bcf96f0a14aafeed961a46f69d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 4591, "upload_time": "2019-03-24T02:57:59", "url": "https://files.pythonhosted.org/packages/08/d2/f6f9bbd27f589f013e031e22e1ccbc0fb4122a824ee0ac30751d3d9bfeb7/namedzip-1.0.5.tar.gz" } ], "1.0.6": [ { "comment_text": "", "digests": { "md5": "6b139731988cd48bae3c96078bebd7b1", "sha256": "90858cab0fcfc93aa1ae595d269485b13e4f0e66930bfd03ee9b053b371a6dec" }, "downloads": -1, "filename": "namedzip-1.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "6b139731988cd48bae3c96078bebd7b1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 5588, "upload_time": "2019-04-09T03:28:17", "url": "https://files.pythonhosted.org/packages/68/e3/65f584ee80ce0c6711ab592eb61bf4eb6ab170ebbbbd5a68a509d2803dcb/namedzip-1.0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "965a403d9ed0005384c336d9a7a768be", "sha256": "b36a980a4e00eb774d15c0d26dd43bb9ce38f3b2def48974a58712ebba696e1e" }, "downloads": -1, "filename": "namedzip-1.0.6.tar.gz", "has_sig": false, "md5_digest": "965a403d9ed0005384c336d9a7a768be", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 4605, "upload_time": "2019-04-09T03:28:18", "url": "https://files.pythonhosted.org/packages/51/6d/5ce7e257d85c2be7e8e637363559af9fb91cfe5ffa0a840089967d4b9e29/namedzip-1.0.6.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "959d875e6befbf8201ba9f4ddd116c08", "sha256": "782dc6e50d5c9d18d5a87cd7422930f62e39dd7d7176aee71f0bb354e412f751" }, "downloads": -1, "filename": "namedzip-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "959d875e6befbf8201ba9f4ddd116c08", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 6720, "upload_time": "2019-05-13T05:11:49", "url": "https://files.pythonhosted.org/packages/9c/be/c9bf6db8c840b34c46c8313ada2a2f81e4f4e7b06eb18ede8ec47aeb0c11/namedzip-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7091288dbbef1f77ecdc5ccba5b283de", "sha256": "1c8d93b00adff89744e76e275b803b0d051d24299216d42e181c3c3087523024" }, "downloads": -1, "filename": "namedzip-1.1.0.tar.gz", "has_sig": false, "md5_digest": "7091288dbbef1f77ecdc5ccba5b283de", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 5766, "upload_time": "2019-05-13T05:11:51", "url": "https://files.pythonhosted.org/packages/07/71/7d0909f876067ab9cf0069ea6205bdd48e04356fd3e7c2dcff8c3cc81e8c/namedzip-1.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "959d875e6befbf8201ba9f4ddd116c08", "sha256": "782dc6e50d5c9d18d5a87cd7422930f62e39dd7d7176aee71f0bb354e412f751" }, "downloads": -1, "filename": "namedzip-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "959d875e6befbf8201ba9f4ddd116c08", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 6720, "upload_time": "2019-05-13T05:11:49", "url": "https://files.pythonhosted.org/packages/9c/be/c9bf6db8c840b34c46c8313ada2a2f81e4f4e7b06eb18ede8ec47aeb0c11/namedzip-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7091288dbbef1f77ecdc5ccba5b283de", "sha256": "1c8d93b00adff89744e76e275b803b0d051d24299216d42e181c3c3087523024" }, "downloads": -1, "filename": "namedzip-1.1.0.tar.gz", "has_sig": false, "md5_digest": "7091288dbbef1f77ecdc5ccba5b283de", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 5766, "upload_time": "2019-05-13T05:11:51", "url": "https://files.pythonhosted.org/packages/07/71/7d0909f876067ab9cf0069ea6205bdd48e04356fd3e7c2dcff8c3cc81e8c/namedzip-1.1.0.tar.gz" } ] }