Skip to main content

python humanize utilities

Project description

humanize
--------

<!-- [![build status](https://secure.travis-ci.org/jmoiron/humanize.png?branch=master)](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:

- `de_DE`
- `fa_IR`
- `fi_FI`
- `fr_FR`
- `id_ID`
- `ja_JP`
- `ko_KR`
- `nl_NL`
- `pt_BR`
- `ru_RU`
- `sk_SK`
- `tr_TR`
- `vi_VI`
- `zh_CN`

usage
-----

#### Integer humanization

```py
>>> 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

```py
>>> 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

```py
>>> 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

```py
>>> 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

```py
>>> 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 `activate` to specify a path to
search locales in.

```py
>>> 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 ::

```shell
$ 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:

```shell
$ 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

lucky-humanize-0.5.4.tar.gz (24.1 kB view details)

Uploaded Source

File details

Details for the file lucky-humanize-0.5.4.tar.gz.

File metadata

  • Download URL: lucky-humanize-0.5.4.tar.gz
  • Upload date:
  • Size: 24.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/3.6

File hashes

Hashes for lucky-humanize-0.5.4.tar.gz
Algorithm Hash digest
SHA256 774b69a59fa524e288ae3f4a00f2c7ee5e1d8fb4901847958b04206e2265737b
MD5 31016aae8c334d8397a49842ca29cb14
BLAKE2b-256 dc039ddebbe6ae28bef825104c35719bb7e9f4d4b8458f7684c4cd0dbc9c9c89

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