{
"info": {
"author": "Anthony Zhang (Uberi)",
"author_email": "azhang9@gmail.com",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"Intended Audience :: Science/Research",
"License :: OSI Approved :: BSD License",
"Natural Language :: English",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.2",
"Programming Language :: Python :: 3.3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3 :: Only",
"Topic :: Scientific/Engineering :: Mathematics",
"Topic :: Software Development :: Libraries :: Python Modules"
],
"description": "anglr\n=====\n\n.. image:: https://img.shields.io/pypi/dm/anglr.svg\n :target: https://pypi.python.org/pypi/anglr/\n :alt: Downloads\n\n.. image:: https://img.shields.io/pypi/v/anglr.svg\n :target: https://pypi.python.org/pypi/anglr/\n :alt: Latest Version\n\n.. image:: https://img.shields.io/pypi/status/anglr.svg\n :target: https://pypi.python.org/pypi/anglr/\n :alt: Development Status\n\n.. image:: https://img.shields.io/pypi/pyversions/anglr.svg\n :target: https://pypi.python.org/pypi/anglr/\n :alt: Supported Python Versions\n\n.. image:: https://img.shields.io/pypi/l/anglr.svg\n :target: https://pypi.python.org/pypi/anglr/\n :alt: License\n\nPlanar angle mathematics library for Python.\n\nThis library contains many different functions for converting between units, comparing angles, and doing angle arithmetic.\n\nLinks:\n\n- `PyPI `__\n- `GitHub `__\n\nQuickstart: ``pip3 install anglr``.\n\nRationale\n---------\n\nConsider the following trivial angle comparison code:\n\n.. code:: python\n\n import math\n heading = get_compass_value() # angle in radians normalized to $[0, 2*pi)$\n if target - math.pi / 4 <= heading <= target + math.pi / 4:\n print(\"Facing the target\")\n else:\n print(\"Not facing the target\")\n\nAngle code is everywhere. The above is totally, utterly **wrong** (consider what happens when ``target`` is 0), yet this could easily be overlooked while writing and during code review.\n\nWith anglr, there is a better way:\n\n.. code:: python\n\n import math\n from anglr import Angle\n heading = Angle(get_compass_value())\n if heading.angle_between(target) <= math.pi / 4:\n print(\"Facing the target\")\n else:\n print(\"Not facing the target\")\n\nMuch better - this will now correctly take modular arithmetic into account when comparing angles.\n\nExamples\n--------\n\nAngle creation:\n\n.. code:: python\n\n from math import pi\n from anglr import Angle\n print(Angle())\n print(Angle(87 * pi / 2))\n print(Angle(pi / 2, \"radians\"))\n print(Angle(Angle(pi / 2, \"radians\"))) # same as above\n print(Angle(64.2, \"degrees\"))\n print(Angle(384.9, \"gradians\"))\n print(Angle(4.5, \"hours\"))\n print(Angle(203.8, \"arcminutes\"))\n print(Angle(42352.7, \"arcseconds\"))\n print(Angle((56, 32), \"vector\")) # angle in standard position - counterclockwise from positive X-axis\n\nAngle conversion:\n\n.. code:: python\n\n from anglr import Angle\n x = Angle(58.3)\n print([x], str(x), x.radians, x.degrees, x.gradians, x.hours, x.arcminutes, x.arcseconds, x.vector, x.x, x.y)\n print(complex(x))\n print(float(x))\n print(int(x))\n x.radians = pi / 2\n print(x.dump())\n x.degrees = 64.2\n print(x.dump())\n x.gradians = 384.9\n print(x.dump())\n x.hours = 4.5\n print(x.dump())\n x.arcminutes = 203.8\n print(x.dump())\n x.arcseconds = 42352.7\n print(x.dump())\n x.vector = (56, 32)\n print(x.dump())\n\nAngle arithmetic:\n\n.. code:: python\n\n from math import pi\n from anglr import Angle\n print(Angle(pi / 6) + Angle(2 * pi / 3))\n print(x * 2 + Angle(3 * pi / 4) / 4 + 5 * Angle(pi / 3))\n print(-abs(+Angle(pi)))\n print(round(Angle(-75.87)))\n print(Angle(-4.3) <= Angle(pi / 4) > Angle(0.118) == Angle(0.118))\n print(Angle(-870.3, \"gradians\").normalized())\n print(Angle(-870.3, \"gradians\").normalized(0)) # same as above\n print(Angle(-870.3, \"gradians\").normalized(0, 2 * pi)) # same as above\n print(Angle(-870.3, \"gradians\").normalized(-pi, pi))\n print(Angle(-870.3, \"gradians\").normalized(-pi, 0))\n print(Angle(1, \"degrees\").angle_between_clockwise(Angle(0, \"degrees\")))\n print(Angle(1, \"degrees\").angle_between(Angle(0, \"degrees\")))\n print(Angle(0, \"degrees\").angle_within(Angle(-45, \"degrees\"), Angle(45, \"degrees\")))\n print(Angle(-1, \"degrees\").angle_within(Angle(-1, \"degrees\"), Angle(1, \"degrees\"), strictly_within=True))\n print(Angle(-1, \"degrees\").angle_to(Angle(180, \"degrees\")))\n print(Angle(0, \"degrees\").angle_to(Angle(180, \"degrees\")))\n\nTo run all of the above as tests, simply run ``python3 tests.py`` in the project directory.\n\nInstalling\n----------\n\nThe easiest way to install this is using ``pip3 install anglr``.\n\nOtherwise, download the source distribution from `PyPI `__, and extract the archive.\n\nIn the folder, run ``python3 setup.py install``.\n\nRequirements\n------------\n\nThis library requires Python 3.2 or higher to run.\n\nAuthors\n-------\n\n::\n\n Uberi (Anthony Zhang)\n\nPlease report bugs and suggestions at the `issue tracker `__!\n\nLicense\n-------\n\nCopyright 2014-2015 `Anthony Zhang (Uberi) `__.\n\nThe source code is available online at `GitHub `__.\n\nThis program is made available under the 3-clause BSD license. See ``LICENSE.txt`` for more information.",
"description_content_type": null,
"docs_url": null,
"download_url": "UNKNOWN",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/Uberi/anglr#readme",
"keywords": "angle angles radians unit convert",
"license": "BSD",
"maintainer": null,
"maintainer_email": null,
"name": "anglr",
"package_url": "https://pypi.org/project/anglr/",
"platform": "UNKNOWN",
"project_url": "https://pypi.org/project/anglr/",
"project_urls": {
"Download": "UNKNOWN",
"Homepage": "https://github.com/Uberi/anglr#readme"
},
"release_url": "https://pypi.org/project/anglr/1.1.0/",
"requires_dist": null,
"requires_python": null,
"summary": "Planar angle mathematics library for Python.",
"version": "1.1.0"
},
"last_serial": 1784621,
"releases": {
"1.0.0": [],
"1.0.1": [
{
"comment_text": "",
"digests": {
"md5": "dff2698d60c349bd1efce7ad0500bb0d",
"sha256": "18c848b0a77f83dd301fb6b24c0952f73c469bbdea106aa5d0baed48f1b3ca94"
},
"downloads": -1,
"filename": "anglr-1.0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "dff2698d60c349bd1efce7ad0500bb0d",
"packagetype": "bdist_wheel",
"python_version": "any",
"requires_python": null,
"size": 7204,
"upload_time": "2015-03-23T04:33:18",
"url": "https://files.pythonhosted.org/packages/5b/61/390e9061ce5fc9c2ef66d262b7372cd5e22ea9b04593611cda75829d6f1e/anglr-1.0.1-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "700a90b4116fbbcb5ffa063def7dbd2f",
"sha256": "8195fa5b4496440131a8538c03ee69a01154b9ec64c7d15e242812338810d2a9"
},
"downloads": -1,
"filename": "anglr-1.0.1.tar.gz",
"has_sig": false,
"md5_digest": "700a90b4116fbbcb5ffa063def7dbd2f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 6023,
"upload_time": "2015-03-23T04:33:08",
"url": "https://files.pythonhosted.org/packages/10/25/724bc863dc1041bc8d8acedaef01f53c2a9d60e089a8bd2278c70e8ab5f2/anglr-1.0.1.tar.gz"
}
],
"1.0.2": [
{
"comment_text": "",
"digests": {
"md5": "724fcced35c66934143864b0d98e07ce",
"sha256": "ba65a6f9c76ff44fb3aa41bc7593c1a4ccd8d055caa9a1de58212fdd5e202dfb"
},
"downloads": -1,
"filename": "anglr-1.0.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "724fcced35c66934143864b0d98e07ce",
"packagetype": "bdist_wheel",
"python_version": "any",
"requires_python": null,
"size": 8286,
"upload_time": "2015-03-27T01:31:04",
"url": "https://files.pythonhosted.org/packages/a1/b4/d4244cd5697aad53c67c5b20e978eaf6b09f3b8014b60fb753422e13d23d/anglr-1.0.2-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "4711a1509b9fb62a7863d0f62f246b25",
"sha256": "176b8c9b8bf7a14cb562182a1854d2b4d141b9a80f36d8e1252494734770993b"
},
"downloads": -1,
"filename": "anglr-1.0.2.tar.gz",
"has_sig": false,
"md5_digest": "4711a1509b9fb62a7863d0f62f246b25",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 6806,
"upload_time": "2015-03-27T01:30:42",
"url": "https://files.pythonhosted.org/packages/93/76/f44f3a6d9fb10acb2d9830b39175eee7e2639fdb638d9d57316bb61e39fd/anglr-1.0.2.tar.gz"
}
],
"1.1.0": [
{
"comment_text": "",
"digests": {
"md5": "f1ff1a3cbb891e41f6e631fa77f097ac",
"sha256": "fc51780ad80515c8b3363f385594cbf260328c91ad534673a9bc2b1f18782b40"
},
"downloads": -1,
"filename": "anglr-1.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f1ff1a3cbb891e41f6e631fa77f097ac",
"packagetype": "bdist_wheel",
"python_version": "3.4",
"requires_python": null,
"size": 7908,
"upload_time": "2015-10-24T21:19:50",
"url": "https://files.pythonhosted.org/packages/6e/37/4a465512ad2d271a6f3cd0b3a293e565485effdac415162a751dbd593dd3/anglr-1.1.0-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "d48ec77f763e2ede8ea3ecbc25e91df1",
"sha256": "53d6df951e6ab63263c2baa2bf6570c70be11faa92c93cfac30ee9f003a093c5"
},
"downloads": -1,
"filename": "anglr-1.1.0.tar.gz",
"has_sig": false,
"md5_digest": "d48ec77f763e2ede8ea3ecbc25e91df1",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 6369,
"upload_time": "2015-10-24T21:19:47",
"url": "https://files.pythonhosted.org/packages/ce/d5/46446e2cff86e14c60cf2838a3178a453687ba1f8fd1987e64197354354d/anglr-1.1.0.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "f1ff1a3cbb891e41f6e631fa77f097ac",
"sha256": "fc51780ad80515c8b3363f385594cbf260328c91ad534673a9bc2b1f18782b40"
},
"downloads": -1,
"filename": "anglr-1.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f1ff1a3cbb891e41f6e631fa77f097ac",
"packagetype": "bdist_wheel",
"python_version": "3.4",
"requires_python": null,
"size": 7908,
"upload_time": "2015-10-24T21:19:50",
"url": "https://files.pythonhosted.org/packages/6e/37/4a465512ad2d271a6f3cd0b3a293e565485effdac415162a751dbd593dd3/anglr-1.1.0-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "d48ec77f763e2ede8ea3ecbc25e91df1",
"sha256": "53d6df951e6ab63263c2baa2bf6570c70be11faa92c93cfac30ee9f003a093c5"
},
"downloads": -1,
"filename": "anglr-1.1.0.tar.gz",
"has_sig": false,
"md5_digest": "d48ec77f763e2ede8ea3ecbc25e91df1",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 6369,
"upload_time": "2015-10-24T21:19:47",
"url": "https://files.pythonhosted.org/packages/ce/d5/46446e2cff86e14c60cf2838a3178a453687ba1f8fd1987e64197354354d/anglr-1.1.0.tar.gz"
}
]
}