summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/analyze-archive.py4
-rwxr-xr-xbin/analyze-kconfig.py4
-rwxr-xr-xbin/analyze-log.py4
-rw-r--r--lib/cli.py22
-rw-r--r--lib/functions.py1
5 files changed, 30 insertions, 5 deletions
diff --git a/bin/analyze-archive.py b/bin/analyze-archive.py
index 53a8c37..0587ce1 100755
--- a/bin/analyze-archive.py
+++ b/bin/analyze-archive.py
@@ -426,7 +426,9 @@ def main():
dfatool.cli.print_info_by_name(model, by_name)
if args.export_csv_unparam:
- dfatool.cli.export_csv_unparam(model, args.export_csv_unparam)
+ dfatool.cli.export_csv_unparam(
+ model, args.export_csv_unparam, dialect=args.export_csv_dialect
+ )
if args.export_pgf_unparam:
dfatool.cli.export_pgf_unparam(model, args.export_pgf_unparam)
diff --git a/bin/analyze-kconfig.py b/bin/analyze-kconfig.py
index d148641..da58bc7 100755
--- a/bin/analyze-kconfig.py
+++ b/bin/analyze-kconfig.py
@@ -354,7 +354,9 @@ def main():
dfatool.cli.print_info_by_name(model, by_name)
if args.export_csv_unparam:
- dfatool.cli.export_csv_unparam(model, args.export_csv_unparam)
+ dfatool.cli.export_csv_unparam(
+ model, args.export_csv_unparam, dialect=args.export_csv_dialect
+ )
if args.export_pgf_unparam:
dfatool.cli.export_pgf_unparam(model, args.export_pgf_unparam)
diff --git a/bin/analyze-log.py b/bin/analyze-log.py
index dd32fab..a394b10 100755
--- a/bin/analyze-log.py
+++ b/bin/analyze-log.py
@@ -125,7 +125,9 @@ def main():
dfatool.cli.print_info_by_name(model, by_name)
if args.export_csv_unparam:
- dfatool.cli.export_csv_unparam(model, args.export_csv_unparam)
+ dfatool.cli.export_csv_unparam(
+ model, args.export_csv_unparam, dialect=args.export_csv_dialect
+ )
if args.export_pgf_unparam:
dfatool.cli.export_pgf_unparam(model, args.export_pgf_unparam)
diff --git a/lib/cli.py b/lib/cli.py
index 310314b..36371f1 100644
--- a/lib/cli.py
+++ b/lib/cli.py
@@ -358,13 +358,23 @@ def export_dot(model, dot_prefix):
logger.info(f"Dot export of model saved to {filename}")
-def export_csv_unparam(model, csv_prefix):
+def export_csv_unparam(model, csv_prefix, dialect="excel"):
import csv
+ class ExcelLF(csv.Dialect):
+ delimiter = ","
+ quotechar = '"'
+ doublequote = True
+ skipinitialspace = False
+ lineterminator = "\n"
+ quoting = 0
+
+ csv.register_dialect("excel-lf", ExcelLF)
+
for name in sorted(model.names):
filename = f"{csv_prefix}{name}.csv"
with open(filename, "w") as f:
- writer = csv.writer(f)
+ writer = csv.writer(f, dialect=dialect)
writer.writerow(
["measurement"] + model.parameters + sorted(model.attributes(name))
)
@@ -479,6 +489,14 @@ def add_standard_arguments(parser):
help="Export raw (parameter-independent) observations in CSV format to {PREFIX}{name}-{attribute}.csv",
)
parser.add_argument(
+ "--export-csv-dialect",
+ metavar="DIALECT",
+ type=str,
+ choices=["excel", "excel-lf", "excel-tab", "unix"],
+ default="excel",
+ help="CSV dialect to use for --export-csv-unparam",
+ )
+ parser.add_argument(
"--export-pgf-unparam",
metavar="PREFIX",
type=str,
diff --git a/lib/functions.py b/lib/functions.py
index 32fade0..d231c9c 100644
--- a/lib/functions.py
+++ b/lib/functions.py
@@ -452,6 +452,7 @@ class SplitFunction(ModelFunction):
or "infty",
}
)
+ return hyper
@classmethod
def from_json(cls, data):