Skip to content

Praca s ipythonom (sk)

Tomi Belan edited this page Dec 6, 2024 · 3 revisions

Pri vývoji Votru sa často hodí experimentovať. Keď vývojár pridáva podporu pre novú činnosť alebo aplikáciu, väčšinou to spraví ručne v AISe a popri tom prekladá všetko čo robí a všetko čo sa stane do Votr kódu. Na toto sú veľmi užitočné Jupyter notebooky. (Terminológia: Jupyter notebooky podporujú veľa jazykov, Pythonová verzia sa volá IPython.)

Notebooky sú kríženci medzi normálnym príkazovým riadkom a skriptami. Príkazy sa dajú písať po jednom podľa aktuálnej situácie, ale keď treba, celý program sa dá spustiť odznova.

Ako nainštalovať a spustiť JupyterLab

./x uv run --with jupyterlab jupyter lab

Bonus: vyrob adresár notebooks a spusti Jupyter s --preferred-dir=notebooks.

Čo napísať do nového notebooku

from nbenv import *
client = create_client(ais, get_login_params())

To spustíme (Shift+Enter) a dostaneme nový client. Čo sa s ním dá robiť:

# Volať fladgejt metódy
client.get_som_student()

# Zistiť zoznam aplikácii
aisikl.portal.get_apps(client.context)

# Otvárať aplikácie, ktoré už poznáme
app = client._open_administracia_studia()

# Otvárať nové aplikácie
url = '/ais/servlets/WebUIServlet?...'
app, ops = Application.open(client.context, url)
app.awaited_open_main_dialog(ops)

# Robiť veci v otvorených aplikáciach
app.d.components
app.d.nejakyTextField.write('obsah')
with app.collect_operations() as ops: app.d.nejakyButton.click()
app.awaited_open_dialog(ops)

Funkcia get_login_params() si prvýkrát vypýta meno a heslo a uloží ho v /tmp/votrlogin-$USER. Vďaka tomu nebude heslo nikdy viditeľné na obrazovke alebo uložené v ipynb súbore.

Ako sa prihlásiť na AIS betu

client = create_client(ais_beta, get_login_params())

Ako sa prihlásiť s cookie

client = create_client(ais, dict(
    type='cookie',
    ais_cookie='hodnota JSESSIONID cookie z ais2.uniba.sk',
    rest_cookie='hodnota JSESSIONID cookie z votr-api.uniba.sk'))

rest_cookie je nepovinné.

Ako spustiť celý notebook odznova

Stlačíme "Kernel" → "Restart Kernel and Run All Cells".

Hodí sa pridať si na to klávesovú skratku. Podľa https://stackoverflow.com/a/65304663:

  • Otvor "Settings" → "Settings Editor".
  • Vpravo hore stlač "JSON Settings Editor" alebo "Advanced Settings Editor".
  • Otvor "Keyboard Shortcuts".
  • Napíš do "User Preferences":
    {
        "shortcuts": [
            {
                "args": {},
                "command": "runmenu:restart-and-run-all",
                "keys": [
                    "9",
                    "9"
                ],
                "selector": "[data-jp-code-runner]"
            }
        ]
    }
  • Ulož nastavenia s Ctrl+S.
  • Odteraz keď v notebooku dvakrát za sebou stlačíš "9", notebook sa vykoná odznovu.

Ako vyrábať notebooky v podadresári

Cez uv už to funguje samo od seba. Kedysi bolo treba na začiatok notebooku napísať:

import sys
sys.path[0] = '..'