Skip to content

Commit f1026c0

Browse files
authored
DOC Add a button to copy code (scikit-learn#12512) (scikit-learn#26666)
1 parent 02dce94 commit f1026c0

File tree

9 files changed

+80
-128
lines changed

9 files changed

+80
-128
lines changed

build_tools/circle/doc_environment.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ dependencies:
2424
- compilers
2525
- sphinx=6.0.0
2626
- sphinx-gallery
27+
- sphinx-copybutton
2728
- numpydoc
2829
- sphinx-prompt
2930
- plotly

build_tools/circle/doc_linux-64_conda.lock

Lines changed: 50 additions & 49 deletions
Large diffs are not rendered by default.

build_tools/circle/doc_min_dependencies_environment.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ dependencies:
2424
- compilers
2525
- sphinx=4.0.1 # min
2626
- sphinx-gallery=0.7.0 # min
27+
- sphinx-copybutton=0.5.2 # min
2728
- numpydoc=1.2.0 # min
2829
- sphinx-prompt=1.3.0 # min
2930
- plotly=5.14.0 # min

build_tools/circle/doc_min_dependencies_linux-64_conda.lock

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Generated by conda-lock.
22
# platform: linux-64
3-
# input_hash: b6da36fc22a70d5ecc78b7b7beca6ea69727004c0a3021ad5474f9bcbe59b2ac
3+
# input_hash: bb99cb4ee565393de32be05e9114b954d86564992c5716e1305d011d8a88104d
44
@EXPLICIT
55
https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81
66
https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2023.5.7-hbcca054_0.conda#f5c65075fc34438d5b456c7f3f5ab695
@@ -32,7 +32,7 @@ https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-h166bdaf_0.tar.bz2
3232
https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda#40b61aab5c7ba9ff276c41cfffe6b80b
3333
https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.3.0-h0b41bf4_0.conda#0d4a7508d8c6c65314f2b9c1f56ad408
3434
https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-0.10.0-he1b5a44_0.tar.bz2#78ccac2098edcd3673af2ceb3e95f932
35-
https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.13-h166bdaf_4.tar.bz2#f3f9de449d32ca9b9c66a22863c96f41
35+
https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.13-hd590300_5.conda#f36c115f1ee199da648e0597ec2047ad
3636
https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.4-hcb278e6_0.conda#681105bccc2a3f7f1a837d47d39c9179
3737
https://conda.anaconda.org/conda-forge/linux-64/nspr-4.35-h27087fc_0.conda#da0ec11a6454ae19bff5b02ed881a2b1
3838
https://conda.anaconda.org/conda-forge/linux-64/openssl-1.1.1u-hd590300_0.conda#cc1c2db83ae28a28871d52b035739488
@@ -54,7 +54,7 @@ https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.42.0-h2797004_0.cond
5454
https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.13-h7f98852_1004.tar.bz2#b3653fdc58d03face9724f602218a904
5555
https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda#47d31b792659ce70f470b5c82fdfb7a4
5656
https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2#5b8c42eb62e9fc961af70bdd6a26e168
57-
https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.13-h166bdaf_4.tar.bz2#4b11e365c0275b808be78b30f904e295
57+
https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.13-hd590300_5.conda#68c34ec6149623be41a1933ab996a209
5858
https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-h3eb15da_6.conda#6b63daed8feeca47be78f323e793d555
5959
https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.0.9-h166bdaf_8.tar.bz2#e5613f2bc717e9945840ff474419b8e4
6060
https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.1.1-h516909a_0.tar.bz2#d98aa4948ec35f52907e2d6152e2b255
@@ -65,7 +65,7 @@ https://conda.anaconda.org/conda-forge/linux-64/libclang-9.0.1-default_hb4e5071_
6565
https://conda.anaconda.org/conda-forge/linux-64/libglib-2.66.3-hbe7bbb4_0.tar.bz2#d5a09a9e981849b751cb75656b7302a0
6666
https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.5.0-h6adf6a1_2.conda#2e648a34072eb39d7c4fc2a9981c5f0c
6767
https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.10-hee79883_0.tar.bz2#0217b0926808b1adf93247bba489d733
68-
https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-16.0.5-h4dfa4b3_0.conda#9441a97b74c692d969ff465ac6c0ccea
68+
https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-16.0.6-h4dfa4b3_0.conda#b096c85c415519259e731d8fb719a3ef
6969
https://conda.anaconda.org/conda-forge/linux-64/nss-3.89-he45b914_0.conda#2745719a58eeaab6657256a3f142f099
7070
https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.42.0-h2c6b66d_0.conda#1192f6ec654a5bc4ee1d64bdc4a3e5cc
7171
https://conda.anaconda.org/conda-forge/linux-64/brotli-1.0.9-h166bdaf_8.tar.bz2#2ff08978892a3e8b954397c461f18418
@@ -88,7 +88,7 @@ https://conda.anaconda.org/conda-forge/linux-64/cython-0.29.33-py38h8dc9893_0.co
8888
https://conda.anaconda.org/conda-forge/linux-64/docutils-0.17.1-py38h578d9bd_3.tar.bz2#34e1f12e3ed15aff218644e9d865b722
8989
https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.1.1-pyhd8ed1ab_0.conda#7312299d7a0ea4993159229b7d2dceb2
9090
https://conda.anaconda.org/conda-forge/noarch/execnet-1.9.0-pyhd8ed1ab_0.tar.bz2#0e521f7a5e60d508b121d38b04874fb2
91-
https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.5.0-pyh1a96a4e_0.conda#20edd290b319aa0eff3e9055375756dc
91+
https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.6.0-pyh1a96a4e_0.conda#50ea2067ec92dfcc38b4f07992d7e235
9292
https://conda.anaconda.org/conda-forge/linux-64/glib-2.66.3-h58526e2_0.tar.bz2#62c2e5c84f6cdc7ded2307ef9c30dc8c
9393
https://conda.anaconda.org/conda-forge/noarch/idna-3.4-pyhd8ed1ab_0.tar.bz2#34272b248891bddccc64479f9a7fffed
9494
https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2#7de5386c8fea29e76b303f37dde4c352
@@ -104,7 +104,7 @@ https://conda.anaconda.org/conda-forge/noarch/pluggy-1.0.0-pyhd8ed1ab_5.tar.bz2#
104104
https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.5-py38h1de0b5d_0.conda#92e899e7b0ed27c793014d1fa54f9b7b
105105
https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyh6c4a22f_0.tar.bz2#b4613d7e7a493916d867842a6a148054
106106
https://conda.anaconda.org/conda-forge/noarch/pygments-2.15.1-pyhd8ed1ab_0.conda#d316679235612869eba305aa7d41d9bf
107-
https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.9-pyhd8ed1ab_0.tar.bz2#e8fbc1b54b25f4b08281467bc13b70cc
107+
https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.0-pyhd8ed1ab_0.conda#d3ed087d1f7f8f5590e8e87b57a8ce64
108108
https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2#2a7de29fb590ca14b5243c4c812c8025
109109
https://conda.anaconda.org/conda-forge/noarch/pytz-2023.3-pyhd8ed1ab_0.conda#d3076b483092a435832603243567bc31
110110
https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0-py38h0a891b7_5.tar.bz2#0856c59f9ddb710c640dc0428d66b1b7
@@ -129,7 +129,7 @@ https://conda.anaconda.org/conda-forge/noarch/babel-2.12.1-pyhd8ed1ab_1.conda#ac
129129
https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.12.0-py38h0a891b7_1.tar.bz2#183f6160ab3498b882e903b06be7d430
130130
https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-hfdff14a_1.tar.bz2#4caaca6356992ee545080c7d7193b5a3
131131
https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.14.5-h36ae1b5_2.tar.bz2#00084ab2657be5bf0ba0757ccde797ef
132-
https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.6.0-pyha770c72_0.conda#f91a5d5175fb7ff2a91952ec7da59cb9
132+
https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.7.0-pyha770c72_0.conda#ba3786c6846e46038fe60c785d46dc81
133133
https://conda.anaconda.org/conda-forge/noarch/jinja2-2.11.3-pyhd8ed1ab_2.tar.bz2#bdedf6199eec03402a0c5db1f25e891e
134134
https://conda.anaconda.org/conda-forge/noarch/joblib-1.2.0-pyhd8ed1ab_0.tar.bz2#7583652522d71ad78ba536bba06940eb
135135
https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.8.0-20_mkl.tar.bz2#14b25490fdcc44e879ac6c10fe764f68
@@ -138,23 +138,24 @@ https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.61.0-pyhd8ed1ab_
138138
https://conda.anaconda.org/conda-forge/noarch/partd-1.4.0-pyhd8ed1ab_0.conda#721dab5803ea92ce02ddc4ee50aa0c48
139139
https://conda.anaconda.org/conda-forge/noarch/pip-23.1.2-pyhd8ed1ab_0.conda#7288da0d36821349cf1126e8670292df
140140
https://conda.anaconda.org/conda-forge/noarch/plotly-5.14.0-pyhd8ed1ab_0.conda#6a7bcc42ef58dd6cf3da9333ea102433
141+
https://conda.anaconda.org/conda-forge/noarch/pytest-7.3.2-pyhd8ed1ab_1.conda#f2465696f4396245eca4613f6e924796
141142
https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984
142143
https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.6.3-hd8ed1ab_0.conda#3876f650ed7d0f95d70fa4b647621909
143-
https://conda.anaconda.org/conda-forge/noarch/urllib3-2.0.2-pyhd8ed1ab_0.conda#81a763f3c64fe6d5f32e033b0325265d
144+
https://conda.anaconda.org/conda-forge/noarch/urllib3-2.0.3-pyhd8ed1ab_0.conda#ae465d0fbf9f1979cb2d8d4043d885e2
144145
https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.14.5-h0935bb2_2.tar.bz2#eb125ee86480e00a4a1ed45a577c3311
145-
https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.6.0-hd8ed1ab_0.conda#3cbc9615f10a3d471532b83e4250b971
146+
https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.7.0-hd8ed1ab_0.conda#27a4cec373ec84d1c1aa02a1e37f8eaf
146147
https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.8.0-20_mkl.tar.bz2#8274dc30518af9df1de47f5d9e73165c
147148
https://conda.anaconda.org/conda-forge/linux-64/numpy-1.17.3-py38h95a1406_0.tar.bz2#bc0cbf611fe2f86eab29b98e51404f5e
148-
https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.5.1-pyhd8ed1ab_0.conda#e2be672aece1f060adf7154f76531a35
149-
https://conda.anaconda.org/conda-forge/noarch/pytest-7.3.1-pyhd8ed1ab_0.conda#547c7de697ec99b494a28ddde185b5a4
149+
https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.6.0-pyhd8ed1ab_0.conda#741384b21c1b512617f4ee4ea8457c5d
150+
https://conda.anaconda.org/conda-forge/noarch/pytest-forked-1.6.0-pyhd8ed1ab_0.conda#a46947638b6e005b63d2d6271da529b0
150151
https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda#a30144e4156cdbb236f99ebb49828f8b
151152
https://conda.anaconda.org/conda-forge/linux-64/blas-2.20-mkl.tar.bz2#e7d09a07f5413e53dca5282b8fa50bed
152153
https://conda.anaconda.org/conda-forge/noarch/dask-core-2023.5.0-pyhd8ed1ab_0.conda#03ed2d040648a5ba1063bf1cb0d87b78
153-
https://conda.anaconda.org/conda-forge/noarch/imageio-2.28.1-pyh24c5eb1_0.conda#ef3541a8cd9a55879932486a097b7fed
154+
https://conda.anaconda.org/conda-forge/noarch/imageio-2.31.1-pyh24c5eb1_0.conda#1051cc0376612ba101d4f59e954a1ff4
154155
https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.1.3-py38h250f245_0.tar.bz2#eb182969d8ed019d4de6939f393270d2
155156
https://conda.anaconda.org/conda-forge/linux-64/pandas-1.0.5-py38hcb8c335_0.tar.bz2#1e1b4382170fd26cf722ef008ffb651e
156157
https://conda.anaconda.org/conda-forge/noarch/pooch-1.7.0-pyha770c72_3.conda#5936894aade8240c867d292aa0d980c6
157-
https://conda.anaconda.org/conda-forge/noarch/pytest-forked-1.6.0-pyhd8ed1ab_0.conda#a46947638b6e005b63d2d6271da529b0
158+
https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-2.5.0-pyhd8ed1ab_0.tar.bz2#1fdd1f3baccf0deb647385c677a1a48e
158159
https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.1.1-py38h5c078b8_3.tar.bz2#dafeef887e68bd18ec84681747ca0fd5
159160
https://conda.anaconda.org/conda-forge/linux-64/qt-5.12.5-hd8c4c69_1.tar.bz2#0e105d4afe0c3c81c4fbd9937ec4f359
160161
https://conda.anaconda.org/conda-forge/linux-64/scipy-1.5.0-py38h18bccfc_0.tar.bz2#b6fda3b4ee494afef756621daa115d4d
@@ -163,9 +164,9 @@ https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.2-pyhd8ed1ab_0.tar.bz2#
163164
https://conda.anaconda.org/conda-forge/noarch/patsy-0.5.3-pyhd8ed1ab_0.tar.bz2#50ef6b29b1fb0768ca82c5aeb4fb2d96
164165
https://conda.anaconda.org/conda-forge/linux-64/pyamg-4.0.0-py38hf6732f7_1003.tar.bz2#44e00bf7a4b6a564e9313181aaea2615
165166
https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.12.3-py38ha8c2ead_3.tar.bz2#242c206b0c30fdc4c18aea16f04c4262
166-
https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-2.5.0-pyhd8ed1ab_0.tar.bz2#1fdd1f3baccf0deb647385c677a1a48e
167167
https://conda.anaconda.org/conda-forge/linux-64/scikit-image-0.16.2-py38hb3f55d8_0.tar.bz2#468b398fefac8884cd6e6513af66549b
168168
https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.12.2-pyhd8ed1ab_0.conda#cf88f3a1c11536bc3c10c14ad00ccc42
169+
https://conda.anaconda.org/conda-forge/noarch/sphinx-copybutton-0.5.2-pyhd8ed1ab_0.conda#ac832cc43adc79118cf6e23f1f9b8995
169170
https://conda.anaconda.org/conda-forge/noarch/sphinx-gallery-0.7.0-py_0.tar.bz2#80bad3f857ecc86a4ab73f3e57addd13
170171
https://conda.anaconda.org/conda-forge/noarch/sphinx-prompt-1.3.0-py_0.tar.bz2#9363002e2a134a287af4e32ff0f26cdc
171172
https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.1.3-py38_0.tar.bz2#1992ab91bbff86ded8d99d1f488d8e8b

build_tools/update_environments_and_lock_files.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,7 @@ def remove_from(alist, to_remove):
249249
"compilers",
250250
"sphinx",
251251
"sphinx-gallery",
252+
"sphinx-copybutton",
252253
"numpydoc",
253254
"sphinx-prompt",
254255
"plotly",
@@ -265,6 +266,7 @@ def remove_from(alist, to_remove):
265266
"sphinx": "min",
266267
"pandas": "min",
267268
"sphinx-gallery": "min",
269+
"sphinx-copybutton": "min",
268270
"numpydoc": "min",
269271
"sphinx-prompt": "min",
270272
"sphinxext-opengraph": "min",
@@ -283,6 +285,7 @@ def remove_from(alist, to_remove):
283285
"compilers",
284286
"sphinx",
285287
"sphinx-gallery",
288+
"sphinx-copybutton",
286289
"numpydoc",
287290
"sphinx-prompt",
288291
"plotly",

doc/conf.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,16 @@
5858
"sphinx_issues",
5959
"add_toctree_functions",
6060
"sphinx-prompt",
61+
"sphinx_copybutton",
6162
"sphinxext.opengraph",
6263
"doi_role",
6364
"allow_nan_estimators",
6465
"matplotlib.sphinxext.plot_directive",
6566
]
6667

68+
# Specify how to identify the prompt when copying code snippets
69+
copybutton_prompt_text = ">>> "
70+
6771
try:
6872
import jupyterlite_sphinx # noqa: F401
6973

doc/themes/scikit-learn-modern/javascript.html

Lines changed: 3 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@
1313
</script>
1414
{% endif %}
1515

16+
<script src="{{ pathto('_static/clipboard.min.js', 1) }}"></script>
17+
<script src="{{ pathto('_static/copybutton.js', 1) }}"></script>
18+
1619
<script>
1720
$(document).ready(function() {
1821
/* Add a [>>>] button on the top-right corner of code samples to hide
@@ -26,46 +29,17 @@
2629

2730
// get the styles from the current theme
2831
pre.parent().parent().css('position', 'relative');
29-
var hide_text = 'Hide prompts and outputs';
30-
var show_text = 'Show prompts and outputs';
3132

3233
// create and add the button to all the code blocks that contain >>>
3334
div.each(function(index) {
3435
var jthis = $(this);
35-
if (jthis.find('.gp').length > 0) {
36-
var button = $('<span class="copybutton">&gt;&gt;&gt;</span>');
37-
button.attr('title', hide_text);
38-
button.data('hidden', 'false');
39-
jthis.prepend(button);
40-
}
4136
// tracebacks (.gt) contain bare text elements that need to be
4237
// wrapped in a span to work with .nextUntil() (see later)
4338
jthis.find('pre:has(.gt)').contents().filter(function() {
4439
return ((this.nodeType == 3) && (this.data.trim().length > 0));
4540
}).wrap('<span>');
4641
});
4742

48-
// define the behavior of the button when it's clicked
49-
$('.copybutton').click(function(e){
50-
e.preventDefault();
51-
var button = $(this);
52-
if (button.data('hidden') === 'false') {
53-
// hide the code output
54-
button.parent().find('.go, .gp, .gt').hide();
55-
button.next('pre').find('.gt').nextUntil('.gp, .go').css('visibility', 'hidden');
56-
button.css('text-decoration', 'line-through');
57-
button.attr('title', show_text);
58-
button.data('hidden', 'true');
59-
} else {
60-
// show the code output
61-
button.parent().find('.go, .gp, .gt').show();
62-
button.next('pre').find('.gt').nextUntil('.gp, .go').css('visibility', 'visible');
63-
button.css('text-decoration', 'none');
64-
button.attr('title', hide_text);
65-
button.data('hidden', 'false');
66-
}
67-
});
68-
6943
/*** Add permalink buttons next to glossary terms ***/
7044
$('dl.glossary > dt[id]').append(function() {
7145
return ('<a class="headerlink" href="#' +

doc/themes/scikit-learn-modern/static/css/theme.css

Lines changed: 2 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -923,14 +923,8 @@ dt.label {
923923
padding-right: 0.5rem;
924924
}
925925

926-
/* copy button */
927-
div.highlight:hover span.copybutton {
928-
background-color: #3F556B;
929-
color: white;
930-
}
931-
932-
div.highlight:hover span.copybutton:hover {
933-
background-color: #20252B;
926+
button.copybtn {
927+
border: 0;
934928
}
935929

936930
div.body img {
@@ -958,34 +952,6 @@ img.align-right, figure.align-right,
958952
margin-left: 1em;
959953
}
960954

961-
/* copybutton */
962-
963-
.copybutton {
964-
cursor: pointer;
965-
position: absolute;
966-
top: 0px;
967-
right: 0px;
968-
border: 1px solid rgb(221, 221, 221);
969-
color: rgb(221, 221, 221);
970-
font-family: monospace;
971-
padding-left: 0.2rem;
972-
padding-right: 0.2rem;
973-
}
974-
975-
div.highlight:hover span.copybutton::after {
976-
background: #3F556B;
977-
border-radius: 0.25rem;
978-
color: white;
979-
content: attr(title);
980-
padding: 0.25rem;
981-
position: absolute;
982-
z-index: 98;
983-
width: 100px;
984-
font-size: 0.7rem;
985-
top: 0;
986-
right: 0;
987-
}
988-
989955
/* world */
990956

991957
img.avatar {

sklearn/_min_dependencies.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
"polars": ("0.18.2", "tests"),
4444
"pyarrow": ("12.0.0", "tests"),
4545
"sphinx": ("4.0.1", "docs"),
46+
"sphinx-copybutton": ("0.5.2", "docs"),
4647
"sphinx-gallery": ("0.7.0", "docs"),
4748
"numpydoc": ("1.2.0", "docs, tests"),
4849
"Pillow": ("7.1.2", "docs"),

0 commit comments

Comments
 (0)