René's URL Explorer Experiment


Title: gh-95534: Improve gzip reading speed by 10% by rhpvorderman · Pull Request #97664 · python/cpython · GitHub

Open Graph Title: gh-95534: Improve gzip reading speed by 10% by rhpvorderman · Pull Request #97664 · python/cpython

X Title: gh-95534: Improve gzip reading speed by 10% by rhpvorderman · Pull Request #97664 · python/cpython

Description: For motivation check the github issue. #95534 Performance figures before (the used gzip file is the tar source distribution from github): ./python -m pyperf timeit -s "import gzip; g=gzip.open('cpython-3.10.7.tar.gz', 'rb'); it=iter(lambda:g.read(128*1024), b'');" "for _ in it: pass" ..................... Mean +- std dev: 301 ms +- 2 ms after: ./python -m pyperf timeit -s "import gzip; g=gzip.open('cpython-3.10.7.tar.gz', 'rb'); it=iter(lambda:g.read(128*1024), b'');" "for _ in it: pass" ..................... Mean +- std dev: 270 ms +- 1 ms Performance tests where run with all optimizations enabled. I found that --enable-optimizations did not influence the result. So it can be verified without all the PGO stuff. Change summary: There is now a gzip.READ_BUFFER_SIZE constant that is 128KB. Other programs that read in 128KB chunks: pigz and cat. So this seems best practice among good programs. Also it is faster than 8 kb chunks. a zlib._ZlibDecompressor was added. This is the _bz2.BZ2Decompressor ported to zlib. Since the zlib.Decompress object is better for in-memory decompression, the _ZlibDecompressor is hidden. It only makes sense in file decompression, and that is already implemented now in the gzip library. No need to bother the users with this. The ZlibDecompressor uses the older Cpython arrange_output_buffer functions, as those are faster and more appropriate for the use case. GzipFile.read has been optimized. There is no longer a unconsumed_tail member to write back to padded file. This is instead handled by the ZlibDecompressor itself, which has an internal buffer. _add_read_data has been inlined, as it was just two calls. EDIT: While I am adding improvements anyway, I figured I could add another one-liner optimization now to the python -m gzip application. That read chunks in io.DEFAULT_BUFFER_SIZE previously, but has been updated now to use READ_BUFFER_SIZE chunks. Results: before: Benchmark 1: cat cpython-3.10.7.tar.gz | ./python -m gzip -d > /dev/null Time (mean ± σ): 389.1 ms ± 12.0 ms [User: 372.7 ms, System: 19.9 ms] Range (min … max): 370.9 ms … 410.2 ms 20 runs After: Benchmark 1: cat cpython-3.10.7.tar.gz | ./python -m gzip -d > /dev/null Time (mean ± σ): 320.5 ms ± 12.1 ms [User: 306.4 ms, System: 17.6 ms] Range (min … max): 300.0 ms … 339.1 ms 20 runs For comparison: pigz, the fastest zlib utilizing gzip decompressor, on a single thread. (igzip is faster, but utilizes ISA-L). Benchmark 1: cat cpython-3.10.7.tar.gz | pigz -p 1 -d > /dev/null Time (mean ± σ): 293.8 ms ± 8.4 ms [User: 288.5 ms, System: 17.0 ms] Range (min … max): 277.5 ms … 302.7 ms 20 runs If we take the pure C pigz program as baseline, the amount of python overhead is reduced drastically from 30% to 10%. Issue: gh-95534

Open Graph Description: For motivation check the github issue. #95534 Performance figures before (the used gzip file is the tar source distribution from github): ./python -m pyperf timeit -s "import gzip; g=gzip.open...

X Description: For motivation check the github issue. #95534 Performance figures before (the used gzip file is the tar source distribution from github): ./python -m pyperf timeit -s "import gzip; g=gzip....

Opengraph URL: https://github.com/python/cpython/pull/97664

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:26907c85-e1fa-87a6-39b0-d9634bccb842
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idD986:26A5A1:62637D:865C11:6969DC5D
html-safe-nonce70e27670511a9dce913d7c55b83b9b6859a44a19a71c3bd5be6126747f296380
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJEOTg2OjI2QTVBMTo2MjYzN0Q6ODY1QzExOjY5NjlEQzVEIiwidmlzaXRvcl9pZCI6IjI5MDc1NDg3NjA3MTI3OTcyNzciLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ==
visitor-hmacf245e6227db45a7ba38261fb7a58da70266b8b2a9aea3029c87d73d8a8885fdb
hovercard-subject-tagpull_request:1072324132
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/python/cpython/pull/97664/files
twitter:imagehttps://avatars.githubusercontent.com/u/26142226?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/26142226?s=400&v=4
og:image:altFor motivation check the github issue. #95534 Performance figures before (the used gzip file is the tar source distribution from github): ./python -m pyperf timeit -s "import gzip; g=gzip.open...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
None7b32f1c7c4549428ee399213e8345494fc55b5637195d3fc5f493657579235e8
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/python/cpython git https://github.com/python/cpython.git
octolytics-dimension-user_id1525981
octolytics-dimension-user_loginpython
octolytics-dimension-repository_id81598961
octolytics-dimension-repository_nwopython/cpython
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id81598961
octolytics-dimension-repository_network_root_nwopython/cpython
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
releasebdde15ad1b403e23b08bbd89b53fbe6bdf688cad
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/python/cpython/pull/97664/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython%2Fcpython%2Fpull%2F97664%2Ffiles
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub SparkBuild and deploy intelligent appshttps://github.com/features/spark
GitHub ModelsManage and compare promptshttps://github.com/features/models
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
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
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/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%2Fcpython%2Fpull%2F97664%2Ffiles
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%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=python%2Fcpython
Reloadhttps://github.com/python/cpython/pull/97664/files
Reloadhttps://github.com/python/cpython/pull/97664/files
Reloadhttps://github.com/python/cpython/pull/97664/files
python https://github.com/python
cpythonhttps://github.com/python/cpython
Please reload this pagehttps://github.com/python/cpython/pull/97664/files
Notifications https://github.com/login?return_to=%2Fpython%2Fcpython
Fork 33.9k https://github.com/login?return_to=%2Fpython%2Fcpython
Star 71.1k https://github.com/login?return_to=%2Fpython%2Fcpython
Code https://github.com/python/cpython
Issues 5k+ https://github.com/python/cpython/issues
Pull requests 2.1k https://github.com/python/cpython/pulls
Actions https://github.com/python/cpython/actions
Projects 31 https://github.com/python/cpython/projects
Security Uh oh! There was an error while loading. Please reload this page. https://github.com/python/cpython/security
Please reload this pagehttps://github.com/python/cpython/pull/97664/files
Insights https://github.com/python/cpython/pulse
Code https://github.com/python/cpython
Issues https://github.com/python/cpython/issues
Pull requests https://github.com/python/cpython/pulls
Actions https://github.com/python/cpython/actions
Projects https://github.com/python/cpython/projects
Security https://github.com/python/cpython/security
Insights https://github.com/python/cpython/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Fpython%2Fcpython%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Fpython%2Fcpython%2Fissues%2Fnew%2Fchoose
gpsheadhttps://github.com/gpshead
python:mainhttps://github.com/python/cpython/tree/main
rhpvorderman:gh-95534https://github.com/rhpvorderman/cpython/tree/gh-95534
Conversation 27 https://github.com/python/cpython/pull/97664
Commits 33 https://github.com/python/cpython/pull/97664/commits
Checks 0 https://github.com/python/cpython/pull/97664/checks
Files changed https://github.com/python/cpython/pull/97664/files
Please reload this pagehttps://github.com/python/cpython/pull/97664/files
gh-95534: Improve gzip reading speed by 10% https://github.com/python/cpython/pull/97664/files#top
Show all changes 33 commits https://github.com/python/cpython/pull/97664/files
1e13a89 Add code from python-isal project rhpvorderman Sep 28, 2022 https://github.com/python/cpython/pull/97664/commits/1e13a8924cd1161e6c37b9238204bdd1a39b5dac
6a5cdfd Reorder code rhpvorderman Sep 28, 2022 https://github.com/python/cpython/pull/97664/commits/6a5cdfd0c36ec5969fd6e60f5bfabf59bf0638a6
809ad5f Add ZlibDecompressor rhpvorderman Sep 28, 2022 https://github.com/python/cpython/pull/97664/commits/809ad5f6978eb0447edef2fa9aa23cbfa68bf0a6
03254b8 Add zlibdecompressor object rhpvorderman Sep 28, 2022 https://github.com/python/cpython/pull/97664/commits/03254b88271adf26e9441e188a9a549f7dcac69c
669848a Fix compile warnings rhpvorderman Sep 28, 2022 https://github.com/python/cpython/pull/97664/commits/669848a6b0fe6fe52254f2001c45dd88f2b84a0f
69ff613 Do not use class input rhpvorderman Sep 28, 2022 https://github.com/python/cpython/pull/97664/commits/69ff613e6036fe43e0882992da66179b0f7ca21e
6fa43ae Fix lock stuff rhpvorderman Sep 28, 2022 https://github.com/python/cpython/pull/97664/commits/6fa43ae31f144fa8564275cca7a7042abe8a2ef7
cdc5972 Fix incorrect error handling rhpvorderman Sep 28, 2022 https://github.com/python/cpython/pull/97664/commits/cdc597274b66ee123d8a5d3e9a5e39b04cb43200
7820627 Rework _GzipReader to be more efficient rhpvorderman Sep 28, 2022 https://github.com/python/cpython/pull/97664/commits/7820627adb1da292a4a0696ae69ab97e1c5b4832
6f8b64a Properly initialize zstate rhpvorderman Sep 30, 2022 https://github.com/python/cpython/pull/97664/commits/6f8b64aff5bac693155b8c02092e03654b611e69
3e2a4f5 Add blurb for increased gzip read speed rhpvorderman Sep 30, 2022 https://github.com/python/cpython/pull/97664/commits/3e2a4f5be2eff8593fb1d1ef014a658c5af86a33
070df1c Make sure self->initialised is set to 0. Reword some comments. rhpvorderman Sep 30, 2022 https://github.com/python/cpython/pull/97664/commits/070df1cfeb8d4d7f6be59e31342929baf566936a
70b7d4d Add appropriate doctype in blurb rhpvorderman Sep 30, 2022 https://github.com/python/cpython/pull/97664/commits/70b7d4d454b287bd70b2a8e4e185a6e3dde11b88
22d3893 Merge branch 'main' into gh-95534 rhpvorderman Sep 30, 2022 https://github.com/python/cpython/pull/97664/commits/22d389313a7e9ff75330c26bc2d694b1d786e641
18a7692 Add missing NULL member to ZlibDecompressor_Members rhpvorderman Sep 30, 2022 https://github.com/python/cpython/pull/97664/commits/18a769262dcc20f695aa9046c5cdd09a77a793a0
d54c8b5 Merge branch 'gh-95534' of github.com:rhpvorderman/cpython into gh-95534 rhpvorderman Sep 30, 2022 https://github.com/python/cpython/pull/97664/commits/d54c8b5afa65a62f43a6c18b2b0cc22c2dda579e
c90096f Remove double comment rhpvorderman Sep 30, 2022 https://github.com/python/cpython/pull/97664/commits/c90096fa33daf8d543052a491340b851d3fbd92b
1c15839 Use READ_BUFFER_SIZE in python -m gzip command line application rhpvorderman Sep 30, 2022 https://github.com/python/cpython/pull/97664/commits/1c1583960d1d670f4db1742d7e0fbc3da829d51e
d0ff4f0 Fix error in news entry rhpvorderman Sep 30, 2022 https://github.com/python/cpython/pull/97664/commits/d0ff4f01594e3ec430d60f837175969df4e3412b
afd92ab minor edit, use += gpshead Sep 30, 2022 https://github.com/python/cpython/pull/97664/commits/afd92ab6a8eb8da31a1c299b761d21bbd7255d7f
922ac5c Throw compile warning on zlib versions that are too old rhpvorderman Oct 2, 2022 https://github.com/python/cpython/pull/97664/commits/922ac5c40b8d81a11aa477521700f2a6566a0514
dc7de61 Use bool instead of int rhpvorderman Oct 2, 2022 https://github.com/python/cpython/pull/97664/commits/dc7de612f3cfef7e3aa7ef4ec50c5c56fc9e5ae2
ca12c1f Correct spelling of insufficient rhpvorderman Oct 2, 2022 https://github.com/python/cpython/pull/97664/commits/ca12c1f185dd99dcfff976e0ce1bd6da973fa087
1ce342b Put brackets around if statement rhpvorderman Oct 2, 2022 https://github.com/python/cpython/pull/97664/commits/1ce342b7efb98c8b1fd39d5c6e10753d93e6a504
0b7735e Remove strange default case rhpvorderman Oct 2, 2022 https://github.com/python/cpython/pull/97664/commits/0b7735e6cfc6ac40ec51ef848e52f809873f2f2b
043a376 Remove unnecessary zero op rhpvorderman Oct 2, 2022 https://github.com/python/cpython/pull/97664/commits/043a376b919a9bcc13199eec49789c6049802015
2a653a9 Change RetVal to return_value rhpvorderman Oct 2, 2022 https://github.com/python/cpython/pull/97664/commits/2a653a996e6c8b30af99d418842cddcc0efac4e1
475aef6 Change char to bool rhpvorderman Oct 2, 2022 https://github.com/python/cpython/pull/97664/commits/475aef649ffa342e704a9477d3fb0e03b03e1389
41ba076 Properly bracketify if-else clause rhpvorderman Oct 2, 2022 https://github.com/python/cpython/pull/97664/commits/41ba076d2e067805a16fecefe9cb221192b9075c
5f1901d Prefix underscore to _ZlibDecompressor name rhpvorderman Oct 2, 2022 https://github.com/python/cpython/pull/97664/commits/5f1901d8cf575b90b40284bd99d93db0028635e2
c5d6888 Copy explanation about zdict from python docs into function docstring rhpvorderman Oct 2, 2022 https://github.com/python/cpython/pull/97664/commits/c5d68889c7a4033f1cbad9f5beb88ae956704f42
9d60339 Merge branch 'gh-95534' of github.com:rhpvorderman/cpython into gh-95534 rhpvorderman Oct 2, 2022 https://github.com/python/cpython/pull/97664/commits/9d603393430d09ea5bcceb541e32378deb4348df
e3da415 Add tests for _ZlibDecompressor rhpvorderman Oct 3, 2022 https://github.com/python/cpython/pull/97664/commits/e3da4155a2c10dd0d8e286c8d5b04c6f36f51a50
Clear filters https://github.com/python/cpython/pull/97664/files
Please reload this pagehttps://github.com/python/cpython/pull/97664/files
Please reload this pagehttps://github.com/python/cpython/pull/97664/files
gzip.py https://github.com/python/cpython/pull/97664/files#diff-ad9b54ac8ef847cbb11fb0550f7e8cede55b1d92de15899e0a885a94a124838a
test_zlib.py https://github.com/python/cpython/pull/97664/files#diff-029a0ce1b89a517af9cd486ab867641e1c90e4ac089dded48ee1b65e604b64aa
2022-09-30-09-22-37.gh-issue-95534.ndEfPj.rst https://github.com/python/cpython/pull/97664/files#diff-6f74b19866f804367baabfc84e35259a67ce6b855a6417ce420bef1b0699cd17
zlibmodule.c.h https://github.com/python/cpython/pull/97664/files#diff-61dcfbf165ce3a95ed9883b456e04949efe7121d0c59bab1b61b5d72c4102eb8
zlibmodule.c https://github.com/python/cpython/pull/97664/files#diff-295b58a9ad1abea83244636cd413e54a5114dcaf34df95f8ca5db806fc6ab188
Lib/gzip.pyhttps://github.com/python/cpython/pull/97664/files#diff-ad9b54ac8ef847cbb11fb0550f7e8cede55b1d92de15899e0a885a94a124838a
View file https://github.com/rhpvorderman/cpython/blob/e3da4155a2c10dd0d8e286c8d5b04c6f36f51a50/Lib/gzip.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/python/cpython/pull/97664/{{ revealButtonHref }}
https://github.com/python/cpython/pull/97664/files#diff-ad9b54ac8ef847cbb11fb0550f7e8cede55b1d92de15899e0a885a94a124838a
https://github.com/python/cpython/pull/97664/files#diff-ad9b54ac8ef847cbb11fb0550f7e8cede55b1d92de15899e0a885a94a124838a
https://github.com/python/cpython/pull/97664/files#diff-ad9b54ac8ef847cbb11fb0550f7e8cede55b1d92de15899e0a885a94a124838a
https://github.com/python/cpython/pull/97664/files#diff-ad9b54ac8ef847cbb11fb0550f7e8cede55b1d92de15899e0a885a94a124838a
https://github.com/python/cpython/pull/97664/files#diff-ad9b54ac8ef847cbb11fb0550f7e8cede55b1d92de15899e0a885a94a124838a
https://github.com/python/cpython/pull/97664/files#diff-ad9b54ac8ef847cbb11fb0550f7e8cede55b1d92de15899e0a885a94a124838a
https://github.com/python/cpython/pull/97664/files#diff-ad9b54ac8ef847cbb11fb0550f7e8cede55b1d92de15899e0a885a94a124838a
https://github.com/python/cpython/pull/97664/files#diff-ad9b54ac8ef847cbb11fb0550f7e8cede55b1d92de15899e0a885a94a124838a
https://github.com/python/cpython/pull/97664/files#diff-ad9b54ac8ef847cbb11fb0550f7e8cede55b1d92de15899e0a885a94a124838a
Lib/test/test_zlib.pyhttps://github.com/python/cpython/pull/97664/files#diff-029a0ce1b89a517af9cd486ab867641e1c90e4ac089dded48ee1b65e604b64aa
View file https://github.com/rhpvorderman/cpython/blob/e3da4155a2c10dd0d8e286c8d5b04c6f36f51a50/Lib/test/test_zlib.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/python/cpython/pull/97664/{{ revealButtonHref }}
https://github.com/python/cpython/pull/97664/files#diff-029a0ce1b89a517af9cd486ab867641e1c90e4ac089dded48ee1b65e604b64aa
https://github.com/python/cpython/pull/97664/files#diff-029a0ce1b89a517af9cd486ab867641e1c90e4ac089dded48ee1b65e604b64aa
Misc/NEWS.d/next/Library/2022-09-30-09-22-37.gh-issue-95534.ndEfPj.rsthttps://github.com/python/cpython/pull/97664/files#diff-6f74b19866f804367baabfc84e35259a67ce6b855a6417ce420bef1b0699cd17
View file https://github.com/rhpvorderman/cpython/blob/e3da4155a2c10dd0d8e286c8d5b04c6f36f51a50/Misc/NEWS.d/next/Library/2022-09-30-09-22-37.gh-issue-95534.ndEfPj.rst
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/python/cpython/pull/97664/{{ revealButtonHref }}
Modules/clinic/zlibmodule.c.hhttps://github.com/python/cpython/pull/97664/files#diff-61dcfbf165ce3a95ed9883b456e04949efe7121d0c59bab1b61b5d72c4102eb8
View file https://github.com/rhpvorderman/cpython/blob/e3da4155a2c10dd0d8e286c8d5b04c6f36f51a50/Modules/clinic/zlibmodule.c.h
Open in desktop https://desktop.github.com
how customized files appear on GitHubhttps://docs.github.com/github/administering-a-repository/customizing-how-changed-files-appear-on-github
Please reload this pagehttps://github.com/python/cpython/pull/97664/files
Please reload this pagehttps://github.com/python/cpython/pull/97664/files
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.