Skip to content

Commit

Permalink
'Refactored by Sourcery'
Browse files Browse the repository at this point in the history
  • Loading branch information
Sourcery AI committed Jun 7, 2022
1 parent 365068f commit 5ca7649
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 39 deletions.
10 changes: 6 additions & 4 deletions examples/phenodata-mellifera/demo.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,12 @@ def define_and_register_data():
# Sample annotation reader.
def get_mellifera_flowering(query_string, ts_range):
query = dict(urllib.parse.parse_qsl(query_string))
series = phenodata_mellifera(
dataset="immediate", years=tuple([2019, 2020, 2021]), phases=tuple([5, 7]), options=tuple(query.items())
return phenodata_mellifera(
dataset="immediate",
years=(2019, 2020, 2021),
phases=(5, 7),
options=tuple(query.items()),
)
return series

# Register data generators.
dg.add_annotation_reader("flowering", get_mellifera_flowering)
Expand Down Expand Up @@ -75,7 +77,7 @@ def phenodata_mellifera(dataset: str, years: tuple[int], phases: tuple[str], opt
data_total.append(data_past)

if "forecast" in options["type"]:
next_year = (datetime.today() + timedelta(days=365)).year
next_year = (datetime.now() + timedelta(days=365)).year
data_future = client.get_forecast(
phenodata_options, forecast_year=next_year, humanize=phenodata_options["humanize"]
)
Expand Down
36 changes: 18 additions & 18 deletions grafana_pandas_datasource/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,7 @@ def dataframe_to_response(target, df, freq=None):
if isinstance(df, pd.Series):
response.append(_series_to_response(df, target))
elif isinstance(df, pd.DataFrame):
for col in df:
response.append(_series_to_response(df[col], target))
response.extend(_series_to_response(df[col], target) for col in df)
else:
abort(404, Exception("Received object is not a pandas DataFrame or Series."))

Expand Down Expand Up @@ -49,18 +48,19 @@ def annotations_to_response(target, df):

# Single series with DatetimeIndex and values as text
if isinstance(df, pd.Series):
for timestamp, value in df.iteritems():
response.append(
{
"annotation": target, # The original annotation sent from Grafana.
"time": timestamp.value // 10**6, # Time since UNIX Epoch in milliseconds. (required)
"title": value, # The title for the annotation tooltip. (required)
# "tags": tags, # Tags for the annotation. (optional)
# "text": text # Text for the annotation. (optional)
}
)

# DataFrame with annotation text/tags for each entry
response.extend(
{
"annotation": target, # The original annotation sent from Grafana.
"time": timestamp.value
// 10
** 6, # Time since UNIX Epoch in milliseconds. (required)
"title": value, # The title for the annotation tooltip. (required)
# "tags": tags, # Tags for the annotation. (optional)
# "text": text # Text for the annotation. (optional)
}
for timestamp, value in df.iteritems()
)

elif isinstance(df, pd.DataFrame):
for timestamp, row in df.iterrows():
annotation = {
Expand All @@ -83,23 +83,23 @@ def annotations_to_response(target, df):

def _series_to_annotations(df, target):
if df.empty:
return {"target": "%s" % (target), "datapoints": []}
return {"target": f"{target}", "datapoints": []}

sorted_df = df.dropna().sort_index()
timestamps = (sorted_df.index.astype(pd.np.int64) // 10**6).values.tolist()
values = sorted_df.values.tolist()

return {"target": "%s" % (df.name), "datapoints": list(zip(values, timestamps))}
return {"target": f"{df.name}", "datapoints": list(zip(values, timestamps))}


def _series_to_response(df, target):
if df.empty:
return {"target": "%s" % (target), "datapoints": []}
return {"target": f"{target}", "datapoints": []}

sorted_df = df.dropna().sort_index()

timestamps = (sorted_df.index.view(np.int64) // 10**6).tolist()

values = sorted_df.values.tolist()

return {"target": "%s" % (df.name), "datapoints": list(zip(values, timestamps))}
return {"target": f"{df.name}", "datapoints": list(zip(values, timestamps))}
3 changes: 1 addition & 2 deletions grafana_pandas_datasource/logging.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,7 @@ def __call__(self, environ, start_response):

def log_response(status, headers, *args):
pprint(("RESPONSE", status, headers), stream=errorlog)
response = start_response(status, headers, *args)
return response
return start_response(status, headers, *args)

# Capture response body.
app_iter = self._app(environ, log_response)
Expand Down
25 changes: 10 additions & 15 deletions grafana_pandas_datasource/service.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,17 +42,16 @@ def find_metrics():
else:
finder = target

if not target or finder not in dg.metric_finders:
metrics = []
if target == "*":
metrics += dg.metric_finders.keys()
metrics += dg.metric_readers.keys()
else:
metrics.append(target)

return jsonify(metrics)
else:
if target and finder in dg.metric_finders:
return jsonify(list(dg.metric_finders[finder](target)))
metrics = []
if target == "*":
metrics += dg.metric_finders.keys()
metrics += dg.metric_readers.keys()
else:
metrics.append(target)

return jsonify(metrics)


@pandas_component.route("/query", methods=methods)
Expand All @@ -68,11 +67,7 @@ def query_metrics():
"$lte": pd.Timestamp(req["range"]["to"]).to_pydatetime(),
}

if "intervalMs" in req:
freq = str(req.get("intervalMs")) + "ms"
else:
freq = None

freq = str(req.get("intervalMs")) + "ms" if "intervalMs" in req else None
for target in req["targets"]:
if ":" not in target.get("target", ""):
abort(404, Exception("Target must be of type: <finder>:<metric_query>, got instead: " + target["target"]))
Expand Down

0 comments on commit 5ca7649

Please sign in to comment.