summaryrefslogtreecommitdiff
path: root/gnu/packages/python.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/python.scm')
-rw-r--r--gnu/packages/python.scm243
1 files changed, 105 insertions, 138 deletions
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 1d718bf228..fde21d35f8 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -145,7 +145,7 @@
(define-public python-2.7
(package
(name "python2")
- (version "2.7.14")
+ (version "2.7.15")
(source
(origin
(method url-fetch)
@@ -153,7 +153,7 @@
version "/Python-" version ".tar.xz"))
(sha256
(base32
- "0rka541ys16jwzcnnvjp2v12m4cwgd2jp6wj4kj511p715pb5zvi"))
+ "0x2mvz9dp11wj7p5ccvmk9s0hzjk2fa1m462p395l4r6bfnb3n92"))
(patches (search-patches "python-2.7-search-paths.patch"
"python-2-deterministic-build-info.patch"
"python-2.7-site-prefixes.patch"
@@ -178,23 +178,7 @@
"tk")) ;tkinter; adds 50 MiB to the closure
(build-system gnu-build-system)
(arguments
- `(;; 356 tests OK.
- ;; 6 tests failed:
- ;; test_compileall test_distutils test_import test_shutil test_socket
- ;; test_subprocess
- ;; 39 tests skipped:
- ;; test_aepack test_al test_applesingle test_bsddb test_bsddb185
- ;; test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk
- ;; test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses
- ;; test_dl test_gdb test_gl test_imageop test_imgfile test_ioctl
- ;; test_kqueue test_linuxaudiodev test_macos test_macostools
- ;; test_msilib test_ossaudiodev test_scriptpackages test_smtpnet
- ;; test_socketserver test_startfile test_sunaudiodev test_timeout
- ;; test_tk test_ttk_guionly test_urllib2net test_urllibnet
- ;; test_winreg test_winsound test_zipfile64
- ;; 4 skips unexpected on linux2:
- ;; test_bsddb test_bsddb3 test_gdb test_ioctl
- #:test-target "test"
+ `(#:test-target "test"
#:configure-flags
(list "--enable-shared" ;allow embedding
"--with-system-ffi" ;build ctypes
@@ -219,11 +203,6 @@
"Lib/test/support/__init__.py"
"Lib/test/test_subprocess.py"))
(("/bin/sh") (which "sh")))
-
- ;; Use zero as the timestamp in .pyc files so that builds are
- ;; deterministic. TODO: Remove it when this variable is set in
- ;; gnu-build-system.scm.
- (setenv "SOURCE_DATE_EPOCH" "1")
#t))
(add-before 'configure 'do-not-record-configure-flags
(lambda* (#:key configure-flags #:allow-other-keys)
@@ -281,15 +260,6 @@
file))))))
(call-with-output-file "__init__.py" (const #t))
#t)))))))
- (add-before 'strip 'make-libraries-writable
- (lambda* (#:key outputs #:allow-other-keys)
- ;; Make .so files writable so they can be stripped.
- (let ((out (assoc-ref outputs "out")))
- (for-each (lambda (file)
- (chmod file #o755))
- (find-files (string-append out "/lib")
- "\\.so"))
- #t)))
(add-after 'install 'move-tk-inter
(lambda* (#:key outputs #:allow-other-keys)
;; When Tkinter support is built move it to a separate output so
@@ -351,10 +321,10 @@ data types.")
(name "python")
(properties `((superseded . ,python-2)))))
-(define-public python-3.6
+(define-public python-3.7
(package (inherit python-2)
(name "python")
- (version "3.6.5")
+ (version "3.7.0")
(source (origin
(method url-fetch)
(uri (string-append "https://www.python.org/ftp/python/"
@@ -367,66 +337,33 @@ data types.")
(patch-flags '("-p0"))
(sha256
(base32
- "19l7inxm056jjw33zz97z0m02hsi7jnnx5kyb76abj5ml4xhad7l"))
+ "0j9mic5c9lbd2b20wka7hily7szz740wy9ilfrczxap63rnrk0h3"))
(snippet
'(begin
(for-each delete-file
- '("Lib/ctypes/test/test_structures.py" ; fails on aarch64
- "Lib/ctypes/test/test_win32.py" ; fails on aarch64
- "Lib/test/test_fcntl.py")) ; fails on aarch64
+ '("Lib/ctypes/test/test_win32.py" ; fails on aarch64
+ "Lib/test/test_fcntl.py" ; fails on aarch64
+ "Lib/test/test_posix.py")) ; fails on aarch64
#t))))
(arguments
(substitute-keyword-arguments (package-arguments python-2)
- ((#:tests? _) #t)
((#:phases phases)
- `(modify-phases ,phases
- (add-after 'unpack 'patch-timestamp-for-pyc-files
- (lambda _
- ;; We set DETERMINISTIC_BUILD to only override the mtime when
- ;; building with Guix, lest we break auto-compilation in
- ;; environments.
- (setenv "DETERMINISTIC_BUILD" "1")
- (substitute* "Lib/py_compile.py"
- (("source_stats\\['mtime'\\]")
- "(1 if 'DETERMINISTIC_BUILD' in os.environ else source_stats['mtime'])"))
-
- ;; Use deterministic hashes for strings, bytes, and datetime
- ;; objects.
- (setenv "PYTHONHASHSEED" "0")
-
- ;; Reset mtime when validating bytecode header.
- (substitute* "Lib/importlib/_bootstrap_external.py"
- (("source_mtime = int\\(source_stats\\['mtime'\\]\\)")
- "source_mtime = 1"))
- #t))
- ;; These tests fail because of our change to the bytecode
- ;; validation. They fail because expected exceptions do not get
- ;; thrown. This seems to be no problem.
- (add-after 'unpack 'disable-broken-bytecode-tests
- (lambda _
- (substitute* "Lib/test/test_importlib/source/test_file_loader.py"
- (("test_bad_marshal")
- "disable_test_bad_marshal")
- (("test_no_marshal")
- "disable_test_no_marshal")
- (("test_non_code_marshal")
- "disable_test_non_code_marshal"))
- #t))
- ;; Unset DETERMINISTIC_BUILD to allow for tests that check that
- ;; stale pyc files are rebuilt.
- (add-before 'check 'allow-non-deterministic-compilation
- (lambda _ (unsetenv "DETERMINISTIC_BUILD") #t))
- ;; We need to rebuild all pyc files for three different
- ;; optimization levels to replace all files that were not built
- ;; deterministically.
-
- ;; FIXME: Without this phase we have close to 2000 files that
+ `(modify-phases ,phases
+ ;; Unset SOURCE_DATE_EPOCH while running the test-suite and set it
+ ;; again afterwards. See <https://bugs.python.org/issue34022>.
+ (add-before 'check 'unset-SOURCE_DATE_EPOCH
+ (lambda _ (unsetenv "SOURCE_DATE_EPOCH") #t))
+ (add-after 'check 'reset-SOURCE_DATE_EPOCH
+ (lambda _ (setenv "SOURCE_DATE_EPOCH" "1") #t))
+ ;; FIXME: Without this phase we have close to 400 files that
;; differ across different builds of this package. With this phase
- ;; there are about 500 files left that differ.
- (add-after 'install 'rebuild-bytecode
+ ;; there are 44 files left that differ.
+ (add-after 'remove-tests 'rebuild-bytecode
(lambda* (#:key outputs #:allow-other-keys)
- (setenv "DETERMINISTIC_BUILD" "1")
(let ((out (assoc-ref outputs "out")))
+ ;; Disable hash randomization to ensure the generated .pycs
+ ;; are reproducible.
+ (setenv "PYTHONHASHSEED" "0")
(for-each
(lambda (opt)
(format #t "Compiling with optimization level: ~a\n"
@@ -438,8 +375,7 @@ data types.")
"-m" "compileall"
"-f" ; force rebuild
;; Don't build lib2to3, because it's Python 2 code.
- ;; Also don't build obviously broken test code.
- "-x" "(lib2to3|test/bad.*)"
+ "-x" "lib2to3/.*"
,file)))
(find-files out "\\.py$")))
(list '() '("-O") '("-OO")))
@@ -452,7 +388,7 @@ data types.")
"/site-packages"))))))))
;; Current 3.x version.
-(define-public python-3 python-3.6)
+(define-public python-3 python-3.7)
;; Current major version.
(define-public python python-3)
@@ -908,14 +844,14 @@ API for locking files.")
(define-public python-setuptools
(package
(name "python-setuptools")
- (version "31.0.0")
+ (version "40.0.0")
(source
(origin
(method url-fetch)
- (uri (pypi-uri "setuptools" version))
+ (uri (pypi-uri "setuptools" version ".zip"))
(sha256
(base32
- "0ypybh4hx3bv4vhg2dc74xpj1g56ggnaffm87k4abhwjwq6wq608"))
+ "0pq116lr14gnc62v76nk0npkm6krb2mpp7p9ab369zgv4n7dnah1"))
(modules '((guix build utils)))
(snippet
'(begin
@@ -1750,14 +1686,14 @@ matching them against a list of media-ranges.")
(define-public python-py
(package
(name "python-py")
- (version "1.5.3")
+ (version "1.5.4")
(source
(origin
(method url-fetch)
(uri (pypi-uri "py" version))
(sha256
(base32
- "10gq2lckvgwlk9w6yzijhzkarx44hsaknd0ypa08wlnpjnsgmj99"))))
+ "1xxvwfn82457djf55f5n2c94699rfqnk43br8fif2r2q8gvrmm9z"))))
(build-system python-build-system)
(arguments
;; FIXME: "ImportError: 'test' module incorrectly imported from
@@ -1765,7 +1701,9 @@ matching them against a list of media-ranges.")
;; Expected '/tmp/guix-build-python-py-1.4.31.drv-0/py-1.4.31/py'.
;; Is this module globally installed?"
'(#:tests? #f))
- (home-page "http://pylib.readthedocs.io/")
+ (native-inputs
+ `(("python-setuptools-scm" ,python-setuptools-scm)))
+ (home-page "https://github.com/pytest-dev/py")
(synopsis "Python library for parsing, I/O, instrospection, and logging")
(description
"Py is a Python library for file name parsing, .ini file parsing, I/O,
@@ -2846,7 +2784,11 @@ and is very extensible.")
;; some tests require access to "$HOME/.cython"
(lambda _ (setenv "HOME" "/tmp") #t))
(replace 'check
- (lambda _ (invoke "python" "runtests.py" "-vv"))))))
+ (lambda _
+ ;; The "with_outer_raising" test fails with Python 3.7. See
+ ;; https://github.com/cython/cython/issues/2454
+ (delete-file "tests/run/generators_py.py")
+ (invoke "python" "runtests.py" "-vv"))))))
(home-page "http://cython.org/")
(synopsis "C extensions for Python")
(description "Cython is an optimising static compiler for both the Python
@@ -3844,14 +3786,14 @@ as the original project seems to have been abandoned circa 2007.")
(define-public python-pycodestyle
(package
(name "python-pycodestyle")
- (version "2.3.1")
+ (version "2.4.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pycodestyle" version))
(sha256
(base32
- "0rk78b66p57ala26mdldl9lafr48blv5s659sah9q50qnfjmc8k8"))))
+ "0fhy4vnlgpjq4qd1wdnl6pvdw7rah0ypmn8c9mkhz8clsndskz6b"))))
(build-system python-build-system)
(home-page "https://pycodestyle.readthedocs.io/")
(synopsis "Python style guide checker")
@@ -4931,15 +4873,15 @@ toolkit. Use it to build trees of widgets.")
(define-public python-dbus
(package
(name "python-dbus")
- (version "1.2.0")
+ (version "1.2.8")
(source
(origin
(method url-fetch)
- (uri (string-append
- "https://dbus.freedesktop.org/releases/dbus-python/dbus-python-"
- version ".tar.gz"))
+ (uri (string-append "https://dbus.freedesktop.org/releases/dbus-python/"
+ "dbus-python-" version ".tar.gz"))
(sha256
- (base32 "1py62qir966lvdkngg0v8k1khsqxwk5m4s8nflpk1agk5f5nqb71"))))
+ (base32
+ "0vvvjmiwnc9cjlks3gcdk43ap7llhlpz7cm1wbw0nc2yfsxjpwdb"))))
(build-system gnu-build-system)
(arguments
'(#:phases
@@ -4955,7 +4897,7 @@ toolkit. Use it to build trees of widgets.")
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
- `(("python" ,python)
+ `(("python" ,python-wrapper)
("dbus-glib" ,dbus-glib)))
(synopsis "Python bindings for D-bus")
(description "python-dbus provides bindings for libdbus, the reference
@@ -5597,14 +5539,14 @@ PEP 8.")
(define-public python-pyflakes
(package
(name "python-pyflakes")
- (version "1.5.0")
+ (version "2.0.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pyflakes" version))
(sha256
(base32
- "1x1pcca4a24k4pw8x1c77sgi58cg1wl2k38mp8a25k608pzls3da"))))
+ "0jba28czyvimdc72llms3f17swp3i8jdcabf5w0j00adfbn64xls"))))
(build-system python-build-system)
(home-page
"https://github.com/pyflakes/pyflakes")
@@ -5702,33 +5644,44 @@ complexity of Python source code.")
(define-public python-flake8
(package
(name "python-flake8")
- (version "3.4.1")
+ (version "3.5.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "flake8" version))
(sha256
(base32
- "1n0i38592vy3q0x2a9bf8z6rhhn04i30wsn5i5zzcj7qkxvl8062"))))
+ "184b33grvvjmiwlv9kyd7yng9qv5ld24154j70z332xxg9gjclvj"))))
(build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
+ ;; Two errors don't seem to have assigned codes.
+ (add-after 'unpack 'delete-broken-test
+ (lambda _ (delete-file "tests/unit/test_pyflakes_codes.py") #t))
+ (add-after 'unpack 'fix-problem-with-pycodestyle
+ (lambda _
+ ;; See https://gitlab.com/pycqa/flake8/merge_requests/230
+ ;; This should no longer be needed with the next release.
+ (substitute* "setup.py"
+ (("PEP8_PLUGIN\\('break_around_binary_operator'\\),")
+ "PEP8_PLUGIN('break_after_binary_operator'),\
+PEP8_PLUGIN('break_before_binary_operator'),"))
+ #t))
(delete 'check)
(add-after 'install 'check
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (add-installed-pythonpath inputs outputs)
- (zero? (system* "pytest" "-v")))))))
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (add-installed-pythonpath inputs outputs)
+ (invoke "pytest" "-v")
+ #t)))))
(propagated-inputs
- `(("python-pycodestyle" ,python-pycodestyle)
- ("python-pyflakes" ,python-pyflakes)
- ;; flake8 depends on a newer setuptools than provided by python.
- ("python-setuptools" ,python-setuptools)
- ("python-mccabe" ,python-mccabe)))
+ `(("python-pycodestyle" ,python-pycodestyle)
+ ("python-pyflakes" ,python-pyflakes)
+ ("python-mccabe" ,python-mccabe)))
(native-inputs
- `(("python-mock" ,python-mock) ; TODO: only required for < 3.3
- ("python-pytest" ,python-pytest-bootstrap)
- ("python-pytest-runner" ,python-pytest-runner)))
+ `(("python-mock" ,python-mock)
+ ("python-pytest" ,python-pytest-bootstrap)
+ ("python-pytest-runner" ,python-pytest-runner)))
(home-page "https://gitlab.com/pycqa/flake8")
(synopsis
"The modular source code checker: pep8, pyflakes and co")
@@ -5979,28 +5932,18 @@ add functionality and customization to your projects with their own plugins.")
(define-public python-fonttools
(package
(name "python-fonttools")
- (version "3.15.1")
+ (version "3.28.0")
(source (origin
(method url-fetch)
(uri (pypi-uri "fonttools" version ".zip"))
(sha256
(base32
- "1hhj97izwliy0vybmza72d90l5d4mcn50y8akq7kyccfl82vdx4d"))))
+ "0vsvjhidpb5kywpjgz1j3fywzkddxkb0afqai18qa3h6lqjyxwpb"))))
(build-system python-build-system)
- (arguments
- '(#:test-target "check"
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'patch-setuppy
- ;; Remove the undocumented "extra_path" argument, which adds an
- ;; intervening directories between site-packages and the package
- ;; directory.
- (lambda _
- (substitute* "setup.py"
- (("^[ \t]*extra_path *= *'FontTools',") ""))
- #t)))))
(native-inputs
- `(("unzip" ,unzip)))
+ `(("unzip" ,unzip)
+ ("python-pytest" ,python-pytest)
+ ("python-pytest-runner" ,python-pytest-runner)))
(home-page "https://github.com/behdad/fonttools")
(synopsis "Tools to manipulate font files")
(description
@@ -6009,9 +5952,7 @@ supports reading and writing of TrueType/OpenType fonts, reading and writing
of AFM files, reading (and partially writing) of PS Type 1 fonts. The package
also contains a tool called “TTX” which converts TrueType/OpenType fonts to and
from an XML-based format.")
- (license (license:non-copyleft
- "file://LICENSE.txt"
- "See LICENSE.txt in the distribution."))))
+ (license license:expat)))
(define-public python2-fonttools
(package-with-python2 python-fonttools))
@@ -10852,6 +10793,32 @@ projects.")
(define-public python2-incremental
(package-with-python2 python-incremental))
+(define-public python-invoke
+ (package
+ (name "python-invoke")
+ (home-page "http://www.pyinvoke.org/")
+ (version "1.1.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "invoke" version))
+ (sha256
+ (base32
+ "0aiy1xvk1f91246zxd1zqrm679vdvd10h843a2na41cqr3cflpi6"))))
+ (build-system python-build-system)
+ (arguments
+ ;; XXX: Requires many dependencies that are not yet in Guix.
+ `(#:tests? #f))
+ (synopsis "Pythonic task execution")
+ (description
+ "Invoke is a Python task execution tool and library, drawing inspiration
+from various sources to arrive at a powerful and clean feature set. It is
+evolved from the Fabric project, but focuses on local and abstract concerns
+instead of servers and network commands.")
+ (license license:bsd-3)))
+
+(define-public python2-invoke
+ (package-with-python2 python-invoke))
+
(define-public python-automat
(package
(name "python-automat")
@@ -13384,14 +13351,14 @@ file system events on Linux.")
(define-public python-more-itertools
(package
(name "python-more-itertools")
- (version "4.1.0")
+ (version "4.2.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "more-itertools" version))
(sha256
(base32
- "0i3ch700g5fyjp692gprlnzbysl8w0sa2vijbp3s40drvk67xkn9"))))
+ "1s6qhl7a7jy8gqw8p545rxfp7rwz1hmjr9p6prk93zbv6f9rhsrb"))))
(build-system python-build-system)
(propagated-inputs
`(("python-six" ,python-six-bootstrap)))