{ "info": { "author": "Jason Moiron", "author_email": "jmoiron@jmoiron.net", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: POSIX", "Programming Language :: Python", "Programming Language :: Python :: 3" ], "description": "humanize\n-------- \n \n\n\nThis modest package contains various common humanization utilities, like turning\na number into a fuzzy human readable duration ('3 minutes ago') or into a human\nreadable size or throughput. It works with python 2.7 and 3.3 and is localized\nto:\n\n- `de_DE`\n- `fa_IR`\n- `fi_FI`\n- `fr_FR`\n- `id_ID`\n- `ja_JP`\n- `ko_KR`\n- `nl_NL`\n- `pt_BR`\n- `ru_RU`\n- `sk_SK`\n- `tr_TR`\n- `vi_VI`\n- `zh_CN`\n\nusage\n-----\n\n#### Integer humanization\n\n```py\n>>> import humanize\n>>> humanize.intcomma(12345)\n'12,345'\n>>> humanize.intword(123455913)\n'123.5 million'\n>>> humanize.intword(12345591313)\n'12.3 billion'\n>>> humanize.apnumber(4)\n'four'\n>>> humanize.apnumber(41)\n'41'\n``` \n\n#### Date & time humanization\n\n```py\n>>> import datetime\n>>> humanize.naturalday(datetime.datetime.now())\n'today'\n>>> humanize.naturaldelta(datetime.timedelta(seconds=1001))\n'16 minutes'\n>>> humanize.naturalday(datetime.datetime.now() - datetime.timedelta(days=1))\n'yesterday'\n>>> humanize.naturalday(datetime.date(2007, 6, 5))\n'Jun 05'\n>>> humanize.naturaldate(datetime.date(2007, 6, 5))\n'Jun 05 2007'\n>>> humanize.naturaltime(datetime.datetime.now() - datetime.timedelta(seconds=1))\n'a second ago'\n>>> humanize.naturaltime(datetime.datetime.now() - datetime.timedelta(seconds=3600))\n'an hour ago'\n```\n\n#### Filesize humanization\n\n```py\n>>> humanize.naturalsize(1000000)\n'1.0 MB'\n>>> humanize.naturalsize(1000000, binary=True)\n'976.6 KiB'\n>>> humanize.naturalsize(1000000, gnu=True)\n'976.6K'\n```\n\n#### Human readable floating point numbers\n\n```py\n>>> humanize.fractional(1/3)\n'1/3'\n>>> humanize.fractional(1.5)\n'1 1/2'\n>>> humanize.fractional(0.3)\n'3/10'\n>>> humanize.fractional(0.333)\n'1/3'\n>>> humanize.fractional(1)\n'1'\n```\n\nLocalization\n------------\n\n#### How to change locale in runtime\n\n```py\n>>> print(humanize.naturaltime(datetime.timedelta(seconds=3)))\n3 seconds ago\n>>> _t = humanize.i18n.activate('ru_RU')\n>>> print(humanize.naturaltime(datetime.timedelta(seconds=3)))\n3 \u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043d\u0430\u0437\u0430\u0434\n>>> humanize.i18n.deactivate()\n>>> print(humanize.naturaltime(datetime.timedelta(seconds=3)))\n3 seconds ago\n```\n\nYou can pass additional parameter *path* to `activate` to specify a path to\nsearch locales in.\n\n```py\n>>> humanize.i18n.activate('pt_BR')\nIOError: [Errno 2] No translation file found for domain: 'humanize'\n>>> humanize.i18n.activate('pt_BR', path='path/to/my/portuguese/translation/')\n\n```\n\nHow to add new phrases to existing locale files ::\n\n```shell\n$ xgettext -o humanize.pot -k'_' -k'N_' -k'P_:1c,2' -l python humanize/*.py # extract new phrases\n$ msgmerge -U humanize/locale/ru_RU/LC_MESSAGES/humanize.po humanize.pot # add them to locale files\n$ msgfmt --check -o humanize/locale/ru_RU/LC_MESSAGES/humanize{.mo,.po} # compile to binary .mo\n```\nHow to add new locale:\n\n```shell\n$ msginit -i humanize.pot -o humanize/locale//LC_MESSAGES/humanize.po --locale \n```\n\nWhere `` is locale abbreviation, eg 'en_GB', 'pt_BR' or just 'ru', 'fr' etc.\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/luckydonald-forks/humanize", "keywords": "humanize time size", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "lucky-humanize", "package_url": "https://pypi.org/project/lucky-humanize/", "platform": "", "project_url": "https://pypi.org/project/lucky-humanize/", "project_urls": { "Homepage": "http://github.com/luckydonald-forks/humanize" }, "release_url": "https://pypi.org/project/lucky-humanize/0.5.4/", "requires_dist": null, "requires_python": "", "summary": "python humanize utilities", "version": "0.5.4" }, "last_serial": 4190048, "releases": { "0.5.3": [ { "comment_text": "", "digests": { "md5": "46017f248fb226a9a8ac95091c7fb04a", "sha256": "ad3b667084e7353e1315dce54bf3a0cf587c81e689e582d7440a5def80145863" }, "downloads": -1, "filename": "lucky-humanize-0.5.3.tar.gz", "has_sig": false, "md5_digest": "46017f248fb226a9a8ac95091c7fb04a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24063, "upload_time": "2018-08-20T20:32:42", "url": "https://files.pythonhosted.org/packages/c9/89/27ce09b423377b1e19af9607b2f2b8e1668192c21817f02844e4a67c24d6/lucky-humanize-0.5.3.tar.gz" } ], "0.5.4": [ { "comment_text": "", "digests": { "md5": "31016aae8c334d8397a49842ca29cb14", "sha256": "774b69a59fa524e288ae3f4a00f2c7ee5e1d8fb4901847958b04206e2265737b" }, "downloads": -1, "filename": "lucky-humanize-0.5.4.tar.gz", "has_sig": false, "md5_digest": "31016aae8c334d8397a49842ca29cb14", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24112, "upload_time": "2018-08-20T20:36:57", "url": "https://files.pythonhosted.org/packages/dc/03/9ddebbe6ae28bef825104c35719bb7e9f4d4b8458f7684c4cd0dbc9c9c89/lucky-humanize-0.5.4.tar.gz" } ], "0.5.4.dev1": [ { "comment_text": "", "digests": { "md5": "05459ed240daf3e8c4bdee5a79b1a8fb", "sha256": "357ad81c3a7050a1bb4989e315a3aa1b35750e56a8cf0ad95ef466a3aeb5741f" }, "downloads": -1, "filename": "lucky-humanize-0.5.4.dev1.tar.gz", "has_sig": false, "md5_digest": "05459ed240daf3e8c4bdee5a79b1a8fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24246, "upload_time": "2018-08-20T20:39:54", "url": "https://files.pythonhosted.org/packages/f3/84/45d57d71005925fe44b94183acbf1943c72a0932057f5ab6baf85d77ef6b/lucky-humanize-0.5.4.dev1.tar.gz" } ], "0.5.4.dev2": [ { "comment_text": "", "digests": { "md5": "e3951d71b6b497ddae4d75e5dec9d028", "sha256": "643a89f7801f82c149e32f30e04b9783ee73189c102f071c0a087da15c65700d" }, "downloads": -1, "filename": "lucky-humanize-0.5.4.dev2.tar.gz", "has_sig": false, "md5_digest": "e3951d71b6b497ddae4d75e5dec9d028", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24253, "upload_time": "2018-08-20T20:43:36", "url": "https://files.pythonhosted.org/packages/19/f4/8319635539bd4ed8795ef065d89793166872082d369ffc9755eebd1c48ef/lucky-humanize-0.5.4.dev2.tar.gz" } ], "0.5.4.dev3": [ { "comment_text": "", "digests": { "md5": "59140584fbf7ce9ba0c331cfddb0a300", "sha256": "538f6c4e69c04e169f25976c685eb61b03bf1d0ea8d70ae8584ea8745f360966" }, "downloads": -1, "filename": "lucky-humanize-0.5.4.dev3.tar.gz", "has_sig": false, "md5_digest": "59140584fbf7ce9ba0c331cfddb0a300", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24406, "upload_time": "2018-08-20T21:10:38", "url": "https://files.pythonhosted.org/packages/c9/48/ed9afca74c5c09733c2bcb1c481e1691a3d76245316ef3a729aec1bfe2fa/lucky-humanize-0.5.4.dev3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "31016aae8c334d8397a49842ca29cb14", "sha256": "774b69a59fa524e288ae3f4a00f2c7ee5e1d8fb4901847958b04206e2265737b" }, "downloads": -1, "filename": "lucky-humanize-0.5.4.tar.gz", "has_sig": false, "md5_digest": "31016aae8c334d8397a49842ca29cb14", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24112, "upload_time": "2018-08-20T20:36:57", "url": "https://files.pythonhosted.org/packages/dc/03/9ddebbe6ae28bef825104c35719bb7e9f4d4b8458f7684c4cd0dbc9c9c89/lucky-humanize-0.5.4.tar.gz" } ] }