{ "info": { "author": "F\u00e1bio Mac\u00eado Mendes", "author_email": "fabiomacedomendes@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License (GPL)", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Software Development :: Libraries" ], "description": "========\nOverview\n========\n\nWhat is pygeneric?\n==================\n\n`pygeneric` implements generic functions based on type dispatch in Python. A generic\nfunction groups different implementations (or methods) under the same name.\nThe actual implementation is then chosen at runtime depending on the type of\neach function argument.\n\nThe implementation is loosely inspired in the Julia language. We also shamelessly\nsteal some other features of Julia and adapted them to Python:\n\n* Parametric types.\n* A type conversion/promotion system integrated with arithmetic operations.\n* A generic Object base class that delegates all binary operations to the\n corresponding generic functions (i.e., instead of implementing\n Object.__add__, we overload ``generic.op.add(Object, Object))``.\n\nThis package works with Python 3 and Python 2, but it is getting increasingly\nmore difficult to keep Python 2 support as we implement more advanced features.\nNot all functionality works in Python 2, and sometimes extra precautions\nare necessary. Pygeneric cannot handle old style classes and sometimes we are\nlimited by lack of some Python 3 only syntax. Python 2 also have some quirks\nthat we do not try to emulate (e.g., broken comparison operators), so pygeneric\nuses an uniform Python 3 semantics.\n\n\nBasic usage\n===========\n\nMost of the functionality present in this package works around the type dispatch\nin generic functions. We declare a generic function using the syntax\n\n.. code-block:: python\n\n from generic import generic, Number, Sequence\n\n @generic\n def func(x, y):\n print('Got %r and %r' % (x, y))\n\n\nType dispatch can be defined in Python 3 as\n\n.. code-block:: python\n\n @func.overload\n def func(x: Number, y: Number):\n print('Got two numbers: %r and %r' % (x, y))\n\n\nThe Python 2-friendly syntax (which can also be useful in Python 3) is:\n\n.. code-block:: python\n\n @func.register(Sequence, Sequence)\n def func(x, y):\n print('Got two sequences: %r and %r' % (x, y))\n\n\nDepending on the types of each argument, the dispatcher will choose either one\nof these three implementations\n\n>>> func(42, 0.0)\nGot two numbers: 42 and 0.0\n>>> func([1, 2], (3, 4))\nGot two sequences: [1, 2] and (3, 4)\n>>> func(\"foo\", \"bar\")\nGot two sequences: 'foo' and 'bar'\n\n\nThe type dispatch always chooses the most specialized method for the given\nargument types.\n\nConsider the two specialized dispatches\n\n.. code-block:: python\n\n from numbers import Integral\n\n @func.overload\n def func(x: Integral, y: Number):\n print('Got one integer: %r and %s' % (x, y))\n\n @func.overload\n def func(x: Integral, y: Integral):\n print('Got two integers: %r and %s' % (x, y))\n\n\n``func`` knows what to do\n\n>>> func(1, 2)\nGot two integers: 1 and 2\n>>> func(1, 2.0)\nGot one integer: 1 and 2.0\n>>> func(2.0, 1)\nGot two numbers: 2.0 and 1\n\n\nFurther information\n===================\n\nDid you find this feature useful? Then start using pygeneric now!\nCheck the documentation__ for additional information.\n\n.. __documentation:: http://pythonhosted.org/pygeneric/", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/fabiommendes/pygeneric/", "keywords": null, "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "pygeneric", "package_url": "https://pypi.org/project/pygeneric/", "platform": "any", "project_url": "https://pypi.org/project/pygeneric/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/fabiommendes/pygeneric/" }, "release_url": "https://pypi.org/project/pygeneric/0.5.7/", "requires_dist": null, "requires_python": null, "summary": "A short description for your project.", "version": "0.5.7" }, "last_serial": 4682922, "releases": { "0.1.3": [ { "comment_text": "", "digests": { "md5": "757aeebc399292e87232c5f403ea99b5", "sha256": "8ffb8cf2d5a2aa5d043f5a7ab9682a0e86622a12fc0e4d869b0cdd4d061ef6d2" }, "downloads": -1, "filename": "pygeneric-0.1.3.tar.gz", "has_sig": false, "md5_digest": "757aeebc399292e87232c5f403ea99b5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34624, "upload_time": "2015-09-28T00:30:52", "url": "https://files.pythonhosted.org/packages/b6/2c/9f7b54bc491e6894b6f9000ddb07aab95112e60846123eda286f2dacdc0d/pygeneric-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "b32377a01cf6397d833f07acb0735694", "sha256": "44d60a5fb6efdcb3572d72549af0f3a423df53e08bc32508798922b89c536349" }, "downloads": -1, "filename": "pygeneric-0.1.4.tar.gz", "has_sig": false, "md5_digest": "b32377a01cf6397d833f07acb0735694", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34638, "upload_time": "2015-09-28T00:34:24", "url": "https://files.pythonhosted.org/packages/ef/f0/7d42c785ffae34319244d0494d92efac9ac86a3df09dad2aa98e28ceace5/pygeneric-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "built for Linux-3.19.8.6-1-MANJARO-x86_64-with-glibc2.3.4", "digests": { "md5": "537f31ee2f2d5d3ce95e694d0afc4c4e", "sha256": "725481e08457684553e60f81f03e4174e5547bd116ae4289759bd6619de7c459" }, "downloads": -1, "filename": "pygeneric-0.1.5.linux-x86_64.tar.gz", "has_sig": false, "md5_digest": "537f31ee2f2d5d3ce95e694d0afc4c4e", "packagetype": "bdist_dumb", "python_version": "3.4", "requires_python": null, "size": 66168, "upload_time": "2015-09-28T00:39:33", "url": "https://files.pythonhosted.org/packages/52/1b/fa4bb99383bfe9596b7142d5ed2c2a1cb3a9bd00f3acf46cc3d5cb9d9471/pygeneric-0.1.5.linux-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "5b8fcd8c014ffff5bf28cbb4b2caf326", "sha256": "f36797d8c1eeeb1056bc592e22b3d72e709499ed30f8c32ce35a4ed83c177ef4" }, "downloads": -1, "filename": "pygeneric-0.1.5.tar.gz", "has_sig": false, "md5_digest": "5b8fcd8c014ffff5bf28cbb4b2caf326", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34643, "upload_time": "2015-09-28T00:39:26", "url": "https://files.pythonhosted.org/packages/44/61/f5995462d221fb9facdec5000765730e0545789e6ed9e07a1009e1af6055/pygeneric-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "built for Linux-3.19.8.6-1-MANJARO-x86_64-with-glibc2.3.4", "digests": { "md5": "6264a1fca132eccd4dce71832b0247d1", "sha256": "c4d23c29be5aa0e131f2447372eb937ce587ad51ce70a919cc5ca4a975b82a94" }, "downloads": -1, "filename": "pygeneric-0.1.6.linux-x86_64.tar.gz", "has_sig": false, "md5_digest": "6264a1fca132eccd4dce71832b0247d1", "packagetype": "bdist_dumb", "python_version": "3.4", "requires_python": null, "size": 66176, "upload_time": "2015-09-28T00:45:17", "url": "https://files.pythonhosted.org/packages/bc/5d/0395fce51f2d13fc932db612a81ff538cfe1c3bb7a3123a5d2613e298543/pygeneric-0.1.6.linux-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "ca18d0857f1761ee40ccf623c4e6e1a8", "sha256": "869693d0a98ca67272b494081c035e3433b54df69bb8002361be80fe07c7c950" }, "downloads": -1, "filename": "pygeneric-0.1.6.tar.gz", "has_sig": false, "md5_digest": "ca18d0857f1761ee40ccf623c4e6e1a8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34635, "upload_time": "2015-09-28T00:45:12", "url": "https://files.pythonhosted.org/packages/f6/2d/db0090edb79b2062ef5799320200cf942e5969211c727d4488d9efee2df7/pygeneric-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "built for Linux-3.19.8.6-1-MANJARO-x86_64-with-glibc2.3.4", "digests": { "md5": "780a78e9aff15b373ebea18c984da6fa", "sha256": "26ae5ca305c535a124749667a0f4f85879851e5e8bf27cc6078b16f8783abadc" }, "downloads": -1, "filename": "pygeneric-0.1.7.linux-x86_64.tar.gz", "has_sig": false, "md5_digest": "780a78e9aff15b373ebea18c984da6fa", "packagetype": "bdist_dumb", "python_version": "3.4", "requires_python": null, "size": 75605, "upload_time": "2015-09-28T03:44:17", "url": "https://files.pythonhosted.org/packages/86/e8/5174ec608f263ccc1889c7286c8146c432b2af8f16c1c4e990d6bec46466/pygeneric-0.1.7.linux-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "e50f29e8b27450f3ab2c50e1c08129a0", "sha256": "87c022bb3d0167ae90a3fe51cae04d0f8306129a2bc787f9d440ee878822fd8e" }, "downloads": -1, "filename": "pygeneric-0.1.7.tar.gz", "has_sig": false, "md5_digest": "e50f29e8b27450f3ab2c50e1c08129a0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39223, "upload_time": "2015-09-28T03:44:11", "url": "https://files.pythonhosted.org/packages/e2/de/eec36188f2b5b19850ee8418bb3c5be0b63a9daec159019f5447c46d6a0f/pygeneric-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "built for Linux-3.19.8.6-1-MANJARO-x86_64-with-glibc2.3.4", "digests": { "md5": "ed084a9db0d40da2cc1c4cf7f56c8481", "sha256": "31d2a3a238c9d9305c4efa837853cc013988cbec72f0a4b77dbf4d28cf59775b" }, "downloads": -1, "filename": "pygeneric-0.1.8.linux-x86_64.tar.gz", "has_sig": false, "md5_digest": "ed084a9db0d40da2cc1c4cf7f56c8481", "packagetype": "bdist_dumb", "python_version": "3.4", "requires_python": null, "size": 75599, "upload_time": "2015-09-28T15:03:02", "url": "https://files.pythonhosted.org/packages/a4/dc/f2f221a316ae213d2f20670a1faaa1fe680843f534263b3e7a4296bbac02/pygeneric-0.1.8.linux-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "75d6b65b32a41fcefbd1c4b9678dc77a", "sha256": "2af4dcb0f364574d2f2bbfead9ec5fba523aebb8d1fbf0e373c8dfa75f5423c8" }, "downloads": -1, "filename": "pygeneric-0.1.8.tar.gz", "has_sig": false, "md5_digest": "75d6b65b32a41fcefbd1c4b9678dc77a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39230, "upload_time": "2015-09-28T14:13:33", "url": "https://files.pythonhosted.org/packages/91/50/a503a7c118433e837e7c61c722485859ef3c290c87c786ed2eca867236b7/pygeneric-0.1.8.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "1441383ad7d5d49c2764b6ace40e714f", "sha256": "4a0916f5c8ac45378572c37b72b87e2e31ef959caa8ce85acb56fc80033572bc" }, "downloads": -1, "filename": "pygeneric-0.2.0.tar.gz", "has_sig": false, "md5_digest": "1441383ad7d5d49c2764b6ace40e714f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39355, "upload_time": "2015-09-29T02:41:17", "url": "https://files.pythonhosted.org/packages/e5/60/23f94366b0d9bb84cb3016e6b0bee35b06b72c0828a8b31babd104dd5dc6/pygeneric-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "afe1bbaddee170cc602d119684214e44", "sha256": "0a94f28a0891e0af807a584575ff87e31763eede33a328fe0b876c3fce8a92a5" }, "downloads": -1, "filename": "pygeneric-0.2.1.tar.gz", "has_sig": false, "md5_digest": "afe1bbaddee170cc602d119684214e44", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39358, "upload_time": "2015-10-05T23:10:34", "url": "https://files.pythonhosted.org/packages/24/91/1154436440fd149a5eb0815fd8be3f0c086f0bbf288f4d3db4a49af4e4b3/pygeneric-0.2.1.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "b04474fc040ef85190465eb1179eaf1a", "sha256": "995669bdf11de5bfa133806eccb2b0d5b75fbef7391cd3aea544e4407e1eede7" }, "downloads": -1, "filename": "pygeneric-0.3.0.tar.gz", "has_sig": false, "md5_digest": "b04474fc040ef85190465eb1179eaf1a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 63145, "upload_time": "2015-11-01T14:29:30", "url": "https://files.pythonhosted.org/packages/cf/a0/a28a6415cdd1628f015c0bd2ed591e986ccc6e50fe1c9321b9460c1c4bc7/pygeneric-0.3.0.tar.gz" } ], "0.4.1": [ { "comment_text": "built for Linux-3.19.8.9-1-MANJARO-x86_64-with-glibc2.3.4", "digests": { "md5": "736d17c8f935bf14667f6c180b9ae132", "sha256": "26d6885cc741aa522f0e3945a69ec450ff6d8d5f3d6b5abdd9393e718fbb704e" }, "downloads": -1, "filename": "pygeneric-0.4.1.linux-x86_64.tar.gz", "has_sig": false, "md5_digest": "736d17c8f935bf14667f6c180b9ae132", "packagetype": "bdist_dumb", "python_version": "3.5", "requires_python": null, "size": 150327, "upload_time": "2015-11-06T02:58:19", "url": "https://files.pythonhosted.org/packages/e2/39/896ef67650089022e286c0814dc490831a6095b2e0dcf15c12678126a99e/pygeneric-0.4.1.linux-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "390ac36e831487b8bf9e2a45610f595f", "sha256": "03927ea026a850703af39c1c1ef932bdc8ac91712121f20ae88892cb1370ecd3" }, "downloads": -1, "filename": "pygeneric-0.4.1.tar.gz", "has_sig": false, "md5_digest": "390ac36e831487b8bf9e2a45610f595f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 111256, "upload_time": "2015-11-06T02:58:07", "url": "https://files.pythonhosted.org/packages/cb/52/85eb22543aa908a8738ab8ed8702ba4e50070f4c4c404b91a7b71ab3b528/pygeneric-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "4f3887616754d71b9e586a742fa5f6cb", "sha256": "8d4d032fe8ba58821352fba8e9773c37b3555eb1d3e434cf0b98543b940ff6b7" }, "downloads": -1, "filename": "pygeneric-0.4.2.tar.gz", "has_sig": false, "md5_digest": "4f3887616754d71b9e586a742fa5f6cb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 111522, "upload_time": "2015-11-07T11:47:27", "url": "https://files.pythonhosted.org/packages/64/35/f7ebf908eb25102f0cbd1af200dfd2e2d6f658d3d8f41ad86db9d60fae9b/pygeneric-0.4.2.tar.gz" }, { "comment_text": "", "digests": { "md5": "b6f41d303471cc031ca6826e62004e13", "sha256": "99f9eefe26d5ae47bfeb1ea6441d776c1f006faab2952c6f5cf399f6d5d09192" }, "downloads": -1, "filename": "pygeneric-0.4.2.zip", "has_sig": false, "md5_digest": "b6f41d303471cc031ca6826e62004e13", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 129846, "upload_time": "2015-11-07T11:46:33", "url": "https://files.pythonhosted.org/packages/e2/c7/ca15ffd90a3f17ee37d7906dd29b1919c539eace37c34e94163564d593c0/pygeneric-0.4.2.zip" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "5a9828c8ae589cc408fd42af065a3149", "sha256": "5e899777a29835feae663398aa15f54660958beb3820ab5e43a441ac32d9a718" }, "downloads": -1, "filename": "pygeneric-0.5.1.tar.gz", "has_sig": false, "md5_digest": "5a9828c8ae589cc408fd42af065a3149", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 101474, "upload_time": "2015-11-18T00:52:44", "url": "https://files.pythonhosted.org/packages/c7/ca/fc492536048633279f0605fae2ac8cb634afcf76ce59b4590dff6b7fca7a/pygeneric-0.5.1.tar.gz" }, { "comment_text": "", "digests": { "md5": "1493e2e2753a5ae48d5e35b72086a9eb", "sha256": "ac5ce08e650c1da8553af448933d64c6cce27d17ffe23d08de1c56774b887912" }, "downloads": -1, "filename": "pygeneric-0.5.1.zip", "has_sig": false, "md5_digest": "1493e2e2753a5ae48d5e35b72086a9eb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 119142, "upload_time": "2015-11-18T00:55:03", "url": "https://files.pythonhosted.org/packages/ea/0c/282950de059c82b600eff05d04738fbf835f29fbd3e9eb242c7ca5901f94/pygeneric-0.5.1.zip" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "bc467aa70cb33d4c4bcbe0cb7cb75d18", "sha256": "c3e812614e7f77339ebb8d8b6229eac6892b8fe52217f96a3419a832fec5a0df" }, "downloads": -1, "filename": "pygeneric-0.5.2.tar.gz", "has_sig": false, "md5_digest": "bc467aa70cb33d4c4bcbe0cb7cb75d18", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 101885, "upload_time": "2016-04-13T04:07:26", "url": "https://files.pythonhosted.org/packages/88/27/54adbab725f75d89ab43e43cb9a937092f7d77b06eb9685064ce192ae9d5/pygeneric-0.5.2.tar.gz" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "a77c2da1c5b0279a6c7a881bd48034f8", "sha256": "a69aa12c23b725ef0104683f8020cfa7eb8857978633e45460b6f44c9c54d479" }, "downloads": -1, "filename": "pygeneric-0.5.3.tar.gz", "has_sig": false, "md5_digest": "a77c2da1c5b0279a6c7a881bd48034f8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 103981, "upload_time": "2016-09-06T00:03:52", "url": "https://files.pythonhosted.org/packages/c8/1d/04c6e5dfd9175811aa4b9682ab8ae3107bba4a45e3967c45f6cab381ad79/pygeneric-0.5.3.tar.gz" } ], "0.5.4": [ { "comment_text": "", "digests": { "md5": "6fe1a7a628815213a6868e3eedc9de2d", "sha256": "56cb6a5861c25920e9280fd1cb0c0b8f59540d98f278b720c89d6b238d4cfa3c" }, "downloads": -1, "filename": "pygeneric-0.5.4.tar.gz", "has_sig": false, "md5_digest": "6fe1a7a628815213a6868e3eedc9de2d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 104054, "upload_time": "2016-09-06T02:49:16", "url": "https://files.pythonhosted.org/packages/ff/d1/f8d4038a7fc4fe59c93d6e20a1be67c084ae08177a3d67e4d91224422574/pygeneric-0.5.4.tar.gz" } ], "0.5.6": [ { "comment_text": "", "digests": { "md5": "f00e5f72c87a7139bd073e725750d373", "sha256": "d7d420a1652780e4abb23bdf2c8cc4b7de380a54008280f3dfeb3fdbbb02a8dc" }, "downloads": -1, "filename": "pygeneric-0.5.6.tar.gz", "has_sig": false, "md5_digest": "f00e5f72c87a7139bd073e725750d373", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 146053, "upload_time": "2016-09-21T12:24:10", "url": "https://files.pythonhosted.org/packages/f0/ee/a954d9b2fccad8eba64722905ea801607d104a465d92040c1323512c574a/pygeneric-0.5.6.tar.gz" } ], "0.5.7": [ { "comment_text": "", "digests": { "md5": "caaf3423857d9159448b083508e741fa", "sha256": "418c3152c01302402b55def2b7004babcc64c71c0d35f6145cf0380202569eec" }, "downloads": -1, "filename": "pygeneric-0.5.7.tar.gz", "has_sig": false, "md5_digest": "caaf3423857d9159448b083508e741fa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 146303, "upload_time": "2016-09-21T12:48:24", "url": "https://files.pythonhosted.org/packages/85/33/3a775c1c9af4919ee6d379169c240f1da8de2be8133eda7743b0936793e7/pygeneric-0.5.7.tar.gz" } ], "1.0.0b0": [ { "comment_text": "", "digests": { "md5": "afd089bdea0ba567c0d5f64d24552f8b", "sha256": "6db44dbc9b3cd7e849eab7c08fe58806326204f0dab1db103d181f762d9c7124" }, "downloads": -1, "filename": "pygeneric-1.0.0b0.tar.gz", "has_sig": false, "md5_digest": "afd089bdea0ba567c0d5f64d24552f8b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39739, "upload_time": "2019-01-10T22:10:54", "url": "https://files.pythonhosted.org/packages/18/bb/a2efa800e98b94f4378b54a6d4330d29eab7a4616bc0e78602290e6f1dab/pygeneric-1.0.0b0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "caaf3423857d9159448b083508e741fa", "sha256": "418c3152c01302402b55def2b7004babcc64c71c0d35f6145cf0380202569eec" }, "downloads": -1, "filename": "pygeneric-0.5.7.tar.gz", "has_sig": false, "md5_digest": "caaf3423857d9159448b083508e741fa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 146303, "upload_time": "2016-09-21T12:48:24", "url": "https://files.pythonhosted.org/packages/85/33/3a775c1c9af4919ee6d379169c240f1da8de2be8133eda7743b0936793e7/pygeneric-0.5.7.tar.gz" } ] }