| 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;
 
- }
 
 
  |