Improve the data store and update SQLAlchemy usage to 2.0 syntax.
Adds types to the function definition, improve the data store tests and general
code quality.
Potential breaking changes
Removal of add_event
This PR removes the unused function "add_event" from the data store. This could
potentially impact existing usage, but it is not recommended to interact with
the "private" functions directly.
Change of models repr
The models unique string representation (`__repr__`) has been updated to only
include relevant information, to improve readability.
All changes
Improve tests, especially around data store (aed1a5d)
Re-define test utils as pytest fixtures for easier usage.
Generalise pytest fixtures used for the data store and chain the
fixtures so that the initialised data store-fixture depends on the data
store-fixture etc. This will make it easier to do test-related changes
in the objects.
The fixtures can be improved further, there seems to be no clear
consensus if the tests should create/load it's own data or if they
should use the pre-populated fixtures. The current state is working, but
the tests would be easier to read if they relied more on fixtures.
Add docstrings to the data store tests, explaining what the tests do.
Clean up some test code by removing duplicate tests, splitting some
tests that do many things and remove unnecessary assert statements
(e.g., first checking if the object is not None, then if it is a
datetime instance. Only the datetime instance check is needed as it will
then not be None).
Add types, update __repr__ and improve docs for data_store and models (70b4cc9)
Add types for data_store and model, as part of an effort to gradually
roll out types in the code base. Related to 56.
Change import structure for sqlalchemy and only import the top level
package, to make the code easier to read and understand where e.g.,
"Column" comes from.
Improve the docstrings by attempting to have a first line summary and
additional description in follow lines. Types were removed from the
docstring as they are part of the function signature.
The docstring is written in 120 character lines, given that the codebase
is using them, but it would be easier to read in terminal usage if they
were 80 char lines.
Update the __repr__ method of models to print only the relevant files
(and remove a bunch of unnecessary code).
Add mypy config to gradually roll out types (4a560cb)
Add mypy config to gradually roll out types in the code base. The
configured tox environment will not run unless explicitly specified
(with tox -e types).
The mypy config will ignore all files that have not been opted in,
allowing a gradual roll out through the codebase.
Start refactoring SQLAlchemy usage for 1.4/2.0 (b5d157a)
Start refactoring the code in the datastore to follow SQLAlchemy 2.0
syntax.
Something is up with equality checking, hence __repr__ in test
Co-authored-by: Mattias Springare <mspringaregmail.com>