copyparty 1.9.26__py3-none-any.whl → 1.9.27__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
copyparty/__version__.py CHANGED
@@ -1,6 +1,6 @@
1
1
  # coding: utf-8
2
2
 
3
- VERSION = (1, 9, 26)
3
+ VERSION = (1, 9, 27)
4
4
  CODENAME = "prometheable"
5
5
  BUILD_DT = (2023, 12, 8)
6
6
 
copyparty/up2k.py CHANGED
@@ -3357,28 +3357,27 @@ class Up2k(object):
3357
3357
  if bos.path.exists(dabs):
3358
3358
  raise Pebkac(400, "mv2: target file exists")
3359
3359
 
3360
- stl = bos.lstat(sabs)
3361
- try:
3362
- st = bos.stat(sabs)
3363
- except:
3364
- st = stl
3360
+ is_link = is_dirlink = False
3361
+ st = stl = bos.lstat(sabs)
3362
+ if stat.S_ISLNK(stl.st_mode):
3363
+ is_link = True
3364
+ try:
3365
+ st = bos.stat(sabs)
3366
+ is_dirlink = stat.S_ISDIR(st.st_mode)
3367
+ except:
3368
+ pass # broken symlink; keep as-is
3365
3369
 
3366
3370
  xbr = svn.flags.get("xbr")
3367
3371
  xar = dvn.flags.get("xar")
3368
3372
  if xbr:
3369
3373
  if not runhook(
3370
- self.log, xbr, sabs, svp, "", uname, st.st_mtime, st.st_size, "", 0, ""
3374
+ self.log, xbr, sabs, svp, "", uname, stl.st_mtime, st.st_size, "", 0, ""
3371
3375
  ):
3372
3376
  t = "move blocked by xbr server config: {}".format(svp)
3373
3377
  self.log(t, 1)
3374
3378
  raise Pebkac(405, t)
3375
3379
 
3376
3380
  is_xvol = svn.realpath != dvn.realpath
3377
- if stat.S_ISLNK(stl.st_mode):
3378
- is_dirlink = stat.S_ISDIR(st.st_mode)
3379
- is_link = True
3380
- else:
3381
- is_link = is_dirlink = False
3382
3381
 
3383
3382
  bos.makedirs(os.path.dirname(dabs))
3384
3383
 
@@ -3405,7 +3404,7 @@ class Up2k(object):
3405
3404
  c2 = self.cur.get(dvn.realpath)
3406
3405
 
3407
3406
  if ftime_ is None:
3408
- ftime = st.st_mtime
3407
+ ftime = stl.st_mtime
3409
3408
  fsize = st.st_size
3410
3409
  else:
3411
3410
  ftime = ftime_
@@ -3447,7 +3446,16 @@ class Up2k(object):
3447
3446
  if is_xvol and has_dupes:
3448
3447
  raise OSError(errno.EXDEV, "src is symlink")
3449
3448
 
3450
- atomic_move(sabs, dabs)
3449
+ if is_link and st != stl:
3450
+ # relink non-broken symlinks to still work after the move,
3451
+ # but only resolve 1st level to maintain relativity
3452
+ dlink = bos.readlink(sabs)
3453
+ dlink = os.path.join(os.path.dirname(sabs), dlink)
3454
+ dlink = bos.path.abspath(dlink)
3455
+ self._symlink(dlink, dabs, dvn.flags, lmod=ftime)
3456
+ bos.unlink(sabs)
3457
+ else:
3458
+ atomic_move(sabs, dabs)
3451
3459
 
3452
3460
  except OSError as ex:
3453
3461
  if ex.errno != errno.EXDEV:
copyparty/web/a/u2c.py CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env python3
2
2
  from __future__ import print_function, unicode_literals
3
3
 
4
- S_VERSION = "1.11"
5
- S_BUILD_DT = "2023-11-11"
4
+ S_VERSION = "1.12"
5
+ S_BUILD_DT = "2023-12-08"
6
6
 
7
7
  """
8
8
  u2c.py: upload to copyparty
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: copyparty
3
- Version: 1.9.26
3
+ Version: 1.9.27
4
4
  Summary: Portable file server with accelerated resumable uploads, deduplication, WebDAV, FTP, zeroconf, media indexer, video thumbnails, audio transcoding, and write-only folders
5
5
  Author-email: ed <copyparty@ocv.me>
6
6
  License: MIT
@@ -1,6 +1,6 @@
1
1
  copyparty/__init__.py,sha256=34xcU8AoRRQscgVSx2gC6DeUyu7ZLmEVlXjttdQgXnI,1752
2
2
  copyparty/__main__.py,sha256=hBzc1ISxFcZH3BpmdOsduCKBdmbPQAhvUUyuqmUvyOU,89329
3
- copyparty/__version__.py,sha256=qiD-kXH0JCj6sjpIka3sdEXU-UI35gEccmje4ubZ8Sg,254
3
+ copyparty/__version__.py,sha256=o3Ox4FVfBf649e-YKX-zqh1ZF5NFlIWL2G164kcrwp0,254
4
4
  copyparty/authsrv.py,sha256=PrMej_hmFWkV8t4Txr2tc8GY7JD_vb7L3alWTuGe8hU,71292
5
5
  copyparty/broker_mp.py,sha256=4mEZC5tiHUazJMgYuwInNo2dxS7jrbzrGb1qs2UBt9k,3948
6
6
  copyparty/broker_mpw.py,sha256=GlSn4PRd_OqqeG39FiXgNvPzXVQW6UCiAcqmBSr2q6g,3200
@@ -30,7 +30,7 @@ copyparty/tcpsrv.py,sha256=vz94zy-eUg5-U1lskN3VAQiTXVr80PPnwJfwzybVcW4,17169
30
30
  copyparty/th_cli.py,sha256=MSp2kpoAPiX1bndMthv6JK2gt3K6CjrloWuJsI_CL94,3869
31
31
  copyparty/th_srv.py,sha256=ClG82DOri2Z8iJeMn1q886uMfxF8ZdJenDWIsiL5gYM,23288
32
32
  copyparty/u2idx.py,sha256=HMEnpmbH-TXDrci4wsKNFvtEW4TxPtVl9hO5MS_EFVs,12799
33
- copyparty/up2k.py,sha256=GVQm81J4dFksMvmWMqTdyyJzE2h4cXzGf7SpnhC1p78,132221
33
+ copyparty/up2k.py,sha256=c9R_fb18xwtLKpP9swicATKp-DmJGCuRYR07aoUAKto,132716
34
34
  copyparty/util.py,sha256=vfCbQv8QUIEQbu65BIuCkuGkqSoUhnCI6xPOFQevKxQ,75998
35
35
  copyparty/bos/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
36
  copyparty/bos/bos.py,sha256=Wb7eWsXJgR5AFlBR9ZOyKrLTwy-Kct9RrGiOu4Jo37Y,1622
@@ -81,7 +81,7 @@ copyparty/web/util.js.gz,sha256=hGmBv9Ibt4PcRKea3HkIG2G0NIFsn_UJf7bKasymR90,1386
81
81
  copyparty/web/w.hash.js.gz,sha256=P9469QknH8-1aKwI_1n1_S4yKvIGOu7bGoty9N3zYMI,1060
82
82
  copyparty/web/a/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
83
83
  copyparty/web/a/partyfuse.py,sha256=MuRkaSuYsdfWfBFMOkbPwDXqSvNTw3sd7QhhlKCDZ8I,32311
84
- copyparty/web/a/u2c.py,sha256=Gv1dWVHJ5wAszGUxdQQ_G_B0tjtEGBOo3kX0LHiju3k,37819
84
+ copyparty/web/a/u2c.py,sha256=3dRtYfNh_kDTHQvHACZ5VotJsEY9SPclYyfMC6hDsdo,37819
85
85
  copyparty/web/a/webdav-cfg.bat,sha256=Y4NoGZlksAIg4cBMb7KdJrpKC6Nx97onaTl6yMjaimk,1449
86
86
  copyparty/web/dd/2.png,sha256=gJ14XFPzaw95L6z92fSq9eMPikSQyu-03P1lgiGe0_I,258
87
87
  copyparty/web/dd/3.png,sha256=4lho8Koz5tV7jJ4ODo6GMTScZfkqsT05yp48EDFIlyg,252
@@ -98,9 +98,9 @@ copyparty/web/deps/prismd.css.gz,sha256=ObUlksQVr-OuYlTz-I4B23TeBg2QDVVGRnWBz8cV
98
98
  copyparty/web/deps/scp.woff2,sha256=w99BDU5i8MukkMEL-iW0YO9H4vFFZSPWxbkH70ytaAg,8612
99
99
  copyparty/web/deps/sha512.ac.js.gz,sha256=lFZaCLumgWxrvEuDr4bqdKHsqjX82AbVAb7_F45Yk88,7033
100
100
  copyparty/web/deps/sha512.hw.js.gz,sha256=km3_b5IoaVwg02Ex6PxnhDLZxKiOMP2cHW35j9CSWFA,8107
101
- copyparty-1.9.26.dist-info/LICENSE,sha256=yyzj1id78vWoLs8zbMRJY7xkkLz0lv-9dfyeIauqdfM,1059
102
- copyparty-1.9.26.dist-info/METADATA,sha256=VivyEaEaBOOdd84epc9Euvu1jKtHvF_LICL1liZPIDM,108940
103
- copyparty-1.9.26.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
104
- copyparty-1.9.26.dist-info/entry_points.txt,sha256=4zw6a3rqASywQomiYLObjjlxybaI65LYYOTJwgKz7b0,128
105
- copyparty-1.9.26.dist-info/top_level.txt,sha256=LnYUPsDyk-8kFgM6YJLG4h820DQekn81cObKSu9g-sI,10
106
- copyparty-1.9.26.dist-info/RECORD,,
101
+ copyparty-1.9.27.dist-info/LICENSE,sha256=yyzj1id78vWoLs8zbMRJY7xkkLz0lv-9dfyeIauqdfM,1059
102
+ copyparty-1.9.27.dist-info/METADATA,sha256=v7eaPBfBOdji7cRJms62zqEQyPuZsk-AhRAbyGdNz-Y,108940
103
+ copyparty-1.9.27.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
104
+ copyparty-1.9.27.dist-info/entry_points.txt,sha256=4zw6a3rqASywQomiYLObjjlxybaI65LYYOTJwgKz7b0,128
105
+ copyparty-1.9.27.dist-info/top_level.txt,sha256=LnYUPsDyk-8kFgM6YJLG4h820DQekn81cObKSu9g-sI,10
106
+ copyparty-1.9.27.dist-info/RECORD,,