Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork74
Add a copy button to code samples#231
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
tomasr8 commentedApr 13, 2025
The docsbuild CI seems broken, could it be related to this change:python/docsbuild-scripts@2113fd7 ? |
hugovk commentedApr 13, 2025
Yep, fixed here in#232. I've updated the branch from |
hugovk left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Thanks for the PR!
It's working well on a quick test on Chrome, Safari, Firefox and Opera on macOS, and Chrome on Android.
For now it's text but maybe we could use an icon instead?
An advantage of text over icons is it's more accessible and less open to misinterpretation and different cultural associations.
However, GitHub and Discourse use a double-square icon, so this may be familiar:
a=1b=2asserta<b

https://discuss.python.org/t/pep-781-make-type-checking-a-built-in-constant/85728/1
And when clicked, GitHub shows a tick and "Copied", Discourse shows "copied!". They also use aria-labels for accessibility.
Discord is similar and shows a tick when clicked:

But I'm fine with this text-only version, and an icon could also be a followup if we want that.
I would suggest to use
navigator.clipboardwhich has been supported by all major browsers for >5 years at this point.
Yes, that feels long enough, it has~95% support and we don't need to support copy for older browsers. But what happens on a browser without support? As long as we don't break things completely.
Uh oh!
There was an error while loading.Please reload this page.
tomasr8 commentedApr 14, 2025
Looks like there's an issue with the docs workflow: |
hugovk commentedApr 15, 2025
Also happening on https://github.com/python/python-docs-theme/actions/runs/14452159103/job/40527148242#step:6:32 Not a new failure, but it only started failing the build recently! Here's the previous https://github.com/python/python-docs-theme/actions/runs/14428653230/job/40460802134#step:6:32 Anyway, don't worry about it for this PR :) |
tomasr8 commentedApr 15, 2025
Alright, just wanted to point it out in case you haven't noticed (unlikely, I know 😄 ) Anyway, I updated the PR based on your feedback - I added proper error handling and feature detection for |
hugovk left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Thanks!
python-cla-botbot commentedApr 18, 2025 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
d528dbc intopython:mainUh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
I kept the style similar to the previous button. For now it's text but maybe we could use an icon instead?
Note that unlike the previous button, I added the copy button to all code samples, not only the interactive ones.
I'd like to know what you think!
Before:

After:


Single line:


copybtn.webm
📚 Documentation preview 📚:https://python-docs-theme-previews--231.org.readthedocs.build/