Skip to content

Make Ukrainian locale name follow ISO 639, update it and add tests#957

Open
nykula wants to merge 1 commit intopython-pendulum:masterfrom
nykula:master
Open

Make Ukrainian locale name follow ISO 639, update it and add tests#957
nykula wants to merge 1 commit intopython-pendulum:masterfrom
nykula:master

Conversation

@nykula
Copy link
Copy Markdown

@nykula nykula commented Apr 3, 2026

Pull Request Check List

  • Added tests for changed code.
  • Updated documentation for changed code.

Fixes #955.

@codspeed-hq
Copy link
Copy Markdown

codspeed-hq bot commented Apr 8, 2026

Merging this PR will not alter performance

✅ 1 untouched benchmark


Comparing nykula:master (3258088) with master (0a88aec)

Open in CodSpeed


def diff_for_humans():
d = pendulum.now().subtract(seconds=1)
assert d.diff_for_humans(locale=locale) == "кілька секунд тому"
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

assert d.diff_for_humans(locale=locale) == "1 секунду тому"

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pendulum considers diffs less than 10 seconds, including 0 or 1, to be "a few seconds", so I'd leave this test as is, which matches the behavior of other locales.



locale = {
'plural': lambda n: 'few' if (((0 == 0 and ((0 == 0))) and ((n % 10) == (n % 10) and (((n % 10) >= 2 and (n % 10) <= 4)))) and (not ((n % 100) == (n % 100) and (((n % 100) >= 12 and (n % 100) <= 14))))) else 'many' if ((((0 == 0 and ((0 == 0))) and ((n % 10) == (n % 10) and (((n % 10) == 0)))) or ((0 == 0 and ((0 == 0))) and ((n % 10) == (n % 10) and (((n % 10) >= 5 and (n % 10) <= 9))))) or ((0 == 0 and ((0 == 0))) and ((n % 100) == (n % 100) and (((n % 100) >= 11 and (n % 100) <= 14))))) else 'one' if (((0 == 0 and ((0 == 0))) and ((n % 10) == (n % 10) and (((n % 10) == 1)))) and (not ((n % 100) == (n % 100) and (((n % 100) == 11))))) else 'other',
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are an awful lot of 0 == 0 in here. More than zero is too many

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed that checking zero against zero is useless. But that part comes from clock, which generates the condition from Babel data? Such generated checks are also present in cs, pl, sk locales. I'm open to trying to fix this, but can you suggest how I should approach it?


d = pendulum.now().subtract(weeks=2)
assert d.diff_for_humans(locale=locale) == "2 тижні тому"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

d = pendulum.now().subtract(weeks=5)
assert d.diff_for_humans(locale=locale) == "5 тижнів тому"

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

weeks=5 behaves in the same way as months=1, resulting in 1 місяць тому. Should I add that assertion?


d = pendulum.now().subtract(days=2)
assert d.diff_for_humans(locale=locale) == "2 дні тому"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

d = pendulum.now().subtract(days=5)
assert d.diff_for_humans(locale=locale) == "5 днів тому"

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense to check, thanks, will commit when I have more time.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Ukrainian locale should be uk not ua

3 participants