gnu: ruby-pandoc-ruby: Use pandoc instead of ghc-pandoc.
[jackhill/guix/guix.git] / gnu / packages / time.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
3 ;;; Copyright © 2013, 2017, 2020 Ludovic Courtès <ludo@gnu.org>
4 ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
5 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
6 ;;; Copyright © 2015, 2017 Leo Famulari <leo@famulari.name>
7 ;;; Copyright © 2015, 2017 Cyril Roelandt <tipecaml@gmail.com>
8 ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
9 ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
10 ;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org>
11 ;;; Copyright © 2016, 2020 Marius Bakke <mbakke@fastmail.com>
12 ;;; Copyright © 2016, 2017, 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
13 ;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
14 ;;; Copyright © 2017 Nikita <nikita@n0.is>
15 ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
16 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
17 ;;; Copyright © 2019 Kyle Meyer <kyle@kyleam.com>
18 ;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
19 ;;; Copyright © 2020 Lars-Dominik Braun <ldb@leibniz-psychology.org>
20 ;;;
21 ;;; This file is part of GNU Guix.
22 ;;;
23 ;;; GNU Guix is free software; you can redistribute it and/or modify it
24 ;;; under the terms of the GNU General Public License as published by
25 ;;; the Free Software Foundation; either version 3 of the License, or (at
26 ;;; your option) any later version.
27 ;;;
28 ;;; GNU Guix is distributed in the hope that it will be useful, but
29 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
30 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
31 ;;; GNU General Public License for more details.
32 ;;;
33 ;;; You should have received a copy of the GNU General Public License
34 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
35
36 (define-module (gnu packages time)
37 #:use-module (guix licenses)
38 #:use-module (guix packages)
39 #:use-module (guix download)
40 #:use-module (guix git-download)
41 #:use-module (guix build-system gnu)
42 #:use-module (guix build-system python)
43 #:use-module (gnu packages)
44 #:use-module (gnu packages check)
45 #:use-module (gnu packages compression)
46 #:use-module (gnu packages perl)
47 #:use-module (gnu packages python)
48 #:use-module (gnu packages python-xyz))
49
50 (define-public time
51 (package
52 (name "time")
53 (version "1.9")
54 (source
55 (origin
56 (method url-fetch)
57 (uri (string-append "mirror://gnu/time/time-"
58 version ".tar.gz"))
59 (sha256
60 (base32
61 "07jj7cz6lc13iqrpgn81ivqh8rkm73p4rnivwgrrshk23v4g1b7v"))))
62 (build-system gnu-build-system)
63 (home-page "https://www.gnu.org/software/time/")
64 (synopsis "Run a command, then display its resource usage")
65 (description
66 "Time is a command that displays information about the resources that a
67 program uses. The display output of the program can be customized or saved
68 to a file.")
69 (license gpl3+)))
70
71 (define-public python-pytimeparse
72 (package
73 (name "python-pytimeparse")
74 (version "1.1.8")
75 (source
76 (origin
77 (method url-fetch)
78 (uri (pypi-uri "pytimeparse" version))
79 (sha256
80 (base32
81 "02kaambsgpjx3zi42j6l11rwms2p35b9hsk4f3kdf979gd3kcqg8"))))
82 (native-inputs
83 `(("python-nose" ,python-nose)))
84 (build-system python-build-system)
85 (home-page "https://github.com/wroberts/pytimeparse")
86 (synopsis "Time expression parser")
87 (description "This small Python module parses various kinds of time
88 expressions.")
89 (license expat)))
90
91 (define-public python-pytzdata
92 (package
93 (name "python-pytzdata")
94 (version "2019.3")
95 (source
96 (origin
97 (method url-fetch)
98 (uri (pypi-uri "pytzdata" version))
99 (sha256
100 (base32
101 "0ppfc6kz4p41mxyqxq1g1zp6gvns99g6b344qj6ih0x9vxy6zh7s"))))
102 (build-system python-build-system)
103 ;; XXX: The PyPI distribution contains no tests, and the upstream
104 ;; repository lacks a setup.py! How to build from git?
105 (arguments '(#:tests? #f))
106 (propagated-inputs
107 `(("python-cleo" ,python-cleo)))
108 (home-page "https://github.com/sdispater/pytzdata")
109 (synopsis "Timezone database for Python")
110 (description
111 "This library provides a timezone database for Python.")
112 (license expat)))
113
114 (define-public python2-tzdata
115 (package-with-python2 python-pytzdata))
116
117 (define-public python-pytz
118 (package
119 (name "python-pytz")
120 (version "2019.1")
121 (source
122 (origin
123 (method url-fetch)
124 (uri (pypi-uri "pytz" version))
125 (sha256
126 (base32
127 "0hg1r2c41gnmljdsdmdgy6kb1zkfmxsf49imd96g8znp4cyxsiyp"))))
128 (build-system python-build-system)
129 (home-page "http://pythonhosted.org/pytz")
130 (synopsis "Python timezone library")
131 (description "This library brings the Olson tz database into Python. It
132 allows accurate and cross platform timezone calculations using Python 2.4 or
133 higher. It also solves the issue of ambiguous times at the end of daylight
134 saving time. Almost all of the Olson timezones are supported.")
135 (license expat)))
136
137 (define-public python2-pytz
138 (package-with-python2 python-pytz))
139
140 (define-public python-pendulum
141 (package
142 (name "python-pendulum")
143 (version "2.1.1")
144 (source
145 (origin
146 (method url-fetch)
147 (uri (pypi-uri "pendulum" version))
148 (sha256
149 (base32 "1w4an6ki3l1pc36m2f2xiglaw5czmj9b4imbigln9z6mlnkkjxyr"))))
150 (build-system python-build-system)
151 ;; XXX: The PyPI distribution lacks tests, and the upstream repository
152 ;; lacks a setup.py!
153 (arguments '(#:tests? #f))
154 (propagated-inputs
155 `(("python-dateutil" ,python-dateutil)
156 ("python-pytzdata" ,python-pytzdata)))
157 (home-page "https://github.com/sdispater/pendulum")
158 (synopsis "Alternate API for Python datetimes")
159 (description "Pendulum is a drop-in replacement for the standard
160 @{datetime} class, providing an alternative API. As it inherits from the
161 standard @code{datetime} all @code{datetime} instances can be replaced by
162 Pendulum instances.")
163 (license expat)))
164
165 (define-public python2-pendulum
166 (package-with-python2 python-pendulum))
167
168 (define-public python-dateutil
169 (package
170 (name "python-dateutil")
171 (version "2.8.1")
172 (source
173 (origin
174 (method url-fetch)
175 (uri (pypi-uri "python-dateutil" version))
176 (sha256
177 (base32
178 "0g42w7k5007iv9dam6gnja2ry8ydwirh99mgdll35s12pyfzxsvk"))))
179 (build-system python-build-system)
180 (arguments
181 `(#:phases (modify-phases %standard-phases
182 (replace 'check
183 (lambda _
184 ;; Delete tests that depend on "freezegun" to avoid a
185 ;; circular dependency.
186 (delete-file "dateutil/test/test_utils.py")
187 (delete-file "dateutil/test/test_rrule.py")
188
189 ;; XXX: Fails to get timezone from /etc/localtime.
190 (delete-file "dateutil/test/test_tz.py")
191
192 (invoke "pytest" "-vv"))))))
193 (native-inputs
194 `(("python-pytest" ,python-pytest)
195 ("python-pytest-cov" ,python-pytest-cov)
196 ("python-setuptools-scm" ,python-setuptools-scm)))
197 (propagated-inputs
198 `(("python-six" ,python-six)))
199 (home-page "https://dateutil.readthedocs.io/en/stable/")
200 (synopsis "Extensions to the standard datetime module")
201 (description
202 "The dateutil module provides powerful extensions to the standard
203 datetime module, available in Python 2.3+.")
204 ;; The license was changed from the three-clause BSD license to a dual
205 ;; Apache 2.0/BSD-3 variant at 2017-12-01. Some code is only available as
206 ;; BSD-3 still; but all new code is dual licensed (the user can choose).
207 (license (list bsd-3 asl2.0))))
208
209 (define-public python2-dateutil
210 (package-with-python2 python-dateutil))
211
212 (define-public python-parsedatetime
213 (package
214 (name "python-parsedatetime")
215 (version "2.4")
216 (source
217 (origin
218 (method url-fetch)
219 (uri (pypi-uri "parsedatetime" version))
220 (sha256
221 (base32
222 "0jxqkjks7z9dn222cqgvskp4wr6d92aglinxq7pd2w4mzdc7r09x"))))
223 (build-system python-build-system)
224 (native-inputs
225 `(("python-nose" ,python-nose)
226 ("python-pyicu" ,python-pyicu)
227 ("python-pytest" ,python-pytest)
228 ("python-pytest-runner" ,python-pytest-runner)))
229 (propagated-inputs
230 `(("python-future" ,python-future)))
231 (home-page "https://github.com/bear/parsedatetime/")
232 (synopsis "Parse human-readable date/time text")
233 (description
234 "Parse human-readable date/time text.")
235 (license asl2.0)))
236
237 (define-public python2-parsedatetime
238 (package-with-python2 python-parsedatetime))
239
240 (define-public python-ciso8601
241 (package
242 (name "python-ciso8601")
243 (version "2.1.3")
244 (source
245 (origin
246 (method git-fetch)
247 ;; The PyPi distribution doesn't include the tests.
248 (uri (git-reference
249 (url "https://github.com/closeio/ciso8601")
250 (commit (string-append "v" version))))
251 (file-name (git-file-name name version))
252 (sha256
253 (base32
254 "0g1aiyc1ayh0rnibyy416m5mmck38ksgdm3jsy0z3rxgmgb24951"))))
255 (build-system python-build-system)
256 ;; Pytz should only be required for Python 2, but the test suite fails
257 ;; without it.
258 (native-inputs
259 `(("python-pytz" ,python-pytz)))
260 (home-page "https://github.com/closeio/ciso8601")
261 (synopsis
262 "Fast ISO8601 date time parser")
263 (description
264 "The package ciso8601 converts ISO 8601 or RFC 3339 date time strings into
265 Python datetime objects.")
266 (license expat)))
267
268 (define-public python-tzlocal
269 (package
270 (name "python-tzlocal")
271 (version "1.5.1")
272 (source
273 (origin
274 (method url-fetch)
275 (uri (pypi-uri "tzlocal" version))
276 (sha256
277 (base32
278 "0kiciwiqx0bv0fbc913idxibc4ygg4cb7f8rcpd9ij2shi4bigjf"))))
279 (build-system python-build-system)
280 (arguments
281 `(#:phases
282 (modify-phases %standard-phases
283 (add-before 'check 'fix-symlink-test
284 ;; see: https://github.com/regebro/tzlocal/issues/53
285 (lambda _
286 (delete-file "tzlocal/test_data/symlink_localtime/etc/localtime")
287 (symlink "../usr/share/zoneinfo/Africa/Harare"
288 "tzlocal/test_data/symlink_localtime/etc/localtime")
289 #t)))))
290 (propagated-inputs
291 `(("python-pytz" ,python-pytz)))
292 (native-inputs
293 `(("python-mock" ,python-mock)))
294 (home-page "https://github.com/regebro/tzlocal")
295 (synopsis "Local timezone information for Python")
296 (description
297 "Tzlocal returns a tzinfo object with the local timezone information.
298 This module attempts to fix a glaring hole in pytz, that there is no way to
299 get the local timezone information, unless you know the zoneinfo name, and
300 under several distributions that's hard or impossible to figure out.")
301 (license expat)))
302
303 (define-public python-isodate
304 (package
305 (name "python-isodate")
306 (version "0.6.0")
307 (source
308 (origin
309 (method url-fetch)
310 (uri (pypi-uri "isodate" version))
311 (sha256
312 (base32
313 "1n7jkz68kk5pwni540pr5zdh99bf6ywydk1p5pdrqisrawylldif"))))
314 (build-system python-build-system)
315 (native-inputs
316 `(("python-six" ,python-six)))
317 (home-page "https://github.com/gweis/isodate/")
318 (synopsis "Python date parser and formatter")
319 (description
320 "Python-isodate is a python module for parsing and formatting
321 ISO 8601 dates, time and duration.")
322 (license bsd-3)))
323
324 (define-public python2-isodate
325 (package-with-python2 python-isodate))
326
327 (define-public python-iso8601
328 (package
329 (name "python-iso8601")
330 (version "0.1.12")
331 (source
332 (origin
333 (method url-fetch)
334 (uri (pypi-uri "iso8601" version))
335 (sha256
336 (base32
337 "10nyvvnrhw2w3p09v1ica4lgj6f4g9j3kkfx17qmraiq3w7b5i29"))))
338 (build-system python-build-system)
339 (native-inputs
340 `(("python-pytest" ,python-pytest)))
341 (home-page "https://bitbucket.org/micktwomey/pyiso8601")
342 (synopsis "Module to parse ISO 8601 dates")
343 (description
344 "This module parses the most common forms of ISO 8601 date strings (e.g.
345 @code{2007-01-14T20:34:22+00:00}) into @code{datetime} objects.")
346 (license expat)))
347
348 (define-public python2-iso8601
349 (package-with-python2 python-iso8601))
350
351 (define-public python-monotonic
352 (package
353 (name "python-monotonic")
354 (version "1.5")
355 (source
356 (origin
357 (method url-fetch)
358 (uri (pypi-uri "monotonic" version))
359 (sha256
360 (base32
361 "1c6z46yb600klbfhqadyl7vq0jdjdxkm72k43ra3iw3d0xakv593"))))
362 (build-system python-build-system)
363 (arguments '(#:tests? #f)) ; no tests
364 (home-page "https://github.com/atdt/monotonic")
365 (synopsis "Implementation of time.monotonic() for Python 2 & < 3.3")
366 (description
367 "This module provides a @code{monotonic()} function which returns the
368 value (in fractional seconds) of a clock which never goes backwards.")
369 (license asl2.0)))
370
371 (define-public python2-monotonic
372 (package-with-python2 python-monotonic))
373
374 (define-public python-pyrfc3339
375 (package
376 (name "python-pyrfc3339")
377 (version "1.1")
378 (source
379 (origin
380 (method url-fetch)
381 (uri (pypi-uri "pyRFC3339" version))
382 (sha256
383 (base32
384 "06jv7ar7lpvvk0dixzwdr3wgm0g1lipxs429s2z7knwwa7hwpf41"))))
385 (build-system python-build-system)
386 (propagated-inputs
387 `(("python-pytz" ,python-pytz)))
388 (native-inputs
389 `(("python-nose" ,python-nose)))
390 (home-page "https://github.com/kurtraschke/pyRFC3339")
391 (synopsis "Python timestamp library")
392 (description "Python library for generating and parsing RFC 3339-compliant
393 timestamps.")
394 (license expat)))
395
396 (define-public python2-pyrfc3339
397 (package-with-python2 python-pyrfc3339))
398
399 (define-public python-arrow
400 (package
401 (name "python-arrow")
402 (version "0.10.0")
403 (source (origin
404 (method url-fetch)
405 (uri (pypi-uri "arrow" version))
406 (sha256
407 (base32
408 "08n7q2l69hlainds1byd4lxhwrq7zsw7s640zkqc3bs5jkq0cnc0"))))
409 (build-system python-build-system)
410 (native-inputs
411 `(;; For testing
412 ("python-chai" ,python-chai)
413 ("python-simplejson" ,python-simplejson)))
414 (propagated-inputs
415 `(("python-dateutil" ,python-dateutil)))
416 (home-page "https://github.com/crsmithdev/arrow/")
417 (synopsis "Dates and times for Python")
418 (description
419 "Arrow is a Python library to creating, manipulating, formatting and
420 converting dates, times, and timestamps. It implements and updates the
421 datetime type.")
422 (license asl2.0)))
423
424 (define-public python2-arrow
425 (package-with-python2 python-arrow))
426
427 (define-public python-aniso8601
428 (package
429 (name "python-aniso8601")
430 (version "1.3.0")
431 (source
432 (origin
433 (method url-fetch)
434 (uri (pypi-uri "aniso8601" version))
435 (sha256
436 (base32
437 "1waj54iv3n3lw1fapbz8a93yjgrybgpc86wif5baxdh1arpj9df3"))))
438 (build-system python-build-system)
439 (propagated-inputs
440 `(("python-dateutil" ,python-dateutil)))
441 (home-page "https://bitbucket.org/nielsenb/aniso8601")
442 (synopsis "Python library for parsing ISO 8601 strings")
443 (description
444 "This package contains a library for parsing ISO 8601 datetime strings.")
445 (license bsd-3)))
446
447 (define-public python2-aniso8601
448 (package-with-python2 python-aniso8601))
449
450 (define-public datefudge
451 (package
452 (name "datefudge")
453 (version "1.23")
454 (source (origin
455 ;; Source code is available from
456 ;; <https://salsa.debian.org/debian/datefudge.git>. However,
457 ;; for bootstrapping reasons, we do not rely on 'git-fetch' here
458 ;; (since Git -> GnuTLS -> datefudge).
459 (method url-fetch)
460 (uri (string-append
461 "mirror://debian/pool/main/d/datefudge/datefudge_"
462 version ".tar.xz"))
463 (sha256
464 (base32
465 "0ifnlb0mc8qc2kb5042pbz0ns6rwcb7201di8wyrsphl0yhnhxiv"))
466 (patches (search-patches "datefudge-gettimeofday.patch"))))
467 (build-system gnu-build-system)
468 (arguments
469 `(#:test-target "test"
470 #:make-flags (list "CC=gcc"
471 (string-append "prefix=" (assoc-ref %outputs "out")))
472 #:phases
473 (modify-phases %standard-phases
474 (add-after 'unpack 'patch-makefile
475 (lambda _
476 (substitute* "Makefile"
477 ((" -o root -g root") "")
478 (("VERSION := \\$\\(shell dpkg-parsechangelog .*")
479 (string-append "VERSION = " ,version)))
480 #t))
481 (delete 'configure))))
482 (native-inputs
483 `(("perl" ,perl)))
484 (home-page "https://salsa.debian.org/debian/datefudge")
485 (synopsis "Pretend the system date is different")
486 (description
487 "Utility that fakes the system time by pre-loading a small library that
488 modifies the @code{time}, @code{gettimeofday} and @code{clock_gettime} system
489 calls.")
490 (license gpl2)))