RFE: expose delegated metadata to client application
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 32/100
Piste de recherche
Commencez par lire le flux get_targetinfo() existant de ngclient et le document de conception associé, en particulier la proposition Metadata role as search index. Suivez la manière dont les métadonnées déléguées sont recherchées et déterminez le comportement attendu pour les chemins de cible sans correspondance et les délégations non terminantes. Le travail est considéré comme terminé lorsque le client peut exposer l’objet Targets concerné et que les cas limites convenus sont couverts.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
EDIT: The overall issue is described in detail in https://docs.google.com/document/d/1rWHAM2qCUtnjWD4lOrGWE2EIDLoA7eSy4-jB66Wgh0o . The suggestion here is roughly the Metadata role (file) as search index solution in the document.
Assume a setup like this (this is what we expect a community artifact repository like PyPI to look like if it uses developer signatures with TUF):
- a specific project/product team controls a delegated metadata
- TUF clients want to know details of all of the artifacts in this metadata (to e.g. figure out which versions of an artifact are available)
Currently there is no way for the client application to get the whole metadata content from ngclient. We could provide a call much like get_targetinfo() that instead of the TargetFile would return the Targets object where the target search ended:
def get_targets_metadata(target_path: str) -> Targets
"""returns a Targets object of the metadata where the search for target_path terminated"""
This is not applicable to every TUF repo:
- it requires a "contract" between repository and client: client has to know of a
target_paththat is delegated to the correct metadata -- in the pypi example it could be e.g. the PyPI project name - this is only useful if all "related" target files are listed in the same metadata
But with those assumptions the client can now easily get not just the list of target files it's interested in but also any custom metadata embedded in the targets metadata.
I've not thought through all the cases (what happens if there is no targetpath match? what if there is no terminating delegation?) but I think this is something we could consider implementing
- Langage dominant
- Python
- Étoiles
- 1.7k
- Forks
- 304
- Merge moyen
- 9 h 25 min
- PR mergées (30 j)
- 14
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
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 theupdateframework/python-tuf
-
switch to main branch?Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
theupdateframework/python-tuf#3001 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 42/100
theupdateframework/python-tuf#2979 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Use Immutable ReleasesOuverteenhancement github_actions
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
theupdateframework/python-tuf#2920 · 1 commentaire · 2 réactions ·
Les mainteneurs répondent en général sous 1 jour
-
Investigate/test fetcher retriesOuverte
Difficulté 3/5 1-2 jours Accessibilité débutants 35/100
theupdateframework/python-tuf#2842 · 3 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
theupdateframework/python-tuf#2836 · 7 commentaires ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de theupdateframework/python-tuf
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 86/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-2 jours Accessibilité débutants 70/100
-
FingerprintSplitter raises ZeroDivisionError when int(frac_train * len(dataset)) floors to zeroOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
Les mainteneurs répondent en général sous 7 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
lmstudio-ai/mlx-engine#376 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
pyiron/bagofholding#166 ·