René's URL Explorer Experiment


Title: REORG: JoinStyle and CapStyle classes by brunobeltran · Pull Request #18544 · matplotlib/matplotlib · GitHub

Open Graph Title: REORG: JoinStyle and CapStyle classes by brunobeltran · Pull Request #18544 · matplotlib/matplotlib

X Title: REORG: JoinStyle and CapStyle classes by brunobeltran · Pull Request #18544 · matplotlib/matplotlib

Description: Centralize docs and validation for JoinStyle and CapStyle in one place. On top of #18817 #19063. PR Summary First GSOD PR. Follow suggestion of @anntzer in MEP 30 to simply start making the simple string enum cases before moving onto more complicated things like LineStyle. The primary goal of this PR is to create a centralized place to document what is a JoinStyle anytime that parameter is used: class Collection(...): ... def __init__(...): """ ... joinstyle : `.JoinStyle`-like, default: :rc:`patch.joinstyle` Style to use for joining lines for all paths in the collection. """" This PR accomplishes this by adding (totally transparent) JoinStyle and CapStyle classes, which act as both a centralized location for documentation of these "features" of our library, and as validators (and, hopefully, in the future, serializers for rc). The user can still use the standard string input style, i.e. this still works: plt.plot(x, y, joinstyle='miter') Up until this point, I am basically just implementing the GSOD in the way which was agreed upon in the last dev call about this. But there are some additional considerations that come up once you start to implement this. As soon as any end-user-facing function takes a joinstyle argument, we have two options. Either we can immediately convert: def __init__(..., joinstyle=JoinStyle.round): ... # ValueError if invalid `joinstyle` self._joinstyle = JoinStyle(joinstyle) or we can validate the input but store the string: def __init__(..., joinstyle='round'): ... # ValueError if invalid `joinstyle` self._joinstyle = joinstyle if JoinStyle(joinstyle) The former has the upside of being in line with what we already do elsewhere in the library (e.g. MarkerStyle), while the latter has the upside of breaking less API surface naively (EDIT: although, as I point out to Tim in the comments below, this can be very strongly mitigated with enough care in implementing dunder methods for backcompat). This PR implements the approach where we immediately convert (the former of the two above). PR Checklist Has pytest style unit tests (and pytest passes). Is Flake 8 compliant (run flake8 on changed files to check). New features are documented, with examples if plot related. Documentation is sphinx and numpydoc compliant (the docs should build without error). Conforms to Matplotlib style conventions (install flake8-docstrings and pydocstyle<4 and run flake8 --docstring-convention=all). [N/A] New features have an entry in doc/users/next_whats_new/ (follow instructions in README.rst there). [N/A] API changes documented in doc/api/next_api_changes/ (follow instructions in README.rst there). (Note: Tom explicitly does not want this new API surface advertised (yet)).

Open Graph Description: Centralize docs and validation for JoinStyle and CapStyle in one place. On top of #18817 #19063. PR Summary First GSOD PR. Follow suggestion of @anntzer in MEP 30 to simply start making the simple ...

X Description: Centralize docs and validation for JoinStyle and CapStyle in one place. On top of #18817 #19063. PR Summary First GSOD PR. Follow suggestion of @anntzer in MEP 30 to simply start making the simple ...

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

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:0c9763e7-f934-bfa1-e8b8-2fc1e1ccf8de
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idB538:328753:94FF13:C90892:6A5058FE
html-safe-nonce149b4d13f6689e0a684ecee1b3efc68deb44a1b7038a3d62950802fd2347d76a
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCNTM4OjMyODc1Mzo5NEZGMTM6QzkwODkyOjZBNTA1OEZFIiwidmlzaXRvcl9pZCI6IjM4ODUwNjA2NjEzNDUwMTYwNjIiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ==
visitor-hmac6887a9cac4d814403e76349981e4de80e1daa6dde423f8eab5cad9afa96fe08a
hovercard-subject-tagpull_request:491134526
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/18544/files
twitter:imagehttps://avatars.githubusercontent.com/u/1475390?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/1475390?s=400&v=4
og:image:altCentralize docs and validation for JoinStyle and CapStyle in one place. On top of #18817 #19063. PR Summary First GSOD PR. Follow suggestion of @anntzer in MEP 30 to simply start making the simple ...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
Noned6dc8294eb500fa36bbc57472d61fe87c522f9c3c1d64f70f4926f66a66a7efb
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
release7ac0ad2f2c7e4b9056617355fd9e33e22b0c8df9
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/matplotlib/matplotlib/pull/18544/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fmatplotlib%2Fmatplotlib%2Fpull%2F18544%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%2F18544%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/18544/files
Reloadhttps://github.com/matplotlib/matplotlib/pull/18544/files
Reloadhttps://github.com/matplotlib/matplotlib/pull/18544/files
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/18544/files
matplotlib https://github.com/matplotlib
matplotlibhttps://github.com/matplotlib/matplotlib
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/18544/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 411 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
timhoffmhttps://github.com/timhoffm
matplotlib:masterhttps://github.com/matplotlib/matplotlib/tree/master
brunobeltran:join_cap_styleshttps://github.com/brunobeltran/matplotlib/tree/join_cap_styles
Conversation 119 https://github.com/matplotlib/matplotlib/pull/18544
Commits 4 https://github.com/matplotlib/matplotlib/pull/18544/commits
Checks 0 https://github.com/matplotlib/matplotlib/pull/18544/checks
Files changed https://github.com/matplotlib/matplotlib/pull/18544/files
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/18544/files
REORG: JoinStyle and CapStyle classes https://github.com/matplotlib/matplotlib/pull/18544/files#top
Show all changes 4 commits https://github.com/matplotlib/matplotlib/pull/18544/files
d2de8a2 REORG: JoinStyle and CapStyle classes brunobeltran Sep 22, 2020 https://github.com/matplotlib/matplotlib/pull/18544/commits/d2de8a2dcaaa6539224e906baeeca554f7183d76
56f37c3 REVERT: Do not expose JoinStyle/CapStyle at all brunobeltran Oct 20, 2020 https://github.com/matplotlib/matplotlib/pull/18544/commits/56f37c3f0f9246ef8108799ac117c43eb42a274b
3c19b1f DOCS: Centralize JoinStyle/CapStyle docs brunobeltran Oct 20, 2020 https://github.com/matplotlib/matplotlib/pull/18544/commits/3c19b1f5fa5937531cd54a267a2fa6e4f52a6bdc
4894099 REORG: _types -> _enums brunobeltran Dec 14, 2020 https://github.com/matplotlib/matplotlib/pull/18544/commits/4894099e025f0006462d0b1392701ef49876a84d
Clear filters https://github.com/matplotlib/matplotlib/pull/18544/files
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/18544/files
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/18544/files
mpl.css https://github.com/matplotlib/matplotlib/pull/18544/files#diff-f77065d6ea0f44c135ef3abb518b2e42a72ad73520fd2976ea288cc975a751c6
_enums.rst https://github.com/matplotlib/matplotlib/pull/18544/files#diff-4447bf34bcd6d1265ebe3d83750f11133654ae01ef09e809d9500f153a2244d7
index.rst https://github.com/matplotlib/matplotlib/pull/18544/files#diff-29aa340e4bda1ad3e58ca94152483589c34adcfb85c74e8b6e9d54363eb264fb
capstyle.py https://github.com/matplotlib/matplotlib/pull/18544/files#diff-3d36c775d8a5f671b6229b1fad959ae9a5d8ee469085c9487a347c0209564c87
joinstyle.py https://github.com/matplotlib/matplotlib/pull/18544/files#diff-ea9ff4c4298063d3fb37b077c82865b003237c12954d6abf3f540d017c93ece8
_enums.py https://github.com/matplotlib/matplotlib/pull/18544/files#diff-4f5a9225e8c3e58d5a37a8ba5b5e04b5cd04528d90d27d384fcd68e03c265a3e
backend_bases.py https://github.com/matplotlib/matplotlib/pull/18544/files#diff-c21fb96269cbb9b214edf0c22981b347d8b710abaad167da678242ce8a539bb2
collections.py https://github.com/matplotlib/matplotlib/pull/18544/files#diff-0563f83260b79acbd260c8f0207b01ba8182df37bf2ccd9216d9a3c6a70cbf29
lines.py https://github.com/matplotlib/matplotlib/pull/18544/files#diff-be677869a88f58790f2387fb2ac0ae12e2e9610d7c7096e25d3087d5ed9645c8
markers.py https://github.com/matplotlib/matplotlib/pull/18544/files#diff-0463a29ec8272d330266fc7f9314e6d1ee12dd8099a8b7184dd510823326991b
patches.py https://github.com/matplotlib/matplotlib/pull/18544/files#diff-03b74bfefbb7d4eca2804f274825899d191f8bacdbe99ea973d88925f15d1169
rcsetup.py https://github.com/matplotlib/matplotlib/pull/18544/files#diff-cbdeb0e4217c66c0eab3ff5027da14906cb705419722f8269bc9ccaadd2422b1
test_collections.py https://github.com/matplotlib/matplotlib/pull/18544/files#diff-6862748ea80410b218b68ce4a5af65b38140420e1e408e76be5de3d241d34be6
doc/_static/mpl.csshttps://github.com/matplotlib/matplotlib/pull/18544/files#diff-f77065d6ea0f44c135ef3abb518b2e42a72ad73520fd2976ea288cc975a751c6
View file https://github.com/brunobeltran/matplotlib/blob/4894099e025f0006462d0b1392701ef49876a84d/doc/_static/mpl.css
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/matplotlib/matplotlib/pull/18544/{{ revealButtonHref }}
https://github.com/matplotlib/matplotlib/pull/18544/files#diff-f77065d6ea0f44c135ef3abb518b2e42a72ad73520fd2976ea288cc975a751c6
https://github.com/matplotlib/matplotlib/pull/18544/files#diff-f77065d6ea0f44c135ef3abb518b2e42a72ad73520fd2976ea288cc975a751c6
https://github.com/matplotlib/matplotlib/pull/18544/files#diff-f77065d6ea0f44c135ef3abb518b2e42a72ad73520fd2976ea288cc975a751c6
https://github.com/matplotlib/matplotlib/pull/18544/files#diff-f77065d6ea0f44c135ef3abb518b2e42a72ad73520fd2976ea288cc975a751c6
https://github.com/matplotlib/matplotlib/pull/18544/files#diff-f77065d6ea0f44c135ef3abb518b2e42a72ad73520fd2976ea288cc975a751c6
https://github.com/matplotlib/matplotlib/pull/18544/files#diff-f77065d6ea0f44c135ef3abb518b2e42a72ad73520fd2976ea288cc975a751c6
https://github.com/matplotlib/matplotlib/pull/18544/files#diff-f77065d6ea0f44c135ef3abb518b2e42a72ad73520fd2976ea288cc975a751c6
doc/api/_enums.rsthttps://github.com/matplotlib/matplotlib/pull/18544/files#diff-4447bf34bcd6d1265ebe3d83750f11133654ae01ef09e809d9500f153a2244d7
View file https://github.com/brunobeltran/matplotlib/blob/4894099e025f0006462d0b1392701ef49876a84d/doc/api/_enums.rst
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/matplotlib/matplotlib/pull/18544/{{ revealButtonHref }}
doc/api/index.rsthttps://github.com/matplotlib/matplotlib/pull/18544/files#diff-29aa340e4bda1ad3e58ca94152483589c34adcfb85c74e8b6e9d54363eb264fb
View file https://github.com/brunobeltran/matplotlib/blob/4894099e025f0006462d0b1392701ef49876a84d/doc/api/index.rst
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/matplotlib/matplotlib/pull/18544/{{ revealButtonHref }}
https://github.com/matplotlib/matplotlib/pull/18544/files#diff-29aa340e4bda1ad3e58ca94152483589c34adcfb85c74e8b6e9d54363eb264fb
https://github.com/matplotlib/matplotlib/pull/18544/files#diff-29aa340e4bda1ad3e58ca94152483589c34adcfb85c74e8b6e9d54363eb264fb
examples/lines_bars_and_markers/capstyle.pyhttps://github.com/matplotlib/matplotlib/pull/18544/files#diff-3d36c775d8a5f671b6229b1fad959ae9a5d8ee469085c9487a347c0209564c87
View file https://github.com/brunobeltran/matplotlib/blob/4894099e025f0006462d0b1392701ef49876a84d/examples/lines_bars_and_markers/capstyle.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/matplotlib/matplotlib/pull/18544/{{ revealButtonHref }}
examples/lines_bars_and_markers/joinstyle.pyhttps://github.com/matplotlib/matplotlib/pull/18544/files#diff-ea9ff4c4298063d3fb37b077c82865b003237c12954d6abf3f540d017c93ece8
View file https://github.com/brunobeltran/matplotlib/blob/4894099e025f0006462d0b1392701ef49876a84d/examples/lines_bars_and_markers/joinstyle.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/matplotlib/matplotlib/pull/18544/{{ revealButtonHref }}
jklymakhttps://github.com/jklymak
Dec 10, 2020https://github.com/matplotlib/matplotlib/pull/18544/files#r540373697
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/18544/files
brunobeltranhttps://github.com/brunobeltran
Dec 10, 2020https://github.com/matplotlib/matplotlib/pull/18544/files#r540396033
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
the reredirects packagehttps://pypi.org/project/sphinx-reredirects/
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/18544/files
jklymakhttps://github.com/jklymak
Dec 10, 2020https://github.com/matplotlib/matplotlib/pull/18544/files#r540398189
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/18544/files
brunobeltranhttps://github.com/brunobeltran
Dec 10, 2020https://github.com/matplotlib/matplotlib/pull/18544/files#r540419326
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/18544/files
jklymakhttps://github.com/jklymak
Dec 10, 2020https://github.com/matplotlib/matplotlib/pull/18544/files#r540421686
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/18544/files
QuLogichttps://github.com/QuLogic
Dec 10, 2020https://github.com/matplotlib/matplotlib/pull/18544/files#r540466014
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/18544/files
jklymakhttps://github.com/jklymak
Dec 10, 2020https://github.com/matplotlib/matplotlib/pull/18544/files#r540476396
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/18544/files
timhoffmhttps://github.com/timhoffm
Dec 12, 2020https://github.com/matplotlib/matplotlib/pull/18544/files#r541457544
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/18544/files
lib/matplotlib/_enums.pyhttps://github.com/matplotlib/matplotlib/pull/18544/files#diff-4f5a9225e8c3e58d5a37a8ba5b5e04b5cd04528d90d27d384fcd68e03c265a3e
View file https://github.com/brunobeltran/matplotlib/blob/4894099e025f0006462d0b1392701ef49876a84d/lib/matplotlib/_enums.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/matplotlib/matplotlib/pull/18544/{{ revealButtonHref }}
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/18544/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.