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

# Enregistrer et comparer le code

> Activez l’enregistrement du code, comparez le code d’un run W&B à l’autre avec le comparateur de code et capturez l’historique de session Jupyter.

Utilisez W\&B pour enregistrer votre code, comparer le code d’un run à l’autre, afficher les modifications locales et capturer l’historique de session Jupyter.

<div id="enable-code-saving">
  ## Activer l’enregistrement du code
</div>

Configurez l’enregistrement du code pour votre équipe ou votre organisation. Les paramètres au niveau de l’équipe et de l’organisation sont documentés dans [Configurer les paramètres de confidentialité](/fr/platform/hosting/privacy-settings).

<Info>
  Par défaut, W\&B désactive l’enregistrement du code pour toutes les équipes. Avant de pouvoir l’activer pour une équipe, un administrateur de l’organisation doit l’activer au niveau de l’organisation. Voir la section [Organisation](#organization).
</Info>

<div id="team">
  ### Équipe
</div>

Pour activer l’enregistrement du code pour une équipe en tant qu’administrateur de l’équipe, accédez à la page **Settings**, puis à la section **Privacy**, et configurez **Enable code saving by default** pour les runs de l’équipe. Cette option n’est disponible que si un administrateur de l’organisation n’a pas appliqué de restrictions sur l’enregistrement du code à l’échelle de toute l’organisation. Pour les étapes de navigation, voir [Configurer les paramètres de confidentialité d’une équipe](/fr/platform/hosting/privacy-settings#configure-privacy-settings-for-a-team).

<div id="organization">
  ### Organisation
</div>

Pour activer l’enregistrement du code pour une organisation en tant qu’administrateur de l’organisation, accédez à **Settings**, allez à la section **Privacy** et activez **Enforce default code saving restrictions** afin que l’enregistrement du code reste désactivé par défaut pour chaque équipe. Tant que ce paramètre est activé, les administrateurs d’équipe ne peuvent pas activer **Enable code saving by default** pour une équipe. Pour la liste complète des contrôles au niveau de l’organisation, voir [Enforce privacy settings for all teams](/fr/platform/hosting/privacy-settings#enforce-privacy-settings-for-all-teams).

<div id="save-code">
  ## Enregistrer le code
</div>

Capturez le code source qui a produit un run en tant qu’[artefact](/fr/models/ref/python/experiments/artifact). L’artefact de code est visible dans le Workspace de votre projet.

Il existe deux façons d’enregistrer le code : une approche granulaire et une approche automatique.

<div id="fine-grain-control">
  ### Contrôle fin
</div>

Utilisez `wandb.Run.log_code()` pour journaliser des fichiers ou des répertoires spécifiques en tant qu’[artefact](/fr/models/ref/python/experiments/artifact).

Par défaut, W\&B parcourt le répertoire actuel et journalise tous les fichiers se terminant par `.py`.

L’exemple suivant montre comment utiliser `wandb.Run.log_code()` pour journaliser le répertoire actuel :

```python theme={null}
import wandb

with wandb.init() as run:
    # Enregistrer le répertoire courant en tant qu'artifact de code
    run.log_code(root=".")
```

L’exemple suivant montre comment utiliser `wandb.Run.log_code()` avec les paramètres `include_fn=` et `exclude_fn=` pour indiquer quels fichiers inclure et exclure lorsque vous enregistrez le code :

```python theme={null}
import wandb

with wandb.init() as run:
    run.log_code(
         root="../",
         include_fn=lambda path: path.endswith(".py") or path.endswith(".ipynb"),
         exclude_fn=lambda path, root: os.path.relpath(path, root).startswith(
             "cache/"
         ),
    )
```

Pour mieux contrôler les types et emplacements des fichiers de code source que W\&B enregistre, voir la [Référence](/fr/models/ref/python/experiments/run#log_code).

<div id="automatically-capture-code">
  ### Capturer automatiquement le code
</div>

Utilisez `wandb.init(settings=wandb.Settings(code_dir=))` pour capturer automatiquement tout le code du répertoire actuel et de ses sous-répertoires. Par défaut, W\&B capture :

* Les fichiers dont le nom se termine par `.py`
* requirements.txt
* Dockerfile
* Exclut tout ce qui se trouve dans `wandb/` ou `.wandb/`

L'exemple suivant montre comment capturer tout le code du répertoire actuel et de ses sous-répertoires :

```python theme={null}
import wandb

with wandb.init(settings=wandb.Settings(code_dir=".")) as run:
    # Votre code d'entraînement ici
```

Vous pouvez également spécifier un autre répertoire en remplaçant `.` par le chemin du répertoire dont vous souhaitez capturer le contenu.

<div id="view-local-changes">
  ## Voir les modifications locales
</div>

W\&B génère des fichiers diff lorsque vous journalisez du code avec des modifications indexées ou non indexées dans votre dépôt Git, et vous pouvez afficher ces modifications dans l’interface W\&B.

W\&B nomme les fichiers diff `diff.patch` ou `diff_<sha>.patch`. Ces fichiers contiennent des modifications locales du code qui ne sont pas encore validées dans Git, par rapport à `HEAD`.

Pour afficher les fichiers diff :

1. Accédez au Workspace de votre projet.
2. Dans la barre latérale gauche, cliquez sur **Workspace**.
3. Dans le sélecteur de run, sélectionnez le run dont vous souhaitez afficher le diff.
4. Sur la page **Aperçu** du run, sélectionnez l’onglet **Files**.
5. Dans la liste des fichiers, sélectionnez le fichier `diff.patch` ou `diff_<sha>.patch`.
6. Sélectionnez un fichier dans la liste pour déplier le diff correspondant.

W\&B prend en charge deux modes d’affichage du diff entre les runs : *unifié* et *scindé*.

* La vue unifiée affiche le diff dans un seul panneau :
  <Frame>
    <img src="https://mintcdn.com/wb-21fd5541/NTXQs1uMiOLpXhX0/images/app_ui/diff_unified_view.png?fit=max&auto=format&n=NTXQs1uMiOLpXhX0&q=85&s=f81fb84a136e29d1473c45be84d3328d" alt="Vue unifiée du patch de diff" width="3258" height="1232" data-path="images/app_ui/diff_unified_view.png" />
  </Frame>

* La vue scindée affiche le diff dans deux panneaux, côte à côte :

  <Frame>
    <img src="https://mintcdn.com/wb-21fd5541/NTXQs1uMiOLpXhX0/images/app_ui/diff_split_view.png?fit=max&auto=format&n=NTXQs1uMiOLpXhX0&q=85&s=1413263c7d4bf63e9ca0f1db164e32b9" alt="Vue scindée du patch de diff" width="3272" height="1084" data-path="images/app_ui/diff_split_view.png" />
  </Frame>

Basculez entre les deux vues en sélectionnant le bouton **Unified** ou **Split** dans le coin supérieur droit de la vue diff, sous le bouton **Download**.

<div id="jupyter-session-history">
  ## Historique de session Jupyter
</div>

W\&B enregistre l’historique du code exécuté dans votre session de notebook Jupyter. Lorsque vous appelez `wandb.init()` dans Jupyter, W\&B ajoute un hook pour enregistrer automatiquement un notebook Jupyter qui contient l’historique du code exécuté dans votre session en cours.

1. Accédez au Workspace du projet qui contient votre code.
2. Sélectionnez l’onglet **Artifacts** dans la barre latérale du projet.
3. Développez l’artefact **code**.
4. Sélectionnez l’onglet **Files**.

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541/ZDqxXQYvQVF43fU1/images/app_ui/jupyter_session_history.gif?s=49da7b37f1224d224a013d6236f8b2bc" alt="Historique de session Jupyter" width="3868" height="2574" data-path="images/app_ui/jupyter_session_history.gif" />
</Frame>

Cela affiche les cellules exécutées pendant votre session, ainsi que toutes les sorties générées par des appels à la méthode `display` d’IPython. Cela vous permet de voir exactement quel code a été exécuté dans Jupyter pour une run donnée. Lorsque c’est possible, W\&B enregistre également la version la plus récente du notebook, que vous trouverez aussi dans le répertoire `code`.

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541/ZDqxXQYvQVF43fU1/images/app_ui/jupyter_session_history_display.png?fit=max&auto=format&n=ZDqxXQYvQVF43fU1&q=85&s=08c634b5d45cdac9d16a3c803879c6eb" alt="Sortie de session Jupyter" width="3826" height="1840" data-path="images/app_ui/jupyter_session_history_display.png" />
</Frame>

<div id="compare-code-across-runs">
  ## Comparer le code entre les runs
</div>

Comparez le code utilisé dans différents runs W\&B :

1. Cliquez sur le bouton **Add panels** dans le coin supérieur droit de la page.
2. Ouvrez le menu déroulant **TEXT AND CODE** et sélectionnez **Code**.

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541/ZDqxXQYvQVF43fU1/images/app_ui/code_comparer.png?fit=max&auto=format&n=ZDqxXQYvQVF43fU1&q=85&s=fcd0416ae8bdeaadd69f541104fe6d6d" alt="Panneau comparateur de code" width="887" height="337" data-path="images/app_ui/code_comparer.png" />
</Frame>
