Age | Commit message (Collapse) | Author |
|
The biggest change in the dependencies is of course SQLAlchemy 2. On the
good side, we didn't need to do many code changes --- in regards to
actual Code, none!
On the better side, we now have way better type checking for SQLAlchemy
models, thanks to SQLAlchemy's integration with mypy (which we now
properly enable). Yay!
That also means though that many type hints needed to be updated, or
rather, the code using the SQL objects. Especially the difference
between Optional things and existing things has been clarified in a few
places, either by using sensible defaults, or by asserting that the
value is not None. That at least gives us an AssertionError instead of
an AttributError.
|
|
|
|
This does a lot of changes already. What is definitely not working yet
are the tests, as they still try to put the data into the database - but
that should be easy to fix.
The convenience methods Track.{length,uphill,...} were a bit stupid to
fix, as our template code assumed that those attributes can just be
accessed. As a fix, I've introduced a new class that "re-introduces"
those and can lazily load them from the disk in case the cache does not
exist. This works pretty well, but is not too nice - we end up with a
lot of "proxy" properties.
Other than that, I'm positively surprised how well this has worked so
far, the upgrade scripts seem to be doing good and serving the file
straight from the disk seems to work nicely as well. What isn't tested
yet however is "edge cases", in case a data directory goes missing, ...
|
|
|
|
It would be nice to gradually improve the typing situation in Fietsboek.
At least the parts that do not do heavy metaprogramming should have
types. For most of the API, we already have types in the doc strings, so
those could be removed then.
|