NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #723 most downloaded on PyPI
Correctly generate plurals, singular nouns, ordinals, indefinite articles
Last release 2 years ago
no release in 18 months
Release timing varies
gaps range from 2 weeks to 9 months
Most releases are documented
notes for 49 of 55 stable releases
Nothing withdrawn
no release was ever pulled
16 years old
55 releases · first in 2010
Updated ast classes for Python 3.14 compatibility.
Updated ast classes for Python 3.14 compatibility. (#225)
Handle a single apostrophe more gracefully.
Handle a single apostrophe more gracefully. (#218)
Set minimum version of more-itertools to 8.5
Set minimum version of more-itertools to 8.5 (#215)
One column per quarter.
Restricted typing_extensions to Python 3.8.
Restricted typing_extensions to Python 3.8. (#211)
Refactored number_to_words toward reduced complexity.
Refactored number_to_words toward reduced complexity.
Replace pydantic with typeguard
Replace pydantic with typeguard (#195)
Refine type hint for singular_noun to indicate a literal return type for False.
Refine type hint for singular_noun to indicate a literal return type for False. (#186)
Removed methods renamed in 0.2.0.
Project now supports Pydantic 2 while retaining support for Pydantic 1.
Project now supports Pydantic 2 while retaining support for Pydantic 1. (#187)
Added validation of user-defined words and amended the type declarations to match, allowing for null values but not empty strings. (#187)
ordinal now handles float types correctly without first coercing them to strings.
ordinal now handles float types correctly without first coercing them to strings. (#178)
Features -------- - Require Python 3.8 or later.
Require Python 3.8 or later.
* #187: Pin to Pydantic 1 to avoid breaking in Pydantic 2.
#187: Pin to Pydantic 1 to avoid breaking in Pydantic 2.
* Internal cleanup.
Internal cleanup.
* #136: A/an support now more correctly honors leading capitalized words and abbreviations. * #178: Improve support for ordinals for floats.
#136: A/an support now more correctly honors leading capitalized words and abbreviations.
#178: Improve support for ordinals for floats.
* #169: Require pydantic 1.9.1 to avoid ValueError.
#169: Require pydantic 1.9.1 to avoid ValueError.
Minor tweaks and packaging refresh.
Minor tweaks and packaging refresh.
Many public methods now perform validation on arguments. An empty string is no longer allowed for words or text. Callers are expected to pass non-empt
#157: compare methods now validate their inputs and will raise a more meaningful exception if an empty string or None is passed. This expectation is now documented.
Many public methods now perform validation on arguments. An empty string is no longer allowed for words or text. Callers are expected to pass non-empty text or trap the validation errors that are raised. The exceptions raised are pydantic.error_wrappers.ValidationError, which are currently a subclass of ValueError, but since that may change, tests check for a generic Exception.
* #15: Fixes to plural edge case handling.
#15: Fixes to plural edge case handling.
Packaging refresh and docs update.
Packaging refresh and docs update.
* #153: Internal refactor to simplify and unify _plnoun and _sinoun.
#153: Internal refactor to simplify and unify _plnoun and _sinoun.
* Fixed badges.
Fixed badges.
* #150: Rewrite to satisfy type checkers.
#150: Rewrite to satisfy type checkers.
Misc fixes in #128, #134, #135, #137, #138, #139, #140, #142,
#133: Add a py.typed file so mypy recognizes type annotations.
Misc fixes in #128, #134, #135, #137, #138, #139, #140, #142, #143, #144.
Require Python 3.7 or later.
* #108: Add support for pluralizing open compound nouns.
#108: Add support for pluralizing open compound nouns.
* #121: Modernized the codebase. Added a lot of type annotations.
#121: Modernized the codebase. Added a lot of type annotations.
* Refreshed package metadata.
Refreshed package metadata.
* #102: Inflect withdraws from Jazzband _ in order to continue to participate in sustained maintenance and enterprise support through Tidelift _. The
Identical release validating release process.
Identical release validating release process.
Module no longer exposes a __version__ attribute. Instead to query the version installed, use importlib.metadata _ or its backport _ to query::
Module no longer exposes a __version__ attribute. Instead to query the version installed, use importlib.metadata or its backport to query:
importlib.metadata.version('inflect')
* Refreshed package metadata.
Refreshed package metadata.
* #95: Certain operations now allow ignore arbitrary leading words.
#95: Certain operations now allow ignore arbitrary leading words.
* Require Python 3.6 or later.
Require Python 3.6 or later.
* #88: Distribution no longer includes root tests package.
#88: Distribution no longer includes root tests package.
Project now builds on jaraco/skeleton for shared package management.
Project now builds on jaraco/skeleton for shared package management.
* #29: Relicensed under the more permissive MIT License.
#29: Relicensed under the more permissive MIT License.
* #57: Fix pluralization of taco.
#57: Fix pluralization of taco.
We now build and parse AST to extract function arguments instead of relying on regular expressions. This also adds support for keyword arguments and b
#37: fix inconsistencies with the inflect method
We now build and parse AST to extract function arguments instead of relying on regular expressions. This also adds support for keyword arguments and built-in constants when calling functions in the string. Unfortunately, this is not backwards compatible in some cases:
Strings should now be wrapped in single or double quotes p.inflect("singular_noun(to them)") should now be p.inflect("singular_noun('to them')")
Empty second argument to a function will now be parsed as None instead of ''. p.inflect("num(%d,) eggs" % 2) now prints "2 eggs" instead of " eggs" Since None, True and False are now supported, they can be passed explicitly: p.inflect("num(%d, False) eggs" % 2) will print " eggs" p.inflect("num(%d, True) eggs" % 2) will print "2 eggs"
* #53: Improved unicode handling. * #5 and #40 via #55: Fix capitalization issues in processes where more than one word is involved. * #56: Handle cor
#53: Improved unicode handling.
#5 and #40 via #55: Fix capitalization issues in processes where more than one word is involved.
#56: Handle correctly units containing 'degree' and 'per'.
* #31: fix extraneous close parentheses.
#31: fix extraneous close parentheses.
Dropped support for Python 3.3.
Dropped support for Python 3.3.
* Fixed badges in readme.
Fixed badges in readme.
Moved hosting to the jazzband project on GitHub _.
Moved hosting to the jazzband project on GitHub.
Fixed TypeError while parsing compounds (by yavarhusain)
Fixed TypeError while parsing compounds (by yavarhusain)
Fixed encoding issue in setup.py on Python 3
added Python 3 compatibility (by Thorben Krüger)
new maintainer (Alex Grönholm)
added Python 3 compatibility (by Thorben Krüger)
fix a/an for dishonor, Honolulu, mpeg, onetime, Ugandan, Ukrainian, Unabomber, unanimous, US
fix a/an for dishonor, Honolulu, mpeg, onetime, Ugandan, Ukrainian, Unabomber, unanimous, US
merge in 'subspecies' fix by UltraNurd
add arboretum to classical plurals
prevent crash with singular_noun('ys')
remove incorrect gnome_sudoku import
remove incorrect gnome_sudoku import
add gender() to select the gender of singular pronouns
add gender() to select the gender of singular pronouns
replace short named methods with longer methods. shorted method now print a message and raise DecrecationWarning
pl -> plural
plnoun -> plural_noun
plverb -> plural_verb
pladj -> plural_adjective
sinoun -> singular_noun
prespart -> present_participle
numwords -> number_to_words
plequal -> compare
plnounequal -> compare_nouns
plverbequal -> compare_verbs
pladjequal -> compare_adjs
wordlist -> join
change classical() to only accept keyword args: only one way to do it
fix bug in numwords where hundreds was giving the wrong number when group=3
add line to setup showing that this provides 'inflect' so that inflect_dj can require it
add line to setup showing that this provides 'inflect' so that inflect_dj can require it
add the rest of the tests from the Perl version
replace most of the regular expressions in _plnoun and _sinoun. They run several times faster now.
replace most of the regular expressions in _plnoun and _sinoun. They run several times faster now.
add method sinoun() to generate the singular of a plural noun. Phew!
add method sinoun() to generate the singular of a plural noun. Phew!
add changes from new Perl version: 1.892
start adding tests from Perl version
add test to check sinoun(plnoun(word)) == word Can now use word lists to check these methods without needing to have a list of plurals. ;-)
fix die -> dice
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →