Merge branch 'master' into staging
[jackhill/guix/guix.git] / gnu / packages / sphinx.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2014 David Thompson <davet@gnu.org>
3 ;;; Copyright © 2015, 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
4 ;;; Copyright © 2015, 2016, 2017 Leo Famulari <leo@famulari.name>
5 ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
6 ;;; Copyright © 2016, 2017, 2018, 2019 Marius Bakke <mbakke@fastmail.com>
7 ;;; Copyright © 2017 Danny Milosavljevic <dannym+a@scratchpost.org>
8 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
9 ;;; Copyright © 2017 Frederick M. Muriithi <fredmanglis@gmail.com>
10 ;;; Copyright © 2017 Christopher Allan Webber <cwebber@dustycloud.org>
11 ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
12 ;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
13 ;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
14 ;;;
15 ;;; This file is part of GNU Guix.
16 ;;;
17 ;;; GNU Guix is free software; you can redistribute it and/or modify it
18 ;;; under the terms of the GNU General Public License as published by
19 ;;; the Free Software Foundation; either version 3 of the License, or (at
20 ;;; your option) any later version.
21 ;;;
22 ;;; GNU Guix is distributed in the hope that it will be useful, but
23 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
24 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25 ;;; GNU General Public License for more details.
26 ;;;
27 ;;; You should have received a copy of the GNU General Public License
28 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
29
30 (define-module (gnu packages sphinx)
31 #:use-module (guix packages)
32 #:use-module (guix download)
33 #:use-module (guix utils)
34 #:use-module (guix build-system python)
35 #:use-module ((guix licenses) #:prefix license:)
36 #:use-module (gnu packages)
37 #:use-module (gnu packages check)
38 #:use-module (gnu packages graphviz)
39 #:use-module (gnu packages image)
40 #:use-module (gnu packages imagemagick)
41 #:use-module (gnu packages python-web)
42 #:use-module (gnu packages python-xyz)
43 #:use-module (gnu packages time))
44
45 (define-public python-sphinx
46 (package
47 (name "python-sphinx")
48 (version "2.1.2")
49 (source
50 (origin
51 (method url-fetch)
52 (uri (pypi-uri "Sphinx" version))
53 (sha256
54 (base32
55 "09y4mjmbxz94pmfr2lzf1hkx2xk0khcpb8xsqfmir4l7dds9x9zr"))))
56 (build-system python-build-system)
57 (arguments
58 `(#:phases
59 (modify-phases %standard-phases
60 (replace 'check
61 (lambda _
62 ;; Requires Internet access.
63 (delete-file "tests/test_build_linkcheck.py")
64 (substitute* "tests/test_build_latex.py"
65 (("@pytest.mark.sphinx\\('latex', testroot='images'\\)")
66 "@pytest.mark.skip()"))
67 (invoke "make" "test"))))))
68 (propagated-inputs
69 `(("python-imagesize" ,python-imagesize)
70 ("python-sphinx-alabaster-theme"
71 ,python-sphinx-alabaster-theme)
72 ("python-babel" ,python-babel)
73 ("python-snowballstemmer" ,python-snowballstemmer)
74 ("python-docutils" ,python-docutils)
75 ("python-jinja2" ,python-jinja2)
76 ("python-packaging" ,python-packaging)
77 ("python-pygments" ,python-pygments)
78 ("python-requests" ,python-requests)
79 ("python-sphinxcontrib-applehelp" ,python-sphinxcontrib-applehelp)
80 ("python-sphinxcontrib-devhelp" ,python-sphinxcontrib-devhelp)
81 ("python-sphinxcontrib-htmlhelp" ,python-sphinxcontrib-htmlhelp)
82 ("python-sphinxcontrib-jsmath" ,python-sphinxcontrib-jsmath)
83 ("python-sphinxcontrib-qthelp" ,python-sphinxcontrib-qthelp)
84 ("python-sphinxcontrib-serializinghtml"
85 ,python-sphinxcontrib-serializinghtml)))
86 (native-inputs
87 `(("graphviz" ,graphviz)
88 ("imagemagick" ,imagemagick) ;for "convert"
89 ("python-html5lib" ,python-html5lib)
90 ("python-mock" ,python-mock)
91 ("python-nose" ,python-nose)
92 ("python-pytest" ,python-pytest)))
93 (home-page "https://sphinx-doc.org/")
94 (synopsis "Python documentation generator")
95 (description "Sphinx is a tool that makes it easy to create documentation
96 for Python projects or other documents consisting of multiple reStructuredText
97 sources.")
98 (license license:bsd-3)
99 (properties `((python2-variant . ,(delay python2-sphinx))))))
100
101 ;; Sphinx 2 does not support Python 2, so we stick with this older version here.
102 ;; Remove this package once python2-pbcore no longer requires it.
103 (define-public python2-sphinx
104 (let ((base (package-with-python2 (strip-python2-variant python-sphinx))))
105 (package
106 (inherit base)
107 (version "1.7.7")
108 (source (origin
109 (method url-fetch)
110 (uri (pypi-uri "Sphinx" version))
111 (sha256
112 (base32
113 "0pkkbfj7cl157q550gcs45am5y78ps0h7q6455d64s1zmw01jlvi"))))
114 (arguments
115 (substitute-keyword-arguments (package-arguments base)
116 ((#:phases phases)
117 `(modify-phases ,phases
118 (add-before 'check 'disable-broken-tests
119 (lambda _
120 ;; These tests are broken when using Python2:
121 ;; <https://github.com/sphinx-doc/sphinx/issues/4710>.
122 (for-each delete-file '("tests/test_api_translator.py"
123 "tests/test_setup_command.py"))
124 #t))))))
125 (native-inputs `(("python2-mock" ,python2-mock)
126 ("python2-enum34" ,python2-enum34)
127 ,@(package-native-inputs base)))
128 ;; Sphinx 2 has some dependencies that do not support Python 2, so
129 ;; we keep our own propagated-inputs here instead of inheriting.
130 (propagated-inputs `(("python2-pytz" ,python2-pytz)
131 ("python2-typing" ,python2-typing)
132 ("python2-imagesize" ,python2-imagesize)
133 ("python2-sphinx-alabaster-theme"
134 ,python2-sphinx-alabaster-theme)
135 ("python2-babel" ,python2-babel-2.6)
136 ("python2-snowballstemmer" ,python2-snowballstemmer)
137 ("python2-docutils" ,python2-docutils)
138 ("python2-jinja2" ,python2-jinja2)
139 ("python2-packaging" ,python2-packaging)
140 ("python2-pygments" ,python2-pygments)
141 ("python2-requests" ,python2-requests)
142 ("python2-six" ,python2-six)
143 ("python2-sphinxcontrib-websupport"
144 ,python2-sphinxcontrib-websupport))))))
145
146 (define-public python-sphinxcontrib-applehelp
147 (package
148 (name "python-sphinxcontrib-applehelp")
149 (version "1.0.1")
150 (source (origin
151 (method url-fetch)
152 (uri (pypi-uri "sphinxcontrib-applehelp" version))
153 (sha256
154 (base32
155 "15rqmgphj4wqf4m5wnzxgmwxx5jwfzb0j0nb94ql0x5wnar0mapd"))))
156 (build-system python-build-system)
157 (arguments
158 `(#:tests? #f)) ;XXX: circular dependency on Sphinx
159 (home-page "https://github.com/sphinx-doc/sphinxcontrib-applehelp")
160 (synopsis "Sphinx extension for creating Apple help books")
161 (description
162 "@code{sphinxcontrib-applehelp} is a Sphinx extension which outputs
163 Apple help books.")
164 (license license:bsd-2)))
165
166 (define-public python-sphinx-copybutton
167 (package
168 (name "python-sphinx-copybutton")
169 (version "0.2.5")
170 (source
171 (origin
172 (method url-fetch)
173 (uri (pypi-uri "sphinx-copybutton" version))
174 (sha256
175 (base32
176 "1bk006nv5s9ym6v67cxd4d2wvd8wm6czqi21mqcs33risygksncl"))))
177 (build-system python-build-system)
178 (home-page "https://github.com/choldgraf/sphinx-copybutton")
179 (synopsis "Sphinx extension to add \"copy\" buttons to code blocks")
180 (description
181 "This package provides a small sphinx extension to add \"copy\" buttons
182 to code blocks.")
183 (license license:expat)))
184
185 (define-public python-sphinxcontrib-devhelp
186 (package
187 (name "python-sphinxcontrib-devhelp")
188 (version "1.0.1")
189 (source (origin
190 (method url-fetch)
191 (uri (pypi-uri "sphinxcontrib-devhelp" version))
192 (sha256
193 (base32
194 "0d2a57kqxl72i55rns0ly1i044y2x234b9sdi89ajc3kjdvv0r3c"))))
195 (build-system python-build-system)
196 (arguments
197 `(#:tests? #f)) ;XXX: circular dependency on Sphinx
198 (home-page "https://github.com/sphinx-doc/sphinxcontrib-devhelp")
199 (synopsis "Sphinx extension for creating Devhelp documents")
200 (description
201 "@code{sphinxcontrib-devhelp} is a Sphinx extension which outputs
202 @url{Devhelp,https://wiki.gnome.org/Apps/Devhelp} documents.")
203 (license license:bsd-2)))
204
205 (define-public python-sphinxcontrib-htmlhelp
206 (package
207 (name "python-sphinxcontrib-htmlhelp")
208 (version "1.0.2")
209 (source (origin
210 (method url-fetch)
211 (uri (pypi-uri "sphinxcontrib-htmlhelp" version))
212 (sha256
213 (base32
214 "08l4x8a2l4xjqdd5rhvmfsqihmlgg4prdayj9b6pigaii6gzjw26"))))
215 (build-system python-build-system)
216 (arguments
217 `(#:tests? #f)) ;XXX: circular dependency on Sphinx
218 (home-page "https://github.com/sphinx-doc/sphinxcontrib-htmlhelp")
219 (synopsis "Sphinx extension for rendering HTML help files")
220 (description
221 "@code{sphinxcontrib-htmlhelp} is a Sphinx extension which renders
222 HTML help files.")
223 (license license:bsd-2)))
224
225 (define-public python-sphinxcontrib-jsmath
226 (package
227 (name "python-sphinxcontrib-jsmath")
228 (version "1.0.1")
229 (source (origin
230 (method url-fetch)
231 (uri (pypi-uri "sphinxcontrib-jsmath" version))
232 (sha256
233 (base32
234 "1f64w19j33sp151jimibraw6qrbhd5gxy8hs3797w9478m55x4m9"))))
235 (build-system python-build-system)
236 (arguments
237 `(#:tests? #f)) ;XXX: circular dependency on Sphinx
238 (home-page "https://github.com/sphinx-doc/sphinxcontrib-jsmath")
239 (synopsis "Sphinx extension to render math equations")
240 (description
241 "@code{sphinxcontrib-jsmath} is a Sphinx extension which renders display
242 math in HTML via JavaScript.")
243 (license license:bsd-3)))
244
245 (define-public python-sphinxcontrib-newsfeed
246 (package
247 (name "python-sphinxcontrib-newsfeed")
248 (version "0.1.4")
249 (source (origin
250 (method url-fetch)
251 (uri (pypi-uri "sphinxcontrib-newsfeed" version))
252 (sha256
253 (base32
254 "1d7gam3mn8v4in4p16yn3v10vps7nnaz6ilw99j4klij39dqd37p"))))
255 (arguments '(#:tests? #f)) ; No tests.
256 (build-system python-build-system)
257 (propagated-inputs
258 `(("python-sphinx" ,python-sphinx)))
259 (synopsis "News Feed extension for Sphinx")
260 (description "Sphinxcontrib-newsfeed is an extension for adding a simple
261 Blog, News or Announcements section to a Sphinx website.")
262 (home-page "https://bitbucket.org/prometheus/sphinxcontrib-newsfeed")
263 (license license:bsd-2)))
264
265 (define-public python-sphinxcontrib-programoutput
266 (package
267 (name "python-sphinxcontrib-programoutput")
268 (version "0.10")
269 (source (origin
270 (method url-fetch)
271 (uri (pypi-uri "sphinxcontrib-programoutput" version))
272 (sha256
273 (base32
274 "153hhnlbx4688zj9wd64819ps5znc2jlyp5crkgzvn5hxgy99vpx"))))
275 (build-system python-build-system)
276 (arguments
277 ;; FIXME: Many tests are failing and the upstream is gone.
278 '(#:tests? #f))
279 (propagated-inputs
280 `(("python-sphinx" ,python-sphinx)))
281 (synopsis "Sphinx extension to include program output")
282 (description "A Sphinx extension to literally insert the output of arbitrary
283 commands into documents, helping you to keep your command examples up to date.")
284 (home-page "https://github.com/lunaryorn/sphinxcontrib-programoutput")
285 (license license:bsd-2)))
286
287 (define-public python2-sphinxcontrib-programoutput
288 (package-with-python2 python-sphinxcontrib-programoutput))
289
290 (define-public python-sphinxcontrib-qthelp
291 (package
292 (name "python-sphinxcontrib-qthelp")
293 (version "1.0.2")
294 (source (origin
295 (method url-fetch)
296 (uri (pypi-uri "sphinxcontrib-qthelp" version))
297 (sha256
298 (base32
299 "0vs09m6kf5vhiivpi5s5pks59iq0lqlsbkdycpqlysg53bhmqikr"))))
300 (build-system python-build-system)
301 (arguments
302 `(#:tests? #f)) ;XXX: circular dependency on Sphinx
303 (home-page "https://github.com/sphinx-doc/sphinxcontrib-qthelp")
304 (synopsis "Sphinx extension to output QtHelp documents")
305 (description
306 "@code{sphinxcontrib-qthelp} is a Sphinx extension which outputs QtHelp
307 documents.")
308 (license license:bsd-2)))
309
310 (define-public python-sphinxcontrib-serializinghtml
311 (package
312 (name "python-sphinxcontrib-serializinghtml")
313 (version "1.1.3")
314 (source (origin
315 (method url-fetch)
316 (uri (pypi-uri "sphinxcontrib-serializinghtml" version))
317 (sha256
318 (base32
319 "09sj3nwahwr4iymg86gczbh151cfczqhf2kclbblzh2jh0zv7vy0"))))
320 (build-system python-build-system)
321 (arguments
322 `(#:tests? #f)) ;XXX: circular dependency on Sphinx
323 (home-page "https://github.com/sphinx-doc/sphinxcontrib-serializinghtml")
324 (synopsis "Sphinx extension to serialize HTML files")
325 (description
326 "@code{sphinxcontrib-serializinghtml} is a Sphinx extension which outputs
327 \"serialized\" HTML files.")
328 (license license:bsd-2)))
329
330 (define-public python-sphinxcontrib-svg2pdfconverter
331 (package
332 (name "python-sphinxcontrib-svg2pdfconverter")
333 (version "0.1.0")
334 (source (origin
335 (method url-fetch)
336 (uri (pypi-uri "sphinxcontrib-svg2pdfconverter" version))
337 (sha256
338 (base32
339 "1abvbgkkii13q8nsb10r0gc5lm0p9iq1iwhfhakn5ifn6asa0183"))))
340 (build-system python-build-system)
341 (propagated-inputs
342 `(("python-sphinx" ,python-sphinx)))
343 (home-page "https://github.com/missinglinkelectronics/sphinxcontrib-svg2pdfconverter/releases")
344 (synopsis "Sphinx SVG to PDF converter extension")
345 (description "A Sphinx extension to convert SVG images to PDF in case the builder does not support
346 SVG images natively (e.g. LaTeX).")
347 (license license:bsd-3)))
348
349 (define-public python-sphinxcontrib-websupport
350 (package
351 (name "python-sphinxcontrib-websupport")
352 (version "1.1.0")
353 (source (origin
354 (method url-fetch)
355 (uri (pypi-uri "sphinxcontrib-websupport" version))
356 (sha256
357 (base32
358 "1ff3ix76xi1y6m99qxhaq5161ix9swwzydilvdya07mgbcvpzr4x"))))
359 (build-system python-build-system)
360 (arguments
361 ;; FIXME: Tests depend on Sphinx, which depends on this.
362 `(#:tests? #f))
363 (home-page "https://sphinx-doc.org/")
364 (synopsis "Sphinx API for web applications")
365 (description "This package provides a Python API to easily integrate
366 Sphinx documentation into your web application. It provides tools to
367 integrate Sphinx documents in web templates and to handle searches.")
368 (license license:bsd-3)))
369
370 (define-public python2-sphinxcontrib-websupport
371 (package-with-python2 python-sphinxcontrib-websupport))
372
373 (define-public python-sphinx-gallery
374 (package
375 (name "python-sphinx-gallery")
376 (version "0.1.13")
377 (source (origin
378 (method url-fetch)
379 (uri (string-append "https://github.com/sphinx-gallery/sphinx-gallery"
380 "/archive/v" version ".tar.gz"))
381 (file-name (string-append name "-" version ".tar.gz"))
382 (sha256
383 (base32
384 "03fs99mcb1r7qp0xixqv07vcz98sk21yq19ffdysi0infdcpzfkd"))))
385 (build-system python-build-system)
386 (arguments
387 ;; FIXME: Tests attempt to download <https://docs.python.org/3/objects.inv>,
388 ;; <https://docs.scipy.org/doc/numpy/objects.inv>, and
389 ;; <https://matplotlib.org/objects.inv>.
390 `(#:tests? #f))
391 (native-inputs
392 `(("python-pytest-runner" ,python-pytest-runner)))
393 (home-page "https://sphinx-gallery.github.io/")
394 (synopsis "Generate an examples gallery automatically")
395 (description
396 "@code{sphinx_gallery} is a Sphinx extension that builds an HTML version
397 from any set of Python scripts and puts it into an examples gallery.")
398 (license license:bsd-3)))
399
400 (define-public python2-sphinx-gallery
401 (package-with-python2 python-sphinx-gallery))
402
403 (define-public python-sphinx-me
404 (package
405 (name "python-sphinx-me")
406 (version "0.3")
407 (source
408 (origin
409 (method url-fetch)
410 (uri (pypi-uri "sphinx-me" version))
411 (sha256
412 (base32
413 "06jzgp213zihnvpcy2y5jy3ykid3apc2ncp2pg6a2g05lhiziglq"))))
414 (build-system python-build-system)
415 (home-page "https://github.com/stephenmcd/sphinx-me")
416 (synopsis "Create a Sphinx documentation shell")
417 (description
418 "Create a Sphinx documentation shell for your project and include the
419 README file as the documentation index. It handles extracting the required
420 meta data such as the project name, author and version from your project for
421 use in your Sphinx docs.")
422 (license license:bsd-2)))
423
424 (define-public python2-sphinx-me
425 (package-with-python2 python-sphinx-me))
426
427 (define-public python-sphinx-repoze-autointerface
428 (package
429 (name "python-sphinx-repoze-autointerface")
430 (version "0.8")
431 (source (origin
432 (method url-fetch)
433 (uri (pypi-uri "repoze.sphinx.autointerface" version))
434 (sha256
435 (base32
436 "08ycivzf7bh4a1zcyp31hbyqs1b2c9r26raa3vxjwwmbfqr3iw4f"))))
437 (build-system python-build-system)
438 (arguments '(#:tests? #f)) ; No tests.
439 (propagated-inputs
440 `(("python-sphinx" ,python-sphinx)
441 ("python-zope-interface" ,python-zope-interface)))
442 (synopsis "Auto-generate Sphinx API docs from Zope interfaces")
443 (description "This package defines an extension for the Sphinx documentation
444 system. The extension allows generation of API documentation by
445 introspection of @code{zope.interface} instances in code.")
446 (home-page "https://github.com/repoze/repoze.sphinx.autointerface")
447 (license license:repoze)))
448
449 (define-public python2-sphinx-repoze-autointerface
450 (package-with-python2 python-sphinx-repoze-autointerface))
451
452 (define-public python-sphinx-alabaster-theme
453 (package
454 (name "python-sphinx-alabaster-theme")
455 (version "0.7.12")
456 (source (origin
457 (method url-fetch)
458 (uri (pypi-uri "alabaster" version))
459 (sha256
460 (base32
461 "00nwwjj2d2ym4s2kk217x7jkx1hnczc3fvm8yxbqmsp6b0nxfqd6"))))
462 (build-system python-build-system)
463 (propagated-inputs
464 `(("python-pygments" ,python-pygments)))
465 (home-page "https://alabaster.readthedocs.io/")
466 (synopsis "Configurable sidebar-enabled Sphinx theme")
467 (description "Alabaster is a visually (c)lean, responsive, configurable
468 theme for the Sphinx documentation system. It's the default theme of Sphinx.")
469 (license license:bsd-3)))
470
471 (define-public python2-sphinx-alabaster-theme
472 (package-with-python2 python-sphinx-alabaster-theme))
473
474 (define-public python-sphinx-cloud-sptheme
475 (package
476 (name "python-sphinx-cloud-sptheme")
477 (version "1.8.0")
478 (source (origin
479 (method url-fetch)
480 (uri (pypi-uri "cloud_sptheme" version))
481 (sha256
482 (base32
483 "1dniqb6a39yh786f86c4jn666rwnyi1jvzn4616zhcchb7sfdshd"))))
484 (build-system python-build-system)
485 ;; FIXME: The 'pypi' release archive does not contain tests.
486 (arguments '(#:tests? #f))
487 (native-inputs
488 `(("python-sphinx" ,python-sphinx)))
489 (home-page "https://bitbucket.org/ecollins/cloud_sptheme")
490 (synopsis "'Cloud' theme for Sphinx documenter")
491 (description "This package contains the \"Cloud\" theme for Sphinx and some
492 related extensions.")
493 (license license:bsd-3)))
494
495 (define-public python2-sphinx-cloud-sptheme
496 (package-with-python2 python-sphinx-cloud-sptheme))
497
498 (define-public python-guzzle-sphinx-theme
499 (package
500 (name "python-guzzle-sphinx-theme")
501 (version "0.7.11")
502 (source
503 (origin
504 (method url-fetch)
505 (uri (pypi-uri "guzzle_sphinx_theme" version))
506 (sha256
507 (base32
508 "1rnkzrrsbnifn3vsb4pfaia3nlvgvw6ndpxp7lzjrh23qcwid34v"))))
509 (build-system python-build-system)
510 (propagated-inputs
511 `(("python-sphinx" ,python-sphinx)))
512 (home-page "https://github.com/guzzle/guzzle_sphinx_theme")
513 (synopsis "Sphinx theme used by Guzzle")
514 (description "This package provides guzzle_sphinx_theme, a theme for the
515 Sphinx documentation system, used by @uref{http://docs.guzzlephp.org, Guzzle}
516 and several other projects.")
517 (license license:expat)))
518
519 (define-public python2-guzzle-sphinx-theme
520 (package-with-python2 python-guzzle-sphinx-theme))
521
522 (define-public python-sphinx-rtd-theme
523 (package
524 (name "python-sphinx-rtd-theme")
525 (version "0.2.4")
526 (source
527 (origin
528 (method url-fetch)
529 (uri (pypi-uri "sphinx_rtd_theme" version))
530 (sha256
531 (base32
532 "05rlhjzdyapr2w74jjs7mrm8hi69qskcr5vya9f9drpsys7lpxrd"))))
533 (build-system python-build-system)
534 (arguments '(#:tests? #f)) ; No tests.
535 (propagated-inputs
536 `(("python-sphinx" ,python-sphinx)))
537 (home-page "https://github.com/snide/sphinx_rtd_theme/")
538 (synopsis "ReadTheDocs.org theme for Sphinx")
539 (description "A theme for Sphinx used by ReadTheDocs.org.")
540 (license license:expat)))
541
542 (define-public python2-sphinx-rtd-theme
543 (package-with-python2 python-sphinx-rtd-theme))