Skip to content

Commit 4579cf4

Browse files
committed
Replace df with csv format to avoid pandas dependency
Pandas was used for demo and output formatting only. With instructions on pandas usage in the README the dataframe formatting is removed. Instead an option to output CSV format is added. The command-line argument is renamed from `--display` to `--format`. Signed-off-by: cwasicki <[email protected]>
1 parent 9c691d7 commit 4579cf4

File tree

1 file changed

+14
-18
lines changed

1 file changed

+14
-18
lines changed

src/frequenz/client/reporting/__main__.py

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,9 @@
99
from pprint import pprint
1010
from typing import AsyncIterator
1111

12-
import pandas as pd
1312
from frequenz.client.common.metric import Metric
1413

1514
from frequenz.client.reporting import ReportingApiClient
16-
17-
# Experimental import
1815
from frequenz.client.reporting._client import MetricSample
1916

2017

@@ -52,7 +49,7 @@ def main() -> None:
5249
parser.add_argument("--resolution", type=int, help="Resolution", default=None)
5350
parser.add_argument("--psize", type=int, help="Page size", default=1000)
5451
parser.add_argument(
55-
"--display", choices=["iter", "df", "dict"], help="Display format", default="df"
52+
"--format", choices=["iter", "csv", "dict"], help="Output format", default="csv"
5653
)
5754
parser.add_argument(
5855
"--key",
@@ -72,7 +69,7 @@ def main() -> None:
7269
page_size=args.psize,
7370
service_address=args.url,
7471
key=args.key,
75-
display=args.display,
72+
fmt=args.format,
7673
)
7774
)
7875

@@ -88,7 +85,7 @@ async def run(
8885
page_size: int,
8986
service_address: str,
9087
key: str,
91-
display: str,
88+
fmt: str,
9289
) -> None:
9390
"""Test the ReportingApiClient.
9491
@@ -102,10 +99,10 @@ async def run(
10299
page_size: page size
103100
service_address: service address
104101
key: API key
105-
display: display format
102+
fmt: output format
106103
107104
Raises:
108-
ValueError: if display format is invalid
105+
ValueError: if output format is invalid
109106
"""
110107
client = ReportingApiClient(service_address, key)
111108

@@ -129,26 +126,25 @@ def data_iter() -> AsyncIterator[MetricSample]:
129126
page_size=page_size,
130127
)
131128

132-
if display == "iter":
129+
if fmt == "iter":
133130
# Iterate over single metric generator
134131
async for sample in data_iter():
135132
print(sample)
136133

137-
elif display == "dict":
134+
elif fmt == "dict":
138135
# Dumping all data as a single dict
139136
dct = await iter_to_dict(data_iter())
140137
pprint(dct)
141138

142-
elif display == "df":
143-
# Turn data into a pandas DataFrame
144-
data = [cd async for cd in data_iter()]
145-
df = pd.DataFrame(data).set_index("timestamp")
146-
# Set option to display all rows
147-
pd.set_option("display.max_rows", None)
148-
pprint(df)
139+
elif fmt == "csv":
140+
# Print header
141+
print(",".join(MetricSample._fields))
142+
# Iterate over single metric generator and format as CSV
143+
async for sample in data_iter():
144+
print(",".join(str(e) for e in sample))
149145

150146
else:
151-
raise ValueError(f"Invalid display format: {display}")
147+
raise ValueError(f"Invalid output format: {fmt}")
152148

153149
return
154150

0 commit comments

Comments
 (0)