Re:Our journey to type checking 4M lines of Python
by joshuamorton on Sunday September 08, 2019 @12:23AM
(#20908586)
Possible, yes. Easy and straightforward, no. Casework and duck-type checks over args and *kwargs are not easy to maintain going forward, especially for a non-expert in Python.
Factory methods are usually better, and I believe what the more modern parts of the standard library have tried to use, but they don't work as well for this specific case.
Re:Our journey to type checking 4M lines of Python
by musingsole on Sunday September 08, 2019 @01:26PM
(#20911904)
> Casework and duck-type checks over args and *kwargs
Once you start doing this in python -- beyond any low complexity usage -- you're better off capturing your arguments in their own object and passing this to the function as a single argument. This object can then enforce whatever you want, and your function can now be a class method.
And then you can build a factory for this object that accepts a few args, maybe some keyword parameters. But, once that gets reasonably complex, just rinse and repeat. It's objects, methods and factories all the way down. And unlimited billable hours.
But certainly, it doesn’t remove the need for good test coverage. Now, if you want to argue for less testing, that is a different pitch.