`packages` is empty when using a non-pypi.org simple index (e.g. Sonatype Nexus)
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- Une demi-journée
- Accessibilité débutants
- 62/100
Piste de recherche
Vérifiez src/python_inspector/package_data.py dans get_pypi_data_from_purl (vers les lignes 65–77), où l’URL des métadonnées est construite et où les échecs ne renvoient aucune donnée. Reproduisez le problème avec les deux commandes python-inspector ... --json-pdt fournies (index par défaut et URL de simple-index) afin de confirmer le comportement de packages vide. Suivez la manière dont les métadonnées renvoyées sont ajoutées à la sortie et vérifiez le succès en contrôlant avec jq '.packages[].name' que des noms de paquets sont présents pour l’index qui n’est pas pypi.org.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Currently the metadata fetch requires the pypi.org-specific JSON API. (See also #260 )
When PYINSP_INDEX_URL points at a non-pypi.org simple index (Sonatype Nexus PyPI in my case), python-inspector resolves dependencies but the packages array in the output is empty - package metadata is never fetched.
For example: PYINSP_INDEX_URL=https://my-nexus-pypi.com/repository/pypi/simple:
root@2ae255f06ad8:/project# python-inspector -p3.13 -rrequirements.txt -olinux --json-pdt /tmp/test.json --verbose
...
retrieve package data from pypi:
retrieved package 'pkg:pypi/[email protected]'
retrieved package 'pkg:pypi/[email protected]'
done!
root@2ae255f06ad8:/project# jq '.packages[].name' /tmp/test.json
# (no output - packages is [])
Note the verbose log claims retrieved package ..., yet packages is empty - the retrieval silently failed.
Without the index (default pypi.org) it works:
root@2ae255f06ad8:/project# env -u PYINSP_INDEX_URL python-inspector -p3.13 -rrequirements.txt -olinux --json-pdt /tmp/test.json --verbose
...
root@2ae255f06ad8:/project# jq '.packages[].name' /tmp/test.json
"cx-oracle"
"redis"
Root cause is the get_pypi_data_from_purl builds the metadata URL from the index base and queries the pypi.org-specific JSON API, then returns None on any non-200:
With a Nexus index this resolves to https://my-nexus-pypi.com/repository/pypi/pypi/redis/2.10.6/json, which 404s - Nexus's PyPI format implements the simple index (PEP 503), not the /pypi/<pkg>/<ver>/json API - so the function bails out and no PackageData is produced.
I initially assumed --use-pypi-json-api was the toggle for this. It doesn't help here: in its default (off) position get_pypi_data_from_purl still unconditionally queries the JSON API, and in the on position the help states --index-url is ignored (i.e. pypi.org), so it can't reach a private index either way.
I'm not sure what the correct approach would be, I feel like --use-pypi-json-api option should be fixed that way we download the selected sdist/wheel and parse its PKG-INFO for License / Home-page / Author / Requires-Dist. The simple index already provides the file list + digests, so the JSON API's urls are largely redundant; its unique value is the rich info block, which PKG-INFO also carries.
While searching for solution I've also stumbled upon PEP 691 https://packaging.python.org/en/latest/specifications/simple-repository-api/#json-based-simple-api-for-python-package-indexes
Which might be better than parsing of PKG-INFO (pkginfo package exists though, so it would be easy)
Either way, would like to hear the maintainers thoughts on that. If it something that should be fixed - I would try.
- Langage dominant
- Python
- Étoiles
- 23
- Forks
- 29
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de aboutcode-org/python-inspector
-
Add support for pylock.tomlPeut-être pris @Anurag-S1ngh l’a pris il y a 4 jours. Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
aboutcode-org/python-inspector#259 · 1 commentaire ·
-
InconsistentCandidate: Pre-Release not allowPeut-être pris @Anurag-S1ngh l’a pris il y a 4 jours. Ouvertebug design nice-to-have
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
aboutcode-org/python-inspector#257 · 1 commentaire ·
-
Feature request: Mask repository credentials in --verbose outputPeut-être pris @Rajeshwari2857 l’a pris il y a 5 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 58/100
aboutcode-org/python-inspector#254 · 4 commentaires · 4 réactions ·
-
Python Inspector version 0.15.0 contains the wrong version stringPeut-être pris @Anurag-S1ngh l’a pris il y a 4 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 45/100
aboutcode-org/python-inspector#253 · 1 commentaire ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 52/100
aboutcode-org/python-inspector#246 · 2 commentaires · 2 réactions ·
Toutes les issues de aboutcode-org/python-inspector
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Graphify-Labs/graphify#4860 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
:bug: Bug
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
scikit-image/scikit-image#8377 ·
Les mainteneurs répondent en général sous 1 jour
-
Ingredient import validation accepts negative nutrient values and NaNPeut-être pris @LukeSekai l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
wger-project/wger#2564 ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
apache/ponymail-foal#351 ·
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 4 jours