Merge branch 'master' into core-updates
[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 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-sphinxcontrib-devhelp
167 (package
168 (name "python-sphinxcontrib-devhelp")
169 (version "1.0.1")
170 (source (origin
171 (method url-fetch)
172 (uri (pypi-uri "sphinxcontrib-devhelp" version))
173 (sha256
174 (base32
175 "0d2a57kqxl72i55rns0ly1i044y2x234b9sdi89ajc3kjdvv0r3c"))))
176 (build-system python-build-system)
177 (arguments
178 `(#:tests? #f)) ;XXX: circular dependency on Sphinx
179 (home-page "https://github.com/sphinx-doc/sphinxcontrib-devhelp")
180 (synopsis "Sphinx extension for creating Devhelp documents")
181 (description
182 "@code{sphinxcontrib-devhelp} is a Sphinx extension which outputs
183 @url{Devhelp,https://wiki.gnome.org/Apps/Devhelp} documents.")
184 (license license:bsd-2)))
185
186 (define-public python-sphinxcontrib-htmlhelp
187 (package
188 (name "python-sphinxcontrib-htmlhelp")
189 (version "1.0.2")
190 (source (origin
191 (method url-fetch)
192 (uri (pypi-uri "sphinxcontrib-htmlhelp" version))
193 (sha256
194 (base32
195 "08l4x8a2l4xjqdd5rhvmfsqihmlgg4prdayj9b6pigaii6gzjw26"))))
196 (build-system python-build-system)
197 (arguments
198 `(#:tests? #f)) ;XXX: circular dependency on Sphinx
199 (home-page "https://github.com/sphinx-doc/sphinxcontrib-htmlhelp")
200 (synopsis "Sphinx exension for rendering HTML help files")
201 (description
202 "@code{sphinxcontrib-htmlhelp} is a Sphinx extension which renders
203 HTML help files.")
204 (license license:bsd-2)))
205
206 (define-public python-sphinxcontrib-jsmath
207 (package
208 (name "python-sphinxcontrib-jsmath")
209 (version "1.0.1")
210 (source (origin
211 (method url-fetch)
212 (uri (pypi-uri "sphinxcontrib-jsmath" version))
213 (sha256
214 (base32
215 "1f64w19j33sp151jimibraw6qrbhd5gxy8hs3797w9478m55x4m9"))))
216 (build-system python-build-system)
217 (arguments
218 `(#:tests? #f)) ;XXX: circular dependency on Sphinx
219 (home-page "https://github.com/sphinx-doc/sphinxcontrib-jsmath")
220 (synopsis "Sphinx extension to render math equations")
221 (description
222 "@code{sphinxcontrib-jsmath} is a Sphinx extension which renders display
223 math in HTML via JavaScript.")
224 (license license:bsd-3)))
225
226 (define-public python-sphinxcontrib-newsfeed
227 (package
228 (name "python-sphinxcontrib-newsfeed")
229 (version "0.1.4")
230 (source (origin
231 (method url-fetch)
232 (uri (pypi-uri "sphinxcontrib-newsfeed" version))
233 (sha256
234 (base32
235 "1d7gam3mn8v4in4p16yn3v10vps7nnaz6ilw99j4klij39dqd37p"))))
236 (arguments '(#:tests? #f)) ; No tests.
237 (build-system python-build-system)
238 (propagated-inputs
239 `(("python-sphinx" ,python-sphinx)))
240 (synopsis "News Feed extension for Sphinx")
241 (description "Sphinxcontrib-newsfeed is an extension for adding a simple
242 Blog, News or Announcements section to a Sphinx website.")
243 (home-page "https://bitbucket.org/prometheus/sphinxcontrib-newsfeed")
244 (license license:bsd-2)))
245
246 (define-public python-sphinxcontrib-programoutput
247 (package
248 (name "python-sphinxcontrib-programoutput")
249 (version "0.10")
250 (source (origin
251 (method url-fetch)
252 (uri (pypi-uri "sphinxcontrib-programoutput" version))
253 (sha256
254 (base32
255 "153hhnlbx4688zj9wd64819ps5znc2jlyp5crkgzvn5hxgy99vpx"))))
256 (build-system python-build-system)
257 (arguments
258 ;; FIXME: Many tests are failing and the upstream is gone.
259 '(#:tests? #f))
260 (propagated-inputs
261 `(("python-sphinx" ,python-sphinx)))
262 (synopsis "Sphinx extension to include program output")
263 (description "A Sphinx extension to literally insert the output of arbitrary
264 commands into documents, helping you to keep your command examples up to date.")
265 (home-page "https://github.com/lunaryorn/sphinxcontrib-programoutput")
266 (license license:bsd-2)))
267
268 (define-public python2-sphinxcontrib-programoutput
269 (package-with-python2 python-sphinxcontrib-programoutput))
270
271 (define-public python-sphinxcontrib-qthelp
272 (package
273 (name "python-sphinxcontrib-qthelp")
274 (version "1.0.2")
275 (source (origin
276 (method url-fetch)
277 (uri (pypi-uri "sphinxcontrib-qthelp" version))
278 (sha256
279 (base32
280 "0vs09m6kf5vhiivpi5s5pks59iq0lqlsbkdycpqlysg53bhmqikr"))))
281 (build-system python-build-system)
282 (arguments
283 `(#:tests? #f)) ;XXX: circular dependency on Sphinx
284 (home-page "https://github.com/sphinx-doc/sphinxcontrib-qthelp")
285 (synopsis "Sphinx extension to output QtHelp documents")
286 (description
287 "@code{sphinxcontrib-qthelp} is a Sphinx extension which outputs QtHelp
288 documents.")
289 (license license:bsd-2)))
290
291 (define-public python-sphinxcontrib-serializinghtml
292 (package
293 (name "python-sphinxcontrib-serializinghtml")
294 (version "1.1.3")
295 (source (origin
296 (method url-fetch)
297 (uri (pypi-uri "sphinxcontrib-serializinghtml" version))
298 (sha256
299 (base32
300 "09sj3nwahwr4iymg86gczbh151cfczqhf2kclbblzh2jh0zv7vy0"))))
301 (build-system python-build-system)
302 (arguments
303 `(#:tests? #f)) ;XXX: circular dependency on Sphinx
304 (home-page "https://github.com/sphinx-doc/sphinxcontrib-serializinghtml")
305 (synopsis "Sphinx extension to serialize HTML files")
306 (description
307 "@code{sphinxcontrib-serializinghtml} is a Sphinx extension which outputs
308 \"serialized\" HTML files.")
309 (license license:bsd-2)))
310
311 (define-public python-sphinxcontrib-svg2pdfconverter
312 (package
313 (name "python-sphinxcontrib-svg2pdfconverter")
314 (version "0.1.0")
315 (source (origin
316 (method url-fetch)
317 (uri (pypi-uri "sphinxcontrib-svg2pdfconverter" version))
318 (sha256
319 (base32
320 "1abvbgkkii13q8nsb10r0gc5lm0p9iq1iwhfhakn5ifn6asa0183"))))
321 (build-system python-build-system)
322 (propagated-inputs
323 `(("python-sphinx" ,python-sphinx)))
324 (home-page "https://github.com/missinglinkelectronics/sphinxcontrib-svg2pdfconverter/releases")
325 (synopsis "Sphinx SVG to PDF converter extension")
326 (description "A Sphinx extension to convert SVG images to PDF in case the builder does not support
327 SVG images natively (e.g. LaTeX).")
328 (license license:bsd-3)))
329
330 (define-public python-sphinxcontrib-websupport
331 (package
332 (name "python-sphinxcontrib-websupport")
333 (version "1.1.0")
334 (source (origin
335 (method url-fetch)
336 (uri (pypi-uri "sphinxcontrib-websupport" version))
337 (sha256
338 (base32
339 "1ff3ix76xi1y6m99qxhaq5161ix9swwzydilvdya07mgbcvpzr4x"))))
340 (build-system python-build-system)
341 (arguments
342 ;; FIXME: Tests depend on Sphinx, which depends on this.
343 `(#:tests? #f))
344 (home-page "https://sphinx-doc.org/")
345 (synopsis "Sphinx API for web applications")
346 (description "This package provides a Python API to easily integrate
347 Sphinx documentation into your web application. It provides tools to
348 integrate Sphinx documents in web templates and to handle searches.")
349 (license license:bsd-3)))
350
351 (define-public python2-sphinxcontrib-websupport
352 (package-with-python2 python-sphinxcontrib-websupport))
353
354 (define-public python-sphinx-gallery
355 (package
356 (name "python-sphinx-gallery")
357 (version "0.1.13")
358 (source (origin
359 (method url-fetch)
360 (uri (string-append "https://github.com/sphinx-gallery/sphinx-gallery"
361 "/archive/v" version ".tar.gz"))
362 (file-name (string-append name "-" version ".tar.gz"))
363 (sha256
364 (base32
365 "03fs99mcb1r7qp0xixqv07vcz98sk21yq19ffdysi0infdcpzfkd"))))
366 (build-system python-build-system)
367 (arguments
368 ;; FIXME: Tests attempt to download <https://docs.python.org/3/objects.inv>,
369 ;; <https://docs.scipy.org/doc/numpy/objects.inv>, and
370 ;; <https://matplotlib.org/objects.inv>.
371 `(#:tests? #f))
372 (native-inputs
373 `(("python-pytest-runner" ,python-pytest-runner)))
374 (home-page "https://sphinx-gallery.github.io/")
375 (synopsis "Generate an examples gallery automatically")
376 (description
377 "@code{sphinx_gallery} is a Sphinx extension that builds an HTML version
378 from any set of Python scripts and puts it into an examples gallery.")
379 (license license:bsd-3)))
380
381 (define-public python2-sphinx-gallery
382 (package-with-python2 python-sphinx-gallery))
383
384 (define-public python-sphinx-me
385 (package
386 (name "python-sphinx-me")
387 (version "0.3")
388 (source
389 (origin
390 (method url-fetch)
391 (uri (pypi-uri "sphinx-me" version))
392 (sha256
393 (base32
394 "06jzgp213zihnvpcy2y5jy3ykid3apc2ncp2pg6a2g05lhiziglq"))))
395 (build-system python-build-system)
396 (home-page "https://github.com/stephenmcd/sphinx-me")
397 (synopsis "Create a Sphinx documentation shell")
398 (description
399 "Create a Sphinx documentation shell for your project and include the
400 README file as the documentation index. It handles extracting the required
401 meta data such as the project name, author and version from your project for
402 use in your Sphinx docs.")
403 (license license:bsd-2)))
404
405 (define-public python2-sphinx-me
406 (package-with-python2 python-sphinx-me))
407
408 (define-public python-sphinx-repoze-autointerface
409 (package
410 (name "python-sphinx-repoze-autointerface")
411 (version "0.8")
412 (source (origin
413 (method url-fetch)
414 (uri (pypi-uri "repoze.sphinx.autointerface" version))
415 (sha256
416 (base32
417 "08ycivzf7bh4a1zcyp31hbyqs1b2c9r26raa3vxjwwmbfqr3iw4f"))))
418 (build-system python-build-system)
419 (arguments '(#:tests? #f)) ; No tests.
420 (propagated-inputs
421 `(("python-sphinx" ,python-sphinx)
422 ("python-zope-interface" ,python-zope-interface)))
423 (synopsis "Auto-generate Sphinx API docs from Zope interfaces")
424 (description "This package defines an extension for the Sphinx documentation
425 system. The extension allows generation of API documentation by
426 introspection of @code{zope.interface} instances in code.")
427 (home-page "https://github.com/repoze/repoze.sphinx.autointerface")
428 (license license:repoze)))
429
430 (define-public python2-sphinx-repoze-autointerface
431 (package-with-python2 python-sphinx-repoze-autointerface))
432
433 (define-public python-sphinx-alabaster-theme
434 (package
435 (name "python-sphinx-alabaster-theme")
436 (version "0.7.12")
437 (source (origin
438 (method url-fetch)
439 (uri (pypi-uri "alabaster" version))
440 (sha256
441 (base32
442 "00nwwjj2d2ym4s2kk217x7jkx1hnczc3fvm8yxbqmsp6b0nxfqd6"))))
443 (build-system python-build-system)
444 (propagated-inputs
445 `(("python-pygments" ,python-pygments)))
446 (home-page "https://alabaster.readthedocs.io/")
447 (synopsis "Configurable sidebar-enabled Sphinx theme")
448 (description "Alabaster is a visually (c)lean, responsive, configurable
449 theme for the Sphinx documentation system. It's the default theme of Sphinx.")
450 (license license:bsd-3)))
451
452 (define-public python2-sphinx-alabaster-theme
453 (package-with-python2 python-sphinx-alabaster-theme))
454
455 (define-public python-sphinx-cloud-sptheme
456 (package
457 (name "python-sphinx-cloud-sptheme")
458 (version "1.8.0")
459 (source (origin
460 (method url-fetch)
461 (uri (pypi-uri "cloud_sptheme" version))
462 (sha256
463 (base32
464 "1dniqb6a39yh786f86c4jn666rwnyi1jvzn4616zhcchb7sfdshd"))))
465 (build-system python-build-system)
466 ;; FIXME: The 'pypi' release archive does not contain tests.
467 (arguments '(#:tests? #f))
468 (native-inputs
469 `(("python-sphinx" ,python-sphinx)))
470 (home-page "https://bitbucket.org/ecollins/cloud_sptheme")
471 (synopsis "'Cloud' theme for Sphinx documenter")
472 (description "This package contains the \"Cloud\" theme for Sphinx and some
473 related extensions.")
474 (license license:bsd-3)))
475
476 (define-public python2-sphinx-cloud-sptheme
477 (package-with-python2 python-sphinx-cloud-sptheme))
478
479 (define-public python-guzzle-sphinx-theme
480 (package
481 (name "python-guzzle-sphinx-theme")
482 (version "0.7.11")
483 (source
484 (origin
485 (method url-fetch)
486 (uri (pypi-uri "guzzle_sphinx_theme" version))
487 (sha256
488 (base32
489 "1rnkzrrsbnifn3vsb4pfaia3nlvgvw6ndpxp7lzjrh23qcwid34v"))))
490 (build-system python-build-system)
491 (propagated-inputs
492 `(("python-sphinx" ,python-sphinx)))
493 (home-page "https://github.com/guzzle/guzzle_sphinx_theme")
494 (synopsis "Sphinx theme used by Guzzle")
495 (description "This package provides guzzle_sphinx_theme, a theme for the
496 Sphinx documentation system, used by @uref{http://docs.guzzlephp.org, Guzzle}
497 and several other projects.")
498 (license license:expat)))
499
500 (define-public python2-guzzle-sphinx-theme
501 (package-with-python2 python-guzzle-sphinx-theme))
502
503 (define-public python-sphinx-rtd-theme
504 (package
505 (name "python-sphinx-rtd-theme")
506 (version "0.2.4")
507 (source
508 (origin
509 (method url-fetch)
510 (uri (pypi-uri "sphinx_rtd_theme" version))
511 (sha256
512 (base32
513 "05rlhjzdyapr2w74jjs7mrm8hi69qskcr5vya9f9drpsys7lpxrd"))))
514 (build-system python-build-system)
515 (arguments '(#:tests? #f)) ; No tests.
516 (propagated-inputs
517 `(("python-sphinx" ,python-sphinx)))
518 (home-page "https://github.com/snide/sphinx_rtd_theme/")
519 (synopsis "ReadTheDocs.org theme for Sphinx")
520 (description "A theme for Sphinx used by ReadTheDocs.org.")
521 (license license:expat)))
522
523 (define-public python2-sphinx-rtd-theme
524 (package-with-python2 python-sphinx-rtd-theme))