copyparty 1.16.18__py3-none-any.whl → 1.16.20__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/util.py CHANGED
@@ -114,8 +114,14 @@ IP6ALL = "0:0:0:0:0:0:0:0"
114
114
 
115
115
 
116
116
  try:
117
- import ctypes
118
117
  import fcntl
118
+
119
+ HAVE_FCNTL = True
120
+ except:
121
+ HAVE_FCNTL = False
122
+
123
+ try:
124
+ import ctypes
119
125
  import termios
120
126
  except:
121
127
  pass
@@ -225,7 +231,7 @@ SYMTIME = PY36 and os.utime in os.supports_follow_symlinks
225
231
  META_NOBOTS = '<meta name="robots" content="noindex, nofollow">\n'
226
232
 
227
233
  # smart enough to understand javascript while also ignoring rel="nofollow"
228
- BAD_BOTS = r"Barkrowler|bingbot|BLEXBot|Googlebot|GPTBot|PetalBot|SeekportBot|SemrushBot|YandexBot"
234
+ BAD_BOTS = r"Barkrowler|bingbot|BLEXBot|Googlebot|GoogleOther|GPTBot|PetalBot|SeekportBot|SemrushBot|YandexBot"
229
235
 
230
236
  FFMPEG_URL = "https://www.gyan.dev/ffmpeg/builds/ffmpeg-git-full.7z"
231
237
 
@@ -1464,6 +1470,12 @@ def vol_san(vols , txt ) :
1464
1470
  txt = txt.replace(bap.replace(b"\\", b"\\\\"), bvp)
1465
1471
  txt = txt.replace(bhp.replace(b"\\", b"\\\\"), bvph)
1466
1472
 
1473
+ if vol.histpath != vol.dbpath:
1474
+ bdp = vol.dbpath.encode("utf-8")
1475
+ bdph = b"$db(/" + bvp + b")"
1476
+ txt = txt.replace(bdp, bdph)
1477
+ txt = txt.replace(bdp.replace(b"\\", b"\\\\"), bdph)
1478
+
1467
1479
  if txt != txt0:
1468
1480
  txt += b"\r\nNOTE: filepaths sanitized; see serverlog for correct values"
1469
1481
 
@@ -3843,8 +3855,74 @@ def hidedir(dp) :
3843
3855
  pass
3844
3856
 
3845
3857
 
3858
+ _flocks = {}
3859
+
3860
+
3861
+ def _lock_file_noop(ap ) :
3862
+ return True
3863
+
3864
+
3865
+ def _lock_file_ioctl(ap ) :
3866
+ try:
3867
+ fd = _flocks.pop(ap)
3868
+ os.close(fd)
3869
+ except:
3870
+ pass
3871
+
3872
+ fd = os.open(ap, os.O_RDWR | os.O_CREAT, 438)
3873
+ # NOTE: the fcntl.lockf identifier is (pid,node);
3874
+ # the lock will be dropped if os.close(os.open(ap))
3875
+ # is performed anywhere else in this thread
3876
+
3877
+ try:
3878
+ fcntl.lockf(fd, fcntl.LOCK_EX | fcntl.LOCK_NB)
3879
+ _flocks[ap] = fd
3880
+ return True
3881
+ except Exception as ex:
3882
+ eno = getattr(ex, "errno", -1)
3883
+ try:
3884
+ os.close(fd)
3885
+ except:
3886
+ pass
3887
+ if eno in (errno.EAGAIN, errno.EACCES):
3888
+ return False
3889
+ print("WARNING: unexpected errno %d from fcntl.lockf; %r" % (eno, ex))
3890
+ return True
3891
+
3892
+
3893
+ def _lock_file_windows(ap ) :
3894
+ try:
3895
+ import msvcrt
3896
+
3897
+ try:
3898
+ fd = _flocks.pop(ap)
3899
+ os.close(fd)
3900
+ except:
3901
+ pass
3902
+
3903
+ fd = os.open(ap, os.O_RDWR | os.O_CREAT, 438)
3904
+ msvcrt.locking(fd, msvcrt.LK_NBLCK, 1)
3905
+ return True
3906
+ except Exception as ex:
3907
+ eno = getattr(ex, "errno", -1)
3908
+ if eno == errno.EACCES:
3909
+ return False
3910
+ print("WARNING: unexpected errno %d from msvcrt.locking; %r" % (eno, ex))
3911
+ return True
3912
+
3913
+
3914
+ if os.environ.get("PRTY_NO_DB_LOCK"):
3915
+ lock_file = _lock_file_noop
3916
+ elif ANYWIN:
3917
+ lock_file = _lock_file_windows
3918
+ elif HAVE_FCNTL:
3919
+ lock_file = _lock_file_ioctl
3920
+ else:
3921
+ lock_file = _lock_file_noop
3922
+
3923
+
3846
3924
  try:
3847
- if sys.version_info < (3, 10):
3925
+ if sys.version_info < (3, 10) or os.environ.get("PRTY_NO_IMPRESO"):
3848
3926
  # py3.8 doesn't have .files
3849
3927
  # py3.9 has broken .is_file
3850
3928
  raise ImportError()
Binary file
Binary file
Binary file
copyparty/web/splash.html CHANGED
@@ -122,7 +122,7 @@
122
122
  <input type="hidden" id="la" name="act" value="login" />
123
123
  <input type="password" id="lp" name="cppwd" placeholder=" password" />
124
124
  <input type="hidden" name="uhash" id="uhash" value="x" />
125
- <input type="submit" id="ls" value="Login" />
125
+ <input type="submit" id="ls" value="login" />
126
126
  {% if chpw %}
127
127
  <a id="x" href="#">change password</a>
128
128
  {% endif %}
copyparty/web/ui.css.gz CHANGED
Binary file
copyparty/web/up2k.js.gz CHANGED
Binary file
copyparty/web/util.js.gz CHANGED
Binary file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: copyparty
3
- Version: 1.16.18
3
+ Version: 1.16.20
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
@@ -339,6 +339,8 @@ small collection of user feedback
339
339
 
340
340
  `good enough`, `surprisingly correct`, `certified good software`, `just works`, `why`, `wow this is better than nextcloud`
341
341
 
342
+ * UI просто ужасно. Если буду описывать детально не смогу удержаться в рамках приличий
343
+
342
344
 
343
345
  # motivations
344
346
 
@@ -387,7 +389,8 @@ roughly sorted by chance of encounter
387
389
  * `--th-ff-jpg` may fix video thumbnails on some FFmpeg versions (macos, some linux)
388
390
  * `--th-ff-swr` may fix audio thumbnails on some FFmpeg versions
389
391
  * if the `up2k.db` (filesystem index) is on a samba-share or network disk, you'll get unpredictable behavior if the share is disconnected for a bit
390
- * use `--hist` or the `hist` volflag (`-v [...]:c,hist=/tmp/foo`) to place the db on a local disk instead
392
+ * use `--hist` or the `hist` volflag (`-v [...]:c,hist=/tmp/foo`) to place the db and thumbnails on a local disk instead
393
+ * or, if you only want to move the db (and not the thumbnails), then use `--dbpath` or the `dbpath` volflag
391
394
  * all volumes must exist / be available on startup; up2k (mtp especially) gets funky otherwise
392
395
  * probably more, pls let me know
393
396
 
@@ -440,7 +443,8 @@ same order here too
440
443
  * this is an msys2 bug, the regular windows edition of python is fine
441
444
 
442
445
  * VirtualBox: sqlite throws `Disk I/O Error` when running in a VM and the up2k database is in a vboxsf
443
- * use `--hist` or the `hist` volflag (`-v [...]:c,hist=/tmp/foo`) to place the db inside the vm instead
446
+ * use `--hist` or the `hist` volflag (`-v [...]:c,hist=/tmp/foo`) to place the db and thumbnails inside the vm instead
447
+ * or, if you only want to move the db (and not the thumbnails), then use `--dbpath` or the `dbpath` volflag
444
448
  * also happens on mergerfs, so put the db elsewhere
445
449
 
446
450
  * Ubuntu: dragging files from certain folders into firefox or chrome is impossible
@@ -862,6 +866,8 @@ if you are resuming a massive upload and want to skip hashing the files which al
862
866
 
863
867
  if the server is behind a proxy which imposes a request-size limit, you can configure up2k to sneak below the limit with server-option `--u2sz` (the default is 96 MiB to support Cloudflare)
864
868
 
869
+ if you want to replace existing files on the server with new uploads by default, run with `--u2ow 2` (only works if users have the delete-permission, and can still be disabled with `🛡️` in the UI)
870
+
865
871
 
866
872
  ### file-search
867
873
 
@@ -1650,6 +1656,8 @@ copyparty creates a subfolder named `.hist` inside each volume where it stores t
1650
1656
  this can instead be kept in a single place using the `--hist` argument, or the `hist=` volflag, or a mix of both:
1651
1657
  * `--hist ~/.cache/copyparty -v ~/music::r:c,hist=-` sets `~/.cache/copyparty` as the default place to put volume info, but `~/music` gets the regular `.hist` subfolder (`-` restores default behavior)
1652
1658
 
1659
+ by default, the per-volume `up2k.db` sqlite3-database for `-e2d` and `-e2t` is stored next to the thumbnails according to the `--hist` option, but the global-option `--dbpath` and/or volflag `dbpath` can be used to put the database somewhere else
1660
+
1653
1661
  note:
1654
1662
  * putting the hist-folders on an SSD is strongly recommended for performance
1655
1663
  * markdown edits are always stored in a local `.hist` subdirectory
@@ -2185,7 +2193,9 @@ buggy feature? rip it out by setting any of the following environment variables
2185
2193
 
2186
2194
  | env-var | what it does |
2187
2195
  | -------------------- | ------------ |
2196
+ | `PRTY_NO_DB_LOCK` | do not lock session/shares-databases for exclusive access |
2188
2197
  | `PRTY_NO_IFADDR` | disable ip/nic discovery by poking into your OS with ctypes |
2198
+ | `PRTY_NO_IMPRESO` | do not try to load js/css files using `importlib.resources` |
2189
2199
  | `PRTY_NO_IPV6` | disable some ipv6 support (should not be necessary since windows 2000) |
2190
2200
  | `PRTY_NO_LZMA` | disable streaming xz compression of incoming uploads |
2191
2201
  | `PRTY_NO_MP` | disable all use of the python `multiprocessing` module (actual multithreading, cpu-count for parsers/thumbnailers) |
@@ -2503,6 +2513,8 @@ below are some tweaks roughly ordered by usefulness:
2503
2513
  * `--no-hash .` when indexing a network-disk if you don't care about the actual filehashes and only want the names/tags searchable
2504
2514
  * if your volumes are on a network-disk such as NFS / SMB / s3, specifying larger values for `--iobuf` and/or `--s-rd-sz` and/or `--s-wr-sz` may help; try setting all of them to `524288` or `1048576` or `4194304`
2505
2515
  * `--no-htp --hash-mt=0 --mtag-mt=1 --th-mt=1` minimizes the number of threads; can help in some eccentric environments (like the vscode debugger)
2516
+ * when running on AlpineLinux or other musl-based distro, try mimalloc for higher performance (and twice as much RAM usage); `apk add mimalloc2` and run copyparty with env-var `LD_PRELOAD=/usr/lib/libmimalloc-secure.so.2`
2517
+ * note that mimalloc requires special care when combined with prisonparty and/or bubbleparty/bubblewrap; you must give it access to `/proc` and `/sys` otherwise you'll encounter issues with FFmpeg (audio transcoding, thumbnails)
2506
2518
  * `-j0` enables multiprocessing (actual multithreading), can reduce latency to `20+80/numCores` percent and generally improve performance in cpu-intensive workloads, for example:
2507
2519
  * lots of connections (many users or heavy clients)
2508
2520
  * simultaneous downloads and uploads saturating a 20gbps connection
@@ -1,38 +1,38 @@
1
- copyparty/__init__.py,sha256=VR6ZZhB9IxaK5TDXDTBM_OIP5ydkrdbaEnstktLM__s,2649
2
- copyparty/__main__.py,sha256=uViBDvQpkCCi0qjolJD80zDc8loFhhEHjYwhH0PGP-E,118299
3
- copyparty/__version__.py,sha256=78j3OrDBpMZNsMwQSRDHMqr_rVUvNjxpxYHjQjQPJuE,252
4
- copyparty/authsrv.py,sha256=nZ27CC3HxwVbbCLPMEO9v6NZV7pLYP3euwrQ9qwT3gg,111163
1
+ copyparty/__init__.py,sha256=TnFSStmHlwlRIClWW8jSHxZpt3dl_kN6_pEnqBqh3mE,2638
2
+ copyparty/__main__.py,sha256=CpLrZnUB6NZLjUTV5Z5deaR2PkVcmaz5USgv0Ufs4K8,119405
3
+ copyparty/__version__.py,sha256=SA89vIgdFcMeHnlEvEu-dBge3avvPsAzDaUsiBCRFgs,252
4
+ copyparty/authsrv.py,sha256=S4HrUq-C6wpe_IT3KN75yo9GJw9Uzj5y558ooYCQqng,113286
5
5
  copyparty/broker_mp.py,sha256=QdOXXvV2Xn6J0CysEqyY3GZbqxQMyWnTpnba-a5lMc0,4987
6
6
  copyparty/broker_mpw.py,sha256=PpSS4SK3pItlpfD8OwVr3QmJEPKlUgaf2nuMOozixgU,3347
7
7
  copyparty/broker_thr.py,sha256=fjoYtpSscUA7-nMl4r1n2R7UK3J9lrvLS3rUZ-iJzKQ,1721
8
8
  copyparty/broker_util.py,sha256=76mfnFOpX1gUUvtjm8UQI7jpTIaVINX10QonM-B7ggc,1680
9
9
  copyparty/cert.py,sha256=0ZAPeXeMR164vWn9GQU3JDKooYXEq_NOQkDeg543ivg,8009
10
- copyparty/cfg.py,sha256=921wcbj05-dLLM9AWDavqFfcp4-aVRUlFlwir44W_Eo,14106
10
+ copyparty/cfg.py,sha256=EilhOIMLopgvn5j72MaRFS0q78K9Xf0NU0I7EAs3YAQ,14269
11
11
  copyparty/dxml.py,sha256=vu5uZQtwvwoqnFHbULs2Zh_y2DETu0T-ENpMZ1i2CV4,2505
12
12
  copyparty/fsutil.py,sha256=NC_CJC4TDag399vVDH9_uQfdfpTMwRFLNxERSWhlVvs,4594
13
13
  copyparty/ftpd.py,sha256=G7PApVIFeSzRo4-D-9uRb8NxYgz6nFwTEbrOk1ErYCU,17969
14
- copyparty/httpcli.py,sha256=NeHP9wqO998OJ3zKzAMZQ50rMaq6eXBC7M0fvRs3BDc,221105
14
+ copyparty/httpcli.py,sha256=2EEQfjIa2rDwcFslTKPAkPCS14a8Hj7TJj6c-khRIFk,222000
15
15
  copyparty/httpconn.py,sha256=mQSgljh0Q-jyWjF4tQLrHbRKRe9WKl19kGqsGMsJpWo,6880
16
16
  copyparty/httpsrv.py,sha256=pxH_Eh8ElBLvOEDejgpP9Bvk65HNEou-03aYIcgXhrs,18090
17
- copyparty/ico.py,sha256=eWSxEae4wOCfheHl-m-wchYvFRAR_97kJDb4NGaB-Z8,3561
17
+ copyparty/ico.py,sha256=-7QjF_jIxnPo4Vr0oUPksQ_U_Ef0HRsSPm3s71idOz8,3879
18
18
  copyparty/mdns.py,sha256=G73OWWg1copda47LgayCRK7qjVrk6cnUGpMR5ugmi7o,18315
19
19
  copyparty/metrics.py,sha256=1dim0ShnsD5cfspRbeN9Mt14wOIxPRtxCZY2IScikKw,8974
20
20
  copyparty/mtag.py,sha256=7lINRFc1Vrc-ebP2hU3dBHH3BRFOnEmEZ0jzlpYb8Jg,19910
21
21
  copyparty/multicast.py,sha256=Me4XEEJijvvK2lMRwmGU2hsaI5_E9AEpCjIC4b9UefA,12393
22
- copyparty/pwhash.py,sha256=X87RWeay8IhzGVZLDKE5LctF9YVUcYxPAJ1BX6r_9CU,4248
22
+ copyparty/pwhash.py,sha256=zHoz9FHGkFBxoRvSfG1XyjN3ibww_h5GE6_m5yS-fws,4246
23
23
  copyparty/smbd.py,sha256=dixFl2wlWymq_Cycc8a4cVB4gY8RSg2e3tE7Xr-aDa0,14614
24
24
  copyparty/ssdp.py,sha256=R1Z61GZOxBMF2Sk4RTxKWMOemogmcjEWG-CvLihd45k,7023
25
25
  copyparty/star.py,sha256=tV5BbX6AiQ7N4UU8DYtSTckNYeoeey4DBqq4LjfymbY,3818
26
26
  copyparty/sutil.py,sha256=6zEEGl4hRe6bTB83Y_RtnBGxr2JcUa__GdiAMqNJZnY,3208
27
- copyparty/svchub.py,sha256=-4GjPLFytUdALrfaAvsQHm_HKYoQkteTXJFKxrF3Q1Y,41574
27
+ copyparty/svchub.py,sha256=Fn-qmJHtfZ0BgvRDCSPs0uqYg90kGj80a8KyEMLcd_I,46337
28
28
  copyparty/szip.py,sha256=7_RVwHCGk7ON79sAB5HAIUbTEbjDDtn99141aGaI_MA,8596
29
- copyparty/tcpsrv.py,sha256=L8jsmFhs6GdJYA58gnsUM1RDakFzHSQGlDcsaeTq-8w,20472
29
+ copyparty/tcpsrv.py,sha256=F5K4Qr4eBLfhdLT_39yDf6ftrhWuGTrd6DSqqp_6e-Q,20480
30
30
  copyparty/tftpd.py,sha256=HAXNbIM7I3yFng_a4ubLWGQ4trRTineAZsUPTZDWNQs,14001
31
- copyparty/th_cli.py,sha256=PxDAmUvO_8Vm5edXiWtsCft0Fw69QL9rCHf9zLmUNeA,4800
32
- copyparty/th_srv.py,sha256=tHbh_Ve3v8tYclWH2thLs5oFufeXgJi1duUMveKIx9k,30725
33
- copyparty/u2idx.py,sha256=G6MDbD4I_sJSOwaNFZ6XLTQhnEDrB12pVKuKhzQ_leE,13676
34
- copyparty/up2k.py,sha256=RRC58ac9IpK0CyBJIs0Ri1Fk0IsGlQRp1bvB-agDQko,177450
35
- copyparty/util.py,sha256=wjBrdCEBlPhCL3N9Ls4dRKIjYpDHK7W1DzPpLEIvgjQ,101114
31
+ copyparty/th_cli.py,sha256=IEX5tCb0gw9Z2aRIDL9bwdvJ6g5jhWZ8OEAAz16_xN4,5426
32
+ copyparty/th_srv.py,sha256=ibEQL9LSYcwo7YXSaW5hNmH1SZex8Pud7-dsSkBRQ-A,32544
33
+ copyparty/u2idx.py,sha256=4Y5OOPyVkc-pS0z6e3p4StXAMnjHobSOMmMsvNUTD34,13674
34
+ copyparty/up2k.py,sha256=0Fj2yT2XnJ4MhwdEcDRs1T-gsdxVhdIxdaZSjGyGKBA,177682
35
+ copyparty/util.py,sha256=qkPD9LFPgLhpmCic_IBvutS2extujDiRrG75PnLMY90,102987
36
36
  copyparty/bos/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
37
  copyparty/bos/bos.py,sha256=Wb7eWsXJgR5AFlBR9ZOyKrLTwy-Kct9RrGiOu4Jo37Y,1622
38
38
  copyparty/bos/path.py,sha256=yEjCq2ki9CvxA5sCT8pS0keEXwugs0ZeUyUhdBziOCI,777
@@ -55,9 +55,9 @@ copyparty/stolen/ifaddr/_posix.py,sha256=-67NdfGrCktfQPakT2fLbjl2U00QMvyBGkSvrUu
55
55
  copyparty/stolen/ifaddr/_shared.py,sha256=uNC4SdEIgdSLKvuUzsf1aM-H1Xrc_9mpLoOT43YukGs,6206
56
56
  copyparty/stolen/ifaddr/_win32.py,sha256=EE-QyoBgeB7lYQ6z62VjXNaRozaYfCkaJBHGNA8QtZM,4026
57
57
  copyparty/web/baguettebox.js.gz,sha256=r2c_hOZV_RTyl4CqWWX14FDWP8nnDVwGkDl4Sfk0rU4,8239
58
- copyparty/web/browser.css.gz,sha256=_HiFW5vPUusWadoqdY8ZihuWizY9UECAc5nIamBPRi4,11654
58
+ copyparty/web/browser.css.gz,sha256=5n-uSw003hMJB4HZKOcWJQFENoNOEg1Q1bngkqIfL28,11654
59
59
  copyparty/web/browser.html,sha256=auvhLVE_t0aIN0q-nk0zOWFqITgDhroMAAviBNLoFfc,4788
60
- copyparty/web/browser.js.gz,sha256=48fDqIqQKCkrH0VsYVj03sDOx9gEZ-DfiHDaqEUuyr0,92341
60
+ copyparty/web/browser.js.gz,sha256=uJNkyHmyWmjPerphoOsxdpTAx1xodxgOwcX3HrT6G7M,92490
61
61
  copyparty/web/browser2.html,sha256=NRUZ08GH-e2YcGXcoz0UjYg6JIVF42u4IMX4HHwWTmg,1587
62
62
  copyparty/web/cf.html,sha256=lJThtNFNAQT1ClCHHlivAkDGE0LutedwopXD62Z8Nys,589
63
63
  copyparty/web/dbg-audio.js.gz,sha256=Ma-KZtK8LnmiwNvNKFKXMPYl_Nn_3U7GsJ6-DRWC2HE,688
@@ -78,13 +78,13 @@ copyparty/web/shares.css.gz,sha256=SdPlZCBwz9tkPkgEo5pSPDOZSI079njxEfkJ64-iW3c,5
78
78
  copyparty/web/shares.html,sha256=YctvUrKuBYu42kxVylyW2_DEHm7Ik6uHqzfzVZ4N0ac,2545
79
79
  copyparty/web/shares.js.gz,sha256=emeY2-wjkh8x1JgaW6ny5fcC7XpZzZzfE1f-sEyntQ4,940
80
80
  copyparty/web/splash.css.gz,sha256=S8_A7JJl71xACRBYGzafeaD82OacW6Fa7oKPiNyrhAs,1087
81
- copyparty/web/splash.html,sha256=QEnTH9QZXFmAuyVtgqOuuHKBtIdi7uclpRqe0ZMewj4,6249
81
+ copyparty/web/splash.html,sha256=ouFB1P9g0K-S3LZQtOLfNz3GLXIRjyETkxo9aJZhiYk,6249
82
82
  copyparty/web/splash.js.gz,sha256=4VqNznN10-bT33IJm3VWzBEJ1s08XZyxFB1TYPUkuAo,2739
83
83
  copyparty/web/svcs.html,sha256=dnE1fG15zOpq7u0GYt8ij6BUv_LTwsiipFeneVYlMsM,14140
84
84
  copyparty/web/svcs.js.gz,sha256=lMXEP9W-VlXyANlva4q0ASSxvvHYlE2CrmxGgZXZop0,713
85
- copyparty/web/ui.css.gz,sha256=0sHIwGsL3_xH8Uu6N0Ag3bKBTjf-e_yfFbKynEZXAnk,2800
86
- copyparty/web/up2k.js.gz,sha256=VQVWBXK2gEz1b8if_ujXHNHnfBO7cdrKoSjqX397VUI,24519
87
- copyparty/web/util.js.gz,sha256=rD9iLfVLKRhxC8hmakal-s18xN_rs6GuOqyRPii6HQ8,15110
85
+ copyparty/web/ui.css.gz,sha256=iDjrmq32aDN6l2S5AjCQdKjD6bxmzP6ji2WjM1FjKiU,2819
86
+ copyparty/web/up2k.js.gz,sha256=7AKmoJOtFh9tx3Ha7w2F-z69-XZo_LzyR3ilWnBO_D8,24524
87
+ copyparty/web/util.js.gz,sha256=VTLY_F51Dwcz2-WANt9LVPYHCH0dEA2in9ISW8w25ss,15213
88
88
  copyparty/web/w.hash.js.gz,sha256=JhJagnqIkcKng_hs6otEgzcuQE7keToG_r5dd2o3EfU,1108
89
89
  copyparty/web/a/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
90
90
  copyparty/web/a/partyfuse.py,sha256=9p5Hpg_IBiSimv7j9kmPhCGpy-FLXSRUOYnLjJ5JifU,28049
@@ -100,7 +100,7 @@ copyparty/web/deps/busy.mp3.gz,sha256=EVphk1_HYyRKJmtpeK99vbAstF7ub1f9ndu020H8PQ
100
100
  copyparty/web/deps/easymde.css.gz,sha256=vWxfueI64rPikuqFj69wJBtGisqf93AheQtOZqgUI_c,3041
101
101
  copyparty/web/deps/easymde.js.gz,sha256=rHBs4XWQe2bmv7ZzDIk43oxnTwrwpq5laYHhV5sKQQo,77014
102
102
  copyparty/web/deps/fuse.py,sha256=6j4Zy3VpQg629pwwIW77v2LJ1hy-qlyrxwhXfKl9B7I,33426
103
- copyparty/web/deps/marked.js.gz,sha256=M6FwmQujGDX33fpo32JZRbxqtSdPzmh7WcaHK6SpZlc,22650
103
+ copyparty/web/deps/marked.js.gz,sha256=6GrdpSikQ-tt9GrcAl7wA7mp_Il_2T2ZvBeACVX1j1k,22665
104
104
  copyparty/web/deps/mini-fa.css.gz,sha256=CTPrNaH8OTVmxajrGP88E2MkjadY9_81TBVnd9sw9Y8,572
105
105
  copyparty/web/deps/mini-fa.woff,sha256=L9DNncV2TIyvsrspMbJouvnnt7F068Hbn7YZYvN76AU,2784
106
106
  copyparty/web/deps/prism.css.gz,sha256=Z_A6rJ3MN5KWnjvXaV787aTW_5DT-xjFd0YZ7_W-Krk,1468
@@ -109,9 +109,9 @@ copyparty/web/deps/prismd.css.gz,sha256=ObUlksQVr-OuYlTz-I4B23TeBg2QDVVGRnWBz8cV
109
109
  copyparty/web/deps/scp.woff2,sha256=w99BDU5i8MukkMEL-iW0YO9H4vFFZSPWxbkH70ytaAg,8612
110
110
  copyparty/web/deps/sha512.ac.js.gz,sha256=lFZaCLumgWxrvEuDr4bqdKHsqjX82AbVAb7_F45Yk88,7033
111
111
  copyparty/web/deps/sha512.hw.js.gz,sha256=UAed2_ocklZCnIzcSYz2h4P1ycztlCLj-ewsRTud2lU,7939
112
- copyparty-1.16.18.dist-info/licenses/LICENSE,sha256=gOr4h33pCsBEg9uIy9AYmb7qlocL4V9t2uPJS5wllr0,1072
113
- copyparty-1.16.18.dist-info/METADATA,sha256=VyOufoEysGMjSNtqLmv-7SFthPGqw-tk_G0Vjt2aBUs,158674
114
- copyparty-1.16.18.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
115
- copyparty-1.16.18.dist-info/entry_points.txt,sha256=4zw6a3rqASywQomiYLObjjlxybaI65LYYOTJwgKz7b0,128
116
- copyparty-1.16.18.dist-info/top_level.txt,sha256=LnYUPsDyk-8kFgM6YJLG4h820DQekn81cObKSu9g-sI,10
117
- copyparty-1.16.18.dist-info/RECORD,,
112
+ copyparty-1.16.20.dist-info/licenses/LICENSE,sha256=gOr4h33pCsBEg9uIy9AYmb7qlocL4V9t2uPJS5wllr0,1072
113
+ copyparty-1.16.20.dist-info/METADATA,sha256=IfzJvVt-XFF8RyYEReXcNYcWJPhwFDD2k4R9S_Ut2Ck,160161
114
+ copyparty-1.16.20.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
115
+ copyparty-1.16.20.dist-info/entry_points.txt,sha256=4zw6a3rqASywQomiYLObjjlxybaI65LYYOTJwgKz7b0,128
116
+ copyparty-1.16.20.dist-info/top_level.txt,sha256=LnYUPsDyk-8kFgM6YJLG4h820DQekn81cObKSu9g-sI,10
117
+ copyparty-1.16.20.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (77.0.3)
2
+ Generator: setuptools (78.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5