guix-more/more/packages/python.scm

python.scm

1
;;; GNU Guix --- Functional package management for GNU
2
;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
3
;;;
4
;;; This file is part of GNU Guix.
5
;;;
6
;;; GNU Guix is free software; you can redistribute it and/or modify it
7
;;; under the terms of the GNU General Public License as published by
8
;;; the Free Software Foundation; either version 3 of the License, or (at
9
;;; your option) any later version.
10
;;;
11
;;; GNU Guix is distributed in the hope that it will be useful, but
12
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
;;; GNU General Public License for more details.
15
;;;
16
;;; You should have received a copy of the GNU General Public License
17
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
18
19
(define-module (more packages python)
20
  #:use-module ((guix licenses) #:prefix license:)
21
  #:use-module (gnu packages)
22
  #:use-module (gnu packages compression)
23
  #:use-module (gnu packages databases)
24
  #:use-module (gnu packages python)
25
  #:use-module (gnu packages tls)
26
  #:use-module (gnu packages zip)
27
  #:use-module (guix packages)
28
  #:use-module (guix download)
29
  #:use-module (guix git-download)
30
  #:use-module (guix utils)
31
  #:use-module (guix build-system python))
32
33
(define-public python-setuptools-scm
34
  (package
35
    (name "python-setuptools-scm")
36
    (version "1.15.0")
37
    (source (origin
38
              (method url-fetch)
39
              (uri (pypi-uri "setuptools_scm" version))
40
              (sha256
41
               (base32
42
                "0bwyc5markib0i7i2qlyhdzxhiywzxbkfiapldma8m91m82jvwfs"))))
43
    (build-system python-build-system)
44
    (home-page "https://github.com/pypa/setuptools_scm/")
45
    (synopsis "Manage Python package versions in SCM metadata")
46
    (description
47
     "Setuptools_scm handles managing your Python package versions in
48
@dfn{software configuration management} (SCM) metadata instead of declaring
49
them as the version argument or in a SCM managed file.")
50
    (license license:expat)))
51
52
(define-public python2-setuptools-scm
53
  (package-with-python2 python-setuptools-scm))
54
55
(define-public python-pytest-runner
56
  (package
57
    (name "python-pytest-runner")
58
    (version "2.11")
59
    (source
60
     (origin
61
       (method url-fetch)
62
       (uri (pypi-uri "pytest-runner" version))
63
       (sha256
64
        (base32
65
         "08rizp3zz8fdm2a5j97rcq3hddbhq5f6k0vr35amjj83zqpawk5x"))))
66
    (build-system python-build-system)
67
    (arguments
68
     `(#:phases
69
       (modify-phases %standard-phases
70
         ;; The fancy way of setting the version with setuptools_scm does not
71
         ;; seem to work here.
72
         (add-after 'unpack 'set-version
73
          (lambda _
74
            (substitute* "docs/conf.py"
75
              (("version = setuptools_scm\\.get_version\\(root='\\.\\.')")
76
               (string-append "version = \"" ,version "\"")))
77
            #t)))))
78
    (native-inputs
79
     `(("python-pytest" ,python-pytest)
80
       ("python-setuptools-scm" ,python-setuptools-scm)))
81
    (home-page "https://github.com/pytest-dev/pytest-runner")
82
    (synopsis "Invoke py.test as a distutils command")
83
    (description
84
     "This package provides a @command{pytest-runner} command that
85
@file{setup.py} files can use to run tests.")
86
    (license license:expat)))
87
88
(define-public python2-pytest-runner
89
  (package-with-python2 python-pytest-runner))
90
91
(define-public python-utils
92
  (package
93
    (name "python-utils")
94
    (version "2.0.1")
95
    (source (origin
96
              (method url-fetch)
97
              (uri (pypi-uri "python-utils" version))
98
              (sha256
99
               (base32
100
                "1zvrc1rc06n89pycg969pcy30bff4sqzhff365sxh629ybnl8pwq"))))
101
    (build-system python-build-system)
102
    (native-inputs
103
     `(("pytest-runner" ,python-pytest-runner)
104
       ("pytest" ,python-pytest)
105
       ("six" ,python-six)))
106
    (home-page "https://github.com/WoLpH/python-utils")
107
    (synopsis "Convenient utilities not included with the standard Python install")
108
    (description
109
      "Python Utils is a collection of small Python functions and classes which
110
make common patterns shorter and easier.")
111
    (license license:bsd-2)))
112
113
(define-public python2-utils
114
  (package-with-python2 python-utils))
115
116
(define-public python-cooldict
117
  (package
118
    (name "python-cooldict")
119
    (version "1.02")
120
    (source (origin
121
              (method url-fetch)
122
              (uri (pypi-uri "cooldict" version))
123
              (sha256
124
               (base32
125
                "084if0s504576nph0f6glmg3mmvijq7nbnf65hh22gwwdwrjss83"))))
126
    (build-system python-build-system)
127
    (native-inputs
128
     `(("ana" ,python-ana)))
129
    (home-page "https://github.com/zardus/cooldict")
130
    (synopsis "Some useful dict-like structures")
131
    (description "Some useful dict-like structures.")
132
    (license license:bsd-2)))
133
134
(define-public python2-cooldict
135
  (package-with-python2 python-cooldict))
136
 
137
(define-public python-cachetools
138
  (package
139
    (name "python-cachetools")
140
    (version "2.0.0")
141
    (source (origin
142
              (method url-fetch)
143
              (uri (pypi-uri "cachetools" version))
144
              (sha256
145
               (base32
146
                "0a56ydsvsri1r19ny55g0x7jsgjl9n02vnxbhfz0vhhd4h174nki"))))
147
    (build-system python-build-system)
148
    (home-page "https://github.com/tkem/cachetools")
149
    (synopsis "Memoizing collections and decorators including lru_cache")
150
    (description "This module provides various memoizing collections and
151
decorators, including variants of the Python 3 Standard Library @code{lru_cache}
152
function decorator.")
153
    (license license:expat)))
154
155
(define-public python2-cachetools
156
  (package-with-python2 python-cachetools))
157
158
(define-public python-bintrees
159
  (package
160
    (name "python-bintrees")
161
    (version "2.0.4")
162
    (source (origin
163
              (method url-fetch)
164
              (uri (pypi-uri "bintrees" version))
165
              (sha256
166
               (base32
167
                "1q71md58i33qpjhwgi9ph9hpgch1dy2i6n4qljyl0x410rhikfvc"))))
168
    (build-system python-build-system)
169
    (home-page "https://github.com/mozman/bintrees")
170
    (synopsis "Provides Binary- RedBlack- and AVL-Trees written in Python and Cython/C")
171
    (description "This package provides Binary- RedBlack- and AVL-Trees written
172
in Python and Cython/C.
173
174
This Classes are much slower than the built-in dict class, but all
175
iterators/generators yielding data in sorted key order. Trees can be uses as
176
drop in replacement for dicts in most cases.")
177
    (license license:expat)))
178
179
(define-public python2-bintrees
180
  (package-with-python2 python-bintrees))
181
 
182
(define-public python2-dpkt
183
  (package
184
    (name "python2-dpkt")
185
    (version "1.8.8")
186
    (source (origin
187
              (method url-fetch)
188
              (uri (pypi-uri "dpkt" version))
189
              (sha256
190
               (base32
191
                "004qsqzg3fwkh623l1y8j62ai166hr02y192s7n1hs166kjjb5fr"))
192
              (modules '((guix build utils)))
193
              (snippet
194
               '(substitute* "setup.py"
195
                  (("os.system\\('py2dsc-deb ' + sdist_file\\)") "")))))
196
    (build-system python-build-system)
197
    (arguments
198
     `(#:python ,python-2))
199
    (home-page "https://github.com/kbandla/dpkt")
200
    (synopsis "Fast, simple network packet creation / parsing")
201
    (description "Fast, simple packet creation / parsing, with definitions for
202
the basic TCP/IP protocols.")
203
    (license license:bsd-3)))
204
205
(define-public python2-rpyc
206
  (package
207
    (name "python2-rpyc")
208
    (version "3.3.0")
209
    (source (origin
210
              (method url-fetch)
211
              (uri (pypi-uri "rpyc" version))
212
              (sha256
213
               (base32
214
                "0jwbxxf5f8l05pwh7ilg380y4pqv3nxibaszbwpl9gzh2i9q9yj3"))))
215
    (build-system python-build-system)
216
    (native-inputs
217
     `(("nose" ,python2-nose)))
218
    (propagated-inputs
219
     `(("plumbum" ,python2-plumbum)
220
       ("progressbar" ,python2-progressbar)))
221
    (arguments
222
     `(#:python ,python-2))
223
    (home-page "https://github.com/tomerfiliba/rpyc")
224
    (synopsis "Remote procedure call for Python")
225
    (description "Remote Python Call is a transparent library for symmetrical
226
remote procedure calls, clustering, and distributed-computing.  RPyC makes use
227
of object-proxying, a technique that employs python's dynamic nature, to
228
overcome the physical boundaries between processes and computers, so that
229
remote objects can be manipulated as if they were local.")
230
    (license license:expat)))
231
232
(define-public python2-progressbar
233
  (package
234
    (name "python2-progressbar")
235
    (version "2.3")
236
    (source (origin
237
              (method url-fetch)
238
              (uri (pypi-uri "progressbar" version))
239
              (sha256
240
               (base32
241
                "0m0j93yfvbd8pw8cz2vdb9hyk9d0zkkd509k69jrw545jxr8mlxj"))))
242
    (build-system python-build-system)
243
    (arguments
244
     `(#:python ,python-2))
245
    (home-page "https://github.com/niltonvolpato/python-progressbar")
246
    (synopsis "Text progress bar library for Python")
247
    (description
248
      "A text progress bar is typically used to display the progress of a long
249
running operation, providing a visual cue that processing is underway.
250
251
The ProgressBar class manages the current progress, and the format of the line
252
is given by a number of widgets. A widget is an object that may display
253
differently depending on the state of the progress bar. There are three types
254
of widgets:
255
256
@enumerate
257
@item a string, which always shows itself
258
@item a ProgressBarWidget, which may return a different value every time its
259
update method is called
260
@item a ProgressBarWidgetHFill, which is like ProgressBarWidget, except it
261
expands to fill the remaining width of the line.
262
@end enumerate
263
264
The progressbar module is very easy to use, yet very powerful. It will also
265
automatically enable features like auto-resizing when the system supports it.")
266
    (license (list license:lgpl2.1+ license:bsd-3))))
267
268
(define-public python-progressbar2
269
  (package
270
    (name "python-progressbar2")
271
    (version "3.12.0")
272
    (source (origin
273
              (method url-fetch)
274
              (uri (pypi-uri "progressbar2" version))
275
              (sha256
276
               (base32
277
                "16r21cpjvv0spf4mymgpy7hx6977iy11k44n2w9kipwg4lhwh02k"))))
278
    (build-system python-build-system)
279
    (native-inputs
280
     `(("pytest-runner" ,python-pytest-runner)
281
       ("pytest" ,python-pytest)))
282
    (propagated-inputs
283
     `(("six" ,python-six)
284
       ("utils" ,python-utils)))
285
    (home-page "https://github.com/WoLpH/python-progressbar")
286
    (synopsis "A text progress bar for python")
287
    (description "A text progress bar is typically used to display the progress
288
of a long running operation, providing a visual cue that processing is underway.
289
290
The ProgressBar class manages the current progress, and the format of the line
291
is given by a number of widgets.  A widget is an object that may display
292
differently depending on the state of the progress bar.")
293
    (license license:bsd-2)))
294
295
(define-public python2-progressbar2
296
  (package-with-python2 python-progressbar2))
297
 
298
(define-public python-mulpyplexer
299
  (package
300
    (name "python-mulpyplexer")
301
    (version "0.07")
302
    (source (origin
303
              (method url-fetch)
304
              (uri (pypi-uri "mulpyplexer" version))
305
              (sha256
306
               (base32
307
                "1j5gm913adc8f0mn9y6a9wm9h78jb7ykr8i00yysfcy6ah2ilp9v"))))
308
    (build-system python-build-system)
309
    (home-page "https://github.com/zardus/mulpyplexer")
310
    (synopsis "Multiplex interactions with lists of python objects")
311
    (description "Mulpyplexer is a piece of code that can multiplex interactions with lists of python objects.")
312
    (license license:bsd-2)))
313
314
(define-public python2-mulpyplexer
315
  (package-with-python2 python-mulpyplexer))
316
317
(define-public python-ana
318
  (package
319
    (name "python-ana")
320
    (version "0")
321
    (source (origin
322
              (method git-fetch)
323
              (uri (git-reference
324
                    (url "https://github.com/zardus/ana.git")
325
                    (commit "94928f773661eaa5a6c2dec40dad199c70daedab")))
326
              (sha256
327
               (base32
328
                "0f2wdhs0xwpnk9lznxl96b2yzcz1641wbqrh1aid7q2pm60v6dhv"))
329
              (file-name (string-append name "-" version))))
330
    (build-system python-build-system)
331
    (native-inputs
332
     `(("nose" ,python-nose)))
333
    (arguments
334
     `(#:phases
335
       (modify-phases %standard-phases
336
         (add-before 'build 'fix-python3-import
337
           (lambda _
338
             (substitute* "ana/datalayer.py"
339
               (("import cPickle as pickle") "import pickle")))))))
340
    (home-page "https://github.com/zardus/ana")
341
    (synopsis "Provide easy distributed data storage for python objects")
342
    (description "ANA is a project to provide easy distributed data storage for
343
stuff.  It provides every object with a UUID and, when pickled, will first
344
serialize the object's state to a central location and then \"pickle\" the
345
object into just its UUID.  This is really handy when you have to distribute
346
objects in some distributed system, and you'd rather not pickle the whole
347
object every time you need to send it.")
348
    (license license:bsd-2)))
349
350
(define-public python2-ana
351
  (package
352
    (inherit (package-with-python2 python-ana))
353
    (arguments
354
     `(#:python ,python-2))))
355
356
(define-public python-webassets
357
  (package
358
    (name "python-webassets")
359
    (version "0.12.1")
360
    (source
361
     (origin
362
       (method url-fetch)
363
       (uri (pypi-uri "webassets" version))
364
       (sha256
365
        (base32
366
         "1nrqkpb7z46h2b77xafxihqv3322cwqv6293ngaky4j3ff4cing7"))))
367
    (build-system python-build-system)
368
    (home-page "http://github.com/miracle2k/webassets")
369
    (synopsis "Media asset management")
370
    (description "Merges, minifies and compresses Javascript and CSS files,
371
supporting a variety of different filters, including YUI, jsmin, jspacker or
372
CSS tidy.  Also supports URL rewriting in CSS files.")
373
    (license license:bsd-2)))
374
375
376
(define-public python-sphinx-me
377
  (package
378
    (name "python-sphinx-me")
379
    (version "0.3")
380
    (source
381
     (origin
382
       (method url-fetch)
383
       (uri (pypi-uri "sphinx-me" version))
384
       (sha256
385
        (base32
386
         "06jzgp213zihnvpcy2y5jy3ykid3apc2ncp2pg6a2g05lhiziglq"))))
387
    (build-system python-build-system)
388
    (home-page "https://github.com/stephenmcd/sphinx-me")
389
    (synopsis "Create a Sphinx documentation shell")
390
    (description
391
      "Create a Sphinx documentation shell for your project and include the
392
README file as the documentation index.  It handles extracting the required
393
meta data such as the project name, author and version from your project for
394
use in your Sphinx docs.")
395
    (license license:bsd-2)))
396
397
(define-public python2-sphinx-me
398
  (package-with-python2 python-sphinx-me))
399
400
(define-public python-rq
401
  (package
402
    (name "python-rq")
403
    (version "0.7.1")
404
    (source
405
     (origin
406
       (method url-fetch)
407
       (uri (pypi-uri "rq" version))
408
       (sha256
409
        (base32 "0gaq5pnh0zy46r8jvygi0ifbvz3pq6i7xla78ijcgjw0x77qzsdh"))))
410
    (build-system python-build-system)
411
    (propagated-inputs
412
     `(("python-click" ,python-click)
413
       ("python-redis" ,python-redis)))
414
    (home-page "http://python-rq.org/")
415
    (synopsis "Simple job queues for Python")
416
    (description
417
     "RQ (Redis Queue) is a simple Python library for queueing jobs and
418
processing them in the background with workers.  It is backed by Redis and it
419
is designed to have a low barrier to entry.")
420
    (license license:bsd-2)))
421
422
(define-public python2-rq
423
  (package-with-python2 python-rq))
424
425
(define-public python-cssmin
426
  (package
427
    (name "python-cssmin")
428
    (version "0.2.0")
429
    (source
430
      (origin
431
        (method url-fetch)
432
        (uri (pypi-uri "cssmin" version))
433
        (sha256
434
         (base32
435
          "1dk723nfm2yf8cp4pj785giqlwv42l0kj8rk40kczvq1hk6g04p0"))))
436
    (build-system python-build-system)
437
    (home-page "https://github.com/zacharyvoase/cssmin")
438
    (synopsis "Python port of the YUI CSS Compressor")
439
    (description "Python port of the YUI CSS Compressor.")
440
    (license (list license:expat license:bsd-3))))
441
442
(define-public python2-cssmin
443
  (package-with-python2 python-cssmin))
444
 
445
(define-public python-diff-match-patch
446
  (package
447
    (name "python-diff-match-patch")
448
    (version "20121119")
449
    (source
450
      (origin
451
        (method url-fetch)
452
        (uri (pypi-uri "diff-match-patch" version))
453
        (sha256
454
         (base32
455
          "0k1f3v8nbidcmmrk65m7h8v41jqi37653za9fcs96y7jzc8mdflx"))))
456
    (build-system python-build-system)
457
    (home-page "https://code.google.com/p/google-diff-match-patch")
458
    (synopsis "Synchronize plain text")
459
    (description "Diff Match and Patch libraries offer robust algorithms to
460
perform the operations required for synchronizing plain text.")
461
    (license license:asl2.0)))
462
463
(define-public python2-diff-match-patch
464
  (package-with-python2 python-diff-match-patch))
465
 
466
(define-public python-dirsync
467
  (package
468
    (name "python-dirsync")
469
    (version "2.2.2")
470
    (source
471
      (origin
472
        (method url-fetch)
473
        (uri (string-append
474
               "https://pypi.python.org/packages/15/7c/2d4986c0bd927fcc496d1c19"
475
               "3fdd2c0aafbd30ba8928ec92b79f3abf2bd7/dirsync-" version ".zip"))
476
        (sha256
477
         (base32
478
          "1hcdvmkwd5512zbxpin0k7bx5bkgzy3swjx7d0kj1y45af6r75v2"))))
479
    (build-system python-build-system)
480
    (native-inputs
481
     `(("unzip" ,unzip)))
482
    (propagated-inputs
483
     `(("six" ,python-six)))
484
    (home-page "https://bitbucket.org/tkhyn/dirsync")
485
    (synopsis "Advanced directory tree synchronisation tool")
486
    (description "Advanced directory tree synchronisation tool.")
487
    (license license:expat)))
488
489
(define-public python2-dirsync
490
  (package-with-python2 python-dirsync))
491
 
492
(define-public python-elasticsearch
493
  (package
494
    (name "python-elasticsearch")
495
    (version "1.0.0")
496
    (source
497
      (origin
498
        (method url-fetch)
499
        (uri (pypi-uri "elasticsearch" version))
500
        (sha256
501
         (base32
502
          "1sdw1r05cw7ihnmng8ra9v968fj7bq6sji8i1dikymsnkcpgc69g"))))
503
    (build-system python-build-system)
504
    (propagated-inputs
505
     `(("urllib3" ,python-urllib3)))
506
    (home-page "https://github.com/elastic/elasticsearch-py")
507
    (synopsis "Low-level client for Elasticsearch")
508
    (description "Official low-level client for Elasticsearch.  Its goal is to
509
provide common ground for all Elasticsearch-related code in Python; because of
510
this it tries to be opinion-free and very extendable.")
511
    (license license:expat)))
512
513
(define-public python2-elasticsearch
514
  (package-with-python2 python-elasticsearch))
515
516
(define-public python-dateutil-2
517
  (package
518
    (name "python-dateutil")
519
    (version "2.6.0")
520
    (source
521
     (origin
522
      (method url-fetch)
523
      (uri (pypi-uri "python-dateutil" version))
524
      (sha256
525
       (base32
526
        "1lhq0hxjc3cfha101q02ld5ijlpfyjn2w1yh7wvpiy367pgzi8k2"))))
527
    (build-system python-build-system)
528
    (propagated-inputs
529
     `(("python-six" ,python-six)))
530
    (home-page "https://dateutil.readthedocs.io/en/stable/")
531
    (synopsis "Extensions to the standard datetime module")
532
    (description
533
     "The dateutil module provides powerful extensions to the standard
534
datetime module, available in Python 2.3+.")
535
    (license license:bsd-3)))
536
537
(define-public python2-dateutil-2
538
  (package-with-python2 python-dateutil-2))
539
 
540
(define-public python-levenshtein
541
  (package
542
    (name "python-levenshtein")
543
    (version "0.12.0")
544
    (source
545
     (origin
546
      (method url-fetch)
547
      (uri (pypi-uri "python-Levenshtein" version))
548
      (sha256
549
       (base32
550
        "1c9ybqcja31nghfcc8xxbbz9h60s9qi12b9hr4jyl69xbvg12fh3"))))
551
    (build-system python-build-system)
552
    (home-page "https://github.com/ztane/python-Levenshtein")
553
    (synopsis "Fast computation of Levenshtein distance and string similarity")
554
    (description
555
     "The Levenshtein Python C extension module contains functions for fast computation of
556
@enumerate
557
@item Levenshtein (edit) distance, and edit operations
558
@item string similarity
559
@item approximate median strings, and generally string averaging
560
@item string sequence and set similarity
561
@end enumerate
562
It supports both normal and Unicode strings.")
563
    (license license:gpl2+)))
564
565
(define-public python2-levenshtein
566
  (package-with-python2 python-levenshtein))
567
 
568
(define-public python-scandir
569
  (package
570
    (name "python-scandir")
571
    (version "1.4")
572
    (source
573
     (origin
574
       (method url-fetch)
575
       (uri (pypi-uri "scandir" version))
576
       (sha256
577
        (base32 "0yjrgp0mxp3d8bjkq2m1ac2ys8n76wykksvgyjrnil9gr3fx7a5d"))))
578
    (build-system python-build-system)
579
    (home-page "https://github.com/benhoyt/scandir")
580
    (synopsis "Directory iteration function")
581
    (description
582
     "Directory iteration function like os.listdir(), except that instead of
583
returning a list of bare filenames, it yields DirEntry objects that include
584
file type and stat information along with the name.  Using scandir() increases
585
the speed of os.walk() by 2-20 times (depending on the platform and file
586
system) by avoiding unnecessary calls to os.stat() in most cases.")
587
    (license license:bsd-3)))
588
589
(define-public python2-scandir
590
  (package-with-python2 python-scandir))
591
 
592
(define-public python-stemming
593
  (package
594
    (name "python-stemming")
595
    (version "1.0.1")
596
    (source
597
     (origin
598
       (method url-fetch)
599
       (uri (pypi-uri "stemming" version))
600
       (sha256
601
        (base32 "0ldwa24gnnxhniv0fhygkpc2mwgd93q10ag8rvzayv6hw418frsr"))))
602
    (build-system python-build-system)
603
    (home-page "https://bitbucket.org/mchaput/stemming/overview")
604
    (synopsis "Python implementations of various stemming algorithms")
605
    (description
606
     "Python implementations of the Porter, Porter2, Paice-Husk, and Lovins
607
stemming algorithms for English. These implementations are straightforward and
608
efficient, unlike some Python versions of the same algorithms available on the
609
Web. This package is an extraction of the stemming code included in the Whoosh
610
search engine.")
611
    (license license:public-domain)))
612
613
(define-public python2-stemming
614
  (package-with-python2 python-stemming))
615
 
616
(define-public python-translate-toolkit
617
  (package
618
    (name "python-translate-toolkit")
619
    (version "2.0.0")
620
    (source
621
     (origin
622
       (method url-fetch)
623
       (uri (pypi-uri "translate-toolkit" version ".tar.bz2"))
624
       (sha256
625
        (base32 "1648y76sxg11m31hvvnsps1yvmiz51dnn8ir24q9mjfw1qarx3wp"))))
626
    (build-system python-build-system)
627
    (home-page "http://toolkit.translatehouse.org")
628
    (synopsis "Tools and API for translation and localization engineering")
629
    (description
630
     "Tools and API for translation and localization engineering.  It contains
631
several utilities, as well as an API for building localization tools.")
632
    (license license:gpl2+)))
633
634
(define-public python2-translate-toolkit
635
  (package-with-python2 python-translate-toolkit))
636
637
(define-public python-mysqlclient
638
  (package
639
    (name "python-mysqlclient")
640
    (version "1.3.9")
641
    (source
642
     (origin
643
       (method url-fetch)
644
       (uri (pypi-uri "mysqlclient" version))
645
       (sha256
646
        (base32
647
         "16ccq9hvsrc6nf0nakn19dqncr913kf97j8ip28s5f8m3wgcy34r"))))
648
    (build-system python-build-system)
649
    (inputs
650
     `(("mysql" ,mysql)
651
       ("libz" ,zlib)
652
       ("openssl" ,openssl)))
653
    (home-page "https://github.com/PyMySQL/mysqlclient-python")
654
    (synopsis "MySQLdb is an interface to the popular MySQL database server for Python")
655
    (description "MySQLdb is an interface to the popular MySQL database server
656
for Python.  The design goals are:
657
@enumerate
658
@item Compliance with Python database API version 2.0 [PEP-0249],
659
@item Thread-safety,
660
@item Thread-friendliness (threads will not block each other).
661
@end enumerate")
662
    (license license:gpl2)))
663
664
(define-public python2-mysqlclient
665
  (package-with-python2 python-mysqlclient))
666
667
(define-public python-plumbum
668
  (package
669
    (name "python-plumbum")
670
    (version "1.6.3")
671
    (source
672
     (origin
673
       (method url-fetch)
674
       (uri (pypi-uri "plumbum" version))
675
       (sha256
676
        (base32 "083kikr1f7qzpp5jllss97dy8d6249v7ia3wg9i0a6wz8l4ffj82"))))
677
    (build-system python-build-system)
678
    (native-inputs
679
     `(("pytest" ,python-pytest)))
680
    (home-page "https://plumbum.readthedocs.io/en/latest")
681
    (synopsis "Shell script-like programs in Python")
682
    (description
683
      "Plumbum (Latin for lead, which was used to create pipes back in the day)
684
is a small yet feature-rich library for shell script-like programs in Python.
685
The motto of the library is “Never write shell scripts again”, and thus it
686
attempts to mimic the shell syntax (“shell combinators”) where it makes sense,
687
while keeping it all Pythonic and cross-platform.")
688
    (license license:expat)))
689
690
(define-public python2-plumbum
691
  (package-with-python2 python-plumbum))
692