On Fri, Sep 2, 2016, at 18:49, Koos Zevenhoven wrote: > Then again, (b) instead of that being working code, it might be an > error and spam only takes float. No problem, the type checker will > catch that.
There are very few functions that should only take float and not int. > On Fri, Sep 2, 2016 at 9:04 PM, Steven D'Aprano <st...@pearwood.info> > wrote: > > Maybe you think that it's okay because ints and floats are somewhat > > compatible. But suppose I wrote: > > > > if cond: > > x = HTTPServer(*args) > > else: > > x = 1.5 > > It might be clear by now, but no, that's not why I wrote that. That > was just a slightly more "realistic" example than this HTTP & 1.5 one. The other thing is... I'd kind of want it to infer Number in the first case. And if I assign both a list and a generator expression to something, that should be Iterable[whatever] and maybe even whatever gets worked out for "proper iterable and not string or bytes or memoryview". Certainly if you can return HTTPServer() or None it should infer Union[HTTPServer, None], otherwise spelled Optional[HTTPServer]. Maybe what we need is a "protoize"-alike that can run through a source file and produce a stub file with all its inferences, for manual inspection. So if you see something nonsensical like Union[HTTPServer, float] you can think "wait a minute, where's that coming from" and go look at the code. _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com