{ "info": { "author": "Harshad Sharma", "author_email": "harshad@sharma.io", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Topic :: Software Development", "Topic :: Utilities" ], "description": "atum\n====\n\nAtum is a tiny Python library that you can use to emulate the basic\nfunctionality of Erlang\u2019s ``atom`` in your Python scripts.\n\n**Status: Beta; this is an experiment.**\n\nErlang documentation:\n~~~~~~~~~~~~~~~~~~~~~\n\n .. rubric:: 3.3 Atom\n :name: atom\n\n An atom is a literal, a constant with name. An atom is to be enclosed\n in single quotes (\u2019) if it does not begin with a lower-case letter or\n if it contains other characters than alphanumeric characters,\n underscore (_), or @. Examples:\n\n ::\n\n hello\n phone_number\n 'Monday'\n 'phone number'\n\n http://erlang.org/doc/reference_manual/data_types.html\n\nUnlike Erlang\u2019s atom, ``atum`` does not impose the same limitations. You\nmay import any valid Python name from atum - even all uppercase.\n\nInstall\n-------\n\n::\n\n $ pip install atum\n\nExamples\n--------\n\nInstead of writing:\n\n.. code:: python\n\n @app.route('/register', methods=['GET', 'POST'])\n def register():\n pass\n\nYou could write:\n\n.. code:: python\n\n from atum import GET, POST\n\n @app.route('/register', methods=[GET, POST])\n def register():\n pass\n\nThis might be useful if you use autocompletion. Another benefit is\nexceptions occur sooner in case of typos, since the interpreter itself\nvalidates the imported names. Pay attention when importing, simply\ntab-to-complete later.\n\nYou can compare an atum with another atum or a string.\n\n.. code:: python\n\n from atum import machine, human\n\n assert human == human\n assert machine == machine\n assert machine == 'machine'\n assert human != machine \n assert human is human\n assert machine is machine\n\nAtums also make for readable sentinel values or event-names.\n\n.. code:: python\n\n from atum import user_is_awake\n from queue import Queue\n\n q = Queue()\n\n q.put(user_is_awake)\n\n assert q.get() == user_is_awake\n\nTechnical Details\n~~~~~~~~~~~~~~~~~\n\nAtum simply imports Python strings with the same content as their name.\n\nHere is the content of atum.py in its entirety:\n\n.. code:: python\n\n import sys as _sys\n\n # intern() is a builtin in Python 2.\n if _sys.version_info > (3, 0):\n intern = _sys.intern\n\n\n class Atum(object):\n def __getattr__(self, item):\n if item.startswith('__'):\n return self.__getattribute__(item)\n return intern(item)\n\n def __getitem__(self, item):\n return item\n\n\n _sys.modules[__name__] = Atum()\n\nKnown Issues\n~~~~~~~~~~~~\n\n- Atum does not support using ``@`` in imported names as Python\u2019s\n syntax does not allow it.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/hiway/atum", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "atum", "package_url": "https://pypi.org/project/atum/", "platform": "", "project_url": "https://pypi.org/project/atum/", "project_urls": { "Homepage": "https://github.com/hiway/atum" }, "release_url": "https://pypi.org/project/atum/0.3.0-1/", "requires_dist": [ "twine; extra == 'dev'", "pypandoc; extra == 'dev'", "pytest; extra == 'dev'", "pytest-cov; extra == 'dev'" ], "requires_python": "", "summary": "Erlang-like atoms in Python 3", "version": "0.3.0-1" }, "last_serial": 3857267, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "f8e905cd323ec609c41a3640c8c2a646", "sha256": "db61e23efc87bb76fcad572644d7fb5bea1c63961122b1baa252dc669b849285" }, "downloads": -1, "filename": "atum-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "f8e905cd323ec609c41a3640c8c2a646", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 1972, "upload_time": "2018-05-07T23:52:08", "url": "https://files.pythonhosted.org/packages/30/d6/9e8d0fd563f142ef2782dc2dacef7b168c67844cbbc07c013b6505bf0948/atum-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "15fd54b5cd53410fdebdc140b74f536d", "sha256": "552c6b3ff52d84b29802ab3814b2043d74e0761de850eea87fdde34465cf0075" }, "downloads": -1, "filename": "atum-0.1.0.tar.gz", "has_sig": false, "md5_digest": "15fd54b5cd53410fdebdc140b74f536d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1961, "upload_time": "2018-05-07T23:52:11", "url": "https://files.pythonhosted.org/packages/dd/99/862627ac4e15437d5ef0923162d9be8db81cf3f6b09383ca2218cdf898e6/atum-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "13519e97e20bdf9cd01e8ae92ddfdecb", "sha256": "5052863ad736df204cac8d817dcace59d72e799652324847733517bd5871c558" }, "downloads": -1, "filename": "atum-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "13519e97e20bdf9cd01e8ae92ddfdecb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2075, "upload_time": "2018-05-09T08:16:53", "url": "https://files.pythonhosted.org/packages/42/ba/fe6a7f6546b790003757b5000510fa224ed8782dcf4f86e0b76f8507b4b5/atum-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9e2ad3fead45f0303361e93360f7be45", "sha256": "984b9caa2576382470fda2efca5474772bc783b82a6b30f8663d21f7096819a0" }, "downloads": -1, "filename": "atum-0.1.1.tar.gz", "has_sig": false, "md5_digest": "9e2ad3fead45f0303361e93360f7be45", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2121, "upload_time": "2018-05-09T08:16:56", "url": "https://files.pythonhosted.org/packages/91/ac/597a0537b25aa0d05755705c42d6cc90e926d36bdf97878da622198e0d20/atum-0.1.1.tar.gz" } ], "0.1.1-1": [ { "comment_text": "", "digests": { "md5": "2663610bbb86c00bb25e59ae5be8b9db", "sha256": "fab0696d38afea28ebea225e46e39ea22ce034ccfce8818e81ff10bd32a49b53" }, "downloads": -1, "filename": "atum-0.1.1-1.tar.gz", "has_sig": false, "md5_digest": "2663610bbb86c00bb25e59ae5be8b9db", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2589, "upload_time": "2018-05-09T09:11:06", "url": "https://files.pythonhosted.org/packages/0a/8b/0cb54ad5632a8b9c79e7c2ed09afd23b1e94771535637b5aacd41dc5e36e/atum-0.1.1-1.tar.gz" }, { "comment_text": "", "digests": { "md5": "bcc09ecf1c100e90e7b40310da4addd4", "sha256": "898d6ac92a7ea35d3531d9b8c53ee824805aabcc31e94f66fdadfe099cdfe467" }, "downloads": -1, "filename": "atum-0.1.1.post1-py3-none-any.whl", "has_sig": false, "md5_digest": "bcc09ecf1c100e90e7b40310da4addd4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2514, "upload_time": "2018-05-09T09:10:31", "url": "https://files.pythonhosted.org/packages/f8/e9/1417fb14f2a6ff9178308a4aef80bb5e234a655b385b226824a344b350dc/atum-0.1.1.post1-py3-none-any.whl" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "6433732d9bc50a9431d445f4d6d8d93e", "sha256": "846f8943e2c5e5c391a9243f18f04351886bb36f1280a59bc77b30edb9150e14" }, "downloads": -1, "filename": "atum-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "6433732d9bc50a9431d445f4d6d8d93e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2559, "upload_time": "2018-05-09T09:41:00", "url": "https://files.pythonhosted.org/packages/a6/35/a3a74b19316089ca33113d7f2f93d01a4bfe26eebf3ff23fad2ec03140ee/atum-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "db58abff798792a0a1149091645c6d58", "sha256": "4d7bd49a4ba9bede47217529c3cbda5e084bcf057c5664adf2ad7477d75e52b8" }, "downloads": -1, "filename": "atum-0.2.0.tar.gz", "has_sig": false, "md5_digest": "db58abff798792a0a1149091645c6d58", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2717, "upload_time": "2018-05-09T09:41:02", "url": "https://files.pythonhosted.org/packages/eb/6d/f6a088df8df2625546a445ddbdc0479485540a2c1583dc6ece7bcba8ac59/atum-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "ffa02785d73dc0f28f91e2b9d17f7b2d", "sha256": "ab82e2cfcd81fbe0c190a636884135d3e663488db33d93dbff9ada5c5c255603" }, "downloads": -1, "filename": "atum-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ffa02785d73dc0f28f91e2b9d17f7b2d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2693, "upload_time": "2018-05-12T19:03:14", "url": "https://files.pythonhosted.org/packages/1c/c0/3538971a96500a673ae5788a904533b55ee3d155c417b87e13bef3814c13/atum-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "74ba8a948d5f449ed5074b3ebd74d78f", "sha256": "c76fb3aff4dca13cf20fcedad235c4724e876f7b0fb71f401da26a73ed5e296b" }, "downloads": -1, "filename": "atum-0.3.0.tar.gz", "has_sig": false, "md5_digest": "74ba8a948d5f449ed5074b3ebd74d78f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2823, "upload_time": "2018-05-12T19:03:16", "url": "https://files.pythonhosted.org/packages/99/91/d89d0e498642de221f12cad12b38d77d75bb829df63e03e74be1a9b197ba/atum-0.3.0.tar.gz" } ], "0.3.0-1": [ { "comment_text": "", "digests": { "md5": "1c809dd0b6862c2c89f408ea025b8f94", "sha256": "3f0b9fbc1d7028278acf57bf844722a87f1e8c439b26f91f6b2646fb8c8fa10b" }, "downloads": -1, "filename": "atum-0.3.0-1.tar.gz", "has_sig": false, "md5_digest": "1c809dd0b6862c2c89f408ea025b8f94", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2819, "upload_time": "2018-05-12T19:28:12", "url": "https://files.pythonhosted.org/packages/cb/69/eb0029c5786f35e4b269814b78f956e640a1cbde4d85b0865dd64dc4ac91/atum-0.3.0-1.tar.gz" }, { "comment_text": "", "digests": { "md5": "616dfe6926c3d7543ecd2f6458ffd566", "sha256": "cbd3a8f01f54b78fe1954d1f15f73789342d49c7ad139bb3cbcac52285ba78a7" }, "downloads": -1, "filename": "atum-0.3.0.post1-py3-none-any.whl", "has_sig": false, "md5_digest": "616dfe6926c3d7543ecd2f6458ffd566", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2746, "upload_time": "2018-05-12T19:28:10", "url": "https://files.pythonhosted.org/packages/c9/d3/cefd1021739cc5b6d3024f8a162072a3202dead057a5eb6d1d28630a4f5a/atum-0.3.0.post1-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1c809dd0b6862c2c89f408ea025b8f94", "sha256": "3f0b9fbc1d7028278acf57bf844722a87f1e8c439b26f91f6b2646fb8c8fa10b" }, "downloads": -1, "filename": "atum-0.3.0-1.tar.gz", "has_sig": false, "md5_digest": "1c809dd0b6862c2c89f408ea025b8f94", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2819, "upload_time": "2018-05-12T19:28:12", "url": "https://files.pythonhosted.org/packages/cb/69/eb0029c5786f35e4b269814b78f956e640a1cbde4d85b0865dd64dc4ac91/atum-0.3.0-1.tar.gz" }, { "comment_text": "", "digests": { "md5": "616dfe6926c3d7543ecd2f6458ffd566", "sha256": "cbd3a8f01f54b78fe1954d1f15f73789342d49c7ad139bb3cbcac52285ba78a7" }, "downloads": -1, "filename": "atum-0.3.0.post1-py3-none-any.whl", "has_sig": false, "md5_digest": "616dfe6926c3d7543ecd2f6458ffd566", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2746, "upload_time": "2018-05-12T19:28:10", "url": "https://files.pythonhosted.org/packages/c9/d3/cefd1021739cc5b6d3024f8a162072a3202dead057a5eb6d1d28630a4f5a/atum-0.3.0.post1-py3-none-any.whl" } ] }