From 2927bbb2d6b8de53a67b861176c44a86a9b1354e Mon Sep 17 00:00:00 2001 From: ed Date: Sat, 14 Sep 2024 22:17:35 +0000 Subject: [PATCH] strip dev-only asserts at build stage --- copyparty/__main__.py | 4 ++-- copyparty/fsutil.py | 6 +++--- copyparty/httpcli.py | 28 ++++++++++++++-------------- copyparty/httpconn.py | 2 +- copyparty/httpsrv.py | 4 ++-- copyparty/svchub.py | 8 ++++---- copyparty/th_srv.py | 2 +- copyparty/u2idx.py | 6 +++--- copyparty/up2k.py | 34 +++++++++++++++++----------------- copyparty/util.py | 22 +++++++++++----------- scripts/strip_hints/a.py | 4 ++++ 11 files changed, 62 insertions(+), 58 deletions(-) diff --git a/copyparty/__main__.py b/copyparty/__main__.py index 62515df2..323691f0 100644 --- a/copyparty/__main__.py +++ b/copyparty/__main__.py @@ -351,7 +351,7 @@ def configure_ssl_ver(al: argparse.Namespace) -> None: # oh man i love openssl # check this out # hold my beer - assert ssl # type: ignore + assert ssl # type: ignore # !rm ptn = re.compile(r"^OP_NO_(TLS|SSL)v") sslver = terse_sslver(al.ssl_ver).split(",") flags = [k for k in ssl.__dict__ if ptn.match(k)] @@ -385,7 +385,7 @@ def configure_ssl_ver(al: argparse.Namespace) -> None: def configure_ssl_ciphers(al: argparse.Namespace) -> None: - assert ssl # type: ignore + assert ssl # type: ignore # !rm ctx = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH) if al.ssl_ver: ctx.options &= ~al.ssl_flags_en diff --git a/copyparty/fsutil.py b/copyparty/fsutil.py index 2d041842..a3099485 100644 --- a/copyparty/fsutil.py +++ b/copyparty/fsutil.py @@ -119,7 +119,7 @@ class Fstab(object): self.srctab = srctab def relabel(self, path: str, nval: str) -> None: - assert self.tab + assert self.tab # !rm self.cache = {} if ANYWIN: path = self._winpath(path) @@ -156,7 +156,7 @@ class Fstab(object): self.log("failed to build tab:\n{}".format(min_ex()), 3) self.build_fallback() - assert self.tab + assert self.tab # !rm ret = self.tab._find(path)[0] if self.trusted or path == ret.vpath: return ret.realpath.split("/")[0] @@ -167,6 +167,6 @@ class Fstab(object): if not self.tab: self.build_fallback() - assert self.tab + assert self.tab # !rm ret = self.tab._find(path)[0] return ret.realpath diff --git a/copyparty/httpcli.py b/copyparty/httpcli.py index 7a347fe4..b9df6da3 100644 --- a/copyparty/httpcli.py +++ b/copyparty/httpcli.py @@ -128,7 +128,7 @@ class HttpCli(object): """ def __init__(self, conn: "HttpConn") -> None: - assert conn.sr + assert conn.sr # !rm self.t0 = time.time() self.conn = conn @@ -1396,7 +1396,7 @@ class HttpCli(object): xroot = mkenod("D:orz") xroot.insert(0, parse_xml(txt)) xprop = xroot.find(r"./{DAV:}propertyupdate/{DAV:}set/{DAV:}prop") - assert xprop + assert xprop # !rm for ze in xprop: ze.clear() @@ -1404,12 +1404,12 @@ class HttpCli(object): xroot = parse_xml(txt) el = xroot.find(r"./{DAV:}response") - assert el + assert el # !rm e2 = mktnod("D:href", quotep(self.args.SRS + self.vpath)) el.insert(0, e2) el = xroot.find(r"./{DAV:}response/{DAV:}propstat") - assert el + assert el # !rm el.insert(0, xprop) ret = '\n'.format(uenc) @@ -1793,7 +1793,7 @@ class HttpCli(object): fn = os.devnull params.update(open_ka) - assert fn + assert fn # !rm if not self.args.nw: if rnd: @@ -2102,7 +2102,7 @@ class HttpCli(object): raise Pebkac(422, 'invalid action "{}"'.format(act)) def handle_zip_post(self) -> bool: - assert self.parser + assert self.parser # !rm try: k = next(x for x in self.uparam if x in ("zip", "tar")) except: @@ -2430,7 +2430,7 @@ class HttpCli(object): return True def handle_chpw(self) -> bool: - assert self.parser + assert self.parser # !rm pwd = self.parser.require("pw", 64) self.parser.drop() @@ -2447,7 +2447,7 @@ class HttpCli(object): return True def handle_login(self) -> bool: - assert self.parser + assert self.parser # !rm pwd = self.parser.require("cppwd", 64) try: uhash = self.parser.require("uhash", 256) @@ -2475,7 +2475,7 @@ class HttpCli(object): return True def handle_logout(self) -> bool: - assert self.parser + assert self.parser # !rm self.parser.drop() self.log("logout " + self.uname) @@ -2529,7 +2529,7 @@ class HttpCli(object): return dur > 0, msg def handle_mkdir(self) -> bool: - assert self.parser + assert self.parser # !rm new_dir = self.parser.require("name", 512) self.parser.drop() @@ -2575,7 +2575,7 @@ class HttpCli(object): return True def handle_new_md(self) -> bool: - assert self.parser + assert self.parser # !rm new_file = self.parser.require("name", 512) self.parser.drop() @@ -2983,7 +2983,7 @@ class HttpCli(object): return True def handle_text_upload(self) -> bool: - assert self.parser + assert self.parser # !rm try: cli_lastmod3 = int(self.parser.require("lastmod", 16)) except: @@ -3068,7 +3068,7 @@ class HttpCli(object): pass wrename(self.log, fp, os.path.join(mdir, ".hist", mfile2), vfs.flags) - assert self.parser.gen + assert self.parser.gen # !rm p_field, _, p_data = next(self.parser.gen) if p_field != "body": raise Pebkac(400, "expected body, got {}".format(p_field)) @@ -3169,7 +3169,7 @@ class HttpCli(object): # some browser append "; length=573" cli_lastmod = cli_lastmod.split(";")[0].strip() cli_dt = parsedate(cli_lastmod) - assert cli_dt + assert cli_dt # !rm cli_ts = calendar.timegm(cli_dt) return file_lastmod, int(file_ts) > int(cli_ts) except Exception as ex: diff --git a/copyparty/httpconn.py b/copyparty/httpconn.py index e5ba148a..a906f582 100644 --- a/copyparty/httpconn.py +++ b/copyparty/httpconn.py @@ -190,7 +190,7 @@ class HttpConn(object): if self.args.ssl_dbg and hasattr(self.s, "shared_ciphers"): ciphers = self.s.shared_ciphers() - assert ciphers + assert ciphers # !rm overlap = [str(y[::-1]) for y in ciphers] self.log("TLS cipher overlap:" + "\n".join(overlap)) for k, v in [ diff --git a/copyparty/httpsrv.py b/copyparty/httpsrv.py index ae49da34..7661e990 100644 --- a/copyparty/httpsrv.py +++ b/copyparty/httpsrv.py @@ -237,7 +237,7 @@ class HttpSrv(object): if self.args.log_htp: self.log(self.name, "workers -= {} = {}".format(n, self.tp_nthr), 6) - assert self.tp_q + assert self.tp_q # !rm for _ in range(n): self.tp_q.put(None) @@ -431,7 +431,7 @@ class HttpSrv(object): ) def thr_poolw(self) -> None: - assert self.tp_q + assert self.tp_q # !rm while True: task = self.tp_q.get() if not task: diff --git a/copyparty/svchub.py b/copyparty/svchub.py index 98409b83..d9e3c8bd 100644 --- a/copyparty/svchub.py +++ b/copyparty/svchub.py @@ -419,8 +419,8 @@ class SvcHub(object): r"insert into kv values ('sver', 1)", ] - assert db # type: ignore - assert cur # type: ignore + assert db # type: ignore # !rm + assert cur # type: ignore # !rm if create: for cmd in sch: cur.execute(cmd) @@ -488,8 +488,8 @@ class SvcHub(object): r"create index sh_t1 on sh(t1)", ] - assert db # type: ignore - assert cur # type: ignore + assert db # type: ignore # !rm + assert cur # type: ignore # !rm if create: dver = 2 modified = True diff --git a/copyparty/th_srv.py b/copyparty/th_srv.py index b36e9763..4121c395 100644 --- a/copyparty/th_srv.py +++ b/copyparty/th_srv.py @@ -479,7 +479,7 @@ class ThumbSrv(object): if c == crops[-1]: raise - assert img # type: ignore + assert img # type: ignore # !rm img.write_to_file(tpath, Q=40) def conv_ffmpeg(self, abspath: str, tpath: str, fmt: str, vn: VFS) -> None: diff --git a/copyparty/u2idx.py b/copyparty/u2idx.py index 8149c248..483e4e6e 100644 --- a/copyparty/u2idx.py +++ b/copyparty/u2idx.py @@ -104,7 +104,7 @@ class U2idx(object): if not HAVE_SQLITE3 or not self.args.shr: return None - assert sqlite3 # type: ignore + assert sqlite3 # type: ignore # !rm db = sqlite3.connect(self.args.shr_db, timeout=2, check_same_thread=False) cur = db.cursor() @@ -120,7 +120,7 @@ class U2idx(object): if not HAVE_SQLITE3 or "e2d" not in vn.flags: return None - assert sqlite3 # type: ignore + assert sqlite3 # type: ignore # !rm ptop = vn.realpath histpath = self.asrv.vfs.histtab.get(ptop) @@ -467,5 +467,5 @@ class U2idx(object): return if identifier == self.active_id: - assert self.active_cur + assert self.active_cur # !rm self.active_cur.connection.interrupt() diff --git a/copyparty/up2k.py b/copyparty/up2k.py index 18f1cafe..a351ee6f 100644 --- a/copyparty/up2k.py +++ b/copyparty/up2k.py @@ -612,7 +612,7 @@ class Up2k(object): return timeout def _check_shares(self) -> float: - assert sqlite3 # type: ignore + assert sqlite3 # type: ignore # !rm now = time.time() timeout = now + 9001 @@ -933,7 +933,7 @@ class Up2k(object): with self.mutex, self.reg_mutex: reg = self.register_vpath(vol.realpath, vol.flags) - assert reg + assert reg # !rm cur, _ = reg with self.mutex: cur.connection.commit() @@ -950,7 +950,7 @@ class Up2k(object): reg = self.register_vpath(vol.realpath, vol.flags) try: - assert reg + assert reg # !rm cur, db_path = reg if bos.path.getsize(db_path + "-wal") < 1024 * 1024 * 5: continue @@ -1185,7 +1185,7 @@ class Up2k(object): with self.reg_mutex: reg = self.register_vpath(top, vol.flags) - assert reg and self.pp + assert reg and self.pp # !rm cur, db_path = reg db = Dbw(cur, 0, time.time()) @@ -1306,7 +1306,7 @@ class Up2k(object): th_cvd = self.args.th_coversd th_cvds = self.args.th_coversd_set - assert self.pp and self.mem_cur + assert self.pp and self.mem_cur # !rm self.pp.msg = "a%d %s" % (self.pp.n, cdir) rd = cdir[len(top) :].strip("/") @@ -1547,7 +1547,7 @@ class Up2k(object): if n: t = "forgetting {} shadowed autoindexed files in [{}] > [{}]" self.log(t.format(n, top, sh_rd)) - assert sh_erd # type: ignore + assert sh_erd # type: ignore # !rm q = "delete from dh where (d = ? or d like ?||'%')" db.c.execute(q, (sh_erd, sh_erd + "/")) @@ -2266,7 +2266,7 @@ class Up2k(object): # mp.pool.ThreadPool and concurrent.futures.ThreadPoolExecutor # both do crazy runahead so lets reinvent another wheel nw = max(1, self.args.mtag_mt) - assert self.mtag + assert self.mtag # !rm if not self.mpool_used: self.mpool_used = True self.log("using {}x {}".format(nw, self.mtag.backend)) @@ -2340,7 +2340,7 @@ class Up2k(object): at: float, ) -> int: """will mutex(main)""" - assert self.mtag + assert self.mtag # !rm try: st = bos.stat(abspath) @@ -2372,7 +2372,7 @@ class Up2k(object): tags: dict[str, Union[str, float]], ) -> int: """mutex(main) me""" - assert self.mtag + assert self.mtag # !rm if not bos.path.isfile(abspath): return 0 @@ -2842,7 +2842,7 @@ class Up2k(object): c2 = cur - assert c2 + assert c2 # !rm c2.connection.commit() cur = jcur @@ -3308,7 +3308,7 @@ class Up2k(object): t = "that chunk is already being written to:\n {}\n {} {}/{}\n {}" raise Pebkac(400, t.format(wark, chash, idx, nh, job["name"])) - assert chash # type: ignore + assert chash # type: ignore # !rm chunksize = up2k_chunksize(job["size"]) coffsets = [] @@ -3532,7 +3532,7 @@ class Up2k(object): cur.connection.commit() except Exception as ex: x = self.register_vpath(ptop, {}) - assert x + assert x # !rm db_ex_chk(self.log, ex, x[1]) raise @@ -3547,7 +3547,7 @@ class Up2k(object): try: r = db.execute(sql, (rd, fn)) except: - assert self.mem_cur + assert self.mem_cur # !rm r = db.execute(sql, s3enc(self.mem_cur, rd, fn)) if r.rowcount: @@ -3585,7 +3585,7 @@ class Up2k(object): try: db.execute(sql, v) except: - assert self.mem_cur + assert self.mem_cur # !rm rd, fn = s3enc(self.mem_cur, rd, fn) v = (wark, int(ts), sz, rd, fn, db_ip, int(at or 0)) db.execute(sql, v) @@ -3633,7 +3633,7 @@ class Up2k(object): try: db.execute(q, (cd, wark[:16], rd, fn)) except: - assert self.mem_cur + assert self.mem_cur # !rm rd, fn = s3enc(self.mem_cur, rd, fn) db.execute(q, (cd, wark[:16], rd, fn)) @@ -4050,7 +4050,7 @@ class Up2k(object): has_dupes = False if w: - assert c1 + assert c1 # !rm if c2 and c2 != c1: self._copy_tags(c1, c2, w) @@ -4188,7 +4188,7 @@ class Up2k(object): try: c = cur.execute(q, (rd, fn)) except: - assert self.mem_cur + assert self.mem_cur # !rm c = cur.execute(q, s3enc(self.mem_cur, rd, fn)) hit = c.fetchone() diff --git a/copyparty/util.py b/copyparty/util.py index 1626b798..92a314ad 100644 --- a/copyparty/util.py +++ b/copyparty/util.py @@ -440,7 +440,7 @@ def py_desc() -> str: def _sqlite_ver() -> str: - assert sqlite3 # type: ignore + assert sqlite3 # type: ignore # !rm try: co = sqlite3.connect(":memory:") cur = co.cursor() @@ -1030,7 +1030,7 @@ class MTHash(object): if self.stop: return nch, "", ofs0, chunk_sz - assert f + assert f # !rm hashobj = hashlib.sha512() while chunk_rem > 0: with self.imutex: @@ -1448,7 +1448,7 @@ def ren_open( with fun(fsenc(fpath), *args, **kwargs) as f: if b64: - assert fdir + assert fdir # !rm fp2 = "fn-trunc.%s.txt" % (b64,) fp2 = os.path.join(fdir, fp2) with open(fsenc(fp2), "wb") as f2: @@ -1713,7 +1713,7 @@ class MultipartParser(object): returns the value of the next field in the multipart body, raises if the field name is not as expected """ - assert self.gen + assert self.gen # !rm p_field, p_fname, p_data = next(self.gen) if p_field != field_name: raise WrongPostKey(field_name, p_field, p_fname, p_data) @@ -1722,7 +1722,7 @@ class MultipartParser(object): def drop(self) -> None: """discards the remaining multipart body""" - assert self.gen + assert self.gen # !rm for _, _, data in self.gen: for _ in data: pass @@ -1815,7 +1815,7 @@ def gen_filekey_dbg( ) -> str: ret = gen_filekey(alg, salt, fspath, fsize, inode) - assert log_ptn + assert log_ptn # !rm if log_ptn.search(fspath): try: import inspect @@ -2401,7 +2401,7 @@ def wunlink(log: "NamedLogger", abspath: str, flags: dict[str, Any]) -> bool: def get_df(abspath: str) -> tuple[Optional[int], Optional[int]]: try: # some fuses misbehave - assert ctypes + assert ctypes # type: ignore # !rm if ANYWIN: bfree = ctypes.c_ulonglong(0) ctypes.windll.kernel32.GetDiskFreeSpaceExW( # type: ignore @@ -2860,7 +2860,7 @@ def getalive(pids: list[int], pgid: int) -> list[int]: alive.append(pid) else: # windows doesn't have pgroups; assume - assert psutil + assert psutil # type: ignore # !rm psutil.Process(pid) alive.append(pid) except: @@ -2878,7 +2878,7 @@ def killtree(root: int) -> None: pgid = 0 if HAVE_PSUTIL: - assert psutil + assert psutil # type: ignore # !rm pids = [root] parent = psutil.Process(root) for child in parent.children(recursive=True): @@ -3291,7 +3291,7 @@ def runhook( at: float, txt: str, ) -> dict[str, Any]: - assert broker or up2k + assert broker or up2k # !rm asrv = (broker or up2k).asrv args = (broker or up2k).args vp = vp.replace("\\", "/") @@ -3485,7 +3485,7 @@ def termsize() -> tuple[int, int]: def hidedir(dp) -> None: if ANYWIN: try: - assert ctypes + assert ctypes # type: ignore # !rm k32 = ctypes.WinDLL("kernel32") attrs = k32.GetFileAttributesW(dp) if attrs >= 0: diff --git a/scripts/strip_hints/a.py b/scripts/strip_hints/a.py index 146fe250..a4d80598 100644 --- a/scripts/strip_hints/a.py +++ b/scripts/strip_hints/a.py @@ -70,6 +70,10 @@ def uh2(fp): continue on = True + + if " # !rm" in ln: + continue + lns.append(ln) cs = "\n".join(lns)