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