From c16788d90b8e054f964c2c5d7280c4c53683c870 Mon Sep 17 00:00:00 2001 From: Amber Date: Tue, 30 Jan 2024 20:53:27 +0100 Subject: [PATCH] tree aggregate on find --- src/__pycache__/tree.cpython-39.pyc | Bin 4706 -> 4812 bytes src/__pycache__/tree_find.cpython-39.pyc | Bin 3831 -> 3831 bytes src/__pycache__/tree_repr.cpython-39.pyc | Bin 1099 -> 1291 bytes src/tree.py | 16 +++++++++++----- src/tree_find.py | 1 + src/tree_repr.py | 21 +++++++++++++++++++++ 6 files changed, 33 insertions(+), 5 deletions(-) diff --git a/src/__pycache__/tree.cpython-39.pyc b/src/__pycache__/tree.cpython-39.pyc index cc2e19bd1d99628452fcac86f8fabf0cc6dace04..f091709e0d421b014d6c62d18c9b1699bf9d4d93 100644 GIT binary patch delta 1230 zcmZ8gO^6&t6t1eN?yj!xuIY(k*H(nVbvGGYvvWv@B>q7p1QtYAA-E{Rtkt`j$!_m% zb+0i?l^Y0N0zsuD9-Y2Z zoyWeP75yaP2%d+QzRd4tpNYRb(SoDH&cG_K*vvn%r_qRLJjSmQ;~8K3qsADSKocc3 z8BtBOr?C!(o}~M9j4>(>N$1(`(G^s6vec!NM0g(Y6V-uc7#W{+q;PP#Z z4994JInnX_3`vExe%pmeZmyRD%fhfU2p@q`1s z{{gjG?b{I(mKU%jv)1=E^XCy|SmnmHBn>LLSEya}qZM6_^nUCsM!kPtNXZjM;C)UvOwY;aP`I zqm!tCoHy5sQuU&Z(VWcifVQh1Jk~MA0sqebBQxlk)a2S`)K=`4lCbT$nZgQk?ffW zt^y!nq`m=-Ij#Hww9q64mE0r{AcBJ9iv)-`2MtJM;+R*{l$&&J>9D z(b=-?CV#Z-EX)J2qMV< delta 1123 zcmZ8f&u`pB6n--v+v8v3O@-KO5z#^^G}4mnA*EHRN~Lh9AmY+W5fZ3uHQsc$iP?-@ zpkYiTDsEIlOjVE?(C%M=kT~>&;KrdRIMv5+;ldxlp=#fF2?uP?oApJ_2>P`@1GOXhRj^ zFJm3f$a}Pks#wRY6D(zO-tMR?V|q79Wqw>$O`%Y z-m30)Q4UJgMqLSeCN*b+6Xx?^@bVB%a6`gKNMlFPkTTS%eIJMZeCNJN!@t(O4z%G6 zIB*_sP;wVKfH%rRDl%R~Jycqu#J;--=c9 zT&&!SsD5d_j;{(^u#c-D-Z}FmUfUny#SqClpoW@ELE>E12UrX8NV-@Rkv>+%ht9KD zLB)_UUM`x*U`8g&+9lQAZGseefF$rMuDK)~D4j7ws@&bx+Am!jA;U$uL8|~g9ug-| zKb6k@*tcr&3xd3gawelH!UV_}ncSerphX;mkiv4N;TO_C5*dxiu;EYXOp#Sc7b4RJ zqcUv+HicPqEL(RdvNXwCM{%0tIf@KrazQ8Ur0EK4WXPjqW<%WT+40@%py-}DS#(Eb zwsWdj?!MYZ1HZ$2KQA|PuE{mEVtCra5x;`bDnU^PS$=aTQ-d;7XVEsB>4%9>E$e^X zic98?v`5u>leE^CHW2v%SMeGO@Hq*Ipp2qK?YNn=9+3_6)o4dKq85zqrALfx{WNe#!mv;%H J@#H4HQUKHD5qkgt diff --git a/src/__pycache__/tree_repr.cpython-39.pyc b/src/__pycache__/tree_repr.cpython-39.pyc index c2fe51429b3d7a2178cfc6ab3c29cd4624fcaf76..2dec306f6e701bd6c90494e9a6ddf3ad29d585de 100644 GIT binary patch delta 348 zcmYjM!AiqG5S`hqVVh*zsudNgcu`1u5Crd~f*!awz7{}Blp<~Nv=Cx1tQF5rwqe9^*N79Yqi*W6mugGv bmYRi@J6m=^Nr_5GVG|^}w)3Q&v8YwJ=0+q;RM30BOz? z-V{C{&6UC!%%I6XvBz!V!}W{;lP5A(Gm32HWvXLjl$zYbtjeUxJ=v6{n5T#vXigC? gh>)ColtoQK1jyuIVPWK8Vqs!o1YtHN4i*kJ0Lzpbp8x;= diff --git a/src/tree.py b/src/tree.py index da97e72..a231e92 100644 --- a/src/tree.py +++ b/src/tree.py @@ -76,19 +76,24 @@ class NerdTree(): ## rootnode for definition is always a folder rootnode = tosplit.split('/')[-1] - stat_dir_item = os.stat(startpath) + # stat_dir_item = os.stat(startpath) + # start_dir_item_type is always 'd' + start_dir_item_type, start_dir_object = self.get_path_obj(startpath) + stat_dir_item = start_dir_object.lstat() if path: path.append({ 'name' : rootnode, - 'type' : 'd', + 'type' : start_dir_item_type, 'abs_path' : startpath, + 'size' : stat_dir_item.st_size, }) else: path = [{ 'name' : './', - 'type' : 'd', + 'type' : start_dir_item_type, 'abs_path' : startpath, + 'size' : stat_dir_item.st_size, }] d = { @@ -162,7 +167,7 @@ class NerdTree(): } ## if you want count the current directory as item you must sum 1 ## if you want count the current directory size you must include item['size'] - subtree['subtree_size'] += subtree_compute['subtree_size'] + item['subtree_size'] + subtree['subtree_size'] += subtree_compute['subtree_size'] + item['size'] subtree['subtree_items'] += subtree_compute['subtree_items'] + 1 else: subtree['subtree_size'] += item['size'] @@ -188,7 +193,8 @@ class NerdTree(): nodefound = rootnode.get('found') if nodefound and self.opts['dont_show_children_nodes']: if rootnode.get('subtree_items'): - nerd_tree_txt += ' (%s item(s)/%s %s ▾)' % (rootnode['subtree_items'], rootnode['subtree_size'], 'b') + hnum, unit = _tree_repr.format(rootnode['subtree_size']) + nerd_tree_txt += ' (%s item(s)/%s%s ▾)' % (rootnode['subtree_items'], hnum, unit) # return nerd_tree_txt # else: # nerd_tree_txt += ' (0 - 0 ▾)' diff --git a/src/tree_find.py b/src/tree_find.py index dded9d2..988457a 100644 --- a/src/tree_find.py +++ b/src/tree_find.py @@ -107,6 +107,7 @@ class NerdTreeFind(NerdTree): if not islastpath: children.append(pcopy) else : children.append(node) + # key size is lost in preceding code!!!!!!!!!!!! self.compute_aggregate_recursively(tree_struct) return tree_struct diff --git a/src/tree_repr.py b/src/tree_repr.py index 94877f8..f79be37 100644 --- a/src/tree_repr.py +++ b/src/tree_repr.py @@ -13,6 +13,10 @@ LAST_CHILD_CONNECTOR = '└── ' LEVEL_INDENT = 4 ITEMS_TO_EXCLUDE = ['__pycache__'] +KB = 1024 +MB = 1024*1024 +GB = 1024*1024*1024 + def mount_str_at(source_str, index, mount_str): l = len(mount_str) return source_str[:index] + mount_str + source_str[index+l:] @@ -46,3 +50,20 @@ def produce_treeline(prec_seps, lsep): return tree_line.rstrip() +def format(num, unit=None): + # if num/GB >=1: + # unit = 'GB' + # human_number = round(num/GB, 2) + # elif num/MB >=1: + # unit = 'MB' + # human_number = round(num/MB, 2) + # elif num/KB >=1: + # unit = 'kB' + # human_number = round(num/KB, 2) + # else: + # unit = 'b' + # human_number = num + unit = 'b' + human_number = num + + return human_number, unit