Handle a single apostrophe more gracefully#218
Merged
jaraco merged 3 commits intojaraco:mainfrom Sep 7, 2024
Merged
Conversation
Currently we raise an exception if you pass a single-character string
consisting solely of an apostrophe to engine.plural(), e.g.:
>>> import inflect
>>> p = inflect.engine()
>>> p.plural("'")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/mgalgs/src/inflect/inflect/__init__.py", line 2386, in plural
self._pl_special_adjective(word, count)
File "/home/mgalgs/src/inflect/inflect/__init__.py", line 3157, in _pl_special_adjective
pl = self.plural_noun(mo.group(1))
File "/home/mgalgs/src/inflect/inflect/__init__.py", line 2393, in plural_noun
def plural_noun(
File "/home/mgalgs/src/inflect/env/lib/python3.9/site-packages/typeguard/_functions.py", line 136, in check_argument_types
check_type_internal(value, annotation, memo)
File "/home/mgalgs/src/inflect/env/lib/python3.9/site-packages/typeguard/_checkers.py", line 866, in check_type_internal
raise TypeCheckError(f"is not an instance of {qualified_name(origin_type)}")
typeguard.TypeCheckError: argument "text" (str) is not an instance of inflect.Word
Rather than raising an exception, just return the "'" string back to the
caller (since nothing needs to be done to pluralize it).
This is accomplished by modifying the "ends with apostrophe s" regex to
require that there is at least one character present preceding the
apostrophe (rather than "zero or more"), to ensure that the match group
isn't empty for the "'" string.
We recently fixed a bug where a single-character string consisting solely of the apostrophe character raised an exception. Add this test case to the test suite.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Currently we raise an exception if you pass a single-character string
consisting solely of an apostrophe to
engine.plural(), e.g.:Rather than raising an exception, just return the
"'"string back to thecaller (since nothing needs to be done to pluralize it).
This is accomplished by modifying the "ends with apostrophe s" regex to
require that there is at least one character present preceding the
apostrophe (rather than "zero or more"), to ensure that the match group
isn't empty for the
"'"string.