Subject: bug#52836: closed (Re: bug#52836: "guix import pypi" fails with "Failed to extract file from wheel" and "no requires.txt file found")

From: [email-masked] (GNU bug Tracking System)
Date: Tue, 08 Mar 2022 10:23:04 +0000

Your bug report

#52836: "guix import pypi" fails with "Failed to extract file from wheel" and "no requires.txt file found"

which was filed against the guix package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
52836: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=52836
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#52836: "guix import pypi" fails with "Failed to extract file from wheel" and "no requires.txt file found"
From: zimoun <[email-masked]>
To: bbb ee <[email-masked]>
Cc: [email-masked]
Date: Tue, 08 Mar 2022 11:14:44 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi,

On ven., 31 déc. 2021 at 12:00, zimoun <[email-masked]> wrote:
> On Fri, 31 Dec 2021 at 11:15, bbb ee <[email-masked]> wrote:
>
>> > Is it a bug on Guix side or upstream?  Because it seems that upstream
>> > does not provide metadata information, at least, as usually expected.
>>
>> `pip install PyPortfolioOpt`, `poetry add PyPortfolioOpt` runs for me. If other python package installer can run, I suppose the upstream is correct.
>
> Hum, not necessary.  Well, I do not think that 'pip' uses all the
> metadata from PyPI to install.  'pip' does dirty things and yes it
> just works :-)  But this does not imply that PyPortfolioOpt is
> correctly packaged as it is defined by PyPI standards.  I do not know
> 'poetry'.
>
> Anyway. :-)  I am not finding the PEP defining the Python packaging
> and the structure for a PyPI package.  Because it is not clear for me
> if it is a bug on Guix side or upstream.

This package PyPortfolioOpt is badly packaged upstream.  We cannot do
better than warn about the issue:

--8<---------------cut here---------------start------------->8---
$ guix import pypi  PyPortfolioOpt
following redirection to `https://pypi.org/pypi/pyportfolioopt/json'...

Starting download of /tmp/guix-file.6rSGsS
>From https://files.pythonhosted.org/packages/97/c2/c7569f2773f3e942367e90dcca15a235af3d3330ac8abfcbfbe67a8ba8dd/PyPortfolioOpt-1.5.1.tar.gz...
 …t-1.5.1.tar.gz  56KiB               8.2MiB/s 00:00 [##################] 100.0%

Starting download of /tmp/guix-file.MFmUSK
>From https://files.pythonhosted.org/packages/90/98/3906835b783ba39cfc613c7b0c0fde9c758c729ff3406d45f1c2a1116961/PyPortfolioOpt-1.5.1-py3-none-any.whl...
 ….1-py3-none-any.whl  60KiB         45.2MiB/s 00:00 [##################] 100.0%
guix import: warning: Failed to extract file: PyPortfolioOpt-1.5.1.dist-info/METADATA from wheel.
guix import: warning: Cannot guess requirements from source archive: no requires.txt file found.
guix import: warning: project name pyportfolioopt does not appear verbatim in the PyPI URI
hint: The PyPI URI is:
`https://files.pythonhosted.org/packages/97/c2/c7569f2773f3e942367e90dcca15
a235af3d3330ac8abfcbfbe67a8ba8dd/PyPortfolioOpt-1.5.1.tar.gz'.  You should
review the pypi-uri declaration in the generated package.  You may need to
replace "pyportfolioopt" with a substring of the PyPI URI that identifies
the package.

(package
  (name "python-pyportfolioopt")
  (version "1.5.1")
  (source
    (origin
      (method url-fetch)
      (uri (pypi-uri "pyportfolioopt" version))
      (sha256
        (base32 "162d6jyvba0xk2blssbp52rrjqpjv011h988k150p1fg7x7nzbs9"))))
  (build-system python-build-system)
  (home-page "https://github.com/robertmartin8/PyPortfolioOpt")
  (synopsis "Financial portfolio optimization in python")
  (description "Financial portfolio optimization in python")
  (license license:expat))
--8<---------------cut here---------------end--------------->8---

Therefore, I am closing.  Feel free to reopen if I missed a point.

Cheers,
simon

Subject: "guix import pypi" fails with "Failed to extract file from wheel" and "no requires.txt file found"
From: bbb ee <[email-masked]>
To: [email-masked]
Date: Mon, 27 Dec 2021 22:10:32 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello,
I have encounter a issue with "guix import pypi" :
```
guix import: warning: Failed to extract file:
PyPortfolioOpt-1.5.1.dist-info/METADATA from wheel.
guix import: warning: Cannot guess requirements from source archive: no
requires.txt file found.
```
## reproduce the bug

```
(base) guix import pypi  PyPortfolioOpt
following redirection to `https://pypi.org/pypi/pyportfolioopt/json'...

Starting download of /tmp/guix-file.mwZdLg
From
https://files.pythonhosted.org/packages/97/c2/c7569f2773f3e942367e90dcca15a235af3d3330ac8abfcbfbe67a8ba8dd/PyPortfolioOpt-1.5.1.tar.gz.
..
 …t-1.5.1.tar.gz  56KiB               2.7MiB/s 00:00 [##################]
100.0%

Starting download of /tmp/guix-file.mHBgak
From
https://files.pythonhosted.org/packages/90/98/3906835b783ba39cfc613c7b0c0fde9c758c729ff3406d45f1c2a1116961/PyPortfolioOpt-1.5.1-py3-none-any.whl.
..
 ….1-py3-none-any.whl  60KiB          2.1MiB/s 00:00 [##################]
100.0%
guix import: warning: Failed to extract file:
PyPortfolioOpt-1.5.1.dist-info/METADATA from wheel.
guix import: warning: Cannot guess requirements from source archive: no
requires.txt file found.
(package
  (name "python-pyportfolioopt")
  (version "1.5.1")
  (source
    (origin
      (method url-fetch)
      (uri (pypi-uri "pyportfolioopt" version))
      (sha256
        (base32 "162d6jyvba0xk2blssbp52rrjqpjv011h988k150p1fg7x7nzbs9"))))
  (build-system python-build-system)
  (home-page "https://github.com/robertmartin8/PyPortfolioOpt")
  (synopsis "Financial portfolio optimization in python")
  (description "Financial portfolio optimization in python")
  (license license:expat))
(base) guix describe
Generation 220 Dec 27 2021 12:01:04 (current)
  guix 9bbbac6
    repository URL: https://git.savannah.gnu.org/git/guix.git
    branch: master
    commit: 9bbbac6783bcdace17d967e85c8ae8d14cbf1ef9
```
## additional information
This user has encountered a similar issue for "guix import pypi httpie"
https://www.mail-archive.com/[email-masked]/msg14277.html

However "guix import pypi httpie" runs for my version of guix.