Package information for non-pypi.org repository not displayed in Pycharm

I've added my team's devpi [www.devpi.net] pypi repository to the Pycharm set of repositories used when adding packages. However, none of the information in the wheel's METADATA file is displayed [when I select a package from my local index]. Comparing to other packages from pypi.org and what information is displayed for those packages, I'm left wondering if Pycharm examines the contents of the package wheel or using some pypi mechanism to obtain the displayed 'Description' content. 

The packages I built  were pushed to our devpi repository using twine with no issues reported. And I can install into my 3.7.5 venv environments on both Ubuntu & Windows10 with no issues. Just a question about package info is obtained for purpose of displaying in the 'Description' section of the 'Available Packages' dialog.

Thanks.

6 comments
Comment actions Permalink

Hi, as far as I know the Description is obtained from PKG-INFO file of the package. Do you have it?

0
Comment actions Permalink

Hi Andrey, my *.whl file does not. It does have the dist-info/{METADATA,WHEEL,top_level.txt,RECORD} files. 

My apologies - I left out the important detail that the packages are binary wheel format. bdist_wheel is setup command used to generate my wheel files/packages.

The PEP 427 docs indicates PKG_INFO is for source dist packaging, probably why I wasn't looking for it. Also mentions that METADATA is the same format as PKG-INFO. I see the same content if I use sdist to generate the *.tar.gz sdist target.

The implication being that Pycharm is only showing description stuff (url, version, summary, etc.) from sdist  ?

I appreciate your quick & helpful reply.

0
Comment actions Permalink

Shespelt

Oops, looks like I was not entirely correct, PyCharm actually use JSON API to obtain metadata: https://warehouse.pypa.io/api-reference/json.html

I found a known issue: https://youtrack.jetbrains.com/issue/PY-29346

Please see comments from the developer for better insight into this matter.

Sorry for not being able to help further.

0
Comment actions Permalink

It's probably worth adding a note about devpi to the issue as well.

0
Comment actions Permalink

I (should have looked earlier) found the $HOME/.cache/JetBrains/../idea.log file. 

I wonder if the devpi-server REST APIs are as those used by pypi.org & compatible with what Pycharm is trying to use?

failure hitting the 1st repository in my list of 2 (try them in order, right?):

2021-01-13 16:46:54,848 [ 950850] INFO - packaging.ManagePackagesDialog - Error retrieving package details
com.intellij.util.io.HttpRequests$HttpStatusException: Request failed with status code 404. Status=404, Url=https://pypi.python.org/pypi/ioif-core-0.8.0/json


Just repeated the PyCharm UI operation to display the metadata - the above log messages appears as a result. Based on  https://warehouse.readthedocs.io/api-reference/json.html#project looks like PyCharm is requesting the metadata so I have to wonder if Pycharm is trying to hit my devpi install - nothing in the log corresponding to my devpi service -> either it's not trying at all or no failure (just no data returned in a 200 response?)

I'm surprised no error logged in the idea.log - if it's trying to use an endpoint devpi-server isn't configured/coded to use, I'd expect a 404 or some non-2xx status code in the response. If Pycharm is even trying any configured repository other than pypi.org. Pycharm is obtaining package listing from my devpi repository, just not the metadata (apparently). I need to use strace or a packet sniffer (or tcp proxy) to see what http requests are being issued to devpi from pycharm to obtain the metadata.

The devpi service doesn't 'like' the above endpoint. A slight different one does result in the METADATA content being return in a JSON object:  /shespelt/rest-service/ioif-core/0.8.0   [note: shespelt/rest-service is my local pypi index] - but the response JSON has a different schema than what is shown at https://warehouse.readthedocs.io/api-reference/json.html#get--pypi--project_name---version--json for the devpi endpoint that works. Unfortunately, the master branch of the devpi documentation of what REST api endpoints are available is from 2013. Time to see what the code used to build the more recent dockerfile devpi-server has...

I can run a test in which I obtain a whl file from pypi.org[one that has metadata displayed in Pycharm], upload into my devpi and see if Pycharm is able to obtain the same metadata from my local devpi service.  another test is to remove pypi repo from my Pycharm config & see what happens with only my local devpi.

At this point, my only question is - are others getting metadata displayed for packages in a 2nd configured repository? 

0
Comment actions Permalink

Could you please compile a list of questions you most care about, and post them in https://youtrack.jetbrains.com/issue/PY-29346 as a comment? You can mention the developer as well. 

I think it would be the fastest way to get the answers, since i'm not entirely familiar what IDE is doing under the hood.

0

Please sign in to leave a comment.