copyparty 1.19.18__tar.gz → 1.19.20__tar.gz

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.
Files changed (142) hide show
  1. {copyparty-1.19.18 → copyparty-1.19.20}/PKG-INFO +4 -2
  2. {copyparty-1.19.18 → copyparty-1.19.20}/README.md +3 -1
  3. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/__version__.py +2 -2
  4. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/authsrv.py +3 -1
  5. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/httpcli.py +9 -0
  6. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/a/partyfuse.py.gz +0 -0
  7. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/a/u2c.py.gz +0 -0
  8. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/a/webdav-cfg.txt.gz +0 -0
  9. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/baguettebox.js.gz +0 -0
  10. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/browser.css.gz +0 -0
  11. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/browser.html +0 -1
  12. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/browser.js.gz +0 -0
  13. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/dbg-audio.js.gz +0 -0
  14. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/md.css.gz +0 -0
  15. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/md.js.gz +0 -0
  16. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/md2.css.gz +0 -0
  17. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/md2.js.gz +0 -0
  18. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/mde.css.gz +0 -0
  19. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/mde.js.gz +0 -0
  20. copyparty-1.19.20/copyparty/web/msg.css.gz +0 -0
  21. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/rups.css.gz +0 -0
  22. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/rups.js.gz +0 -0
  23. copyparty-1.19.20/copyparty/web/shares.css.gz +0 -0
  24. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/shares.html +3 -2
  25. copyparty-1.19.20/copyparty/web/shares.js.gz +0 -0
  26. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/splash.css.gz +0 -0
  27. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/splash.js.gz +0 -0
  28. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/svcs.js.gz +0 -0
  29. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/chi.js.gz +0 -0
  30. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/cze.js.gz +0 -0
  31. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/deu.js.gz +0 -0
  32. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/epo.js.gz +0 -0
  33. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/fin.js.gz +0 -0
  34. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/fra.js.gz +0 -0
  35. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/grc.js.gz +0 -0
  36. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/ita.js.gz +0 -0
  37. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/kor.js.gz +0 -0
  38. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/nld.js.gz +0 -0
  39. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/nno.js.gz +0 -0
  40. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/nor.js.gz +0 -0
  41. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/pol.js.gz +0 -0
  42. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/por.js.gz +0 -0
  43. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/rus.js.gz +0 -0
  44. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/spa.js.gz +0 -0
  45. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/swe.js.gz +0 -0
  46. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/tur.js.gz +0 -0
  47. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/tl/ukr.js.gz +0 -0
  48. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/ui.css.gz +0 -0
  49. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/up2k.js.gz +0 -0
  50. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/util.js.gz +0 -0
  51. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/w.hash.js.gz +0 -0
  52. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty.egg-info/PKG-INFO +4 -2
  53. {copyparty-1.19.18 → copyparty-1.19.20}/pyproject.toml +8 -0
  54. copyparty-1.19.18/copyparty/web/msg.css.gz +0 -0
  55. copyparty-1.19.18/copyparty/web/shares.css.gz +0 -0
  56. copyparty-1.19.18/copyparty/web/shares.js.gz +0 -0
  57. {copyparty-1.19.18 → copyparty-1.19.20}/LICENSE +0 -0
  58. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/__init__.py +0 -0
  59. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/__main__.py +0 -0
  60. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/bos/__init__.py +0 -0
  61. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/bos/bos.py +0 -0
  62. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/bos/path.py +0 -0
  63. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/broker_mp.py +0 -0
  64. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/broker_mpw.py +0 -0
  65. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/broker_thr.py +0 -0
  66. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/broker_util.py +0 -0
  67. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/cert.py +0 -0
  68. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/cfg.py +0 -0
  69. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/dxml.py +0 -0
  70. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/fsutil.py +0 -0
  71. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/ftpd.py +0 -0
  72. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/httpconn.py +0 -0
  73. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/httpsrv.py +0 -0
  74. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/ico.py +0 -0
  75. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/mdns.py +0 -0
  76. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/metrics.py +0 -0
  77. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/mtag.py +0 -0
  78. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/multicast.py +0 -0
  79. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/pwhash.py +0 -0
  80. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/qrkode.py +0 -0
  81. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/res/COPYING.txt +0 -0
  82. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/res/__init__.py +0 -0
  83. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/res/insecure.pem +0 -0
  84. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/smbd.py +0 -0
  85. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/ssdp.py +0 -0
  86. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/star.py +0 -0
  87. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/stolen/__init__.py +0 -0
  88. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/stolen/dnslib/__init__.py +0 -0
  89. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/stolen/dnslib/bimap.py +0 -0
  90. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/stolen/dnslib/bit.py +0 -0
  91. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/stolen/dnslib/buffer.py +0 -0
  92. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/stolen/dnslib/dns.py +0 -0
  93. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/stolen/dnslib/label.py +0 -0
  94. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/stolen/dnslib/lex.py +0 -0
  95. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/stolen/dnslib/ranges.py +0 -0
  96. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/stolen/ifaddr/__init__.py +0 -0
  97. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/stolen/ifaddr/_posix.py +0 -0
  98. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/stolen/ifaddr/_shared.py +0 -0
  99. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/stolen/ifaddr/_win32.py +0 -0
  100. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/stolen/qrcodegen.py +0 -0
  101. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/stolen/surrogateescape.py +0 -0
  102. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/sutil.py +0 -0
  103. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/svchub.py +0 -0
  104. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/szip.py +0 -0
  105. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/tcpsrv.py +0 -0
  106. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/tftpd.py +0 -0
  107. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/th_cli.py +0 -0
  108. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/th_srv.py +0 -0
  109. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/u2idx.py +0 -0
  110. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/up2k.py +0 -0
  111. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/util.py +0 -0
  112. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/a/__init__.py +0 -0
  113. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/browser2.html +0 -0
  114. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/cf.html +0 -0
  115. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/deps/__init__.py +0 -0
  116. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/deps/busy.mp3.gz +0 -0
  117. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/deps/easymde.css.gz +0 -0
  118. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/deps/easymde.js.gz +0 -0
  119. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/deps/fuse.py +0 -0
  120. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/deps/marked.js.gz +0 -0
  121. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/deps/mini-fa.css.gz +0 -0
  122. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/deps/mini-fa.woff +0 -0
  123. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/deps/prism.css.gz +0 -0
  124. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/deps/prism.js.gz +0 -0
  125. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/deps/prismd.css.gz +0 -0
  126. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/deps/scp.woff2 +0 -0
  127. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/deps/sha512.ac.js.gz +0 -0
  128. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/deps/sha512.hw.js.gz +0 -0
  129. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/idp.html +0 -0
  130. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/md.html +0 -0
  131. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/mde.html +0 -0
  132. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/msg.html +0 -0
  133. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/opds.xml +0 -0
  134. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/rups.html +0 -0
  135. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/splash.html +0 -0
  136. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty/web/svcs.html +0 -0
  137. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty.egg-info/SOURCES.txt +0 -0
  138. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty.egg-info/dependency_links.txt +0 -0
  139. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty.egg-info/entry_points.txt +0 -0
  140. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty.egg-info/requires.txt +0 -0
  141. {copyparty-1.19.18 → copyparty-1.19.20}/copyparty.egg-info/top_level.txt +0 -0
  142. {copyparty-1.19.18 → copyparty-1.19.20}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: copyparty
3
- Version: 1.19.18
3
+ Version: 1.19.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
@@ -3047,7 +3047,9 @@ enable sending [zeromq messages](#zeromq) from event-hooks: `pyzmq`
3047
3047
 
3048
3048
  enable [smb](#smb-server) support (**not** recommended): `impacket==0.12.0`
3049
3049
 
3050
- `pyvips` gives higher quality thumbnails than `Pillow` and is 320% faster, using 270% more ram: `sudo apt install libvips42 && python3 -m pip install --user -U pyvips`
3050
+ `pyvips` gives higher quality thumbnails than `Pillow` and is 320% faster, using 270% more ram
3051
+ * to install `pyvips` on Linux: `sudo apt install libvips42 && python3 -m pip install --user -U pyvips`
3052
+ * to install `pyvips` on windows: `pip install --user -U "pyvips[binary]"`
3051
3053
 
3052
3054
  to install FFmpeg on Windows, grab [a recent build](https://www.gyan.dev/ffmpeg/builds/ffmpeg-git-full.7z) -- you need `ffmpeg.exe` and `ffprobe.exe` from inside the `bin` folder; copy them into `C:\Windows\System32` or any other folder that's in your `%PATH%`
3053
3055
 
@@ -2982,7 +2982,9 @@ enable sending [zeromq messages](#zeromq) from event-hooks: `pyzmq`
2982
2982
 
2983
2983
  enable [smb](#smb-server) support (**not** recommended): `impacket==0.12.0`
2984
2984
 
2985
- `pyvips` gives higher quality thumbnails than `Pillow` and is 320% faster, using 270% more ram: `sudo apt install libvips42 && python3 -m pip install --user -U pyvips`
2985
+ `pyvips` gives higher quality thumbnails than `Pillow` and is 320% faster, using 270% more ram
2986
+ * to install `pyvips` on Linux: `sudo apt install libvips42 && python3 -m pip install --user -U pyvips`
2987
+ * to install `pyvips` on windows: `pip install --user -U "pyvips[binary]"`
2986
2988
 
2987
2989
  to install FFmpeg on Windows, grab [a recent build](https://www.gyan.dev/ffmpeg/builds/ffmpeg-git-full.7z) -- you need `ffmpeg.exe` and `ffprobe.exe` from inside the `bin` folder; copy them into `C:\Windows\System32` or any other folder that's in your `%PATH%`
2988
2990
 
@@ -1,8 +1,8 @@
1
1
  # coding: utf-8
2
2
 
3
- VERSION = (1, 19, 18)
3
+ VERSION = (1, 19, 20)
4
4
  CODENAME = "usernames"
5
- BUILD_DT = (2025, 10, 25)
5
+ BUILD_DT = (2025, 11, 2)
6
6
 
7
7
  S_VERSION = ".".join(map(str, VERSION))
8
8
  S_BUILD_DT = "{0:04d}-{1:02d}-{2:02d}".format(*BUILD_DT)
@@ -3040,6 +3040,7 @@ class AuthSrv(object):
3040
3040
  "lifetime": vf.get("lifetime") or 0,
3041
3041
  "unlist": vf.get("unlist") or "",
3042
3042
  "sb_lg": "" if "no_sb_lg" in vf else (vf.get("lg_sbf") or "y"),
3043
+ "sb_md": "" if "no_sb_md" in vf else (vf.get("md_sbf") or "y"),
3043
3044
  }
3044
3045
  if "ufavico_h" in vf:
3045
3046
  vn.js_ls["ufavico"] = vf["ufavico_h"]
@@ -3061,7 +3062,8 @@ class AuthSrv(object):
3061
3062
  "have_emp": int(self.args.emp),
3062
3063
  "md_no_br": int(vf.get("md_no_br") or 0),
3063
3064
  "ext_th": vf.get("ext_th_d") or {},
3064
- "sb_md": "" if "no_sb_md" in vf else (vf.get("md_sbf") or "y"),
3065
+ "sb_lg": vn.js_ls["sb_lg"],
3066
+ "sb_md": vn.js_ls["sb_md"],
3065
3067
  "sba_md": vf.get("md_sba") or "",
3066
3068
  "sba_lg": vf.get("lg_sba") or "",
3067
3069
  "txt_ext": self.args.textfiles.replace(",", " "),
@@ -5990,6 +5990,15 @@ class HttpCli(object):
5990
5990
  if self.uname != self.args.shr_adm:
5991
5991
  rows = [x for x in rows if x[5] == self.uname]
5992
5992
 
5993
+ q = "select vp from sf where k=? limit 99"
5994
+ for r in rows:
5995
+ if not r[4]:
5996
+ r[4] = "---"
5997
+ else:
5998
+ zstl = cur.execute(q, (r[0],)).fetchall()
5999
+ zsl = [html_escape(zst[0]) for zst in zstl]
6000
+ r[4] = "<br />".join(zsl)
6001
+
5993
6002
  html = self.j2s(
5994
6003
  "shares", this=self, shr=self.args.shr, rows=rows, now=int(time.time())
5995
6004
  )
@@ -137,7 +137,6 @@
137
137
  lang = "{{ lang }}",
138
138
  dfavico = "{{ favico }}",
139
139
  have_tags_idx = {{ have_tags_idx }},
140
- sb_lg = "{{ sb_lg }}",
141
140
  logues = {{ logues|tojson if sb_lg else "[]" }},
142
141
  ls0 = {{ ls0|tojson }};
143
142
 
@@ -14,8 +14,9 @@
14
14
  </head>
15
15
 
16
16
  <body>
17
- <div id="wrap">
17
+ <div id="wrap" class="terse">
18
18
  <a href="{{ r }}/?shares">refresh</a>
19
+ <a id="xpnd" href="#">files</a>
19
20
  <a href="{{ r }}/?h">control-panel</a>
20
21
 
21
22
  <span>axs = perms (read,write,move,delet)</span>
@@ -46,7 +47,7 @@
46
47
  <td>{{ "yes" if pw else "--" }}</td>
47
48
  <td><a href="{{ r }}/{{ vp|e }}">/{{ vp|e }}</a></td>
48
49
  <td>{{ pr }}</td>
49
- <td>{{ st }}</td>
50
+ <td><div>{{ st }}</div></td>
50
51
  <td>{{ un|e }}</td>
51
52
  <td>{{ t0 }}</td>
52
53
  <td>{{ t1 }}</td>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: copyparty
3
- Version: 1.19.18
3
+ Version: 1.19.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
@@ -3047,7 +3047,9 @@ enable sending [zeromq messages](#zeromq) from event-hooks: `pyzmq`
3047
3047
 
3048
3048
  enable [smb](#smb-server) support (**not** recommended): `impacket==0.12.0`
3049
3049
 
3050
- `pyvips` gives higher quality thumbnails than `Pillow` and is 320% faster, using 270% more ram: `sudo apt install libvips42 && python3 -m pip install --user -U pyvips`
3050
+ `pyvips` gives higher quality thumbnails than `Pillow` and is 320% faster, using 270% more ram
3051
+ * to install `pyvips` on Linux: `sudo apt install libvips42 && python3 -m pip install --user -U pyvips`
3052
+ * to install `pyvips` on windows: `pip install --user -U "pyvips[binary]"`
3051
3053
 
3052
3054
  to install FFmpeg on Windows, grab [a recent build](https://www.gyan.dev/ffmpeg/builds/ffmpeg-git-full.7z) -- you need `ffmpeg.exe` and `ffprobe.exe` from inside the `bin` folder; copy them into `C:\Windows\System32` or any other folder that's in your `%PATH%`
3053
3055
 
@@ -163,3 +163,11 @@ follow_imports = "silent"
163
163
 
164
164
  [[tool.mypy.overrides]]
165
165
  no_implicit_reexport = false
166
+
167
+ # =====================================================================
168
+
169
+ [tool.pyright]
170
+ reportMissingImports = true
171
+ reportMissingTypeStubs = false
172
+ typeCheckingMode = "on"
173
+ pythonVersion = "3.13.7"
Binary file
File without changes
File without changes