123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- // Copyright 2019 Google LLC.
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- //
- syntax = "proto3";
- package google.api.expr.v1beta1;
- import "google/api/expr/v1beta1/value.proto";
- import "google/rpc/status.proto";
- option cc_enable_arenas = true;
- option go_package = "google.golang.org/genproto/googleapis/api/expr/v1beta1;expr";
- option java_multiple_files = true;
- option java_outer_classname = "EvalProto";
- option java_package = "com.google.api.expr.v1beta1";
- // The state of an evaluation.
- //
- // Can represent an initial, partial, or completed state of evaluation.
- message EvalState {
- // A single evaluation result.
- message Result {
- // The expression this result is for.
- IdRef expr = 1;
- // The index in `values` of the resulting value.
- int32 value = 2;
- }
- // The unique values referenced in this message.
- repeated ExprValue values = 1;
- // An ordered list of results.
- //
- // Tracks the flow of evaluation through the expression.
- // May be sparse.
- repeated Result results = 3;
- }
- // The value of an evaluated expression.
- message ExprValue {
- // An expression can resolve to a value, error or unknown.
- oneof kind {
- // A concrete value.
- Value value = 1;
- // The set of errors in the critical path of evalution.
- //
- // Only errors in the critical path are included. For example,
- // `(<error1> || true) && <error2>` will only result in `<error2>`,
- // while `<error1> || <error2>` will result in both `<error1>` and
- // `<error2>`.
- //
- // Errors cause by the presence of other errors are not included in the
- // set. For example `<error1>.foo`, `foo(<error1>)`, and `<error1> + 1` will
- // only result in `<error1>`.
- //
- // Multiple errors *might* be included when evaluation could result
- // in different errors. For example `<error1> + <error2>` and
- // `foo(<error1>, <error2>)` may result in `<error1>`, `<error2>` or both.
- // The exact subset of errors included for this case is unspecified and
- // depends on the implementation details of the evaluator.
- ErrorSet error = 2;
- // The set of unknowns in the critical path of evaluation.
- //
- // Unknown behaves identically to Error with regards to propagation.
- // Specifically, only unknowns in the critical path are included, unknowns
- // caused by the presence of other unknowns are not included, and multiple
- // unknowns *might* be included included when evaluation could result in
- // different unknowns. For example:
- //
- // (<unknown[1]> || true) && <unknown[2]> -> <unknown[2]>
- // <unknown[1]> || <unknown[2]> -> <unknown[1,2]>
- // <unknown[1]>.foo -> <unknown[1]>
- // foo(<unknown[1]>) -> <unknown[1]>
- // <unknown[1]> + <unknown[2]> -> <unknown[1]> or <unknown[2[>
- //
- // Unknown takes precidence over Error in cases where a `Value` can short
- // circuit the result:
- //
- // <error> || <unknown> -> <unknown>
- // <error> && <unknown> -> <unknown>
- //
- // Errors take precidence in all other cases:
- //
- // <unknown> + <error> -> <error>
- // foo(<unknown>, <error>) -> <error>
- UnknownSet unknown = 3;
- }
- }
- // A set of errors.
- //
- // The errors included depend on the context. See `ExprValue.error`.
- message ErrorSet {
- // The errors in the set.
- repeated google.rpc.Status errors = 1;
- }
- // A set of expressions for which the value is unknown.
- //
- // The unknowns included depend on the context. See `ExprValue.unknown`.
- message UnknownSet {
- // The ids of the expressions with unknown values.
- repeated IdRef exprs = 1;
- }
- // A reference to an expression id.
- message IdRef {
- // The expression id.
- int32 id = 1;
- }
|