mirror of
https://github.com/arsenetar/send2trash.git
synced 2026-03-12 18:51:38 +00:00
Compare commits
5 Commits
1d1b8755a9
...
1.8.1b0
| Author | SHA1 | Date | |
|---|---|---|---|
|
2aa834be94
|
|||
|
5e4517aa53
|
|||
|
62849fba0b
|
|||
|
74f2dff57b
|
|||
|
922fc0342a
|
@@ -1,7 +1,6 @@
|
||||
language: python
|
||||
matrix:
|
||||
include:
|
||||
- python: "3.4"
|
||||
- python: "2.7"
|
||||
arch: ppc64le
|
||||
- python: "3.6"
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
Changes
|
||||
=======
|
||||
|
||||
Version 1.8.1b0 -- 2021/09/20
|
||||
-----------------------------
|
||||
* Add fallback to HOMETRASH when cross device errors happen in plat_other (#26, $41, #63)
|
||||
|
||||
Version 1.8.0 -- 2021/08/08
|
||||
---------------------------
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@ from __future__ import unicode_literals
|
||||
import errno
|
||||
import sys
|
||||
import os
|
||||
import shutil
|
||||
import os.path as op
|
||||
from datetime import datetime
|
||||
import stat
|
||||
@@ -95,7 +96,7 @@ def check_create(dir):
|
||||
os.makedirs(dir, 0o700)
|
||||
|
||||
|
||||
def trash_move(src, dst, topdir=None):
|
||||
def trash_move(src, dst, topdir=None, cross_dev=False):
|
||||
filename = op.basename(src)
|
||||
filespath = op.join(dst, FILES_DIR)
|
||||
infopath = op.join(dst, INFO_DIR)
|
||||
@@ -112,14 +113,18 @@ def trash_move(src, dst, topdir=None):
|
||||
|
||||
with open(op.join(infopath, destname + INFO_SUFFIX), "w") as f:
|
||||
f.write(info_for(src, topdir))
|
||||
os.rename(src, op.join(filespath, destname))
|
||||
destpath = op.join(filespath, destname)
|
||||
if cross_dev:
|
||||
shutil.move(src, destpath)
|
||||
else:
|
||||
os.rename(src, destpath)
|
||||
|
||||
|
||||
def find_mount_point(path):
|
||||
# Even if something's wrong, "/" is a mount point, so the loop will exit.
|
||||
# Use realpath in case it's a symlink
|
||||
path = op.realpath(path) # Required to avoid infinite loop
|
||||
while not op.ismount(path):
|
||||
while not op.ismount(path): # Note ismount() does not always detect mounts
|
||||
path = op.split(path)[0]
|
||||
return path
|
||||
|
||||
@@ -206,4 +211,11 @@ def send2trash(paths):
|
||||
if trash_dev != path_dev:
|
||||
raise OSError("Couldn't find mount point for %s" % path)
|
||||
dest_trash = find_ext_volume_trash(topdir)
|
||||
try:
|
||||
trash_move(path_b, dest_trash, topdir)
|
||||
except OSError as error:
|
||||
# Cross link errors default back to HOMETRASH
|
||||
if error.errno == errno.EXDEV:
|
||||
trash_move(path_b, HOMETRASH_B, XDG_DATA_HOME, cross_dev=True)
|
||||
else:
|
||||
raise
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[metadata]
|
||||
name = Send2Trash
|
||||
version = 1.8.0
|
||||
version = 1.8.1b0
|
||||
url = https://github.com/arsenetar/send2trash
|
||||
project_urls =
|
||||
Bug Reports = https://github.com/arsenetar/send2trash/issues
|
||||
@@ -20,7 +20,6 @@ classifiers =
|
||||
Operating System :: POSIX
|
||||
Programming Language :: Python :: 2.7
|
||||
Programming Language :: Python :: 3
|
||||
Programming Language :: Python :: 3.4
|
||||
Programming Language :: Python :: 3.5
|
||||
Programming Language :: Python :: 3.6
|
||||
Programming Language :: Python :: 3.7
|
||||
@@ -32,6 +31,7 @@ classifiers =
|
||||
[options]
|
||||
packages = send2trash
|
||||
tests_require = pytest
|
||||
python_requires = >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*
|
||||
|
||||
[options.extras_require]
|
||||
win32 = pywin32; sys_platform == "win32"
|
||||
|
||||
@@ -144,7 +144,10 @@ def longdir(tmp_path):
|
||||
dirname = "\\\\?\\" + str(tmp_path)
|
||||
name = "A" * 100
|
||||
yield op.join(dirname, name, name, name)
|
||||
try:
|
||||
shutil.rmtree(dirname, ignore_errors=True)
|
||||
except TypeError:
|
||||
pass
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
||||
Reference in New Issue
Block a user