Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# CHANGELOG

## unreleased
- Async: Fixed code generator for edge cases at "smartquery" interface. Thanks, @JIAQIA.

## 4.3.2 (2025-03-04)
- Alerting: Allowed the datasource to be specified with managed alerting. Thanks, @dmyerscough.
Expand Down
8 changes: 4 additions & 4 deletions grafana_client/elements/_async/datasource.py
Original file line number Diff line number Diff line change
Expand Up @@ -353,9 +353,9 @@ async def smartquery(
# Compute request method, body, and endpoint.
if "method" in request and isinstance(request["method"], str):
if request["method"] == "POST":
send_request = await self.client.POST
send_request = self.client.POST
else:
send_request = await self.client.GET
send_request = self.client.GET

logger.info(f"Submitting request: {request}")

Expand All @@ -378,7 +378,7 @@ async def smartquery(
database_name=datasource.get("database"),
)
request_kwargs = {}
send_request = await self.client.GET
send_request = self.client.GET

elif datasource_type in ("prometheus", "loki") and Version(await self.api.version) <= VERSION_7:
if (
Expand Down Expand Up @@ -411,7 +411,7 @@ async def smartquery(

# Submit query.
try:
return send_request(url, **request_kwargs)
return await send_request(url, **request_kwargs)
except (GrafanaClientError, GrafanaServerError) as ex:
logger.error(
f"Querying data source failed. id={datasource_id}, type={datasource_type}. "
Expand Down
5 changes: 3 additions & 2 deletions script/generate_async.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,13 +101,14 @@ def process(source: Path, target: Path):

module_dump = re.sub(r"( {4}def )(?!_)", r" async def ", module_dump)

module_dump = module_dump.replace("self.client.", "await self.client.")
module_dump = re.sub(r"self\.client\.(.+)\(", r"await self.client.\1(", module_dump)

for relative_import in [".base", "..client", "..knowledge", "..model"]:
module_dump = module_dump.replace(f"from {relative_import}", f"from .{relative_import}")

module_dump = module_dump.replace("self.api.version", "await self.api.version")
module_dump = module_dump.replace("= self.", "= await self.")
module_dump = re.sub(r"= self\.(.+)\(", r"= await self.\1(", module_dump)
module_dump = re.sub(r"send_request\(", r"await send_request(", module_dump)

module_processed.append(module_path)
target_path = Path(str(module_path).replace(str(source), str(target)))
Expand Down
Loading