{ "info": { "author": "Kyle Lahnakoski", "author_email": "kyle@lahnakoski.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "# More Math! \n\nBasic math functions that have been stabilized to act well over `Null`/`None`/`NaN`\n\n## Overview\n\nMany of the basic math functions you know and love, with the additional benefit \nthat they do not throw exceptions and do not return `NaN`. \n\nThese functions are all module methods. Be sure you call the functions \nwith `mo_math.` prefix, like \n\n\tmo_math.abs(-42)\n\nThis prevents confusion with the `__builtin__` functions by the same name \n\n\n## Functions\n\nFunctions are generally \"conservative\" in the face of nulls: Specifically, they return `Null` if any of their operands are not a number.\n\nMost functions need no introduction, but some are interesting:\n\n- `round(value, decimal=7, digits=None)` - Rounds to 7 decimal points, unless specified differently. Rounding to `decimal=0` will return an `int`. The useful parameter here is `digits`, which rounds to a specified number of significant digits.\n- `floor(value, mod=1)` - The `mod`ulo parameter is used to specify the granularity of the floor function.\n- `ceiling(value, mod=1)` - Return the smallest value, that's larger than `value`, with suitable granularity.\n- `mod(value, mod=1)` - Works on floats\n- `approx_str(value)` - Round values, and return unicode \n- `sign(v)` - Missing from the Python library \n\n\nThe all-caps aggregate functions accept only one parameter; an iterable. They are \"decisive\" operators: Non-numbers are ignored, if no values are numbers then the aggregate will return `Null`.\n\n- `COUNT(values)`\n- `SUM(values)` \n- `PRODUCT(values)` \n- `MIN(values)` \n- `MAX(values)`", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/klahnakoski/mo-math", "keywords": "", "license": "MPL 2.0", "maintainer": "", "maintainer_email": "", "name": "mo-math", "package_url": "https://pypi.org/project/mo-math/", "platform": "", "project_url": "https://pypi.org/project/mo-math/", "project_urls": { "Homepage": "https://github.com/klahnakoski/mo-math" }, "release_url": "https://pypi.org/project/mo-math/2.40.19027/", "requires_dist": null, "requires_python": "", "summary": "More Math! Many of the aggregates you are familiar with, but they ignore Nones", "version": "2.40.19027" }, "last_serial": 4744959, "releases": { "1.0.17035": [ { "comment_text": "", "digests": { "md5": "13e5d3671c242efa16b9c2d151f1dbd3", "sha256": "b032b3a1ee176f6f8a80edbf0ee3c4e5bd69932e54e3a3f2004a56dd35929352" }, "downloads": -1, "filename": "mo_math-1.0.17035-py2.7.egg", "has_sig": false, "md5_digest": "13e5d3671c242efa16b9c2d151f1dbd3", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 101216, "upload_time": "2017-02-03T19:49:43", "url": "https://files.pythonhosted.org/packages/f5/80/520401fd39757b83026efcdad097d8b93987eb3ee53b7ae1c6d1a1ee9525/mo_math-1.0.17035-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "f4480dd5aa6ef4913fd1baf9f00e34e5", "sha256": "b7586e92edf8e22ed93ad157da226af48ac0932257dc8ba47323d7139484e076" }, "downloads": -1, "filename": "mo-math-1.0.17035.zip", "has_sig": false, "md5_digest": "f4480dd5aa6ef4913fd1baf9f00e34e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50564, "upload_time": "2017-02-03T19:49:49", "url": "https://files.pythonhosted.org/packages/31/d3/c0ef1af4e5324854fdbe7f59dacc2b275e411bf77ad3d80cb7949423e72f/mo-math-1.0.17035.zip" } ], "1.0.17039": [ { "comment_text": "", "digests": { "md5": "1d3a6e67d99f8fbf8f121493962c1038", "sha256": "96dd0502cb27948cd94aea5236d87128b379c7135e3a62d3e48330857b4d6379" }, "downloads": -1, "filename": "mo_math-1.0.17039-py2.7.egg", "has_sig": false, "md5_digest": "1d3a6e67d99f8fbf8f121493962c1038", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 101245, "upload_time": "2017-02-07T14:54:43", "url": "https://files.pythonhosted.org/packages/35/60/383ef48695617915b0367f758d75143d3df06cdd8e691292e3d32deace1c/mo_math-1.0.17039-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "b61ad4f3a7244617aa199d565fc0debf", "sha256": "9e8a39d26284f74c6abc8489ae350a42f29ccaf3c898a7d60a356e5100299c56" }, "downloads": -1, "filename": "mo-math-1.0.17039.zip", "has_sig": false, "md5_digest": "b61ad4f3a7244617aa199d565fc0debf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50574, "upload_time": "2017-02-07T14:54:47", "url": "https://files.pythonhosted.org/packages/e9/14/a5411f79a1ef510011283bc51a1cf0f54dfcc249a4caf8afe52be219cf5a/mo-math-1.0.17039.zip" } ], "1.0.17041": [ { "comment_text": "", "digests": { "md5": "32833f08c45adabaa1f9954bd35b066f", "sha256": "c63e07b5068cb1aad00856f3afd18e93443d719a00cdbec61340a658bad1648b" }, "downloads": -1, "filename": "mo_math-1.0.17041-py2.7.egg", "has_sig": false, "md5_digest": "32833f08c45adabaa1f9954bd35b066f", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 46160, "upload_time": "2017-02-09T16:48:46", "url": "https://files.pythonhosted.org/packages/4c/1e/fd4462785a1047cec2f74824bb2258e2ea2be006d37ba01206e2febb728e/mo_math-1.0.17041-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "c575501b2a69f2c17885765a935cdc7e", "sha256": "d5a67fd66ccba0fb1145ce3a7a0c87cc41e9f6f9b6e17224039d04454df812e7" }, "downloads": -1, "filename": "mo-math-1.0.17041.zip", "has_sig": false, "md5_digest": "c575501b2a69f2c17885765a935cdc7e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50562, "upload_time": "2017-02-09T16:48:51", "url": "https://files.pythonhosted.org/packages/92/b0/88da91655ec896e8fa6ce8e71f1d195359f213edd95b91b61b21a1c8005a/mo-math-1.0.17041.zip" } ], "1.0.17049": [ { "comment_text": "", "digests": { "md5": "fb51780ff9c8f72f7a44a44c02116fbd", "sha256": "62b91b7ce861e343d1228ea5ced48056285a9440d4c54f19e69b569b6edd1b50" }, "downloads": -1, "filename": "mo_math-1.0.17049-py2.7.egg", "has_sig": false, "md5_digest": "fb51780ff9c8f72f7a44a44c02116fbd", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 46162, "upload_time": "2017-02-18T02:08:53", "url": "https://files.pythonhosted.org/packages/d7/00/b360d5c8b8a4f72e0bf02d6c111a1967464a5ed0cd893623a322564f4240/mo_math-1.0.17049-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "a455d11e1937af1ef56a48a32e2852c4", "sha256": "2ed27c18448d2d6ae1a714fb1fbfbdbadb4b6379de42c75285836f10ba1889f0" }, "downloads": -1, "filename": "mo-math-1.0.17049.zip", "has_sig": false, "md5_digest": "a455d11e1937af1ef56a48a32e2852c4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50566, "upload_time": "2017-02-18T02:08:57", "url": "https://files.pythonhosted.org/packages/af/00/4673d175a30e4e86edc471df8280186950949126212a1c12930511329beb/mo-math-1.0.17049.zip" } ], "1.0.17056": [ { "comment_text": "", "digests": { "md5": "294e5fa17b80529cd56af57f3bb5ebb1", "sha256": "a0d212ed5d8accd72eba06cf057b065e3445721e81e18af50b085ae6bd5aa7d7" }, "downloads": -1, "filename": "mo_math-1.0.17056-py2.7.egg", "has_sig": false, "md5_digest": "294e5fa17b80529cd56af57f3bb5ebb1", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 46162, "upload_time": "2017-02-25T20:28:16", "url": "https://files.pythonhosted.org/packages/86/f3/e5fba1e7f5183923efa78dd9a154a0bffd208c2cc90ebfd70c7d6cff52c3/mo_math-1.0.17056-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "0b297a0584324ff0e9a38b6be43ae62f", "sha256": "3726daeeb99985a9219bbd4e9a304c31bab79b57e696f4a6ca5943b4d064d3d5" }, "downloads": -1, "filename": "mo-math-1.0.17056.zip", "has_sig": false, "md5_digest": "0b297a0584324ff0e9a38b6be43ae62f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50566, "upload_time": "2017-02-25T20:28:20", "url": "https://files.pythonhosted.org/packages/d1/a7/9e1708f0940e03a0e2497473186286a96db304c389628145bdcd9ed01040/mo-math-1.0.17056.zip" } ], "1.0.17085": [ { "comment_text": "", "digests": { "md5": "9725381d158d8060f2042e0974afdb1b", "sha256": "cc025b443cf4e27a8a01bd622892fe4f0078f7308c700ea104679ed1743c3789" }, "downloads": -1, "filename": "mo_math-1.0.17085-py2.7.egg", "has_sig": false, "md5_digest": "9725381d158d8060f2042e0974afdb1b", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 46312, "upload_time": "2017-03-26T12:36:11", "url": "https://files.pythonhosted.org/packages/c9/d1/b9309e2915c348f16ca953f8fe56783641a3a1d4b891553d5f044d6bba36/mo_math-1.0.17085-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "6c8328bf6cf5e454c4251d1113bf9c7b", "sha256": "41e34ae3f4b45c4a97a0dbd4bcb909d98628db586ba9a7901966912cb15cb890" }, "downloads": -1, "filename": "mo-math-1.0.17085.zip", "has_sig": false, "md5_digest": "6c8328bf6cf5e454c4251d1113bf9c7b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50786, "upload_time": "2017-03-26T12:36:16", "url": "https://files.pythonhosted.org/packages/ec/e9/c023d893cd473562d6eab032ca18bea2e2ae04ad218735b6dce3c079b392/mo-math-1.0.17085.zip" } ], "1.0.17131": [ { "comment_text": "", "digests": { "md5": "d13a5ba46631304bff168863c6f30175", "sha256": "aaff6bda60b2e1cd35690773196c9fd4f447138b079efef90d5cb2c16dabc64e" }, "downloads": -1, "filename": "mo-math-1.0.17131.zip", "has_sig": false, "md5_digest": "d13a5ba46631304bff168863c6f30175", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 53292, "upload_time": "2017-05-11T13:41:47", "url": "https://files.pythonhosted.org/packages/9d/8f/e8a6a26024792da2d69a9c9d2545442e659a06ac4b52f4b75a20a419b236/mo-math-1.0.17131.zip" } ], "1.0.17227": [ { "comment_text": "", "digests": { "md5": "b63c6965fd876c260bf4aec7ba8802c7", "sha256": "6603afa2b976518de908bc0fb9b999a0a965a1c13956a92534ba1fdd5dad8ab8" }, "downloads": -1, "filename": "mo-math-1.0.17227.zip", "has_sig": false, "md5_digest": "b63c6965fd876c260bf4aec7ba8802c7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 53346, "upload_time": "2017-08-15T12:56:31", "url": "https://files.pythonhosted.org/packages/d6/48/ca990b7881fdd7b84373d3bd3fee8e0a8757efca8f37a4caf95d9791bc9a/mo-math-1.0.17227.zip" } ], "1.2.18029": [ { "comment_text": "", "digests": { "md5": "f760169490a00d9312a7df3e07b73037", "sha256": "34b4f58c9530786271609994c6c8315a69817fcace23f3392902615bfc50f05d" }, "downloads": -1, "filename": "mo-math-1.2.18029.tar.gz", "has_sig": false, "md5_digest": "f760169490a00d9312a7df3e07b73037", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40944, "upload_time": "2018-01-29T17:40:49", "url": "https://files.pythonhosted.org/packages/70/8d/f2fc831a82dc20f0cc9c7066ef51d85bf17affd13125cf1dcb992ba7beb9/mo-math-1.2.18029.tar.gz" } ], "2.13.18154": [ { "comment_text": "", "digests": { "md5": "eefb8ba5411088c4c88cdb8b08887d70", "sha256": "129afc731a1285b41de39bd170bdea35031dc2d5e07f5080c1d9223f013ca325" }, "downloads": -1, "filename": "mo-math-2.13.18154.tar.gz", "has_sig": false, "md5_digest": "eefb8ba5411088c4c88cdb8b08887d70", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41090, "upload_time": "2018-06-03T23:57:41", "url": "https://files.pythonhosted.org/packages/d8/21/eaec0087de8104338a2f22e27baa79f74e2b24bc52fff22e22a02d58c1a7/mo-math-2.13.18154.tar.gz" } ], "2.16.18199": [ { "comment_text": "", "digests": { "md5": "9259c765011945ae6aa890e6bb7bdc40", "sha256": "2c1453558ed1b17b723f3cd04833b22701e462ed1ab486adf9cda64fc1246bc9" }, "downloads": -1, "filename": "mo-math-2.16.18199.tar.gz", "has_sig": false, "md5_digest": "9259c765011945ae6aa890e6bb7bdc40", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41104, "upload_time": "2018-07-18T12:16:56", "url": "https://files.pythonhosted.org/packages/c9/64/a7349c796acd5a5d8c4dc904b9e1cde46596008e362c66c0a8a7c3759e29/mo-math-2.16.18199.tar.gz" } ], "2.17.18212": [ { "comment_text": "", "digests": { "md5": "5d4e7de23eaac324f5f288b8f63f711c", "sha256": "d2ac06efef3627bbf8fdf35050829dc8e40e25b24f556e9d9ce388a28b93b7bc" }, "downloads": -1, "filename": "mo-math-2.17.18212.tar.gz", "has_sig": false, "md5_digest": "5d4e7de23eaac324f5f288b8f63f711c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41095, "upload_time": "2018-07-31T22:29:46", "url": "https://files.pythonhosted.org/packages/d2/62/a66e6e1a6ebd3be7f12fcc6e5a749ea96144fd0db877e545179c85aeccd2/mo-math-2.17.18212.tar.gz" } ], "2.18.18240": [ { "comment_text": "", "digests": { "md5": "712129657ee916a17a42409a3ee0bab7", "sha256": "1aac51ef64777906149a7470d517eabed963ae1e2e746f20ce87c336b32d1466" }, "downloads": -1, "filename": "mo-math-2.18.18240.tar.gz", "has_sig": false, "md5_digest": "712129657ee916a17a42409a3ee0bab7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41112, "upload_time": "2018-08-28T13:10:55", "url": "https://files.pythonhosted.org/packages/3c/b1/ab7478964b9a412474f6a82a333033ef84600085905083c5d4ffe44d946e/mo-math-2.18.18240.tar.gz" } ], "2.26.18331": [ { "comment_text": "", "digests": { "md5": "877ad58609d0bf9d54957fec60467c65", "sha256": "a90bebe75f518b972c99b5b800131e183fb9da4612f499ab893cd0648938007e" }, "downloads": -1, "filename": "mo-math-2.26.18331.tar.gz", "has_sig": false, "md5_digest": "877ad58609d0bf9d54957fec60467c65", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39478, "upload_time": "2018-11-27T14:27:18", "url": "https://files.pythonhosted.org/packages/c1/90/ea555afb6f715745fe411dc2a4413f8a5a564f9295c6f2552ca92e22ebc1/mo-math-2.26.18331.tar.gz" } ], "2.27.19008": [ { "comment_text": "", "digests": { "md5": "f9054f41ee8f59717166305d38fa3965", "sha256": "6a52a9bc45b13baa853b67cdc0ffa37112ff2b7232015601e1d56fbbb4dabfc9" }, "downloads": -1, "filename": "mo-math-2.27.19008.tar.gz", "has_sig": false, "md5_digest": "f9054f41ee8f59717166305d38fa3965", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39494, "upload_time": "2019-01-08T17:31:06", "url": "https://files.pythonhosted.org/packages/f6/9f/5a96ab5cdd6cb330a6d53cbb3f21646ff047765557658790f55700b3ff33/mo-math-2.27.19008.tar.gz" } ], "2.28.19015": [ { "comment_text": "", "digests": { "md5": "daffc17f7bcaec5b3c146b6a1e6618bd", "sha256": "572a0dd2cb674a535abbc0ba72aa5acb2c20795931488ddcc6d22acb66ab21fe" }, "downloads": -1, "filename": "mo-math-2.28.19015.tar.gz", "has_sig": false, "md5_digest": "daffc17f7bcaec5b3c146b6a1e6618bd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39524, "upload_time": "2019-01-15T13:59:51", "url": "https://files.pythonhosted.org/packages/07/a2/620009e684a998acbadae087d2e61f389a9ef7923c73eb7d7c12d04d2b37/mo-math-2.28.19015.tar.gz" } ], "2.31.19025": [ { "comment_text": "", "digests": { "md5": "538cf91a7a6b6c3b96204939499c4776", "sha256": "d77f99f663bbe3029bd4201fa10543458b5477f56cac4bab190a976cf277a4c9" }, "downloads": -1, "filename": "mo-math-2.31.19025.tar.gz", "has_sig": false, "md5_digest": "538cf91a7a6b6c3b96204939499c4776", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39524, "upload_time": "2019-01-25T23:58:04", "url": "https://files.pythonhosted.org/packages/c6/06/fe2864dced5ca374491b169091234eb8f1c378e9c6cd466f02a2be92dc2e/mo-math-2.31.19025.tar.gz" } ], "2.40.19027": [ { "comment_text": "", "digests": { "md5": "b86592268cc4e310b691c18d34cb8ca0", "sha256": "8d08c2a681740f65e22404cac94cb5f1fe6cd8a6c3a33bdb3d4abb6bdfad43e7" }, "downloads": -1, "filename": "mo-math-2.40.19027.tar.gz", "has_sig": false, "md5_digest": "b86592268cc4e310b691c18d34cb8ca0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39543, "upload_time": "2019-01-27T01:49:19", "url": "https://files.pythonhosted.org/packages/3f/a0/ca2006933f065c368a25cf2b7ddba0edd66dd7c6b25bed6a3ae5f4270ca8/mo-math-2.40.19027.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b86592268cc4e310b691c18d34cb8ca0", "sha256": "8d08c2a681740f65e22404cac94cb5f1fe6cd8a6c3a33bdb3d4abb6bdfad43e7" }, "downloads": -1, "filename": "mo-math-2.40.19027.tar.gz", "has_sig": false, "md5_digest": "b86592268cc4e310b691c18d34cb8ca0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39543, "upload_time": "2019-01-27T01:49:19", "url": "https://files.pythonhosted.org/packages/3f/a0/ca2006933f065c368a25cf2b7ddba0edd66dd7c6b25bed6a3ae5f4270ca8/mo-math-2.40.19027.tar.gz" } ] }