{ "info": { "author": "MetaCommunications Engineering", "author_email": "metacomm@users.sourceforge.net", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Software Development :: Testing", "Topic :: Utilities" ], "description": ".. contents:: **allpairspy** forked from `bayandin/allpairs `__\n :backlinks: top\n :depth: 2\n\n.. image:: https://badge.fury.io/py/allpairspy.svg\n :target: https://badge.fury.io/py/allpairspy\n :alt: PyPI package version\n\n.. image:: https://img.shields.io/pypi/pyversions/allpairspy.svg\n :target: https://pypi.org/project/allpairspy\n :alt: Supported Python versions\n\n.. image:: https://img.shields.io/travis/thombashi/allpairspy/master.svg?label=Linux/macOS%20CI\n :target: https://travis-ci.org/thombashi/allpairspy\n :alt: Linux/macOS CI status\n\n.. image:: https://img.shields.io/appveyor/ci/thombashi/allpairspy/master.svg?label=Windows%20CI\n :target: https://ci.appveyor.com/project/thombashi/allpairspy\n :alt: Windows CI status\n\n.. image:: https://coveralls.io/repos/github/thombashi/allpairspy/badge.svg?branch=master\n :target: https://coveralls.io/github/thombashi/allpairspy?branch=master\n :alt: Test coverage\n\n\nAllPairs test combinations generator\n------------------------------------------------\nAllPairs is an open source test combinations generator written in\nPython, developed and maintained by MetaCommunications Engineering.\nThe generator allows one to create a set of tests using \"pairwise\ncombinations\" method, reducing a number of combinations of variables\ninto a lesser set that covers most situations.\n\nFor more info on pairwise testing see http://www.pairwise.org.\n\n\nFeatures\n--------\n* Produces good enough dataset.\n* Pythonic, iterator-style enumeration interface.\n* Allows to filter out \"invalid\" combinations during search for the next combination.\n* Goes beyond pairs! If/when required can generate n-wise combinations.\n\n\nGet Started\n---------------\n\nBasic Usage\n==================\n:Sample Code:\n .. code:: python\n\n from allpairspy import AllPairs\n\n parameters = [\n [\"Brand X\", \"Brand Y\"],\n [\"98\", \"NT\", \"2000\", \"XP\"],\n [\"Internal\", \"Modem\"],\n [\"Salaried\", \"Hourly\", \"Part-Time\", \"Contr.\"],\n [6, 10, 15, 30, 60],\n ]\n\n print(\"PAIRWISE:\")\n for i, pairs in enumerate(AllPairs(parameters)):\n print(\"{:2d}: {}\".format(i, pairs))\n\n:Output:\n .. code::\n\n PAIRWISE:\n 0: ['Brand X', '98', 'Internal', 'Salaried', 6]\n 1: ['Brand Y', 'NT', 'Modem', 'Hourly', 6]\n 2: ['Brand Y', '2000', 'Internal', 'Part-Time', 10]\n 3: ['Brand X', 'XP', 'Modem', 'Contr.', 10]\n 4: ['Brand X', '2000', 'Modem', 'Part-Time', 15]\n 5: ['Brand Y', 'XP', 'Internal', 'Hourly', 15]\n 6: ['Brand Y', '98', 'Modem', 'Salaried', 30]\n 7: ['Brand X', 'NT', 'Internal', 'Contr.', 30]\n 8: ['Brand X', '98', 'Internal', 'Hourly', 60]\n 9: ['Brand Y', '2000', 'Modem', 'Contr.', 60]\n 10: ['Brand Y', 'NT', 'Modem', 'Salaried', 60]\n 11: ['Brand Y', 'XP', 'Modem', 'Part-Time', 60]\n 12: ['Brand Y', '2000', 'Modem', 'Hourly', 30]\n 13: ['Brand Y', '98', 'Modem', 'Contr.', 15]\n 14: ['Brand Y', 'XP', 'Modem', 'Salaried', 15]\n 15: ['Brand Y', 'NT', 'Modem', 'Part-Time', 15]\n 16: ['Brand Y', 'XP', 'Modem', 'Part-Time', 30]\n 17: ['Brand Y', '98', 'Modem', 'Part-Time', 6]\n 18: ['Brand Y', '2000', 'Modem', 'Salaried', 6]\n 19: ['Brand Y', '98', 'Modem', 'Salaried', 10]\n 20: ['Brand Y', 'XP', 'Modem', 'Contr.', 6]\n 21: ['Brand Y', 'NT', 'Modem', 'Hourly', 10]\n\n\nFiltering\n==================\nYou can restrict pairs by setting filtering function to ``filter_func`` at\n``AllPairs`` constructor.\n\n:Sample Code:\n .. code:: python\n\n from allpairspy import AllPairs\n\n def is_valid_combination(row):\n \"\"\"\n This is a filtering function. Filtering functions should return True\n if combination is valid and False otherwise.\n\n Test row that is passed here can be incomplete.\n To prevent search for unnecessary items filtering function\n is executed with found subset of data to validate it.\n \"\"\"\n\n n = len(row)\n\n if n > 1:\n # Brand Y does not support Windows 98\n if \"98\" == row[1] and \"Brand Y\" == row[0]:\n return False\n\n # Brand X does not work with XP\n if \"XP\" == row[1] and \"Brand X\" == row[0]:\n return False\n\n if n > 4:\n # Contractors are billed in 30 min increments\n if \"Contr.\" == row[3] and row[4] < 30:\n return False\n\n return True\n\n parameters = [\n [\"Brand X\", \"Brand Y\"],\n [\"98\", \"NT\", \"2000\", \"XP\"],\n [\"Internal\", \"Modem\"],\n [\"Salaried\", \"Hourly\", \"Part-Time\", \"Contr.\"],\n [6, 10, 15, 30, 60]\n ]\n\n print(\"PAIRWISE:\")\n for i, pairs in enumerate(AllPairs(parameters, filter_func=is_valid_combination)):\n print(\"{:2d}: {}\".format(i, pairs))\n\n:Output:\n .. code::\n\n PAIRWISE:\n 0: ['Brand X', '98', 'Internal', 'Salaried', 6]\n 1: ['Brand Y', 'NT', 'Modem', 'Hourly', 6]\n 2: ['Brand Y', '2000', 'Internal', 'Part-Time', 10]\n 3: ['Brand X', '2000', 'Modem', 'Contr.', 30]\n 4: ['Brand X', 'NT', 'Internal', 'Contr.', 60]\n 5: ['Brand Y', 'XP', 'Modem', 'Salaried', 60]\n 6: ['Brand X', '98', 'Modem', 'Part-Time', 15]\n 7: ['Brand Y', 'XP', 'Internal', 'Hourly', 15]\n 8: ['Brand Y', 'NT', 'Internal', 'Part-Time', 30]\n 9: ['Brand X', '2000', 'Modem', 'Hourly', 10]\n 10: ['Brand Y', 'XP', 'Modem', 'Contr.', 30]\n 11: ['Brand Y', '2000', 'Modem', 'Salaried', 15]\n 12: ['Brand Y', 'NT', 'Modem', 'Salaried', 10]\n 13: ['Brand Y', 'XP', 'Modem', 'Part-Time', 6]\n 14: ['Brand Y', '2000', 'Modem', 'Contr.', 60]\n\n\nOrderedDict\n==================\nYou can use ``collections.OrderedDict`` instance as an argument for ``AllPairs`` constructor.\nPairs returned as ``collections.namedtuple`` instances.\n\n:Sample Code:\n .. code:: python\n\n from collections import OrderedDict\n from allpairspy import AllPairs\n\n parameters = OrderedDict({\n \"brand\": [\"Brand X\", \"Brand Y\"],\n \"os\": [\"98\", \"NT\", \"2000\", \"XP\"],\n \"minute\": [15, 30, 60],\n })\n\n print(\"PAIRWISE:\")\n for i, pairs in enumerate(AllPairs(parameters)):\n print(\"{:2d}: {}\".format(i, pairs))\n\n:Sample Code:\n .. code::\n\n PAIRWISE:\n 0: Pairs(brand='Brand X', os='98', minute=15)\n 1: Pairs(brand='Brand Y', os='NT', minute=15)\n 2: Pairs(brand='Brand Y', os='2000', minute=30)\n 3: Pairs(brand='Brand X', os='XP', minute=30)\n 4: Pairs(brand='Brand X', os='2000', minute=60)\n 5: Pairs(brand='Brand Y', os='XP', minute=60)\n 6: Pairs(brand='Brand Y', os='98', minute=60)\n 7: Pairs(brand='Brand X', os='NT', minute=60)\n 8: Pairs(brand='Brand X', os='NT', minute=30)\n 9: Pairs(brand='Brand X', os='98', minute=30)\n 10: Pairs(brand='Brand X', os='XP', minute=15)\n 11: Pairs(brand='Brand X', os='2000', minute=15)\n\n\nParameterized testing with pairwise by using py.test\n====================================================================\n:Sample Code:\n .. code:: python\n\n import pytest\n from allpairspy import AllPairs\n\n def function_to_be_tested(brand, operating_system, minute):\n # do something\n return True\n\n class TestParameterized(object):\n\n @pytest.mark.parametrize([\"brand\", \"operating_system\", \"minute\"], [\n value_list for value_list in AllPairs([\n [\"Brand X\", \"Brand Y\"],\n [\"98\", \"NT\", \"2000\", \"XP\"],\n [10, 15, 30, 60]\n ])\n ])\n def test(self, brand, operating_system, minute):\n assert function_to_be_tested(brand, operating_system, minute)\n\n:Output:\n .. code::\n\n $ py.test test_parameterize.py -v\n ============================= test session starts ==============================\n ...\n collected 16 items\n\n test_parameterize.py::TestParameterized::test[Brand X-98-10] PASSED [ 6%]\n test_parameterize.py::TestParameterized::test[Brand Y-NT-10] PASSED [ 12%]\n test_parameterize.py::TestParameterized::test[Brand Y-2000-15] PASSED [ 18%]\n test_parameterize.py::TestParameterized::test[Brand X-XP-15] PASSED [ 25%]\n test_parameterize.py::TestParameterized::test[Brand X-2000-30] PASSED [ 31%]\n test_parameterize.py::TestParameterized::test[Brand Y-XP-30] PASSED [ 37%]\n test_parameterize.py::TestParameterized::test[Brand Y-98-60] PASSED [ 43%]\n test_parameterize.py::TestParameterized::test[Brand X-NT-60] PASSED [ 50%]\n test_parameterize.py::TestParameterized::test[Brand X-NT-30] PASSED [ 56%]\n test_parameterize.py::TestParameterized::test[Brand X-98-30] PASSED [ 62%]\n test_parameterize.py::TestParameterized::test[Brand X-XP-60] PASSED [ 68%]\n test_parameterize.py::TestParameterized::test[Brand X-2000-60] PASSED [ 75%]\n test_parameterize.py::TestParameterized::test[Brand X-2000-10] PASSED [ 81%]\n test_parameterize.py::TestParameterized::test[Brand X-XP-10] PASSED [ 87%]\n test_parameterize.py::TestParameterized::test[Brand X-98-15] PASSED [ 93%]\n test_parameterize.py::TestParameterized::test[Brand X-NT-15] PASSED [100%]\n\n\nOther Examples\n=================\nOther examples could be found in `examples `__ directory.\n\n\nInstallation\n------------\n\nInstall from PyPI\n==================================\n::\n\n pip install allpairspy\n\nInstall from PPA (for Ubuntu)\n==================================\n::\n\n sudo add-apt-repository ppa:thombashi/ppa\n sudo apt update\n sudo apt install python3-allpairspy\n\n\nKnown issues\n------------\n* Not optimal - there are tools that can create smaller set covering\n all the pairs. However, they are missing some other important\n features and/or do not integrate well with Python.\n\n* Lousy written filtering function may lead to full permutation of parameters.\n\n* Version 2.0 has become slower (a side-effect of introducing ability to produce n-wise combinations).\n\nDependencies\n------------\nPython 2.7+ or 3.5+\n\n- `six `__\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/thombashi/allpairspy", "keywords": "", "license": "MIT License", "maintainer": "Tsuyoshi Hombashi", "maintainer_email": "tsuyoshi.hombashi@gmail.com", "name": "allpairspy", "package_url": "https://pypi.org/project/allpairspy/", "platform": "", "project_url": "https://pypi.org/project/allpairspy/", "project_urls": { "Homepage": "https://github.com/thombashi/allpairspy", "Source": "https://github.com/thombashi/allpairspy", "Tracker": "https://github.com/thombashi/allpairspy/issues" }, "release_url": "https://pypi.org/project/allpairspy/2.5.0/", "requires_dist": [ "six (<2.0.0,>=1.10.0)", "twine ; extra == 'build'", "wheel ; extra == 'build'", "releasecmd (<0.1.0,>=0.0.18) ; extra == 'release'", "pytest ; extra == 'test'" ], "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*", "summary": "Pairwise test combinations generator", "version": "2.5.0" }, "last_serial": 5255525, "releases": { "2.1.0": [ { "comment_text": "", "digests": { "md5": "2f490196d84ea81689b5be917bd6a13c", "sha256": "d8bc612e635d93058873a20d7271633664d33530559b99b482c8cac3cd305560" }, "downloads": -1, "filename": "allpairspy-2.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2f490196d84ea81689b5be917bd6a13c", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 5946, "upload_time": "2017-01-21T06:46:09", "url": "https://files.pythonhosted.org/packages/33/a8/a0c20daf5a857efa1606676816282ed5b62ec24c8239cefb3add9e10eba6/allpairspy-2.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dc511ee59e974151232a860eee441799", "sha256": "9c7fa3897b75bd6d161b3c7dab363ac4a11bd1221e67bd78d6b3405fc02e98c1" }, "downloads": -1, "filename": "allpairspy-2.1.0.tar.gz", "has_sig": false, "md5_digest": "dc511ee59e974151232a860eee441799", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9741, "upload_time": "2017-01-21T06:46:06", "url": "https://files.pythonhosted.org/packages/99/a4/49d834af85ace52ad727734a60e75bf8faf56e35f211524fde13bd936dc9/allpairspy-2.1.0.tar.gz" } ], "2.2.0": [ { "comment_text": "", "digests": { "md5": "2acae7639e635406cf7f98e5bcf41758", "sha256": "23bfde8451c2a81402ec2782bd0baffd5fad5fe80e134043eb939d8a6d32f58c" }, "downloads": -1, "filename": "allpairspy-2.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2acae7639e635406cf7f98e5bcf41758", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 5650, "upload_time": "2017-05-14T07:46:32", "url": "https://files.pythonhosted.org/packages/5b/ff/b02497ebb7a3328b9de598efce48ae5b3da05e3ba951c4c6a58e37571de2/allpairspy-2.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8c4c43e2936262262981d2bb6da2ffaf", "sha256": "92acfc1efc26c4ac65542bb017ad3bd9b309b53c2f20026658cc9b72d29be0ec" }, "downloads": -1, "filename": "allpairspy-2.2.0.tar.gz", "has_sig": false, "md5_digest": "8c4c43e2936262262981d2bb6da2ffaf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6777, "upload_time": "2017-05-14T07:46:28", "url": "https://files.pythonhosted.org/packages/6e/2f/1895f1a06907d8e8a705015fed7949bad836f3511d5a053d0dd55cf05960/allpairspy-2.2.0.tar.gz" } ], "2.3.0": [ { "comment_text": "", "digests": { "md5": "348a871b966c2b3a6bd9b65f8347e036", "sha256": "d63039d373805891b9ac1f5e643dafdc1dcd48162ca2da90355fd5cc6b8a7114" }, "downloads": -1, "filename": "allpairspy-2.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "348a871b966c2b3a6bd9b65f8347e036", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 5905, "upload_time": "2017-05-20T14:18:47", "url": "https://files.pythonhosted.org/packages/87/34/d41b60d6b9046a7d0ddf20a6a129b0df9de102a8819694b8e076c1f6d4b0/allpairspy-2.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e3cf6abf4c12ad3324ed6a8109b1eb8f", "sha256": "d60c4586167534bb53f0a93e9d2ac34afbc90c5a5805214c331ddb439a97290a" }, "downloads": -1, "filename": "allpairspy-2.3.0.tar.gz", "has_sig": false, "md5_digest": "e3cf6abf4c12ad3324ed6a8109b1eb8f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7741, "upload_time": "2017-05-20T14:18:43", "url": "https://files.pythonhosted.org/packages/b4/58/c67b1be03d409e8e8de8453b1151105321e458093c614218716e9a0e9775/allpairspy-2.3.0.tar.gz" } ], "2.3.1": [ { "comment_text": "", "digests": { "md5": "31f0dc93cfdbb176c7372983f1e2123f", "sha256": "67ab0b65d940dd1675ccb8c84a24399680076520e333183b5cf1a347fd604891" }, "downloads": -1, "filename": "allpairspy-2.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "31f0dc93cfdbb176c7372983f1e2123f", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 5914, "upload_time": "2017-10-21T09:36:05", "url": "https://files.pythonhosted.org/packages/44/e4/d20060bc662b2152dd62c48cf6b981a232e772a900b142a868d68c51d192/allpairspy-2.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "48321862a3376839f1d1ad10f9c86be4", "sha256": "db205f908732c39757eb43b444b2dcfa3d236456f0c7a172b95f16dcc2949d8b" }, "downloads": -1, "filename": "allpairspy-2.3.1.tar.gz", "has_sig": false, "md5_digest": "48321862a3376839f1d1ad10f9c86be4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8276, "upload_time": "2017-10-21T09:36:03", "url": "https://files.pythonhosted.org/packages/d4/73/880123f55d155627a5e9340dfcb77fd643f83290b600b29b187c50c58cd9/allpairspy-2.3.1.tar.gz" } ], "2.4.0": [ { "comment_text": "", "digests": { "md5": "c26e6b7fb97025b2a3fb81e60b07e5fc", "sha256": "2b83b2144544e9eb49c8957378d66d18729c4903bcdd387fa218e0a2cbe82ad0" }, "downloads": -1, "filename": "allpairspy-2.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c26e6b7fb97025b2a3fb81e60b07e5fc", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 6044, "upload_time": "2017-11-11T06:32:39", "url": "https://files.pythonhosted.org/packages/90/77/2f95e8e82bec23a8878a056293a8bb28eb21c1f3e76d652ff28f9e6ab3cd/allpairspy-2.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "92a5fc4a298d9f78116b0dc3f19ffcfe", "sha256": "9fb7962ee523bd96c5098cd3c97ac1b8eb73021d3df9314657ee9de00f52e034" }, "downloads": -1, "filename": "allpairspy-2.4.0.tar.gz", "has_sig": false, "md5_digest": "92a5fc4a298d9f78116b0dc3f19ffcfe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8322, "upload_time": "2017-11-11T06:32:31", "url": "https://files.pythonhosted.org/packages/1f/41/f8dc302b7f7a1e64da198475a2434a7436f3480550ded48606a12e1bdd9a/allpairspy-2.4.0.tar.gz" } ], "2.4.1": [ { "comment_text": "", "digests": { "md5": "0ae51b37ca524f5252d382c19771077d", "sha256": "1533ce11ceccca36d352f3f076a3a0405470af892bd6bdc406e73a1fd0351728" }, "downloads": -1, "filename": "allpairspy-2.4.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0ae51b37ca524f5252d382c19771077d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5318, "upload_time": "2018-08-19T14:26:27", "url": "https://files.pythonhosted.org/packages/c2/94/a869e2b6ce682b21283096ab8e86a36c760288b8c2bb4be45c4044b46117/allpairspy-2.4.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a48ae86de8a077d82b79facd936e2b89", "sha256": "e8b35751f91692bf0318091b3f44cdf9bbbe3f37a2ff4786eaffc09dc7114fb3" }, "downloads": -1, "filename": "allpairspy-2.4.1.tar.gz", "has_sig": false, "md5_digest": "a48ae86de8a077d82b79facd936e2b89", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8293, "upload_time": "2018-08-19T14:26:28", "url": "https://files.pythonhosted.org/packages/ef/0b/6a76c8d0a3976d7deaac49d633732ffffd375eef0df5f3511936c3c166b8/allpairspy-2.4.1.tar.gz" } ], "2.4.2": [ { "comment_text": "", "digests": { "md5": "870883a2e25e78cd72d07a14c441b648", "sha256": "4cbd929b1d59834c8673dd2cfeddb41f9a9b4e2b766fc3f464b6f22c8b2a75b7" }, "downloads": -1, "filename": "allpairspy-2.4.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "870883a2e25e78cd72d07a14c441b648", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8776, "upload_time": "2018-12-29T13:11:51", "url": "https://files.pythonhosted.org/packages/7a/9e/c8208a3d560fbf92281ba3a9e2fde8d9c60b717e68e6b261a252b91213a5/allpairspy-2.4.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fc912a4467efbe2f09a3b10f0a04c1ca", "sha256": "4132a644321fb9855c27ec7cb8e946d447c89d34c24a78fa7258337335ceb911" }, "downloads": -1, "filename": "allpairspy-2.4.2.tar.gz", "has_sig": false, "md5_digest": "fc912a4467efbe2f09a3b10f0a04c1ca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9517, "upload_time": "2018-12-29T13:11:56", "url": "https://files.pythonhosted.org/packages/cc/2a/6095112cbd0624b8007afd44df80a7fbf0ef16631cdcabf26d4c62adb203/allpairspy-2.4.2.tar.gz" } ], "2.4.3": [ { "comment_text": "", "digests": { "md5": "b7351c6faa6013bf5075f44c451947c7", "sha256": "359575edbf56891cfa1930172ca822227107151409a49b01036639605620db21" }, "downloads": -1, "filename": "allpairspy-2.4.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b7351c6faa6013bf5075f44c451947c7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8558, "upload_time": "2019-01-03T05:37:44", "url": "https://files.pythonhosted.org/packages/7b/36/6960afcc3c104edfd54a7d0a5ff4d77d0c7c82ffc9ff724fbf20ad8812c7/allpairspy-2.4.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4424ff832a41e08855ca466c1ac78d50", "sha256": "8ce160db245375a5ccf0831be77cd98394f514c1b3501ddff5f8edb780ee1748" }, "downloads": -1, "filename": "allpairspy-2.4.3.tar.gz", "has_sig": false, "md5_digest": "4424ff832a41e08855ca466c1ac78d50", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10354, "upload_time": "2019-01-03T05:37:45", "url": "https://files.pythonhosted.org/packages/be/5a/00f7e49c44c6964e1f65db48997160ab6f676ae885eb2692e184cbd9211b/allpairspy-2.4.3.tar.gz" } ], "2.5.0": [ { "comment_text": "", "digests": { "md5": "c791d59cb22ceec11c0c6f2b6538cfcb", "sha256": "66dbcb30c22a2c73e1cccae9ae7093f8e18bdf542e4ba2864ce822463735b5b4" }, "downloads": -1, "filename": "allpairspy-2.5.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c791d59cb22ceec11c0c6f2b6538cfcb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*", "size": 8709, "upload_time": "2019-05-11T08:54:08", "url": "https://files.pythonhosted.org/packages/58/23/7890aa2f8064c14462163cdf707828fbad1c21a26b3bacd30577042417fb/allpairspy-2.5.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "865aa47d884fa3145549ff983a797d9c", "sha256": "9358484c91abe74ba18daf9d6d6904c5be7cc8818397d05248c9d336023c28b1" }, "downloads": -1, "filename": "allpairspy-2.5.0.tar.gz", "has_sig": false, "md5_digest": "865aa47d884fa3145549ff983a797d9c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*", "size": 10729, "upload_time": "2019-05-11T08:54:10", "url": "https://files.pythonhosted.org/packages/5d/3d/0595bc136fa253ba954fb93c7f86b694361d31e79d003984eab897be67fe/allpairspy-2.5.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c791d59cb22ceec11c0c6f2b6538cfcb", "sha256": "66dbcb30c22a2c73e1cccae9ae7093f8e18bdf542e4ba2864ce822463735b5b4" }, "downloads": -1, "filename": "allpairspy-2.5.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c791d59cb22ceec11c0c6f2b6538cfcb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*", "size": 8709, "upload_time": "2019-05-11T08:54:08", "url": "https://files.pythonhosted.org/packages/58/23/7890aa2f8064c14462163cdf707828fbad1c21a26b3bacd30577042417fb/allpairspy-2.5.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "865aa47d884fa3145549ff983a797d9c", "sha256": "9358484c91abe74ba18daf9d6d6904c5be7cc8818397d05248c9d336023c28b1" }, "downloads": -1, "filename": "allpairspy-2.5.0.tar.gz", "has_sig": false, "md5_digest": "865aa47d884fa3145549ff983a797d9c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*", "size": 10729, "upload_time": "2019-05-11T08:54:10", "url": "https://files.pythonhosted.org/packages/5d/3d/0595bc136fa253ba954fb93c7f86b694361d31e79d003984eab897be67fe/allpairspy-2.5.0.tar.gz" } ] }