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 aspell)
23
  #:use-module (gnu packages audio)
24
  #:use-module (gnu packages check)
25
  #:use-module (gnu packages compression)
26
  #:use-module (gnu packages databases)
27
  #:use-module (gnu packages enchant)
28
  #:use-module (gnu packages libffi)
29
  #:use-module (gnu packages libreoffice)
30
  #:use-module (gnu packages maths)
31
  #:use-module (gnu packages networking)
32
  #:use-module (gnu packages python)
33
  #:use-module (gnu packages python-crypto)
34
  #:use-module (gnu packages python-web)
35
  #:use-module (gnu packages python-xyz)
36
  #:use-module (gnu packages qt)
37
  #:use-module (gnu packages serialization)
38
  #:use-module (gnu packages time)
39
  #:use-module (gnu packages tls)
40
  #:use-module (gnu packages version-control)
41
  #:use-module (gnu packages web)
42
  #:use-module (guix packages)
43
  #:use-module (guix download)
44
  #:use-module (guix git-download)
45
  #:use-module (guix utils)
46
  #:use-module (guix build-system python))
47
48
(define-public python-cooldict
49
  (package
50
    (name "python-cooldict")
51
    (version "1.02")
52
    (source (origin
53
              (method url-fetch)
54
              (uri (pypi-uri "cooldict" version))
55
              (sha256
56
               (base32
57
                "084if0s504576nph0f6glmg3mmvijq7nbnf65hh22gwwdwrjss83"))))
58
    (build-system python-build-system)
59
    (native-inputs
60
     `(("ana" ,python-ana)))
61
    (home-page "https://github.com/zardus/cooldict")
62
    (synopsis "Some useful dict-like structures")
63
    (description "Some useful dict-like structures.")
64
    (license license:bsd-2)))
65
66
(define-public python2-cooldict
67
  (package-with-python2 python-cooldict))
68
 
69
(define-public python-cachetools
70
  (package
71
    (name "python-cachetools")
72
    (version "2.0.1")
73
    (source (origin
74
              (method url-fetch)
75
              (uri (pypi-uri "cachetools" version))
76
              (sha256
77
               (base32
78
                "0pdw2fr29pxlyn1g5fhdrrqbpn0iw062nv716ngdqvdx7hnizq7d"))))
79
    (build-system python-build-system)
80
    (home-page "https://github.com/tkem/cachetools")
81
    (synopsis "Memoizing collections and decorators including lru_cache")
82
    (description "This module provides various memoizing collections and
83
decorators, including variants of the Python 3 Standard Library @code{lru_cache}
84
function decorator.")
85
    (license license:expat)))
86
87
(define-public python2-cachetools
88
  (package-with-python2 python-cachetools))
89
90
(define-public python-bintrees
91
  (package
92
    (name "python-bintrees")
93
    (version "2.0.7")
94
    (source (origin
95
              (method url-fetch)
96
              (uri (pypi-uri "bintrees" version ".zip"))
97
              (sha256
98
               (base32
99
                "0w0js514awl9qwamcr71spi8mmv7q3n4mgrqrnmr9w6f09k5wrv0"))))
100
    (build-system python-build-system)
101
    (native-inputs `(("unzip" ,unzip)))
102
    (home-page "https://github.com/mozman/bintrees")
103
    (synopsis "Provides Binary- RedBlack- and AVL-Trees written in Python and Cython/C")
104
    (description "This package provides Binary- RedBlack- and AVL-Trees written
105
in Python and Cython/C.
106
107
This Classes are much slower than the built-in dict class, but all
108
iterators/generators yielding data in sorted key order. Trees can be uses as
109
drop in replacement for dicts in most cases.")
110
    (license license:expat)))
111
112
(define-public python2-bintrees
113
  (package-with-python2 python-bintrees))
114
 
115
(define-public python2-dpkt
116
  (package
117
    (name "python2-dpkt")
118
    (version "1.9.1")
119
    (source (origin
120
              (method url-fetch)
121
              (uri (pypi-uri "dpkt" version))
122
              (sha256
123
               (base32
124
                "0rr9ygczhxkfb61778jx0cxs0sq46zwlcj5l3wn6xmd3iy3yx9y6"))
125
              (modules '((guix build utils)))
126
              (snippet
127
               '(substitute* "setup.py"
128
                  (("os.system\\('py2dsc-deb ' + sdist_file\\)") "")))))
129
    (build-system python-build-system)
130
    (arguments
131
     `(#:python ,python-2))
132
    (home-page "https://github.com/kbandla/dpkt")
133
    (synopsis "Fast, simple network packet creation / parsing")
134
    (description "Fast, simple packet creation / parsing, with definitions for
135
the basic TCP/IP protocols.")
136
    (license license:bsd-3)))
137
138
;; According to pypi, should work with py3
139
(define-public python2-rpyc
140
  (package
141
    (name "python2-rpyc")
142
    (version "3.4.4")
143
    (source (origin
144
              (method url-fetch)
145
              (uri (pypi-uri "rpyc" version))
146
              (sha256
147
               (base32
148
                "1iw1nkyh8r55xqafl14lp7lih38b5fdqid05s6cp4zd62821v6d8"))))
149
    (build-system python-build-system)
150
    (native-inputs
151
     `(("nose" ,python2-nose)))
152
    (propagated-inputs
153
     `(("plumbum" ,python2-plumbum)
154
       ("progressbar" ,python2-progressbar)))
155
    (arguments
156
     `(#:python ,python-2))
157
    (home-page "https://github.com/tomerfiliba/rpyc")
158
    (synopsis "Remote procedure call for Python")
159
    (description "Remote Python Call is a transparent library for symmetrical
160
remote procedure calls, clustering, and distributed-computing.  RPyC makes use
161
of object-proxying, a technique that employs python's dynamic nature, to
162
overcome the physical boundaries between processes and computers, so that
163
remote objects can be manipulated as if they were local.")
164
    (license license:expat)))
165
166
;; According to pypi, should work with py3
167
(define-public python2-progressbar
168
  (package
169
    (name "python2-progressbar")
170
    (version "2.3")
171
    (source (origin
172
              (method url-fetch)
173
              (uri (pypi-uri "progressbar" version))
174
              (sha256
175
               (base32
176
                "0m0j93yfvbd8pw8cz2vdb9hyk9d0zkkd509k69jrw545jxr8mlxj"))))
177
    (build-system python-build-system)
178
    (arguments
179
     `(#:python ,python-2))
180
    (home-page "https://github.com/niltonvolpato/python-progressbar")
181
    (synopsis "Text progress bar library for Python")
182
    (description
183
      "A text progress bar is typically used to display the progress of a long
184
running operation, providing a visual cue that processing is underway.
185
186
The ProgressBar class manages the current progress, and the format of the line
187
is given by a number of widgets. A widget is an object that may display
188
differently depending on the state of the progress bar. There are three types
189
of widgets:
190
191
@enumerate
192
@item a string, which always shows itself
193
@item a ProgressBarWidget, which may return a different value every time its
194
update method is called
195
@item a ProgressBarWidgetHFill, which is like ProgressBarWidget, except it
196
expands to fill the remaining width of the line.
197
@end enumerate
198
199
The progressbar module is very easy to use, yet very powerful. It will also
200
automatically enable features like auto-resizing when the system supports it.")
201
    (license (list license:lgpl2.1+ license:bsd-3))))
202
203
(define-public python-progressbar2
204
  (package
205
    (name "python-progressbar2")
206
    (version "3.34.3")
207
    (source (origin
208
              (method url-fetch)
209
              (uri (pypi-uri "progressbar2" version))
210
              (sha256
211
               (base32
212
                "1gigwmr60bgvjg2b4w93nww065dc4af8bq40b4hr9n9f54jp3w5x"))))
213
    (build-system python-build-system)
214
    (native-inputs
215
     `(("pytest-runner" ,python-pytest-runner)
216
       ("pytest" ,python-pytest)))
217
    (propagated-inputs
218
     `(("six" ,python-six)
219
       ("utils" ,python-utils)))
220
    (home-page "https://github.com/WoLpH/python-progressbar")
221
    (synopsis "A text progress bar for python")
222
    (description "A text progress bar is typically used to display the progress
223
of a long running operation, providing a visual cue that processing is underway.
224
225
The ProgressBar class manages the current progress, and the format of the line
226
is given by a number of widgets.  A widget is an object that may display
227
differently depending on the state of the progress bar.")
228
    (license license:bsd-2)))
229
230
(define-public python2-progressbar2
231
  (package-with-python2 python-progressbar2))
232
 
233
(define-public python-mulpyplexer
234
  (package
235
    (name "python-mulpyplexer")
236
    (version "0.08")
237
    (source (origin
238
              (method url-fetch)
239
              (uri (pypi-uri "mulpyplexer" version))
240
              (sha256
241
               (base32
242
                "1zn5d1vyhfjp8x9z5mr9gv8m8gmi3s3jv3kqb790xzi1kqi0p4ya"))))
243
    (build-system python-build-system)
244
    (home-page "https://github.com/zardus/mulpyplexer")
245
    (synopsis "Multiplex interactions with lists of python objects")
246
    (description "Mulpyplexer is a piece of code that can multiplex interactions with lists of python objects.")
247
    (license license:bsd-2)))
248
249
(define-public python2-mulpyplexer
250
  (package-with-python2 python-mulpyplexer))
251
252
(define-public python-ana
253
  (package
254
    (name "python-ana")
255
    (version "0")
256
    (source (origin
257
              (method git-fetch)
258
              (uri (git-reference
259
                    (url "https://github.com/zardus/ana.git")
260
                    (commit "6d37cf9288839c5536ed2075f206d8d2a80c5906")))
261
              (sha256
262
               (base32
263
                "15mvylgfzmsj0n62m6r5xpqzp6qp4nmp9r3j93g0f64z894kqk0q"))
264
              (file-name (string-append name "-" version))))
265
    (build-system python-build-system)
266
    (native-inputs
267
     `(("nose" ,python-nose)))
268
    (home-page "https://github.com/zardus/ana")
269
    (synopsis "Provide easy distributed data storage for python objects")
270
    (description "ANA is a project to provide easy distributed data storage for
271
stuff.  It provides every object with a UUID and, when pickled, will first
272
serialize the object's state to a central location and then \"pickle\" the
273
object into just its UUID.  This is really handy when you have to distribute
274
objects in some distributed system, and you'd rather not pickle the whole
275
object every time you need to send it.")
276
    (license license:bsd-2)))
277
278
(define-public python2-ana
279
  (package-with-python2 python-ana))
280
281
(define-public python-plumbum
282
  (package
283
    (name "python-plumbum")
284
    (version "1.6.5")
285
    (source (origin
286
              (method url-fetch)
287
              (uri (pypi-uri "plumbum" version))
288
              (sha256
289
               (base32
290
                "1vjbl9qy9fkl3vwiiwpaafmyxfks2sc3b3dhkp4vdgk2pdcv1ayq"))))
291
    (build-system python-build-system)
292
    (native-inputs
293
     `(("pytest" ,python-pytest)))
294
    (home-page "https://plumbum.readthedocs.io/en/latest")
295
    (synopsis "Shell script-like programs in Python")
296
    (description
297
      "Plumbum (Latin for lead, which was used to create pipes back in the day)
298
is a small yet feature-rich library for shell script-like programs in Python.
299
The motto of the library is “Never write shell scripts again”, and thus it
300
attempts to mimic the shell syntax (“shell combinators”) where it makes sense,
301
while keeping it all Pythonic and cross-platform.")
302
    (license license:expat)))
303
304
(define-public python2-plumbum
305
  (package-with-python2 python-plumbum))
306
307
(define-public python-trollius
308
  (package
309
    (name "python-trollius")
310
    (version "2.1")
311
    (source (origin
312
              (method url-fetch)
313
              (uri (pypi-uri "trollius" version))
314
              (sha256
315
               (base32
316
                "146c60hgcmgjkbf2hmiag52f9i3hka6shwbfybdsmlvqjnfms5nd"))))
317
    (build-system python-build-system)
318
    (home-page "https://github.com/haypo/trollius")
319
    (propagated-inputs
320
     `(("mock" ,python-mock)
321
       ("six" ,python-six)))
322
    (arguments
323
     `(#:tests? #f))
324
    (synopsis "")
325
    (description "")
326
    (license license:asl2.0)))
327
328
(define-public python2-trollius
329
  (package-with-python2 python-trollius))
330
331
(define-public python-neovim
332
  (package
333
    (name "python-neovim")
334
    (version "0.3.2")
335
    (source (origin
336
              (method url-fetch)
337
              (uri (pypi-uri "pynvim" version))
338
              (sha256
339
               (base32
340
                "01dybk4vs452pljn1q3il5z2sd313ki0lgiglc0xmjc6wp290r6g"))))
341
    (build-system python-build-system)
342
    (propagated-inputs
343
     `(("python-greenlet" ,python-greenlet)
344
       ("python-msgpack" ,python-msgpack)))
345
    (arguments
346
     `(#:tests? #f))
347
    (home-page "https://github.com/neovim/pynvim")
348
    (synopsis "")
349
    (description "")
350
    (license license:asl2.0)))
351
352
(define-public python2-neovim
353
  (let ((parent (package-with-python2 python-neovim)))
354
    (package
355
      (inherit parent)
356
      (propagated-inputs
357
       `(("trollius" ,python2-trollius)
358
         ,@(package-propagated-inputs parent))))))
359
360
(define-public python-cymruwhois
361
  (package
362
    (name "python-cymruwhois")
363
    (version "1.6")
364
    (source (origin
365
          (method url-fetch)
366
          (uri (pypi-uri "cymruwhois" version))
367
          (sha256
368
           (base32
369
        "0m7jgpglkjd0lsyw64lfw6qxdm0fg0f54145f79kq4rk1vjqbh5n"))))
370
    (build-system python-build-system)
371
    (native-inputs
372
     `(("python-nose" ,python-nose)))
373
    (home-page "")
374
    (synopsis "")
375
    (description "")
376
    (license license:expat)))
377
378
(define-public python2-cymruwhois
379
  (package-with-python2 python-cymruwhois))
380
381
(define-public python-ripe-atlas-sagan
382
  (package
383
    (name "python-ripe-atlas-sagan")
384
    (version "1.2.2")
385
    (source (origin
386
          (method url-fetch)
387
          (uri (pypi-uri "ripe.atlas.sagan" version))
388
          (sha256
389
           (base32
390
        "1pww7f4kh9cgd9qm7hbnkxg2cvj7mcmwhsan97cl5pd0xqxxnvw3"))))
391
    (build-system python-build-system)
392
    (propagated-inputs
393
     `(("cryptography" ,python-cryptography)
394
       ("dateutil" ,python-dateutil)
395
       ("python-nose" ,python-nose)
396
       ("pytz" ,python-pytz)))
397
    (home-page "")
398
    (synopsis "")
399
    (description "")
400
    (license license:gpl3+)))
401
402
(define-public python2-ripe-atlas-sagan
403
  (package-with-python2 python-ripe-atlas-sagan))
404
405
(define-public python-socketio-client
406
  (package
407
    (name "python-socketio-client")
408
    (version "0.7.2")
409
    (source (origin
410
          (method url-fetch)
411
          (uri (pypi-uri "socketIO-client" version))
412
          (sha256
413
           (base32
414
        "1hfjfhyxgql1ndda1bagg8niy8m28byd2r0yq4l7zycwlzxq9kb4"))))
415
    (build-system python-build-system)
416
    (propagated-inputs
417
      `(("websocket-client" ,python-websocket-client)
418
        ("requests" ,python-requests)))
419
    (native-inputs
420
      `(("coverage" ,python-coverage)
421
    ("nose" ,python-nose)))
422
    (arguments '(#:tests? #f)); requires network
423
    (home-page "")
424
    (synopsis "")
425
    (description "")
426
    (license license:gpl3+)))
427
428
(define-public python2-socketio-client
429
  (package-with-python2 python-socketio-client))
430
431
(define-public python-linecache2
432
  (package
433
    (name "python-linecache2")
434
    (version "1.0.0")
435
    (source (origin
436
          (method url-fetch)
437
          (uri (pypi-uri "linecache2" version))
438
          (sha256
439
           (base32
440
        "0z79g3ds5wk2lvnqw0y2jpakjf32h95bd9zmnvp7dnqhf57gy9jb"))))
441
    (build-system python-build-system)
442
    (arguments '(#:tests? #f)); circular dependency with unittest2
443
    (propagated-inputs
444
      `(("pbr" ,python-pbr)))
445
    (home-page "")
446
    (synopsis "")
447
    (description "")
448
    (license license:gpl3+)))
449
450
(define-public python2-linecache2
451
  (package-with-python2 python-linecache2))
452
453
(define-public python-traceback2
454
  (package
455
    (name "python-traceback2")
456
    (version "1.4.0")
457
    (source (origin
458
          (method url-fetch)
459
          (uri (pypi-uri "traceback2" version))
460
          (sha256
461
           (base32
462
        "0c1h3jas1jp1fdbn9z2mrgn3jj0hw1x3yhnkxp7jw34q15xcdb05"))))
463
    (build-system python-build-system)
464
    (arguments '(#:tests? #f)); circular dependency with unittest2
465
    (propagated-inputs
466
      `(("linecache2" ,python-linecache2)
467
        ("pbr" ,python-pbr)))
468
    (home-page "")
469
    (synopsis "")
470
    (description "")
471
    (license license:gpl3+)))
472
473
(define-public python2-traceback2
474
  (package-with-python2 python-traceback2))
475
476
(define-public python-argparse
477
  (package
478
    (name "python-argparse")
479
    (version "1.4.0")
480
    (source (origin
481
          (method url-fetch)
482
          (uri (pypi-uri "argparse" version))
483
          (sha256
484
           (base32
485
        "1r6nznp64j68ih1k537wms7h57nvppq0szmwsaf99n71bfjqkc32"))))
486
    (build-system python-build-system)
487
    (home-page "")
488
    (synopsis "")
489
    (description "")
490
    (license license:gpl3+)))
491
492
(define-public python2-argparse
493
  (package-with-python2 python-argparse))
494
495
(define-public python-unittest2-fix
496
  (package
497
    (inherit python-unittest2)
498
    (version "1.1.0")
499
    (source (origin
500
          (method url-fetch)
501
          (uri (pypi-uri "unittest2" version))
502
          (sha256
503
           (base32
504
        "0y855kmx7a8rnf81d3lh5lyxai1908xjp0laf4glwa4c8472m212"))))
505
    (arguments
506
      `(#:phases
507
    (modify-phases %standard-phases
508
      (add-before 'check 'disable-failures
509
        (lambda _
510
          (substitute* "unittest2/test/test_result.py"
511
        (("testGet") "dontTestGet"))
512
          (substitute* "unittest2/test/test_loader.py"
513
        (("test_loadTestsFromNames__relative_malformed_name") "dontTest")
514
        (("test_loadTestsFromName__relative_malformed_name") "dontTest2")))))))
515
    (propagated-inputs
516
      `(("traceback2" ,python-traceback2)
517
    ("six" ,python-six)
518
    ("argparse" ,python-argparse)))))
519
520
(define-public python2-unittest2-fix
521
  (package-with-python2 python-unittest2-fix))
522
523
(define-public python-funcsigs
524
  (package
525
    (name "python-funcsigs")
526
    (version "1.0.2")
527
    (source (origin
528
          (method url-fetch)
529
          (uri (pypi-uri "funcsigs" version))
530
          (sha256
531
           (base32
532
        "0l4g5818ffyfmfs1a924811azhjj8ax9xd1cffr1mzd3ycn0zfx7"))))
533
    (build-system python-build-system)
534
    (native-inputs
535
      `(("unittest2" ,python-unittest2-fix)))
536
    (home-page "")
537
    (synopsis "")
538
    (description "")
539
    (license license:asl2.0)))
540
541
(define-public python2-funcsigs
542
  (package-with-python2 python-funcsigs))
543
544
(define-public python-ripe-atlas-cousteau
545
  (package
546
    (name "python-ripe-atlas-cousteau")
547
    (version "1.4.1")
548
    (source (origin
549
          (method url-fetch)
550
          (uri (pypi-uri "ripe.atlas.cousteau" version))
551
          (sha256
552
           (base32
553
        "1964qllddqqh1sz9psmmb84ahqdy499vavm9wdn0k2v7q6y0vm0p"))))
554
    (build-system python-build-system)
555
    (propagated-inputs
556
      `(("websocket-client" ,python-websocket-client)
557
        ("socketIO-client" ,python-socketio-client)
558
        ("dateutil" ,python-dateutil)
559
        ("jsonschema" ,python-jsonschema)
560
        ("requests" ,python-requests)))
561
    (native-inputs
562
      `(("mock" ,python-mock)
563
        ("nose" ,python-nose)
564
        ("funcsigs" ,python-funcsigs)
565
        ("coverage" ,python-coverage)))
566
    (home-page "")
567
    (synopsis "")
568
    (description "")
569
    (license license:gpl3+)))
570
571
(define-public python2-ripe-atlas-cousteau
572
  (package-with-python2 python-ripe-atlas-cousteau))
573
574
(define-public python-ripe-atlas-tools
575
  (package
576
    (name "python-ripe-atlas-tools")
577
    (version "2.2.3")
578
    (source (origin
579
              (method url-fetch)
580
              (uri (pypi-uri "ripe.atlas.tools" version))
581
              (sha256
582
               (base32
583
                "1afcf56fyvsxb0i15v43804rqnn0xdp33achds84axnd1rl1375g"))))
584
    (build-system python-build-system)
585
    (propagated-inputs
586
     `(("pyopenssl" ,python-pyopenssl)
587
       ("sagan" ,python-ripe-atlas-sagan)
588
       ("cousteau" ,python-ripe-atlas-cousteau)
589
       ("pyaml" ,python-pyaml)
590
       ("ipy" ,python-ipy)
591
       ("tzlocal" ,python-tzlocal)))
592
    (native-inputs
593
     `(("mock" ,python-mock)
594
       ("coverage" ,python-coverage)))
595
    (arguments
596
      `(#:tests? #f; tests can't load dependencies
597
        #:phases
598
        (modify-phases %standard-phases
599
          (add-before 'check 'update-dependency
600
            (lambda _
601
              ;; Change dependency version to match what we have in guix
602
              (substitute* "setup.py"
603
                (("==1.2") "==1.2.2")
604
                (("==1.4") "==1.4.1"))
605
              #t)))))
606
    (home-page "")
607
    (synopsis "")
608
    (description "")
609
    (license license:gpl3+)))
610
611
(define-public python2-ripe-atlas-tools
612
  (package-with-python2 python-ripe-atlas-tools))
613
614
(define-public python-web.py
615
  (package
616
    (name "python-web.py")
617
    (version "0.40.dev0")
618
    (source (origin
619
              (method url-fetch)
620
              (uri (pypi-uri "web.py" version))
621
              (sha256
622
               (base32
623
                "18v91c4s683r7a797a8k9p56r1avwplbbcb3l6lc746xgj6zlr6l"))))
624
    (build-system python-build-system)
625
    (home-page "http://webpy.org/")
626
    (synopsis "")
627
    (description "")
628
    (license license:public-domain)))
629
630
(define-public python2-web.py
631
  (package-with-python2 python-web.py))
632
633
(define-public python-bitstring
634
  (package
635
    (name "python-bitstring")
636
    (version "3.1.5")
637
    (source (origin
638
              (method url-fetch)
639
              (uri (pypi-uri "bitstring" version ".zip"))
640
              (sha256
641
               (base32
642
                "1algq30j6rz12b1902bpw7iijx5lhrfqhl80d4ac6xzkrrpshqy1"))))
643
    (build-system python-build-system)
644
    (native-inputs
645
     `(("unzip" ,unzip)))
646
    (home-page "https://github.com/scott-griffiths/bitstring")
647
    (synopsis "Simple construction, analysis and modification of binary data")
648
    (description "Bitstring is a pure Python module designed to help make the
649
creation and analysis of binary data as simple and natural as possible.
650
651
Bitstrings can be constructed from integers (big and little endian), hex, octal,
652
binary, strings or files.  They can be sliced, joined, reversed, inserted into,
653
overwritten, etc.  They can also be read from, searched and replaced, and
654
navigated in, similar to a file or stream.")
655
    (license license:expat)))
656
657
(define-public python2-bitstring
658
  (package-with-python2 python-bitstring))
659
660
(define-public python-android-stringslib
661
  (package
662
    (name "python-android-stringslib")
663
    (version "0.1.1")
664
    (source (origin
665
              (method url-fetch)
666
              (uri (pypi-uri "android-stringslib" version))
667
              (sha256
668
               (base32
669
                "00k0nzjvym984805ikq22fzd81cr23j74lhamd50p2vf4yalw76n"))))
670
    (build-system python-build-system)
671
    (arguments
672
     `(#:tests? #f)); no tests
673
    (native-inputs
674
     `(("python-sphinx" ,python-sphinx)))
675
    (home-page "https://framagit.org/tyreunom/python-android-strings-lib")
676
    (synopsis "")
677
    (description "")
678
    (license license:expat)))
679
680
(define-public transmon
681
  (package
682
    (name "transmon")
683
    (version "0.1")
684
    (source (origin
685
              (method url-fetch)
686
              (uri (pypi-uri "transmon" version))
687
              (sha256
688
               (base32
689
                "1l7lxp4xwymyb1wqhycqg33ry6gza4660k12xkja04kmw4aqv0az"))))
690
    (build-system python-build-system)
691
    (arguments
692
     `(#:tests? #f)); no tests
693
    (propagated-inputs
694
     `(("python-android-stringslib" ,python-android-stringslib)
695
       ("python-polib" ,python-polib)
696
       ("python-pygit2" ,python-pygit2)))
697
    (home-page "https://framagit.org/tyreunom/transmon")
698
    (synopsis "")
699
    (description "")
700
    (license license:agpl3+)))
701
702
(define-public python-pyenchant
703
  (package
704
    (name "python-pyenchant")
705
    (version "2.0.0")
706
    (source (origin
707
              (method url-fetch)
708
              (uri (pypi-uri "pyenchant" version))
709
              (sha256
710
               (base32
711
                "1872ckgdip8nj9rnh167m0gsj5754qfg2hjxzsl1s06f5akwscgw"))))
712
    (build-system python-build-system)
713
    (arguments
714
     `(#:tests? #f; FIXME: Dictionary for language 'en_US' could not be found
715
       #:phases
716
       (modify-phases %standard-phases
717
         (add-before 'build 'setlib
718
           (lambda* (#:key inputs #:allow-other-keys)
719
             (substitute* "enchant/_enchant.py"
720
               (("/opt/local/lib/libenchant.dylib\"")
721
                (string-append "/opt/local/lib/libenchant.dylib\"\n"
722
                               "    yield \"" (assoc-ref inputs "enchant")
723
                               "/lib/libenchant-2.so\""))))))))
724
             ;(setenv "PYENCHANT_LIBRARY_PATH"
725
             ;        (string-append (assoc-ref inputs "enchant") "/lib/libenchant.so")))))))
726
    (propagated-inputs
727
     `(("enchant" ,enchant)
728
       ("hunspell" ,hunspell)))
729
    (native-inputs
730
     `(("hunspell-dict-en-us" ,hunspell-dict-en-us)))
731
    (home-page "")
732
    (synopsis "")
733
    (description "")
734
    (license license:lgpl2.1+)))
735
736
(define-public offlate
737
  (package
738
    (name "offlate")
739
    (version "0.1.dev")
740
    (source (origin
741
              (method git-fetch)
742
              (uri (git-reference
743
                     (url "https://framagit.org/tyreunom/offlate.git")
744
                     (commit "28fa87a163aa40d6770390792ce17e583618fb80")))
745
              (sha256
746
               (base32
747
                "0hcg7fiwa51jfm8jgz65vjakid38kfsrrc805f4imldmv9j9gf3a"))))
748
    (build-system python-build-system)
749
    (arguments
750
     `(#:tests? #f; no tests
751
       #:phases
752
       (modify-phases %standard-phases
753
         (add-before 'build 'generate-translations
754
           (lambda _
755
             (invoke "make" "update-langs")
756
             #t)))))
757
    (propagated-inputs
758
     `(("python-android-stringslib" ,python-android-stringslib)
759
       ("python-dateutil" ,python-dateutil)
760
       ("python-lxml" ,python-lxml)
761
       ("python-pyenchant" ,python-pyenchant)
762
       ("python-ruamel.yaml" ,python-ruamel.yaml)
763
       ("python-polib" ,python-polib)
764
       ("python-pyqt" ,python-pyqt)
765
       ("python-requests" ,python-requests)))
766
    (native-inputs
767
     `(("qt" ,qt)))
768
    (home-page "https://framagit.org/tyreunom/offlate")
769
    (synopsis "")
770
    (description "")
771
    (license license:gpl3+)))
772
773
(define-public python-zope.interface
774
  (package
775
    (name "python-zope.interface")
776
    (version "4.5.0")
777
    (source
778
      (origin
779
        (method url-fetch)
780
        (uri (pypi-uri "zope.interface" version))
781
        (sha256
782
          (base32
783
            "0k67m60ij06wkg82n15qgyn96waf4pmrkhv0njpkfzpmv5q89hsp"))))
784
    (build-system python-build-system)
785
    (arguments
786
     `(#:tests? #f))
787
    (home-page
788
      "https://github.com/zopefoundation/zope.interface")
789
    (synopsis "Interfaces for Python")
790
    (description "Interfaces for Python")
791
    (license #f)))
792
793
(define-public python-hkdf
794
  (package
795
    (name "python-hkdf")
796
    (version "0.0.3")
797
    (source (origin
798
              (method url-fetch)
799
              (uri (pypi-uri "hkdf" version))
800
              (sha256
801
               (base32
802
                "1jhxk5vhxmxxjp3zj526ry521v9inzzl8jqaaf0ma65w6k332ak2"))))
803
    (build-system python-build-system)
804
    (native-inputs
805
     `(("python-nose" ,python-nose)))
806
    (home-page
807
      "https://github.com/casebeer/python-hkdf")
808
    (synopsis
809
      "HMAC-based Extract-and-Expand Key Derivation Function (HKDF)")
810
    (description
811
      "HMAC-based Extract-and-Expand Key Derivation Function (HKDF)")
812
    (license #f)))
813
814
(define-public python-geoip
815
  (package
816
    (name "python-geoip")
817
    (version "1.3.2")
818
    (source (origin
819
              (method url-fetch)
820
              (uri (pypi-uri "geoip" version))
821
              (sha256
822
               (base32
823
                "1rphxf3vrn8wywjgr397f49s0s22m83lpwcq45lm0h2p45mdm458"))))
824
    (build-system python-build-system)
825
    (home-page "http://www.maxmind.com/")
826
    (synopsis
827
      "MaxMind GeoIP Legacy Database - Python API")
828
    (description
829
      "MaxMind GeoIP Legacy Database - Python API")
830
    (license #f)))
831
832
(define-public python-hyperlink
833
  (package
834
    (name "python-hyperlink")
835
    (version "18.0.0")
836
    (source
837
      (origin
838
        (method url-fetch)
839
        (uri (pypi-uri "hyperlink" version))
840
        (sha256
841
          (base32
842
            "01m3y19arfqljksngy8grc966zdb4larysralb8cajzi8kvly6zh"))))
843
    (build-system python-build-system)
844
    (propagated-inputs
845
      `(("python-idna" ,python-idna)))
846
    (home-page
847
      "https://github.com/python-hyper/hyperlink")
848
    (synopsis
849
      "A featureful, immutable, and correct URL for Python.")
850
    (description
851
      "A featureful, immutable, and correct URL for Python.")
852
    (license license:expat)))
853
854
(define-public python-twisted-for-wormhole
855
  (package
856
    (inherit python-twisted)
857
    (name "python-twisted")
858
    (version "18.9.0")
859
    (source (origin
860
              (method url-fetch)
861
              (uri (pypi-uri "Twisted" version ".tar.bz2"))
862
              (sha256
863
               (base32
864
                "15d3gmkrg8g27hyd6ihawv2y2dv5gnpyg67wy9npgbl4pz3f4jr9"))))
865
    (propagated-inputs
866
     `(("python-pyhamcrest" ,python-pyhamcrest)
867
       ("python-service-identity" ,python-service-identity)
868
       ("python-hyperlink" ,python-hyperlink)
869
       ,@(package-propagated-inputs python-twisted)))))
870
871
(define-public python-txaio
872
  (package
873
    (name "python-txaio")
874
    (version "18.8.1")
875
    (source
876
      (origin
877
        (method url-fetch)
878
        (uri (pypi-uri "txaio" version))
879
        (sha256
880
          (base32
881
            "1zmpdph6zddgrnkkcykh6qk5s46l7s5mzfqrh82m4b5iffn61qv7"))))
882
    (build-system python-build-system)
883
    (propagated-inputs
884
      `(;("python-[all]" ,#{python-\x5b;all\x5d;}#)
885
        ;("python-[asyncio]"
886
        ; ,#{python-\x5b;asyncio\x5d;}#)
887
        ;("python-[dev]" ,#{python-\x5b;dev\x5d;}#)
888
        ;("python-[twisted]"
889
        ; ,#{python-\x5b;twisted\x5d;}#)
890
        ("python-mock" ,python-mock)
891
        ("python-pep8" ,python-pep8)
892
        ("python-pyenchant" ,python-pyenchant)
893
        ("python-pytest" ,python-pytest)
894
        ("python-pytest-cov" ,python-pytest-cov)
895
        ("python-six" ,python-six)
896
        ("python-sphinx" ,python-sphinx)
897
        ;("python-sphinx-rtd-theme"
898
        ; ,python-sphinx-rtd-theme)
899
        ;("python-sphinxcontrib-spelling"
900
        ; ,python-sphinxcontrib-spelling)
901
        ("python-tox" ,python-tox)
902
        ("python-twine" ,python-twine)
903
        ("python-twisted" ,python-twisted)
904
        ("python-wheel" ,python-wheel)
905
        ("python-zope.interface" ,python-zope.interface)))
906
    (home-page "https://github.com/crossbario/txaio")
907
    (synopsis
908
      "Compatibility API between asyncio/Twisted/Trollius")
909
    (description
910
      "Compatibility API between asyncio/Twisted/Trollius")
911
    (license #f)))
912
913
(define-public python-txtorcon
914
  (package
915
    (name "python-txtorcon")
916
    (version "18.3.0")
917
    (source (origin
918
              (method url-fetch)
919
              (uri (pypi-uri "txtorcon" version))
920
              (sha256
921
               (base32
922
                "1c7qfpr1zz34whz66lk4xpwdn7d5jqk6ccgas5n54li479mra0an"))))
923
    (build-system python-build-system)
924
    (arguments
925
     `(#:tests? #f))
926
    (propagated-inputs
927
     `(;("python-codecov" ,python-codecov)
928
       ;("python-coverage" ,python-coverage)
929
       ;("python-coveralls" ,python-coveralls)
930
       ;("python-cuvner" ,python-cuvner)
931
       ;("python-geoip" ,python-geoip)
932
       ("python-ipaddress" ,python-ipaddress)
933
       ("python-mock" ,python-mock)
934
       ("python-pycodestyle" ,python-pycodestyle)
935
       ("python-pyflakes" ,python-pyflakes)
936
       ;("python-readme-renderer" ,python-readme-renderer)
937
       ;("python-repoze.sphinx.autointerface" ,python-repoze.sphinx.autointerface)
938
       ("python-setuptools" ,python-setuptools)
939
       ("python-sphinx" ,python-sphinx)
940
       ("python-tox" ,python-tox)
941
       ("python-twine" ,python-twine)
942
       ("python-wheel" ,python-wheel)))
943
    (home-page "")
944
    (synopsis
945
      "Twisted-based Tor controller client, with state-tracking and configuration abstractions. https://txtorcon.readthedocs.org https://github.com/meejah/txtorcon")
946
    (description
947
      "Twisted-based Tor controller client, with state-tracking and configuration abstractions. https://txtorcon.readthedocs.org https://github.com/meejah/txtorcon")
948
    (license #f)))
949
950
(define-public python-spake2
951
  (package
952
    (name "python-spake2")
953
    (version "0.8")
954
    (source (origin
955
              (method url-fetch)
956
              (uri (pypi-uri "spake2" version))
957
              (sha256
958
               (base32
959
                "1x16r7lrbklvfzbacb66qv9iiih6liq1y612dqh2chgf555n2yn1"))))
960
    (build-system python-build-system)
961
    (propagated-inputs
962
     `(("python-hkdf" ,python-hkdf)))
963
    (home-page
964
      "https://github.com/warner/python-spake2")
965
    (synopsis
966
      "SPAKE2 password-authenticated key exchange (pure python)")
967
    (description
968
      "SPAKE2 password-authenticated key exchange (pure python)")
969
    (license license:expat)))
970
971
(define-public python-humanize
972
  (package
973
    (name "python-humanize")
974
    (version "0.5.1")
975
    (source (origin
976
              (method url-fetch)
977
              (uri (pypi-uri "humanize" version))
978
              (sha256
979
               (base32
980
                "06dvhm3k8lf2rayn1gxbd46y0fy1db26m3h9vrq7rb1ib08mfgx4"))))
981
    (build-system python-build-system)
982
    (arguments
983
     `(#:tests? #f))
984
    (home-page "http://github.com/jmoiron/humanize")
985
    (synopsis "python humanize utilities")
986
    (description "python humanize utilities")
987
    (license license:expat)))
988
989
(define-public python-service-identity
990
  (package
991
    (name "python-service-identity")
992
    (version "17.0.0")
993
    (source
994
      (origin
995
        (method url-fetch)
996
        (uri (pypi-uri "service_identity" version))
997
        (sha256
998
          (base32
999
            "1aq24cn3nnsjr9g797dayhx4g653h6bd41ksqhidzq0rvarzn0a0"))))
1000
    (build-system python-build-system)
1001
    (propagated-inputs
1002
      `(("python-attrs" ,python-attrs)
1003
        ("python-pyasn1" ,python-pyasn1)
1004
        ("python-pyasn1-modules" ,python-pyasn1-modules)
1005
        ("python-pyopenssl" ,python-pyopenssl)))
1006
    (home-page
1007
      "https://service-identity.readthedocs.io/")
1008
    (synopsis
1009
      "Service identity verification for pyOpenSSL.")
1010
    (description
1011
      "Service identity verification for pyOpenSSL.")
1012
    (license license:expat)))
1013
1014
(define-public python-pyhamcrest
1015
  (package
1016
    (name "python-pyhamcrest")
1017
    (version "1.9.0")
1018
    (source
1019
      (origin
1020
        (method url-fetch)
1021
        (uri (pypi-uri "pyhamcrest" version))
1022
        (sha256
1023
          (base32
1024
            "1kan3nyxs1dz333s7mfvjj47l8j6qxd1imyf2kg8jzm57njs1ylg"))))
1025
    (build-system python-build-system)
1026
    (arguments
1027
     `(#:tests? #f))
1028
    (propagated-inputs
1029
      `(("python-setuptools" ,python-setuptools)
1030
        ("python-six" ,python-six)))
1031
    (home-page
1032
      "https://github.com/hamcrest/PyHamcrest")
1033
    (synopsis
1034
      "Hamcrest framework for matcher objects")
1035
    (description
1036
      "Hamcrest framework for matcher objects")
1037
    (license #f)))
1038
1039
(define-public python-autobahn
1040
  (package
1041
    (name "python-autobahn")
1042
    (version "18.9.2")
1043
    (source (origin
1044
              (method url-fetch)
1045
              (uri (pypi-uri "autobahn" version))
1046
              (sha256
1047
               (base32
1048
                "1mhj64rsnbi6rc0hskmllw280rvd99z045p6dq8h0mw60r7r52yr"))))
1049
    (build-system python-build-system)
1050
    (arguments
1051
     `(#:tests? #f))
1052
    (propagated-inputs
1053
     `(;("python-[accelerate]"
1054
     ;,#{python-\x5b;accelerate\x5d;}#)
1055
     ;("python-[all]" ,#{python-\x5b;all\x5d;}#)
1056
     ;("python-[asyncio]"
1057
     ;,#{python-\x5b;asyncio\x5d;}#)
1058
     ;("python-[compress]"
1059
     ;,#{python-\x5b;compress\x5d;}#)
1060
     ;("python-[dev]" ,#{python-\x5b;dev\x5d;}#)
1061
     ;("python-[encryption]"
1062
     ;,#{python-\x5b;encryption\x5d;}#)
1063
     ;("python-[nvx]" ,#{python-\x5b;nvx\x5d;}#)
1064
     ;("python-[scram]" ,#{python-\x5b;scram\x5d;}#)
1065
     ;("python-[serialization]"
1066
     ;,#{python-\x5b;serialization\x5d;}#)
1067
     ;("python-[twisted]"
1068
     ;,#{python-\x5b;twisted\x5d;}#)
1069
     ;("python-argon2-cffi" ,python-argon2-cffi)
1070
     ;("python-awscli" ,python-awscli)
1071
     ("python-cbor" ,python-cbor)
1072
     ("python-cffi" ,python-cffi)
1073
     ("python-flake8" ,python-flake8)
1074
     ("python-lz4" ,python-lz4)
1075
     ("python-mock" ,python-mock)
1076
     ("python-passlib" ,python-passlib)
1077
     ;("python-pep8-naming" ,python-pep8-naming)
1078
     ("python-py-ubjson" ,python-py-ubjson)
1079
     ("python-pyenchant" ,python-pyenchant)
1080
     ("python-pyflakes" ,python-pyflakes)
1081
     ("python-pynacl" ,python-pynacl)
1082
     ("python-pyopenssl" ,python-pyopenssl)
1083
     ("python-pyqrcode" ,python-pyqrcode)
1084
     ;("python-pytest" ,python-pytest)
1085
     ;("python-pytest-aiohttp" ,python-pytest-aiohttp)
1086
     ;("python-pytest-asyncio" ,python-pytest-asyncio)
1087
     ;("python-pytrie" ,python-pytrie)
1088
     ;("python-qualname" ,python-qualname)
1089
     ("python-service-identity" ,python-service-identity)
1090
     ("python-six" ,python-six)
1091
     ;("python-snappy" ,python-snappy)
1092
     ("python-sphinx" ,python-sphinx)
1093
     ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme)
1094
     ;("python-sphinxcontrib-spelling" ,python-sphinxcontrib-spelling)
1095
     ("python-twine" ,python-twine)
1096
     ("python-twisted" ,python-twisted-for-wormhole)
1097
     ("python-txaio" ,python-txaio)
1098
     ;("python-u-msgpack-python" ,python-u-msgpack-python)
1099
     ("python-wheel" ,python-wheel)
1100
     ;("python-wsaccel" ,python-wsaccel)
1101
     ("python-zope.interface" ,python-zope.interface)))
1102
    (home-page "http://crossbar.io/autobahn")
1103
    (synopsis
1104
      "WebSocket client & server library, WAMP real-time framework")
1105
    (description
1106
      "WebSocket client & server library, WAMP real-time framework")
1107
    (license #f)))
1108
1109
(define-public magic-wormhole
1110
  (package
1111
    (name "magic-wormhole")
1112
    (version "0.10.5")
1113
    (source
1114
      (origin
1115
        (method url-fetch)
1116
        (uri (pypi-uri "magic-wormhole" version))
1117
        (sha256
1118
          (base32
1119
            "1vhp97pdnqb8nd08pk9fn7mk5jwihdfcsqilxkg3brai6lgyln4m"))))
1120
    (build-system python-build-system)
1121
    (arguments
1122
     `(#:tests? #f))
1123
    (propagated-inputs
1124
      `(("python-attrs" ,python-attrs)
1125
        ("python-autobahn" ,python-autobahn)
1126
        ("python-automat" ,python-automat)
1127
        ("python-click" ,python-click)
1128
        ("python-hkdf" ,python-hkdf)
1129
        ("python-humanize" ,python-humanize)
1130
        ("python-ipaddress" ,python-ipaddress)
1131
        ("python-pynacl" ,python-pynacl)
1132
        ("python-six" ,python-six)
1133
        ("python-spake2" ,python-spake2)
1134
        ("python-tqdm" ,python-tqdm)
1135
        ("python-twisted" ,python-twisted-for-wormhole)
1136
        ("python-txtorcon" ,python-txtorcon)))
1137
    (home-page
1138
      "https://github.com/warner/magic-wormhole")
1139
    (synopsis
1140
      "Securely transfer data between computers")
1141
    (description
1142
      "Securely transfer data between computers")
1143
    (license license:expat)))
1144
1145
(define-public python-pathlib2
1146
  (package
1147
    (name "python-pathlib2")
1148
    (version "2.3.3")
1149
    (source
1150
      (origin
1151
        (method url-fetch)
1152
        (uri (pypi-uri "pathlib2" version))
1153
        (sha256
1154
          (base32
1155
            "0hpp92vqqgcd8h92msm9slv161b1q160igjwnkf2ag6cx0c96695"))))
1156
    (build-system python-build-system)
1157
    (propagated-inputs
1158
      `(("python-scandir" ,python-scandir)))
1159
    (native-inputs
1160
      `(("python-six" ,python-six)))
1161
    (home-page
1162
      "https://pypi.python.org/pypi/pathlib2/")
1163
    (synopsis "Object-oriented filesystem paths")
1164
    (description "Object-oriented filesystem paths")
1165
    (license license:expat)))
1166
1167
(define-public python-check-manifest
1168
  (package
1169
    (name "python-check-manifest")
1170
    (version "0.37")
1171
    (source
1172
      (origin
1173
        (method url-fetch)
1174
        (uri (pypi-uri "check-manifest" version))
1175
        (sha256
1176
          (base32
1177
            "0lk45ifdv2cpkl6ayfyix7jwmnxa1rha7xvb0ih5999k115wzqs4"))))
1178
    (build-system python-build-system)
1179
    (native-inputs
1180
      `(("python-mock" ,python-mock)
1181
        ("git" ,git)))
1182
    (home-page
1183
      "https://github.com/mgedmin/check-manifest")
1184
    (synopsis
1185
      "Check MANIFEST.in in a Python source package for completeness")
1186
    (description
1187
      "Check MANIFEST.in in a Python source package for completeness")
1188
    (license license:expat)))
1189
1190
(define-public python-codacy-coverage
1191
  (package
1192
    (name "python-codacy-coverage")
1193
    (version "1.3.11")
1194
    (source
1195
      (origin
1196
        (method url-fetch)
1197
        (uri (pypi-uri "codacy-coverage" version))
1198
        (sha256
1199
          (base32
1200
            "1g0c0w56xdkmqb8slacyw5qhzrkp814ng3ddh2lkiij58y9m2imr"))))
1201
    (build-system python-build-system)
1202
    (arguments
1203
     ;; No tests
1204
     `(#:tests? #f))
1205
    (propagated-inputs
1206
      `(("python-check-manifest" ,python-check-manifest)))
1207
    (home-page
1208
      "https://github.com/codacy/python-codacy-coverage")
1209
    (synopsis "Codacy coverage reporter for Python")
1210
    (description
1211
      "Codacy coverage reporter for Python")
1212
    (license license:expat)))
1213
1214
(define-public python-translation-finder
1215
  (package
1216
    (name "python-translation-finder")
1217
    (version "1.0")
1218
    (source
1219
      (origin
1220
        (method url-fetch)
1221
        (uri (pypi-uri "translation-finder" version))
1222
        (sha256
1223
          (base32
1224
            "1bldziyp0kn93g9gg0wjibpcjwg6xcp8zqwch7bnplg0zwxs1y8b"))))
1225
    (build-system python-build-system)
1226
    (propagated-inputs
1227
      `(("python-chardet" ,python-chardet)
1228
        ("python-pathlib2;" ,python-pathlib2)
1229
        ("python-six" ,python-six)))
1230
    (native-inputs
1231
     `(("python-codecov" ,python-codecov)
1232
       ("python-codacy-coverage" ,python-codacy-coverage)
1233
       ("python-pytest-cov" ,python-pytest-cov)
1234
       ("python-pytest-runner" ,python-pytest-runner)
1235
       ("python-twine" ,python-twine)))
1236
    (home-page "https://weblate.org/")
1237
    (synopsis
1238
      "A translation file finder for Weblate, translation tool with tight version control integration")
1239
    (description
1240
      "A translation file finder for Weblate, translation tool with tight version control integration")
1241
    (license license:gpl3+)))
1242
1243
(define-public python-translate-toolkit
1244
  (package
1245
    (name "python-translate-toolkit")
1246
    (version "2.3.1")
1247
    (source
1248
      (origin
1249
        (method url-fetch)
1250
        (uri (pypi-uri "translate-toolkit" version))
1251
        (sha256
1252
          (base32
1253
            "1fsfhqyhdwjbb0ljmkzaibjr3s7q7ipg776rwk14l9c7chvnn58x"))))
1254
    (build-system python-build-system)
1255
    (home-page "http://toolkit.translatehouse.org/")
1256
    (arguments
1257
     ;; Require old versions
1258
     `(#:tests? #f))
1259
    (synopsis
1260
      "Tools and API for translation and localization engineering.")
1261
    (description
1262
      "Tools and API for translation and localization engineering.")
1263
    (license license:gpl2+)))
1264