[Python-Dev] Path object design
Mike Orr
sluggoster at gmail.com
Thu Nov 2 04:42:44 CET 2006
On 11/1/06, glyph at divmod.com <glyph at divmod.com> wrote:
> On 01:46 am, sluggoster at gmail.com wrote:
> >On 11/1/06, glyph at divmod.com <glyph at divmod.com> wrote:
>
> >This is ironic coming from one of Python's celebrity geniuses. "We
> >made this class but we don't know how it works." Actually, it's
> >downright alarming coming from someone who knows Twisted inside and
> >out yet still can't make sense of path patform oddities.
>
> Man, it is going to be hard being ironically self-deprecating if people keep
> going around calling me a "celebrity genius". My ego doesn't need any help,
> you know? :)
I respect Twisted in the same way I respect a loaded gun. It's
powerful, but approach with caution.
> If you ever think I'm suggesting breaking something in Python, you're
> misinterpreting me ;). I am as cagey as they come about this. No matter
> what else happens, the behavior of os.path should not really change.
The point is, what *should* a join-like method do in a future improved
path module? os.path.join should not change because too many programs
depend on its current behavior, in ways we can't necessarily predict.
But a new function/method is not bound by these constraints, as long
as the boundary cases are well documented. All the os.path and
file-related os/shutil functions need to be reexamined in this
context. Maybe the existing behavior is best, maybe we'll keep it
even if it's sub-optimal, but we should document why we're making
these choices.
> >The user didn't call normpath, so should we normalize it anyway?
>
> That's really the main point here.
>
> What is a path that hasn't been "normalized"? Is it a path at all, or is it
> some random garbage with slashes (or maybe other things) in it? os.path
> performs correct path algebra on correct inputs, and it's correct (as far as
> one can be correct) on inputs that have weird junk in them.
I'm tempted to say Path("/a/b").join("c", "d") should do the same
thing your .child method does, but allow multiple levels in one step.
But on the other hand, there will always be people with prebuilt
"path/fragments" to join to other fragments, and I'm not sure we
should force them to split the fragment just to rejoin it again.
Maybe we need a .join_unsafe method for this, haha.
--
Mike Orr <sluggoster at gmail.com>
More information about the Python-Dev
mailing list