Edytor kodu i round-trip

W każdej chwili możesz przełączyć się na widok kodu, by edytować plik .py bezpośrednio w edytorze CodeMirror 6, z podświetlaniem składni i walidacją importów. Tryb Split pokazuje canvas i kod obok siebie.

Niezmiennik round-trip

DagSmith parsuje Twój plik przez libcst(bezstratne drzewo składni konkretnej Pythona), nigdy przez standardowy moduł ast tam, gdzie dotyka to Twojego źródła. Podstawowa gwarancja:

codegen(parse(source)) == source, identyczne co do bajtu, zawsze gdy graf się nie zmienił.

Kiedy faktycznie coś zmienisz na canvasie, DagSmith nie regeneruje całego pliku — nakłada celowaną edycję na poziomie pojedynczego argumentu, dokładnie na instrukcję, która się zmieniła. Dzięki temu zmiana jednego parametru w ręcznie napisanym DAGu daje diff o jednej linii, a nie przeformatowany plik.

Walidacja przed deployem

Zanim draft można wdrożyć, DagSmith waliduje go dwuetapowo, zawsze poza procesem api-servera:

  • Szybkie sprawdzenie składni/AST.
  • Pełny import przez DagBag, wykonywany w izolowanym, ograniczonym czasowo podprocesie — nigdy eval/exec/importlibna Twoim źródle w procesie głównym.

Bezpieczny deploy

Deploy zapisuje plik atomowo (plik tymczasowy + os.replace), najpierw robi backup i sprawdza, czy plik nie zmienił się od otwarcia draftu — konflikt 409 pokazuje diff, żebyś mógł go rozwiązać zamiast po cichu nadpisać czyjąś zmianę. Przycisk Load from bundle pozwala w każdej chwili wczytać aktualnie wdrożony plik z powrotem do draftu (z potwierdzeniem, bo odrzuca zmiany będące tylko w drafcie).