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

Nick Coghlan ncoghlan at gmail.com
Tue Sep 7 15:12:33 CEST 2010


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.

-- Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia



More information about the Python-Dev mailing list