grafana / cog

Code Generation with a human touch
Apache License 2.0
48 stars 2 forks source link

Correctly parse inline definitions in cue #496

Closed K-Phoen closed 4 months ago

K-Phoen commented 4 months ago

In cue, the following inline definition is currently parsed as a field instead of an object:

container: {
    #SomeInlineDefinition: {
        field: string
    }

    inline: #SomeInlineDefinition
}
github-actions[bot] commented 4 months ago

Note: in addition to the changes introduced by this PR, the diff includes unreleased changes living in main.

### 🔎 Changes to `grafana-foundation-sdk@next+cog-v0.0.x` ```patch diff --git a/php/src/Azuremonitor/AzureMonitorQuery.php b/php/src/Azuremonitor/AzureMonitorQuery.php index 97b672d..21b68ec 100644 --- a/php/src/Azuremonitor/AzureMonitorQuery.php +++ b/php/src/Azuremonitor/AzureMonitorQuery.php @@ -159,26 +159,26 @@ class AzureMonitorQuery implements \JsonSerializable, \Grafana\Foundation\Cog\Da \assert(is_array($input), 'expected disjunction value to be an array'); switch ($input["kind"]) { - case "MetricDefinitionsQuery": - return MetricDefinitionsQuery::fromArray($input); - case "AppInsightsGroupByQuery": - return AppInsightsGroupByQuery::fromArray($input); + case "UnknownQuery": + return UnknownQuery::fromArray($input); case "ResourceGroupsQuery": return ResourceGroupsQuery::fromArray($input); + case "ResourceNamesQuery": + return ResourceNamesQuery::fromArray($input); + case "MetricNamesQuery": + return MetricNamesQuery::fromArray($input); case "WorkspacesQuery": return WorkspacesQuery::fromArray($input); case "SubscriptionsQuery": return SubscriptionsQuery::fromArray($input); - case "ResourceNamesQuery": - return ResourceNamesQuery::fromArray($input); case "AppInsightsMetricNameQuery": return AppInsightsMetricNameQuery::fromArray($input); case "MetricNamespaceQuery": return MetricNamespaceQuery::fromArray($input); - case "MetricNamesQuery": - return MetricNamesQuery::fromArray($input); - case "UnknownQuery": - return UnknownQuery::fromArray($input); + case "MetricDefinitionsQuery": + return MetricDefinitionsQuery::fromArray($input); + case "AppInsightsGroupByQuery": + return AppInsightsGroupByQuery::fromArray($input); default: throw new \ValueError('can not parse disjunction from array'); } diff --git a/php/src/Cloudwatch/QueryEditorArrayExpression.php b/php/src/Cloudwatch/QueryEditorArrayExpression.php index 3b3ed16..c359e91 100644 --- a/php/src/Cloudwatch/QueryEditorArrayExpression.php +++ b/php/src/Cloudwatch/QueryEditorArrayExpression.php @@ -34,8 +34,6 @@ class QueryEditorArrayExpression implements \JsonSerializable \assert(is_array($input), 'expected disjunction value to be an array'); switch ($input["type"]) { - case "or": - return QueryEditorArrayExpression::fromArray($input); case "property": return QueryEditorPropertyExpression::fromArray($input); case "groupBy": @@ -48,6 +46,8 @@ class QueryEditorArrayExpression implements \JsonSerializable return QueryEditorOperatorExpression::fromArray($input); case "and": return QueryEditorArrayExpression::fromArray($input); + case "or": + return QueryEditorArrayExpression::fromArray($input); default: throw new \ValueError('can not parse disjunction from array'); } diff --git a/php/src/Cloudwatch/VariantConfig.php b/php/src/Cloudwatch/VariantConfig.php index 0e16d2d..54991a9 100644 --- a/php/src/Cloudwatch/VariantConfig.php +++ b/php/src/Cloudwatch/VariantConfig.php @@ -12,12 +12,12 @@ final class VariantConfig \assert(is_array($input), 'expected disjunction value to be an array'); switch ($input["queryMode"]) { - case "Annotations": - return CloudWatchAnnotationQuery::fromArray($input); case "Metrics": return CloudWatchMetricsQuery::fromArray($input); case "Logs": return CloudWatchLogsQuery::fromArray($input); + case "Annotations": + return CloudWatchAnnotationQuery::fromArray($input); default: throw new \ValueError('can not parse disjunction from array'); } diff --git a/php/src/Common/TableFieldOptions.php b/php/src/Common/TableFieldOptions.php index 9d9d692..b568213 100644 --- a/php/src/Common/TableFieldOptions.php +++ b/php/src/Common/TableFieldOptions.php @@ -78,6 +78,12 @@ class TableFieldOptions implements \JsonSerializable \assert(is_array($input), 'expected disjunction value to be an array'); switch ($input["type"]) { + case "gauge": + return TableBarGaugeCellOptions::fromArray($input); + case "color-background": + return TableColoredBackgroundCellOptions::fromArray($input); + case "color-text": + return TableColorTextCellOptions::fromArray($input); case "image": return TableImageCellOptions::fromArray($input); case "data-links": @@ -88,12 +94,6 @@ class TableFieldOptions implements \JsonSerializable return TableAutoCellOptions::fromArray($input); case "sparkline": return TableSparklineCellOptions::fromArray($input); - case "gauge": - return TableBarGaugeCellOptions::fromArray($input); - case "color-background": - return TableColoredBackgroundCellOptions::fromArray($input); - case "color-text": - return TableColorTextCellOptions::fromArray($input); default: throw new \ValueError('can not parse disjunction from array'); } diff --git a/php/src/Elasticsearch/Dataquery.php b/php/src/Elasticsearch/Dataquery.php index 6484d0c..4cf8c11 100644 --- a/php/src/Elasticsearch/Dataquery.php +++ b/php/src/Elasticsearch/Dataquery.php @@ -97,6 +97,10 @@ class Dataquery implements \JsonSerializable, \Grafana\Foundation\Cog\Dataquery \assert(is_array($input), 'expected disjunction value to be an array'); switch ($input["type"]) { + case "histogram": + return Histogram::fromArray($input); + case "terms": + return Terms::fromArray($input); case "filters": return Filters::fromArray($input); case "geohash_grid": @@ -105,10 +109,6 @@ class Dataquery implements \JsonSerializable, \Grafana\Foundation\Cog\Dataquery return Nested::fromArray($input); case "date_histogram": return DateHistogram::fromArray($input); - case "histogram": - return Histogram::fromArray($input); - case "terms": - return Terms::fromArray($input); default: throw new \ValueError('can not parse disjunction from array'); } @@ -117,44 +117,44 @@ class Dataquery implements \JsonSerializable, \Grafana\Foundation\Cog\Dataquery \assert(is_array($input), 'expected disjunction value to be an array'); switch ($input["type"]) { - case "percentiles": - return Percentiles::fromArray($input); - case "max": - return Max::fromArray($input); - case "moving_avg": - return MovingAverage::fromArray($input); - case "logs": - return Logs::fromArray($input); case "bucket_script": return BucketScript::fromArray($input); - case "min": - return Min::fromArray($input); + case "sum": + return Sum::fromArray($input); + case "moving_avg": + return MovingAverage::fromArray($input); case "top_metrics": return TopMetrics::fromArray($input); - case "count": - return Count::fromArray($input); + case "max": + return Max::fromArray($input); + case "moving_fn": + return MovingFunction::fromArray($input); + case "percentiles": + return Percentiles::fromArray($input); + case "avg": + return Average::fromArray($input); case "derivative": return Derivative::fromArray($input); - case "raw_document": - return RawDocument::fromArray($input); case "raw_data": return RawData::fromArray($input); - case "extended_stats": - return ExtendedStats::fromArray($input); case "serial_diff": return SerialDiff::fromArray($input); - case "avg": - return Average::fromArray($input); - case "moving_fn": - return MovingFunction::fromArray($input); - case "sum": - return Sum::fromArray($input); - case "cardinality": - return UniqueCount::fromArray($input); + case "raw_document": + return RawDocument::fromArray($input); + case "count": + return Count::fromArray($input); case "cumulative_sum": return CumulativeSum::fromArray($input); + case "cardinality": + return UniqueCount::fromArray($input); + case "logs": + return Logs::fromArray($input); case "rate": return Rate::fromArray($input); + case "extended_stats": + return ExtendedStats::fromArray($input); + case "min": + return Min::fromArray($input); default: throw new \ValueError('can not parse disjunction from array'); } diff --git a/php/src/Expr/VariantConfig.php b/php/src/Expr/VariantConfig.php index 9ca27eb..a313278 100644 --- a/php/src/Expr/VariantConfig.php +++ b/php/src/Expr/VariantConfig.php @@ -12,6 +12,8 @@ final class VariantConfig \assert(is_array($input), 'expected disjunction value to be an array'); switch ($input["type"]) { + case "math": + return TypeMath::fromArray($input); case "reduce": return TypeReduce::fromArray($input); case "resample": @@ -22,8 +24,6 @@ final class VariantConfig return TypeThreshold::fromArray($input); case "sql": return TypeSql::fromArray($input); - case "math": - return TypeMath::fromArray($input); default: throw new \ValueError('can not parse disjunction from array'); } diff --git a/python/grafana_foundation_sdk/cog/plugins.py b/python/grafana_foundation_sdk/cog/plugins.py index 9173245..1600a79 100644 --- a/python/grafana_foundation_sdk/cog/plugins.py +++ b/python/grafana_foundation_sdk/cog/plugins.py @@ -1,39 +1,39 @@ # Code generated - EDITING IS FUTILE. DO NOT EDIT. -from ..models import gauge -from ..models import nodegraph -from ..models import statetimeline -from ..models import tempo -from ..models import expr -from ..models import cloudwatch -from ..models import debug -from ..models import googlecloudmonitoring -from ..models import parca -from ..models import stat -from ..models import statushistory -from ..models import table -from ..models import trend from ..models import prometheus -from ..models import barchart -from ..models import dashboardlist -from ..models import grafanapyroscope -from ..models import news +from ..models import xychart +from ..models import loki from ..models import piechart -from ..models import annotationslist -from ..models import datagrid -from ..models import elasticsearch +from ..models import table +from ..models import grafanapyroscope +from ..models import googlecloudmonitoring +from ..models import histogram from ..models import logs -from ..models import xychart -from ..models import bargauge +from ..models import parca +from ..models import statushistory +from ..models import tempo +from ..models import debug +from ..models import candlestick from ..models import canvas -from ..models import loki -from ..models import text +from ..models import elasticsearch +from ..models import statetimeline from ..models import timeseries +from ..models import dashboardlist +from ..models import stat +from ..models import text +from ..models import trend from ..models import azuremonitor -from ..models import candlestick +from ..models import cloudwatch +from ..models import annotationslist +from ..models import datagrid from ..models import geomap from ..models import heatmap -from ..models import histogram +from ..models import nodegraph +from ..models import expr +from ..models import barchart +from ..models import news +from ..models import bargauge +from ..models import gauge from . import runtime as cogruntime diff --git a/python/grafana_foundation_sdk/models/cloudwatch.py b/python/grafana_foundation_sdk/models/cloudwatch.py index 8ef9b81..761fcb8 100644 --- a/python/grafana_foundation_sdk/models/cloudwatch.py +++ b/python/grafana_foundation_sdk/models/cloudwatch.py @@ -332,7 +332,7 @@ class SQLExpression: if "select" in data: args["select"] = QueryEditorFunctionExpression.from_json(data["select"]) if "from" in data: - decoding_map: dict[str, typing.Union[typing.Type[QueryEditorFunctionExpression], typing.Type[QueryEditorPropertyExpression]]] = {"function": QueryEditorFunctionExpression, "property": QueryEditorPropertyExpression} + decoding_map: dict[str, typing.Union[typing.Type[QueryEditorPropertyExpression], typing.Type[QueryEditorFunctionExpression]]] = {"property": QueryEditorPropertyExpression, "function": QueryEditorFunctionExpression} args["from_val"] = decoding_map[data["from"]["type"]].from_json(data["from"]) if "where" in data: args["where"] = QueryEditorArrayExpression.from_json(data["where"]) @@ -894,7 +894,7 @@ CloudWatchQuery: typing.TypeAlias = typing.Union['CloudWatchMetricsQuery', 'Clou def variant_config() -> cogruntime.DataqueryConfig: - decoding_map: dict[str, typing.Union[typing.Type[CloudWatchAnnotationQuery], typing.Type[CloudWatchMetricsQuery], typing.Type[CloudWatchLogsQuery]]] = {"Annotations": CloudWatchAnnotationQuery, "Metrics": CloudWatchMetricsQuery, "Logs": CloudWatchLogsQuery} + decoding_map: dict[str, typing.Union[typing.Type[CloudWatchMetricsQuery], typing.Type[CloudWatchLogsQuery], typing.Type[CloudWatchAnnotationQuery]]] = {"Metrics": CloudWatchMetricsQuery, "Logs": CloudWatchLogsQuery, "Annotations": CloudWatchAnnotationQuery} return cogruntime.DataqueryConfig( identifier="cloudwatch", from_json_hook=lambda data: decoding_map[data["queryMode"]].from_json(data), diff --git a/python/grafana_foundation_sdk/models/expr.py b/python/grafana_foundation_sdk/models/expr.py index 5dd1737..6e1a9ac 100644 --- a/python/grafana_foundation_sdk/models/expr.py +++ b/python/grafana_foundation_sdk/models/expr.py @@ -9,7 +9,7 @@ Expr: typing.TypeAlias = typing.Union['TypeMath', 'TypeReduce', 'TypeResample', def variant_config() -> cogruntime.DataqueryConfig: - decoding_map: dict[str, typing.Union[typing.Type[TypeMath], typing.Type[TypeReduce], typing.Type[TypeResample], typing.Type[TypeClassicConditions], typing.Type[TypeThreshold], typing.Type[TypeSql]]] = {"math": TypeMath, "reduce": TypeReduce, "resample": TypeResample, "classic_conditions": TypeClassicConditions, "threshold": TypeThreshold, "sql": TypeSql} + decoding_map: dict[str, typing.Union[typing.Type[TypeThreshold], typing.Type[TypeSql], typing.Type[TypeMath], typing.Type[TypeReduce], typing.Type[TypeResample], typing.Type[TypeClassicConditions]]] = {"threshold": TypeThreshold, "sql": TypeSql, "math": TypeMath, "reduce": TypeReduce, "resample": TypeResample, "classic_conditions": TypeClassicConditions} return cogruntime.DataqueryConfig( identifier="__expr__", from_json_hook=lambda data: decoding_map[data["type"]].from_json(data), diff --git a/python/grafana_foundation_sdk/models/rolebinding.py b/python/grafana_foundation_sdk/models/rolebinding.py index e8f302c..eafa911 100644 --- a/python/grafana_foundation_sdk/models/rolebinding.py +++ b/python/grafana_foundation_sdk/models/rolebinding.py @@ -25,7 +25,7 @@ class RoleBinding: args: dict[str, typing.Any] = {} if "role" in data: - decoding_map: dict[str, typing.Union[typing.Type[BuiltinRoleRef], typing.Type[CustomRoleRef]]] = {"BuiltinRole": BuiltinRoleRef, "Role": CustomRoleRef} + decoding_map: dict[str, typing.Union[typing.Type[CustomRoleRef], typing.Type[BuiltinRoleRef]]] = {"Role": CustomRoleRef, "BuiltinRole": BuiltinRoleRef} args["role"] = decoding_map[data["role"]["kind"]].from_json(data["role"]) if "subject" in data: args["subject"] = RoleBindingSubject.from_json(data["subject"]) diff --git a/python/pyproject.toml b/python/pyproject.toml index 6b7fe61..62e33c0 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -13,7 +13,7 @@ keywords = [ "traces", "metrics" ] -version = "1719329203!next" +version = "1719839207!next" dependencies = [] requires-python = ">=3.11" classifiers = [ diff --git a/typescript/package.json b/typescript/package.json index eb652bd..6016a27 100644 --- a/typescript/package.json +++ b/typescript/package.json @@ -1,6 +1,6 @@ { "name": "@grafana/grafana-foundation-sdk", - "version": "next-cogv0.0.x.1719329203", + "version": "next-cogv0.0.x.1719839207", "description": "A set of tools, types and libraries for building and manipulating Grafana objects.", "keywords": [ "observability", ```