From 7d5fb6a13fed09b4a918469e6a1a0baa6f61dc54 Mon Sep 17 00:00:00 2001 From: Mark Qvist Date: Mon, 11 May 2026 23:31:25 +0200 Subject: [PATCH] Cleanup --- RNS/__init__.py | 166 ++++++++++++++----------------------- docs/Reticulum Manual.epub | Bin 4021135 -> 4021135 bytes docs/Reticulum Manual.pdf | Bin 4929839 -> 4929839 bytes 3 files changed, 62 insertions(+), 104 deletions(-) diff --git a/RNS/__init__.py b/RNS/__init__.py index 91d3a43f..22859b4f 100755 --- a/RNS/__init__.py +++ b/RNS/__init__.py @@ -94,22 +94,14 @@ _always_override_destination = False logging_lock = threading.Lock() def loglevelname(level): - if (level == LOG_CRITICAL): - return "[Critical]" - if (level == LOG_ERROR): - return "[Error] " - if (level == LOG_WARNING): - return "[Warning] " - if (level == LOG_NOTICE): - return "[Notice] " - if (level == LOG_INFO): - return "[Info] " - if (level == LOG_VERBOSE): - return "[Verbose] " - if (level == LOG_DEBUG): - return "[Debug] " - if (level == LOG_EXTREME): - return "[Extra] " + if (level == LOG_CRITICAL): return "[Critical]" + if (level == LOG_ERROR): return "[Error] " + if (level == LOG_WARNING): return "[Warning] " + if (level == LOG_NOTICE): return "[Notice] " + if (level == LOG_INFO): return "[Info] " + if (level == LOG_VERBOSE): return "[Verbose] " + if (level == LOG_DEBUG): return "[Debug] " + if (level == LOG_EXTREME): return "[Extra] " return "Unknown" @@ -133,13 +125,10 @@ def log(msg, level=3, _override_destination = False, pt=False): global _always_override_destination, compact_log_fmt msg = str(msg) if loglevel >= level: - if pt: - logstring = "["+precise_timestamp_str(time.time())+"] "+loglevelname(level)+" "+msg + if pt: logstring = "["+precise_timestamp_str(time.time())+"] "+loglevelname(level)+" "+msg else: - if not compact_log_fmt: - logstring = "["+timestamp_str(time.time())+"] "+loglevelname(level)+" "+msg - else: - logstring = "["+timestamp_str(time.time())+"] "+msg + if not compact_log_fmt: logstring = "["+timestamp_str(time.time())+"] "+loglevelname(level)+" "+msg + else: logstring = "["+timestamp_str(time.time())+"] "+msg with logging_lock: if (logdest == LOG_STDOUT or _always_override_destination or _override_destination): @@ -182,14 +171,11 @@ def trace_exception(e): log(exception_info, LOG_ERROR) def hexrep(data, delimit=True): - try: - iter(data) - except TypeError: - data = [data] + try: iter(data) + except TypeError: data = [data] delimiter = ":" - if not delimit: - delimiter = "" + if not delimit: delimiter = "" hexrep = delimiter.join("{:02x}".format(c) for c in data) return hexrep @@ -212,10 +198,8 @@ def prettysize(num, suffix='B'): for unit in units: if abs(num) < 1000.0: - if unit == "": - return "%.0f %s%s" % (num, unit, suffix) - else: - return "%.2f %s%s" % (num, unit, suffix) + if unit == "": return "%.0f %s%s" % (num, unit, suffix) + else: return "%.2f %s%s" % (num, unit, suffix) num /= 1000.0 return "%.2f%s%s" % (num, last_unit, suffix) @@ -246,8 +230,7 @@ def prettydistance(m, suffix="m"): if unit == "m": divisor = 10 if unit == "c": divisor = 100 - if abs(num) < divisor: - return "%.2f %s%s" % (num, unit, suffix) + if abs(num) < divisor: return "%.2f %s%s" % (num, unit, suffix) num /= divisor return "%.2f %s%s" % (num, last_unit, suffix) @@ -264,10 +247,8 @@ def prettytime(time, verbose=False, compact=False): time %= 3600 minutes = int(time // 60) time %= 60 - if compact: - seconds = int(time) - else: - seconds = round(time, 2) + if compact: seconds = int(time) + else: seconds = round(time, 2) ss = "" if seconds == 1 else "s" sm = "" if minutes == 1 else "s" @@ -296,22 +277,16 @@ def prettytime(time, verbose=False, compact=False): tstr = "" for c in components: i += 1 - if i == 1: - pass - elif i < len(components): - tstr += ", " - elif i == len(components): - tstr += " and " + if i == 1: pass + elif i < len(components): tstr += ", " + elif i == len(components): tstr += " and " tstr += c - if tstr == "": - return "0s" + if tstr == "": return "0s" else: - if not neg: - return tstr - else: - return f"-{tstr}" + if not neg: return tstr + else: return f"-{tstr}" def prettyshorttime(time, verbose=False, compact=False): neg = False @@ -323,10 +298,8 @@ def prettyshorttime(time, verbose=False, compact=False): seconds = int(time // 1e6); time %= 1e6 milliseconds = int(time // 1e3); time %= 1e3 - if compact: - microseconds = int(time) - else: - microseconds = round(time, 2) + if compact: microseconds = int(time) + else: microseconds = round(time, 2) ss = "" if seconds == 1 else "s" sms = "" if milliseconds == 1 else "s" @@ -350,22 +323,16 @@ def prettyshorttime(time, verbose=False, compact=False): tstr = "" for c in components: i += 1 - if i == 1: - pass - elif i < len(components): - tstr += ", " - elif i == len(components): - tstr += " and " + if i == 1: pass + elif i < len(components): tstr += ", " + elif i == len(components): tstr += " and " tstr += c - if tstr == "": - return "0us" + if tstr == "": return "0us" else: - if not neg: - return tstr - else: - return f"-{tstr}" + if not neg: return tstr + else: return f"-{tstr}" def phyparams(): print("Required Physical Layer MTU : "+str(Reticulum.MTU)+" bytes") @@ -376,8 +343,7 @@ def phyparams(): print("Link Public Key Size : "+str(Link.ECPUBSIZE*8)+" bits") print("Link Private Key Size : "+str(Link.KEYSIZE*8)+" bits") -def panic(): - os._exit(255) +def panic(): os._exit(255) exit_called = False def exit(code=0): @@ -398,8 +364,7 @@ class Profiler: @staticmethod def get_profiler(tag=None, super_tag=None): - if tag in Profiler.profilers: - return Profiler.profilers[tag] + if tag in Profiler.profilers: return Profiler.profilers[tag] else: profiler = Profiler(tag, super_tag) Profiler.profilers[tag] = profiler @@ -411,13 +376,14 @@ class Profiler: self.pause_started = None self.tag = tag self.super_tag = super_tag + if self.super_tag in Profiler.profilers: self.super_profiler = Profiler.profilers[self.super_tag] self.pause_super = self.super_profiler.pause self.resume_super = self.super_profiler.resume + else: - def noop(self=None): - pass + def noop(self=None): pass self.super_profiler = None self.pause_super = noop self.resume_super = noop @@ -427,8 +393,7 @@ class Profiler: tag = self.tag super_tag = self.super_tag thread_ident = threading.get_ident() - if not tag in Profiler.tags: - Profiler.tags[tag] = {"threads": {}, "super": super_tag} + if not tag in Profiler.tags: Profiler.tags[tag] = {"threads": {}, "super": super_tag} if not thread_ident in Profiler.tags[tag]["threads"]: Profiler.tags[tag]["threads"][thread_ident] = {"current_start": None, "captures": []} @@ -464,8 +429,7 @@ class Profiler: self.resume_super() @staticmethod - def ran(): - return Profiler._ran + def ran(): return Profiler._ran @staticmethod def results(): @@ -482,41 +446,35 @@ class Profiler: sample_count = len(thread_captures) if sample_count > 1: - thread_results = { - "count": sample_count, - "mean": mean(thread_captures), - "median": median(thread_captures), - "stdev": stdev(thread_captures) - } + thread_results = { "count": sample_count, + "mean": mean(thread_captures), + "median": median(thread_captures), + "stdev": stdev(thread_captures) } + elif sample_count == 1: - thread_results = { - "count": sample_count, - "mean": mean(thread_captures), - "median": median(thread_captures), - "stdev": None - } + thread_results = { "count": sample_count, + "mean": mean(thread_captures), + "median": median(thread_captures), + "stdev": None } tag_captures.extend(thread_captures) sample_count = len(tag_captures) if sample_count > 1: - tag_results = { - "name": tag, - "super": tag_entry["super"], - "count": len(tag_captures), - "mean": mean(tag_captures), - "median": median(tag_captures), - "stdev": stdev(tag_captures) - } + tag_results = { "name": tag, + "super": tag_entry["super"], + "count": len(tag_captures), + "mean": mean(tag_captures), + "median": median(tag_captures), + "stdev": stdev(tag_captures) } + elif sample_count == 1: - tag_results = { - "name": tag, - "super": tag_entry["super"], - "count": len(tag_captures), - "mean": mean(tag_captures), - "median": median(tag_captures), - "stdev": None - } + tag_results = { "name": tag, + "super": tag_entry["super"], + "count": len(tag_captures), + "mean": mean(tag_captures), + "median": median(tag_captures), + "stdev": None } results[tag] = tag_results diff --git a/docs/Reticulum Manual.epub b/docs/Reticulum Manual.epub index d3dd7c4918827bebabef916cebd5e0a6565246bb..1ce587fe6048ca75beac80b57367465bce8f6002 100644 GIT binary patch delta 1958 zcmXxldo+~!AHeY$mtm6Ij0PE(VvKcd+-8`b3CU%0&sw4)LM~(Mil3-yVlcI2U5Z~q z7b3Z|j$1QDVwaiCQtX6Zgpy0r63RsT^{n3?uXEn#^Zh>0InVbz=XtKQtRSxd4O&Rn z46h~#o7S!RMhby&RYM@;5C}wQ93$ZrBf&I|8D3i~{E26+^!wr$Begn{;Eukhq2i<& zx3~qj(NE7WJ7;xAN?;1p-Pc7)$!gT!iX1%@)B}0qf#~+L$t$-77SW16q$i^0#l9Fh z$}Z9ruW4g#zP_(YFpMHUyftx#vua^wCwu{)E;Jq@j2P*W+q-~aM~ zJ2@(QG&y~CxSsY}?P!??mT6E>gt{3KI>L8u`Ixf(Wejxbtr zH1=XZ!{_0L%*B{Ti{EJ*YT2ZTI|6P5&Bq8VlN{umCRHvll7ABucQ;7ApKUIgczE# zD(QI5(u>U^<-J0@59z*SAlKFD*CRpV>Z=E9d*bvjz7RC~6tLco{B`l+ zGZFrz6Mo}($4DI~>$UANU%)++u65vMP>fKcyk|43^9rMIZX{O4?|Pt*$O?6jv$N+y z@4G*8m{l%0HEHV(@*?i$FGaG&S1Ar_x@o#U%HZE&@A0@3+$yW-%;%0#S=d{jUcFEL zGkonS&e@+Hma2pKpik4{j$5$uJc;-^dGyWkT!%lM^)p^)B(Ta(oJBXKbd$r9&G27k zFiGFUfwODRz4s1`n-8Bi)BGOC$z3Df89#it>+3HDCE@HxWuwAM-|^1*!k=77Z#2UB zs(q}E#k(sHhkwOiAqy@`8Kz!$sAOk6p%t}Be+bl$iroLG@;~Y8`|ahkSyg7(!8W92 z(Xq_QN)BPE+!n#YDD&^h(JN?3f+V zczDtT*-Ul4l%P?(Pln!W$f{^LWJqb1$+{HHZ%&n>^wSj#D_SAna6a3=wa4}6h@We@ ztDS5=J#O(!^Cq3abaFpknD2e{15Uq#?H{JsZO^vUcnsFZW^cQw4@^sPTo|Q>%WRs; z*lpeY^D*(SB3AZ@WK;6cS|uMDvxgi>b3PTcTb8~f(R63K2?8stvK2$2hZ!dhZO#pz z{QFsoFttOan};ntD#s861%)Q|)UU0_+Zh$&+K{uedA_O|%u+KOw9pOr`HPTX5W)9F z-RXXx=NlHT!$O=Lw~9+Vp?$Yo=WoIfqi*lJ5+_)bYE4UhWk>z)1>=oPBG(3e%3F@O zJjgGfOCk`%F{~;^=@AQ)g+}WT-G+dLeCH(1RYuW#beBmAMVZD~Bfeioiyb$xwXBD+ z=i6dSqXLvwz?T93~!Lu8=NUStmjfF@B9k{xh zknbS4>Xwm{yWq-4OWa1mWuqkV(H$=1;}YH8aDA$ma8TN+Oq&h~KoXDwqyZEl1IPks zU;&Wi1wau{0+ay^fCW^5T>uVH1=Ij_U^k!v-~mlQ3(y91fIYxoKo`&h2!K97 z1Pp-h07JkCFa}HjQ@{+^2ao`Bzyh!YtN?3(3{U_Yz_!JvgGx|_pF3oLdjH=OReDSP zuRMGLwM*2N+NJ$f_V5mWOK4I}7Mu+H6T9Z%4w1Iz*Am?!b2w_;AsaZ}xkI*a=y_~U zf<2&v@TAfMvV`N+|CiJ~A!~Tz;|WpW$n}IMa0orOFPHJ!zM-Sn_T+-s_8y)WM1wbf q_1eCVl{ZA*nzY1uL&`F6rTIg2`0cvZ9{{bw+k1~f95}oKA=*DO3#u>x delta 1959 zcmXxldo+~!AHeaMF^q9b#%*#-gDAI|7?)|#m{MvOm)&C%8yQl$l-n;8Q)af@Le%<& zm~tr<+MgId_hnFn%$EBvvnC@Uu`XG}?$@(^f4t6lpU?AszUMsO^PK0&Xd;^%0IJXeq`$%4;)ajDvz>6mf37c!_@5|~sq*SZoW zZ>xr%XsFp-ovnIPy?Jiw#R1s_9O;EHrx1=|t#9S*Pvtv^gRPaEf5w(yZkumcwDU`OSHNE@vMg4DQW=7;)9}#eiV~lzU_l&11w$58pn2xE6 zag2)MzHOa7W{ld9jO3%bPfv1BoU#gK{=%i82_bif|Ek3>-XnB z50`1xbj~$4#+9igt6y2tIwH|ymPJo6O&!+Im4<18`UUNHe-TN8aTkBD4aOuaH)qdz zRuCWRnJ3nozbE<5GXmWZ6mnTPeIv=riZP0r87-0Da)-u4vFj%t|9q^IJ36{P zn3K6?D3`UK5Z2|*?inC-dAkH&%5<7}G0QP`X$a!k+|a5|b4NZwocAit8HXKY7BkRA z$!VHZ->rqRdSve~l*%;+Z&dINa3dy_o8H|I2V}&i@KTb&yDS^bub~WI69MZ=*u^7b zA1^B5aT$pgXTydl)W`={{U`bMl*}T!dF`YkJ%~jWyYO6N=7@67ddA(8x) zF*(pgU|F#Z39TP;^P zUw+q?6YbA1>KV89%I2+2m|E)J#8J%yhi@72M`9i+A&LVEGRK221Sk2Xi@)ADF~i9$ zK3t64RY}YH5$i&R;lI@^+!NPUd9eie_X8?!s?)p$$fq>`Ct{w-hTzw`H4& zRL(Z!lpN>XK}T`#K4*Ex`<5iJnb)7xbzbatxh_>9;d-Y2&zaGwmHbm$0smi}!+GZ; zh{99@JjS<7os+j9b2{`YLGX604QZ>KmR@3OoE6+|BTVI!5>!oaqu02~uY0{14#Hb) z%xF%?1GCDF=MIuR0q%rf*%*;oQ?l_fzo-2!cW=5fY16XjV_E1&CY8tx6>OScO^bbv z&$T5HLC^B&A77}YgGu=WjiG<*EY3D1Y71RUkA^$N*BcCU$P`SSbZaBzNGEPxK?|@J z_u!%8AG1??6jT+Q<{Litewm$kscFzGxsadoVAwp#UAy>u(VADct6Dm{RC=!PwA^y6 zoJp*T_hzMpe~N_|=#9EiR+=zqbO}j(mazD#vR$MYm2kU`QAFdoi`nRnYi$l5e^F

Q;ULV{?>YNhLx*+*I4bm`XG(|+B}<& zHJh%F6in~6I24%Xn+i}A2y72QF|-+{w;enW9r#xaRIYfq_CFO$h2u{_vj6w5$mr;J#jL1pTX=fC_*CQ~@Z4-ZpbF*N6)9K~h#wBX*%ENLGyz zQBiwXs}^j5*oCG&%nB=`RqUmp7@^UHAfkedMUAwF{=M|t!w3Hl|HD5qdxJj#34t!! z<`dB5f5 zpg;?2p&oQF|Jwi!Km!9T7-1clzzi0!!g^=~8*BhOG{HvTzyVHhfg3!~3@zYI5&BK4 z4|zfh_4(3k{Q1H6!T0dbejgHK;clV6 zli@}iWQqJj?d)Sous72Zv-z3CIW`=*nY`rH?v{l^b6 zZzd5Pns4{^KgozxbAcBVdq4YUMfWvF2!fBaL{GKx$HPl0WmFfR7aEd6Ljee&5Q?A} zgdhSjlmGz|D23%9g))%A3Mhw_Acs}38Y*B7tc7);fJ#^oRZtB|P{9V+2x`~_HLw{p zpoJ|^3p&ul(%(iP!2}eT!2(v;3O1m@4t1~%9IzdnP!A2j01GZ~g9p5@19pNhCp7G; zo)MFF6V6I^>t&qcU(4;2ac2mZ+w3LnH07a5(rlwlZra0IY!qenQY__SNY<%z{BM$z IC^&W1UuYlLnE(I)