> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Artifacts

> Créez, mettez à jour, téléchargez et gérez des artifacts W&B pour la gestion des versions de vos données.

Créez, mettez à jour, téléchargez et gérez des artifacts W\&B pour la gestion des versions de vos données.

<h2 id="create-and-log-an-artifact">
  Créer et journaliser un artifact
</h2>

```python theme={"system"}
"""
Creates and logs a W&B artifact. First create an
artifact object. Next, add files, directories, or external references to the artifact.
Finally, log the artifact to a W&B run.
"""
import wandb

# Créer un objet artifact
artifact = wandb.Artifact(name="<artifact_name>", type="<artifact_type>")

# Ajouter un ou plusieurs fichiers à l’artifact
artifact.add_file(local_path="data/file1.csv")

# Ajouter récursivement un répertoire à l’artifact
artifact.add_dir(local_path="data/directory")

# Ajouter une référence URI externe à l’artifact
artifact.add_reference(uri="s3://my-bucket/path/to/data.csv")

with wandb.init(project="<project>") as run:
    # Code d’entraînement et de journalisation

    # Exemple de journalisation d’un artifact
    run.log_artifact(artifact)
```

<h2 id="track-an-external-artifact-by-adding-a-reference-to-a-cloud-storage-bucket-path">
  Suivre un artifact externe en ajoutant une référence vers le chemin d’un bucket de stockage cloud
</h2>

```python theme={"system"}
"""
Tracks an external artifact by adding a reference to a cloud storage bucket path.
"""

import wandb

# Créer un objet artifact
artifact = wandb.Artifact(name="<artifact_name>", type="<artifact_type>")

# Ajouter une référence au chemin du bucket
artifact.add_reference(uri = "uri/to/your/bucket/path")

# Initialiser un run W&B
with wandb.init(project="<project>") as run:

  # Journaliser les métadonnées de l’artifact
  run.log_artifact(artifact)
```

<h2 id="delete-specific-artifact-version-from-a-run">
  Supprimer une version précise d’un artifact d’un run
</h2>

```python theme={"system"}
"""
Delete specific artifact version from a W&B run. Set delete_aliaes to `True` 
if the artifact has an alias attached to it.
"""
import wandb

# Initialiser l’API W&B
api = wandb.Api()

# Obtenir le run à partir de son chemin, au format <entity>/<project>/<run_path>
runs = api.run("<entity>/<project>/<run_path>")

# wandb.Api().Run.logged_artifacts() renvoie une liste de versions d’artifact
# composées du nom de l’artifact et de la version : <artifact_name>:v<version_number>
for artifact_version in runs.logged_artifacts():
    # Extraire les deux derniers caractères du nom de la version d’artifact (str),
    # qui correspondent au numéro de version
    if artifact_version.name[-2:] == "v"+ "<version_number>":
        artifact_version.delete(delete_aliases=True)
```

<h2 id="delete-an-artifact-collection">
  Supprimer une collection d’artifacts
</h2>

```python theme={"system"}
"""
Delete an artifact collection from W&B.
"""
import wandb

# Initialiser l’API W&B
api = wandb.Api()

# Supprimer une collection d’artifacts à partir de son nom et de son type
# Format du nom : <entity>/<project>/<run_path>
collection = api.artifact_collection(
    name="<entity>/<project>/<run_path>",
    type_name="<artifact_type>"
)

collection.delete()
```

<h2 id="download-specific-files-or-sub-folders-from-artifacts">
  Télécharger des fichiers ou des sous-dossiers spécifiques depuis des artifacts
</h2>

```python theme={"system"}
"""
Downloads specific files or sub-folders from W&B artifacts. The same
logic applies to external artifacts.
"""
import wandb

with wandb.init(project="<project>") as run:
    # Indiquez l’artifact à utiliser. Format : "name:alias"
    artifact = run.use_artifact("<artifact_name>:<alias>")

    # Téléchargez un fichier ou un sous-dossier précis
    artifact.download(path_prefix="<file_name>") # télécharge uniquement le fichier ou le dossier indiqué
```

<h2 id="download-files-or-entire-artifacts">
  Télécharger des fichiers ou des artifacts entiers
</h2>

```python theme={"system"}
"""
Downloads files or entire artifacts from W&B. The same
logic applies to external artifacts.
"""

import wandb    

with wandb.init(project="<project>") as run:
    # Indiquez l’artifact à utiliser. Format is "name:alias"
    artifact = run.use_artifact("<artifact_name>:<alias>")

    # Télécharge le fichier de l’artifact situé au chemin name
    # Si artifact.add_reference() a été utilisé, renvoie l’URL de référence
    entry = artifact.get_entry("<file_name>")

    # Téléchargez l’artifact complet
    datadir = artifact.download()
```

<h2 id="add-one-or-more-aliases-to-an-artifact-when-logging-it">
  Ajouter un ou plusieurs alias à un artifact lors de sa journalisation
</h2>

```python theme={"system"}
"""
Add one or more aliases to an artifact when logging it to W&B.
"""
import wandb

# Créer un artifact
artifact = wandb.Artifact(name="<artifact_name>", type="<artifact_type>")
# Ajouter des fichiers à l’artifact
artifact.add_file("<file_path>")

with wandb.init(project="<project>") as run:
    # Journaliser l’artifact avec des alias
    run.log_artifact(artifact, aliases=["<alias1>", "<alias2>"])
```

<h2 id="add-an-alias-to-an-existing-artifact">
  Ajouter un alias à un artifact existant
</h2>

```python theme={"system"}
"""
Adds an alias to an existing W&B artifact.
"""
import wandb

# Récupérer un artifact existant et lui ajouter un alias
artifact = wandb.Api().artifact("entity/project/artifact:version")
artifact.aliases = ["<new-alias>"]
artifact.save()
```

<h2 id="add-a-tag-to-an-artifact-when-logging-it">
  Ajouter un tag à un artifact lors de sa journalisation
</h2>

```python theme={"system"}
"""
Add a tag to an artifact when logging it to W&B.
"""
import wandb

# Créer un artifact
artifact = wandb.Artifact(name="<artifact_name>", type="<artifact_type>")

# Journaliser l’artifact avec des tags
with wandb.init(project="<project>") as run:
    run.log_artifact(artifact, tags=["<tag1>", "<tag2>"])
```

<h2 id="add-a-tag-to-an-existing-artifact">
  Ajouter un tag à un artifact existant
</h2>

```python theme={"system"}
"""
Adds a tag to an existing W&B artifact.
"""
import wandb

# Récupérer un artifact existant et lui ajouter un tag
artifact = wandb.Api().artifact("entity/project/artifact:version")
artifact.tags = ["new-tag"]
artifact.save()
```

<h2 id="create-and-log-an-artifact-with-a-ttl-policy">
  Créer et journaliser un artifact avec une politique TTL
</h2>

```python theme={"system"}
"""
Create and log an artifact with a TTL policy in W&B.
"""
import wandb
from datetime import timedelta

# Créer un artifact avec une politique TTL
artifact = wandb.Artifact(name="<artifact_name>", type="<artifact_type>")
artifact.add_file("<file_path>")
artifact.ttl = timedelta(days=30)  # Définir la politique TTL

with wandb.init(project="<project>", entity="<entity>") as run:
    # Journaliser l’artifact avec sa politique TTL
    run.log_artifact(artifact)
```

<h2 id="update-the-ttl-policy-of-an-existing-artifact">
  Mettre à jour la politique TTL d’un artifact existant
</h2>

```python theme={"system"}
"""
Update the TTL policy of an existing artifact in W&B.
"""
import wandb
from datetime import timedelta

# Initialiser l’API W&B
api = wandb.Api()

# Récupérer l’artifact existant
artifact = api.artifact("<entity/project/artifact:alias>")

# Ajouter ou mettre à jour la politique TTL. Indiquer la durée souhaitée.
artifact.ttl = timedelta(days=365)  # Suppression dans un an

# Enregistrer l’artifact mis à jour
artifact.save()
```

<h2 id="update-an-existing-artifacts-description-within-a-run">
  Mettre à jour la description d’un artifact existant dans un run
</h2>

```python theme={"system"}
"""
Update an existing W&B artifact's description within a W&B run.

This code initializes a W&B run, retrieves the specified artifact by name and alias,
updates its description, and saves the changes.
"""
import wandb

with wandb.init(entity="<entity>", project="<project>") as run:
    # Récupérer l’artifact par son nom et son alias
    artifact = run.use_artifact(artifact_or_name="<artifact>:<alias>")
    # Mettre à jour la description de l’artifact
    artifact.description = "<description>"
    # Enregistrer l’artifact mis à jour
    artifact.save()
```

<h2 id="given-an-existing-artifact-update-its-description-metadata-and-aliases-without-creating-a-new-run">
  Mettre à jour la description, les métadonnées et les alias d’un artifact existant sans créer de nouveau run
</h2>

```python theme={"system"}
"""
Given an existing artifact, update its description, metadata, and aliases
without creating a new run.
"""
import wandb

api = wandb.Api()

artifact = api.artifact(name="<entity/project/artifact:alias>")

# Mettre à jour la description
artifact.description = "My new description"

# Mettre à jour uniquement certaines clés de métadonnées
artifact.metadata["oldKey"] = "new value"

# Remplacer entièrement les métadonnées
artifact.metadata = {"newKey": "new value"}

# Ajouter un alias
artifact.aliases.append("best")

# Supprimer un alias
artifact.aliases.remove("latest")

# Remplacer entièrement les alias
artifact.aliases = ["replaced"]

# Enregistrer toutes les modifications apportées à l’artifact
artifact.save()
```
