{ "info": { "author": "Ram Rachum", "author_email": "ram@rachum.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Utilities" ], "description": "Combi is a Pythonic package for `combinatorics`_.\n\nCombi lets you explore spaces of `permutations`_ and `combinations`_ as if they\nwere Python sequences, but without generating all the permutations/combinations\nin advance. It lets you specify a lot of special conditions on these spaces. It\nalso provides a few more classes that might be useful in combinatorics\nprogramming.\n\nCombi documentation: https://combi.readthedocs.org/en/stable/\n\nCombi on GitHub: https://github.com/cool-RR/combi\n\nCombi on PyPI: https://pypi.python.org/pypi/combi\n\nChangelog: https://combi.readthedocs.org/en/stable/changelog.html\n\nBasic usage\n===========\n\nUse `PermSpace`_ to create a permutation space:\n\n.. code:: python\n\n >>> from combi import *\n >>> perm_space = PermSpace('meow')\n \nIt behaves like a sequence:\n\n.. code:: python\n\n >>> len(perm_space)\n 24\n >>> perm_space[7]\n \n >>> perm_space.index('mowe')\n 3\n \nAnd yet the permutations are created on-demand rather than in advance.\n\nUse `CombSpace`_ to create a combination space, where order doesn't\nmatter:\n\n.. code:: python\n\n >>> comb_space = CombSpace(('vanilla', 'chocolate', 'strawberry'), 2)\n >>> comb_space\n \n >>> comb_space[2]\n \n >>> len(comb_space)\n 3\n\nFor more details, `try the tutorial`_ or see the `documentation contents`_.\n\nFeatures\n========\n\n- `PermSpace`_ lets you explore a space of permutations as if it was a\n Python sequence.\n \n * Permutations are generated on-demand, so huge permutation spaces can be \n created easily without big memory footprint.\n * `PermSpace`_ will notice if you have repeating elements in your sequence, \n and treat all occurences of the same value as interchangable rather than \n create redundant permutations.\n * A custom domain can be specified instead of just using index numbers.\n * You may specify some elements to be fixed, so they'll point to the same\n value in all permutations. (Useful for limiting an experiment to a subset \n of the original permutation space.)\n * Permutation spaces may be limited to a certain degree of permutations. (A\n permutation's degree is the number of transformations it takes to make it.)\n * `k-permutations`_ are supported.\n * You may specify a custom type for the generated permutations, so you could \n implement your own functionality on them.\n \n- `CombSpace`_ lets you explore a space of combinations as if it was a\n Python sequence.\n \n- `MapSpace`_ is like Python's built-in `map`_, except it's a\n sequence that allows index access.\n \n- `ProductSpace`_ is like Python's `itertools.product`_, except\n it's a sequence that allows index access.\n \n- `ChainSpace`_ is like Python's `itertools.chain`_, except\n it's a sequence that allows index access.\n \n- `SelectionSpace`_ is a space of all selections from a sequence, of all\n possible lengths.\n \n- The `Bag`_ class is a multiset like Python's `collections.Counter`_, except \n it offers far more functionality, like more `arithmetic operations between \n bags`_, `comparison between bags`_, and more. (It can do that because unlike \n Python's `collections.Counter`_, it only allows natural numbers as keys.)\n \n- Classes `FrozenBag`_, `OrderedBag`_ and `FrozenOrderedBag`_ are provided, \n which are variations on `Bag`_.\n\n\nRequirements\n============\n\n* Python, version 2.6, 2.7 or 3.3 or above. If you're new to Python, `download\n the newest version from here `_.\n \n* `Setuptools`_.\n\n\nInstallation\n============\n\nUse `pip`_ to install Combi:\n\n.. code:: bash\n\n $ pip install combi\n\n\nCommunity\n=========\n\nCombi on GitHub: https://github.com/cool-RR/combi Feel free to fork and send\npull requests!\n\nThere are three Combi groups, a.k.a. mailing lists:\n\n- If you need help with Combi, post a message on `the combi-users\n Google Group `_.\n\n- If you want to help on the development of Combi itself, come say\n hello on `the combi-dev Google Group\n `_.\n\n- If you want to be informed on new releases of Combi, sign up for\n `the low-traffic combi-announce Google Group\n `_.\n\n\n------------------------------------------------\n\nCombi was created by Ram Rachum. I provide\n`Development services in Python and Django `_.\n\n\n.. _mailing list: https://groups.google.com/forum/#!forum/combi-users\n.. _combinatorics: https://en.wikipedia.org/wiki/Combinatorics\n.. _permutations: https://en.wikipedia.org/wiki/Permutation\n.. _k-permutations: https://en.wikipedia.org/wiki/Permutation#k-permutations_of_n\n.. _combinations: https://en.wikipedia.org/wiki/Combination\n.. _Setuptools: https://pypi.python.org/pypi/setuptools\n.. _pip: https://pypi.python.org/pypi/pip\n\n.. _PermSpace: https://combi.readthedocs.org/en/latest/perm_space_and_perm.html#permspace\n.. _CombSpace: https://combi.readthedocs.org/en/latest/comb_space_and_comb.html#combspace\n.. _MapSpace: https://combi.readthedocs.org/en/latest/other_classes.html#mapspace\n.. _ProductSpace: https://combi.readthedocs.org/en/latest/other_classes.html#productspace\n.. _ChainSpace: https://combi.readthedocs.org/en/latest/other_classes.html#chainspace\n.. _SelectionSpace: https://combi.readthedocs.org/en/latest/other_classes.html#selectionspace\n.. _Bag: https://combi.readthedocs.org/en/latest/bags.html#bag\n.. _FrozenBag: https://combi.readthedocs.org/en/latest/bags.html#frozenbag\n.. _OrderedBag: https://combi.readthedocs.org/en/latest/bags.html#orderedbag\n.. _FrozenOrderedBag: https://combi.readthedocs.org/en/latest/bags.html#frozenorderedbag\n.. _collections.Counter: https://docs.python.org/3/library/collections.html#collections.Counter\n.. _try the tutorial: https://combi.readthedocs.org/en/latest/intro.html\n.. _documentation contents: https://combi.readthedocs.org/en/latest/index.html\n.. _map: https://docs.python.org/3/library/functions.html#map\n.. _itertools.product: https://docs.python.org/3/library/itertools.html#itertools.product\n.. _itertools.chain: https://docs.python.org/3/library/itertools.html#itertools.chain\n.. _arithmetic operations between bags: https://combi.readthedocs.org/en/latest/bags.html#bags-operations\n.. _comparison between bags: https://combi.readthedocs.org/en/latest/bags.html#bags-comparisons", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "UNKNOWN", "keywords": null, "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "combi", "package_url": "https://pypi.org/project/combi/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/combi/", "project_urls": { "Download": "UNKNOWN", "Homepage": "UNKNOWN" }, "release_url": "https://pypi.org/project/combi/1.1.2/", "requires_dist": null, "requires_python": null, "summary": "A Pythonic package for combinatorics", "version": "1.1.2" }, "last_serial": 2155030, "releases": { "0.0.1": [], "0.1.0": [ { "comment_text": "", "digests": { "md5": "0fbc5e134551d870b5e4ca5d2ef735dc", "sha256": "43edee356a44b4f95f5d7a78cd8b3ef0a32ccad1648e81d1b130e449b69d2ba2" }, "downloads": -1, "filename": "combi-0.1.0.tar.gz", "has_sig": false, "md5_digest": "0fbc5e134551d870b5e4ca5d2ef735dc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 430008, "upload_time": "2014-11-17T15:04:14", "url": "https://files.pythonhosted.org/packages/7b/55/09f9432f3b7274ee01a3fbf34c2c54a2e735aa85cefc3d41e35bad8d302f/combi-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "3cc83e798ef6b51ab56b0b88ce2b3b13", "sha256": "74b857e0a8f4eae99a6485f8268d174f23b11f8fbeb8ebcfe632aa7fc1e53453" }, "downloads": -1, "filename": "combi-0.1.1.tar.gz", "has_sig": false, "md5_digest": "3cc83e798ef6b51ab56b0b88ce2b3b13", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 429644, "upload_time": "2014-11-24T17:48:23", "url": "https://files.pythonhosted.org/packages/f3/ad/4c3ca050e5a7c936429594331adc228f47fdf7a3cf36170dbc20cf52d242/combi-0.1.1.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "9e533d9eb4203388b032045a3316693d", "sha256": "7e8ba3ada0938caaf41d466ceefb1287c452526e82270b31e5ed3d0be4993b19" }, "downloads": -1, "filename": "combi-1.0.0.tar.gz", "has_sig": false, "md5_digest": "9e533d9eb4203388b032045a3316693d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 474479, "upload_time": "2015-06-11T19:49:09", "url": "https://files.pythonhosted.org/packages/d9/9d/dafe128fa99fb2102b8cc049a092340fe94d4d2e969026e4450347129cfe/combi-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "f65fbc9e7615b56f8113546369ccb5c6", "sha256": "fd01132b0689c08b12dd457b84a7d4f102494f85e54fb34cdb9848c8fb290de9" }, "downloads": -1, "filename": "combi-1.1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "f65fbc9e7615b56f8113546369ccb5c6", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 311123, "upload_time": "2015-07-22T19:08:33", "url": "https://files.pythonhosted.org/packages/99/96/1f7aae522de1f35cb5d9ab1f4e26be39fb89dc6ff967560d254ec72952b3/combi-1.1.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "52cdf0da74044fdb552f8dad08ae5767", "sha256": "56244e67faf66335c17c760acf5de1ec2720667179cd0a940529c99c2ef04707" }, "downloads": -1, "filename": "combi-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "52cdf0da74044fdb552f8dad08ae5767", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 250611, "upload_time": "2015-07-22T19:04:42", "url": "https://files.pythonhosted.org/packages/c6/32/b9a851fdf674f14b54c8d062763b1592b801923690af4a1946fbb43c4963/combi-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "68f04780588d2897e841476876caf5d0", "sha256": "86c5239c4eca5804ecbd4e6e92d1ba6584adee9c5bab3aa858984269a4cf108e" }, "downloads": -1, "filename": "combi-1.1.0.tar.gz", "has_sig": false, "md5_digest": "68f04780588d2897e841476876caf5d0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 485312, "upload_time": "2015-07-22T19:06:33", "url": "https://files.pythonhosted.org/packages/36/51/f835f00a82fced898d39cc98d87133ff1919d91dda926687015375f1aa4c/combi-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "cc4443aa11e1d9123b63847ccc9e1cf7", "sha256": "f4aa44152b8c2de8a50b6818201d7cde2e68b824d109eb8b47431ca15ed10661" }, "downloads": -1, "filename": "combi-1.1.1-py2-none-any.whl", "has_sig": false, "md5_digest": "cc4443aa11e1d9123b63847ccc9e1cf7", "packagetype": "bdist_wheel", "python_version": "2.6", "requires_python": null, "size": 311138, "upload_time": "2015-07-22T19:22:40", "url": "https://files.pythonhosted.org/packages/97/d5/74d386dfd93bdb48364e07a32c1568b6f2aeb81880c8429053c80435a5ae/combi-1.1.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5067b331e8ce035cc7470394dc76da2e", "sha256": "81fc4f9eae29285be04815cb2950ef0540cc10682bdd324112b94fafa0e6de9a" }, "downloads": -1, "filename": "combi-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "5067b331e8ce035cc7470394dc76da2e", "packagetype": "bdist_wheel", "python_version": "3.3", "requires_python": null, "size": 250619, "upload_time": "2015-07-22T19:22:28", "url": "https://files.pythonhosted.org/packages/ce/9e/d3a472fa9706545e7fe143311dc7a098ae22118d35770e84cf2c075b941a/combi-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "36a5dea6d6143b62c5b32e52de13a1da", "sha256": "bc72ae2c65d39ccd790296dfbce386254cb5dd2b09cc2de6a23f2813cb00168e" }, "downloads": -1, "filename": "combi-1.1.1.tar.gz", "has_sig": false, "md5_digest": "36a5dea6d6143b62c5b32e52de13a1da", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 485310, "upload_time": "2015-07-22T19:26:17", "url": "https://files.pythonhosted.org/packages/b6/98/d1d5a3ffc7006a2e083accff77ec008b2f42ae54a0e88f7c37dcb381cc02/combi-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "63c5c3176cdde718023659d57dbc3260", "sha256": "496b4dcc1a5d2b749285d34c5f46777290a17a38a3ec730055062f4df78d3c18" }, "downloads": -1, "filename": "combi-1.1.2-py2-none-any.whl", "has_sig": false, "md5_digest": "63c5c3176cdde718023659d57dbc3260", "packagetype": "bdist_wheel", "python_version": "2.6", "requires_python": null, "size": 308932, "upload_time": "2016-06-07T13:59:05", "url": "https://files.pythonhosted.org/packages/73/78/0ab6b6872abfeaa2d3191e849dabc02606c959497ede2ac2d2d6fd54e995/combi-1.1.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2e9db0fa78143d56eb0a13e8dc3aae62", "sha256": "a23e66327571ecd981cd3d9c499cce2a073fa26e4079a3030b0ba50a8ccf3e50" }, "downloads": -1, "filename": "combi-1.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "2e9db0fa78143d56eb0a13e8dc3aae62", "packagetype": "bdist_wheel", "python_version": "3.3", "requires_python": null, "size": 251605, "upload_time": "2016-06-07T15:00:33", "url": "https://files.pythonhosted.org/packages/19/65/593236b44b5783b47bb183d2e07c8c479fed11c9aa707ed9ae8609358caf/combi-1.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2bc2a4419c715534fec072067fcf65f9", "sha256": "68fba4afef7832bac4c73f69734204012cb0a9d3cdf9871d673c56f623300140" }, "downloads": -1, "filename": "combi-1.1.2.tar.gz", "has_sig": false, "md5_digest": "2bc2a4419c715534fec072067fcf65f9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 487600, "upload_time": "2016-06-07T13:58:50", "url": "https://files.pythonhosted.org/packages/46/0c/ad58902a3ec3dbaa7b31b3822307fbb97b18daa928e64ed23ba97d769cc8/combi-1.1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "63c5c3176cdde718023659d57dbc3260", "sha256": "496b4dcc1a5d2b749285d34c5f46777290a17a38a3ec730055062f4df78d3c18" }, "downloads": -1, "filename": "combi-1.1.2-py2-none-any.whl", "has_sig": false, "md5_digest": "63c5c3176cdde718023659d57dbc3260", "packagetype": "bdist_wheel", "python_version": "2.6", "requires_python": null, "size": 308932, "upload_time": "2016-06-07T13:59:05", "url": "https://files.pythonhosted.org/packages/73/78/0ab6b6872abfeaa2d3191e849dabc02606c959497ede2ac2d2d6fd54e995/combi-1.1.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2e9db0fa78143d56eb0a13e8dc3aae62", "sha256": "a23e66327571ecd981cd3d9c499cce2a073fa26e4079a3030b0ba50a8ccf3e50" }, "downloads": -1, "filename": "combi-1.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "2e9db0fa78143d56eb0a13e8dc3aae62", "packagetype": "bdist_wheel", "python_version": "3.3", "requires_python": null, "size": 251605, "upload_time": "2016-06-07T15:00:33", "url": "https://files.pythonhosted.org/packages/19/65/593236b44b5783b47bb183d2e07c8c479fed11c9aa707ed9ae8609358caf/combi-1.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2bc2a4419c715534fec072067fcf65f9", "sha256": "68fba4afef7832bac4c73f69734204012cb0a9d3cdf9871d673c56f623300140" }, "downloads": -1, "filename": "combi-1.1.2.tar.gz", "has_sig": false, "md5_digest": "2bc2a4419c715534fec072067fcf65f9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 487600, "upload_time": "2016-06-07T13:58:50", "url": "https://files.pythonhosted.org/packages/46/0c/ad58902a3ec3dbaa7b31b3822307fbb97b18daa928e64ed23ba97d769cc8/combi-1.1.2.tar.gz" } ] }