diff options
author | rfkelly0 <rfkelly0@67cdc799-7952-0410-af00-57a81ceafa0f> | 2009-09-03 04:22:58 +0000 |
---|---|---|
committer | rfkelly0 <rfkelly0@67cdc799-7952-0410-af00-57a81ceafa0f> | 2009-09-03 04:22:58 +0000 |
commit | c3bfd38686dd1ac9a0a44fdb2fa7aa30800e21b5 (patch) | |
tree | 333bb41cb6fdab19c1a79deee8a218e61a3c2dd4 /fs/errors.py | |
parent | 0f0fde5c3dc27972314d274927946c6635e1d66c (diff) | |
download | pyfilesystem-c3bfd38686dd1ac9a0a44fdb2fa7aa30800e21b5.tar.gz |
report correct line numbers in various error decorators
git-svn-id: http://pyfilesystem.googlecode.com/svn/trunk@243 67cdc799-7952-0410-af00-57a81ceafa0f
Diffstat (limited to 'fs/errors.py')
-rw-r--r-- | fs/errors.py | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/fs/errors.py b/fs/errors.py index b96674a..a96b985 100644 --- a/fs/errors.py +++ b/fs/errors.py @@ -159,36 +159,37 @@ def convert_os_errors(func): try: return func(self,*args,**kwds) except (OSError,IOError), e: + (exc_type,exc_inst,tb) = sys.exc_info() path = getattr(e,"filename",None) if path and path[0] == "/" and hasattr(self,"root_path"): path = normpath(path) if isprefix(self.root_path,path): path = path[len(self.root_path):] if not hasattr(e,"errno") or not e.errno: - raise OperationFailedError(opname,details=e) + raise OperationFailedError(opname,details=e),None,tb if e.errno == errno.ENOENT: - raise ResourceNotFoundError(path,opname=opname,details=e) + raise ResourceNotFoundError(path,opname=opname,details=e),None,tb if e.errno == errno.ENOTEMPTY: - raise DirectoryNotEmptyError(path,opname=opname,details=e) + raise DirectoryNotEmptyError(path,opname=opname,details=e),None,tb if e.errno == errno.EEXIST: - raise DestinationExistsError(path,opname=opname,details=e) + raise DestinationExistsError(path,opname=opname,details=e),None,tb if e.errno == 183: # some sort of win32 equivalent to EEXIST - raise DestinationExistsError(path,opname=opname,details=e) + raise DestinationExistsError(path,opname=opname,details=e),None,tb if e.errno == errno.ENOTDIR: - raise ResourceInvalidError(path,opname=opname,details=e) + raise ResourceInvalidError(path,opname=opname,details=e),None,tb if e.errno == errno.EISDIR: - raise ResourceInvalidError(path,opname=opname,details=e) + raise ResourceInvalidError(path,opname=opname,details=e),None,tb if e.errno == errno.EINVAL: - raise ResourceInvalidError(path,opname=opname,details=e) + raise ResourceInvalidError(path,opname=opname,details=e),None,tb if e.errno == errno.EOPNOTSUPP: - raise UnsupportedError(opname,details=e) + raise UnsupportedError(opname,details=e),None,tb if e.errno == errno.ENOSPC: - raise StorageSpaceError(opname,details=e) + raise StorageSpaceError(opname,details=e),None,tb # Sometimes windows gives some random errors... if sys.platform == "win32": if e.errno in (13,): - raise ResourceInvalidError(path,opname=opname,details=e) - raise OperationFailedError(opname,details=e) + raise ResourceInvalidError(path,opname=opname,details=e),None,tb + raise OperationFailedError(opname,details=e),None,tb return wrapper |