|
import errno
|
|
from .compat import PY3
|
|
|
|
if PY3:
|
|
_permission_error = PermissionError
|
|
else:
|
|
_permission_error = OSError
|
|
|
|
class TrashPermissionError(_permission_error):
|
|
"""A permission error specific to a trash directory.
|
|
|
|
Raising this error indicates that permissions prevent us efficiently
|
|
trashing a file, although we might still have permission to delete it.
|
|
This is *not* used when permissions prevent removing the file itself:
|
|
that will be raised as a regular PermissionError (OSError on Python 2).
|
|
|
|
Application code that catches this may try to simply delete the file,
|
|
or prompt the user to decide, or (on Freedesktop platforms), move it to
|
|
'home trash' as a fallback. This last option probably involves copying the
|
|
data between partitions, devices, or network drives, so we don't do it as
|
|
a fallback.
|
|
"""
|
|
def __init__(self, filename):
|
|
_permission_error.__init__(self, errno.EACCES, "Permission denied",
|
|
filename)
|