From 7cfcc1af1d993ee84347d0963bbf3d6d58caad01 Mon Sep 17 00:00:00 2001 From: Christopher Haster Date: Sat, 9 Nov 2024 12:31:16 -0600 Subject: [PATCH] scripts: Renamed summary.py -> csv.py This seems like a more fitting name now that this script has evolved into more of a general purpose high-level CSV tool. Unfortunately this does conflict with the standard csv module in Python, breaking every script that imports csv (which is most of them). Fortunately, Python is flexible enough to let us remove the current directory before imports with a bit of an ugly hack: # prevent local imports __import__('sys').path.pop(0) These scripts are intended to be standalone anyways, so this is probably a good pattern to adopt. --- Makefile | 56 +++++++++++++++++----------------- scripts/amor.py | 3 ++ scripts/avg.py | 3 ++ scripts/bench.py | 3 ++ scripts/changeprefix.py | 3 ++ scripts/code.py | 3 ++ scripts/cov.py | 3 ++ scripts/crc32c.py | 3 ++ scripts/{summary.py => csv.py} | 11 ++++--- scripts/data.py | 3 ++ scripts/dbgblock.py | 3 ++ scripts/dbgbmap.py | 3 ++ scripts/dbgbtree.py | 3 ++ scripts/dbgcat.py | 3 ++ scripts/dbgerr.py | 3 ++ scripts/dbglfs.py | 3 ++ scripts/dbgmtree.py | 3 ++ scripts/dbgrbyd.py | 3 ++ scripts/dbgtag.py | 3 ++ scripts/parity.py | 3 ++ scripts/perf.py | 3 ++ scripts/perfbd.py | 3 ++ scripts/plot.py | 3 ++ scripts/plotmpl.py | 3 ++ scripts/prettyasserts.py | 3 ++ scripts/readblock.py | 3 ++ scripts/stack.py | 3 ++ scripts/structs.py | 3 ++ scripts/tailpipe.py | 3 ++ scripts/teepipe.py | 3 ++ scripts/test.py | 3 ++ scripts/tracebd.py | 3 ++ scripts/watch.py | 3 ++ 33 files changed, 128 insertions(+), 32 deletions(-) rename scripts/{summary.py => csv.py} (99%) diff --git a/Makefile b/Makefile index a9e3b53b..da7864a7 100644 --- a/Makefile +++ b/Makefile @@ -250,10 +250,10 @@ stack-diff: $(CI) funcs: SUMMARYFLAGS+=-S funcs: SHELL=/bin/bash funcs: $(BUILDDIR)/lfs.code.csv $(BUILDDIR)/lfs.stack.csv - $(strip ./scripts/summary.py \ - <(./scripts/summary.py $(BUILDDIR)/lfs.code.csv \ + $(strip ./scripts/csv.py \ + <(./scripts/csv.py $(BUILDDIR)/lfs.code.csv \ -fcode=size -q $(SUMMARYFLAGS) -o-) \ - <(./scripts/summary.py $(BUILDDIR)/lfs.stack.csv \ + <(./scripts/csv.py $(BUILDDIR)/lfs.stack.csv \ -fstack=limit -q $(SUMMARYFLAGS) -o-) \ -bfunction -fcode -fstack \ --max=stack \ @@ -263,19 +263,19 @@ funcs: $(BUILDDIR)/lfs.code.csv $(BUILDDIR)/lfs.stack.csv .PHONY: funcs-diff funcs-diff: SHELL=/bin/bash funcs-diff: $(OBJ) $(CI) - $(strip ./scripts/summary.py \ - <(./scripts/summary.py \ + $(strip ./scripts/csv.py \ + <(./scripts/csv.py \ <(./scripts/code.py $(OBJ) -q $(CODEFLAGS) -o-) \ -fcode=size -q $(SUMMARYFLAGS) -o-) \ - <(./scripts/summary.py \ + <(./scripts/csv.py \ <(./scripts/stack.py $(CI) -q $(STACKFLAGS) -o-) \ -fstack=limit -q $(SUMMARYFLAGS) -o-) \ -bfunction -fcode -fstack \ --max=stack \ - $(SUMMARYFLAGS) -d <(./scripts/summary.py \ - <(./scripts/summary.py $(BUILDDIR)/lfs.code.csv \ + $(SUMMARYFLAGS) -d <(./scripts/csv.py \ + <(./scripts/csv.py $(BUILDDIR)/lfs.code.csv \ -fcode=size -q $(SUMMARYFLAGS) -o-) \ - <(./scripts/summary.py $(BUILDDIR)/lfs.stack.csv \ + <(./scripts/csv.py $(BUILDDIR)/lfs.stack.csv \ -fstack=limit -q $(SUMMARYFLAGS) -o-) \ -fcode -fstack \ -q $(SUMMARYFLAGS) -o-)) @@ -344,14 +344,14 @@ summary sizes: \ $(BUILDDIR)/lfs.data.csv \ $(BUILDDIR)/lfs.stack.csv \ $(BUILDDIR)/lfs.structs.csv - $(strip ./scripts/summary.py \ - <(./scripts/summary.py $(BUILDDIR)/lfs.code.csv \ + $(strip ./scripts/csv.py \ + <(./scripts/csv.py $(BUILDDIR)/lfs.code.csv \ -fcode=size -q $(SUMMARYFLAGS) -o-) \ - <(./scripts/summary.py $(BUILDDIR)/lfs.data.csv \ + <(./scripts/csv.py $(BUILDDIR)/lfs.data.csv \ -fdata=size -q $(SUMMARYFLAGS) -o-) \ - <(./scripts/summary.py $(BUILDDIR)/lfs.stack.csv \ + <(./scripts/csv.py $(BUILDDIR)/lfs.stack.csv \ -fstack=limit -q $(SUMMARYFLAGS) -o-) \ - <(./scripts/summary.py $(BUILDDIR)/lfs.structs.csv \ + <(./scripts/csv.py $(BUILDDIR)/lfs.structs.csv \ -fstructs=size -q $(SUMMARYFLAGS) -o-) \ -bfunction -fcode -fdata -fstack -fstructs \ --max=stack \ @@ -362,29 +362,29 @@ summary sizes: \ .PHONY: summary-diff sizes-diff summary-diff sizes-diff: SHELL=/bin/bash summary-diff sizes-diff: $(OBJ) $(CI) - $(strip ./scripts/summary.py \ - <(./scripts/summary.py \ + $(strip ./scripts/csv.py \ + <(./scripts/csv.py \ <(./scripts/code.py $(OBJ) -q $(CODEFLAGS) -o-) \ -fcode=size -q $(SUMMARYFLAGS) -o-) \ - <(./scripts/summary.py \ + <(./scripts/csv.py \ <(./scripts/data.py $(OBJ) -q $(DATAFLAGS) -o-) \ -fdata=size -q $(SUMMARYFLAGS) -o-) \ - <(./scripts/summary.py \ + <(./scripts/csv.py \ <(./scripts/stack.py $(CI) -q $(STACKFLAGS) -o-) \ -fstack=limit -q $(SUMMARYFLAGS) -o-) \ - <(./scripts/summary.py \ + <(./scripts/csv.py \ <(./scripts/structs.py $(OBJ) -q $(STRUCTSFLAGS) -o-) \ -fstructs=size -q $(SUMMARYFLAGS) -o-) \ -bfunction -fcode -fdata -fstack -fstructs \ --max=stack \ - -Y -p $(SUMMARYFLAGS) -d <(./scripts/summary.py \ - <(./scripts/summary.py $(BUILDDIR)/lfs.code.csv \ + -Y -p $(SUMMARYFLAGS) -d <(./scripts/csv.py \ + <(./scripts/csv.py $(BUILDDIR)/lfs.code.csv \ -fcode=size -q $(SUMMARYFLAGS) -o-) \ - <(./scripts/summary.py $(BUILDDIR)/lfs.data.csv \ + <(./scripts/csv.py $(BUILDDIR)/lfs.data.csv \ -fdata=size -q $(SUMMARYFLAGS) -o-) \ - <(./scripts/summary.py $(BUILDDIR)/lfs.stack.csv \ + <(./scripts/csv.py $(BUILDDIR)/lfs.stack.csv \ -fstack=limit -q $(SUMMARYFLAGS) -o-) \ - <(./scripts/summary.py $(BUILDDIR)/lfs.structs.csv \ + <(./scripts/csv.py $(BUILDDIR)/lfs.structs.csv \ -fstructs=size -q $(SUMMARYFLAGS) -o-) \ -fcode -fdata -fstack -fstructs \ -q $(SUMMARYFLAGS) -o-) \ @@ -420,14 +420,14 @@ test-list list-tests: test-runner .PHONY: testmarks testmarks: SUMMARYFLAGS+=-spassed -Stime testmarks: $(TEST_CSV) $(BUILDDIR)/lfs.test.csv - $(strip ./scripts/summary.py $(TEST_CSV) \ + $(strip ./scripts/csv.py $(TEST_CSV) \ -bsuite -fpassed -ftime \ $(SUMMARYFLAGS)) ## Compare test results against a previous run .PHONY: testmarks-diff testmarks-diff: $(TEST_CSV) - $(strip ./scripts/summary.py $^ \ + $(strip ./scripts/csv.py $^ \ -bsuite -fpassed -ftime \ $(SUMMARYFLAGS) -d $(BUILDDIR)/lfs.test.csv) @@ -461,14 +461,14 @@ bench-list list-benches: bench-runner .PHONY: benchmarks benchmarks: SUMMARYFLAGS+=-Serased -Sproged -Sreaded benchmarks: $(BENCH_CSV) $(BUILDDIR)/lfs.bench.csv - $(strip ./scripts/summary.py $(BENCH_CSV) \ + $(strip ./scripts/csv.py $(BENCH_CSV) \ -bsuite -freaded -fproged -ferased \ $(SUMMARYFLAGS)) ## Compare bench results against a previous run .PHONY: benchmarks-diff benchmarks-diff: $(BENCH_CSV) - $(strip ./scripts/summary.py $^ \ + $(strip ./scripts/csv.py $^ \ -bsuite -freaded -fproged -ferased \ $(SUMMARYFLAGS) -d $(BUILDDIR)/lfs.bench.csv) diff --git a/scripts/amor.py b/scripts/amor.py index 0088c14c..613e1268 100755 --- a/scripts/amor.py +++ b/scripts/amor.py @@ -3,6 +3,9 @@ # Amortize benchmark measurements # +# prevent local imports +__import__('sys').path.pop(0) + import collections as co import csv import itertools as it diff --git a/scripts/avg.py b/scripts/avg.py index f6e01c1b..c1be9c1e 100755 --- a/scripts/avg.py +++ b/scripts/avg.py @@ -3,6 +3,9 @@ # Compute averages/etc of benchmark measurements # +# prevent local imports +__import__('sys').path.pop(0) + import collections as co import csv import itertools as it diff --git a/scripts/bench.py b/scripts/bench.py index 63132442..dd8d0ae0 100755 --- a/scripts/bench.py +++ b/scripts/bench.py @@ -9,6 +9,9 @@ # SPDX-License-Identifier: BSD-3-Clause # +# prevent local imports +__import__('sys').path.pop(0) + import collections as co import csv import errno diff --git a/scripts/changeprefix.py b/scripts/changeprefix.py index d20a7a62..e2e4bfe9 100755 --- a/scripts/changeprefix.py +++ b/scripts/changeprefix.py @@ -11,6 +11,9 @@ # SPDX-License-Identifier: BSD-3-Clause # +# prevent local imports +__import__('sys').path.pop(0) + import glob import itertools import os diff --git a/scripts/code.py b/scripts/code.py index 9e2dde07..bb91e87a 100755 --- a/scripts/code.py +++ b/scripts/code.py @@ -12,6 +12,9 @@ # SPDX-License-Identifier: BSD-3-Clause # +# prevent local imports +__import__('sys').path.pop(0) + import collections as co import csv import difflib diff --git a/scripts/cov.py b/scripts/cov.py index dbe369d7..9344b420 100755 --- a/scripts/cov.py +++ b/scripts/cov.py @@ -12,6 +12,9 @@ # SPDX-License-Identifier: BSD-3-Clause # +# prevent local imports +__import__('sys').path.pop(0) + import collections as co import csv import itertools as it diff --git a/scripts/crc32c.py b/scripts/crc32c.py index 3b99227e..f4b47233 100755 --- a/scripts/crc32c.py +++ b/scripts/crc32c.py @@ -1,5 +1,8 @@ #!/usr/bin/env python3 +# prevent local imports +__import__('sys').path.pop(0) + import io import os import struct diff --git a/scripts/summary.py b/scripts/csv.py similarity index 99% rename from scripts/summary.py rename to scripts/csv.py index cde90116..9260dabc 100755 --- a/scripts/summary.py +++ b/scripts/csv.py @@ -1,17 +1,20 @@ #!/usr/bin/env python3 # -# Script to summarize the outputs of other scripts. Operates on CSV files. +# Script to manipulate CSV files. # # Example: # ./scripts/code.py lfs.o lfs_util.o -q -o lfs.code.csv # ./scripts/data.py lfs.o lfs_util.o -q -o lfs.data.csv -# ./scripts/summary.py lfs.code.csv lfs.data.csv -q -o lfs.csv -# ./scripts/summary.py -Y lfs.csv -f code=code_size,data=data_size +# ./scripts/csv.py lfs.code.csv lfs.data.csv -q -o lfs.csv +# ./scripts/csv.py -Y lfs.csv -f code=code_size,data=data_size # # Copyright (c) 2022, The littlefs authors. # SPDX-License-Identifier: BSD-3-Clause # +# prevent local imports +__import__('sys').path.pop(0) + import collections as co import csv import functools as ft @@ -739,7 +742,7 @@ if __name__ == "__main__": import argparse import sys parser = argparse.ArgumentParser( - description="Summarize measurements in CSV files.", + description="Script to manipulate CSV files.", allow_abbrev=False) parser.add_argument( 'csv_paths', diff --git a/scripts/data.py b/scripts/data.py index f541b58e..58b561aa 100755 --- a/scripts/data.py +++ b/scripts/data.py @@ -12,6 +12,9 @@ # SPDX-License-Identifier: BSD-3-Clause # +# prevent local imports +__import__('sys').path.pop(0) + import collections as co import csv import difflib diff --git a/scripts/dbgblock.py b/scripts/dbgblock.py index 38e13972..24804202 100755 --- a/scripts/dbgblock.py +++ b/scripts/dbgblock.py @@ -1,5 +1,8 @@ #!/usr/bin/env python3 +# prevent local imports +__import__('sys').path.pop(0) + import os diff --git a/scripts/dbgbmap.py b/scripts/dbgbmap.py index 27176369..e71fa8b6 100755 --- a/scripts/dbgbmap.py +++ b/scripts/dbgbmap.py @@ -1,5 +1,8 @@ #!/usr/bin/env python3 +# prevent local imports +__import__('sys').path.pop(0) + import bisect import collections as co import functools as ft diff --git a/scripts/dbgbtree.py b/scripts/dbgbtree.py index 332f8717..1eb45d13 100755 --- a/scripts/dbgbtree.py +++ b/scripts/dbgbtree.py @@ -1,5 +1,8 @@ #!/usr/bin/env python3 +# prevent local imports +__import__('sys').path.pop(0) + import bisect import collections as co import itertools as it diff --git a/scripts/dbgcat.py b/scripts/dbgcat.py index 9f85f7d6..f17d0140 100755 --- a/scripts/dbgcat.py +++ b/scripts/dbgcat.py @@ -1,5 +1,8 @@ #!/usr/bin/env python3 +# prevent local imports +__import__('sys').path.pop(0) + import os diff --git a/scripts/dbgerr.py b/scripts/dbgerr.py index 3a645b9e..7a630e93 100755 --- a/scripts/dbgerr.py +++ b/scripts/dbgerr.py @@ -1,5 +1,8 @@ #!/usr/bin/env python3 +# prevent local imports +__import__('sys').path.pop(0) + ERRS = [ ('OK', 0, "No error" ), diff --git a/scripts/dbglfs.py b/scripts/dbglfs.py index 13d74a3b..a7759b94 100755 --- a/scripts/dbglfs.py +++ b/scripts/dbglfs.py @@ -1,5 +1,8 @@ #!/usr/bin/env python3 +# prevent local imports +__import__('sys').path.pop(0) + import bisect import collections as co import functools as ft diff --git a/scripts/dbgmtree.py b/scripts/dbgmtree.py index 2b984f5b..141b0a21 100755 --- a/scripts/dbgmtree.py +++ b/scripts/dbgmtree.py @@ -1,5 +1,8 @@ #!/usr/bin/env python3 +# prevent local imports +__import__('sys').path.pop(0) + import bisect import collections as co import itertools as it diff --git a/scripts/dbgrbyd.py b/scripts/dbgrbyd.py index bdf4c01f..9053e51d 100755 --- a/scripts/dbgrbyd.py +++ b/scripts/dbgrbyd.py @@ -1,5 +1,8 @@ #!/usr/bin/env python3 +# prevent local imports +__import__('sys').path.pop(0) + import bisect import collections as co import itertools as it diff --git a/scripts/dbgtag.py b/scripts/dbgtag.py index 1df93062..ec39ca7d 100755 --- a/scripts/dbgtag.py +++ b/scripts/dbgtag.py @@ -1,5 +1,8 @@ #!/usr/bin/env python3 +# prevent local imports +__import__('sys').path.pop(0) + import io import os import struct diff --git a/scripts/parity.py b/scripts/parity.py index 468c3dc0..904ed8dc 100755 --- a/scripts/parity.py +++ b/scripts/parity.py @@ -1,5 +1,8 @@ #!/usr/bin/env python3 +# prevent local imports +__import__('sys').path.pop(0) + import io import os import struct diff --git a/scripts/perf.py b/scripts/perf.py index 69c1582f..9ddf5eb6 100755 --- a/scripts/perf.py +++ b/scripts/perf.py @@ -10,6 +10,9 @@ # SPDX-License-Identifier: BSD-3-Clause # +# prevent local imports +__import__('sys').path.pop(0) + import bisect import collections as co import csv diff --git a/scripts/perfbd.py b/scripts/perfbd.py index c3a44355..f0c5dad9 100755 --- a/scripts/perfbd.py +++ b/scripts/perfbd.py @@ -11,6 +11,9 @@ # SPDX-License-Identifier: BSD-3-Clause # +# prevent local imports +__import__('sys').path.pop(0) + import bisect import collections as co import csv diff --git a/scripts/plot.py b/scripts/plot.py index f9ce78bd..89d7e970 100755 --- a/scripts/plot.py +++ b/scripts/plot.py @@ -9,6 +9,9 @@ # SPDX-License-Identifier: BSD-3-Clause # +# prevent local imports +__import__('sys').path.pop(0) + import bisect import codecs import collections as co diff --git a/scripts/plotmpl.py b/scripts/plotmpl.py index f0479574..2d0962cb 100755 --- a/scripts/plotmpl.py +++ b/scripts/plotmpl.py @@ -9,6 +9,9 @@ # SPDX-License-Identifier: BSD-3-Clause # +# prevent local imports +__import__('sys').path.pop(0) + import codecs import collections as co import csv diff --git a/scripts/prettyasserts.py b/scripts/prettyasserts.py index dddc8557..dabe355a 100755 --- a/scripts/prettyasserts.py +++ b/scripts/prettyasserts.py @@ -10,6 +10,9 @@ # SPDX-License-Identifier: BSD-3-Clause # +# prevent local imports +__import__('sys').path.pop(0) + import re import sys diff --git a/scripts/readblock.py b/scripts/readblock.py index 7a3c7dc5..d7fec741 100755 --- a/scripts/readblock.py +++ b/scripts/readblock.py @@ -1,5 +1,8 @@ #!/usr/bin/env python3 +# prevent local imports +__import__('sys').path.pop(0) + import subprocess as sp diff --git a/scripts/stack.py b/scripts/stack.py index 290ec4dd..8d2b6341 100755 --- a/scripts/stack.py +++ b/scripts/stack.py @@ -10,6 +10,9 @@ # SPDX-License-Identifier: BSD-3-Clause # +# prevent local imports +__import__('sys').path.pop(0) + import collections as co import csv import itertools as it diff --git a/scripts/structs.py b/scripts/structs.py index 1ad3ee7f..9a33712a 100755 --- a/scripts/structs.py +++ b/scripts/structs.py @@ -9,6 +9,9 @@ # SPDX-License-Identifier: BSD-3-Clause # +# prevent local imports +__import__('sys').path.pop(0) + import collections as co import csv import difflib diff --git a/scripts/tailpipe.py b/scripts/tailpipe.py index 162df106..4ff92b6f 100755 --- a/scripts/tailpipe.py +++ b/scripts/tailpipe.py @@ -9,6 +9,9 @@ # SPDX-License-Identifier: BSD-3-Clause # +# prevent local imports +__import__('sys').path.pop(0) + import collections as co import io import os diff --git a/scripts/teepipe.py b/scripts/teepipe.py index 75aec3ee..e37e8748 100755 --- a/scripts/teepipe.py +++ b/scripts/teepipe.py @@ -9,6 +9,9 @@ # SPDX-License-Identifier: BSD-3-Clause # +# prevent local imports +__import__('sys').path.pop(0) + import os import io import time diff --git a/scripts/test.py b/scripts/test.py index be586341..56958c82 100755 --- a/scripts/test.py +++ b/scripts/test.py @@ -9,6 +9,9 @@ # SPDX-License-Identifier: BSD-3-Clause # +# prevent local imports +__import__('sys').path.pop(0) + import collections as co import csv import errno diff --git a/scripts/tracebd.py b/scripts/tracebd.py index 77a23469..239f98f4 100755 --- a/scripts/tracebd.py +++ b/scripts/tracebd.py @@ -9,6 +9,9 @@ # SPDX-License-Identifier: BSD-3-Clause # +# prevent local imports +__import__('sys').path.pop(0) + import collections as co import functools as ft import io diff --git a/scripts/watch.py b/scripts/watch.py index 34030570..837ec384 100755 --- a/scripts/watch.py +++ b/scripts/watch.py @@ -10,6 +10,9 @@ # SPDX-License-Identifier: BSD-3-Clause # +# prevent local imports +__import__('sys').path.pop(0) + import collections as co import errno import fcntl