[Python-Dev] [Python-checkins] r84564 - in python/branches/py3k/Lib: ntpath.py test/test_ntpath.py

Brian Curtin brian.curtin at gmail.com
Tue Sep 7 15:20:21 CEST 2010


On Tue, Sep 7, 2010 at 08:12, Nick Coghlan <ncoghlan at gmail.com> wrote:

> On Tue, Sep 7, 2010 at 5:46 AM, brian.curtin <python-checkins at python.org>
> wrote:
> > Modified: python/branches/py3k/Lib/ntpath.py
> >
> ==============================================================================
> > --- python/branches/py3k/Lib/ntpath.py  (original)
> > +++ python/branches/py3k/Lib/ntpath.py  Mon Sep  6 21:46:17 2010
> > @@ -10,7 +10,6 @@
> >  import stat
> >  import genericpath
> >  from genericpath import *
> > -from nt import _getfileinformation
> >
> >  __all__ = ["normcase","isabs","join","splitdrive","split","splitext",
> >            "basename","dirname","commonprefix","getsize","getmtime",
> > @@ -656,4 +655,10 @@
> >
> >  def sameopenfile(f1, f2):
> >     """Test whether two file objects reference the same file"""
> > -    return _getfileinformation(f1) == _getfileinformation(f2)
> > +    try:
> > +        from nt import _getfileinformation
> > +        return _getfileinformation(f1) == _getfileinformation(f2)
> > +    except ImportError:
> > +        # On other operating systems, return True if the file
> descriptors
> > +        # are the same.
> > +        return f1 == f2
>
> Given the potential deadlock problems with imports inside functions,
> I'd prefer to see this written as either:
>
> try:
>  from nt import _getfileinformation
>  def sameopenfile(f1, f2):
>    return _getfileinformation(f1) == _getfileinformation(f2)
> except ImportError:
>  # On other operating systems, return True if the file descriptors
>  # are the same.
>  def sameopenfile(f1, f2):
>    return f1 == f2
> sameopenfile.__doc__ =  "Test whether two file objects reference the same
> file"
>
> or as:
>
> try:
>  from nt import _getfileinformation
> except ImportError:
>  # On other operating systems, file comparison is by file descriptor anyway
>  # so a separate file information object is unnecessary
>  def _getfileinformation(f): return f
>
> def sameopenfile(f1, f2):
>  """Test whether two file objects reference the same file"""
>  return _getfileinformation(f1) == _getfileinformation(f2)
>
> The latter is cleaner code, while the former is likely an unnecessary
> micro-optimisation.
>
> Cheers,
> Nick.


Similar idea(s) would also apply to the function right above that, samefile.
I'll create a new issue for cleaning this up.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20100907/1b2fef49/attachment.html>


More information about the Python-Dev mailing list