saw this article floating around, might be of inte...
# general
h
saw this article floating around, might be of interest to some people here: https://beepb00p.xyz/mypy-error-handling.html
a
i think that the v2 engine achieves a lot of these goals as well by (1) abstracting execution and (2) virtualizing objects like the filesystem in ways that don't require exception handling (e.g. if an expected
Digest
doesn't exist, that's absolutely a program error). we can thoughtfully develop high-performance primitives in rust (like the idea for
RetryableRequest
i was mentioning in #engine) which fully extract the execution and error handling so that the python code written can look and feel much more declarative. there's a very novel type system that arises from the rule graph and the greater, dynamic, yet strongly-typed control we can have over the execution (compared to a compiled language) means we can iterate incredibly fast on novel ways to expose declarative APIs for messy, error-prone code.
and then mypy can still type-check the rules because they're just python so we can build on top of that and avoid reinventing the wheel (e.g.
datatype()
)