nbgenerate
verktøyet konverterer DevSite HTML- og Markdown-innhold og maler til Colab-kompatible Jupyter-notatbøker.
Oversikt
Fra Google Colab- nettstedet:
Colab-notatbøker lar deg kombinere kjørbar kode og rik tekst i ett enkelt dokument, sammen med bilder, HTML, LaTeX og mer.
I Colab kan Python-kode skrives og kjøres fra en nettleser uten ytterligere oppsett eller installasjon. Markdown-innhold kan blandes med kodeceller for å tillate rikt innhold å gis i samme dokument. Dette gjør Colab-notebooks til en populær løsning, ikke bare for kvantitativ forskning og maskinlæring, men også for å demonstrere og eksperimentere med APIer og konsepter som de som vanligvis finnes i utviklerdokumentasjon.
Av denne grunn overlapper innhold som deles i Colab-notatbøker ofte med innhold publisert i Googles utviklerdokumentasjon. nbgenerate-verktøyet eliminerer behovet for å manuelt synkronisere DevSite-markering med støttende Colab-notatbøker. Verktøyet konverterer DevSite HTML og Markdown til .ipynb-filformatet som brukes av Colab og andre Jupyter bærbare implementeringer. Dette gjør at DevSite-innhold kan brukes som en enkelt kilde til sannhet for både utviklerdokumenter og Colab-notatbøker.
Bakgrunn og tekniske detaljer finnes i det originale designdokumentet på nbgenerate-dd .
Grunnleggende bruk
For å generere Colab-notatbøker for sider i DevSite-prosjektet ditt, må du legge til en fil kalt _notebooks.yaml
før du starter kommandoen nbgenerate
.
Legger til _notebooks.yaml til prosjektet ditt
For å generere Colab-notatbøker fra sider i et DevSite-prosjekt, legg til en fil kalt _notebooks.yaml
til prosjektroten (i samme katalog som nettstedets _project.yaml
). Filen skal inneholde én oppføring for hver side som deles som en Colab-notatbok. source
til hver oppføring må inneholde den absolutte banen i DevSite-leietakeren din for å bli konvertert til en Colab-notatbok. target
må spesifisere google3-depotbanen der genererte Colab-notatbøker vil bli 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 eksemplet bruker målstier som speiles til GitHub ved hjelp av Copybara slik at de genererte notatbøkene kan åpnes via offentlig tilgjengelige hyperkoblinger. Se copybara for detaljer om hvordan du synkroniserer google3-baner til GitHub. Se også Widget-eksempler for eksempler som legger til lenker til genererte notatbøker i GitHub.
Generer notatbøker
Før du kjører nbgenerate
for første gang, definer et alias i din .bashrc
og til ditt nåværende skall:
alias nbgenerate="/google/bin/releases/devsite/tools/nbgenerate/nbgenerate.par"
Du kan deretter kjøre nbgenerate
fra kommandolinjen for å regenerere alle filene som er oppført i _notebooks.yaml
:
nbgenerate googledata/devsite/content/en/PROJECT
Spesifiser én eller flere stier som argumenter for å nbgenerate
for å begrense behandlingen til de angitte filene eller banene, for eksempel:
nbgenerate third_party/devsite/developers/en/earth-engine/guides
Katalogbaner behandles rekursivt; alle filer i _notebooks.yaml
ved eller under den angitte katalogen vil bli behandlet.
Hvis du mottar "Permission denied" når du kjører nbgenerate
ved å bruke aliaset ovenfor, kan du også kjøre verktøyet med følgende kommando:
blaze run //devsite/tools/nbgenerate -- googledata/devsite/content/en/PROJECT
Filtrering av innhold
I tilfeller der noe innhold bare skal vises enten på DevSite-sider eller i den genererte Colab-notatboken, men ikke begge deler, kan du filtrere innhold ved å bruke is_ipynb
variabelen, som er satt til True
under nbgenerate
konverteringsprosessen. For å forhindre feil ved iscenesettelse og publisering til DevSite, legg til følgende nær toppen av sidene som selektivt må inkludere innhold:
{% if is_ipynb is not defined %}{% set is_ipynb=False %}{% endif %}
Du kan deretter bruke Jinja-tagger for å kontrollere hvilket innhold som vises i Colab, DevSite eller begge deler. 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!'); ```
Widget-eksempler
Nettsteder definerer ofte sine egne DevSite-widgets for å innkapsle vanlig atferd. Nedenfor er noen eksempler på widgets som bruker variabelen is_ipynb
, som kan tilpasses nettstedet ditt.
Colab notebook knapper widget
Earth Engine-utviklerdokumentasjonen bruker en egendefinert widget for å konsekvent vise Kjør i Colab og Se kilde på GitHub- knapper på DevSite-sider synkronisert med Colab-notatbøker i GitHub.
Eksempel på seksjonswidget
Eksempelseksjonswidgeten gir et eksempel på hvordan du setter opp faneseksjoner for kodebiter presentert i flere programmeringsspråk eller miljøer. Widgeten tar seg av bare å inkludere Python-snutter i Colab-notatbøker. Den fjerner også markeringer som brukes til å vise fanedelene når du skriver notatboken.