[Python-ideas] Type hinting for path-related functions

Brett Cannon brett at python.org
Fri May 13 19:41:34 EDT 2016

On Fri, 13 May 2016 at 16:14 Koos Zevenhoven <k7hoven at gmail.com> wrote:

> On Sat, May 14, 2016 at 2:05 AM, Brett Cannon <brett at python.org> wrote:
> >
> >
> > On Fri, 13 May 2016 at 15:09 Koos Zevenhoven <k7hoven at gmail.com> wrote:
> >>
> >> On Fri, May 13, 2016 at 11:50 PM, Ethan Furman <ethan at stoneleaf.us>
> wrote:
> >> > On 05/13/2016 01:30 PM, Koos Zevenhoven wrote:
> >> >
> >> >> It turns out it has been almost a month since this, and the PEP draft
> >> >> is already looking good. It seems we might now be ready to discuss
> it.
> >> >> Should we add the generic type FSPath[str]?
> >> >
> >> >
> >> > Guido's post on one of the other threads:
> >> > ----------------------------------------
> >> >> There's no need for typing.PathLike.
> >> >
> >> > So I'm gonna say no.  ;)
> >> >
> >>
> >> Oh, it looks like a read those two emails in the wrong order ;).
> >>
> >> Anyway, I was going to suggest making the abstract base class
> >> subscriptable too like this: PathABC[str] is a str-based path ABC, and
> >> PathABC[bytes] a bytes-based one ;). I don't know if that should be
> >> called a generic type or not, though.
> >
> >
> > The PEP already addresses this and says "no".
> I obviously know the PEP very well, and it doesn't. But I'm probably
> just doing a bad job explaining what I mean right now, and should
> probably go to bed. Sorry.

Ah, I now see what you're proposing: somehow making the ABC a generic like
the generics types in the typing module are (which would be a new feature
for ABCs and why I didn't realize what you were initially asking for; sorry
about that). The answer is still "no". :)

The generics support from the typing module is specific to that module and
not applicable to ABCs themselves. Think of ABCs as helping guarantee that
you implement specific methods and attributes. If your typing needs are met
simply by that level of type information, then ABCs are fine as a type
hint. But if you need something more specific like generics support then
that's when it goes into the typing module (IOW don't think of the types in
the typing module as ABCs or vice-versa but as separate things both dealing
with duck-typing for their own purposes). Since the PEP already ruled out
adding generics support for a special type representing os.PathLike or
path-like objects, that also means it shouldn't be pushed into the ABC as
an end-run around not going into the typing module.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20160513/0e44e24a/attachment.html>

More information about the Python-ideas mailing list