You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Andrew Senetar 0ef9b3294a
fix(tests): Correct windows tests to run on python <3.6
6 months ago
.github/workflows Create codeql-analysis.yml 1 year ago
send2trash fix(win): Prevent exception on empty list 6 months ago
tests fix(tests): Correct windows tests to run on python <3.6 6 months ago
.gitignore Fix some flake8 errors and cleanup 3 years ago
.travis.yml Remove Python 3.4 1 year ago
CHANGES.rst Update version & changelog for 1.8.1b0 1 year ago
LICENSE Update copyright 6 years ago Include LICENSE in package (#19) 5 years ago
README.rst Change extra requires to filter on platform 2 years ago
pyproject.toml Update to use pyproject.toml & setup.cfg 1 year ago
setup.cfg Update setup.cfg for changes in d37197c, fix #68. 8 months ago
tox.ini Update tox config 1 year ago


Send2Trash -- Send files to trash on all platforms

Send2Trash is a small package that sends files to the Trash (or Recycle Bin) *natively* and on
*all platforms*. On OS X, it uses native ``FSMoveObjectToTrashSync`` Cocoa calls or can use pyobjc
with NSFileManager. On Windows, it uses native ``IFileOperation`` call if on Vista or newer and
pywin32 is installed or falls back to ``SHFileOperation`` calls. On other platforms, if `PyGObject`_
and `GIO`_ are available, it will use this. Otherwise, it will fallback to its own implementation of
the `trash specifications from`_.

``ctypes`` is used to access native libraries, so no compilation is necessary.

Send2Trash supports Python 2.7 and up (Python 3 is supported).

Status: Additional Help Welcome

Additional help is welcome for supporting this package. Specifically help with the OSX and Linux
issues and fixes would be most appreciated.


You can download it with pip:

python -m pip install -U send2trash

To install with pywin32 or pyobjc required specify the extra `nativeLib`:

python -m pip install -U send2trash[nativeLib]

or you can download the source from and install it with::

>>> python install


>>> from send2trash import send2trash
>>> send2trash('some_file')
>>> send2trash(['some_file1', 'some_file2'])

On Freedesktop platforms (Linux, BSD, etc.), you may not be able to efficiently
trash some files. In these cases, an exception ``send2trash.TrashPermissionError``
is raised, so that the application can handle this case. This inherits from
``PermissionError`` (``OSError`` on Python 2). Specifically, this affects
files on a different device to the user's home directory, where the root of the
device does not have a ``.Trash`` directory, and we don't have permission to
create a ``.Trash-$UID`` directory.

For any other problem, ``OSError`` is raised.

.. _PyGObject:
.. _GIO:
.. _trash specifications from