{ "info": { "author": "Conrad Dean", "author_email": "conrad.p.dean@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Console", "Intended Audience :: Developers", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: Implementation :: CPython" ], "description": "very, very fnny\n---------------\n\n.. image:: https://travis-ci.org/cpdean/fnny.svg?branch=master\n :target: https://travis-ci.org/cpdean/fnny\n\nlibrary with some helper functions that make more functions for you.\n\ncheck it out\n\nmake a plucker with pluck::\n\n from fnny import pluck as p\n from collections import namedtuple\n G = namedtuple(\"G\", [\"a\"])\n guys = [G(i) for i in range(10)]\n expected = sum(map(lambda x: x.a, guys))\n actual = sum(map(p.a, guys))\n assert expected == actual\n\n\ncall a method with method::\n\n from fnny import method as m\n from test.test_it import _Argless()\n no_args = [_Argless() for a in range(10)]\n expected = list(map(lambda x: x.wow(), no_args))\n actual = list(map(m.wow, no_args))\n assert expected == actual\n\nuse a partially applied method with partial::\n \n from fnny import partial as pa\n from test.test_it import _OneArg()\n has_args = [_OneArg() for a in range(10)]\n expected = list(map(lambda x: x.add(1), has_args))\n actual = list(map(pa.add(1), has_args))\n assert expected == actual\n\n\npartial even supports kwargs::\n\n from test.test_it import _OneKwarg()\n has_args = [_OneKwarg() for a in range(10)]\n expected = list(map(lambda x: x.derp(something=\"heyy\"), has_args))\n actual = list(map(pa.derp(something=\"heyy\"), has_args))\n assert expected == actual\n\n\nbut actually, python already has a way more idiomatic way to do all of the above::\n\n guys = [G(i) for i in range(10)]\n assert sum(map(lambda x: x.a, guys)) == sum(g.a for g in guys)\n\n no_args = [_Argless() for a in range(10)]\n expected = list(map(lambda x: x.wow(), no_args))\n actual = [argless.wow() for argless in no_args]\n assert expected == actual\n\n has_args = [_OneArg() for a in range(10)]\n expected = list(map(lambda x: x.add(1), has_args))\n actual = [one.add(1) for one in has_args]\n assert expected == actual\n\n has_kwargs = [_OneKwarg() for a in range(10)]\n expected = list(map(lambda x: x.derp(something=\"heyy\"), has_kwargs))\n actual = [kw.derp(something=\"heyy\") for kw in has_kwargs]\n assert expected == actual\n\nBut maybe there's still a place for a discriptor-based lib for function generation.\n\nI'll add examples as soon as I think of them, I guess.", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/cpdean/fnny", "keywords": "functional programming higher-ordered", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "fnny", "package_url": "https://pypi.org/project/fnny/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/fnny/", "project_urls": { "Homepage": "https://github.com/cpdean/fnny" }, "release_url": "https://pypi.org/project/fnny/0.0.2/", "requires_dist": null, "requires_python": "", "summary": "Hot function generators", "version": "0.0.2" }, "last_serial": 1821894, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "1c60f1a5b4ce47f14a17697bc72a8a9a", "sha256": "56ba5fe48057ff83b21f2e195f483a9066ba25e074eb2a6fb3c57859c10a0c50" }, "downloads": -1, "filename": "fnny-0.0.1.tar.gz", "has_sig": false, "md5_digest": "1c60f1a5b4ce47f14a17697bc72a8a9a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1804, "upload_time": "2015-11-18T02:51:08", "url": "https://files.pythonhosted.org/packages/2d/4b/c9a34b3a421f81222942c167b09f6628cf392cea770eb36abda543cd653f/fnny-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "48c34627ddef95c3d044cd359c8b6997", "sha256": "d2d83526439aa49f57467a0d6b0d1ff519f37225546fbbcbf06ae8e2327c8030" }, "downloads": -1, "filename": "fnny-0.0.2.tar.gz", "has_sig": false, "md5_digest": "48c34627ddef95c3d044cd359c8b6997", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2522, "upload_time": "2015-11-18T03:38:15", "url": "https://files.pythonhosted.org/packages/b4/6c/6934880cbee44f2c51ad316fac20f9a4aff751d48163b101723b42041f01/fnny-0.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "48c34627ddef95c3d044cd359c8b6997", "sha256": "d2d83526439aa49f57467a0d6b0d1ff519f37225546fbbcbf06ae8e2327c8030" }, "downloads": -1, "filename": "fnny-0.0.2.tar.gz", "has_sig": false, "md5_digest": "48c34627ddef95c3d044cd359c8b6997", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2522, "upload_time": "2015-11-18T03:38:15", "url": "https://files.pythonhosted.org/packages/b4/6c/6934880cbee44f2c51ad316fac20f9a4aff751d48163b101723b42041f01/fnny-0.0.2.tar.gz" } ] }