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
354
(define-public python-sphinx-me
355
  (package
356
    (name "python-sphinx-me")
357
    (version "0.3")
358
    (source
359
     (origin
360
       (method url-fetch)
361
       (uri (pypi-uri "sphinx-me" version))
362
       (sha256
363
        (base32
364
         "06jzgp213zihnvpcy2y5jy3ykid3apc2ncp2pg6a2g05lhiziglq"))))
365
    (build-system python-build-system)
366
    (home-page "https://github.com/stephenmcd/sphinx-me")
367
    (synopsis "Create a Sphinx documentation shell")
368
    (description
369
      "Create a Sphinx documentation shell for your project and include the
370
README file as the documentation index.  It handles extracting the required
371
meta data such as the project name, author and version from your project for
372
use in your Sphinx docs.")
373
    (license license:bsd-2)))
374
375
(define-public python2-sphinx-me
376
  (package-with-python2 python-sphinx-me))
377
378
(define-public python-rq
379
  (package
380
    (name "python-rq")
381
    (version "0.7.1")
382
    (source
383
     (origin
384
       (method url-fetch)
385
       (uri (pypi-uri "rq" version))
386
       (sha256
387
        (base32 "0gaq5pnh0zy46r8jvygi0ifbvz3pq6i7xla78ijcgjw0x77qzsdh"))))
388
    (build-system python-build-system)
389
    (propagated-inputs
390
     `(("python-click" ,python-click)
391
       ("python-redis" ,python-redis)))
392
    (home-page "http://python-rq.org/")
393
    (synopsis "Simple job queues for Python")
394
    (description
395
     "RQ (Redis Queue) is a simple Python library for queueing jobs and
396
processing them in the background with workers.  It is backed by Redis and it
397
is designed to have a low barrier to entry.")
398
    (license license:bsd-2)))
399
400
(define-public python2-rq
401
  (package-with-python2 python-rq))
402
403
(define-public python-cssmin
404
  (package
405
    (name "python-cssmin")
406
    (version "0.2.0")
407
    (source
408
      (origin
409
        (method url-fetch)
410
        (uri (pypi-uri "cssmin" version))
411
        (sha256
412
         (base32
413
          "1dk723nfm2yf8cp4pj785giqlwv42l0kj8rk40kczvq1hk6g04p0"))))
414
    (build-system python-build-system)
415
    (home-page "https://github.com/zacharyvoase/cssmin")
416
    (synopsis "Python port of the YUI CSS Compressor")
417
    (description "Python port of the YUI CSS Compressor.")
418
    (license (list license:expat license:bsd-3))))
419
420
(define-public python2-cssmin
421
  (package-with-python2 python-cssmin))
422
 
423
(define-public python-diff-match-patch
424
  (package
425
    (name "python-diff-match-patch")
426
    (version "20121119")
427
    (source
428
      (origin
429
        (method url-fetch)
430
        (uri (pypi-uri "diff-match-patch" version))
431
        (sha256
432
         (base32
433
          "0k1f3v8nbidcmmrk65m7h8v41jqi37653za9fcs96y7jzc8mdflx"))))
434
    (build-system python-build-system)
435
    (home-page "https://code.google.com/p/google-diff-match-patch")
436
    (synopsis "Synchronize plain text")
437
    (description "Diff Match and Patch libraries offer robust algorithms to
438
perform the operations required for synchronizing plain text.")
439
    (license license:asl2.0)))
440
441
(define-public python2-diff-match-patch
442
  (package-with-python2 python-diff-match-patch))
443
 
444
(define-public python-dirsync
445
  (package
446
    (name "python-dirsync")
447
    (version "2.2.2")
448
    (source
449
      (origin
450
        (method url-fetch)
451
        (uri (string-append
452
               "https://pypi.python.org/packages/15/7c/2d4986c0bd927fcc496d1c19"
453
               "3fdd2c0aafbd30ba8928ec92b79f3abf2bd7/dirsync-" version ".zip"))
454
        (sha256
455
         (base32
456
          "1hcdvmkwd5512zbxpin0k7bx5bkgzy3swjx7d0kj1y45af6r75v2"))))
457
    (build-system python-build-system)
458
    (native-inputs
459
     `(("unzip" ,unzip)))
460
    (propagated-inputs
461
     `(("six" ,python-six)))
462
    (home-page "https://bitbucket.org/tkhyn/dirsync")
463
    (synopsis "Advanced directory tree synchronisation tool")
464
    (description "Advanced directory tree synchronisation tool.")
465
    (license license:expat)))
466
467
(define-public python2-dirsync
468
  (package-with-python2 python-dirsync))
469
 
470
(define-public python-elasticsearch
471
  (package
472
    (name "python-elasticsearch")
473
    (version "1.0.0")
474
    (source
475
      (origin
476
        (method url-fetch)
477
        (uri (pypi-uri "elasticsearch" version))
478
        (sha256
479
         (base32
480
          "1sdw1r05cw7ihnmng8ra9v968fj7bq6sji8i1dikymsnkcpgc69g"))))
481
    (build-system python-build-system)
482
    (propagated-inputs
483
     `(("urllib3" ,python-urllib3)))
484
    (home-page "https://github.com/elastic/elasticsearch-py")
485
    (synopsis "Low-level client for Elasticsearch")
486
    (description "Official low-level client for Elasticsearch.  Its goal is to
487
provide common ground for all Elasticsearch-related code in Python; because of
488
this it tries to be opinion-free and very extendable.")
489
    (license license:expat)))
490
491
(define-public python2-elasticsearch
492
  (package-with-python2 python-elasticsearch))
493
494
;; TODO: python-dateutil in guix/packages/python.scm
495
(define-public python-dateutil-2
496
  (package
497
    (name "python-dateutil")
498
    (version "2.6.0")
499
    (source
500
     (origin
501
      (method url-fetch)
502
      (uri (pypi-uri "python-dateutil" version))
503
      (sha256
504
       (base32
505
        "1lhq0hxjc3cfha101q02ld5ijlpfyjn2w1yh7wvpiy367pgzi8k2"))))
506
    (build-system python-build-system)
507
    (propagated-inputs
508
     `(("python-six" ,python-six)))
509
    (home-page "https://dateutil.readthedocs.io/en/stable/")
510
    (synopsis "Extensions to the standard datetime module")
511
    (description
512
     "The dateutil module provides powerful extensions to the standard
513
datetime module, available in Python 2.3+.")
514
    (license license:bsd-3)))
515
516
(define-public python2-dateutil-2
517
  (package-with-python2 python-dateutil-2))
518
 
519
(define-public python-levenshtein
520
  (package
521
    (name "python-levenshtein")
522
    (version "0.12.0")
523
    (source
524
     (origin
525
      (method url-fetch)
526
      (uri (pypi-uri "python-Levenshtein" version))
527
      (sha256
528
       (base32
529
        "1c9ybqcja31nghfcc8xxbbz9h60s9qi12b9hr4jyl69xbvg12fh3"))))
530
    (build-system python-build-system)
531
    (home-page "https://github.com/ztane/python-Levenshtein")
532
    (synopsis "Fast computation of Levenshtein distance and string similarity")
533
    (description
534
     "The Levenshtein Python C extension module contains functions for fast computation of
535
@enumerate
536
@item Levenshtein (edit) distance, and edit operations
537
@item string similarity
538
@item approximate median strings, and generally string averaging
539
@item string sequence and set similarity
540
@end enumerate
541
It supports both normal and Unicode strings.")
542
    (license license:gpl2+)))
543
544
(define-public python2-levenshtein
545
  (package-with-python2 python-levenshtein))
546
 
547
(define-public python-scandir
548
  (package
549
    (name "python-scandir")
550
    (version "1.4")
551
    (source
552
     (origin
553
       (method url-fetch)
554
       (uri (pypi-uri "scandir" version))
555
       (sha256
556
        (base32 "0yjrgp0mxp3d8bjkq2m1ac2ys8n76wykksvgyjrnil9gr3fx7a5d"))))
557
    (build-system python-build-system)
558
    (home-page "https://github.com/benhoyt/scandir")
559
    (synopsis "Directory iteration function")
560
    (description
561
     "Directory iteration function like os.listdir(), except that instead of
562
returning a list of bare filenames, it yields DirEntry objects that include
563
file type and stat information along with the name.  Using scandir() increases
564
the speed of os.walk() by 2-20 times (depending on the platform and file
565
system) by avoiding unnecessary calls to os.stat() in most cases.")
566
    (license license:bsd-3)))
567
568
(define-public python2-scandir
569
  (package-with-python2 python-scandir))
570
 
571
(define-public python-stemming
572
  (package
573
    (name "python-stemming")
574
    (version "1.0.1")
575
    (source
576
     (origin
577
       (method url-fetch)
578
       (uri (pypi-uri "stemming" version))
579
       (sha256
580
        (base32 "0ldwa24gnnxhniv0fhygkpc2mwgd93q10ag8rvzayv6hw418frsr"))))
581
    (build-system python-build-system)
582
    (home-page "https://bitbucket.org/mchaput/stemming/overview")
583
    (synopsis "Python implementations of various stemming algorithms")
584
    (description
585
     "Python implementations of the Porter, Porter2, Paice-Husk, and Lovins
586
stemming algorithms for English. These implementations are straightforward and
587
efficient, unlike some Python versions of the same algorithms available on the
588
Web. This package is an extraction of the stemming code included in the Whoosh
589
search engine.")
590
    (license license:public-domain)))
591
592
(define-public python2-stemming
593
  (package-with-python2 python-stemming))
594
 
595
(define-public python-translate-toolkit
596
  (package
597
    (name "python-translate-toolkit")
598
    (version "2.0.0")
599
    (source
600
     (origin
601
       (method url-fetch)
602
       (uri (pypi-uri "translate-toolkit" version ".tar.bz2"))
603
       (sha256
604
        (base32 "1648y76sxg11m31hvvnsps1yvmiz51dnn8ir24q9mjfw1qarx3wp"))))
605
    (build-system python-build-system)
606
    (home-page "http://toolkit.translatehouse.org")
607
    (synopsis "Tools and API for translation and localization engineering")
608
    (description
609
     "Tools and API for translation and localization engineering.  It contains
610
several utilities, as well as an API for building localization tools.")
611
    (license license:gpl2+)))
612
613
(define-public python2-translate-toolkit
614
  (package-with-python2 python-translate-toolkit))
615
616
(define-public python-mysqlclient
617
  (package
618
    (name "python-mysqlclient")
619
    (version "1.3.9")
620
    (source
621
     (origin
622
       (method url-fetch)
623
       (uri (pypi-uri "mysqlclient" version))
624
       (sha256
625
        (base32
626
         "16ccq9hvsrc6nf0nakn19dqncr913kf97j8ip28s5f8m3wgcy34r"))))
627
    (build-system python-build-system)
628
    (native-inputs
629
     `(("mariadb" ,mariadb)))
630
    (inputs
631
     `(("mysql" ,mysql)
632
       ("libz" ,zlib)
633
       ("openssl" ,openssl)))
634
    (propagated-inputs
635
     `(("nose" ,python-nose)
636
       ("mock" ,python-mock)
637
       ("py.test" ,python-pytest)))
638
    (home-page "https://github.com/PyMySQL/mysqlclient-python")
639
    (synopsis "MySQLdb is an interface to the popular MySQL database server for Python")
640
    (description "MySQLdb is an interface to the popular MySQL database server
641
for Python.  The design goals are:
642
@enumerate
643
@item Compliance with Python database API version 2.0 [PEP-0249],
644
@item Thread-safety,
645
@item Thread-friendliness (threads will not block each other).
646
@end enumerate")
647
    (license license:gpl2)))
648
649
(define-public python2-mysqlclient
650
  (package-with-python2 python-mysqlclient))
651
652
(define-public python-plumbum
653
  (package
654
    (name "python-plumbum")
655
    (version "1.6.3")
656
    (source
657
     (origin
658
       (method url-fetch)
659
       (uri (pypi-uri "plumbum" version))
660
       (sha256
661
        (base32 "083kikr1f7qzpp5jllss97dy8d6249v7ia3wg9i0a6wz8l4ffj82"))))
662
    (build-system python-build-system)
663
    (native-inputs
664
     `(("pytest" ,python-pytest)))
665
    (home-page "https://plumbum.readthedocs.io/en/latest")
666
    (synopsis "Shell script-like programs in Python")
667
    (description
668
      "Plumbum (Latin for lead, which was used to create pipes back in the day)
669
is a small yet feature-rich library for shell script-like programs in Python.
670
The motto of the library is “Never write shell scripts again”, and thus it
671
attempts to mimic the shell syntax (“shell combinators”) where it makes sense,
672
while keeping it all Pythonic and cross-platform.")
673
    (license license:expat)))
674
675
(define-public python2-plumbum
676
  (package-with-python2 python-plumbum))
677