3 ms·
No, my own devs will write insane nested types at the detriment of all developers who end up looking at that code later. Routes = Union[GooglyRoutes, MetaRoute
by nine_zeros 5y ago
No, my own devs will write insane nested types at the detriment of all developers who end up looking at that code later.
Routes = Union[GooglyRoutes, MetaRoutes]
Where,
GooglyRoutes=Union[List[CloudyRoutes], Sequence[AdseyRoutes]]
Where CloudyRoutes = Union[RouteContainers]
And then they'd import these types all over the python repo creating all kinds of import issues. Fml.
- Spivak 5y agoWhat’s the alternative? You have some method like def register_route(route): … That gets called with all the types in that nested union but now the type checker can’t help you if GoogleRoute and Metaroute have different attribute names or that .append isn’t a method on sequences but is on lists. Like that unwieldy nested union already exists in your code, adding the type just documents it and the type checker makes you handle all the cases. Is there something specific about imports that don’t work with type alises?
- nine_zeros 5y agoIn a language with a sensible typing system, I would create class Route: _route = [] # can be GoogleyRoute or MetaRoute And import Route everywhere. That import would help in creating instance objects AND be used as a type. But we can't do this with the spaghetti that python type annotations are.