{ "info": { "author": "righ", "author_email": "righ.m9@gmail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "Intended Audience :: Information Technology", "Intended Audience :: Manufacturing", "Intended Audience :: Science/Research", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python", "Topic :: Software Development" ], "description": ".. image:: https://badge.fury.io/py/covertable.svg\n :target: https://badge.fury.io/py/covertable\n\n.. image:: https://circleci.com/gh/walkframe/covertable.svg?style=shield\n :target: https://circleci.com/gh/walkframe/covertable\n\n.. image:: https://codecov.io/gh/walkframe/covertable/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/walkframe/covertable\n\n.. image:: https://img.shields.io/badge/code%20style-black-000000.svg\n :target: https://github.com/python/black\n\n.. image:: https://img.shields.io/badge/License-Apache%202.0-blue.svg\n :target: https://opensource.org/licenses/Apache-2.0\n\nRequirements\n============\n- Python: 3.3 or later.\n\n - Tested with 3.7\n\n\nInstallation\n============\n\n.. code:: bash\n\n $ pip install covertable\n\nUsage\n=====\nJust import ``covertable`` and call ``make`` function.\n\n.. code-block:: python3\n\n >>> from covertable import make, sorters\n\n >>> machine_list = ['iphone', 'pixel']\n >>> os_list = ['ios', 'android']\n >>> browser_list = ['FireFox', 'Chrome', 'Safari']\n\n >>> # list input and output\n ... make(\n ... [machine_list, os_list, browser_list], # list factors\n ... length=2, # default: 2\n ... sorter=sorters.greedy, # default: sorters.sequential\n ... sort_kwargs={'seed': 100}, # default: {}\n ... pre_filter=lambda row: not(row[1] == 'android' and row[0] != 'pixel'), # default: None\n ... post_filter=lambda row: not(row[1] == 'ios' and row[2] != 'Safari'), # default: None\n ... )\n [\n ['iphone', 'ios', 'Safari'],\n ['pixel', 'android', 'Safari']\n ]\n\n >>> # dict input and output\n ... make(\n ... {'machine': machine_list, 'os': os_list, 'browser': browser_list}, # dict factors\n ... length=2, # default: 2\n ... sorter=sorters.greedy, # default: sorters.sequential\n ... sort_kwargs={'seed': 100}, # default: {}\n ... pre_filter=lambda row: not(row['os'] == 'android' and row['machine'] != 'pixel'), # default: None\n ... post_filter=lambda row: not(row['os'] == 'ios' and row['browser'] != 'Safari'), # default: None\n ... )\n [\n {'os': 'ios', 'browser': 'Safari', 'machine': 'iphone'},\n {'machine': 'pixel', 'browser': 'Safari', 'os': 'android'}\n ]\n\nOptions\n---------------\n\n``covertable.make`` function has options as keyword argument.\n\nAll options are omittable.\n\nlength\n~~~~~~~~~~~~~~~~\nIt means length of pair to meet. (default: 2)\n\nThe more it increases, the more number of combinations increases.\n\nsorter\n~~~~~~~~~~~~~~~~\nCombinations depend on the order of spreading all over the rows.\n\nYou can choice a sorter from the following:\n\n:sorters.sequential: It is simplest and fastest sorter. (default)\n:sorters.random: It makes different combinations everytime.\n:sorters.hash: It makes combinations depending on hash of the pair (and seed).\n:sorters.greedy: It attempts to make most efficient combinations, but slowest. \n (Warning: these combinations are not always shortest compared to the other sorter's one.)\n\n\nsort_kwargs\n~~~~~~~~~~~~~~~~\n`sort_kwargs` will be passed to sorter function mentioned above.\n\n:`seed`: \n\n It is a seed of hash. `sorters.hash` and `sorters.greedy` use this option.\n\n When `seed` and factors are not changed, output combinations will not be changed.\n\nNot relevant options will be ignored.\n\n\npre_filter\n~~~~~~~~~~~~~~~~\nThis means a function to filter beforehand.\n\nIt receives an argument `row` as `object` type.\n\nWhen the function returns `false`, the row combination will not registered.\n\n- If factors type is `Array`, you should an index at the subscript like `row => row[1] < 6`.\n- IF factors type is `Object`, you should a key at the subscript like `row => row.month < 6` or `row => row['month'] < 6`\n\npost_filter\n~~~~~~~~~~~~~~~~\n\nThis means a function to filter later.\n\nUsage is the same as `preFilter`, only the difference is the timing that it is called.\nIt will delete rows not matched this function at the last.\n\nDevelopment\n===============\n\n.. code-block:: sh\n\n # preparation\n $ python3 -m venv venv\n $ source venv/bin/activate\n (venv) $ pip install -r dev_requirements.txt\n\n # testing\n (venv) $ tox # -e py37 -e cov -e black\n\n\nPublish\n----------------\n\n.. code-block:: sh\n\n (venv) $ python setup.py sdist bdist_wheel\n (venv) $ twine upload --repository pypi dist/*\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/walkframe/covertable/", "keywords": "allpair,all-pair,allpairs,all-pairs,pairwise,N-wise,2-wise,3-wise,two-wise,three-wise,N-term,2-term,3-term,two-term,three-term,pairs,pair,combinatorial,covering-array,covering-arrays,pict", "license": "Apache Software License", "maintainer": "", "maintainer_email": "", "name": "covertable", "package_url": "https://pypi.org/project/covertable/", "platform": "", "project_url": "https://pypi.org/project/covertable/", "project_urls": { "Homepage": "https://github.com/walkframe/covertable/" }, "release_url": "https://pypi.org/project/covertable/1.1.0/", "requires_dist": null, "requires_python": "", "summary": "It makes combinations covering pairs for pairwise testing.", "version": "1.1.0" }, "last_serial": 5437406, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "79351c498653643606eadbb6556b7682", "sha256": "1d44e443acd4ca1327033dba69afc7ea2cda6ba6c64ec0e02752424fe0730ac9" }, "downloads": -1, "filename": "covertable-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "79351c498653643606eadbb6556b7682", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6790, "upload_time": "2019-06-16T11:07:13", "url": "https://files.pythonhosted.org/packages/69/ec/8c65ec9919bbcfca313ecd0c5cb48dfa5ae17907a02f64aed838c5fed44a/covertable-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "46708982f04efcb008799d603f85f084", "sha256": "72c26a6534af07ddee1686a3d74a066f45eb0243a163cf9644b4e6f5b4512e45" }, "downloads": -1, "filename": "covertable-1.0.0.tar.gz", "has_sig": false, "md5_digest": "46708982f04efcb008799d603f85f084", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5226, "upload_time": "2019-06-16T11:07:15", "url": "https://files.pythonhosted.org/packages/ef/07/7413850625e01dcae0c6459d93d20579b027e372b83b57e006f0a8486aea/covertable-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "9d644fc2c3ab53d11e83afd9b5f56367", "sha256": "b03b668605dcacd227c1e39ff3d0c7264c3b97f4da4b6f0f12886794da6ce8be" }, "downloads": -1, "filename": "covertable-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "9d644fc2c3ab53d11e83afd9b5f56367", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6890, "upload_time": "2019-06-23T14:05:33", "url": "https://files.pythonhosted.org/packages/ea/47/964c1990fdf4077fb2f7b6db5db293824489c0b14e354d9e47a3b1e62a12/covertable-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "139a0d06b20106c8919f8e4ccf909588", "sha256": "2b73530ea04f0fa7b3b263d68a9fdcbc68f724c3a7166dea8c8df9ada3730a3b" }, "downloads": -1, "filename": "covertable-1.1.0.tar.gz", "has_sig": false, "md5_digest": "139a0d06b20106c8919f8e4ccf909588", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5285, "upload_time": "2019-06-23T14:05:36", "url": "https://files.pythonhosted.org/packages/ed/cb/7085fd09157b304907275ac1f54386d0e78966dbac9f8c012c861c0710da/covertable-1.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9d644fc2c3ab53d11e83afd9b5f56367", "sha256": "b03b668605dcacd227c1e39ff3d0c7264c3b97f4da4b6f0f12886794da6ce8be" }, "downloads": -1, "filename": "covertable-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "9d644fc2c3ab53d11e83afd9b5f56367", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6890, "upload_time": "2019-06-23T14:05:33", "url": "https://files.pythonhosted.org/packages/ea/47/964c1990fdf4077fb2f7b6db5db293824489c0b14e354d9e47a3b1e62a12/covertable-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "139a0d06b20106c8919f8e4ccf909588", "sha256": "2b73530ea04f0fa7b3b263d68a9fdcbc68f724c3a7166dea8c8df9ada3730a3b" }, "downloads": -1, "filename": "covertable-1.1.0.tar.gz", "has_sig": false, "md5_digest": "139a0d06b20106c8919f8e4ccf909588", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5285, "upload_time": "2019-06-23T14:05:36", "url": "https://files.pythonhosted.org/packages/ed/cb/7085fd09157b304907275ac1f54386d0e78966dbac9f8c012c861c0710da/covertable-1.1.0.tar.gz" } ] }