Generering af Jupyter/Colab notesbøger

Værktøjet nbgenerate konverterer DevSite HTML- og Markdown-indhold og skabeloner til Colab-kompatible Jupyter-notebooks.

Oversigt

Fra Google Colab -webstedet:

Colab notesbøger giver dig mulighed for at kombinere eksekverbar kode og rig tekst i et enkelt dokument sammen med billeder, HTML, LaTeX og mere.

I Colab kan Python-kode skrives og udføres fra en webbrowser uden yderligere opsætning eller installation. Markdown-indhold kan blandes med kodeceller for at tillade rigt indhold at blive leveret i det samme dokument. Dette gør Colab-notebooks til en populær løsning, ikke kun til kvantitativ forskning og maskinlæring, men også til at demonstrere og eksperimentere med API'er og koncepter som dem, der typisk findes i udviklerdokumentation.

Af denne grund overlapper indhold, der deles i Colab-notesbøger, ofte med indhold, der er offentliggjort i Googles udviklerdokumentation. nbgenerate-værktøjet eliminerer behovet for manuelt at synkronisere DevSite-markering med understøttende Colab-notebooks. Værktøjet konverterer DevSite HTML og Markdown til .ipynb-filformatet, der bruges af Colab og andre Jupyter-notebook-implementeringer. Dette gør det muligt at bruge DevSite-indhold som en enkelt kilde til sandhed for både udviklerdokumenter og Colab-notebooks.

Baggrund og tekniske detaljer kan findes i det originale designdokument på nbgenerate-dd .

Grundlæggende brug

For at generere Colab-notesbøger til sider i dit DevSite-projekt skal du tilføje en fil kaldet _notebooks.yaml , før du påberåber kommandoen nbgenerate .

Tilføjelse af _notebooks.yaml til dit projekt

For at generere Colab-notesbøger fra sider i et DevSite-projekt skal du tilføje en fil kaldet _notebooks.yaml til projektroden (i samme mappe som dit websteds _project.yaml ). Filen skal indeholde én post for hver side, der deles som en Colab-notesbog. source for hver post skal indeholde den absolutte sti inden for din DevSite-lejer for at blive konverteret til en Colab-notesbog. target skal angive google3-depotstien, hvor genererede Colab-notesbøger vil blive skrevet.

For eksempel:

- source: /earth-engine/ee-image.html
  target: //depot/google3/third_party/earthengine_community/ipynb/ee-image.ipynb
- source: /earth-engine/guides/image_objects.md
  target: //depot/google3/third_party/earthengine_community/ipynb/guides/image_objects.ipynb

Dette eksempel bruger målstier, der spejles til GitHub ved hjælp af Copybara, så de genererede notesbøger kan åbnes via offentligt tilgængelige hyperlinks. Se copybara for detaljer om, hvordan du synkroniserer google3-stier til GitHub. Se også Widget-eksempler for eksempler, der tilføjer links til genererede notesbøger i GitHub.

Generering af notesbøger

Før du kører nbgenerate for første gang, skal du definere et alias i din .bashrc og til din nuværende shell:

alias nbgenerate="/google/bin/releases/devsite/tools/nbgenerate/nbgenerate.par"

Du kan derefter køre nbgenerate fra kommandolinjen for at genskabe alle filer, der er angivet i _notebooks.yaml :

nbgenerate googledata/devsite/content/en/PROJECT

Angiv en eller flere stier som argumenter til nbgenerate for at begrænse behandlingen til de angivne filer eller stier, for eksempel:

nbgenerate third_party/devsite/developers/en/earth-engine/guides

Directory-stier behandles rekursivt; alle filer i _notebooks.yaml ved eller under den angivne mappe vil blive behandlet.

Hvis du modtager "Permission denied", når du kører nbgenerate ved hjælp af ovenstående alias, kan du også køre værktøjet med følgende kommando:

blaze run //devsite/tools/nbgenerate -- googledata/devsite/content/en/PROJECT

Filtrering af indhold

I tilfælde, hvor noget indhold kun skal vises enten på DevSite-sider eller i den genererede Colab-notesbog, men ikke begge dele, kan du filtrere indhold ved hjælp af variabelen is_ipynb , som er sat til True under nbgenerate konverteringsprocessen. For at forhindre fejl ved iscenesættelse og udgivelse på DevSite skal du tilføje følgende nær toppen af ​​sider, der selektivt skal inkludere indhold:

    
{% if is_ipynb is not defined %}{% set is_ipynb=False %}{% endif %}
     

Du kan derefter bruge Jinja-tags til at kontrollere, hvilket indhold der vises i Colab, DevSite eller begge dele. For eksempel:

# Overview

This section will show in both the DevSite page and in the Colab notebook as
a text cell.


{% if is_ipynb %}

This content will only appear in Colab notebooks but not on DevSite pages. This
is useful for providing Colab-specific initialization and setup instructions or
code.
{% endif %}
 


{% if not is_ipynb %}
```js
// This code snippet will only be rendered in DevSite but not in Colab
// notebooks.
console.log('Hello, nbgenerate!');
```
{% endif %}
 

```py
# This snippet will appear in both DevSite and in the Colab notebook as a code
# cell.
print('Hello, nbgenerate!');
```

Eksempler på widgets

Websteder definerer ofte deres egne DevSite-widgets for at indkapsle almindelig adfærd. Nedenfor er nogle eksempler på widgets, der bruger variablen is_ipynb , som kan tilpasses dit websted.

Colab notesbog knapper widget

Earth Engine-udviklerdokumentation bruger en tilpasset widget til konsekvent at vise Kør i Colab og Vis kilde på GitHub- knapper på DevSite-sider synkroniseret med Colab-notebooks i GitHub.

Eksempel på sektionswidget

Eksempelsektionswidgetten giver et eksempel på, hvordan man opsætter fanebladssektioner til kodestykker, der præsenteres i flere programmeringssprog eller miljøer. Widget'en sørger kun for at inkludere Python-uddrag i Colab-notesbøger. Det fjerner også markeringer, der bruges til at vise fanebladssektionerne, når du skriver notesbogen.