Skip to main content

python humanize utilities

Project description

humanize
--------

.. image:: https://secure.travis-ci.org/jmoiron/humanize.png?branch=master
:target: http://travis-ci.org/jmoiron/humanize

This modest package contains various common humanization utilities, like turning
a number into a fuzzy human readable duration ('3 minutes ago') or into a human
readable size or throughput. It works with python 2.7 and 3.3 and is localized
to Russian, French, Korean and Slovak.

usage
-----

Integer humanization::

>>> import humanize
>>> humanize.intcomma(12345)
'12,345'
>>> humanize.intword(123455913)
'123.5 million'
>>> humanize.intword(12345591313)
'12.3 billion'
>>> humanize.apnumber(4)
'four'
>>> humanize.apnumber(41)
'41'

Date & time humanization::

>>> import datetime
>>> humanize.naturalday(datetime.datetime.now())
'today'
>>> humanize.naturaldelta(datetime.timedelta(seconds=1001))
'16 minutes'
>>> humanize.naturalday(datetime.datetime.now() - datetime.timedelta(days=1))
'yesterday'
>>> humanize.naturalday(datetime.date(2007, 6, 5))
'Jun 05'
>>> humanize.naturaldate(datetime.date(2007, 6, 5))
'Jun 05 2007'
>>> humanize.naturaltime(datetime.datetime.now() - datetime.timedelta(seconds=1))
'a second ago'
>>> humanize.naturaltime(datetime.datetime.now() - datetime.timedelta(seconds=3600))
'an hour ago'

Filesize humanization::

>>> humanize.naturalsize(1000000)
'1.0 MB'
>>> humanize.naturalsize(1000000, binary=True)
'976.6 KiB'
>>> humanize.naturalsize(1000000, gnu=True)
'976.6K'


Human readable floating point numbers::

>>> humanize.fractional(1/3)
'1/3'
>>> humanize.fractional(1.5)
'1 1/2'
>>> humanize.fractional(0.3)
'3/10'
>>> humanize.fractional(0.333)
'1/3'
>>> humanize.fractional(1)
'1'

Localization
------------

How to change locale in runtime ::

>>> print humanize.naturaltime(datetime.timedelta(seconds=3))
3 seconds ago
>>> _t = humanize.i18n.activate('ru_RU')
>>> print humanize.naturaltime(datetime.timedelta(seconds=3))
3 секунды назад
>>> humanize.i18n.deactivate()
>>> print humanize.naturaltime(datetime.timedelta(seconds=3))
3 seconds ago

You can pass additional parameter *path* to :func:`activate` to specify a path to
search locales in. ::

>>> humanize.i18n.activate('pt_BR')
IOError: [Errno 2] No translation file found for domain: 'humanize'
>>> humanize.i18n.activate('pt_BR', path='path/to/my/portuguese/translation/')
<gettext.GNUTranslations instance ...>

How to add new phrases to existing locale files ::

$ xgettext -o humanize.pot -k'_' -k'N_' -k'P_:1c,2' -l python humanize/*.py # extract new phrases
$ msgmerge -U humanize/locale/ru_RU/LC_MESSAGES/humanize.po humanize.pot # add them to locale files
$ msgfmt --check -o humanize/locale/ru_RU/LC_MESSAGES/humanize{.mo,.po} # compile to binary .mo

How to add new locale ::

$ msginit -i humanize.pot -o humanize/locale/<locale name>/LC_MESSAGES/humanize.po --locale <locale name>

Where <locale name> is locale abbreviation, eg 'en_GB', 'pt_BR' or just 'ru', 'fr' etc.


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

humanize-k-0.5.2.tar.gz (18.7 kB view details)

Uploaded Source

Built Distribution

humanize_k-0.5.2-py2-none-any.whl (33.0 kB view details)

Uploaded Python 2

File details

Details for the file humanize-k-0.5.2.tar.gz.

File metadata

  • Download URL: humanize-k-0.5.2.tar.gz
  • Upload date:
  • Size: 18.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for humanize-k-0.5.2.tar.gz
Algorithm Hash digest
SHA256 bf9cb0ce7d3a5d1f39c65bb684165c88858feeffa848c11e00eea0820ce4a492
MD5 2c0732e325488eb39b1301d1edb3398b
BLAKE2b-256 07a0dc9bd45a37738f3b3b703dd1ae99ca54670d4a357cab433e5325ff54cf5b

See more details on using hashes here.

File details

Details for the file humanize_k-0.5.2-py2-none-any.whl.

File metadata

File hashes

Hashes for humanize_k-0.5.2-py2-none-any.whl
Algorithm Hash digest
SHA256 04b3d589e2e45e69bc9c564bbf2dfbe7f7215a19bed7fb8c0ca4bc287ddd4573
MD5 94316d9a648d5fd254c1b75d72954cef
BLAKE2b-256 15b8cf3f918644482f10df7ce5fb67a04b894e95b0024aaa50a930aa97260b4e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page