hebrew-numbers


Namehebrew-numbers JSON
Version 0.2.0 PyPI version JSON
download
home_pageNone
SummaryConvert numbers to Hebrew.
upload_time2025-09-03 17:06:18
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseNone
keywords conversion grammar hebrew i18n jinja2 language linguistics localization nlp numbers
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # hebrew-numbers

[![Tests][tests-badge]][tests-link]
[![uv][uv-badge]][uv-link]
[![Ruff][ruff-badge]][ruff-link]
[![Black][black-badge]][black-link]
[![codecov][codecov-badge]][codecov-link]
\
[![PyPI version][pypi-version-badge]][pypi-link]
[![PyPI platforms][pypi-platforms-badge]][pypi-link]
[![Total downloads][pepy-badge]][pepy-link]
\
[![Made Using tsvikas/python-template][template-badge]][template-link]
[![GitHub Discussion][github-discussions-badge]][github-discussions-link]
[![PRs Welcome][prs-welcome-badge]][prs-welcome-link]

## Overview

This library provides a solution for working with Hebrew numbers in various contexts.
Hebrew has unique rules for number representation that vary based on gender, definiteness, and usage context.
This library simplify these complexities by providing functions for converting numerical values to their proper Hebrew textual representation.

## Install

Install the package using pip (or uv, poetry, etc.):

```bash
pip install hebrew-numbers
```

## Usage

### Indefinite Number -- מספר סתמי

When counting without specific nouns, but rather in a general sense, we use the indefinite number.

```pycon
>>> from hebrew_numbers import indefinite_number
>>> [indefinite_number(n) for n in [1, 2, 3]]
['אחת', 'שתיים', 'שָלוש']
>>> indefinite_number(0)
'אפס'
>>> indefinite_number(-3)
'מינוס שָלוש'
>>> indefinite_number(1234567890)
'מיליארד מאתיים שלושים וארבעה מיליון חמש מאות שישים ושבעה אלף שמונֶה מאות ותשעים'

```

### Ordinal Number -- מספר סודר

A number that describes the position of an object in a series is called an ordinal number.
This number can be masculine (זכר) or feminine (נקבה).

```pycon
>>> from hebrew_numbers import ordinal_number
>>> [ordinal_number(n, "M") for n in [1, 2, 3]]
['ראשון', 'שני', 'שלישי']
>>> [ordinal_number(n, "F") for n in [1, 2, 3]]
['ראשונה', 'שנייה', 'שלישית']

```

### Cardinal Number -- מספר מונה

#### Usage with noun

Cardinal numbers are used to indicate quantities. Their form depends on the following factors:

- The gender of the noun (masculine or feminine).
- Whether the noun is definite (מיודע) or indefinite (סתמי).

To specify a quantity with a noun, use `count_noun(n, singular_form, plural_form, gender, definite)`.

| Number | Masculine, Indefinite                                | Masculine, Definite                                   | Feminine, Indefinite                                  | Feminine, Definite                                     |
| ------ | ---------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ------------------------------------------------------ |
| `n`    | `count_noun(n, "ילד", "ילדים", "M", definite=False)` | `count_noun(n, "הילד", "הילדים", "M", definite=True)` | `count_noun(n, "ילדה", "ילדות", "F", definite=False)` | `count_noun(n, "הילדה", "הילדות", "F", definite=True)` |
| 1      | ילד אֶחָד                                              | הילד האֶחָד                                             | ילדה אחת                                              | הילדה האחת                                             |
| 2      | שני ילדים                                            | שני הילדים                                            | שתי ילדות                                             | שתי הילדות                                             |
| 3      | שלושה ילדים                                          | שלושת הילדים                                          | שָלוש ילדות                                            | שְלוש הילדות                                            |
| 22     | עשרים ושניים ילדים                                   | עשרים ושניים הילדים                                   | עשרים ושתיים ילדות                                    | עשרים ושתיים הילדות                                    |

If you only need the numerical prefix, use `count_prefix(n, gender, definite)`.

#### Absolute and Construct Forms

The number itself can be masculine (זכר) or feminine (נקבה), and absolute (נפרד) or construct (נסמך).
If you know the gender and construct state, you can the number itself with `cardinal_number(n, gender, construct)`

| Number | Masculine, Absolute                        | Masculine, Construct                      | Feminine, Absolute                         | Feminine, Construct                       |
| ------ | ------------------------------------------ | ----------------------------------------- | ------------------------------------------ | ----------------------------------------- |
| `n`    | `cardinal_number(n, "M", construct=False)` | `cardinal_number(n, "M", construct=True)` | `cardinal_number(n, "F", construct=False)` | `cardinal_number(n, "F", construct=True)` |
| 1      | אֶחָד                                        | אַחַד                                       | אחת                                        | אחת                                       |
| 2      | שניים                                      | שני                                       | שתיים                                      | שתי                                       |
| 3      | שלושה                                      | שלושת                                     | שָלוש                                       | שְלוש                                      |
| 22     | עשרים ושניים                               | עשרים ושניים                              | עשרים ושתיים                               | עשרים ושתיים                              |

##### Notes

- The indefinite number is the feminine-absolute form.
- The form of the number following "פי" (times/multiplied by) to be in the masculine-absolute form: פי שניים, פי שלושה, פי ארבעה.
- Use the masculine-absolute form to indicate the days of the month: אחד בכסלו, עשרה בטבת, אחד באפריל, שניים ביוני.

## Jinja2 Templates

The library includes a Jinja2 extension for using Hebrew numbers in templates.

### Installation

Install with Jinja2 support:

```bash
pip install hebrew-numbers[jinja]
```

### Usage

```pycon
>>> from jinja2 import Environment
>>> from hebrew_numbers.jinja import HebrewNumbersExtension
>>> env = Environment(extensions=[HebrewNumbersExtension])
>>> template = env.from_string("מקום {{ 1 | hebrew_ordinal('masculine') }}")
>>> template.render()
'מקום ראשון'
>>> template = env.from_string("{{ 5300 | hebrew_count('מניה', 'מניות', 'f') }}")
>>> template.render()
'חמשת אלפים ושְלוש מאות מניות'
>>> template = env.from_string("{{ 15000 | hebrew_prefix('m') }}")
>>> template.render()
'חמישה־עשר אלף'

```

### Available Filters

| Filter                                                   | Description                     | Example                                                              |
| -------------------------------------------------------- | ------------------------------- | -------------------------------------------------------------------- |
| `hebrew_count(singular, plural, gender, definite=False)` | Count nouns                     | `{{ 5 \| hebrew_count('ספר', 'ספרים', 'masculine') }}` → חמישה ספרים |
| `hebrew_prefix(gender, definite=False)`                  | Number prefix only              | `{{ 5 \| hebrew_prefix('m') }}` → חמישה                              |
| `hebrew_ordinal(gender)`                                 | Ordinal numbers                 | `{{ 5 \| hebrew_ordinal('m') }}` → חמישי                             |
| `hebrew_indefinite`                                      | Indefinite number               | `{{ 5 \| hebrew_indefinite }}` → חמש                                 |
| `hebrew_cardinal(gender, construct='absolute')`          | Cardinal number (tricky to use) | `{{ 5 \| hebrew_cardinal('m', 'construct') }}` → חמשת                |

#### Gender Parameter

All English filters accept flexible gender strings:

- **Masculine**: `'masculine'`, `'male'`, `'m'`
- **Feminine**: `'feminine'`, `'female'`, `'f'`

### Hebrew-Named Filters

For Hebrew-speaking developers, the extension also provides Hebrew-named filters that accept Hebrew parameter names:

```pycon
>>> # Hebrew filter names with Hebrew parameters
>>> template = env.from_string("מקום {{ 1 | מספר_סודר('ז') }}")
>>> template.render()
'מקום ראשון'
>>> template = env.from_string("{{ 5300 | כמות_של('מניה', 'מניות', 'נ') }}")
>>> template.render()
'חמשת אלפים ושְלוש מאות מניות'
>>> template = env.from_string("{{ 15000 | כמות('ז') }}")
>>> template.render()
'חמישה־עשר אלף'
>>> # Hebrew boolean values for מיודע parameter
>>> template = env.from_string("{{ 3 | כמות_של('המחברת', 'המחברות', 'נ', מיודע='כן') }}")
>>> template.render()
'שְלוש המחברות'

```

| Hebrew Filter                          | English Equivalent  | Description        | Example                                                 |
| -------------------------------------- | ------------------- | ------------------ | ------------------------------------------------------- |
| `כמות_של(יחיד, רבים, מין, מיודע='לא')` | `hebrew_count`      | Count nouns        | `{{ 5 \| כמות_של('ספר', 'ספרים', 'ז') }}` → חמישה ספרים |
| `כמות(מין, מיודע='לא')`                | `hebrew_prefix`     | Number prefix only | `{{ 5 \| כמות('ז') }}` → חמישה                          |
| `מספר_סודר(מין)`                       | `hebrew_ordinal`    | Ordinal number     | `{{ 5 \| מספר_סודר('ז') }}` → חמישי                     |
| `מספר_סתמי`                            | `hebrew_indefinite` | Indefinite number  | `{{ 5 \| מספר_סתמי }}` → חמש                            |
| `מספר_מונה(מין, מצב='נפרד')`           | `hebrew_cardinal`   | Cardinal number    | `{{ 5 \| מספר_מונה('ז', 'נסמך') }}` → חמשת              |

#### Hebrew Parameters

Hebrew filters accept Hebrew parameter names:

- **מין (Gender)**:
  - Masculine: `'ז'`, `'זכר'`, `'זכרי'`
  - Feminine: `'נ'`, `'נקבה'`, `'נקבי'`
- **מצב (Construct State)**: `'נפרד'` (absolute), `'נסמך'` (construct)
- **מיודע (Definite)**: `'כן'` (definite), `'לא'` (indefinite), or `True`/`False`

## Contributing

Interested in contributing?
See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and guideline.

[black-badge]: https://img.shields.io/badge/code%20style-black-000000.svg
[black-link]: https://github.com/psf/black
[codecov-badge]: https://codecov.io/gh/tsvikas/hebrew-numbers/graph/badge.svg
[codecov-link]: https://codecov.io/gh/tsvikas/hebrew-numbers
[github-discussions-badge]: https://img.shields.io/static/v1?label=Discussions&message=Ask&color=blue&logo=github
[github-discussions-link]: https://github.com/tsvikas/hebrew-numbers/discussions
[pepy-badge]: https://img.shields.io/pepy/dt/hebrew-numbers
[pepy-link]: https://pepy.tech/project/hebrew-numbers
[prs-welcome-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg
[prs-welcome-link]: https://opensource.guide/how-to-contribute/
[pypi-link]: https://pypi.org/project/hebrew-numbers/
[pypi-platforms-badge]: https://img.shields.io/pypi/pyversions/hebrew-numbers
[pypi-version-badge]: https://img.shields.io/pypi/v/hebrew-numbers
[ruff-badge]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json
[ruff-link]: https://github.com/astral-sh/ruff
[template-badge]: https://img.shields.io/badge/%F0%9F%9A%80_Made_Using-tsvikas%2Fpython--template-gold
[template-link]: https://github.com/tsvikas/python-template
[tests-badge]: https://github.com/tsvikas/hebrew-numbers/actions/workflows/ci.yml/badge.svg
[tests-link]: https://github.com/tsvikas/hebrew-numbers/actions/workflows/ci.yml
[uv-badge]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json
[uv-link]: https://github.com/astral-sh/uv

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "hebrew-numbers",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "conversion, grammar, hebrew, i18n, jinja2, language, linguistics, localization, nlp, numbers",
    "author": null,
    "author_email": "Tsvika Shapira <tsvikas@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/0e/00/7d7a89318873c1e3b6e6f23c640fa0394c463498e10330c1dcb085b919a2/hebrew_numbers-0.2.0.tar.gz",
    "platform": null,
    "description": "# hebrew-numbers\n\n[![Tests][tests-badge]][tests-link]\n[![uv][uv-badge]][uv-link]\n[![Ruff][ruff-badge]][ruff-link]\n[![Black][black-badge]][black-link]\n[![codecov][codecov-badge]][codecov-link]\n\\\n[![PyPI version][pypi-version-badge]][pypi-link]\n[![PyPI platforms][pypi-platforms-badge]][pypi-link]\n[![Total downloads][pepy-badge]][pepy-link]\n\\\n[![Made Using tsvikas/python-template][template-badge]][template-link]\n[![GitHub Discussion][github-discussions-badge]][github-discussions-link]\n[![PRs Welcome][prs-welcome-badge]][prs-welcome-link]\n\n## Overview\n\nThis library provides a solution for working with Hebrew numbers in various contexts.\nHebrew has unique rules for number representation that vary based on gender, definiteness, and usage context.\nThis library simplify these complexities by providing functions for converting numerical values to their proper Hebrew textual representation.\n\n## Install\n\nInstall the package using pip (or uv, poetry, etc.):\n\n```bash\npip install hebrew-numbers\n```\n\n## Usage\n\n### Indefinite Number -- \u05de\u05e1\u05e4\u05e8 \u05e1\u05ea\u05de\u05d9\n\nWhen counting without specific nouns, but rather in a general sense, we use the indefinite number.\n\n```pycon\n>>> from hebrew_numbers import indefinite_number\n>>> [indefinite_number(n) for n in [1, 2, 3]]\n['\u05d0\u05d7\u05ea', '\u05e9\u05ea\u05d9\u05d9\u05dd', '\u05e9\u05b8\u05dc\u05d5\u05e9']\n>>> indefinite_number(0)\n'\u05d0\u05e4\u05e1'\n>>> indefinite_number(-3)\n'\u05de\u05d9\u05e0\u05d5\u05e1 \u05e9\u05b8\u05dc\u05d5\u05e9'\n>>> indefinite_number(1234567890)\n'\u05de\u05d9\u05dc\u05d9\u05d0\u05e8\u05d3 \u05de\u05d0\u05ea\u05d9\u05d9\u05dd \u05e9\u05dc\u05d5\u05e9\u05d9\u05dd \u05d5\u05d0\u05e8\u05d1\u05e2\u05d4 \u05de\u05d9\u05dc\u05d9\u05d5\u05df \u05d7\u05de\u05e9 \u05de\u05d0\u05d5\u05ea \u05e9\u05d9\u05e9\u05d9\u05dd \u05d5\u05e9\u05d1\u05e2\u05d4 \u05d0\u05dc\u05e3 \u05e9\u05de\u05d5\u05e0\u05b6\u05d4 \u05de\u05d0\u05d5\u05ea \u05d5\u05ea\u05e9\u05e2\u05d9\u05dd'\n\n```\n\n### Ordinal Number -- \u05de\u05e1\u05e4\u05e8 \u05e1\u05d5\u05d3\u05e8\n\nA number that describes the position of an object in a series is called an ordinal number.\nThis number can be masculine (\u05d6\u05db\u05e8) or feminine (\u05e0\u05e7\u05d1\u05d4).\n\n```pycon\n>>> from hebrew_numbers import ordinal_number\n>>> [ordinal_number(n, \"M\") for n in [1, 2, 3]]\n['\u05e8\u05d0\u05e9\u05d5\u05df', '\u05e9\u05e0\u05d9', '\u05e9\u05dc\u05d9\u05e9\u05d9']\n>>> [ordinal_number(n, \"F\") for n in [1, 2, 3]]\n['\u05e8\u05d0\u05e9\u05d5\u05e0\u05d4', '\u05e9\u05e0\u05d9\u05d9\u05d4', '\u05e9\u05dc\u05d9\u05e9\u05d9\u05ea']\n\n```\n\n### Cardinal Number -- \u05de\u05e1\u05e4\u05e8 \u05de\u05d5\u05e0\u05d4\n\n#### Usage with noun\n\nCardinal numbers are used to indicate quantities. Their form depends on the following factors:\n\n- The gender of the noun (masculine or feminine).\n- Whether the noun is definite (\u05de\u05d9\u05d5\u05d3\u05e2) or indefinite (\u05e1\u05ea\u05de\u05d9).\n\nTo specify a quantity with a noun, use `count_noun(n, singular_form, plural_form, gender, definite)`.\n\n| Number | Masculine, Indefinite                                | Masculine, Definite                                   | Feminine, Indefinite                                  | Feminine, Definite                                     |\n| ------ | ---------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ------------------------------------------------------ |\n| `n`    | `count_noun(n, \"\u05d9\u05dc\u05d3\", \"\u05d9\u05dc\u05d3\u05d9\u05dd\", \"M\", definite=False)` | `count_noun(n, \"\u05d4\u05d9\u05dc\u05d3\", \"\u05d4\u05d9\u05dc\u05d3\u05d9\u05dd\", \"M\", definite=True)` | `count_noun(n, \"\u05d9\u05dc\u05d3\u05d4\", \"\u05d9\u05dc\u05d3\u05d5\u05ea\", \"F\", definite=False)` | `count_noun(n, \"\u05d4\u05d9\u05dc\u05d3\u05d4\", \"\u05d4\u05d9\u05dc\u05d3\u05d5\u05ea\", \"F\", definite=True)` |\n| 1      | \u05d9\u05dc\u05d3 \u05d0\u05b6\u05d7\u05b8\u05d3                                              | \u05d4\u05d9\u05dc\u05d3 \u05d4\u05d0\u05b6\u05d7\u05b8\u05d3                                             | \u05d9\u05dc\u05d3\u05d4 \u05d0\u05d7\u05ea                                              | \u05d4\u05d9\u05dc\u05d3\u05d4 \u05d4\u05d0\u05d7\u05ea                                             |\n| 2      | \u05e9\u05e0\u05d9 \u05d9\u05dc\u05d3\u05d9\u05dd                                            | \u05e9\u05e0\u05d9 \u05d4\u05d9\u05dc\u05d3\u05d9\u05dd                                            | \u05e9\u05ea\u05d9 \u05d9\u05dc\u05d3\u05d5\u05ea                                             | \u05e9\u05ea\u05d9 \u05d4\u05d9\u05dc\u05d3\u05d5\u05ea                                             |\n| 3      | \u05e9\u05dc\u05d5\u05e9\u05d4 \u05d9\u05dc\u05d3\u05d9\u05dd                                          | \u05e9\u05dc\u05d5\u05e9\u05ea \u05d4\u05d9\u05dc\u05d3\u05d9\u05dd                                          | \u05e9\u05b8\u05dc\u05d5\u05e9 \u05d9\u05dc\u05d3\u05d5\u05ea                                            | \u05e9\u05b0\u05dc\u05d5\u05e9 \u05d4\u05d9\u05dc\u05d3\u05d5\u05ea                                            |\n| 22     | \u05e2\u05e9\u05e8\u05d9\u05dd \u05d5\u05e9\u05e0\u05d9\u05d9\u05dd \u05d9\u05dc\u05d3\u05d9\u05dd                                   | \u05e2\u05e9\u05e8\u05d9\u05dd \u05d5\u05e9\u05e0\u05d9\u05d9\u05dd \u05d4\u05d9\u05dc\u05d3\u05d9\u05dd                                   | \u05e2\u05e9\u05e8\u05d9\u05dd \u05d5\u05e9\u05ea\u05d9\u05d9\u05dd \u05d9\u05dc\u05d3\u05d5\u05ea                                    | \u05e2\u05e9\u05e8\u05d9\u05dd \u05d5\u05e9\u05ea\u05d9\u05d9\u05dd \u05d4\u05d9\u05dc\u05d3\u05d5\u05ea                                    |\n\nIf you only need the numerical prefix, use `count_prefix(n, gender, definite)`.\n\n#### Absolute and Construct Forms\n\nThe number itself can be masculine (\u05d6\u05db\u05e8) or feminine (\u05e0\u05e7\u05d1\u05d4), and absolute (\u05e0\u05e4\u05e8\u05d3) or construct (\u05e0\u05e1\u05de\u05da).\nIf you know the gender and construct state, you can the number itself with `cardinal_number(n, gender, construct)`\n\n| Number | Masculine, Absolute                        | Masculine, Construct                      | Feminine, Absolute                         | Feminine, Construct                       |\n| ------ | ------------------------------------------ | ----------------------------------------- | ------------------------------------------ | ----------------------------------------- |\n| `n`    | `cardinal_number(n, \"M\", construct=False)` | `cardinal_number(n, \"M\", construct=True)` | `cardinal_number(n, \"F\", construct=False)` | `cardinal_number(n, \"F\", construct=True)` |\n| 1      | \u05d0\u05b6\u05d7\u05b8\u05d3                                        | \u05d0\u05b7\u05d7\u05b7\u05d3                                       | \u05d0\u05d7\u05ea                                        | \u05d0\u05d7\u05ea                                       |\n| 2      | \u05e9\u05e0\u05d9\u05d9\u05dd                                      | \u05e9\u05e0\u05d9                                       | \u05e9\u05ea\u05d9\u05d9\u05dd                                      | \u05e9\u05ea\u05d9                                       |\n| 3      | \u05e9\u05dc\u05d5\u05e9\u05d4                                      | \u05e9\u05dc\u05d5\u05e9\u05ea                                     | \u05e9\u05b8\u05dc\u05d5\u05e9                                       | \u05e9\u05b0\u05dc\u05d5\u05e9                                      |\n| 22     | \u05e2\u05e9\u05e8\u05d9\u05dd \u05d5\u05e9\u05e0\u05d9\u05d9\u05dd                               | \u05e2\u05e9\u05e8\u05d9\u05dd \u05d5\u05e9\u05e0\u05d9\u05d9\u05dd                              | \u05e2\u05e9\u05e8\u05d9\u05dd \u05d5\u05e9\u05ea\u05d9\u05d9\u05dd                               | \u05e2\u05e9\u05e8\u05d9\u05dd \u05d5\u05e9\u05ea\u05d9\u05d9\u05dd                              |\n\n##### Notes\n\n- The indefinite number is the feminine-absolute form.\n- The form of the number following \"\u05e4\u05d9\" (times/multiplied by) to be in the masculine-absolute form: \u05e4\u05d9 \u05e9\u05e0\u05d9\u05d9\u05dd, \u05e4\u05d9 \u05e9\u05dc\u05d5\u05e9\u05d4, \u05e4\u05d9 \u05d0\u05e8\u05d1\u05e2\u05d4.\n- Use the masculine-absolute form to indicate the days of the month: \u05d0\u05d7\u05d3 \u05d1\u05db\u05e1\u05dc\u05d5, \u05e2\u05e9\u05e8\u05d4 \u05d1\u05d8\u05d1\u05ea, \u05d0\u05d7\u05d3 \u05d1\u05d0\u05e4\u05e8\u05d9\u05dc, \u05e9\u05e0\u05d9\u05d9\u05dd \u05d1\u05d9\u05d5\u05e0\u05d9.\n\n## Jinja2 Templates\n\nThe library includes a Jinja2 extension for using Hebrew numbers in templates.\n\n### Installation\n\nInstall with Jinja2 support:\n\n```bash\npip install hebrew-numbers[jinja]\n```\n\n### Usage\n\n```pycon\n>>> from jinja2 import Environment\n>>> from hebrew_numbers.jinja import HebrewNumbersExtension\n>>> env = Environment(extensions=[HebrewNumbersExtension])\n>>> template = env.from_string(\"\u05de\u05e7\u05d5\u05dd {{ 1 | hebrew_ordinal('masculine') }}\")\n>>> template.render()\n'\u05de\u05e7\u05d5\u05dd \u05e8\u05d0\u05e9\u05d5\u05df'\n>>> template = env.from_string(\"{{ 5300 | hebrew_count('\u05de\u05e0\u05d9\u05d4', '\u05de\u05e0\u05d9\u05d5\u05ea', 'f') }}\")\n>>> template.render()\n'\u05d7\u05de\u05e9\u05ea \u05d0\u05dc\u05e4\u05d9\u05dd \u05d5\u05e9\u05b0\u05dc\u05d5\u05e9 \u05de\u05d0\u05d5\u05ea \u05de\u05e0\u05d9\u05d5\u05ea'\n>>> template = env.from_string(\"{{ 15000 | hebrew_prefix('m') }}\")\n>>> template.render()\n'\u05d7\u05de\u05d9\u05e9\u05d4\u05be\u05e2\u05e9\u05e8 \u05d0\u05dc\u05e3'\n\n```\n\n### Available Filters\n\n| Filter                                                   | Description                     | Example                                                              |\n| -------------------------------------------------------- | ------------------------------- | -------------------------------------------------------------------- |\n| `hebrew_count(singular, plural, gender, definite=False)` | Count nouns                     | `{{ 5 \\| hebrew_count('\u05e1\u05e4\u05e8', '\u05e1\u05e4\u05e8\u05d9\u05dd', 'masculine') }}` \u2192 \u05d7\u05de\u05d9\u05e9\u05d4 \u05e1\u05e4\u05e8\u05d9\u05dd |\n| `hebrew_prefix(gender, definite=False)`                  | Number prefix only              | `{{ 5 \\| hebrew_prefix('m') }}` \u2192 \u05d7\u05de\u05d9\u05e9\u05d4                              |\n| `hebrew_ordinal(gender)`                                 | Ordinal numbers                 | `{{ 5 \\| hebrew_ordinal('m') }}` \u2192 \u05d7\u05de\u05d9\u05e9\u05d9                             |\n| `hebrew_indefinite`                                      | Indefinite number               | `{{ 5 \\| hebrew_indefinite }}` \u2192 \u05d7\u05de\u05e9                                 |\n| `hebrew_cardinal(gender, construct='absolute')`          | Cardinal number (tricky to use) | `{{ 5 \\| hebrew_cardinal('m', 'construct') }}` \u2192 \u05d7\u05de\u05e9\u05ea                |\n\n#### Gender Parameter\n\nAll English filters accept flexible gender strings:\n\n- **Masculine**: `'masculine'`, `'male'`, `'m'`\n- **Feminine**: `'feminine'`, `'female'`, `'f'`\n\n### Hebrew-Named Filters\n\nFor Hebrew-speaking developers, the extension also provides Hebrew-named filters that accept Hebrew parameter names:\n\n```pycon\n>>> # Hebrew filter names with Hebrew parameters\n>>> template = env.from_string(\"\u05de\u05e7\u05d5\u05dd {{ 1 | \u05de\u05e1\u05e4\u05e8_\u05e1\u05d5\u05d3\u05e8('\u05d6') }}\")\n>>> template.render()\n'\u05de\u05e7\u05d5\u05dd \u05e8\u05d0\u05e9\u05d5\u05df'\n>>> template = env.from_string(\"{{ 5300 | \u05db\u05de\u05d5\u05ea_\u05e9\u05dc('\u05de\u05e0\u05d9\u05d4', '\u05de\u05e0\u05d9\u05d5\u05ea', '\u05e0') }}\")\n>>> template.render()\n'\u05d7\u05de\u05e9\u05ea \u05d0\u05dc\u05e4\u05d9\u05dd \u05d5\u05e9\u05b0\u05dc\u05d5\u05e9 \u05de\u05d0\u05d5\u05ea \u05de\u05e0\u05d9\u05d5\u05ea'\n>>> template = env.from_string(\"{{ 15000 | \u05db\u05de\u05d5\u05ea('\u05d6') }}\")\n>>> template.render()\n'\u05d7\u05de\u05d9\u05e9\u05d4\u05be\u05e2\u05e9\u05e8 \u05d0\u05dc\u05e3'\n>>> # Hebrew boolean values for \u05de\u05d9\u05d5\u05d3\u05e2 parameter\n>>> template = env.from_string(\"{{ 3 | \u05db\u05de\u05d5\u05ea_\u05e9\u05dc('\u05d4\u05de\u05d7\u05d1\u05e8\u05ea', '\u05d4\u05de\u05d7\u05d1\u05e8\u05d5\u05ea', '\u05e0', \u05de\u05d9\u05d5\u05d3\u05e2='\u05db\u05df') }}\")\n>>> template.render()\n'\u05e9\u05b0\u05dc\u05d5\u05e9 \u05d4\u05de\u05d7\u05d1\u05e8\u05d5\u05ea'\n\n```\n\n| Hebrew Filter                          | English Equivalent  | Description        | Example                                                 |\n| -------------------------------------- | ------------------- | ------------------ | ------------------------------------------------------- |\n| `\u05db\u05de\u05d5\u05ea_\u05e9\u05dc(\u05d9\u05d7\u05d9\u05d3, \u05e8\u05d1\u05d9\u05dd, \u05de\u05d9\u05df, \u05de\u05d9\u05d5\u05d3\u05e2='\u05dc\u05d0')` | `hebrew_count`      | Count nouns        | `{{ 5 \\| \u05db\u05de\u05d5\u05ea_\u05e9\u05dc('\u05e1\u05e4\u05e8', '\u05e1\u05e4\u05e8\u05d9\u05dd', '\u05d6') }}` \u2192 \u05d7\u05de\u05d9\u05e9\u05d4 \u05e1\u05e4\u05e8\u05d9\u05dd |\n| `\u05db\u05de\u05d5\u05ea(\u05de\u05d9\u05df, \u05de\u05d9\u05d5\u05d3\u05e2='\u05dc\u05d0')`                | `hebrew_prefix`     | Number prefix only | `{{ 5 \\| \u05db\u05de\u05d5\u05ea('\u05d6') }}` \u2192 \u05d7\u05de\u05d9\u05e9\u05d4                          |\n| `\u05de\u05e1\u05e4\u05e8_\u05e1\u05d5\u05d3\u05e8(\u05de\u05d9\u05df)`                       | `hebrew_ordinal`    | Ordinal number     | `{{ 5 \\| \u05de\u05e1\u05e4\u05e8_\u05e1\u05d5\u05d3\u05e8('\u05d6') }}` \u2192 \u05d7\u05de\u05d9\u05e9\u05d9                     |\n| `\u05de\u05e1\u05e4\u05e8_\u05e1\u05ea\u05de\u05d9`                            | `hebrew_indefinite` | Indefinite number  | `{{ 5 \\| \u05de\u05e1\u05e4\u05e8_\u05e1\u05ea\u05de\u05d9 }}` \u2192 \u05d7\u05de\u05e9                            |\n| `\u05de\u05e1\u05e4\u05e8_\u05de\u05d5\u05e0\u05d4(\u05de\u05d9\u05df, \u05de\u05e6\u05d1='\u05e0\u05e4\u05e8\u05d3')`           | `hebrew_cardinal`   | Cardinal number    | `{{ 5 \\| \u05de\u05e1\u05e4\u05e8_\u05de\u05d5\u05e0\u05d4('\u05d6', '\u05e0\u05e1\u05de\u05da') }}` \u2192 \u05d7\u05de\u05e9\u05ea              |\n\n#### Hebrew Parameters\n\nHebrew filters accept Hebrew parameter names:\n\n- **\u05de\u05d9\u05df (Gender)**:\n  - Masculine: `'\u05d6'`, `'\u05d6\u05db\u05e8'`, `'\u05d6\u05db\u05e8\u05d9'`\n  - Feminine: `'\u05e0'`, `'\u05e0\u05e7\u05d1\u05d4'`, `'\u05e0\u05e7\u05d1\u05d9'`\n- **\u05de\u05e6\u05d1 (Construct State)**: `'\u05e0\u05e4\u05e8\u05d3'` (absolute), `'\u05e0\u05e1\u05de\u05da'` (construct)\n- **\u05de\u05d9\u05d5\u05d3\u05e2 (Definite)**: `'\u05db\u05df'` (definite), `'\u05dc\u05d0'` (indefinite), or `True`/`False`\n\n## Contributing\n\nInterested in contributing?\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and guideline.\n\n[black-badge]: https://img.shields.io/badge/code%20style-black-000000.svg\n[black-link]: https://github.com/psf/black\n[codecov-badge]: https://codecov.io/gh/tsvikas/hebrew-numbers/graph/badge.svg\n[codecov-link]: https://codecov.io/gh/tsvikas/hebrew-numbers\n[github-discussions-badge]: https://img.shields.io/static/v1?label=Discussions&message=Ask&color=blue&logo=github\n[github-discussions-link]: https://github.com/tsvikas/hebrew-numbers/discussions\n[pepy-badge]: https://img.shields.io/pepy/dt/hebrew-numbers\n[pepy-link]: https://pepy.tech/project/hebrew-numbers\n[prs-welcome-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg\n[prs-welcome-link]: https://opensource.guide/how-to-contribute/\n[pypi-link]: https://pypi.org/project/hebrew-numbers/\n[pypi-platforms-badge]: https://img.shields.io/pypi/pyversions/hebrew-numbers\n[pypi-version-badge]: https://img.shields.io/pypi/v/hebrew-numbers\n[ruff-badge]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json\n[ruff-link]: https://github.com/astral-sh/ruff\n[template-badge]: https://img.shields.io/badge/%F0%9F%9A%80_Made_Using-tsvikas%2Fpython--template-gold\n[template-link]: https://github.com/tsvikas/python-template\n[tests-badge]: https://github.com/tsvikas/hebrew-numbers/actions/workflows/ci.yml/badge.svg\n[tests-link]: https://github.com/tsvikas/hebrew-numbers/actions/workflows/ci.yml\n[uv-badge]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json\n[uv-link]: https://github.com/astral-sh/uv\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Convert numbers to Hebrew.",
    "version": "0.2.0",
    "project_urls": {
        "changelog": "https://github.com/tsvikas/hebrew-numbers/blob/main/CHANGELOG.md",
        "issues": "https://github.com/tsvikas/hebrew-numbers/issues",
        "source": "https://github.com/tsvikas/hebrew-numbers"
    },
    "split_keywords": [
        "conversion",
        " grammar",
        " hebrew",
        " i18n",
        " jinja2",
        " language",
        " linguistics",
        " localization",
        " nlp",
        " numbers"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d13565ca7e343cb268faa703e5c7e2e3af945ad29ac80ac9d121e0300e8fe56f",
                "md5": "fae99c9ea5b3a589546ee2ca2632d431",
                "sha256": "6b39ff9a15fb1d7a08cea9e62926baa0ed6e72f42d391bb8ed28c3dba88f26a4"
            },
            "downloads": -1,
            "filename": "hebrew_numbers-0.2.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "fae99c9ea5b3a589546ee2ca2632d431",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 12248,
            "upload_time": "2025-09-03T17:06:17",
            "upload_time_iso_8601": "2025-09-03T17:06:17.461415Z",
            "url": "https://files.pythonhosted.org/packages/d1/35/65ca7e343cb268faa703e5c7e2e3af945ad29ac80ac9d121e0300e8fe56f/hebrew_numbers-0.2.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0e007d7a89318873c1e3b6e6f23c640fa0394c463498e10330c1dcb085b919a2",
                "md5": "36c66e369afeb28b3f1572abe17e088f",
                "sha256": "113049fd97768c230f29b444bb1e02401eb52d3971038a4d066aa0d497d90462"
            },
            "downloads": -1,
            "filename": "hebrew_numbers-0.2.0.tar.gz",
            "has_sig": false,
            "md5_digest": "36c66e369afeb28b3f1572abe17e088f",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 114837,
            "upload_time": "2025-09-03T17:06:18",
            "upload_time_iso_8601": "2025-09-03T17:06:18.542157Z",
            "url": "https://files.pythonhosted.org/packages/0e/00/7d7a89318873c1e3b6e6f23c640fa0394c463498e10330c1dcb085b919a2/hebrew_numbers-0.2.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-09-03 17:06:18",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "tsvikas",
    "github_project": "hebrew-numbers",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "hebrew-numbers"
}
        
Elapsed time: 1.28665s