René's URL Explorer Experiment


Title: Proposal: Implement `RcParams` using ChainMap and remove `dict` inheritance by chahak13 · Pull Request #25617 · matplotlib/matplotlib · GitHub

Open Graph Title: Proposal: Implement `RcParams` using ChainMap and remove `dict` inheritance by chahak13 · Pull Request #25617 · matplotlib/matplotlib

X Title: Proposal: Implement `RcParams` using ChainMap and remove `dict` inheritance by chahak13 · Pull Request #25617 · matplotlib/matplotlib

Description: PR Summary The current implementation of RcParams inherits both MutableMapping and dict. Inheriting from dict has a few problems IMO, Any changes in dict get propagated to RcParams directly. (#12601) Subclassing dict means RcParams can be modified using dict.__*__ methods. As a configuration class for matplotlib, I think all updates to RcParams should be possible only using methods defined by the class. (#24730, #12577 ) As it is basically a dictionary, keys can be deleted from RcParams which would affect the working of the library. It should not be possible to use RcParams as a store for keys other than the configuration keys with validators. Proposed Implementation: Remove the dict inheritance and just inherit MutableMapping to main that interface. Introduce namespaces by restructuring the parameters ingested as a dictionary of ChainMaps. For example: namespace_maps = { "backends": ChainMap({}, default_backends_values), "lines": ChainMap({}, default_lines_values), "fonts": ChainMap({}, default_fonts_values), } Where default__values are the default values of the RcParams under that namespace. For example. default_backends_values = {"webagg.port": 8080, "webagg.address": "127.0.0.1", ...} Advantages: Allows concrete grouping of keys, not just visually by key as is the case right now (dotted keys). Contextually related keys can be accessed easily using namespaces. No need to maintain an extra RcParamsDefault object as these defaults will be present in the base default values of the ChainMaps. Contexts can be implemented more elegantly using new_child and parents in ChainMaps as compared to the the current method of creating and deleting RcParams objects. with rc_context(rc={"backends.key1": 123}): print("\nwithin context") print(rcParams['backends']) print("\nafter context") print(rcParams['backends']) would output within context ChainMap({'key1': 123}, {}, {'key1': 'abc', 'key2': 'xyz'}) after context ChainMap({}, {'key1': 'abc', 'key2': 'xyz'}) Complete control over the interface since it is defined entirely by the library. Also satisfies other niceties outlined in #24585 like being able to jump easily to and from user-defined value to baseline value. Disadvantages: popitem() method for MutableMapping is slightly unruly to implement. (Though, I would argue that it should not work on RcParams in any case). Also, relevant discussion here (#12577 (comment)) Tinkering with a long-existing part of the code? Doing this will also allow us to move some extra functions that exist in the matplotlib namespace to the RcParams class instead, clearing up the namespace a little bit. (#2052) Performance Impacts Introducing this structure instead of the entire rcParams being a dictionary makes it a little slower. The timings for a get operation on both the methods were measured using %timeit for 1,000,000 loops each. Current Implementation (dict): In [3]: %timeit -n1000000 mpl.rcParams.get("animation.convert_args", []) 216 ns ± 16.3 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each) Proposed Implementation (ChainMaps): In [12]: %timeit -n1000000 mpl.rcParams.get("animation.convert_args", []) 918 ns ± 1.03 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each) For completion, while disabled right now, the timing for mpl.rcParams["animation"]["convert_args"] is also measured In [15]: %timeit -n1000000 mpl.rcParams["animation"]["convert_args"] 467 ns ± 15 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each) Older description I removed the dict inheritance from the RcParams class and reimplemented its internals using ChainMaps. The interface is still compatible with MutableMapping interface. Using ChainMaps allows namespace access too, for example rcParams['text'] will return all the properties under text.*. I also like the way it allows context management using new_child() and parents. The main goal of the PR is just to see what a different implementation might look like per #24585 and have some more discussion. This implementation can be made efficient. I also have changed a few things like backend to default.backend which is something we might not want in the actual implementation but I have changed here because the focus was on having an implementation and not worrying way too much about changes. It's mainly adding default. to the settings that did not fall under any "category". I did not implement the find_all method initially because from a quick github search, it isn't used anywhere, but it can now be implemented fairly easily by searching on the keys. The __repr__ and __str__ differ from the current implementation as they have a very simple implementation right now. PR Checklist Documentation and Tests Has pytest style unit tests (and pytest passes) Documentation is sphinx and numpydoc compliant (the docs should build without error). New plotting related features are documented with examples. Release Notes New features are marked with a .. versionadded:: directive in the docstring and documented in doc/users/next_whats_new/ API changes are marked with a .. versionchanged:: directive in the docstring and documented in doc/api/next_api_changes/ Release notes conform with instructions in next_whats_new/README.rst or next_api_changes/README.rst

Open Graph Description: PR Summary The current implementation of RcParams inherits both MutableMapping and dict. Inheriting from dict has a few problems IMO, Any changes in dict get propagated to RcParams directly. (#126...

X Description: PR Summary The current implementation of RcParams inherits both MutableMapping and dict. Inheriting from dict has a few problems IMO, Any changes in dict get propagated to RcParams directly. (#126...

Opengraph URL: https://github.com/matplotlib/matplotlib/pull/25617

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:dc070c06-670f-4ad9-303b-f31814092050
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-id907E:3AC145:4D7880:679312:6A523419
html-safe-noncecec9e164244c0d7024c4193f4d98d96d55ba210d6e5e752229f573e491089257
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5MDdFOjNBQzE0NTo0RDc4ODA6Njc5MzEyOjZBNTIzNDE5IiwidmlzaXRvcl9pZCI6Ijc3NjM5NjU2MjY2MjMwNjg0MSIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmac305ab906ae1c5ff26fc7698875cd02cd2ae081299e323c14123bea5b1b0c689c
hovercard-subject-tagpull_request:1302330285
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/matplotlib/matplotlib/pull/25617/files
twitter:imagehttps://avatars.githubusercontent.com/u/29800965?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/29800965?s=400&v=4
og:image:altPR Summary The current implementation of RcParams inherits both MutableMapping and dict. Inheriting from dict has a few problems IMO, Any changes in dict get propagated to RcParams directly. (#126...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
Noneb9a586c06a05a7a86fc7e3f4dbd03e42f6869085879aa184aa6369456dbd50fb
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/matplotlib/matplotlib git https://github.com/matplotlib/matplotlib.git
octolytics-dimension-user_id215947
octolytics-dimension-user_loginmatplotlib
octolytics-dimension-repository_id1385122
octolytics-dimension-repository_nwomatplotlib/matplotlib
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id1385122
octolytics-dimension-repository_network_root_nwomatplotlib/matplotlib
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
release7aed05249554b889eb33d002851a973eebcc7e91
ui-targetcanary-2
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/matplotlib/matplotlib/pull/25617/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fmatplotlib%2Fmatplotlib%2Fpull%2F25617%2Ffiles
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%2Fmatplotlib%2Fmatplotlib%2Fpull%2F25617%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=matplotlib%2Fmatplotlib
Reloadhttps://github.com/matplotlib/matplotlib/pull/25617/files
Reloadhttps://github.com/matplotlib/matplotlib/pull/25617/files
Reloadhttps://github.com/matplotlib/matplotlib/pull/25617/files
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/25617/files
matplotlib https://github.com/matplotlib
matplotlibhttps://github.com/matplotlib/matplotlib
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/25617/files
Notifications https://github.com/login?return_to=%2Fmatplotlib%2Fmatplotlib
Fork 8.4k https://github.com/login?return_to=%2Fmatplotlib%2Fmatplotlib
Star 23k https://github.com/login?return_to=%2Fmatplotlib%2Fmatplotlib
Code https://github.com/matplotlib/matplotlib
Issues 1.1k https://github.com/matplotlib/matplotlib/issues
Pull requests 409 https://github.com/matplotlib/matplotlib/pulls
Actions https://github.com/matplotlib/matplotlib/actions
Projects https://github.com/matplotlib/matplotlib/projects
Wiki https://github.com/matplotlib/matplotlib/wiki
Security and quality 0 https://github.com/matplotlib/matplotlib/security
Insights https://github.com/matplotlib/matplotlib/pulse
Code https://github.com/matplotlib/matplotlib
Issues https://github.com/matplotlib/matplotlib/issues
Pull requests https://github.com/matplotlib/matplotlib/pulls
Actions https://github.com/matplotlib/matplotlib/actions
Projects https://github.com/matplotlib/matplotlib/projects
Wiki https://github.com/matplotlib/matplotlib/wiki
Security and quality https://github.com/matplotlib/matplotlib/security
Insights https://github.com/matplotlib/matplotlib/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Fmatplotlib%2Fmatplotlib%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Fmatplotlib%2Fmatplotlib%2Fissues%2Fnew%2Fchoose
chahak13https://github.com/chahak13
matplotlib:mainhttps://github.com/matplotlib/matplotlib/tree/main
chahak13:chainmap_rcparamshttps://github.com/chahak13/matplotlib/tree/chainmap_rcparams
Conversation 55 https://github.com/matplotlib/matplotlib/pull/25617
Commits 22 https://github.com/matplotlib/matplotlib/pull/25617/commits
Checks 0 https://github.com/matplotlib/matplotlib/pull/25617/checks
Files changed https://github.com/matplotlib/matplotlib/pull/25617/files
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/25617/files
Proposal: Implement RcParams using ChainMap and remove dict inheritance https://github.com/matplotlib/matplotlib/pull/25617/files#top
Show all changes 22 commits https://github.com/matplotlib/matplotlib/pull/25617/files
ab1ea99 Implement RcParams using ChainMaps. chahak13 Apr 4, 2023 https://github.com/matplotlib/matplotlib/pull/25617/commits/ab1ea99718adf4eb5df73979acdafa86e2cf77f9
5177508 Make namespaces variable compact chahak13 Apr 4, 2023 https://github.com/matplotlib/matplotlib/pull/25617/commits/517750871872d7404f8e296d39dc2bb3cb625287
45d4743 Raise KeyError when accessing namespace for now. chahak13 Apr 14, 2023 https://github.com/matplotlib/matplotlib/pull/25617/commits/45d4743b960c00bfc65b183ba30f2e70a0fcca71
133f2af Make linter happy chahak13 Apr 14, 2023 https://github.com/matplotlib/matplotlib/pull/25617/commits/133f2af557178644f8e83474872f69869ed2063b
b7f4fb5 Update repr, str and add find_all chahak13 Apr 14, 2023 https://github.com/matplotlib/matplotlib/pull/25617/commits/b7f4fb5cb8878fba9528808d4660c184d1529c7c
d135342 Fix issue resolve testing backend chahak13 Apr 17, 2023 https://github.com/matplotlib/matplotlib/pull/25617/commits/d135342b1c448bd7b82806c863662b4071f896c1
47b48ee Update a few functions in RcParams chahak13 Apr 17, 2023 https://github.com/matplotlib/matplotlib/pull/25617/commits/47b48ee2282f5e66ac1f5990a9c69fa679d239a3
9a08544 Update type stubs chahak13 Apr 17, 2023 https://github.com/matplotlib/matplotlib/pull/25617/commits/9a0854487040b8827a353c1f0aa00ea72898078a
9a0ad03 Cache splitting keys. chahak13 Apr 25, 2023 https://github.com/matplotlib/matplotlib/pull/25617/commits/9a0ad032f586539d1c4239c46deb5ea1a8756964
7a11e81 Return views for .keys(), .values(), .items() chahak13 Apr 26, 2023 https://github.com/matplotlib/matplotlib/pull/25617/commits/7a11e81abe38615f220eaba74a05f2bcc297a996
4f9d8b6 Add type spec for MutableMapping chahak13 Apr 26, 2023 https://github.com/matplotlib/matplotlib/pull/25617/commits/4f9d8b6f5f782d5f152bf6769b6fadcd5bac531c
54a1a11 Remove `default.` usage outside the RcParams class chahak13 Apr 26, 2023 https://github.com/matplotlib/matplotlib/pull/25617/commits/54a1a113616ebe3b9d2b1a80bb7750270ef3c34d
c101fec Update _split_key stub to staticmethod chahak13 Apr 26, 2023 https://github.com/matplotlib/matplotlib/pull/25617/commits/c101fec43ab1da11c0ff4c2992dbe5463d0b318f
67735b0 Add way to access default params chahak13 May 11, 2023 https://github.com/matplotlib/matplotlib/pull/25617/commits/67735b09bc22949b6b831db23da461d1d443e31f
7e4022a Remove `rcParamsDefault` chahak13 May 11, 2023 https://github.com/matplotlib/matplotlib/pull/25617/commits/7e4022ada95a1e68c6451bf4d666574f7e9c0a66
c23cb29 Update `rcdefaults` to use `style.core.use()` chahak13 May 11, 2023 https://github.com/matplotlib/matplotlib/pull/25617/commits/c23cb2914beba5fb945c22b05b0b80daaaaab90c
0374f46 Make namespaces private and correct setdefault chahak13 May 12, 2023 https://github.com/matplotlib/matplotlib/pull/25617/commits/0374f464a1997a46c73057d801785262b87d7ecd
dd99c1d Remove namespaces and keep chainmap for settings. chahak13 May 28, 2023 https://github.com/matplotlib/matplotlib/pull/25617/commits/dd99c1d5687fae6f6d5adb2d71956135bea29e96
aa282d0 Deprecate clear and other small updates for review chahak13 Jun 8, 2023 https://github.com/matplotlib/matplotlib/pull/25617/commits/aa282d0d3a0dcacc2fc7a59569891cc50930e908
b1754a2 Update delitem chahak13 Jun 8, 2023 https://github.com/matplotlib/matplotlib/pull/25617/commits/b1754a2e97b71ccfed41243ee3bf1a2425fa51a4
faed9ba Make flake8 happy chahak13 Oct 14, 2023 https://github.com/matplotlib/matplotlib/pull/25617/commits/faed9bacfd4c6018fa0d7349f272135852c7c3db
dfbb73f Remove unnecessary deprecation warning context chahak13 Oct 24, 2023 https://github.com/matplotlib/matplotlib/pull/25617/commits/dfbb73f3f1a544eca2449a0884a308bf8d468c8e
Clear filters https://github.com/matplotlib/matplotlib/pull/25617/files
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/25617/files
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/25617/files
__init__.py https://github.com/matplotlib/matplotlib/pull/25617/files#diff-47339c58ad4d3bf37dfc5302e1c27245645ed38258d9b146a3f4d47274ef054d
__init__.pyi https://github.com/matplotlib/matplotlib/pull/25617/files#diff-920237a02c3f54d2a8f6524cd5016498c09f0c6e5b94fe9953971a279f5ab3db
pyplot.py https://github.com/matplotlib/matplotlib/pull/25617/files#diff-d1edb5a528e7423f485b24cac2083d05d365a19352f886bf15af3ef442bdda92
core.py https://github.com/matplotlib/matplotlib/pull/25617/files#diff-becc3462360d02198415578c91804e5b6306ad005f6d9a5fb34bef5a2c29331d
test_rcparams.py https://github.com/matplotlib/matplotlib/pull/25617/files#diff-35afbf0e26422afdfbd0c9f7c7d30f8a4d4e30072785b33e2914f08c7e3315bc
lib/matplotlib/__init__.pyhttps://github.com/matplotlib/matplotlib/pull/25617/files#diff-47339c58ad4d3bf37dfc5302e1c27245645ed38258d9b146a3f4d47274ef054d
View file https://github.com/matplotlib/matplotlib/blob/dfbb73f3f1a544eca2449a0884a308bf8d468c8e/lib/matplotlib/__init__.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/matplotlib/matplotlib/pull/25617/{{ revealButtonHref }}
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-47339c58ad4d3bf37dfc5302e1c27245645ed38258d9b146a3f4d47274ef054d
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-47339c58ad4d3bf37dfc5302e1c27245645ed38258d9b146a3f4d47274ef054d
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-47339c58ad4d3bf37dfc5302e1c27245645ed38258d9b146a3f4d47274ef054d
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-47339c58ad4d3bf37dfc5302e1c27245645ed38258d9b146a3f4d47274ef054d
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-47339c58ad4d3bf37dfc5302e1c27245645ed38258d9b146a3f4d47274ef054d
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-47339c58ad4d3bf37dfc5302e1c27245645ed38258d9b146a3f4d47274ef054d
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-47339c58ad4d3bf37dfc5302e1c27245645ed38258d9b146a3f4d47274ef054d
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-47339c58ad4d3bf37dfc5302e1c27245645ed38258d9b146a3f4d47274ef054d
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-47339c58ad4d3bf37dfc5302e1c27245645ed38258d9b146a3f4d47274ef054d
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/25617/files
tacaswellhttps://github.com/tacaswell
Jun 14, 2023https://github.com/matplotlib/matplotlib/pull/25617/files#r1230118779
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/25617/files
timhoffmhttps://github.com/timhoffm
May 28, 2023https://github.com/matplotlib/matplotlib/pull/25617/files#r1208681836
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/25617/files
tacaswellhttps://github.com/tacaswell
Jun 14, 2023https://github.com/matplotlib/matplotlib/pull/25617/files#r1230097066
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/25617/files
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/25617/files
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-47339c58ad4d3bf37dfc5302e1c27245645ed38258d9b146a3f4d47274ef054d
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-47339c58ad4d3bf37dfc5302e1c27245645ed38258d9b146a3f4d47274ef054d
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-47339c58ad4d3bf37dfc5302e1c27245645ed38258d9b146a3f4d47274ef054d
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-47339c58ad4d3bf37dfc5302e1c27245645ed38258d9b146a3f4d47274ef054d
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-47339c58ad4d3bf37dfc5302e1c27245645ed38258d9b146a3f4d47274ef054d
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-47339c58ad4d3bf37dfc5302e1c27245645ed38258d9b146a3f4d47274ef054d
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-47339c58ad4d3bf37dfc5302e1c27245645ed38258d9b146a3f4d47274ef054d
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-47339c58ad4d3bf37dfc5302e1c27245645ed38258d9b146a3f4d47274ef054d
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-47339c58ad4d3bf37dfc5302e1c27245645ed38258d9b146a3f4d47274ef054d
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-47339c58ad4d3bf37dfc5302e1c27245645ed38258d9b146a3f4d47274ef054d
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-47339c58ad4d3bf37dfc5302e1c27245645ed38258d9b146a3f4d47274ef054d
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-47339c58ad4d3bf37dfc5302e1c27245645ed38258d9b146a3f4d47274ef054d
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-47339c58ad4d3bf37dfc5302e1c27245645ed38258d9b146a3f4d47274ef054d
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-47339c58ad4d3bf37dfc5302e1c27245645ed38258d9b146a3f4d47274ef054d
lib/matplotlib/__init__.pyihttps://github.com/matplotlib/matplotlib/pull/25617/files#diff-920237a02c3f54d2a8f6524cd5016498c09f0c6e5b94fe9953971a279f5ab3db
View file https://github.com/matplotlib/matplotlib/blob/dfbb73f3f1a544eca2449a0884a308bf8d468c8e/lib/matplotlib/__init__.pyi
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/matplotlib/matplotlib/pull/25617/{{ revealButtonHref }}
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-920237a02c3f54d2a8f6524cd5016498c09f0c6e5b94fe9953971a279f5ab3db
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-920237a02c3f54d2a8f6524cd5016498c09f0c6e5b94fe9953971a279f5ab3db
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-920237a02c3f54d2a8f6524cd5016498c09f0c6e5b94fe9953971a279f5ab3db
ksundenhttps://github.com/ksunden
Apr 25, 2023https://github.com/matplotlib/matplotlib/pull/25617/files#r1175986720
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/25617/files
chahak13https://github.com/chahak13
Apr 26, 2023https://github.com/matplotlib/matplotlib/pull/25617/files#r1177197028
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/25617/files
ksundenhttps://github.com/ksunden
Apr 25, 2023https://github.com/matplotlib/matplotlib/pull/25617/files#r1175988211
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/25617/files
chahak13https://github.com/chahak13
Apr 26, 2023https://github.com/matplotlib/matplotlib/pull/25617/files#r1177249297
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/25617/files
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-920237a02c3f54d2a8f6524cd5016498c09f0c6e5b94fe9953971a279f5ab3db
lib/matplotlib/pyplot.pyhttps://github.com/matplotlib/matplotlib/pull/25617/files#diff-d1edb5a528e7423f485b24cac2083d05d365a19352f886bf15af3ef442bdda92
View file https://github.com/matplotlib/matplotlib/blob/dfbb73f3f1a544eca2449a0884a308bf8d468c8e/lib/matplotlib/pyplot.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/matplotlib/matplotlib/pull/25617/{{ revealButtonHref }}
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-d1edb5a528e7423f485b24cac2083d05d365a19352f886bf15af3ef442bdda92
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-d1edb5a528e7423f485b24cac2083d05d365a19352f886bf15af3ef442bdda92
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-d1edb5a528e7423f485b24cac2083d05d365a19352f886bf15af3ef442bdda92
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-d1edb5a528e7423f485b24cac2083d05d365a19352f886bf15af3ef442bdda92
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-d1edb5a528e7423f485b24cac2083d05d365a19352f886bf15af3ef442bdda92
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-d1edb5a528e7423f485b24cac2083d05d365a19352f886bf15af3ef442bdda92
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-d1edb5a528e7423f485b24cac2083d05d365a19352f886bf15af3ef442bdda92
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-d1edb5a528e7423f485b24cac2083d05d365a19352f886bf15af3ef442bdda92
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-d1edb5a528e7423f485b24cac2083d05d365a19352f886bf15af3ef442bdda92
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-d1edb5a528e7423f485b24cac2083d05d365a19352f886bf15af3ef442bdda92
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-d1edb5a528e7423f485b24cac2083d05d365a19352f886bf15af3ef442bdda92
https://github.com/matplotlib/matplotlib/pull/25617/files#diff-d1edb5a528e7423f485b24cac2083d05d365a19352f886bf15af3ef442bdda92
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/25617/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.