René's URL Explorer Experiment


Title: "27 years from now" tests fail on platforms with 32-bit `time_t` (y2k38 problem) · Issue #176 · python-humanize/humanize · GitHub

Open Graph Title: "27 years from now" tests fail on platforms with 32-bit `time_t` (y2k38 problem) · Issue #176 · python-humanize/humanize

X Title: "27 years from now" tests fail on platforms with 32-bit `time_t` (y2k38 problem) · Issue #176 · python-humanize/humanize

Description: What did you do? tox -e py311 on a 32-bit x86 system. What did you expect to happen? Tests passing (possibly by skipping these tests on OverflowError). What actually happened? .pkg: install_requires> python -I -m pip install hatch-vcs ha...

Open Graph Description: What did you do? tox -e py311 on a 32-bit x86 system. What did you expect to happen? Tests passing (possibly by skipping these tests on OverflowError). What actually happened? .pkg: install_require...

X Description: What did you do? tox -e py311 on a 32-bit x86 system. What did you expect to happen? Tests passing (possibly by skipping these tests on OverflowError). What actually happened? .pkg: install_require...

Opengraph URL: https://github.com/python-humanize/humanize/issues/176

X: @github

direct link

Domain: github.com


Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"\"27 years from now\" tests fail on platforms with 32-bit `time_t` (y2k38 problem)","articleBody":"### What did you do?\r\n\r\n`tox -e py311` on a 32-bit x86 system.\r\n\r\n### What did you expect to happen?\r\n\r\nTests passing (possibly by skipping these tests on `OverflowError`).\r\n\r\n### What actually happened?\r\n\r\n```pytb\r\n.pkg: install_requires\u003e python -I -m pip install hatch-vcs hatchling\r\n.pkg: _optional_hooks\u003e python /usr/lib/python3.11/site-packages/pyproject_api/_backend.py True hatchling.build\r\n.pkg: get_requires_for_build_sdist\u003e python /usr/lib/python3.11/site-packages/pyproject_api/_backend.py True hatchling.build\r\n.pkg: build_sdist\u003e python /usr/lib/python3.11/site-packages/pyproject_api/_backend.py True hatchling.build\r\npy311: install_package_deps\u003e python -I -m pip install freezegun pytest pytest-cov\r\npy311: install_package\u003e python -I -m pip install --force-reinstall --no-deps /home/mgorny/humanize/.tox/.tmp/package/1/humanize-4.9.1.dev38.tar.gz\r\npy311: commands[0]\u003e .tox/py311/bin/python -m pytest --cov humanize --cov tests --cov-report html --cov-report term --cov-report xml\r\n========================================================= test session starts =========================================================\r\nplatform linux -- Python 3.11.7, pytest-8.0.2, pluggy-1.4.0\r\ncachedir: .tox/py311/.pytest_cache\r\nrootdir: /home/mgorny/humanize\r\nconfigfile: pyproject.toml\r\nplugins: cov-4.1.0\r\ncollected 572 items                                                                                                                   \r\n\r\ntests/test_filesize.py ....................                                                                                     [  3%]\r\ntests/test_i18n.py sssssssssssssssssssssss.....                                                                                 [  8%]\r\ntests/test_number.py .......................................................................................................... [ 26%]\r\n..........................................................................................................                      [ 45%]\r\ntests/test_time.py ............................................................................................................ [ 64%]\r\n............................................................................................................................... [ 86%]\r\n..F......................F...................................................                                                   [100%]\r\n\r\n============================================================== FAILURES ===============================================================\r\n______________________________________ test_naturaltime_timezone[test_input19-27 years from now] ______________________________________\r\n\r\ntest_input = FakeDatetime(2047, 6, 20, 0, 0, tzinfo=datetime.timezone.utc), expected = '27 years from now'\r\n\r\n    @freeze_time(\"2020-02-02\")\r\n    @pytest.mark.parametrize(\r\n        \"test_input, expected\",\r\n        [\r\n            (NOW_UTC, \"now\"),\r\n            (NOW_UTC - dt.timedelta(seconds=1), \"a second ago\"),\r\n            (NOW_UTC - dt.timedelta(seconds=30), \"30 seconds ago\"),\r\n            (NOW_UTC - dt.timedelta(minutes=1, seconds=30), \"a minute ago\"),\r\n            (NOW_UTC - dt.timedelta(minutes=2), \"2 minutes ago\"),\r\n            (NOW_UTC - dt.timedelta(hours=1, minutes=30, seconds=30), \"an hour ago\"),\r\n            (NOW_UTC - dt.timedelta(hours=23, minutes=50, seconds=50), \"23 hours ago\"),\r\n            (NOW_UTC - dt.timedelta(days=1), \"a day ago\"),\r\n            (NOW_UTC - dt.timedelta(days=500), \"1 year, 4 months ago\"),\r\n            (NOW_UTC - dt.timedelta(days=365 * 2 + 35), \"2 years ago\"),\r\n            (NOW_UTC + dt.timedelta(seconds=1), \"a second from now\"),\r\n            (NOW_UTC + dt.timedelta(seconds=30), \"30 seconds from now\"),\r\n            (NOW_UTC + dt.timedelta(minutes=1, seconds=30), \"a minute from now\"),\r\n            (NOW_UTC + dt.timedelta(minutes=2), \"2 minutes from now\"),\r\n            (NOW_UTC + dt.timedelta(hours=1, minutes=30, seconds=30), \"an hour from now\"),\r\n            (NOW_UTC + dt.timedelta(hours=23, minutes=50, seconds=50), \"23 hours from now\"),\r\n            (NOW_UTC + dt.timedelta(days=1), \"a day from now\"),\r\n            (NOW_UTC + dt.timedelta(days=500), \"1 year, 4 months from now\"),\r\n            (NOW_UTC + dt.timedelta(days=365 * 2 + 35), \"2 years from now\"),\r\n            # regression tests for bugs in post-release humanize\r\n            (NOW_UTC + dt.timedelta(days=10000), \"27 years from now\"),\r\n            (NOW_UTC - dt.timedelta(days=365 + 35), \"1 year, 1 month ago\"),\r\n            (NOW_UTC - dt.timedelta(days=365 * 2 + 65), \"2 years ago\"),\r\n            (NOW_UTC - dt.timedelta(days=365 + 4), \"1 year, 4 days ago\"),\r\n        ],\r\n    )\r\n    def test_naturaltime_timezone(test_input: dt.datetime, expected: str) -\u003e None:\r\n\u003e       assert humanize.naturaltime(test_input) == expected\r\n\r\ntests/test_time.py:449: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\r\n.tox/py311/lib/python3.11/site-packages/humanize/time.py:249: in naturaltime\r\n    value = _convert_aware_datetime(value)\r\n.tox/py311/lib/python3.11/site-packages/humanize/time.py:275: in _convert_aware_datetime\r\n    value = dt.datetime.fromtimestamp(value.timestamp())\r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\r\n\r\ncls = \u003cclass 'freezegun.api.FakeDatetime'\u003e, t = 2444601600.0, tz = None\r\n\r\n    @classmethod\r\n    def fromtimestamp(cls, t, tz=None):\r\n        if tz is None:\r\n\u003e           return real_datetime.fromtimestamp(\r\n                    t, tz=dateutil.tz.tzoffset(\"freezegun\", cls._tz_offset())\r\n                ).replace(tzinfo=None)\r\nE           OverflowError: timestamp out of range for platform time_t\r\n\r\n.tox/py311/lib/python3.11/site-packages/freezegun/api.py:375: OverflowError\r\n___________________________________ test_naturaltime_timezone_when[test_input19-27 years from now] ____________________________________\r\n\r\ntest_input = FakeDatetime(2047, 6, 20, 0, 0, tzinfo=datetime.timezone.utc), expected = '27 years from now'\r\n\r\n    @freeze_time(\"2020-02-02\")\r\n    @pytest.mark.parametrize(\r\n        \"test_input, expected\",\r\n        [\r\n            (NOW_UTC, \"now\"),\r\n            (NOW_UTC - dt.timedelta(seconds=1), \"a second ago\"),\r\n            (NOW_UTC - dt.timedelta(seconds=30), \"30 seconds ago\"),\r\n            (NOW_UTC - dt.timedelta(minutes=1, seconds=30), \"a minute ago\"),\r\n            (NOW_UTC - dt.timedelta(minutes=2), \"2 minutes ago\"),\r\n            (NOW_UTC - dt.timedelta(hours=1, minutes=30, seconds=30), \"an hour ago\"),\r\n            (NOW_UTC - dt.timedelta(hours=23, minutes=50, seconds=50), \"23 hours ago\"),\r\n            (NOW_UTC - dt.timedelta(days=1), \"a day ago\"),\r\n            (NOW_UTC - dt.timedelta(days=500), \"1 year, 4 months ago\"),\r\n            (NOW_UTC - dt.timedelta(days=365 * 2 + 35), \"2 years ago\"),\r\n            (NOW_UTC + dt.timedelta(seconds=1), \"a second from now\"),\r\n            (NOW_UTC + dt.timedelta(seconds=30), \"30 seconds from now\"),\r\n            (NOW_UTC + dt.timedelta(minutes=1, seconds=30), \"a minute from now\"),\r\n            (NOW_UTC + dt.timedelta(minutes=2), \"2 minutes from now\"),\r\n            (NOW_UTC + dt.timedelta(hours=1, minutes=30, seconds=30), \"an hour from now\"),\r\n            (NOW_UTC + dt.timedelta(hours=23, minutes=50, seconds=50), \"23 hours from now\"),\r\n            (NOW_UTC + dt.timedelta(days=1), \"a day from now\"),\r\n            (NOW_UTC + dt.timedelta(days=500), \"1 year, 4 months from now\"),\r\n            (NOW_UTC + dt.timedelta(days=365 * 2 + 35), \"2 years from now\"),\r\n            # regression tests for bugs in post-release humanize\r\n            (NOW_UTC + dt.timedelta(days=10000), \"27 years from now\"),\r\n            (NOW_UTC - dt.timedelta(days=365 + 35), \"1 year, 1 month ago\"),\r\n            (NOW_UTC - dt.timedelta(days=365 * 2 + 65), \"2 years ago\"),\r\n            (NOW_UTC - dt.timedelta(days=365 + 4), \"1 year, 4 days ago\"),\r\n        ],\r\n    )\r\n    def test_naturaltime_timezone_when(test_input: dt.datetime, expected: str) -\u003e None:\r\n\u003e       assert humanize.naturaltime(test_input, when=NOW_UTC) == expected\r\n\r\ntests/test_time.py:483: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\r\n.tox/py311/lib/python3.11/site-packages/humanize/time.py:249: in naturaltime\r\n    value = _convert_aware_datetime(value)\r\n.tox/py311/lib/python3.11/site-packages/humanize/time.py:275: in _convert_aware_datetime\r\n    value = dt.datetime.fromtimestamp(value.timestamp())\r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\r\n\r\ncls = \u003cclass 'freezegun.api.FakeDatetime'\u003e, t = 2444601600.0, tz = None\r\n\r\n    @classmethod\r\n    def fromtimestamp(cls, t, tz=None):\r\n        if tz is None:\r\n\u003e           return real_datetime.fromtimestamp(\r\n                    t, tz=dateutil.tz.tzoffset(\"freezegun\", cls._tz_offset())\r\n                ).replace(tzinfo=None)\r\nE           OverflowError: timestamp out of range for platform time_t\r\n\r\n.tox/py311/lib/python3.11/site-packages/freezegun/api.py:375: OverflowError\r\n\r\n---------- coverage: platform linux, python 3.11.7-final-0 -----------\r\nName                                                           Stmts   Miss  Cover\r\n----------------------------------------------------------------------------------\r\n.tox/py311/lib/python3.11/site-packages/humanize/__init__.py       8      0   100%\r\n.tox/py311/lib/python3.11/site-packages/humanize/filesize.py      24      0   100%\r\n.tox/py311/lib/python3.11/site-packages/humanize/i18n.py          56      4    93%\r\n.tox/py311/lib/python3.11/site-packages/humanize/number.py       165      7    96%\r\n.tox/py311/lib/python3.11/site-packages/humanize/time.py         224      0   100%\r\ntests/__init__.py                                                  0      0   100%\r\ntests/test_filesize.py                                            10      0   100%\r\ntests/test_i18n.py                                               106     19    82%\r\ntests/test_number.py                                              32      0   100%\r\ntests/test_time.py                                               124      0   100%\r\n----------------------------------------------------------------------------------\r\nTOTAL                                                            749     30    96%\r\nCoverage HTML written to dir htmlcov\r\nCoverage XML written to file coverage.xml\r\n\r\n======================================================= short test summary info =======================================================\r\nFAILED tests/test_time.py::test_naturaltime_timezone[test_input19-27 years from now] - OverflowError: timestamp out of range for platform time_t\r\nFAILED tests/test_time.py::test_naturaltime_timezone_when[test_input19-27 years from now] - OverflowError: timestamp out of range for platform time_t\r\n============================================== 2 failed, 547 passed, 23 skipped in 4.97s ==============================================\r\npy311: exit 1 (5.42 seconds) /home/mgorny/humanize\u003e .tox/py311/bin/python -m pytest --cov humanize --cov tests --cov-report html --cov-report term --cov-report xml pid=37634\r\n.pkg: _exit\u003e python /usr/lib/python3.11/site-packages/pyproject_api/_backend.py True hatchling.build\r\n  py311: FAIL code 1 (21.29=setup[15.87]+cmd[5.42] seconds)\r\n  evaluation failed :( (21.38 seconds)\r\n```\r\n\r\n### What versions are you using?\r\n\r\n* OS: Gentoo Linux x86\r\n* Python: 3.11.7\r\n* Humanize: 218a86ecf1e87802ec6ce31299c5933f0870c7d6","author":{"url":"https://github.com/mgorny","@type":"Person","name":"mgorny"},"datePublished":"2024-02-29T17:01:01.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":3},"url":"https://github.com/176/humanize/issues/176"}

route-pattern/_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format)
route-controllervoltron_issues_fragments
route-actionissue_layout
fetch-noncev2:4667d2e2-bee1-261c-d67b-6a3f45570506
current-catalog-service-hash81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114
request-idE424:399A66:1B20B56:24C37C8:6A53F342
html-safe-nonce9d5908a394cba220f2f7c60788df781a6b5347ad54e671c6f7c6ad6eff4291a5
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFNDI0OjM5OUE2NjoxQjIwQjU2OjI0QzM3Qzg6NkE1M0YzNDIiLCJ2aXNpdG9yX2lkIjoiODM5Mzk1MTkzNzUzMjUyMzMzMCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmac09c2f3e484b5ed7dd77855b32a3dc9b204fa4d83723095de01d3e3b4564ac9e8
hovercard-subject-tagissue:2161713185
github-keyboard-shortcutsrepository,issues,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///voltron/issues_fragments/issue_layout
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/python-humanize/humanize/176/issue_layout
twitter:imagehttps://opengraph.githubassets.com/43d55b6a64973053f8cbc9ca07444c438f16f5208f2c4816129a111748a0e208/python-humanize/humanize/issues/176
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/43d55b6a64973053f8cbc9ca07444c438f16f5208f2c4816129a111748a0e208/python-humanize/humanize/issues/176
og:image:altWhat did you do? tox -e py311 on a 32-bit x86 system. What did you expect to happen? Tests passing (possibly by skipping these tests on OverflowError). What actually happened? .pkg: install_require...
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
og:author:usernamemgorny
hostnamegithub.com
expected-hostnamegithub.com
Noneb9a586c06a05a7a86fc7e3f4dbd03e42f6869085879aa184aa6369456dbd50fb
turbo-cache-controlno-preview
go-importgithub.com/python-humanize/humanize git https://github.com/python-humanize/humanize.git
octolytics-dimension-user_id62149795
octolytics-dimension-user_loginpython-humanize
octolytics-dimension-repository_id466683324
octolytics-dimension-repository_nwopython-humanize/humanize
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id466683324
octolytics-dimension-repository_network_root_nwopython-humanize/humanize
turbo-body-classeslogged-out env-production page-responsive
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release07a982c1d40157c619b364352b704c3ce66bb332
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/python-humanize/humanize/issues/176#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython-humanize%2Fhumanize%2Fissues%2F176
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/open-source/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/open-source/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython-humanize%2Fhumanize%2Fissues%2F176
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&source=header-repo&source_repo=python-humanize%2Fhumanize
Reloadhttps://github.com/python-humanize/humanize/issues/176
Reloadhttps://github.com/python-humanize/humanize/issues/176
Reloadhttps://github.com/python-humanize/humanize/issues/176
Please reload this pagehttps://github.com/python-humanize/humanize/issues/176
python-humanize https://github.com/python-humanize
humanizehttps://github.com/python-humanize/humanize
Please reload this pagehttps://github.com/python-humanize/humanize/issues/176
Notifications https://github.com/login?return_to=%2Fpython-humanize%2Fhumanize
Fork 115 https://github.com/login?return_to=%2Fpython-humanize%2Fhumanize
Star 736 https://github.com/login?return_to=%2Fpython-humanize%2Fhumanize
Code https://github.com/python-humanize/humanize
Issues 12 https://github.com/python-humanize/humanize/issues
Pull requests 12 https://github.com/python-humanize/humanize/pulls
Actions https://github.com/python-humanize/humanize/actions
Security and quality 0 https://github.com/python-humanize/humanize/security
Insights https://github.com/python-humanize/humanize/pulse
Code https://github.com/python-humanize/humanize
Issues https://github.com/python-humanize/humanize/issues
Pull requests https://github.com/python-humanize/humanize/pulls
Actions https://github.com/python-humanize/humanize/actions
Security and quality https://github.com/python-humanize/humanize/security
Insights https://github.com/python-humanize/humanize/pulse
#177https://github.com/python-humanize/humanize/pull/177
"27 years from now" tests fail on platforms with 32-bit time_t (y2k38 problem)https://github.com/python-humanize/humanize/issues/176#top
#177https://github.com/python-humanize/humanize/pull/177
https://github.com/mgorny
mgornyhttps://github.com/mgorny
on Feb 29, 2024https://github.com/python-humanize/humanize/issues/176#issue-2161713185
218a86ehttps://github.com/python-humanize/humanize/commit/218a86ecf1e87802ec6ce31299c5933f0870c7d6
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.