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 — nigdyeval/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).
Dag