From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([209.51.188.92]:43217) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h5sBQ-0002Yn-7c for guix-patches@gnu.org; Mon, 18 Mar 2019 09:20:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1h5sBO-0007Qa-Vd for guix-patches@gnu.org; Mon, 18 Mar 2019 09:20:04 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:34650) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1h5sBO-0007QF-J7 for guix-patches@gnu.org; Mon, 18 Mar 2019 09:20:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1h5sBO-0000Pk-9m for guix-patches@gnu.org; Mon, 18 Mar 2019 09:20:02 -0400 Subject: bug#34882: [PATCH] Update to Pandas, enable Excel writer support Resent-To: guix-patches@gnu.org Resent-Message-ID: From: Maxim Cournoyer In-Reply-To: <87tvg18eui.fsf@fastmail.com> (Marius Bakke's message of "Sun, 17 Mar 2019 20:45:25 +0100") References: <87k1gzqy2c.fsf@gmail.com> <87tvg18eui.fsf@fastmail.com> Date: Mon, 18 Mar 2019 09:18:55 -0400 Message-ID: <87sgvkiam8.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: Marius Bakke Cc: 34882-done@debbugs.gnu.org Hi Marius, and thanks for having a look! Marius Bakke writes: > Hello Maxim, > > Overall LGTM, some comments inline. > > [...] > >> +(define-public python-et-xmlfile >> + (package >> + (name "python-et-xmlfile") >> + (version "1.0.1") >> + (source >> + (origin >> + (method url-fetch) >> + (uri (pypi-uri "et_xmlfile" version)) >> + (sha256 >> + (base32 >> + "0nrkhcb6jdrlb6pwkvd4rycw34y3s931hjf409ij9xkjsli9fkb1")))) >> + (build-system python-build-system) >> + (arguments >> + `(#:phases (modify-phases %standard-phases >> + (replace 'check >> + (lambda _ >> + (invoke "pytest")))))) >> + (native-inputs >> + `(("python-pytest" ,python-pytest) >> + ("python-lxml" ,python-lxml))) > > Should python-lxml be a propagated-input? No, otherwise this package would be pretty pointless, as it aims to be a "low memory implementation of a component of lxml" :-). The lxml dependency is used in the test suite (I'm guessing to validate that both implementations' behaviors match). > >> + (home-page >> + "https://bitbucket.org/openpyxl/et_xmlfile") >> + (synopsis >> + "Low memory implementation of @code{lxml.xmlfile}") > > Please remove the extra newlines in these patches. Done. >> + (description >> + "This Python library is based upon the @code{xmlfile} module >> +from @code{lxml}. It aims to provide a low memory, compatible >> implementation >> +of @code{xmlfile}.") >> + (license license:expat))) > > [...] > >> +(define-public python-openpyxl >> + (package >> + (name "python-openpyxl") >> + (version "2.6.0") >> + (source >> + (origin >> + (method hg-fetch) >> + (uri (hg-reference >> + (url "https://bitbucket.org/openpyxl/openpyxl") >> + (changeset version))) >> + (file-name (string-append name "-" version "-checkout")) >> + (sha256 >> + (base32 >> + "1x47ngn7ybaqdbvg90c8h2x0j6yfdfj25gjfinp2w5rf62gsany7")))) > > Can you leave a comment about why we take it from this repository > instead of PyPi? Done. The reason is that the tests are missing from the PyPI release. >> + (native-inputs >> + `(("python-lxml" ,python-lxml) > > Why is python-lxml a native-input? Here also it is a test dependency. lxml is an optional backend. I've moved the existing comment (" ;; For the test suite.") above this native-input as well. >> + ;; For the test suite. >> + ("python-pillow" ,python-pillow) >> + ("python-pytest" ,python-pytest))) >> + (propagated-inputs >> + `(("python-et-xmlfile" ,python-et-xmlfile) >> + ("python-jdcal" ,python-jdcal))) >> + (home-page "https://openpyxl.readthedocs.io") >> + (synopsis >> + "Python library to read/write Excel 2010 XLSX/XLSM files") >> + (description >> + "This Python library allows reading and writing to the Excel XLSX, >> XLSM, >> +XLTX and XLTM file formats that are defined by the Office Open XML >> (OOXML) >> +standard.") >> + (license license:expat))) > > [...] > >> From ad1f0efe4a5c3d28ee9d7e2e5da275721af9e172 Mon Sep 17 00:00:00 2001 >> From: Maxim Cournoyer >> Date: Sat, 9 Feb 2019 00:25:51 -0500 >> Subject: [PATCH 5/5] gnu: python-pandas: Update to 0.24.2. >> >> * gnu/packages/python-xyz.scm (python-pandas): Update to 0.24.2. >> [phases]{patch-which}: Add phase. >> [inputs]: Add WHICH. >> --- >> gnu/packages/python-xyz.scm | 65 ++++++++++++++++++++++--------------- >> 1 file changed, 38 insertions(+), 27 deletions(-) >> >> diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm >> index 321c881f4d..bbf1403758 100644 >> --- a/gnu/packages/python-xyz.scm >> +++ b/gnu/packages/python-xyz.scm >> @@ -1014,56 +1014,67 @@ human-friendly syntax.") >> (define-public python-pandas >> (package >> (name "python-pandas") >> - (version "0.23.4") >> + (version "0.24.2") >> (source >> (origin >> (method url-fetch) >> (uri (pypi-uri "pandas" version)) >> (sha256 >> - (base32 "1x54pd7hr3y7qahx6b5bf2wzj54xvl8r3s1h4pl254pnmi3wl92v")))) >> + (base32 "18imlm8xbhcbwy4wa957a1fkamrcb0z988z006jpfda3ki09z4ag")))) >> (build-system python-build-system) >> (arguments >> `(#:modules ((guix build utils) >> (guix build python-build-system) >> (ice-9 ftw) >> (srfi srfi-26)) >> - #:phases (modify-phases %standard-phases >> - (replace 'check >> - (lambda _ >> - (let ((build-directory >> - (string-append >> - (getcwd) "/build/" >> - (car (scandir "build" >> - (cut string-prefix? "lib." <>)))))) >> - ;; Disable the "strict data files" option which causes >> - ;; the build to error out if required data files are not >> - ;; available (as is the case with PyPI archives). >> - (substitute* "setup.cfg" >> - (("addopts = --strict-data-files") "addopts = ")) >> - (with-directory-excursion build-directory >> - ;; Delete tests that require "moto" which is not yet in Guix. >> - (for-each delete-file >> - '("pandas/tests/io/conftest.py" >> - "pandas/tests/io/json/test_compression.py" >> - "pandas/tests/io/parser/test_network.py" >> - "pandas/tests/io/test_parquet.py")) >> - (invoke "pytest" "-vv" "pandas" "--skip-slow" >> - "--skip-network" "-k" >> - ;; XXX: Due to the deleted tests above. >> - "not test_read_s3_jsonl")))))))) >> + #:phases >> + (modify-phases %standard-phases >> + (add-after 'unpack 'patch-which >> + (lambda* (#:key inputs #:allow-other-keys) >> + (let ((which (assoc-ref inputs "which"))) >> + (substitute* "pandas/io/clipboard/__init__.py" >> + (("^CHECK_CMD = .*") >> + (string-append "CHECK_CMD = \"" which "\"\n")))) >> + #t)) >> + (replace 'check >> + (lambda _ >> + (let ((build-directory >> + (string-append >> + (getcwd) "/build/" >> + (car (scandir "build" >> + (cut string-prefix? "lib." <>)))))) >> + ;; Disable the "strict data files" option which causes >> + ;; the build to error out if required data files are not >> + ;; available (as is the case with PyPI archives). >> + (substitute* "setup.cfg" >> + (("addopts = --strict-data-files") "addopts = ")) >> + (with-directory-excursion build-directory >> + ;; Delete tests that require "moto" which is not yet in Guix. >> + (for-each delete-file >> + '("pandas/tests/io/conftest.py" >> + "pandas/tests/io/json/test_compression.py" >> + "pandas/tests/io/parser/test_network.py" >> + "pandas/tests/io/test_parquet.py")) >> + (invoke "pytest" "-vv" "pandas" "--skip-slow" >> + "--skip-network" "-k" >> + ;; XXX: Due to the deleted tests above. >> + "not test_read_s3_jsonl")))))))) > > LGTM, although I'd prefer not to reindent the phases section. It makes > the patch harder to read, and I prefer the "deep" indentation for > logically separate chunks of code anyway (though I am probably in the > minority here..). YMMV! While I loathe any "deep" indentation, I've reverted my indentation change here as it was a bit gratuitous (I needn't struggle to fit into the 80 chars guideline). > Thanks! I pushed this change as c0d43f6223 with modifications based on your feedback. Thank you! Maxim