On Wed, Mar 17, 2021 at 06:11:32PM +0100, Andrea Bolognani wrote: > On Wed, 2021-03-17 at 18:05 +0100, Erik Skultety wrote: > > On Wed, Mar 17, 2021 at 05:06:33PM +0100, Andrea Bolognani wrote: > > > I don't know how to express that in terms of Python types > > > (List[Dict[str, Any]]?), and I'm concerned by the fact that changing > > > the return type to something obviously wrong like "int" results in > > > zero observable changes. > > > > I'd suggest List[Dict] to be enough in this case since. We can safely assume > > the returned JSON will always be a list of objects, the rest is on the caller. > > I trust your expertise here :) > > > > How are type hints enforced? Do we need to turn that on somehow? > > > > They're not. Python will always remain a dynamically typed language. The whole > > point of type hinting is for static analysis via 'mypy' and for various IDEs > > that can actually make use of those as well during completion which is nice. > > (I'm wondering whether the jedi vim plugin is capable of reading those too) > > I see. It would be nice to run mypy in 'check' mode (assuming that > exists) at syntax-check time, similarly to what we already do with > flake8. That can come later, though. One more thing, what is the Python 3.<minor> acceptance policy for scripts? I mean we expect the scripts to work with 3.X as we declare on libvirt.org, but f-strings for example are 3.6+ and 3.9 essentially makes the typing module deprecated since it integrated most of the hints to standard collections [1], IOW instead of writing "List[Dict[type, type]]" you can now use the standard containers for that as well: "list[dict[type, type]]" without importing anything, so basically the list/dict builtin can serve as both container constructors as well as static type hints. Erik [1] https://www.python.org/dev/peps/pep-0585/