> For the complete documentation index, see [llms.txt](https://cleyrop.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://cleyrop.gitbook.io/docs/v-4.5/projet-data-and-ia/cleyrop-codelab.md).

# Cleyrop Codelab

Codelab vous permet d’ouvrir un **notebook Jupyter** directement lié à un **projet Git Cleyrop** : vous versionnez vos notebooks et scripts, travaillez par **branches**, et proposez des **demandes de changement** (approbation/merge). Les sessions Jupyter sont **éphémères** (16 h) mais relançables avec la **puissance** souhaitée.

***

## Ouvrir une session

1. Sélectionnez un projet dans Mes Projets.
2. Cliquez sur Notebooks, choisissez votre configuration de puissance
3. Créez et sauvegardez le fichier (nom explicite, ex. exploration\_clients.ipynb).

{% hint style="warning" %}
Chaque utilisateur a sa propre session Jupyter qui dispose d'un **espace de stockage de 2 Go, il est recommandé de ne pas stocker les fichiers volumineux dans la session** mais dans les Données de travail

Il n'est **pas possible de créer de Dataset** depuis le Codelab
{% endhint %}

### Reconnexion d’une session inactive

* Les sessions Jupyter expirent au bout de 16 h.
* À la reconnexion, choisissez l’image (environnement logiciel) et la puissance (CPU/RAM/GPU si dispo).
* Relancez votre kernel si nécessaire ; vos fichiers versionnés restent dans le repo du projet.

## Utiliser les ressources Cleyrop depuis Codelab

### **Utiliser les Données de travail**

Vous pouvez utiliser les fichiers et dossiers des données de travail du projet depuis un notebook ou un script en suivant le guide [accéder aux **Données de Travail**](/docs/v-4.5/projet-data-and-ia/donnees-de-travail-fichiers/utiliser-les-donnees-dans-un-script.md#utiliser-dans-le-codelab)**.**

### Utiliser la librairie PyAi

Vous pouvez utiliser la [**librairie PyAi**](/docs/v-4.5/la-fabrique/deployer-des-apps-et-des-tools.md#utiliser-la-librairie-de-composants-cleyrop) en suivant le guide.

### Utiliser les Datasets

Vous pouvez utiliser la librairie **`cleyrop_datasets`.** Vous pouvez l'utiliser directement sans l'importer.

* `cleyrop_datasets` : liste des datasets
* `cleyrop_datasets["ID_unique_dataset"]` : dataframe du dataset

<figure><img src="/files/hnGbtVunK4eXlqCRgt7g" alt=""><figcaption></figcaption></figure>

## Collaborer et versionner avec Git

Chaque projet Cleyrop dispose d’un répertoire Git partagé pour **versionner** les notebooks et scripts d’exploration (onglet Notebooks).

Dans le projet, cliquez sur Codelab, vous pouvez :

* onglet **Scripts** : naviguer dans les scripts par branche, créer une branche ou proposer un changement
* onglet **Branche** : lister et supprimer les branches
* onglet **Demandes de changement** : lister les proposition de changement et visualiser leur contenu

{% hint style="info" %}

* `main` ne peut pas être supprimée.
* Si une demande de changement liée est ouverte, elle est supprimée.
  {% endhint %}

### Écrire dans un Dépôt Git La Fabrique depuis Notebooks

Il est possible, depuis la session Jupyter, de pousser du contenu vers un repo hébergé dans **La Fabrique** en l'ajoutant comme remote Git.

**Ajouter le repo La Fabrique comme remote**

1. Dans La Fabrique, ouvrez le dépôt cible et copiez son **Lien** (format `git@cleyrop:mon-depot.git`).

<figure><img src="/files/PFaU4XAOXtByBsMElEuW" alt="" width="563"><figcaption></figcaption></figure>

2. Rendez-vous dans le projet souhaité et lancez une session Jupyter depuis l'onglet **Notebooks**.
3. Dans la barre de menus JupyterLab, ouvrez **Git** > **Manage Remote Repositories**.

<figure><img src="/files/nweQB2eL2Xz16EIXtCLw" alt=""><figcaption></figcaption></figure>

4. Renseignez un nom (ex. `internal`) et collez l'URL copiée.

<figure><img src="/files/GarLwNUdivTA9MMc0cBA" alt=""><figcaption></figcaption></figure>

5. Cliquez sur **Add**. Après rafraîchissement, le remote apparaît dans la liste des branches du panneau Git (ex. `internal/main`).

{% hint style="info" %}
**Bonne pratique** : évitez de nommer le nouveau repository "origin" afin d'éviter les confusions.
{% endhint %}

<figure><img src="/files/F8hZfAgh8i5apYG2nUvU" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/LIAMJBcG3RLMpmoz6JHc" alt=""><figcaption></figcaption></figure>

**Pousser des fichiers vers le repo**

1. Créez de nouvelles branches, créez ou modifiez vos fichiers dans la session via l'interface ou en lignes de commande via le terminal.
2. Dans le panneau Git latéral (onglet **Untracked**), cliquez sur le `+` à côté de chaque fichier à inclure pour le déplacer dans **Staged**.

<figure><img src="/files/A0YRxFTgprrvxR4g8XYB" alt=""><figcaption></figcaption></figure>

3. Renseignez un résumé dans le champ **Summary** et cliquez sur **COMMIT**.
4. Dans le menu **Git**, sélectionnez **Push to Remote (Advanced)**, choisissez le remote cible et la branche, puis confirmez.

<figure><img src="/files/8TGrtzvWhMG7v54UnUK7" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/SKR8WrIQF5xGklwoevhD" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
**Push to Remote (Advanced)** est également nécessaire pour pousser une nouvelle branche pour la première fois, même vers le remote d'origine du projet..
{% endhint %}

### Proposer un changement

Une proposition de changement (merge request) permet de fusionner vos modifications vers une branche cible.

Elle doit être **validée par un approbateur** (qui peut approuver ou refuser avec commentaire)

Statuts possibles :

* **En attente de validation** : créée, en revue.
* **Conflit** : un conflit doit être résolu avant revue.
* **Approuvé** : validée par l’approbateur.
* **Refusé** : rejetée par l’approbateur.

Pour **créer une proposition**

1. Depuis onglet Demandes de changement, cliquer sur `+ Proposer un changement`.
2. Renseignez : nom, branche source, suppression de la source après merge (optionnel), description, approbateur.
3. Cliquez Ajouter.

### Lister, visualiser et approuver

* Cliquez sur une demande de changement (nom, auteur, date, statut).
* Visualiser les diffs.
* Approuver / Refuser (**seulement par l’approbateur**) : action depuis la ligne de la demande.

{% hint style="info" %}
Bonnes pratiques : une branche par sujet, messages clairs, notebooks nettoyés (outputs lourds supprimés) avant de proposer un changement.
{% endhint %}
