From 0fd199e6e6c19ca00be970187d6364f8b4d7c4a1 Mon Sep 17 00:00:00 2001 From: Elizabeth Worstell Date: Mon, 11 Nov 2024 10:18:15 -0800 Subject: [PATCH] feat: wire up python schema extraction --- Justfile | 11 +- examples/python/echo/__init__.py | 0 pyproject.toml | 20 + .../compile/build-template/main/main.py.tmpl | 2 +- python-runtime/compile/build.go | 29 +- python-runtime/compile/build_test.go | 55 + .../compile/testdata/echo/.python-version | 1 + .../compile/testdata/echo/__init__.py | 0 python-runtime/compile/testdata/echo/echo.py | 18 + python-runtime/compile/testdata/echo/ftl.toml | 2 + .../compile/testdata/echo/pyproject.toml | 10 + python-runtime/compile/testdata/echo/uv.lock | 38 + .../ftl/src/ftl/cli/schema_extractor.py | 36 +- .../ftl/src/ftl/extract/__init__.py | 6 +- python-runtime/ftl/src/ftl/extract/common.py | 10 +- python-runtime/ftl/src/ftl/extract/context.py | 76 +- .../ftl/src/ftl/extract/transitive.py | 14 +- .../xyz/block/ftl/v1/console/console_pb2.py | 184 +- .../xyz/block/ftl/v1/console/console_pb2.pyi | 1737 +++++++++----- .../ftl/protos/xyz/block/ftl/v1/ftl_pb2.py | 12 +- .../ftl/protos/xyz/block/ftl/v1/ftl_pb2.pyi | 104 +- .../xyz/block/ftl/v1/schema/schema_pb2.py | 208 +- .../xyz/block/ftl/v1/schema/schema_pb2.pyi | 1993 ++++++++++++----- python-runtime/ftl/src/ftl/verb/__init__.py | 6 +- python-runtime/ftl/src/ftl/verb/decorator.py | 2 +- python-runtime/ftl/src/ftl/verb/extractor.py | 2 +- uv.lock | 53 + 27 files changed, 3244 insertions(+), 1385 deletions(-) create mode 100644 examples/python/echo/__init__.py create mode 100644 pyproject.toml create mode 100644 python-runtime/compile/build_test.go create mode 100644 python-runtime/compile/testdata/echo/.python-version create mode 100644 python-runtime/compile/testdata/echo/__init__.py create mode 100644 python-runtime/compile/testdata/echo/echo.py create mode 100644 python-runtime/compile/testdata/echo/ftl.toml create mode 100644 python-runtime/compile/testdata/echo/pyproject.toml create mode 100644 python-runtime/compile/testdata/echo/uv.lock create mode 100644 uv.lock diff --git a/Justfile b/Justfile index 127bbf1195..d7f5fe66ba 100644 --- a/Justfile +++ b/Justfile @@ -29,6 +29,8 @@ clean: rm -rf node_modules rm -rf frontend/console/dist rm -rf frontend/console/node_modules + rm -rf .venv + rm -rf python-runtime/ftl/.venv find . -name '*.zip' -exec rm {} \; mvn -f jvm-runtime/ftl-runtime clean @@ -100,7 +102,7 @@ build-go: build-zips build-protos fi # Build ftl-language-python -build-python: build-zips build-protos +build-python: build-zips build-protos build-python-protos #!/bin/bash shopt -s extglob @@ -195,6 +197,13 @@ go2proto: build-protos-unconditionally: pnpm-install go2proto cd backend/protos && buf generate +# Run uv sync and generate .py and .pyi files from .proto +build-python-protos: + @mk python-runtime/ftl/src/ftl/protos/schema_pb2.py python-runtime/ftl/src/ftl/protos/schema_pb2.pyi \ + python-runtime/ftl/src/ftl/protos/console_pb2.py python-runtime/ftl/src/ftl/protos/console_pb2.pyi \ + python-runtime/ftl/src/ftl/protos/ftl_pb2.py python-runtime/ftl/src/ftl/protos/ftl_pb2.pyi : {{PROTOS_IN}} \ + -- "uv run protoc --proto_path=backend/protos --mypy_out=python-runtime/ftl/src/ftl/protos --python_out=python-runtime/ftl/src/ftl/protos {{PROTOS_IN}}" + # Run integration test(s) integration-tests *test: #!/bin/bash diff --git a/examples/python/echo/__init__.py b/examples/python/echo/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000000..01642a33ea --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,20 @@ +[project] +name = "ftl" +version = "0.1.0" +description = "Add your description here" +readme = "README.md" +authors = [ + { name = "Moe Jangda", email = "moe@tbd.email" } +] +requires-python = ">=3.12" +dependencies = [ + "mypy-protobuf>=3.6.0", + "protobuf>=5.28.3", +] + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.build.targets.wheel] +packages = ["."] \ No newline at end of file diff --git a/python-runtime/compile/build-template/main/main.py.tmpl b/python-runtime/compile/build-template/main/main.py.tmpl index 12e49d8c12..9bdd8fdac7 100644 --- a/python-runtime/compile/build-template/main/main.py.tmpl +++ b/python-runtime/compile/build-template/main/main.py.tmpl @@ -1,3 +1,3 @@ -// Code generated by FTL. DO NOT EDIT. +# Code generated by FTL. DO NOT EDIT. {{- $name := .Name -}} diff --git a/python-runtime/compile/build.go b/python-runtime/compile/build.go index 05ec20ea97..6514afa98e 100644 --- a/python-runtime/compile/build.go +++ b/python-runtime/compile/build.go @@ -3,13 +3,17 @@ package compile import ( "context" "fmt" + "os" "path" "path/filepath" stdreflect "reflect" "strconv" "strings" + schemapb "github.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1/schema" + "github.com/TBD54566975/ftl/internal/exec" "github.com/block/scaffolder" + "google.golang.org/protobuf/proto" "github.com/TBD54566975/ftl/internal" "github.com/TBD54566975/ftl/internal/builderrors" @@ -40,14 +44,33 @@ func Build(ctx context.Context, projectRootDir, stubsRoot string, config modulec buildDir := buildDir(config.Dir) - // TODO: call the python schema extractor. grab the output of le script. unmarshal into schema proto. unmarshal that into go type. return - // same with build errors + // Execute the Python schema extractor + if err := exec.Command(ctx, log.Debug, config.Dir, "uv", "run", "-m", "ftl.cli.schema_extractor", ".").RunBuffered(ctx); err != nil { + return nil, nil, fmt.Errorf("failed to extract schema: %w", err) + } + + outputFile := filepath.Join(buildDir, "schema.pb") + serializedData, err := os.ReadFile(outputFile) + if err != nil { + return nil, nil, fmt.Errorf("failed to read serialized schema: %w", err) + } + + var modulepb schemapb.Module + err = proto.Unmarshal(serializedData, &modulepb) + if err != nil { + return nil, nil, fmt.Errorf("failed to unmarshal module proto: %w", err) + } + + module, err := schema.ModuleFromProto(&modulepb) + if err != nil { + return nil, nil, fmt.Errorf("failed to deserialize module schema: %w", err) + } if err := internal.ScaffoldZip(buildTemplateFiles(), buildDir, mctx, scaffolder.Functions(scaffoldFuncs)); err != nil { return moduleSch, nil, fmt.Errorf("failed to scaffold build template: %w", err) } - return nil, nil, nil + return module, nil, nil } var scaffoldFuncs = scaffolder.FuncMap{ diff --git a/python-runtime/compile/build_test.go b/python-runtime/compile/build_test.go new file mode 100644 index 0000000000..181fcf2dbe --- /dev/null +++ b/python-runtime/compile/build_test.go @@ -0,0 +1,55 @@ +package compile + +import ( + "context" + "os" + "path/filepath" + "testing" + + "github.com/TBD54566975/ftl/internal/exec" + "github.com/TBD54566975/ftl/internal/log" + "github.com/TBD54566975/ftl/internal/moduleconfig" + "github.com/TBD54566975/ftl/internal/schema" + "github.com/alecthomas/assert/v2" +) + +func TestBuild(t *testing.T) { + // set up + moduleDir, err := filepath.Abs("testdata/echo") + assert.NoError(t, err) + ctx := log.ContextWithNewDefaultLogger(context.Background()) + assert.NoError(t, os.RemoveAll(filepath.Join(moduleDir, ".venv"))) + assert.NoError(t, exec.Command(ctx, log.Debug, moduleDir, "uv", "sync", "-n").Run()) + + t.Run("schema extraction", func(t *testing.T) { + config := moduleconfig.AbsModuleConfig{ + Dir: moduleDir, + Module: "test", + } + actual, buildErrors, err := Build(ctx, "", "", config, &schema.Schema{}, nil, true) + assert.NoError(t, err) + assert.Equal(t, 0, len(buildErrors)) + expected := &schema.Module{ + Name: "echo", + Decls: []schema.Decl{ + &schema.Data{ + Name: "EchoRequest", + Fields: []*schema.Field{ + {Name: "name", Type: &schema.String{}}, + }, + }, + &schema.Data{ + Name: "EchoResponse", + Fields: []*schema.Field{ + {Name: "message", Type: &schema.String{}}, + }, + }, + &schema.Verb{Name: "echo", + Request: &schema.Ref{Module: "echo", Name: "EchoRequest"}, + Response: &schema.Ref{Module: "echo", Name: "EchoResponse"}, + }, + }, + } + assert.Equal(t, expected, actual, assert.Exclude[schema.Position]()) + }) +} diff --git a/python-runtime/compile/testdata/echo/.python-version b/python-runtime/compile/testdata/echo/.python-version new file mode 100644 index 0000000000..e4fba21835 --- /dev/null +++ b/python-runtime/compile/testdata/echo/.python-version @@ -0,0 +1 @@ +3.12 diff --git a/python-runtime/compile/testdata/echo/__init__.py b/python-runtime/compile/testdata/echo/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/python-runtime/compile/testdata/echo/echo.py b/python-runtime/compile/testdata/echo/echo.py new file mode 100644 index 0000000000..15aa1e9d99 --- /dev/null +++ b/python-runtime/compile/testdata/echo/echo.py @@ -0,0 +1,18 @@ +from dataclasses import dataclass + +from ftl import verb + + +@dataclass +class EchoRequest: + name: str + + +@dataclass +class EchoResponse: + message: str + + +@verb +def echo(req: EchoRequest) -> EchoResponse: + return EchoResponse(message=f"ayooo, {req.name}!") diff --git a/python-runtime/compile/testdata/echo/ftl.toml b/python-runtime/compile/testdata/echo/ftl.toml new file mode 100644 index 0000000000..c2a816fa1d --- /dev/null +++ b/python-runtime/compile/testdata/echo/ftl.toml @@ -0,0 +1,2 @@ +module = "echo" +language = "python" diff --git a/python-runtime/compile/testdata/echo/pyproject.toml b/python-runtime/compile/testdata/echo/pyproject.toml new file mode 100644 index 0000000000..f568ce406d --- /dev/null +++ b/python-runtime/compile/testdata/echo/pyproject.toml @@ -0,0 +1,10 @@ +[project] +name = "echo" +version = "0.1.0" +description = "Add your description here" +readme = "README.md" +requires-python = ">=3.12" +dependencies = ["ftl"] + +[tool.uv.sources] +ftl = { path = "../../../../python-runtime/ftl" } \ No newline at end of file diff --git a/python-runtime/compile/testdata/echo/uv.lock b/python-runtime/compile/testdata/echo/uv.lock new file mode 100644 index 0000000000..3d2346ed3c --- /dev/null +++ b/python-runtime/compile/testdata/echo/uv.lock @@ -0,0 +1,38 @@ +version = 1 +requires-python = ">=3.12" + +[[package]] +name = "echo" +version = "0.1.0" +source = { virtual = "." } +dependencies = [ + { name = "ftl" }, +] + +[package.metadata] +requires-dist = [{ name = "ftl", directory = "../../../ftl" }] + +[[package]] +name = "ftl" +version = "0.1.0" +source = { directory = "../../../ftl" } +dependencies = [ + { name = "protobuf" }, +] + +[package.metadata] +requires-dist = [{ name = "protobuf", specifier = ">=5.28.3" }] + +[[package]] +name = "protobuf" +version = "5.28.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/74/6e/e69eb906fddcb38f8530a12f4b410699972ab7ced4e21524ece9d546ac27/protobuf-5.28.3.tar.gz", hash = "sha256:64badbc49180a5e401f373f9ce7ab1d18b63f7dd4a9cdc43c92b9f0b481cef7b", size = 422479 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/c5/05163fad52d7c43e124a545f1372d18266db36036377ad29de4271134a6a/protobuf-5.28.3-cp310-abi3-win32.whl", hash = "sha256:0c4eec6f987338617072592b97943fdbe30d019c56126493111cf24344c1cc24", size = 419624 }, + { url = "https://files.pythonhosted.org/packages/9c/4c/4563ebe001ff30dca9d7ed12e471fa098d9759712980cde1fd03a3a44fb7/protobuf-5.28.3-cp310-abi3-win_amd64.whl", hash = "sha256:91fba8f445723fcf400fdbe9ca796b19d3b1242cd873907979b9ed71e4afe868", size = 431464 }, + { url = "https://files.pythonhosted.org/packages/1c/f2/baf397f3dd1d3e4af7e3f5a0382b868d25ac068eefe1ebde05132333436c/protobuf-5.28.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a3f6857551e53ce35e60b403b8a27b0295f7d6eb63d10484f12bc6879c715687", size = 414743 }, + { url = "https://files.pythonhosted.org/packages/85/50/cd61a358ba1601f40e7d38bcfba22e053f40ef2c50d55b55926aecc8fec7/protobuf-5.28.3-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:3fa2de6b8b29d12c61911505d893afe7320ce7ccba4df913e2971461fa36d584", size = 316511 }, + { url = "https://files.pythonhosted.org/packages/5d/ae/3257b09328c0b4e59535e497b0c7537d4954038bdd53a2f0d2f49d15a7c4/protobuf-5.28.3-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:712319fbdddb46f21abb66cd33cb9e491a5763b2febd8f228251add221981135", size = 316624 }, + { url = "https://files.pythonhosted.org/packages/ad/c3/2377c159e28ea89a91cf1ca223f827ae8deccb2c9c401e5ca233cd73002f/protobuf-5.28.3-py3-none-any.whl", hash = "sha256:cee1757663fa32a1ee673434fcf3bf24dd54763c79690201208bafec62f19eed", size = 169511 }, +] diff --git a/python-runtime/ftl/src/ftl/cli/schema_extractor.py b/python-runtime/ftl/src/ftl/cli/schema_extractor.py index 4d61fe2dcb..3a17659ef4 100644 --- a/python-runtime/ftl/src/ftl/cli/schema_extractor.py +++ b/python-runtime/ftl/src/ftl/cli/schema_extractor.py @@ -3,6 +3,7 @@ import concurrent.futures import os import sys +import tomllib from contextlib import contextmanager from ftl.extract import ( @@ -13,15 +14,14 @@ VerbExtractor, ) -# analyzers is now a list of lists, where each sublist contains analyzers that can run in parallel +# analyzers is a list of lists, where each sublist contains analyzers that can run in parallel analyzers = [ [VerbExtractor], [TransitiveExtractor], ] - @contextmanager -def set_analysis_mode(path): +def set_analysis_mode(path: str): original_sys_path = sys.path.copy() sys.path.append(path) try: @@ -30,7 +30,22 @@ def set_analysis_mode(path): sys.path = original_sys_path -def analyze_directory(module_dir): +def get_module_name(ftl_dir: str) -> str: + ftl_toml_path = os.path.join(ftl_dir, "ftl.toml") + + if not os.path.isfile(ftl_toml_path): + raise FileNotFoundError(f"ftl.toml file not found in the specified module directory: {ftl_dir}") + + with open(ftl_toml_path, "rb") as f: + config = tomllib.load(f) + module_name = config.get("module") + if module_name: + return module_name + else: + raise ValueError("module name not found in ftl.toml") + + +def analyze_directory(module_dir: str): """Analyze all Python files in the given module_dir in parallel.""" global_ctx = GlobalExtractionContext() @@ -55,14 +70,17 @@ def analyze_directory(module_dir): future.result() # raise any exception that occurred in the worker process except Exception as exc: print(f"failed to extract schema from {file_path}: {exc};") - # else: - # print(f"File {file_path} analyzed successfully.") - for ref_key, decl in global_ctx.deserialize().items(): - print(f"Extracted Decl:\n{decl}") + output_dir = os.path.join(module_dir, ".ftl") + os.makedirs(output_dir, exist_ok=True) # Create .ftl directory if it doesn't exist + output_file = os.path.join(output_dir, "schema.pb") + + serialized_schema = global_ctx.to_module_schema(get_module_name(module_dir)).SerializeToString() + with open(output_file, "wb") as f: + f.write(serialized_schema) -def analyze_file(global_ctx: GlobalExtractionContext, file_path, analyzer_batch): +def analyze_file(global_ctx: GlobalExtractionContext, file_path: str, analyzer_batch): """Analyze a single Python file using multiple analyzers in parallel.""" module_name = os.path.splitext(os.path.basename(file_path))[0] file_ast = ast.parse(open(file_path).read()) diff --git a/python-runtime/ftl/src/ftl/extract/__init__.py b/python-runtime/ftl/src/ftl/extract/__init__.py index 3c9282b199..a2acbf0963 100644 --- a/python-runtime/ftl/src/ftl/extract/__init__.py +++ b/python-runtime/ftl/src/ftl/extract/__init__.py @@ -1,4 +1,4 @@ -from .common import ( +from ftl.extract.common import ( extract_basic_type, extract_class_type, extract_function_type, @@ -6,8 +6,8 @@ extract_slice, extract_type, ) -from .context import GlobalExtractionContext, LocalExtractionContext -from .transitive import TransitiveExtractor +from ftl.extract.context import GlobalExtractionContext, LocalExtractionContext +from ftl.extract.transitive import TransitiveExtractor __all__ = [ "extract_type", diff --git a/python-runtime/ftl/src/ftl/extract/common.py b/python-runtime/ftl/src/ftl/extract/common.py index 3f5d7b0463..d5408eb7da 100644 --- a/python-runtime/ftl/src/ftl/extract/common.py +++ b/python-runtime/ftl/src/ftl/extract/common.py @@ -2,7 +2,7 @@ from ftl.protos.xyz.block.ftl.v1.schema import schema_pb2 as schemapb -from .context import LocalExtractionContext +from ftl.extract.context import LocalExtractionContext def extract_type( @@ -86,7 +86,7 @@ def extract_basic_type(type_hint: Type[Any]) -> Optional[schemapb.Type]: def extract_class_type( local_ctx: LocalExtractionContext, type_hint: Type[Any] ) -> Optional[schemapb.Type]: - ref = schemapb.Ref(name=type_hint.__name__, module=type_hint.__module__) + ref = schemapb.Ref(name=get_base_module_name(type_hint.__name__), module=type_hint.__module__) local_ctx.add_needs_extraction(ref) return schemapb.Type(ref=ref) @@ -94,6 +94,10 @@ def extract_class_type( def extract_function_type( local_ctx: LocalExtractionContext, type_hint: Type[Any] ) -> Optional[schemapb.Type]: - ref = schemapb.Ref(name=type_hint.__name__, module=type_hint.__module__) + ref = schemapb.Ref(name=get_base_module_name(type_hint.__name__), module=type_hint.__module__) local_ctx.add_needs_extraction(ref) return schemapb.Type(ref=ref) + +def get_base_module_name(fq_module_name: str) -> str: + """Return the base (root) module name from a fully qualified module name.""" + return fq_module_name.split('.')[0] \ No newline at end of file diff --git a/python-runtime/ftl/src/ftl/extract/context.py b/python-runtime/ftl/src/ftl/extract/context.py index 0be1d62efb..d2f203a929 100644 --- a/python-runtime/ftl/src/ftl/extract/context.py +++ b/python-runtime/ftl/src/ftl/extract/context.py @@ -1,27 +1,50 @@ import importlib.util import multiprocessing import threading +from typing import Dict from ftl.protos.xyz.block.ftl.v1.schema import schema_pb2 as schemapb +class RefKey: + def __init__(self, module: str, name: str): + self.module = module + self.name = name + + def __eq__(self, other: object) -> bool: + if isinstance(other, RefKey): + return self.module == other.module and self.name == other.name + return False + + def __hash__(self) -> int: + return hash((self.module, self.name)) + + def __repr__(self) -> str: + return f"RefKey(module={self.module}, name={self.name})" + + class LocalExtractionContext: """Local context for a single Python file.""" - def __init__(self, needs_extraction, verbs, data): + def __init__( + self, + needs_extraction: Dict[RefKey, bool], + verbs: Dict[RefKey, str], + data: Dict[RefKey, str] + ): self.verbs = verbs self.data = data self.needs_extraction = needs_extraction self.module_cache = {} self.cache_lock = threading.Lock() - def add_verb(self, module_name, verb): - """Add a verb to the shared verbs map.""" + def add_verb(self, module_name: str, verb: schemapb.Verb): + """Add a Verb to the shared verbs map.""" ref_key = RefKey(module=module_name, name=verb.name) self.verbs[ref_key] = verb.SerializeToString() - def add_data(self, module_name, data): - """Add a verb to the shared verbs map.""" + def add_data(self, module_name: str, data: schemapb.Data): + """Add Data to the shared data map.""" ref_key = RefKey(module=module_name, name=data.name) self.data[ref_key] = data.SerializeToString() @@ -35,11 +58,11 @@ def remove_needs_extraction(self, module, name): ref_key = RefKey(module=module, name=name) self.needs_extraction[ref_key] = False - def must_extract(self, module, name): - ref_key = RefKey(module=module, name=name) + def must_extract(self, module_name: str, name: str) -> bool: + ref_key = RefKey(module=module_name, name=name) return ref_key in self.needs_extraction - def load_python_module(self, module_name, file_path): + def load_python_module(self, module_name: str, file_path: str) -> object: """Load a Python module dynamically and cache it locally.""" with self.cache_lock: if file_path in self.module_cache: @@ -61,34 +84,25 @@ def __init__(self): self.verbs = manager.dict() self.data = manager.dict() - def deserialize(self): + def deserialize(self) -> Dict[RefKey, schemapb.Decl]: deserialized_decls = {} - for ref_key, serialized_decl in self.verbs.items(): - decl = schemapb.Verb() - decl.ParseFromString(serialized_decl) + for ref_key, serialized_verb in self.verbs.items(): + verb = schemapb.Verb() + verb.ParseFromString(serialized_verb) + decl = schemapb.Decl(verb=verb) deserialized_decls[ref_key] = decl - for ref_key, serialized_decl in self.data.items(): - decl = schemapb.Data() - decl.ParseFromString(serialized_decl) + for ref_key, serialized_data in self.data.items(): + data = schemapb.Data() + data.ParseFromString(serialized_data) + decl = schemapb.Decl(data=data) deserialized_decls[ref_key] = decl return deserialized_decls def init_local_context(self) -> LocalExtractionContext: return LocalExtractionContext(self.needs_extraction, self.verbs, self.data) - -class RefKey: - def __init__(self, module, name): - self.module = module - self.name = name - - def __eq__(self, other): - if isinstance(other, RefKey): - return self.module == other.module and self.name == other.name - return False - - def __hash__(self): - return hash((self.module, self.name)) - - def __repr__(self): - return f"RefKey(module={self.module}, name={self.name})" + def to_module_schema(self, module_name: str) -> schemapb.Module: + return schemapb.Module( + name=module_name, + decls=self.deserialize().values(), + ) diff --git a/python-runtime/ftl/src/ftl/extract/transitive.py b/python-runtime/ftl/src/ftl/extract/transitive.py index cd17ee84da..d4fc996664 100644 --- a/python-runtime/ftl/src/ftl/extract/transitive.py +++ b/python-runtime/ftl/src/ftl/extract/transitive.py @@ -1,19 +1,17 @@ import ast from typing import Any, Optional, Type +from ftl.extract.common import extract_type +from ftl.extract.context import LocalExtractionContext from ftl.protos.xyz.block.ftl.v1.schema import schema_pb2 as schemapb -from .common import extract_type -from .context import LocalExtractionContext - - class TransitiveExtractor(ast.NodeVisitor): - def __init__(self, context: LocalExtractionContext, module_name, file_path): + def __init__(self, context: LocalExtractionContext, module_name: str, file_path: str): self.context = context self.module_name = module_name self.file_path = file_path - def load_function(self, func_name): + def load_function(self, func_name: str): try: module = self.context.load_python_module(self.module_name, self.file_path) func = getattr(module, func_name, None) @@ -27,7 +25,7 @@ def load_function(self, func_name): @staticmethod def convert_ast_annotation_to_type_hint( - annotation_node: ast.AST, + annotation_node: ast.AST, ) -> Optional[Type[Any]]: """Converts an AST annotation node to a Python type hint.""" if isinstance(annotation_node, ast.Name): @@ -53,7 +51,7 @@ def visit_ClassDef(self, node): fields = [] for class_node in node.body: if isinstance( - class_node, ast.AnnAssign + class_node, ast.AnnAssign ): # Annotated assignment (field) field_name = ( class_node.target.id diff --git a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/console/console_pb2.py b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/console/console_pb2.py index 6cea2da33e..6a15e2a0cf 100644 --- a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/console/console_pb2.py +++ b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/console/console_pb2.py @@ -28,7 +28,7 @@ from xyz.block.ftl.v1.schema import schema_pb2 as xyz_dot_block_dot_ftl_dot_v1_dot_schema_dot_schema__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n&xyz/block/ftl/v1/console/console.proto\x12\x18xyz.block.ftl.v1.console\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1axyz/block/ftl/v1/ftl.proto\x1a$xyz/block/ftl/v1/schema/schema.proto\"\xb6\x03\n\x08LogEvent\x12%\n\x0e\x64\x65ployment_key\x18\x01 \x01(\tR\rdeploymentKey\x12$\n\x0brequest_key\x18\x02 \x01(\tH\x00R\nrequestKey\x88\x01\x01\x12\x39\n\ntime_stamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ttimeStamp\x12\x1b\n\tlog_level\x18\x04 \x01(\x05R\x08logLevel\x12R\n\nattributes\x18\x05 \x03(\x0b\x32\x32.xyz.block.ftl.v1.console.LogEvent.AttributesEntryR\nattributes\x12\x18\n\x07message\x18\x06 \x01(\tR\x07message\x12\x19\n\x05\x65rror\x18\x07 \x01(\tH\x01R\x05\x65rror\x88\x01\x01\x12\x19\n\x05stack\x18\x08 \x01(\tH\x02R\x05stack\x88\x01\x01\x1a=\n\x0f\x41ttributesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\x0e\n\x0c_request_keyB\x08\n\x06_errorB\x08\n\x06_stack\"\x95\x04\n\tCallEvent\x12$\n\x0brequest_key\x18\x01 \x01(\tH\x00R\nrequestKey\x88\x01\x01\x12%\n\x0e\x64\x65ployment_key\x18\x02 \x01(\tR\rdeploymentKey\x12\x39\n\ntime_stamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ttimeStamp\x12I\n\x0fsource_verb_ref\x18\x0b \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefH\x01R\rsourceVerbRef\x88\x01\x01\x12N\n\x14\x64\x65stination_verb_ref\x18\x0c \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x12\x64\x65stinationVerbRef\x12\x35\n\x08\x64uration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\x12\x18\n\x07request\x18\x07 \x01(\tR\x07request\x12\x1a\n\x08response\x18\x08 \x01(\tR\x08response\x12\x19\n\x05\x65rror\x18\t \x01(\tH\x02R\x05\x65rror\x88\x01\x01\x12\x19\n\x05stack\x18\n \x01(\tH\x03R\x05stack\x88\x01\x01\x42\x0e\n\x0c_request_keyB\x12\n\x10_source_verb_refB\x08\n\x06_errorB\x08\n\x06_stackJ\x04\x08\x04\x10\x05J\x04\x08\x05\x10\x06\"\xb8\x01\n\x16\x44\x65ploymentCreatedEvent\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x1a\n\x08language\x18\x02 \x01(\tR\x08language\x12\x1f\n\x0bmodule_name\x18\x03 \x01(\tR\nmoduleName\x12!\n\x0cmin_replicas\x18\x04 \x01(\x05R\x0bminReplicas\x12\x1f\n\x08replaced\x18\x05 \x01(\tH\x00R\x08replaced\x88\x01\x01\x42\x0b\n\t_replaced\"y\n\x16\x44\x65ploymentUpdatedEvent\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12!\n\x0cmin_replicas\x18\x02 \x01(\x05R\x0bminReplicas\x12*\n\x11prev_min_replicas\x18\x03 \x01(\x05R\x0fprevMinReplicas\"\x8e\x04\n\x0cIngressEvent\x12%\n\x0e\x64\x65ployment_key\x18\x01 \x01(\tR\rdeploymentKey\x12$\n\x0brequest_key\x18\x02 \x01(\tH\x00R\nrequestKey\x88\x01\x01\x12\x37\n\x08verb_ref\x18\x03 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x07verbRef\x12\x16\n\x06method\x18\x04 \x01(\tR\x06method\x12\x12\n\x04path\x18\x05 \x01(\tR\x04path\x12\x1f\n\x0bstatus_code\x18\x07 \x01(\x05R\nstatusCode\x12\x39\n\ntime_stamp\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ttimeStamp\x12\x35\n\x08\x64uration\x18\t \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\x12\x18\n\x07request\x18\n \x01(\tR\x07request\x12%\n\x0erequest_header\x18\x0b \x01(\tR\rrequestHeader\x12\x1a\n\x08response\x18\x0c \x01(\tR\x08response\x12\'\n\x0fresponse_header\x18\r \x01(\tR\x0eresponseHeader\x12\x19\n\x05\x65rror\x18\x0e \x01(\tH\x01R\x05\x65rror\x88\x01\x01\x42\x0e\n\x0c_request_keyB\x08\n\x06_error\"\xe6\x02\n\x12\x43ronScheduledEvent\x12%\n\x0e\x64\x65ployment_key\x18\x01 \x01(\tR\rdeploymentKey\x12\x37\n\x08verb_ref\x18\x02 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x07verbRef\x12\x39\n\ntime_stamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ttimeStamp\x12\x35\n\x08\x64uration\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\x12=\n\x0cscheduled_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0bscheduledAt\x12\x1a\n\x08schedule\x18\x06 \x01(\tR\x08schedule\x12\x19\n\x05\x65rror\x18\x07 \x01(\tH\x00R\x05\x65rror\x88\x01\x01\x42\x08\n\x06_error\"\x9b\x03\n\x11\x41syncExecuteEvent\x12%\n\x0e\x64\x65ployment_key\x18\x01 \x01(\tR\rdeploymentKey\x12$\n\x0brequest_key\x18\x02 \x01(\tH\x00R\nrequestKey\x88\x01\x01\x12\x37\n\x08verb_ref\x18\x03 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x07verbRef\x12\x39\n\ntime_stamp\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ttimeStamp\x12\x35\n\x08\x64uration\x18\x05 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\x12Y\n\x10\x61sync_event_type\x18\x06 \x01(\x0e\x32/.xyz.block.ftl.v1.console.AsyncExecuteEventTypeR\x0e\x61syncEventType\x12\x19\n\x05\x65rror\x18\x07 \x01(\tH\x01R\x05\x65rror\x88\x01\x01\x42\x0e\n\x0c_request_keyB\x08\n\x06_error\"\xf1\x02\n\x12PubSubPublishEvent\x12%\n\x0e\x64\x65ployment_key\x18\x01 \x01(\tR\rdeploymentKey\x12$\n\x0brequest_key\x18\x02 \x01(\tH\x00R\nrequestKey\x88\x01\x01\x12\x37\n\x08verb_ref\x18\x03 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x07verbRef\x12\x39\n\ntime_stamp\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ttimeStamp\x12\x35\n\x08\x64uration\x18\x05 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\x12\x14\n\x05topic\x18\x06 \x01(\tR\x05topic\x12\x18\n\x07request\x18\x07 \x01(\tR\x07request\x12\x19\n\x05\x65rror\x18\x08 \x01(\tH\x01R\x05\x65rror\x88\x01\x01\x42\x0e\n\x0c_request_keyB\x08\n\x06_error\"\xa0\x03\n\x12PubSubConsumeEvent\x12%\n\x0e\x64\x65ployment_key\x18\x01 \x01(\tR\rdeploymentKey\x12$\n\x0brequest_key\x18\x02 \x01(\tH\x00R\nrequestKey\x88\x01\x01\x12-\n\x10\x64\x65st_verb_module\x18\x03 \x01(\tH\x01R\x0e\x64\x65stVerbModule\x88\x01\x01\x12)\n\x0e\x64\x65st_verb_name\x18\x04 \x01(\tH\x02R\x0c\x64\x65stVerbName\x88\x01\x01\x12\x39\n\ntime_stamp\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ttimeStamp\x12\x35\n\x08\x64uration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\x12\x14\n\x05topic\x18\x07 \x01(\tR\x05topic\x12\x19\n\x05\x65rror\x18\x08 \x01(\tH\x03R\x05\x65rror\x88\x01\x01\x42\x0e\n\x0c_request_keyB\x13\n\x11_dest_verb_moduleB\x11\n\x0f_dest_verb_nameB\x08\n\x06_error\"\x7f\n\x06\x43onfig\x12\x37\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\x1f.xyz.block.ftl.v1.schema.ConfigR\x06\x63onfig\x12<\n\nreferences\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\nreferences\"\x8f\x01\n\x04\x44\x61ta\x12\x31\n\x04\x64\x61ta\x18\x01 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.DataR\x04\x64\x61ta\x12\x16\n\x06schema\x18\x02 \x01(\tR\x06schema\x12<\n\nreferences\x18\x03 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\nreferences\"\x87\x01\n\x08\x44\x61tabase\x12=\n\x08\x64\x61tabase\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.DatabaseR\x08\x64\x61tabase\x12<\n\nreferences\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\nreferences\"w\n\x04\x45num\x12\x31\n\x04\x65num\x18\x01 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.EnumR\x04\x65num\x12<\n\nreferences\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\nreferences\"{\n\x05Topic\x12\x34\n\x05topic\x18\x01 \x01(\x0b\x32\x1e.xyz.block.ftl.v1.schema.TopicR\x05topic\x12<\n\nreferences\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\nreferences\"\x8b\x01\n\tTypeAlias\x12@\n\ttypealias\x18\x01 \x01(\x0b\x32\".xyz.block.ftl.v1.schema.TypeAliasR\ttypealias\x12<\n\nreferences\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\nreferences\"\x7f\n\x06Secret\x12\x37\n\x06secret\x18\x01 \x01(\x0b\x32\x1f.xyz.block.ftl.v1.schema.SecretR\x06secret\x12<\n\nreferences\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\nreferences\"\x97\x01\n\x0cSubscription\x12I\n\x0csubscription\x18\x01 \x01(\x0b\x32%.xyz.block.ftl.v1.schema.SubscriptionR\x0csubscription\x12<\n\nreferences\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\nreferences\"\xbf\x01\n\x04Verb\x12\x31\n\x04verb\x18\x01 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.VerbR\x04verb\x12\x16\n\x06schema\x18\x02 \x01(\tR\x06schema\x12.\n\x13json_request_schema\x18\x03 \x01(\tR\x11jsonRequestSchema\x12<\n\nreferences\x18\x04 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\nreferences\"\x9f\x05\n\x06Module\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12%\n\x0e\x64\x65ployment_key\x18\x02 \x01(\tR\rdeploymentKey\x12\x1a\n\x08language\x18\x03 \x01(\tR\x08language\x12\x16\n\x06schema\x18\x04 \x01(\tR\x06schema\x12\x34\n\x05verbs\x18\x05 \x03(\x0b\x32\x1e.xyz.block.ftl.v1.console.VerbR\x05verbs\x12\x32\n\x04\x64\x61ta\x18\x06 \x03(\x0b\x32\x1e.xyz.block.ftl.v1.console.DataR\x04\x64\x61ta\x12:\n\x07secrets\x18\x07 \x03(\x0b\x32 .xyz.block.ftl.v1.console.SecretR\x07secrets\x12:\n\x07\x63onfigs\x18\x08 \x03(\x0b\x32 .xyz.block.ftl.v1.console.ConfigR\x07\x63onfigs\x12@\n\tdatabases\x18\t \x03(\x0b\x32\".xyz.block.ftl.v1.console.DatabaseR\tdatabases\x12\x34\n\x05\x65nums\x18\n \x03(\x0b\x32\x1e.xyz.block.ftl.v1.console.EnumR\x05\x65nums\x12\x37\n\x06topics\x18\x0b \x03(\x0b\x32\x1f.xyz.block.ftl.v1.console.TopicR\x06topics\x12\x45\n\x0btypealiases\x18\x0c \x03(\x0b\x32#.xyz.block.ftl.v1.console.TypeAliasR\x0btypealiases\x12L\n\rsubscriptions\x18\r \x03(\x0b\x32&.xyz.block.ftl.v1.console.SubscriptionR\rsubscriptions\")\n\rTopologyGroup\x12\x18\n\x07modules\x18\x01 \x03(\tR\x07modules\"K\n\x08Topology\x12?\n\x06levels\x18\x01 \x03(\x0b\x32\'.xyz.block.ftl.v1.console.TopologyGroupR\x06levels\"\x13\n\x11GetModulesRequest\"\x90\x01\n\x12GetModulesResponse\x12:\n\x07modules\x18\x01 \x03(\x0b\x32 .xyz.block.ftl.v1.console.ModuleR\x07modules\x12>\n\x08topology\x18\x02 \x01(\x0b\x32\".xyz.block.ftl.v1.console.TopologyR\x08topology\"\x16\n\x14StreamModulesRequest\"S\n\x15StreamModulesResponse\x12:\n\x07modules\x18\x01 \x03(\x0b\x32 .xyz.block.ftl.v1.console.ModuleR\x07modules\"\xe4\r\n\x0b\x45ventsQuery\x12\x46\n\x07\x66ilters\x18\x01 \x03(\x0b\x32,.xyz.block.ftl.v1.console.EventsQuery.FilterR\x07\x66ilters\x12\x14\n\x05limit\x18\x02 \x01(\x05R\x05limit\x12\x41\n\x05order\x18\x03 \x01(\x0e\x32+.xyz.block.ftl.v1.console.EventsQuery.OrderR\x05order\x1a#\n\x0bLimitFilter\x12\x14\n\x05limit\x18\x01 \x01(\x05R\x05limit\x1aQ\n\x0eLogLevelFilter\x12?\n\tlog_level\x18\x01 \x01(\x0e\x32\".xyz.block.ftl.v1.console.LogLevelR\x08logLevel\x1a\x34\n\x10\x44\x65ploymentFilter\x12 \n\x0b\x64\x65ployments\x18\x01 \x03(\tR\x0b\x64\x65ployments\x1a+\n\rRequestFilter\x12\x1a\n\x08requests\x18\x01 \x03(\tR\x08requests\x1aW\n\x0f\x45ventTypeFilter\x12\x44\n\x0b\x65vent_types\x18\x01 \x03(\x0e\x32#.xyz.block.ftl.v1.console.EventTypeR\neventTypes\x1a\xaa\x01\n\nTimeFilter\x12>\n\nolder_than\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\tolderThan\x88\x01\x01\x12>\n\nnewer_than\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01R\tnewerThan\x88\x01\x01\x42\r\n\x0b_older_thanB\r\n\x0b_newer_than\x1as\n\x08IDFilter\x12\"\n\nlower_than\x18\x01 \x01(\x03H\x00R\tlowerThan\x88\x01\x01\x12$\n\x0bhigher_than\x18\x02 \x01(\x03H\x01R\nhigherThan\x88\x01\x01\x42\r\n\x0b_lower_thanB\x0e\n\x0c_higher_than\x1a\x99\x01\n\nCallFilter\x12\x1f\n\x0b\x64\x65st_module\x18\x01 \x01(\tR\ndestModule\x12 \n\tdest_verb\x18\x02 \x01(\tH\x00R\x08\x64\x65stVerb\x88\x01\x01\x12(\n\rsource_module\x18\x03 \x01(\tH\x01R\x0csourceModule\x88\x01\x01\x42\x0c\n\n_dest_verbB\x10\n\x0e_source_module\x1aH\n\x0cModuleFilter\x12\x16\n\x06module\x18\x01 \x01(\tR\x06module\x12\x17\n\x04verb\x18\x02 \x01(\tH\x00R\x04verb\x88\x01\x01\x42\x07\n\x05_verb\x1a\xdb\x05\n\x06\x46ilter\x12I\n\x05limit\x18\x01 \x01(\x0b\x32\x31.xyz.block.ftl.v1.console.EventsQuery.LimitFilterH\x00R\x05limit\x12S\n\tlog_level\x18\x02 \x01(\x0b\x32\x34.xyz.block.ftl.v1.console.EventsQuery.LogLevelFilterH\x00R\x08logLevel\x12Z\n\x0b\x64\x65ployments\x18\x03 \x01(\x0b\x32\x36.xyz.block.ftl.v1.console.EventsQuery.DeploymentFilterH\x00R\x0b\x64\x65ployments\x12Q\n\x08requests\x18\x04 \x01(\x0b\x32\x33.xyz.block.ftl.v1.console.EventsQuery.RequestFilterH\x00R\x08requests\x12X\n\x0b\x65vent_types\x18\x05 \x01(\x0b\x32\x35.xyz.block.ftl.v1.console.EventsQuery.EventTypeFilterH\x00R\neventTypes\x12\x46\n\x04time\x18\x06 \x01(\x0b\x32\x30.xyz.block.ftl.v1.console.EventsQuery.TimeFilterH\x00R\x04time\x12@\n\x02id\x18\x07 \x01(\x0b\x32..xyz.block.ftl.v1.console.EventsQuery.IDFilterH\x00R\x02id\x12\x46\n\x04\x63\x61ll\x18\x08 \x01(\x0b\x32\x30.xyz.block.ftl.v1.console.EventsQuery.CallFilterH\x00R\x04\x63\x61ll\x12L\n\x06module\x18\t \x01(\x0b\x32\x32.xyz.block.ftl.v1.console.EventsQuery.ModuleFilterH\x00R\x06moduleB\x08\n\x06\x66ilter\"\x1a\n\x05Order\x12\x07\n\x03\x41SC\x10\x00\x12\x08\n\x04\x44\x45SC\x10\x01\"\xaf\x01\n\x13StreamEventsRequest\x12G\n\x0fupdate_interval\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00R\x0eupdateInterval\x88\x01\x01\x12;\n\x05query\x18\x02 \x01(\x0b\x32%.xyz.block.ftl.v1.console.EventsQueryR\x05queryB\x12\n\x10_update_interval\"O\n\x14StreamEventsResponse\x12\x37\n\x06\x65vents\x18\x01 \x03(\x0b\x32\x1f.xyz.block.ftl.v1.console.EventR\x06\x65vents\"\xb1\x06\n\x05\x45vent\x12\x39\n\ntime_stamp\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ttimeStamp\x12\x0e\n\x02id\x18\x02 \x01(\x03R\x02id\x12\x36\n\x03log\x18\x03 \x01(\x0b\x32\".xyz.block.ftl.v1.console.LogEventH\x00R\x03log\x12\x39\n\x04\x63\x61ll\x18\x04 \x01(\x0b\x32#.xyz.block.ftl.v1.console.CallEventH\x00R\x04\x63\x61ll\x12\x61\n\x12\x64\x65ployment_created\x18\x05 \x01(\x0b\x32\x30.xyz.block.ftl.v1.console.DeploymentCreatedEventH\x00R\x11\x64\x65ploymentCreated\x12\x61\n\x12\x64\x65ployment_updated\x18\x06 \x01(\x0b\x32\x30.xyz.block.ftl.v1.console.DeploymentUpdatedEventH\x00R\x11\x64\x65ploymentUpdated\x12\x42\n\x07ingress\x18\x07 \x01(\x0b\x32&.xyz.block.ftl.v1.console.IngressEventH\x00R\x07ingress\x12U\n\x0e\x63ron_scheduled\x18\x08 \x01(\x0b\x32,.xyz.block.ftl.v1.console.CronScheduledEventH\x00R\rcronScheduled\x12R\n\rasync_execute\x18\t \x01(\x0b\x32+.xyz.block.ftl.v1.console.AsyncExecuteEventH\x00R\x0c\x61syncExecute\x12U\n\x0epubsub_publish\x18\n \x01(\x0b\x32,.xyz.block.ftl.v1.console.PubSubPublishEventH\x00R\rpubsubPublish\x12U\n\x0epubsub_consume\x18\x0b \x01(\x0b\x32,.xyz.block.ftl.v1.console.PubSubConsumeEventH\x00R\rpubsubConsumeB\x07\n\x05\x65ntry\"t\n\x11GetEventsResponse\x12\x37\n\x06\x65vents\x18\x01 \x03(\x0b\x32\x1f.xyz.block.ftl.v1.console.EventR\x06\x65vents\x12\x1b\n\x06\x63ursor\x18\x02 \x01(\x03H\x00R\x06\x63ursor\x88\x01\x01\x42\t\n\x07_cursor*\xa5\x02\n\tEventType\x12\x16\n\x12\x45VENT_TYPE_UNKNOWN\x10\x00\x12\x12\n\x0e\x45VENT_TYPE_LOG\x10\x01\x12\x13\n\x0f\x45VENT_TYPE_CALL\x10\x02\x12!\n\x1d\x45VENT_TYPE_DEPLOYMENT_CREATED\x10\x03\x12!\n\x1d\x45VENT_TYPE_DEPLOYMENT_UPDATED\x10\x04\x12\x16\n\x12\x45VENT_TYPE_INGRESS\x10\x05\x12\x1d\n\x19\x45VENT_TYPE_CRON_SCHEDULED\x10\x06\x12\x1c\n\x18\x45VENT_TYPE_ASYNC_EXECUTE\x10\x07\x12\x1d\n\x19\x45VENT_TYPE_PUBSUB_PUBLISH\x10\x08\x12\x1d\n\x19\x45VENT_TYPE_PUBSUB_CONSUME\x10\t*\x85\x01\n\x15\x41syncExecuteEventType\x12$\n ASYNC_EXECUTE_EVENT_TYPE_UNKNOWN\x10\x00\x12!\n\x1d\x41SYNC_EXECUTE_EVENT_TYPE_CRON\x10\x01\x12#\n\x1f\x41SYNC_EXECUTE_EVENT_TYPE_PUBSUB\x10\x02*\x88\x01\n\x08LogLevel\x12\x15\n\x11LOG_LEVEL_UNKNOWN\x10\x00\x12\x13\n\x0fLOG_LEVEL_TRACE\x10\x01\x12\x13\n\x0fLOG_LEVEL_DEBUG\x10\x05\x12\x12\n\x0eLOG_LEVEL_INFO\x10\t\x12\x12\n\x0eLOG_LEVEL_WARN\x10\r\x12\x13\n\x0fLOG_LEVEL_ERROR\x10\x11\x32\x8b\x04\n\x0e\x43onsoleService\x12J\n\x04Ping\x12\x1d.xyz.block.ftl.v1.PingRequest\x1a\x1e.xyz.block.ftl.v1.PingResponse\"\x03\x90\x02\x01\x12g\n\nGetModules\x12+.xyz.block.ftl.v1.console.GetModulesRequest\x1a,.xyz.block.ftl.v1.console.GetModulesResponse\x12r\n\rStreamModules\x12..xyz.block.ftl.v1.console.StreamModulesRequest\x1a/.xyz.block.ftl.v1.console.StreamModulesResponse0\x01\x12o\n\x0cStreamEvents\x12-.xyz.block.ftl.v1.console.StreamEventsRequest\x1a..xyz.block.ftl.v1.console.StreamEventsResponse0\x01\x12_\n\tGetEvents\x12%.xyz.block.ftl.v1.console.EventsQuery\x1a+.xyz.block.ftl.v1.console.GetEventsResponseBPP\x01ZLgithub.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1/console;pbconsoleb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n&xyz/block/ftl/v1/console/console.proto\x12\x18xyz.block.ftl.v1.console\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1axyz/block/ftl/v1/ftl.proto\x1a$xyz/block/ftl/v1/schema/schema.proto\"\xd7\x02\n\x08LogEvent\x12\x16\n\x0e\x64\x65ployment_key\x18\x01 \x01(\t\x12\x18\n\x0brequest_key\x18\x02 \x01(\tH\x00\x88\x01\x01\x12.\n\ntime_stamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x11\n\tlog_level\x18\x04 \x01(\x05\x12\x46\n\nattributes\x18\x05 \x03(\x0b\x32\x32.xyz.block.ftl.v1.console.LogEvent.AttributesEntry\x12\x0f\n\x07message\x18\x06 \x01(\t\x12\x12\n\x05\x65rror\x18\x07 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05stack\x18\x08 \x01(\tH\x02\x88\x01\x01\x1a\x31\n\x0f\x41ttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0e\n\x0c_request_keyB\x08\n\x06_errorB\x08\n\x06_stack\"\xa1\x03\n\tCallEvent\x12\x18\n\x0brequest_key\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x16\n\x0e\x64\x65ployment_key\x18\x02 \x01(\t\x12.\n\ntime_stamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12:\n\x0fsource_verb_ref\x18\x0b \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefH\x01\x88\x01\x01\x12:\n\x14\x64\x65stination_verb_ref\x18\x0c \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.Ref\x12+\n\x08\x64uration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x0f\n\x07request\x18\x07 \x01(\t\x12\x10\n\x08response\x18\x08 \x01(\t\x12\x12\n\x05\x65rror\x18\t \x01(\tH\x02\x88\x01\x01\x12\x12\n\x05stack\x18\n \x01(\tH\x03\x88\x01\x01\x42\x0e\n\x0c_request_keyB\x12\n\x10_source_verb_refB\x08\n\x06_errorB\x08\n\x06_stackJ\x04\x08\x04\x10\x05J\x04\x08\x05\x10\x06\"\x86\x01\n\x16\x44\x65ploymentCreatedEvent\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x10\n\x08language\x18\x02 \x01(\t\x12\x13\n\x0bmodule_name\x18\x03 \x01(\t\x12\x14\n\x0cmin_replicas\x18\x04 \x01(\x05\x12\x15\n\x08replaced\x18\x05 \x01(\tH\x00\x88\x01\x01\x42\x0b\n\t_replaced\"V\n\x16\x44\x65ploymentUpdatedEvent\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x14\n\x0cmin_replicas\x18\x02 \x01(\x05\x12\x19\n\x11prev_min_replicas\x18\x03 \x01(\x05\"\x82\x03\n\x0cIngressEvent\x12\x16\n\x0e\x64\x65ployment_key\x18\x01 \x01(\t\x12\x18\n\x0brequest_key\x18\x02 \x01(\tH\x00\x88\x01\x01\x12.\n\x08verb_ref\x18\x03 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.Ref\x12\x0e\n\x06method\x18\x04 \x01(\t\x12\x0c\n\x04path\x18\x05 \x01(\t\x12\x13\n\x0bstatus_code\x18\x07 \x01(\x05\x12.\n\ntime_stamp\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x08\x64uration\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x0f\n\x07request\x18\n \x01(\t\x12\x16\n\x0erequest_header\x18\x0b \x01(\t\x12\x10\n\x08response\x18\x0c \x01(\t\x12\x17\n\x0fresponse_header\x18\r \x01(\t\x12\x12\n\x05\x65rror\x18\x0e \x01(\tH\x01\x88\x01\x01\x42\x0e\n\x0c_request_keyB\x08\n\x06_error\"\x9b\x02\n\x12\x43ronScheduledEvent\x12\x16\n\x0e\x64\x65ployment_key\x18\x01 \x01(\t\x12.\n\x08verb_ref\x18\x02 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.Ref\x12.\n\ntime_stamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x08\x64uration\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x30\n\x0cscheduled_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x10\n\x08schedule\x18\x06 \x01(\t\x12\x12\n\x05\x65rror\x18\x07 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_error\"\xcb\x02\n\x11\x41syncExecuteEvent\x12\x16\n\x0e\x64\x65ployment_key\x18\x01 \x01(\t\x12\x18\n\x0brequest_key\x18\x02 \x01(\tH\x00\x88\x01\x01\x12.\n\x08verb_ref\x18\x03 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.Ref\x12.\n\ntime_stamp\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x08\x64uration\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12I\n\x10\x61sync_event_type\x18\x06 \x01(\x0e\x32/.xyz.block.ftl.v1.console.AsyncExecuteEventType\x12\x12\n\x05\x65rror\x18\x07 \x01(\tH\x01\x88\x01\x01\x42\x0e\n\x0c_request_keyB\x08\n\x06_error\"\xa1\x02\n\x12PubSubPublishEvent\x12\x16\n\x0e\x64\x65ployment_key\x18\x01 \x01(\t\x12\x18\n\x0brequest_key\x18\x02 \x01(\tH\x00\x88\x01\x01\x12.\n\x08verb_ref\x18\x03 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.Ref\x12.\n\ntime_stamp\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x08\x64uration\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\r\n\x05topic\x18\x06 \x01(\t\x12\x0f\n\x07request\x18\x07 \x01(\t\x12\x12\n\x05\x65rror\x18\x08 \x01(\tH\x01\x88\x01\x01\x42\x0e\n\x0c_request_keyB\x08\n\x06_error\"\xc4\x02\n\x12PubSubConsumeEvent\x12\x16\n\x0e\x64\x65ployment_key\x18\x01 \x01(\t\x12\x18\n\x0brequest_key\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x1d\n\x10\x64\x65st_verb_module\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x1b\n\x0e\x64\x65st_verb_name\x18\x04 \x01(\tH\x02\x88\x01\x01\x12.\n\ntime_stamp\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x08\x64uration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\r\n\x05topic\x18\x07 \x01(\t\x12\x12\n\x05\x65rror\x18\x08 \x01(\tH\x03\x88\x01\x01\x42\x0e\n\x0c_request_keyB\x13\n\x11_dest_verb_moduleB\x11\n\x0f_dest_verb_nameB\x08\n\x06_error\"k\n\x06\x43onfig\x12/\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\x1f.xyz.block.ftl.v1.schema.Config\x12\x30\n\nreferences\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.Ref\"u\n\x04\x44\x61ta\x12+\n\x04\x64\x61ta\x18\x01 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.Data\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x30\n\nreferences\x18\x03 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.Ref\"q\n\x08\x44\x61tabase\x12\x33\n\x08\x64\x61tabase\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.Database\x12\x30\n\nreferences\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.Ref\"e\n\x04\x45num\x12+\n\x04\x65num\x18\x01 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.Enum\x12\x30\n\nreferences\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.Ref\"h\n\x05Topic\x12-\n\x05topic\x18\x01 \x01(\x0b\x32\x1e.xyz.block.ftl.v1.schema.Topic\x12\x30\n\nreferences\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.Ref\"t\n\tTypeAlias\x12\x35\n\ttypealias\x18\x01 \x01(\x0b\x32\".xyz.block.ftl.v1.schema.TypeAlias\x12\x30\n\nreferences\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.Ref\"k\n\x06Secret\x12/\n\x06secret\x18\x01 \x01(\x0b\x32\x1f.xyz.block.ftl.v1.schema.Secret\x12\x30\n\nreferences\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.Ref\"}\n\x0cSubscription\x12;\n\x0csubscription\x18\x01 \x01(\x0b\x32%.xyz.block.ftl.v1.schema.Subscription\x12\x30\n\nreferences\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.Ref\"\x92\x01\n\x04Verb\x12+\n\x04verb\x18\x01 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.Verb\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x1b\n\x13json_request_schema\x18\x03 \x01(\t\x12\x30\n\nreferences\x18\x04 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.Ref\"\xa3\x04\n\x06Module\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x16\n\x0e\x64\x65ployment_key\x18\x02 \x01(\t\x12\x10\n\x08language\x18\x03 \x01(\t\x12\x0e\n\x06schema\x18\x04 \x01(\t\x12-\n\x05verbs\x18\x05 \x03(\x0b\x32\x1e.xyz.block.ftl.v1.console.Verb\x12,\n\x04\x64\x61ta\x18\x06 \x03(\x0b\x32\x1e.xyz.block.ftl.v1.console.Data\x12\x31\n\x07secrets\x18\x07 \x03(\x0b\x32 .xyz.block.ftl.v1.console.Secret\x12\x31\n\x07\x63onfigs\x18\x08 \x03(\x0b\x32 .xyz.block.ftl.v1.console.Config\x12\x35\n\tdatabases\x18\t \x03(\x0b\x32\".xyz.block.ftl.v1.console.Database\x12-\n\x05\x65nums\x18\n \x03(\x0b\x32\x1e.xyz.block.ftl.v1.console.Enum\x12/\n\x06topics\x18\x0b \x03(\x0b\x32\x1f.xyz.block.ftl.v1.console.Topic\x12\x38\n\x0btypealiases\x18\x0c \x03(\x0b\x32#.xyz.block.ftl.v1.console.TypeAlias\x12=\n\rsubscriptions\x18\r \x03(\x0b\x32&.xyz.block.ftl.v1.console.Subscription\" \n\rTopologyGroup\x12\x0f\n\x07modules\x18\x01 \x03(\t\"C\n\x08Topology\x12\x37\n\x06levels\x18\x01 \x03(\x0b\x32\'.xyz.block.ftl.v1.console.TopologyGroup\"\x13\n\x11GetModulesRequest\"}\n\x12GetModulesResponse\x12\x31\n\x07modules\x18\x01 \x03(\x0b\x32 .xyz.block.ftl.v1.console.Module\x12\x34\n\x08topology\x18\x02 \x01(\x0b\x32\".xyz.block.ftl.v1.console.Topology\"\x16\n\x14StreamModulesRequest\"J\n\x15StreamModulesResponse\x12\x31\n\x07modules\x18\x01 \x03(\x0b\x32 .xyz.block.ftl.v1.console.Module\"\xed\x0b\n\x0b\x45ventsQuery\x12=\n\x07\x66ilters\x18\x01 \x03(\x0b\x32,.xyz.block.ftl.v1.console.EventsQuery.Filter\x12\r\n\x05limit\x18\x02 \x01(\x05\x12:\n\x05order\x18\x03 \x01(\x0e\x32+.xyz.block.ftl.v1.console.EventsQuery.Order\x1a\x1c\n\x0bLimitFilter\x12\r\n\x05limit\x18\x01 \x01(\x05\x1aG\n\x0eLogLevelFilter\x12\x35\n\tlog_level\x18\x01 \x01(\x0e\x32\".xyz.block.ftl.v1.console.LogLevel\x1a\'\n\x10\x44\x65ploymentFilter\x12\x13\n\x0b\x64\x65ployments\x18\x01 \x03(\t\x1a!\n\rRequestFilter\x12\x10\n\x08requests\x18\x01 \x03(\t\x1aK\n\x0f\x45ventTypeFilter\x12\x38\n\x0b\x65vent_types\x18\x01 \x03(\x0e\x32#.xyz.block.ftl.v1.console.EventType\x1a\x94\x01\n\nTimeFilter\x12\x33\n\nolder_than\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00\x88\x01\x01\x12\x33\n\nnewer_than\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01\x88\x01\x01\x42\r\n\x0b_older_thanB\r\n\x0b_newer_than\x1a\\\n\x08IDFilter\x12\x17\n\nlower_than\x18\x01 \x01(\x03H\x00\x88\x01\x01\x12\x18\n\x0bhigher_than\x18\x02 \x01(\x03H\x01\x88\x01\x01\x42\r\n\x0b_lower_thanB\x0e\n\x0c_higher_than\x1au\n\nCallFilter\x12\x13\n\x0b\x64\x65st_module\x18\x01 \x01(\t\x12\x16\n\tdest_verb\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x1a\n\rsource_module\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x0c\n\n_dest_verbB\x10\n\x0e_source_module\x1a:\n\x0cModuleFilter\x12\x0e\n\x06module\x18\x01 \x01(\t\x12\x11\n\x04verb\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x07\n\x05_verb\x1a\x8f\x05\n\x06\x46ilter\x12\x42\n\x05limit\x18\x01 \x01(\x0b\x32\x31.xyz.block.ftl.v1.console.EventsQuery.LimitFilterH\x00\x12I\n\tlog_level\x18\x02 \x01(\x0b\x32\x34.xyz.block.ftl.v1.console.EventsQuery.LogLevelFilterH\x00\x12M\n\x0b\x64\x65ployments\x18\x03 \x01(\x0b\x32\x36.xyz.block.ftl.v1.console.EventsQuery.DeploymentFilterH\x00\x12G\n\x08requests\x18\x04 \x01(\x0b\x32\x33.xyz.block.ftl.v1.console.EventsQuery.RequestFilterH\x00\x12L\n\x0b\x65vent_types\x18\x05 \x01(\x0b\x32\x35.xyz.block.ftl.v1.console.EventsQuery.EventTypeFilterH\x00\x12@\n\x04time\x18\x06 \x01(\x0b\x32\x30.xyz.block.ftl.v1.console.EventsQuery.TimeFilterH\x00\x12<\n\x02id\x18\x07 \x01(\x0b\x32..xyz.block.ftl.v1.console.EventsQuery.IDFilterH\x00\x12@\n\x04\x63\x61ll\x18\x08 \x01(\x0b\x32\x30.xyz.block.ftl.v1.console.EventsQuery.CallFilterH\x00\x12\x44\n\x06module\x18\t \x01(\x0b\x32\x32.xyz.block.ftl.v1.console.EventsQuery.ModuleFilterH\x00\x42\x08\n\x06\x66ilter\"\x1a\n\x05Order\x12\x07\n\x03\x41SC\x10\x00\x12\x08\n\x04\x44\x45SC\x10\x01\"\x98\x01\n\x13StreamEventsRequest\x12\x37\n\x0fupdate_interval\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00\x88\x01\x01\x12\x34\n\x05query\x18\x02 \x01(\x0b\x32%.xyz.block.ftl.v1.console.EventsQueryB\x12\n\x10_update_interval\"G\n\x14StreamEventsResponse\x12/\n\x06\x65vents\x18\x01 \x03(\x0b\x32\x1f.xyz.block.ftl.v1.console.Event\"\xad\x05\n\x05\x45vent\x12.\n\ntime_stamp\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\n\n\x02id\x18\x02 \x01(\x03\x12\x31\n\x03log\x18\x03 \x01(\x0b\x32\".xyz.block.ftl.v1.console.LogEventH\x00\x12\x33\n\x04\x63\x61ll\x18\x04 \x01(\x0b\x32#.xyz.block.ftl.v1.console.CallEventH\x00\x12N\n\x12\x64\x65ployment_created\x18\x05 \x01(\x0b\x32\x30.xyz.block.ftl.v1.console.DeploymentCreatedEventH\x00\x12N\n\x12\x64\x65ployment_updated\x18\x06 \x01(\x0b\x32\x30.xyz.block.ftl.v1.console.DeploymentUpdatedEventH\x00\x12\x39\n\x07ingress\x18\x07 \x01(\x0b\x32&.xyz.block.ftl.v1.console.IngressEventH\x00\x12\x46\n\x0e\x63ron_scheduled\x18\x08 \x01(\x0b\x32,.xyz.block.ftl.v1.console.CronScheduledEventH\x00\x12\x44\n\rasync_execute\x18\t \x01(\x0b\x32+.xyz.block.ftl.v1.console.AsyncExecuteEventH\x00\x12\x46\n\x0epubsub_publish\x18\n \x01(\x0b\x32,.xyz.block.ftl.v1.console.PubSubPublishEventH\x00\x12\x46\n\x0epubsub_consume\x18\x0b \x01(\x0b\x32,.xyz.block.ftl.v1.console.PubSubConsumeEventH\x00\x42\x07\n\x05\x65ntry\"d\n\x11GetEventsResponse\x12/\n\x06\x65vents\x18\x01 \x03(\x0b\x32\x1f.xyz.block.ftl.v1.console.Event\x12\x13\n\x06\x63ursor\x18\x02 \x01(\x03H\x00\x88\x01\x01\x42\t\n\x07_cursor*\xa5\x02\n\tEventType\x12\x16\n\x12\x45VENT_TYPE_UNKNOWN\x10\x00\x12\x12\n\x0e\x45VENT_TYPE_LOG\x10\x01\x12\x13\n\x0f\x45VENT_TYPE_CALL\x10\x02\x12!\n\x1d\x45VENT_TYPE_DEPLOYMENT_CREATED\x10\x03\x12!\n\x1d\x45VENT_TYPE_DEPLOYMENT_UPDATED\x10\x04\x12\x16\n\x12\x45VENT_TYPE_INGRESS\x10\x05\x12\x1d\n\x19\x45VENT_TYPE_CRON_SCHEDULED\x10\x06\x12\x1c\n\x18\x45VENT_TYPE_ASYNC_EXECUTE\x10\x07\x12\x1d\n\x19\x45VENT_TYPE_PUBSUB_PUBLISH\x10\x08\x12\x1d\n\x19\x45VENT_TYPE_PUBSUB_CONSUME\x10\t*\x85\x01\n\x15\x41syncExecuteEventType\x12$\n ASYNC_EXECUTE_EVENT_TYPE_UNKNOWN\x10\x00\x12!\n\x1d\x41SYNC_EXECUTE_EVENT_TYPE_CRON\x10\x01\x12#\n\x1f\x41SYNC_EXECUTE_EVENT_TYPE_PUBSUB\x10\x02*\x88\x01\n\x08LogLevel\x12\x15\n\x11LOG_LEVEL_UNKNOWN\x10\x00\x12\x13\n\x0fLOG_LEVEL_TRACE\x10\x01\x12\x13\n\x0fLOG_LEVEL_DEBUG\x10\x05\x12\x12\n\x0eLOG_LEVEL_INFO\x10\t\x12\x12\n\x0eLOG_LEVEL_WARN\x10\r\x12\x13\n\x0fLOG_LEVEL_ERROR\x10\x11\x32\x8b\x04\n\x0e\x43onsoleService\x12J\n\x04Ping\x12\x1d.xyz.block.ftl.v1.PingRequest\x1a\x1e.xyz.block.ftl.v1.PingResponse\"\x03\x90\x02\x01\x12g\n\nGetModules\x12+.xyz.block.ftl.v1.console.GetModulesRequest\x1a,.xyz.block.ftl.v1.console.GetModulesResponse\x12r\n\rStreamModules\x12..xyz.block.ftl.v1.console.StreamModulesRequest\x1a/.xyz.block.ftl.v1.console.StreamModulesResponse0\x01\x12o\n\x0cStreamEvents\x12-.xyz.block.ftl.v1.console.StreamEventsRequest\x1a..xyz.block.ftl.v1.console.StreamEventsResponse0\x01\x12_\n\tGetEvents\x12%.xyz.block.ftl.v1.console.EventsQuery\x1a+.xyz.block.ftl.v1.console.GetEventsResponseBPP\x01ZLgithub.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1/console;pbconsoleb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -40,96 +40,96 @@ _globals['_LOGEVENT_ATTRIBUTESENTRY']._serialized_options = b'8\001' _globals['_CONSOLESERVICE'].methods_by_name['Ping']._loaded_options = None _globals['_CONSOLESERVICE'].methods_by_name['Ping']._serialized_options = b'\220\002\001' - _globals['_EVENTTYPE']._serialized_start=8895 - _globals['_EVENTTYPE']._serialized_end=9188 - _globals['_ASYNCEXECUTEEVENTTYPE']._serialized_start=9191 - _globals['_ASYNCEXECUTEEVENTTYPE']._serialized_end=9324 - _globals['_LOGLEVEL']._serialized_start=9327 - _globals['_LOGLEVEL']._serialized_end=9463 + _globals['_EVENTTYPE']._serialized_start=7313 + _globals['_EVENTTYPE']._serialized_end=7606 + _globals['_ASYNCEXECUTEEVENTTYPE']._serialized_start=7609 + _globals['_ASYNCEXECUTEEVENTTYPE']._serialized_end=7742 + _globals['_LOGLEVEL']._serialized_start=7745 + _globals['_LOGLEVEL']._serialized_end=7881 _globals['_LOGEVENT']._serialized_start=200 - _globals['_LOGEVENT']._serialized_end=638 - _globals['_LOGEVENT_ATTRIBUTESENTRY']._serialized_start=541 - _globals['_LOGEVENT_ATTRIBUTESENTRY']._serialized_end=602 - _globals['_CALLEVENT']._serialized_start=641 - _globals['_CALLEVENT']._serialized_end=1174 - _globals['_DEPLOYMENTCREATEDEVENT']._serialized_start=1177 - _globals['_DEPLOYMENTCREATEDEVENT']._serialized_end=1361 - _globals['_DEPLOYMENTUPDATEDEVENT']._serialized_start=1363 - _globals['_DEPLOYMENTUPDATEDEVENT']._serialized_end=1484 - _globals['_INGRESSEVENT']._serialized_start=1487 - _globals['_INGRESSEVENT']._serialized_end=2013 - _globals['_CRONSCHEDULEDEVENT']._serialized_start=2016 - _globals['_CRONSCHEDULEDEVENT']._serialized_end=2374 - _globals['_ASYNCEXECUTEEVENT']._serialized_start=2377 - _globals['_ASYNCEXECUTEEVENT']._serialized_end=2788 - _globals['_PUBSUBPUBLISHEVENT']._serialized_start=2791 - _globals['_PUBSUBPUBLISHEVENT']._serialized_end=3160 - _globals['_PUBSUBCONSUMEEVENT']._serialized_start=3163 - _globals['_PUBSUBCONSUMEEVENT']._serialized_end=3579 - _globals['_CONFIG']._serialized_start=3581 - _globals['_CONFIG']._serialized_end=3708 - _globals['_DATA']._serialized_start=3711 - _globals['_DATA']._serialized_end=3854 - _globals['_DATABASE']._serialized_start=3857 - _globals['_DATABASE']._serialized_end=3992 - _globals['_ENUM']._serialized_start=3994 - _globals['_ENUM']._serialized_end=4113 - _globals['_TOPIC']._serialized_start=4115 - _globals['_TOPIC']._serialized_end=4238 - _globals['_TYPEALIAS']._serialized_start=4241 - _globals['_TYPEALIAS']._serialized_end=4380 - _globals['_SECRET']._serialized_start=4382 - _globals['_SECRET']._serialized_end=4509 - _globals['_SUBSCRIPTION']._serialized_start=4512 - _globals['_SUBSCRIPTION']._serialized_end=4663 - _globals['_VERB']._serialized_start=4666 - _globals['_VERB']._serialized_end=4857 - _globals['_MODULE']._serialized_start=4860 - _globals['_MODULE']._serialized_end=5531 - _globals['_TOPOLOGYGROUP']._serialized_start=5533 - _globals['_TOPOLOGYGROUP']._serialized_end=5574 - _globals['_TOPOLOGY']._serialized_start=5576 - _globals['_TOPOLOGY']._serialized_end=5651 - _globals['_GETMODULESREQUEST']._serialized_start=5653 - _globals['_GETMODULESREQUEST']._serialized_end=5672 - _globals['_GETMODULESRESPONSE']._serialized_start=5675 - _globals['_GETMODULESRESPONSE']._serialized_end=5819 - _globals['_STREAMMODULESREQUEST']._serialized_start=5821 - _globals['_STREAMMODULESREQUEST']._serialized_end=5843 - _globals['_STREAMMODULESRESPONSE']._serialized_start=5845 - _globals['_STREAMMODULESRESPONSE']._serialized_end=5928 - _globals['_EVENTSQUERY']._serialized_start=5931 - _globals['_EVENTSQUERY']._serialized_end=7695 - _globals['_EVENTSQUERY_LIMITFILTER']._serialized_start=6107 - _globals['_EVENTSQUERY_LIMITFILTER']._serialized_end=6142 - _globals['_EVENTSQUERY_LOGLEVELFILTER']._serialized_start=6144 - _globals['_EVENTSQUERY_LOGLEVELFILTER']._serialized_end=6225 - _globals['_EVENTSQUERY_DEPLOYMENTFILTER']._serialized_start=6227 - _globals['_EVENTSQUERY_DEPLOYMENTFILTER']._serialized_end=6279 - _globals['_EVENTSQUERY_REQUESTFILTER']._serialized_start=6281 - _globals['_EVENTSQUERY_REQUESTFILTER']._serialized_end=6324 - _globals['_EVENTSQUERY_EVENTTYPEFILTER']._serialized_start=6326 - _globals['_EVENTSQUERY_EVENTTYPEFILTER']._serialized_end=6413 - _globals['_EVENTSQUERY_TIMEFILTER']._serialized_start=6416 - _globals['_EVENTSQUERY_TIMEFILTER']._serialized_end=6586 - _globals['_EVENTSQUERY_IDFILTER']._serialized_start=6588 - _globals['_EVENTSQUERY_IDFILTER']._serialized_end=6703 - _globals['_EVENTSQUERY_CALLFILTER']._serialized_start=6706 - _globals['_EVENTSQUERY_CALLFILTER']._serialized_end=6859 - _globals['_EVENTSQUERY_MODULEFILTER']._serialized_start=6861 - _globals['_EVENTSQUERY_MODULEFILTER']._serialized_end=6933 - _globals['_EVENTSQUERY_FILTER']._serialized_start=6936 - _globals['_EVENTSQUERY_FILTER']._serialized_end=7667 - _globals['_EVENTSQUERY_ORDER']._serialized_start=7669 - _globals['_EVENTSQUERY_ORDER']._serialized_end=7695 - _globals['_STREAMEVENTSREQUEST']._serialized_start=7698 - _globals['_STREAMEVENTSREQUEST']._serialized_end=7873 - _globals['_STREAMEVENTSRESPONSE']._serialized_start=7875 - _globals['_STREAMEVENTSRESPONSE']._serialized_end=7954 - _globals['_EVENT']._serialized_start=7957 - _globals['_EVENT']._serialized_end=8774 - _globals['_GETEVENTSRESPONSE']._serialized_start=8776 - _globals['_GETEVENTSRESPONSE']._serialized_end=8892 - _globals['_CONSOLESERVICE']._serialized_start=9466 - _globals['_CONSOLESERVICE']._serialized_end=9989 + _globals['_LOGEVENT']._serialized_end=543 + _globals['_LOGEVENT_ATTRIBUTESENTRY']._serialized_start=458 + _globals['_LOGEVENT_ATTRIBUTESENTRY']._serialized_end=507 + _globals['_CALLEVENT']._serialized_start=546 + _globals['_CALLEVENT']._serialized_end=963 + _globals['_DEPLOYMENTCREATEDEVENT']._serialized_start=966 + _globals['_DEPLOYMENTCREATEDEVENT']._serialized_end=1100 + _globals['_DEPLOYMENTUPDATEDEVENT']._serialized_start=1102 + _globals['_DEPLOYMENTUPDATEDEVENT']._serialized_end=1188 + _globals['_INGRESSEVENT']._serialized_start=1191 + _globals['_INGRESSEVENT']._serialized_end=1577 + _globals['_CRONSCHEDULEDEVENT']._serialized_start=1580 + _globals['_CRONSCHEDULEDEVENT']._serialized_end=1863 + _globals['_ASYNCEXECUTEEVENT']._serialized_start=1866 + _globals['_ASYNCEXECUTEEVENT']._serialized_end=2197 + _globals['_PUBSUBPUBLISHEVENT']._serialized_start=2200 + _globals['_PUBSUBPUBLISHEVENT']._serialized_end=2489 + _globals['_PUBSUBCONSUMEEVENT']._serialized_start=2492 + _globals['_PUBSUBCONSUMEEVENT']._serialized_end=2816 + _globals['_CONFIG']._serialized_start=2818 + _globals['_CONFIG']._serialized_end=2925 + _globals['_DATA']._serialized_start=2927 + _globals['_DATA']._serialized_end=3044 + _globals['_DATABASE']._serialized_start=3046 + _globals['_DATABASE']._serialized_end=3159 + _globals['_ENUM']._serialized_start=3161 + _globals['_ENUM']._serialized_end=3262 + _globals['_TOPIC']._serialized_start=3264 + _globals['_TOPIC']._serialized_end=3368 + _globals['_TYPEALIAS']._serialized_start=3370 + _globals['_TYPEALIAS']._serialized_end=3486 + _globals['_SECRET']._serialized_start=3488 + _globals['_SECRET']._serialized_end=3595 + _globals['_SUBSCRIPTION']._serialized_start=3597 + _globals['_SUBSCRIPTION']._serialized_end=3722 + _globals['_VERB']._serialized_start=3725 + _globals['_VERB']._serialized_end=3871 + _globals['_MODULE']._serialized_start=3874 + _globals['_MODULE']._serialized_end=4421 + _globals['_TOPOLOGYGROUP']._serialized_start=4423 + _globals['_TOPOLOGYGROUP']._serialized_end=4455 + _globals['_TOPOLOGY']._serialized_start=4457 + _globals['_TOPOLOGY']._serialized_end=4524 + _globals['_GETMODULESREQUEST']._serialized_start=4526 + _globals['_GETMODULESREQUEST']._serialized_end=4545 + _globals['_GETMODULESRESPONSE']._serialized_start=4547 + _globals['_GETMODULESRESPONSE']._serialized_end=4672 + _globals['_STREAMMODULESREQUEST']._serialized_start=4674 + _globals['_STREAMMODULESREQUEST']._serialized_end=4696 + _globals['_STREAMMODULESRESPONSE']._serialized_start=4698 + _globals['_STREAMMODULESRESPONSE']._serialized_end=4772 + _globals['_EVENTSQUERY']._serialized_start=4775 + _globals['_EVENTSQUERY']._serialized_end=6292 + _globals['_EVENTSQUERY_LIMITFILTER']._serialized_start=4928 + _globals['_EVENTSQUERY_LIMITFILTER']._serialized_end=4956 + _globals['_EVENTSQUERY_LOGLEVELFILTER']._serialized_start=4958 + _globals['_EVENTSQUERY_LOGLEVELFILTER']._serialized_end=5029 + _globals['_EVENTSQUERY_DEPLOYMENTFILTER']._serialized_start=5031 + _globals['_EVENTSQUERY_DEPLOYMENTFILTER']._serialized_end=5070 + _globals['_EVENTSQUERY_REQUESTFILTER']._serialized_start=5072 + _globals['_EVENTSQUERY_REQUESTFILTER']._serialized_end=5105 + _globals['_EVENTSQUERY_EVENTTYPEFILTER']._serialized_start=5107 + _globals['_EVENTSQUERY_EVENTTYPEFILTER']._serialized_end=5182 + _globals['_EVENTSQUERY_TIMEFILTER']._serialized_start=5185 + _globals['_EVENTSQUERY_TIMEFILTER']._serialized_end=5333 + _globals['_EVENTSQUERY_IDFILTER']._serialized_start=5335 + _globals['_EVENTSQUERY_IDFILTER']._serialized_end=5427 + _globals['_EVENTSQUERY_CALLFILTER']._serialized_start=5429 + _globals['_EVENTSQUERY_CALLFILTER']._serialized_end=5546 + _globals['_EVENTSQUERY_MODULEFILTER']._serialized_start=5548 + _globals['_EVENTSQUERY_MODULEFILTER']._serialized_end=5606 + _globals['_EVENTSQUERY_FILTER']._serialized_start=5609 + _globals['_EVENTSQUERY_FILTER']._serialized_end=6264 + _globals['_EVENTSQUERY_ORDER']._serialized_start=6266 + _globals['_EVENTSQUERY_ORDER']._serialized_end=6292 + _globals['_STREAMEVENTSREQUEST']._serialized_start=6295 + _globals['_STREAMEVENTSREQUEST']._serialized_end=6447 + _globals['_STREAMEVENTSRESPONSE']._serialized_start=6449 + _globals['_STREAMEVENTSRESPONSE']._serialized_end=6520 + _globals['_EVENT']._serialized_start=6523 + _globals['_EVENT']._serialized_end=7208 + _globals['_GETEVENTSRESPONSE']._serialized_start=7210 + _globals['_GETEVENTSRESPONSE']._serialized_end=7310 + _globals['_CONSOLESERVICE']._serialized_start=7884 + _globals['_CONSOLESERVICE']._serialized_end=8407 # @@protoc_insertion_point(module_scope) diff --git a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/console/console_pb2.pyi b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/console/console_pb2.pyi index 906d4e508e..929184fdae 100644 --- a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/console/console_pb2.pyi +++ b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/console/console_pb2.pyi @@ -1,521 +1,1216 @@ -from google.protobuf import duration_pb2 as _duration_pb2 -from google.protobuf import timestamp_pb2 as _timestamp_pb2 -from xyz.block.ftl.v1 import ftl_pb2 as _ftl_pb2 -from xyz.block.ftl.v1.schema import schema_pb2 as _schema_pb2 -from google.protobuf.internal import containers as _containers -from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union - -DESCRIPTOR: _descriptor.FileDescriptor - -class EventType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () - EVENT_TYPE_UNKNOWN: _ClassVar[EventType] - EVENT_TYPE_LOG: _ClassVar[EventType] - EVENT_TYPE_CALL: _ClassVar[EventType] - EVENT_TYPE_DEPLOYMENT_CREATED: _ClassVar[EventType] - EVENT_TYPE_DEPLOYMENT_UPDATED: _ClassVar[EventType] - EVENT_TYPE_INGRESS: _ClassVar[EventType] - EVENT_TYPE_CRON_SCHEDULED: _ClassVar[EventType] - EVENT_TYPE_ASYNC_EXECUTE: _ClassVar[EventType] - EVENT_TYPE_PUBSUB_PUBLISH: _ClassVar[EventType] - EVENT_TYPE_PUBSUB_CONSUME: _ClassVar[EventType] - -class AsyncExecuteEventType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () - ASYNC_EXECUTE_EVENT_TYPE_UNKNOWN: _ClassVar[AsyncExecuteEventType] - ASYNC_EXECUTE_EVENT_TYPE_CRON: _ClassVar[AsyncExecuteEventType] - ASYNC_EXECUTE_EVENT_TYPE_PUBSUB: _ClassVar[AsyncExecuteEventType] - -class LogLevel(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () - LOG_LEVEL_UNKNOWN: _ClassVar[LogLevel] - LOG_LEVEL_TRACE: _ClassVar[LogLevel] - LOG_LEVEL_DEBUG: _ClassVar[LogLevel] - LOG_LEVEL_INFO: _ClassVar[LogLevel] - LOG_LEVEL_WARN: _ClassVar[LogLevel] - LOG_LEVEL_ERROR: _ClassVar[LogLevel] -EVENT_TYPE_UNKNOWN: EventType -EVENT_TYPE_LOG: EventType -EVENT_TYPE_CALL: EventType -EVENT_TYPE_DEPLOYMENT_CREATED: EventType -EVENT_TYPE_DEPLOYMENT_UPDATED: EventType -EVENT_TYPE_INGRESS: EventType -EVENT_TYPE_CRON_SCHEDULED: EventType -EVENT_TYPE_ASYNC_EXECUTE: EventType -EVENT_TYPE_PUBSUB_PUBLISH: EventType -EVENT_TYPE_PUBSUB_CONSUME: EventType -ASYNC_EXECUTE_EVENT_TYPE_UNKNOWN: AsyncExecuteEventType -ASYNC_EXECUTE_EVENT_TYPE_CRON: AsyncExecuteEventType -ASYNC_EXECUTE_EVENT_TYPE_PUBSUB: AsyncExecuteEventType -LOG_LEVEL_UNKNOWN: LogLevel -LOG_LEVEL_TRACE: LogLevel -LOG_LEVEL_DEBUG: LogLevel -LOG_LEVEL_INFO: LogLevel -LOG_LEVEL_WARN: LogLevel -LOG_LEVEL_ERROR: LogLevel - -class LogEvent(_message.Message): - __slots__ = ("deployment_key", "request_key", "time_stamp", "log_level", "attributes", "message", "error", "stack") - class AttributesEntry(_message.Message): - __slots__ = ("key", "value") - KEY_FIELD_NUMBER: _ClassVar[int] - VALUE_FIELD_NUMBER: _ClassVar[int] - key: str - value: str - def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ... - DEPLOYMENT_KEY_FIELD_NUMBER: _ClassVar[int] - REQUEST_KEY_FIELD_NUMBER: _ClassVar[int] - TIME_STAMP_FIELD_NUMBER: _ClassVar[int] - LOG_LEVEL_FIELD_NUMBER: _ClassVar[int] - ATTRIBUTES_FIELD_NUMBER: _ClassVar[int] - MESSAGE_FIELD_NUMBER: _ClassVar[int] - ERROR_FIELD_NUMBER: _ClassVar[int] - STACK_FIELD_NUMBER: _ClassVar[int] - deployment_key: str - request_key: str - time_stamp: _timestamp_pb2.Timestamp - log_level: int - attributes: _containers.ScalarMap[str, str] - message: str - error: str - stack: str - def __init__(self, deployment_key: _Optional[str] = ..., request_key: _Optional[str] = ..., time_stamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., log_level: _Optional[int] = ..., attributes: _Optional[_Mapping[str, str]] = ..., message: _Optional[str] = ..., error: _Optional[str] = ..., stack: _Optional[str] = ...) -> None: ... - -class CallEvent(_message.Message): - __slots__ = ("request_key", "deployment_key", "time_stamp", "source_verb_ref", "destination_verb_ref", "duration", "request", "response", "error", "stack") - REQUEST_KEY_FIELD_NUMBER: _ClassVar[int] - DEPLOYMENT_KEY_FIELD_NUMBER: _ClassVar[int] - TIME_STAMP_FIELD_NUMBER: _ClassVar[int] - SOURCE_VERB_REF_FIELD_NUMBER: _ClassVar[int] - DESTINATION_VERB_REF_FIELD_NUMBER: _ClassVar[int] - DURATION_FIELD_NUMBER: _ClassVar[int] - REQUEST_FIELD_NUMBER: _ClassVar[int] - RESPONSE_FIELD_NUMBER: _ClassVar[int] - ERROR_FIELD_NUMBER: _ClassVar[int] - STACK_FIELD_NUMBER: _ClassVar[int] - request_key: str - deployment_key: str - time_stamp: _timestamp_pb2.Timestamp - source_verb_ref: _schema_pb2.Ref - destination_verb_ref: _schema_pb2.Ref - duration: _duration_pb2.Duration - request: str - response: str - error: str - stack: str - def __init__(self, request_key: _Optional[str] = ..., deployment_key: _Optional[str] = ..., time_stamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., source_verb_ref: _Optional[_Union[_schema_pb2.Ref, _Mapping]] = ..., destination_verb_ref: _Optional[_Union[_schema_pb2.Ref, _Mapping]] = ..., duration: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., request: _Optional[str] = ..., response: _Optional[str] = ..., error: _Optional[str] = ..., stack: _Optional[str] = ...) -> None: ... - -class DeploymentCreatedEvent(_message.Message): - __slots__ = ("key", "language", "module_name", "min_replicas", "replaced") - KEY_FIELD_NUMBER: _ClassVar[int] - LANGUAGE_FIELD_NUMBER: _ClassVar[int] - MODULE_NAME_FIELD_NUMBER: _ClassVar[int] - MIN_REPLICAS_FIELD_NUMBER: _ClassVar[int] - REPLACED_FIELD_NUMBER: _ClassVar[int] - key: str - language: str - module_name: str - min_replicas: int - replaced: str - def __init__(self, key: _Optional[str] = ..., language: _Optional[str] = ..., module_name: _Optional[str] = ..., min_replicas: _Optional[int] = ..., replaced: _Optional[str] = ...) -> None: ... - -class DeploymentUpdatedEvent(_message.Message): - __slots__ = ("key", "min_replicas", "prev_min_replicas") - KEY_FIELD_NUMBER: _ClassVar[int] - MIN_REPLICAS_FIELD_NUMBER: _ClassVar[int] - PREV_MIN_REPLICAS_FIELD_NUMBER: _ClassVar[int] - key: str - min_replicas: int - prev_min_replicas: int - def __init__(self, key: _Optional[str] = ..., min_replicas: _Optional[int] = ..., prev_min_replicas: _Optional[int] = ...) -> None: ... - -class IngressEvent(_message.Message): - __slots__ = ("deployment_key", "request_key", "verb_ref", "method", "path", "status_code", "time_stamp", "duration", "request", "request_header", "response", "response_header", "error") - DEPLOYMENT_KEY_FIELD_NUMBER: _ClassVar[int] - REQUEST_KEY_FIELD_NUMBER: _ClassVar[int] - VERB_REF_FIELD_NUMBER: _ClassVar[int] - METHOD_FIELD_NUMBER: _ClassVar[int] - PATH_FIELD_NUMBER: _ClassVar[int] - STATUS_CODE_FIELD_NUMBER: _ClassVar[int] - TIME_STAMP_FIELD_NUMBER: _ClassVar[int] - DURATION_FIELD_NUMBER: _ClassVar[int] - REQUEST_FIELD_NUMBER: _ClassVar[int] - REQUEST_HEADER_FIELD_NUMBER: _ClassVar[int] - RESPONSE_FIELD_NUMBER: _ClassVar[int] - RESPONSE_HEADER_FIELD_NUMBER: _ClassVar[int] - ERROR_FIELD_NUMBER: _ClassVar[int] - deployment_key: str - request_key: str - verb_ref: _schema_pb2.Ref - method: str - path: str - status_code: int - time_stamp: _timestamp_pb2.Timestamp - duration: _duration_pb2.Duration - request: str - request_header: str - response: str - response_header: str - error: str - def __init__(self, deployment_key: _Optional[str] = ..., request_key: _Optional[str] = ..., verb_ref: _Optional[_Union[_schema_pb2.Ref, _Mapping]] = ..., method: _Optional[str] = ..., path: _Optional[str] = ..., status_code: _Optional[int] = ..., time_stamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., duration: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., request: _Optional[str] = ..., request_header: _Optional[str] = ..., response: _Optional[str] = ..., response_header: _Optional[str] = ..., error: _Optional[str] = ...) -> None: ... - -class CronScheduledEvent(_message.Message): - __slots__ = ("deployment_key", "verb_ref", "time_stamp", "duration", "scheduled_at", "schedule", "error") - DEPLOYMENT_KEY_FIELD_NUMBER: _ClassVar[int] - VERB_REF_FIELD_NUMBER: _ClassVar[int] - TIME_STAMP_FIELD_NUMBER: _ClassVar[int] - DURATION_FIELD_NUMBER: _ClassVar[int] - SCHEDULED_AT_FIELD_NUMBER: _ClassVar[int] - SCHEDULE_FIELD_NUMBER: _ClassVar[int] - ERROR_FIELD_NUMBER: _ClassVar[int] - deployment_key: str - verb_ref: _schema_pb2.Ref - time_stamp: _timestamp_pb2.Timestamp - duration: _duration_pb2.Duration - scheduled_at: _timestamp_pb2.Timestamp - schedule: str - error: str - def __init__(self, deployment_key: _Optional[str] = ..., verb_ref: _Optional[_Union[_schema_pb2.Ref, _Mapping]] = ..., time_stamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., duration: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., scheduled_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., schedule: _Optional[str] = ..., error: _Optional[str] = ...) -> None: ... - -class AsyncExecuteEvent(_message.Message): - __slots__ = ("deployment_key", "request_key", "verb_ref", "time_stamp", "duration", "async_event_type", "error") - DEPLOYMENT_KEY_FIELD_NUMBER: _ClassVar[int] - REQUEST_KEY_FIELD_NUMBER: _ClassVar[int] - VERB_REF_FIELD_NUMBER: _ClassVar[int] - TIME_STAMP_FIELD_NUMBER: _ClassVar[int] - DURATION_FIELD_NUMBER: _ClassVar[int] - ASYNC_EVENT_TYPE_FIELD_NUMBER: _ClassVar[int] - ERROR_FIELD_NUMBER: _ClassVar[int] - deployment_key: str - request_key: str - verb_ref: _schema_pb2.Ref - time_stamp: _timestamp_pb2.Timestamp - duration: _duration_pb2.Duration - async_event_type: AsyncExecuteEventType - error: str - def __init__(self, deployment_key: _Optional[str] = ..., request_key: _Optional[str] = ..., verb_ref: _Optional[_Union[_schema_pb2.Ref, _Mapping]] = ..., time_stamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., duration: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., async_event_type: _Optional[_Union[AsyncExecuteEventType, str]] = ..., error: _Optional[str] = ...) -> None: ... - -class PubSubPublishEvent(_message.Message): - __slots__ = ("deployment_key", "request_key", "verb_ref", "time_stamp", "duration", "topic", "request", "error") - DEPLOYMENT_KEY_FIELD_NUMBER: _ClassVar[int] - REQUEST_KEY_FIELD_NUMBER: _ClassVar[int] - VERB_REF_FIELD_NUMBER: _ClassVar[int] - TIME_STAMP_FIELD_NUMBER: _ClassVar[int] - DURATION_FIELD_NUMBER: _ClassVar[int] - TOPIC_FIELD_NUMBER: _ClassVar[int] - REQUEST_FIELD_NUMBER: _ClassVar[int] - ERROR_FIELD_NUMBER: _ClassVar[int] - deployment_key: str - request_key: str - verb_ref: _schema_pb2.Ref - time_stamp: _timestamp_pb2.Timestamp - duration: _duration_pb2.Duration - topic: str - request: str - error: str - def __init__(self, deployment_key: _Optional[str] = ..., request_key: _Optional[str] = ..., verb_ref: _Optional[_Union[_schema_pb2.Ref, _Mapping]] = ..., time_stamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., duration: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., topic: _Optional[str] = ..., request: _Optional[str] = ..., error: _Optional[str] = ...) -> None: ... - -class PubSubConsumeEvent(_message.Message): - __slots__ = ("deployment_key", "request_key", "dest_verb_module", "dest_verb_name", "time_stamp", "duration", "topic", "error") - DEPLOYMENT_KEY_FIELD_NUMBER: _ClassVar[int] - REQUEST_KEY_FIELD_NUMBER: _ClassVar[int] - DEST_VERB_MODULE_FIELD_NUMBER: _ClassVar[int] - DEST_VERB_NAME_FIELD_NUMBER: _ClassVar[int] - TIME_STAMP_FIELD_NUMBER: _ClassVar[int] - DURATION_FIELD_NUMBER: _ClassVar[int] - TOPIC_FIELD_NUMBER: _ClassVar[int] - ERROR_FIELD_NUMBER: _ClassVar[int] - deployment_key: str - request_key: str - dest_verb_module: str - dest_verb_name: str - time_stamp: _timestamp_pb2.Timestamp - duration: _duration_pb2.Duration - topic: str - error: str - def __init__(self, deployment_key: _Optional[str] = ..., request_key: _Optional[str] = ..., dest_verb_module: _Optional[str] = ..., dest_verb_name: _Optional[str] = ..., time_stamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., duration: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., topic: _Optional[str] = ..., error: _Optional[str] = ...) -> None: ... - -class Config(_message.Message): - __slots__ = ("config", "references") - CONFIG_FIELD_NUMBER: _ClassVar[int] - REFERENCES_FIELD_NUMBER: _ClassVar[int] - config: _schema_pb2.Config - references: _containers.RepeatedCompositeFieldContainer[_schema_pb2.Ref] - def __init__(self, config: _Optional[_Union[_schema_pb2.Config, _Mapping]] = ..., references: _Optional[_Iterable[_Union[_schema_pb2.Ref, _Mapping]]] = ...) -> None: ... - -class Data(_message.Message): - __slots__ = ("data", "schema", "references") - DATA_FIELD_NUMBER: _ClassVar[int] - SCHEMA_FIELD_NUMBER: _ClassVar[int] - REFERENCES_FIELD_NUMBER: _ClassVar[int] - data: _schema_pb2.Data - schema: str - references: _containers.RepeatedCompositeFieldContainer[_schema_pb2.Ref] - def __init__(self, data: _Optional[_Union[_schema_pb2.Data, _Mapping]] = ..., schema: _Optional[str] = ..., references: _Optional[_Iterable[_Union[_schema_pb2.Ref, _Mapping]]] = ...) -> None: ... - -class Database(_message.Message): - __slots__ = ("database", "references") - DATABASE_FIELD_NUMBER: _ClassVar[int] - REFERENCES_FIELD_NUMBER: _ClassVar[int] - database: _schema_pb2.Database - references: _containers.RepeatedCompositeFieldContainer[_schema_pb2.Ref] - def __init__(self, database: _Optional[_Union[_schema_pb2.Database, _Mapping]] = ..., references: _Optional[_Iterable[_Union[_schema_pb2.Ref, _Mapping]]] = ...) -> None: ... - -class Enum(_message.Message): - __slots__ = ("enum", "references") - ENUM_FIELD_NUMBER: _ClassVar[int] - REFERENCES_FIELD_NUMBER: _ClassVar[int] - enum: _schema_pb2.Enum - references: _containers.RepeatedCompositeFieldContainer[_schema_pb2.Ref] - def __init__(self, enum: _Optional[_Union[_schema_pb2.Enum, _Mapping]] = ..., references: _Optional[_Iterable[_Union[_schema_pb2.Ref, _Mapping]]] = ...) -> None: ... - -class Topic(_message.Message): - __slots__ = ("topic", "references") - TOPIC_FIELD_NUMBER: _ClassVar[int] - REFERENCES_FIELD_NUMBER: _ClassVar[int] - topic: _schema_pb2.Topic - references: _containers.RepeatedCompositeFieldContainer[_schema_pb2.Ref] - def __init__(self, topic: _Optional[_Union[_schema_pb2.Topic, _Mapping]] = ..., references: _Optional[_Iterable[_Union[_schema_pb2.Ref, _Mapping]]] = ...) -> None: ... - -class TypeAlias(_message.Message): - __slots__ = ("typealias", "references") - TYPEALIAS_FIELD_NUMBER: _ClassVar[int] - REFERENCES_FIELD_NUMBER: _ClassVar[int] - typealias: _schema_pb2.TypeAlias - references: _containers.RepeatedCompositeFieldContainer[_schema_pb2.Ref] - def __init__(self, typealias: _Optional[_Union[_schema_pb2.TypeAlias, _Mapping]] = ..., references: _Optional[_Iterable[_Union[_schema_pb2.Ref, _Mapping]]] = ...) -> None: ... - -class Secret(_message.Message): - __slots__ = ("secret", "references") - SECRET_FIELD_NUMBER: _ClassVar[int] - REFERENCES_FIELD_NUMBER: _ClassVar[int] - secret: _schema_pb2.Secret - references: _containers.RepeatedCompositeFieldContainer[_schema_pb2.Ref] - def __init__(self, secret: _Optional[_Union[_schema_pb2.Secret, _Mapping]] = ..., references: _Optional[_Iterable[_Union[_schema_pb2.Ref, _Mapping]]] = ...) -> None: ... - -class Subscription(_message.Message): - __slots__ = ("subscription", "references") - SUBSCRIPTION_FIELD_NUMBER: _ClassVar[int] - REFERENCES_FIELD_NUMBER: _ClassVar[int] - subscription: _schema_pb2.Subscription - references: _containers.RepeatedCompositeFieldContainer[_schema_pb2.Ref] - def __init__(self, subscription: _Optional[_Union[_schema_pb2.Subscription, _Mapping]] = ..., references: _Optional[_Iterable[_Union[_schema_pb2.Ref, _Mapping]]] = ...) -> None: ... - -class Verb(_message.Message): - __slots__ = ("verb", "schema", "json_request_schema", "references") - VERB_FIELD_NUMBER: _ClassVar[int] - SCHEMA_FIELD_NUMBER: _ClassVar[int] - JSON_REQUEST_SCHEMA_FIELD_NUMBER: _ClassVar[int] - REFERENCES_FIELD_NUMBER: _ClassVar[int] - verb: _schema_pb2.Verb - schema: str - json_request_schema: str - references: _containers.RepeatedCompositeFieldContainer[_schema_pb2.Ref] - def __init__(self, verb: _Optional[_Union[_schema_pb2.Verb, _Mapping]] = ..., schema: _Optional[str] = ..., json_request_schema: _Optional[str] = ..., references: _Optional[_Iterable[_Union[_schema_pb2.Ref, _Mapping]]] = ...) -> None: ... - -class Module(_message.Message): - __slots__ = ("name", "deployment_key", "language", "schema", "verbs", "data", "secrets", "configs", "databases", "enums", "topics", "typealiases", "subscriptions") - NAME_FIELD_NUMBER: _ClassVar[int] - DEPLOYMENT_KEY_FIELD_NUMBER: _ClassVar[int] - LANGUAGE_FIELD_NUMBER: _ClassVar[int] - SCHEMA_FIELD_NUMBER: _ClassVar[int] - VERBS_FIELD_NUMBER: _ClassVar[int] - DATA_FIELD_NUMBER: _ClassVar[int] - SECRETS_FIELD_NUMBER: _ClassVar[int] - CONFIGS_FIELD_NUMBER: _ClassVar[int] - DATABASES_FIELD_NUMBER: _ClassVar[int] - ENUMS_FIELD_NUMBER: _ClassVar[int] - TOPICS_FIELD_NUMBER: _ClassVar[int] - TYPEALIASES_FIELD_NUMBER: _ClassVar[int] - SUBSCRIPTIONS_FIELD_NUMBER: _ClassVar[int] - name: str - deployment_key: str - language: str - schema: str - verbs: _containers.RepeatedCompositeFieldContainer[Verb] - data: _containers.RepeatedCompositeFieldContainer[Data] - secrets: _containers.RepeatedCompositeFieldContainer[Secret] - configs: _containers.RepeatedCompositeFieldContainer[Config] - databases: _containers.RepeatedCompositeFieldContainer[Database] - enums: _containers.RepeatedCompositeFieldContainer[Enum] - topics: _containers.RepeatedCompositeFieldContainer[Topic] - typealiases: _containers.RepeatedCompositeFieldContainer[TypeAlias] - subscriptions: _containers.RepeatedCompositeFieldContainer[Subscription] - def __init__(self, name: _Optional[str] = ..., deployment_key: _Optional[str] = ..., language: _Optional[str] = ..., schema: _Optional[str] = ..., verbs: _Optional[_Iterable[_Union[Verb, _Mapping]]] = ..., data: _Optional[_Iterable[_Union[Data, _Mapping]]] = ..., secrets: _Optional[_Iterable[_Union[Secret, _Mapping]]] = ..., configs: _Optional[_Iterable[_Union[Config, _Mapping]]] = ..., databases: _Optional[_Iterable[_Union[Database, _Mapping]]] = ..., enums: _Optional[_Iterable[_Union[Enum, _Mapping]]] = ..., topics: _Optional[_Iterable[_Union[Topic, _Mapping]]] = ..., typealiases: _Optional[_Iterable[_Union[TypeAlias, _Mapping]]] = ..., subscriptions: _Optional[_Iterable[_Union[Subscription, _Mapping]]] = ...) -> None: ... - -class TopologyGroup(_message.Message): - __slots__ = ("modules",) - MODULES_FIELD_NUMBER: _ClassVar[int] - modules: _containers.RepeatedScalarFieldContainer[str] - def __init__(self, modules: _Optional[_Iterable[str]] = ...) -> None: ... - -class Topology(_message.Message): - __slots__ = ("levels",) - LEVELS_FIELD_NUMBER: _ClassVar[int] - levels: _containers.RepeatedCompositeFieldContainer[TopologyGroup] - def __init__(self, levels: _Optional[_Iterable[_Union[TopologyGroup, _Mapping]]] = ...) -> None: ... - -class GetModulesRequest(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class GetModulesResponse(_message.Message): - __slots__ = ("modules", "topology") - MODULES_FIELD_NUMBER: _ClassVar[int] - TOPOLOGY_FIELD_NUMBER: _ClassVar[int] - modules: _containers.RepeatedCompositeFieldContainer[Module] - topology: Topology - def __init__(self, modules: _Optional[_Iterable[_Union[Module, _Mapping]]] = ..., topology: _Optional[_Union[Topology, _Mapping]] = ...) -> None: ... - -class StreamModulesRequest(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class StreamModulesResponse(_message.Message): - __slots__ = ("modules",) - MODULES_FIELD_NUMBER: _ClassVar[int] - modules: _containers.RepeatedCompositeFieldContainer[Module] - def __init__(self, modules: _Optional[_Iterable[_Union[Module, _Mapping]]] = ...) -> None: ... - -class EventsQuery(_message.Message): - __slots__ = ("filters", "limit", "order") - class Order(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () - ASC: _ClassVar[EventsQuery.Order] - DESC: _ClassVar[EventsQuery.Order] - ASC: EventsQuery.Order - DESC: EventsQuery.Order - class LimitFilter(_message.Message): - __slots__ = ("limit",) - LIMIT_FIELD_NUMBER: _ClassVar[int] - limit: int - def __init__(self, limit: _Optional[int] = ...) -> None: ... - class LogLevelFilter(_message.Message): - __slots__ = ("log_level",) - LOG_LEVEL_FIELD_NUMBER: _ClassVar[int] - log_level: LogLevel - def __init__(self, log_level: _Optional[_Union[LogLevel, str]] = ...) -> None: ... - class DeploymentFilter(_message.Message): - __slots__ = ("deployments",) - DEPLOYMENTS_FIELD_NUMBER: _ClassVar[int] - deployments: _containers.RepeatedScalarFieldContainer[str] - def __init__(self, deployments: _Optional[_Iterable[str]] = ...) -> None: ... - class RequestFilter(_message.Message): - __slots__ = ("requests",) - REQUESTS_FIELD_NUMBER: _ClassVar[int] - requests: _containers.RepeatedScalarFieldContainer[str] - def __init__(self, requests: _Optional[_Iterable[str]] = ...) -> None: ... - class EventTypeFilter(_message.Message): - __slots__ = ("event_types",) - EVENT_TYPES_FIELD_NUMBER: _ClassVar[int] - event_types: _containers.RepeatedScalarFieldContainer[EventType] - def __init__(self, event_types: _Optional[_Iterable[_Union[EventType, str]]] = ...) -> None: ... - class TimeFilter(_message.Message): - __slots__ = ("older_than", "newer_than") - OLDER_THAN_FIELD_NUMBER: _ClassVar[int] - NEWER_THAN_FIELD_NUMBER: _ClassVar[int] - older_than: _timestamp_pb2.Timestamp - newer_than: _timestamp_pb2.Timestamp - def __init__(self, older_than: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., newer_than: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... - class IDFilter(_message.Message): - __slots__ = ("lower_than", "higher_than") - LOWER_THAN_FIELD_NUMBER: _ClassVar[int] - HIGHER_THAN_FIELD_NUMBER: _ClassVar[int] - lower_than: int - higher_than: int - def __init__(self, lower_than: _Optional[int] = ..., higher_than: _Optional[int] = ...) -> None: ... - class CallFilter(_message.Message): - __slots__ = ("dest_module", "dest_verb", "source_module") - DEST_MODULE_FIELD_NUMBER: _ClassVar[int] - DEST_VERB_FIELD_NUMBER: _ClassVar[int] - SOURCE_MODULE_FIELD_NUMBER: _ClassVar[int] - dest_module: str - dest_verb: str - source_module: str - def __init__(self, dest_module: _Optional[str] = ..., dest_verb: _Optional[str] = ..., source_module: _Optional[str] = ...) -> None: ... - class ModuleFilter(_message.Message): - __slots__ = ("module", "verb") - MODULE_FIELD_NUMBER: _ClassVar[int] - VERB_FIELD_NUMBER: _ClassVar[int] - module: str - verb: str - def __init__(self, module: _Optional[str] = ..., verb: _Optional[str] = ...) -> None: ... - class Filter(_message.Message): - __slots__ = ("limit", "log_level", "deployments", "requests", "event_types", "time", "id", "call", "module") - LIMIT_FIELD_NUMBER: _ClassVar[int] - LOG_LEVEL_FIELD_NUMBER: _ClassVar[int] - DEPLOYMENTS_FIELD_NUMBER: _ClassVar[int] - REQUESTS_FIELD_NUMBER: _ClassVar[int] - EVENT_TYPES_FIELD_NUMBER: _ClassVar[int] - TIME_FIELD_NUMBER: _ClassVar[int] - ID_FIELD_NUMBER: _ClassVar[int] - CALL_FIELD_NUMBER: _ClassVar[int] - MODULE_FIELD_NUMBER: _ClassVar[int] - limit: EventsQuery.LimitFilter - log_level: EventsQuery.LogLevelFilter - deployments: EventsQuery.DeploymentFilter - requests: EventsQuery.RequestFilter - event_types: EventsQuery.EventTypeFilter - time: EventsQuery.TimeFilter - id: EventsQuery.IDFilter - call: EventsQuery.CallFilter - module: EventsQuery.ModuleFilter - def __init__(self, limit: _Optional[_Union[EventsQuery.LimitFilter, _Mapping]] = ..., log_level: _Optional[_Union[EventsQuery.LogLevelFilter, _Mapping]] = ..., deployments: _Optional[_Union[EventsQuery.DeploymentFilter, _Mapping]] = ..., requests: _Optional[_Union[EventsQuery.RequestFilter, _Mapping]] = ..., event_types: _Optional[_Union[EventsQuery.EventTypeFilter, _Mapping]] = ..., time: _Optional[_Union[EventsQuery.TimeFilter, _Mapping]] = ..., id: _Optional[_Union[EventsQuery.IDFilter, _Mapping]] = ..., call: _Optional[_Union[EventsQuery.CallFilter, _Mapping]] = ..., module: _Optional[_Union[EventsQuery.ModuleFilter, _Mapping]] = ...) -> None: ... - FILTERS_FIELD_NUMBER: _ClassVar[int] - LIMIT_FIELD_NUMBER: _ClassVar[int] - ORDER_FIELD_NUMBER: _ClassVar[int] - filters: _containers.RepeatedCompositeFieldContainer[EventsQuery.Filter] - limit: int - order: EventsQuery.Order - def __init__(self, filters: _Optional[_Iterable[_Union[EventsQuery.Filter, _Mapping]]] = ..., limit: _Optional[int] = ..., order: _Optional[_Union[EventsQuery.Order, str]] = ...) -> None: ... - -class StreamEventsRequest(_message.Message): - __slots__ = ("update_interval", "query") - UPDATE_INTERVAL_FIELD_NUMBER: _ClassVar[int] - QUERY_FIELD_NUMBER: _ClassVar[int] - update_interval: _duration_pb2.Duration - query: EventsQuery - def __init__(self, update_interval: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., query: _Optional[_Union[EventsQuery, _Mapping]] = ...) -> None: ... - -class StreamEventsResponse(_message.Message): - __slots__ = ("events",) - EVENTS_FIELD_NUMBER: _ClassVar[int] - events: _containers.RepeatedCompositeFieldContainer[Event] - def __init__(self, events: _Optional[_Iterable[_Union[Event, _Mapping]]] = ...) -> None: ... - -class Event(_message.Message): - __slots__ = ("time_stamp", "id", "log", "call", "deployment_created", "deployment_updated", "ingress", "cron_scheduled", "async_execute", "pubsub_publish", "pubsub_consume") - TIME_STAMP_FIELD_NUMBER: _ClassVar[int] - ID_FIELD_NUMBER: _ClassVar[int] - LOG_FIELD_NUMBER: _ClassVar[int] - CALL_FIELD_NUMBER: _ClassVar[int] - DEPLOYMENT_CREATED_FIELD_NUMBER: _ClassVar[int] - DEPLOYMENT_UPDATED_FIELD_NUMBER: _ClassVar[int] - INGRESS_FIELD_NUMBER: _ClassVar[int] - CRON_SCHEDULED_FIELD_NUMBER: _ClassVar[int] - ASYNC_EXECUTE_FIELD_NUMBER: _ClassVar[int] - PUBSUB_PUBLISH_FIELD_NUMBER: _ClassVar[int] - PUBSUB_CONSUME_FIELD_NUMBER: _ClassVar[int] - time_stamp: _timestamp_pb2.Timestamp - id: int - log: LogEvent - call: CallEvent - deployment_created: DeploymentCreatedEvent - deployment_updated: DeploymentUpdatedEvent - ingress: IngressEvent - cron_scheduled: CronScheduledEvent - async_execute: AsyncExecuteEvent - pubsub_publish: PubSubPublishEvent - pubsub_consume: PubSubConsumeEvent - def __init__(self, time_stamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., id: _Optional[int] = ..., log: _Optional[_Union[LogEvent, _Mapping]] = ..., call: _Optional[_Union[CallEvent, _Mapping]] = ..., deployment_created: _Optional[_Union[DeploymentCreatedEvent, _Mapping]] = ..., deployment_updated: _Optional[_Union[DeploymentUpdatedEvent, _Mapping]] = ..., ingress: _Optional[_Union[IngressEvent, _Mapping]] = ..., cron_scheduled: _Optional[_Union[CronScheduledEvent, _Mapping]] = ..., async_execute: _Optional[_Union[AsyncExecuteEvent, _Mapping]] = ..., pubsub_publish: _Optional[_Union[PubSubPublishEvent, _Mapping]] = ..., pubsub_consume: _Optional[_Union[PubSubConsumeEvent, _Mapping]] = ...) -> None: ... - -class GetEventsResponse(_message.Message): - __slots__ = ("events", "cursor") - EVENTS_FIELD_NUMBER: _ClassVar[int] - CURSOR_FIELD_NUMBER: _ClassVar[int] - events: _containers.RepeatedCompositeFieldContainer[Event] - cursor: int - def __init__(self, events: _Optional[_Iterable[_Union[Event, _Mapping]]] = ..., cursor: _Optional[int] = ...) -> None: ... +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import collections.abc +import google.protobuf.descriptor +import google.protobuf.duration_pb2 +import google.protobuf.internal.containers +import google.protobuf.internal.enum_type_wrapper +import google.protobuf.message +import google.protobuf.timestamp_pb2 +import sys +import typing +import xyz.block.ftl.v1.schema.schema_pb2 + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class _EventType: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _EventTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_EventType.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + EVENT_TYPE_UNKNOWN: _EventType.ValueType # 0 + EVENT_TYPE_LOG: _EventType.ValueType # 1 + EVENT_TYPE_CALL: _EventType.ValueType # 2 + EVENT_TYPE_DEPLOYMENT_CREATED: _EventType.ValueType # 3 + EVENT_TYPE_DEPLOYMENT_UPDATED: _EventType.ValueType # 4 + EVENT_TYPE_INGRESS: _EventType.ValueType # 5 + EVENT_TYPE_CRON_SCHEDULED: _EventType.ValueType # 6 + EVENT_TYPE_ASYNC_EXECUTE: _EventType.ValueType # 7 + EVENT_TYPE_PUBSUB_PUBLISH: _EventType.ValueType # 8 + EVENT_TYPE_PUBSUB_CONSUME: _EventType.ValueType # 9 + +class EventType(_EventType, metaclass=_EventTypeEnumTypeWrapper): ... + +EVENT_TYPE_UNKNOWN: EventType.ValueType # 0 +EVENT_TYPE_LOG: EventType.ValueType # 1 +EVENT_TYPE_CALL: EventType.ValueType # 2 +EVENT_TYPE_DEPLOYMENT_CREATED: EventType.ValueType # 3 +EVENT_TYPE_DEPLOYMENT_UPDATED: EventType.ValueType # 4 +EVENT_TYPE_INGRESS: EventType.ValueType # 5 +EVENT_TYPE_CRON_SCHEDULED: EventType.ValueType # 6 +EVENT_TYPE_ASYNC_EXECUTE: EventType.ValueType # 7 +EVENT_TYPE_PUBSUB_PUBLISH: EventType.ValueType # 8 +EVENT_TYPE_PUBSUB_CONSUME: EventType.ValueType # 9 +global___EventType = EventType + +class _AsyncExecuteEventType: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _AsyncExecuteEventTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_AsyncExecuteEventType.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + ASYNC_EXECUTE_EVENT_TYPE_UNKNOWN: _AsyncExecuteEventType.ValueType # 0 + ASYNC_EXECUTE_EVENT_TYPE_CRON: _AsyncExecuteEventType.ValueType # 1 + ASYNC_EXECUTE_EVENT_TYPE_PUBSUB: _AsyncExecuteEventType.ValueType # 2 + +class AsyncExecuteEventType(_AsyncExecuteEventType, metaclass=_AsyncExecuteEventTypeEnumTypeWrapper): ... + +ASYNC_EXECUTE_EVENT_TYPE_UNKNOWN: AsyncExecuteEventType.ValueType # 0 +ASYNC_EXECUTE_EVENT_TYPE_CRON: AsyncExecuteEventType.ValueType # 1 +ASYNC_EXECUTE_EVENT_TYPE_PUBSUB: AsyncExecuteEventType.ValueType # 2 +global___AsyncExecuteEventType = AsyncExecuteEventType + +class _LogLevel: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _LogLevelEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_LogLevel.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + LOG_LEVEL_UNKNOWN: _LogLevel.ValueType # 0 + LOG_LEVEL_TRACE: _LogLevel.ValueType # 1 + LOG_LEVEL_DEBUG: _LogLevel.ValueType # 5 + LOG_LEVEL_INFO: _LogLevel.ValueType # 9 + LOG_LEVEL_WARN: _LogLevel.ValueType # 13 + LOG_LEVEL_ERROR: _LogLevel.ValueType # 17 + +class LogLevel(_LogLevel, metaclass=_LogLevelEnumTypeWrapper): ... + +LOG_LEVEL_UNKNOWN: LogLevel.ValueType # 0 +LOG_LEVEL_TRACE: LogLevel.ValueType # 1 +LOG_LEVEL_DEBUG: LogLevel.ValueType # 5 +LOG_LEVEL_INFO: LogLevel.ValueType # 9 +LOG_LEVEL_WARN: LogLevel.ValueType # 13 +LOG_LEVEL_ERROR: LogLevel.ValueType # 17 +global___LogLevel = LogLevel + +@typing.final +class LogEvent(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + @typing.final + class AttributesEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... + + DEPLOYMENT_KEY_FIELD_NUMBER: builtins.int + REQUEST_KEY_FIELD_NUMBER: builtins.int + TIME_STAMP_FIELD_NUMBER: builtins.int + LOG_LEVEL_FIELD_NUMBER: builtins.int + ATTRIBUTES_FIELD_NUMBER: builtins.int + MESSAGE_FIELD_NUMBER: builtins.int + ERROR_FIELD_NUMBER: builtins.int + STACK_FIELD_NUMBER: builtins.int + deployment_key: builtins.str + request_key: builtins.str + log_level: builtins.int + message: builtins.str + error: builtins.str + stack: builtins.str + @property + def time_stamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ... + @property + def attributes(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ... + def __init__( + self, + *, + deployment_key: builtins.str = ..., + request_key: builtins.str | None = ..., + time_stamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., + log_level: builtins.int = ..., + attributes: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., + message: builtins.str = ..., + error: builtins.str | None = ..., + stack: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_error", b"_error", "_request_key", b"_request_key", "_stack", b"_stack", "error", b"error", "request_key", b"request_key", "stack", b"stack", "time_stamp", b"time_stamp"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_error", b"_error", "_request_key", b"_request_key", "_stack", b"_stack", "attributes", b"attributes", "deployment_key", b"deployment_key", "error", b"error", "log_level", b"log_level", "message", b"message", "request_key", b"request_key", "stack", b"stack", "time_stamp", b"time_stamp"]) -> None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_error", b"_error"]) -> typing.Literal["error"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_request_key", b"_request_key"]) -> typing.Literal["request_key"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_stack", b"_stack"]) -> typing.Literal["stack"] | None: ... + +global___LogEvent = LogEvent + +@typing.final +class CallEvent(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + REQUEST_KEY_FIELD_NUMBER: builtins.int + DEPLOYMENT_KEY_FIELD_NUMBER: builtins.int + TIME_STAMP_FIELD_NUMBER: builtins.int + SOURCE_VERB_REF_FIELD_NUMBER: builtins.int + DESTINATION_VERB_REF_FIELD_NUMBER: builtins.int + DURATION_FIELD_NUMBER: builtins.int + REQUEST_FIELD_NUMBER: builtins.int + RESPONSE_FIELD_NUMBER: builtins.int + ERROR_FIELD_NUMBER: builtins.int + STACK_FIELD_NUMBER: builtins.int + request_key: builtins.str + deployment_key: builtins.str + request: builtins.str + response: builtins.str + error: builtins.str + stack: builtins.str + @property + def time_stamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ... + @property + def source_verb_ref(self) -> xyz.block.ftl.v1.schema.schema_pb2.Ref: ... + @property + def destination_verb_ref(self) -> xyz.block.ftl.v1.schema.schema_pb2.Ref: ... + @property + def duration(self) -> google.protobuf.duration_pb2.Duration: ... + def __init__( + self, + *, + request_key: builtins.str | None = ..., + deployment_key: builtins.str = ..., + time_stamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., + source_verb_ref: xyz.block.ftl.v1.schema.schema_pb2.Ref | None = ..., + destination_verb_ref: xyz.block.ftl.v1.schema.schema_pb2.Ref | None = ..., + duration: google.protobuf.duration_pb2.Duration | None = ..., + request: builtins.str = ..., + response: builtins.str = ..., + error: builtins.str | None = ..., + stack: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_error", b"_error", "_request_key", b"_request_key", "_source_verb_ref", b"_source_verb_ref", "_stack", b"_stack", "destination_verb_ref", b"destination_verb_ref", "duration", b"duration", "error", b"error", "request_key", b"request_key", "source_verb_ref", b"source_verb_ref", "stack", b"stack", "time_stamp", b"time_stamp"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_error", b"_error", "_request_key", b"_request_key", "_source_verb_ref", b"_source_verb_ref", "_stack", b"_stack", "deployment_key", b"deployment_key", "destination_verb_ref", b"destination_verb_ref", "duration", b"duration", "error", b"error", "request", b"request", "request_key", b"request_key", "response", b"response", "source_verb_ref", b"source_verb_ref", "stack", b"stack", "time_stamp", b"time_stamp"]) -> None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_error", b"_error"]) -> typing.Literal["error"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_request_key", b"_request_key"]) -> typing.Literal["request_key"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_source_verb_ref", b"_source_verb_ref"]) -> typing.Literal["source_verb_ref"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_stack", b"_stack"]) -> typing.Literal["stack"] | None: ... + +global___CallEvent = CallEvent + +@typing.final +class DeploymentCreatedEvent(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + LANGUAGE_FIELD_NUMBER: builtins.int + MODULE_NAME_FIELD_NUMBER: builtins.int + MIN_REPLICAS_FIELD_NUMBER: builtins.int + REPLACED_FIELD_NUMBER: builtins.int + key: builtins.str + language: builtins.str + module_name: builtins.str + min_replicas: builtins.int + replaced: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + language: builtins.str = ..., + module_name: builtins.str = ..., + min_replicas: builtins.int = ..., + replaced: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_replaced", b"_replaced", "replaced", b"replaced"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_replaced", b"_replaced", "key", b"key", "language", b"language", "min_replicas", b"min_replicas", "module_name", b"module_name", "replaced", b"replaced"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_replaced", b"_replaced"]) -> typing.Literal["replaced"] | None: ... + +global___DeploymentCreatedEvent = DeploymentCreatedEvent + +@typing.final +class DeploymentUpdatedEvent(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + MIN_REPLICAS_FIELD_NUMBER: builtins.int + PREV_MIN_REPLICAS_FIELD_NUMBER: builtins.int + key: builtins.str + min_replicas: builtins.int + prev_min_replicas: builtins.int + def __init__( + self, + *, + key: builtins.str = ..., + min_replicas: builtins.int = ..., + prev_min_replicas: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "min_replicas", b"min_replicas", "prev_min_replicas", b"prev_min_replicas"]) -> None: ... + +global___DeploymentUpdatedEvent = DeploymentUpdatedEvent + +@typing.final +class IngressEvent(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + DEPLOYMENT_KEY_FIELD_NUMBER: builtins.int + REQUEST_KEY_FIELD_NUMBER: builtins.int + VERB_REF_FIELD_NUMBER: builtins.int + METHOD_FIELD_NUMBER: builtins.int + PATH_FIELD_NUMBER: builtins.int + STATUS_CODE_FIELD_NUMBER: builtins.int + TIME_STAMP_FIELD_NUMBER: builtins.int + DURATION_FIELD_NUMBER: builtins.int + REQUEST_FIELD_NUMBER: builtins.int + REQUEST_HEADER_FIELD_NUMBER: builtins.int + RESPONSE_FIELD_NUMBER: builtins.int + RESPONSE_HEADER_FIELD_NUMBER: builtins.int + ERROR_FIELD_NUMBER: builtins.int + deployment_key: builtins.str + request_key: builtins.str + method: builtins.str + path: builtins.str + status_code: builtins.int + request: builtins.str + request_header: builtins.str + response: builtins.str + response_header: builtins.str + error: builtins.str + @property + def verb_ref(self) -> xyz.block.ftl.v1.schema.schema_pb2.Ref: ... + @property + def time_stamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ... + @property + def duration(self) -> google.protobuf.duration_pb2.Duration: ... + def __init__( + self, + *, + deployment_key: builtins.str = ..., + request_key: builtins.str | None = ..., + verb_ref: xyz.block.ftl.v1.schema.schema_pb2.Ref | None = ..., + method: builtins.str = ..., + path: builtins.str = ..., + status_code: builtins.int = ..., + time_stamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., + duration: google.protobuf.duration_pb2.Duration | None = ..., + request: builtins.str = ..., + request_header: builtins.str = ..., + response: builtins.str = ..., + response_header: builtins.str = ..., + error: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_error", b"_error", "_request_key", b"_request_key", "duration", b"duration", "error", b"error", "request_key", b"request_key", "time_stamp", b"time_stamp", "verb_ref", b"verb_ref"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_error", b"_error", "_request_key", b"_request_key", "deployment_key", b"deployment_key", "duration", b"duration", "error", b"error", "method", b"method", "path", b"path", "request", b"request", "request_header", b"request_header", "request_key", b"request_key", "response", b"response", "response_header", b"response_header", "status_code", b"status_code", "time_stamp", b"time_stamp", "verb_ref", b"verb_ref"]) -> None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_error", b"_error"]) -> typing.Literal["error"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_request_key", b"_request_key"]) -> typing.Literal["request_key"] | None: ... + +global___IngressEvent = IngressEvent + +@typing.final +class CronScheduledEvent(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + DEPLOYMENT_KEY_FIELD_NUMBER: builtins.int + VERB_REF_FIELD_NUMBER: builtins.int + TIME_STAMP_FIELD_NUMBER: builtins.int + DURATION_FIELD_NUMBER: builtins.int + SCHEDULED_AT_FIELD_NUMBER: builtins.int + SCHEDULE_FIELD_NUMBER: builtins.int + ERROR_FIELD_NUMBER: builtins.int + deployment_key: builtins.str + schedule: builtins.str + error: builtins.str + @property + def verb_ref(self) -> xyz.block.ftl.v1.schema.schema_pb2.Ref: ... + @property + def time_stamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ... + @property + def duration(self) -> google.protobuf.duration_pb2.Duration: ... + @property + def scheduled_at(self) -> google.protobuf.timestamp_pb2.Timestamp: ... + def __init__( + self, + *, + deployment_key: builtins.str = ..., + verb_ref: xyz.block.ftl.v1.schema.schema_pb2.Ref | None = ..., + time_stamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., + duration: google.protobuf.duration_pb2.Duration | None = ..., + scheduled_at: google.protobuf.timestamp_pb2.Timestamp | None = ..., + schedule: builtins.str = ..., + error: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_error", b"_error", "duration", b"duration", "error", b"error", "scheduled_at", b"scheduled_at", "time_stamp", b"time_stamp", "verb_ref", b"verb_ref"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_error", b"_error", "deployment_key", b"deployment_key", "duration", b"duration", "error", b"error", "schedule", b"schedule", "scheduled_at", b"scheduled_at", "time_stamp", b"time_stamp", "verb_ref", b"verb_ref"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_error", b"_error"]) -> typing.Literal["error"] | None: ... + +global___CronScheduledEvent = CronScheduledEvent + +@typing.final +class AsyncExecuteEvent(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + DEPLOYMENT_KEY_FIELD_NUMBER: builtins.int + REQUEST_KEY_FIELD_NUMBER: builtins.int + VERB_REF_FIELD_NUMBER: builtins.int + TIME_STAMP_FIELD_NUMBER: builtins.int + DURATION_FIELD_NUMBER: builtins.int + ASYNC_EVENT_TYPE_FIELD_NUMBER: builtins.int + ERROR_FIELD_NUMBER: builtins.int + deployment_key: builtins.str + request_key: builtins.str + async_event_type: global___AsyncExecuteEventType.ValueType + error: builtins.str + @property + def verb_ref(self) -> xyz.block.ftl.v1.schema.schema_pb2.Ref: ... + @property + def time_stamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ... + @property + def duration(self) -> google.protobuf.duration_pb2.Duration: ... + def __init__( + self, + *, + deployment_key: builtins.str = ..., + request_key: builtins.str | None = ..., + verb_ref: xyz.block.ftl.v1.schema.schema_pb2.Ref | None = ..., + time_stamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., + duration: google.protobuf.duration_pb2.Duration | None = ..., + async_event_type: global___AsyncExecuteEventType.ValueType = ..., + error: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_error", b"_error", "_request_key", b"_request_key", "duration", b"duration", "error", b"error", "request_key", b"request_key", "time_stamp", b"time_stamp", "verb_ref", b"verb_ref"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_error", b"_error", "_request_key", b"_request_key", "async_event_type", b"async_event_type", "deployment_key", b"deployment_key", "duration", b"duration", "error", b"error", "request_key", b"request_key", "time_stamp", b"time_stamp", "verb_ref", b"verb_ref"]) -> None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_error", b"_error"]) -> typing.Literal["error"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_request_key", b"_request_key"]) -> typing.Literal["request_key"] | None: ... + +global___AsyncExecuteEvent = AsyncExecuteEvent + +@typing.final +class PubSubPublishEvent(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + DEPLOYMENT_KEY_FIELD_NUMBER: builtins.int + REQUEST_KEY_FIELD_NUMBER: builtins.int + VERB_REF_FIELD_NUMBER: builtins.int + TIME_STAMP_FIELD_NUMBER: builtins.int + DURATION_FIELD_NUMBER: builtins.int + TOPIC_FIELD_NUMBER: builtins.int + REQUEST_FIELD_NUMBER: builtins.int + ERROR_FIELD_NUMBER: builtins.int + deployment_key: builtins.str + request_key: builtins.str + topic: builtins.str + request: builtins.str + error: builtins.str + @property + def verb_ref(self) -> xyz.block.ftl.v1.schema.schema_pb2.Ref: ... + @property + def time_stamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ... + @property + def duration(self) -> google.protobuf.duration_pb2.Duration: ... + def __init__( + self, + *, + deployment_key: builtins.str = ..., + request_key: builtins.str | None = ..., + verb_ref: xyz.block.ftl.v1.schema.schema_pb2.Ref | None = ..., + time_stamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., + duration: google.protobuf.duration_pb2.Duration | None = ..., + topic: builtins.str = ..., + request: builtins.str = ..., + error: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_error", b"_error", "_request_key", b"_request_key", "duration", b"duration", "error", b"error", "request_key", b"request_key", "time_stamp", b"time_stamp", "verb_ref", b"verb_ref"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_error", b"_error", "_request_key", b"_request_key", "deployment_key", b"deployment_key", "duration", b"duration", "error", b"error", "request", b"request", "request_key", b"request_key", "time_stamp", b"time_stamp", "topic", b"topic", "verb_ref", b"verb_ref"]) -> None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_error", b"_error"]) -> typing.Literal["error"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_request_key", b"_request_key"]) -> typing.Literal["request_key"] | None: ... + +global___PubSubPublishEvent = PubSubPublishEvent + +@typing.final +class PubSubConsumeEvent(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + DEPLOYMENT_KEY_FIELD_NUMBER: builtins.int + REQUEST_KEY_FIELD_NUMBER: builtins.int + DEST_VERB_MODULE_FIELD_NUMBER: builtins.int + DEST_VERB_NAME_FIELD_NUMBER: builtins.int + TIME_STAMP_FIELD_NUMBER: builtins.int + DURATION_FIELD_NUMBER: builtins.int + TOPIC_FIELD_NUMBER: builtins.int + ERROR_FIELD_NUMBER: builtins.int + deployment_key: builtins.str + request_key: builtins.str + dest_verb_module: builtins.str + dest_verb_name: builtins.str + topic: builtins.str + error: builtins.str + @property + def time_stamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ... + @property + def duration(self) -> google.protobuf.duration_pb2.Duration: ... + def __init__( + self, + *, + deployment_key: builtins.str = ..., + request_key: builtins.str | None = ..., + dest_verb_module: builtins.str | None = ..., + dest_verb_name: builtins.str | None = ..., + time_stamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., + duration: google.protobuf.duration_pb2.Duration | None = ..., + topic: builtins.str = ..., + error: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_dest_verb_module", b"_dest_verb_module", "_dest_verb_name", b"_dest_verb_name", "_error", b"_error", "_request_key", b"_request_key", "dest_verb_module", b"dest_verb_module", "dest_verb_name", b"dest_verb_name", "duration", b"duration", "error", b"error", "request_key", b"request_key", "time_stamp", b"time_stamp"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_dest_verb_module", b"_dest_verb_module", "_dest_verb_name", b"_dest_verb_name", "_error", b"_error", "_request_key", b"_request_key", "deployment_key", b"deployment_key", "dest_verb_module", b"dest_verb_module", "dest_verb_name", b"dest_verb_name", "duration", b"duration", "error", b"error", "request_key", b"request_key", "time_stamp", b"time_stamp", "topic", b"topic"]) -> None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_dest_verb_module", b"_dest_verb_module"]) -> typing.Literal["dest_verb_module"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_dest_verb_name", b"_dest_verb_name"]) -> typing.Literal["dest_verb_name"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_error", b"_error"]) -> typing.Literal["error"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_request_key", b"_request_key"]) -> typing.Literal["request_key"] | None: ... + +global___PubSubConsumeEvent = PubSubConsumeEvent + +@typing.final +class Config(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + CONFIG_FIELD_NUMBER: builtins.int + REFERENCES_FIELD_NUMBER: builtins.int + @property + def config(self) -> xyz.block.ftl.v1.schema.schema_pb2.Config: ... + @property + def references(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[xyz.block.ftl.v1.schema.schema_pb2.Ref]: ... + def __init__( + self, + *, + config: xyz.block.ftl.v1.schema.schema_pb2.Config | None = ..., + references: collections.abc.Iterable[xyz.block.ftl.v1.schema.schema_pb2.Ref] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["config", b"config"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["config", b"config", "references", b"references"]) -> None: ... + +global___Config = Config + +@typing.final +class Data(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + DATA_FIELD_NUMBER: builtins.int + SCHEMA_FIELD_NUMBER: builtins.int + REFERENCES_FIELD_NUMBER: builtins.int + schema: builtins.str + @property + def data(self) -> xyz.block.ftl.v1.schema.schema_pb2.Data: ... + @property + def references(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[xyz.block.ftl.v1.schema.schema_pb2.Ref]: ... + def __init__( + self, + *, + data: xyz.block.ftl.v1.schema.schema_pb2.Data | None = ..., + schema: builtins.str = ..., + references: collections.abc.Iterable[xyz.block.ftl.v1.schema.schema_pb2.Ref] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["data", b"data"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["data", b"data", "references", b"references", "schema", b"schema"]) -> None: ... + +global___Data = Data + +@typing.final +class Database(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + DATABASE_FIELD_NUMBER: builtins.int + REFERENCES_FIELD_NUMBER: builtins.int + @property + def database(self) -> xyz.block.ftl.v1.schema.schema_pb2.Database: ... + @property + def references(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[xyz.block.ftl.v1.schema.schema_pb2.Ref]: ... + def __init__( + self, + *, + database: xyz.block.ftl.v1.schema.schema_pb2.Database | None = ..., + references: collections.abc.Iterable[xyz.block.ftl.v1.schema.schema_pb2.Ref] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["database", b"database"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["database", b"database", "references", b"references"]) -> None: ... + +global___Database = Database + +@typing.final +class Enum(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ENUM_FIELD_NUMBER: builtins.int + REFERENCES_FIELD_NUMBER: builtins.int + @property + def enum(self) -> xyz.block.ftl.v1.schema.schema_pb2.Enum: ... + @property + def references(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[xyz.block.ftl.v1.schema.schema_pb2.Ref]: ... + def __init__( + self, + *, + enum: xyz.block.ftl.v1.schema.schema_pb2.Enum | None = ..., + references: collections.abc.Iterable[xyz.block.ftl.v1.schema.schema_pb2.Ref] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["enum", b"enum"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["enum", b"enum", "references", b"references"]) -> None: ... + +global___Enum = Enum + +@typing.final +class Topic(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TOPIC_FIELD_NUMBER: builtins.int + REFERENCES_FIELD_NUMBER: builtins.int + @property + def topic(self) -> xyz.block.ftl.v1.schema.schema_pb2.Topic: ... + @property + def references(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[xyz.block.ftl.v1.schema.schema_pb2.Ref]: ... + def __init__( + self, + *, + topic: xyz.block.ftl.v1.schema.schema_pb2.Topic | None = ..., + references: collections.abc.Iterable[xyz.block.ftl.v1.schema.schema_pb2.Ref] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["topic", b"topic"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["references", b"references", "topic", b"topic"]) -> None: ... + +global___Topic = Topic + +@typing.final +class TypeAlias(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TYPEALIAS_FIELD_NUMBER: builtins.int + REFERENCES_FIELD_NUMBER: builtins.int + @property + def typealias(self) -> xyz.block.ftl.v1.schema.schema_pb2.TypeAlias: ... + @property + def references(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[xyz.block.ftl.v1.schema.schema_pb2.Ref]: ... + def __init__( + self, + *, + typealias: xyz.block.ftl.v1.schema.schema_pb2.TypeAlias | None = ..., + references: collections.abc.Iterable[xyz.block.ftl.v1.schema.schema_pb2.Ref] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["typealias", b"typealias"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["references", b"references", "typealias", b"typealias"]) -> None: ... + +global___TypeAlias = TypeAlias + +@typing.final +class Secret(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SECRET_FIELD_NUMBER: builtins.int + REFERENCES_FIELD_NUMBER: builtins.int + @property + def secret(self) -> xyz.block.ftl.v1.schema.schema_pb2.Secret: ... + @property + def references(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[xyz.block.ftl.v1.schema.schema_pb2.Ref]: ... + def __init__( + self, + *, + secret: xyz.block.ftl.v1.schema.schema_pb2.Secret | None = ..., + references: collections.abc.Iterable[xyz.block.ftl.v1.schema.schema_pb2.Ref] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["secret", b"secret"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["references", b"references", "secret", b"secret"]) -> None: ... + +global___Secret = Secret + +@typing.final +class Subscription(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SUBSCRIPTION_FIELD_NUMBER: builtins.int + REFERENCES_FIELD_NUMBER: builtins.int + @property + def subscription(self) -> xyz.block.ftl.v1.schema.schema_pb2.Subscription: ... + @property + def references(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[xyz.block.ftl.v1.schema.schema_pb2.Ref]: ... + def __init__( + self, + *, + subscription: xyz.block.ftl.v1.schema.schema_pb2.Subscription | None = ..., + references: collections.abc.Iterable[xyz.block.ftl.v1.schema.schema_pb2.Ref] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["subscription", b"subscription"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["references", b"references", "subscription", b"subscription"]) -> None: ... + +global___Subscription = Subscription + +@typing.final +class Verb(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + VERB_FIELD_NUMBER: builtins.int + SCHEMA_FIELD_NUMBER: builtins.int + JSON_REQUEST_SCHEMA_FIELD_NUMBER: builtins.int + REFERENCES_FIELD_NUMBER: builtins.int + schema: builtins.str + json_request_schema: builtins.str + @property + def verb(self) -> xyz.block.ftl.v1.schema.schema_pb2.Verb: ... + @property + def references(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[xyz.block.ftl.v1.schema.schema_pb2.Ref]: ... + def __init__( + self, + *, + verb: xyz.block.ftl.v1.schema.schema_pb2.Verb | None = ..., + schema: builtins.str = ..., + json_request_schema: builtins.str = ..., + references: collections.abc.Iterable[xyz.block.ftl.v1.schema.schema_pb2.Ref] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["verb", b"verb"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["json_request_schema", b"json_request_schema", "references", b"references", "schema", b"schema", "verb", b"verb"]) -> None: ... + +global___Verb = Verb + +@typing.final +class Module(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAME_FIELD_NUMBER: builtins.int + DEPLOYMENT_KEY_FIELD_NUMBER: builtins.int + LANGUAGE_FIELD_NUMBER: builtins.int + SCHEMA_FIELD_NUMBER: builtins.int + VERBS_FIELD_NUMBER: builtins.int + DATA_FIELD_NUMBER: builtins.int + SECRETS_FIELD_NUMBER: builtins.int + CONFIGS_FIELD_NUMBER: builtins.int + DATABASES_FIELD_NUMBER: builtins.int + ENUMS_FIELD_NUMBER: builtins.int + TOPICS_FIELD_NUMBER: builtins.int + TYPEALIASES_FIELD_NUMBER: builtins.int + SUBSCRIPTIONS_FIELD_NUMBER: builtins.int + name: builtins.str + deployment_key: builtins.str + language: builtins.str + schema: builtins.str + @property + def verbs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Verb]: ... + @property + def data(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Data]: ... + @property + def secrets(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Secret]: ... + @property + def configs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Config]: ... + @property + def databases(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Database]: ... + @property + def enums(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Enum]: ... + @property + def topics(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Topic]: ... + @property + def typealiases(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___TypeAlias]: ... + @property + def subscriptions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Subscription]: ... + def __init__( + self, + *, + name: builtins.str = ..., + deployment_key: builtins.str = ..., + language: builtins.str = ..., + schema: builtins.str = ..., + verbs: collections.abc.Iterable[global___Verb] | None = ..., + data: collections.abc.Iterable[global___Data] | None = ..., + secrets: collections.abc.Iterable[global___Secret] | None = ..., + configs: collections.abc.Iterable[global___Config] | None = ..., + databases: collections.abc.Iterable[global___Database] | None = ..., + enums: collections.abc.Iterable[global___Enum] | None = ..., + topics: collections.abc.Iterable[global___Topic] | None = ..., + typealiases: collections.abc.Iterable[global___TypeAlias] | None = ..., + subscriptions: collections.abc.Iterable[global___Subscription] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["configs", b"configs", "data", b"data", "databases", b"databases", "deployment_key", b"deployment_key", "enums", b"enums", "language", b"language", "name", b"name", "schema", b"schema", "secrets", b"secrets", "subscriptions", b"subscriptions", "topics", b"topics", "typealiases", b"typealiases", "verbs", b"verbs"]) -> None: ... + +global___Module = Module + +@typing.final +class TopologyGroup(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + MODULES_FIELD_NUMBER: builtins.int + @property + def modules(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + def __init__( + self, + *, + modules: collections.abc.Iterable[builtins.str] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["modules", b"modules"]) -> None: ... + +global___TopologyGroup = TopologyGroup + +@typing.final +class Topology(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + LEVELS_FIELD_NUMBER: builtins.int + @property + def levels(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___TopologyGroup]: ... + def __init__( + self, + *, + levels: collections.abc.Iterable[global___TopologyGroup] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["levels", b"levels"]) -> None: ... + +global___Topology = Topology + +@typing.final +class GetModulesRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___GetModulesRequest = GetModulesRequest + +@typing.final +class GetModulesResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + MODULES_FIELD_NUMBER: builtins.int + TOPOLOGY_FIELD_NUMBER: builtins.int + @property + def modules(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Module]: ... + @property + def topology(self) -> global___Topology: ... + def __init__( + self, + *, + modules: collections.abc.Iterable[global___Module] | None = ..., + topology: global___Topology | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["topology", b"topology"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["modules", b"modules", "topology", b"topology"]) -> None: ... + +global___GetModulesResponse = GetModulesResponse + +@typing.final +class StreamModulesRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___StreamModulesRequest = StreamModulesRequest + +@typing.final +class StreamModulesResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + MODULES_FIELD_NUMBER: builtins.int + @property + def modules(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Module]: ... + def __init__( + self, + *, + modules: collections.abc.Iterable[global___Module] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["modules", b"modules"]) -> None: ... + +global___StreamModulesResponse = StreamModulesResponse + +@typing.final +class EventsQuery(google.protobuf.message.Message): + """Query for events.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _Order: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _OrderEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[EventsQuery._Order.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + ASC: EventsQuery._Order.ValueType # 0 + DESC: EventsQuery._Order.ValueType # 1 + + class Order(_Order, metaclass=_OrderEnumTypeWrapper): ... + ASC: EventsQuery.Order.ValueType # 0 + DESC: EventsQuery.Order.ValueType # 1 + + @typing.final + class LimitFilter(google.protobuf.message.Message): + """Limit the number of events returned.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + LIMIT_FIELD_NUMBER: builtins.int + limit: builtins.int + def __init__( + self, + *, + limit: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["limit", b"limit"]) -> None: ... + + @typing.final + class LogLevelFilter(google.protobuf.message.Message): + """Filters events by log level.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + LOG_LEVEL_FIELD_NUMBER: builtins.int + log_level: global___LogLevel.ValueType + def __init__( + self, + *, + log_level: global___LogLevel.ValueType = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["log_level", b"log_level"]) -> None: ... + + @typing.final + class DeploymentFilter(google.protobuf.message.Message): + """Filters events by deployment key.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + DEPLOYMENTS_FIELD_NUMBER: builtins.int + @property + def deployments(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + def __init__( + self, + *, + deployments: collections.abc.Iterable[builtins.str] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["deployments", b"deployments"]) -> None: ... + + @typing.final + class RequestFilter(google.protobuf.message.Message): + """Filters events by request key.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + REQUESTS_FIELD_NUMBER: builtins.int + @property + def requests(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + def __init__( + self, + *, + requests: collections.abc.Iterable[builtins.str] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["requests", b"requests"]) -> None: ... + + @typing.final + class EventTypeFilter(google.protobuf.message.Message): + """Filters events by event type.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + EVENT_TYPES_FIELD_NUMBER: builtins.int + @property + def event_types(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[global___EventType.ValueType]: ... + def __init__( + self, + *, + event_types: collections.abc.Iterable[global___EventType.ValueType] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["event_types", b"event_types"]) -> None: ... + + @typing.final + class TimeFilter(google.protobuf.message.Message): + """Filters events by time. + + Either end of the time range can be omitted to indicate no bound. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + OLDER_THAN_FIELD_NUMBER: builtins.int + NEWER_THAN_FIELD_NUMBER: builtins.int + @property + def older_than(self) -> google.protobuf.timestamp_pb2.Timestamp: ... + @property + def newer_than(self) -> google.protobuf.timestamp_pb2.Timestamp: ... + def __init__( + self, + *, + older_than: google.protobuf.timestamp_pb2.Timestamp | None = ..., + newer_than: google.protobuf.timestamp_pb2.Timestamp | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_newer_than", b"_newer_than", "_older_than", b"_older_than", "newer_than", b"newer_than", "older_than", b"older_than"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_newer_than", b"_newer_than", "_older_than", b"_older_than", "newer_than", b"newer_than", "older_than", b"older_than"]) -> None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_newer_than", b"_newer_than"]) -> typing.Literal["newer_than"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_older_than", b"_older_than"]) -> typing.Literal["older_than"] | None: ... + + @typing.final + class IDFilter(google.protobuf.message.Message): + """Filters events by ID. + + Either end of the ID range can be omitted to indicate no bound. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + LOWER_THAN_FIELD_NUMBER: builtins.int + HIGHER_THAN_FIELD_NUMBER: builtins.int + lower_than: builtins.int + higher_than: builtins.int + def __init__( + self, + *, + lower_than: builtins.int | None = ..., + higher_than: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_higher_than", b"_higher_than", "_lower_than", b"_lower_than", "higher_than", b"higher_than", "lower_than", b"lower_than"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_higher_than", b"_higher_than", "_lower_than", b"_lower_than", "higher_than", b"higher_than", "lower_than", b"lower_than"]) -> None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_higher_than", b"_higher_than"]) -> typing.Literal["higher_than"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_lower_than", b"_lower_than"]) -> typing.Literal["lower_than"] | None: ... + + @typing.final + class CallFilter(google.protobuf.message.Message): + """Filters events by call.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + DEST_MODULE_FIELD_NUMBER: builtins.int + DEST_VERB_FIELD_NUMBER: builtins.int + SOURCE_MODULE_FIELD_NUMBER: builtins.int + dest_module: builtins.str + dest_verb: builtins.str + source_module: builtins.str + def __init__( + self, + *, + dest_module: builtins.str = ..., + dest_verb: builtins.str | None = ..., + source_module: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_dest_verb", b"_dest_verb", "_source_module", b"_source_module", "dest_verb", b"dest_verb", "source_module", b"source_module"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_dest_verb", b"_dest_verb", "_source_module", b"_source_module", "dest_module", b"dest_module", "dest_verb", b"dest_verb", "source_module", b"source_module"]) -> None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_dest_verb", b"_dest_verb"]) -> typing.Literal["dest_verb"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_source_module", b"_source_module"]) -> typing.Literal["source_module"] | None: ... + + @typing.final + class ModuleFilter(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + MODULE_FIELD_NUMBER: builtins.int + VERB_FIELD_NUMBER: builtins.int + module: builtins.str + verb: builtins.str + def __init__( + self, + *, + module: builtins.str = ..., + verb: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_verb", b"_verb", "verb", b"verb"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_verb", b"_verb", "module", b"module", "verb", b"verb"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_verb", b"_verb"]) -> typing.Literal["verb"] | None: ... + + @typing.final + class Filter(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + LIMIT_FIELD_NUMBER: builtins.int + LOG_LEVEL_FIELD_NUMBER: builtins.int + DEPLOYMENTS_FIELD_NUMBER: builtins.int + REQUESTS_FIELD_NUMBER: builtins.int + EVENT_TYPES_FIELD_NUMBER: builtins.int + TIME_FIELD_NUMBER: builtins.int + ID_FIELD_NUMBER: builtins.int + CALL_FIELD_NUMBER: builtins.int + MODULE_FIELD_NUMBER: builtins.int + @property + def limit(self) -> global___EventsQuery.LimitFilter: ... + @property + def log_level(self) -> global___EventsQuery.LogLevelFilter: ... + @property + def deployments(self) -> global___EventsQuery.DeploymentFilter: ... + @property + def requests(self) -> global___EventsQuery.RequestFilter: ... + @property + def event_types(self) -> global___EventsQuery.EventTypeFilter: ... + @property + def time(self) -> global___EventsQuery.TimeFilter: ... + @property + def id(self) -> global___EventsQuery.IDFilter: ... + @property + def call(self) -> global___EventsQuery.CallFilter: ... + @property + def module(self) -> global___EventsQuery.ModuleFilter: ... + def __init__( + self, + *, + limit: global___EventsQuery.LimitFilter | None = ..., + log_level: global___EventsQuery.LogLevelFilter | None = ..., + deployments: global___EventsQuery.DeploymentFilter | None = ..., + requests: global___EventsQuery.RequestFilter | None = ..., + event_types: global___EventsQuery.EventTypeFilter | None = ..., + time: global___EventsQuery.TimeFilter | None = ..., + id: global___EventsQuery.IDFilter | None = ..., + call: global___EventsQuery.CallFilter | None = ..., + module: global___EventsQuery.ModuleFilter | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["call", b"call", "deployments", b"deployments", "event_types", b"event_types", "filter", b"filter", "id", b"id", "limit", b"limit", "log_level", b"log_level", "module", b"module", "requests", b"requests", "time", b"time"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["call", b"call", "deployments", b"deployments", "event_types", b"event_types", "filter", b"filter", "id", b"id", "limit", b"limit", "log_level", b"log_level", "module", b"module", "requests", b"requests", "time", b"time"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["filter", b"filter"]) -> typing.Literal["limit", "log_level", "deployments", "requests", "event_types", "time", "id", "call", "module"] | None: ... + + FILTERS_FIELD_NUMBER: builtins.int + LIMIT_FIELD_NUMBER: builtins.int + ORDER_FIELD_NUMBER: builtins.int + limit: builtins.int + order: global___EventsQuery.Order.ValueType + @property + def filters(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___EventsQuery.Filter]: ... + def __init__( + self, + *, + filters: collections.abc.Iterable[global___EventsQuery.Filter] | None = ..., + limit: builtins.int = ..., + order: global___EventsQuery.Order.ValueType = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["filters", b"filters", "limit", b"limit", "order", b"order"]) -> None: ... + +global___EventsQuery = EventsQuery + +@typing.final +class StreamEventsRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + UPDATE_INTERVAL_FIELD_NUMBER: builtins.int + QUERY_FIELD_NUMBER: builtins.int + @property + def update_interval(self) -> google.protobuf.duration_pb2.Duration: ... + @property + def query(self) -> global___EventsQuery: ... + def __init__( + self, + *, + update_interval: google.protobuf.duration_pb2.Duration | None = ..., + query: global___EventsQuery | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_update_interval", b"_update_interval", "query", b"query", "update_interval", b"update_interval"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_update_interval", b"_update_interval", "query", b"query", "update_interval", b"update_interval"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_update_interval", b"_update_interval"]) -> typing.Literal["update_interval"] | None: ... + +global___StreamEventsRequest = StreamEventsRequest + +@typing.final +class StreamEventsResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + EVENTS_FIELD_NUMBER: builtins.int + @property + def events(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Event]: ... + def __init__( + self, + *, + events: collections.abc.Iterable[global___Event] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["events", b"events"]) -> None: ... + +global___StreamEventsResponse = StreamEventsResponse + +@typing.final +class Event(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TIME_STAMP_FIELD_NUMBER: builtins.int + ID_FIELD_NUMBER: builtins.int + LOG_FIELD_NUMBER: builtins.int + CALL_FIELD_NUMBER: builtins.int + DEPLOYMENT_CREATED_FIELD_NUMBER: builtins.int + DEPLOYMENT_UPDATED_FIELD_NUMBER: builtins.int + INGRESS_FIELD_NUMBER: builtins.int + CRON_SCHEDULED_FIELD_NUMBER: builtins.int + ASYNC_EXECUTE_FIELD_NUMBER: builtins.int + PUBSUB_PUBLISH_FIELD_NUMBER: builtins.int + PUBSUB_CONSUME_FIELD_NUMBER: builtins.int + id: builtins.int + """Unique ID for event.""" + @property + def time_stamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ... + @property + def log(self) -> global___LogEvent: ... + @property + def call(self) -> global___CallEvent: ... + @property + def deployment_created(self) -> global___DeploymentCreatedEvent: ... + @property + def deployment_updated(self) -> global___DeploymentUpdatedEvent: ... + @property + def ingress(self) -> global___IngressEvent: ... + @property + def cron_scheduled(self) -> global___CronScheduledEvent: ... + @property + def async_execute(self) -> global___AsyncExecuteEvent: ... + @property + def pubsub_publish(self) -> global___PubSubPublishEvent: ... + @property + def pubsub_consume(self) -> global___PubSubConsumeEvent: ... + def __init__( + self, + *, + time_stamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., + id: builtins.int = ..., + log: global___LogEvent | None = ..., + call: global___CallEvent | None = ..., + deployment_created: global___DeploymentCreatedEvent | None = ..., + deployment_updated: global___DeploymentUpdatedEvent | None = ..., + ingress: global___IngressEvent | None = ..., + cron_scheduled: global___CronScheduledEvent | None = ..., + async_execute: global___AsyncExecuteEvent | None = ..., + pubsub_publish: global___PubSubPublishEvent | None = ..., + pubsub_consume: global___PubSubConsumeEvent | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["async_execute", b"async_execute", "call", b"call", "cron_scheduled", b"cron_scheduled", "deployment_created", b"deployment_created", "deployment_updated", b"deployment_updated", "entry", b"entry", "ingress", b"ingress", "log", b"log", "pubsub_consume", b"pubsub_consume", "pubsub_publish", b"pubsub_publish", "time_stamp", b"time_stamp"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["async_execute", b"async_execute", "call", b"call", "cron_scheduled", b"cron_scheduled", "deployment_created", b"deployment_created", "deployment_updated", b"deployment_updated", "entry", b"entry", "id", b"id", "ingress", b"ingress", "log", b"log", "pubsub_consume", b"pubsub_consume", "pubsub_publish", b"pubsub_publish", "time_stamp", b"time_stamp"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["entry", b"entry"]) -> typing.Literal["log", "call", "deployment_created", "deployment_updated", "ingress", "cron_scheduled", "async_execute", "pubsub_publish", "pubsub_consume"] | None: ... + +global___Event = Event + +@typing.final +class GetEventsResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + EVENTS_FIELD_NUMBER: builtins.int + CURSOR_FIELD_NUMBER: builtins.int + cursor: builtins.int + """For pagination, this cursor is where we should start our next query""" + @property + def events(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Event]: ... + def __init__( + self, + *, + events: collections.abc.Iterable[global___Event] | None = ..., + cursor: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_cursor", b"_cursor", "cursor", b"cursor"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_cursor", b"_cursor", "cursor", b"cursor", "events", b"events"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_cursor", b"_cursor"]) -> typing.Literal["cursor"] | None: ... + +global___GetEventsResponse = GetEventsResponse diff --git a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/ftl_pb2.py b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/ftl_pb2.py index 8f65d6495b..f55fe35c56 100644 --- a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/ftl_pb2.py +++ b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/ftl_pb2.py @@ -24,7 +24,7 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1axyz/block/ftl/v1/ftl.proto\x12\x10xyz.block.ftl.v1\"\r\n\x0bPingRequest\">\n\x0cPingResponse\x12 \n\tnot_ready\x18\x01 \x01(\tH\x00R\x08notReady\x88\x01\x01\x42\x0c\n\n_not_ready\"s\n\x08Metadata\x12\x37\n\x06values\x18\x01 \x03(\x0b\x32\x1f.xyz.block.ftl.v1.Metadata.PairR\x06values\x1a.\n\x04Pair\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05valueBDP\x01Z@github.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1;ftlv1b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1axyz/block/ftl/v1/ftl.proto\x12\x10xyz.block.ftl.v1\"\r\n\x0bPingRequest\"4\n\x0cPingResponse\x12\x16\n\tnot_ready\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_not_ready\"_\n\x08Metadata\x12/\n\x06values\x18\x01 \x03(\x0b\x32\x1f.xyz.block.ftl.v1.Metadata.Pair\x1a\"\n\x04Pair\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\tBDP\x01Z@github.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1;ftlv1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -35,9 +35,9 @@ _globals['_PINGREQUEST']._serialized_start=48 _globals['_PINGREQUEST']._serialized_end=61 _globals['_PINGRESPONSE']._serialized_start=63 - _globals['_PINGRESPONSE']._serialized_end=125 - _globals['_METADATA']._serialized_start=127 - _globals['_METADATA']._serialized_end=242 - _globals['_METADATA_PAIR']._serialized_start=196 - _globals['_METADATA_PAIR']._serialized_end=242 + _globals['_PINGRESPONSE']._serialized_end=115 + _globals['_METADATA']._serialized_start=117 + _globals['_METADATA']._serialized_end=212 + _globals['_METADATA_PAIR']._serialized_start=178 + _globals['_METADATA_PAIR']._serialized_end=212 # @@protoc_insertion_point(module_scope) diff --git a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/ftl_pb2.pyi b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/ftl_pb2.pyi index aef4d247f2..a145e75cf5 100644 --- a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/ftl_pb2.pyi +++ b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/ftl_pb2.pyi @@ -1,29 +1,75 @@ -from google.protobuf.internal import containers as _containers -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union - -DESCRIPTOR: _descriptor.FileDescriptor - -class PingRequest(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class PingResponse(_message.Message): - __slots__ = ("not_ready",) - NOT_READY_FIELD_NUMBER: _ClassVar[int] - not_ready: str - def __init__(self, not_ready: _Optional[str] = ...) -> None: ... - -class Metadata(_message.Message): - __slots__ = ("values",) - class Pair(_message.Message): - __slots__ = ("key", "value") - KEY_FIELD_NUMBER: _ClassVar[int] - VALUE_FIELD_NUMBER: _ClassVar[int] - key: str - value: str - def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ... - VALUES_FIELD_NUMBER: _ClassVar[int] - values: _containers.RepeatedCompositeFieldContainer[Metadata.Pair] - def __init__(self, values: _Optional[_Iterable[_Union[Metadata.Pair, _Mapping]]] = ...) -> None: ... +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import collections.abc +import google.protobuf.descriptor +import google.protobuf.internal.containers +import google.protobuf.message +import typing + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing.final +class PingRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___PingRequest = PingRequest + +@typing.final +class PingResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NOT_READY_FIELD_NUMBER: builtins.int + not_ready: builtins.str + """If present, the service is not ready to accept requests and this is the + reason. + """ + def __init__( + self, + *, + not_ready: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_not_ready", b"_not_ready", "not_ready", b"not_ready"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_not_ready", b"_not_ready", "not_ready", b"not_ready"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_not_ready", b"_not_ready"]) -> typing.Literal["not_ready"] | None: ... + +global___PingResponse = PingResponse + +@typing.final +class Metadata(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + @typing.final + class Pair(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... + + VALUES_FIELD_NUMBER: builtins.int + @property + def values(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Metadata.Pair]: ... + def __init__( + self, + *, + values: collections.abc.Iterable[global___Metadata.Pair] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["values", b"values"]) -> None: ... + +global___Metadata = Metadata diff --git a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/schema/schema_pb2.py b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/schema/schema_pb2.py index c0791de0f2..18922884b4 100644 --- a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/schema/schema_pb2.py +++ b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/schema/schema_pb2.py @@ -25,7 +25,7 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$xyz/block/ftl/v1/schema/schema.proto\x12\x17xyz.block.ftl.v1.schema\x1a\x1fgoogle/protobuf/timestamp.proto\"G\n\x03\x41ny\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x42\x06\n\x04_pos\"\x82\x01\n\x05\x41rray\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x37\n\x07\x65lement\x18\x02 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x07\x65lementB\x06\n\x04_pos\"H\n\x04\x42ool\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x42\x06\n\x04_pos\"I\n\x05\x42ytes\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x42\x06\n\x04_pos\"\xad\x01\n\x06\x43onfig\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x31\n\x04type\x18\x04 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x04typeB\x06\n\x04_pos\"\xd8\x02\n\x04\x44\x61ta\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x16\n\x06\x65xport\x18\x03 \x01(\x08R\x06\x65xport\x12\x12\n\x04name\x18\x04 \x01(\tR\x04name\x12O\n\x0ftype_parameters\x18\x05 \x03(\x0b\x32&.xyz.block.ftl.v1.schema.TypeParameterR\x0etypeParameters\x12\x36\n\x06\x66ields\x18\x06 \x03(\x0b\x32\x1e.xyz.block.ftl.v1.schema.FieldR\x06\x66ields\x12=\n\x08metadata\x18\x07 \x03(\x0b\x32!.xyz.block.ftl.v1.schema.MetadataR\x08metadataB\x06\n\x04_pos\"\xe7\x01\n\x08\x44\x61tabase\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12I\n\x07runtime\x18\x92\xf7\x01 \x01(\x0b\x32(.xyz.block.ftl.v1.schema.DatabaseRuntimeH\x01R\x07runtime\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x12\n\x04type\x18\x04 \x01(\tR\x04type\x12\x12\n\x04name\x18\x03 \x01(\tR\x04nameB\x06\n\x04_posB\n\n\x08_runtime\"#\n\x0f\x44\x61tabaseRuntime\x12\x10\n\x03\x64sn\x18\x01 \x01(\tR\x03\x64sn\"\xaf\x04\n\x04\x44\x65\x63l\x12\x39\n\x06\x63onfig\x18\x06 \x01(\x0b\x32\x1f.xyz.block.ftl.v1.schema.ConfigH\x00R\x06\x63onfig\x12\x33\n\x04\x64\x61ta\x18\x01 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.DataH\x00R\x04\x64\x61ta\x12?\n\x08\x64\x61tabase\x18\x03 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.DatabaseH\x00R\x08\x64\x61tabase\x12\x33\n\x04\x65num\x18\x04 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.EnumH\x00R\x04\x65num\x12\x39\n\x06secret\x18\x07 \x01(\x0b\x32\x1f.xyz.block.ftl.v1.schema.SecretH\x00R\x06secret\x12K\n\x0csubscription\x18\n \x01(\x0b\x32%.xyz.block.ftl.v1.schema.SubscriptionH\x00R\x0csubscription\x12\x36\n\x05topic\x18\t \x01(\x0b\x32\x1e.xyz.block.ftl.v1.schema.TopicH\x00R\x05topic\x12\x43\n\ntype_alias\x18\x05 \x01(\x0b\x32\".xyz.block.ftl.v1.schema.TypeAliasH\x00R\ttypeAlias\x12\x33\n\x04verb\x18\x02 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.VerbH\x00R\x04verbB\x07\n\x05value\"\x93\x02\n\x04\x45num\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x16\n\x06\x65xport\x18\x03 \x01(\x08R\x06\x65xport\x12\x12\n\x04name\x18\x04 \x01(\tR\x04name\x12\x36\n\x04type\x18\x05 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeH\x01R\x04type\x88\x01\x01\x12@\n\x08variants\x18\x06 \x03(\x0b\x32$.xyz.block.ftl.v1.schema.EnumVariantR\x08variantsB\x06\n\x04_posB\x07\n\x05_type\"\xb5\x01\n\x0b\x45numVariant\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x34\n\x05value\x18\x04 \x01(\x0b\x32\x1e.xyz.block.ftl.v1.schema.ValueR\x05valueB\x06\n\x04_pos\"\xeb\x01\n\x05\x46ield\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x03 \x03(\tR\x08\x63omments\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x31\n\x04type\x18\x04 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x04type\x12=\n\x08metadata\x18\x05 \x03(\x0b\x32!.xyz.block.ftl.v1.schema.MetadataR\x08metadataB\x06\n\x04_pos\"I\n\x05\x46loat\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x42\x06\n\x04_pos\"\xe7\x01\n\x14IngressPathComponent\x12_\n\x14ingress_path_literal\x18\x01 \x01(\x0b\x32+.xyz.block.ftl.v1.schema.IngressPathLiteralH\x00R\x12ingressPathLiteral\x12\x65\n\x16ingress_path_parameter\x18\x02 \x01(\x0b\x32-.xyz.block.ftl.v1.schema.IngressPathParameterH\x00R\x14ingressPathParameterB\x07\n\x05value\"j\n\x12IngressPathLiteral\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x12\n\x04text\x18\x02 \x01(\tR\x04textB\x06\n\x04_pos\"l\n\x14IngressPathParameter\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x12\n\x04name\x18\x02 \x01(\tR\x04nameB\x06\n\x04_pos\"G\n\x03Int\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x42\x06\n\x04_pos\"b\n\x08IntValue\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x14\n\x05value\x18\x02 \x01(\x03R\x05valueB\x06\n\x04_pos\"\xad\x01\n\x03Map\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12/\n\x03key\x18\x02 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x03key\x12\x33\n\x05value\x18\x03 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x05valueB\x06\n\x04_pos\"\x94\x06\n\x08Metadata\x12>\n\x05\x61lias\x18\x05 \x01(\x0b\x32&.xyz.block.ftl.v1.schema.MetadataAliasH\x00R\x05\x61lias\x12>\n\x05\x63\x61lls\x18\x01 \x01(\x0b\x32&.xyz.block.ftl.v1.schema.MetadataCallsH\x00R\x05\x63\x61lls\x12\x41\n\x06\x63onfig\x18\n \x01(\x0b\x32\'.xyz.block.ftl.v1.schema.MetadataConfigH\x00R\x06\x63onfig\x12\x45\n\x08\x63ron_job\x18\x03 \x01(\x0b\x32(.xyz.block.ftl.v1.schema.MetadataCronJobH\x00R\x07\x63ronJob\x12J\n\tdatabases\x18\x04 \x01(\x0b\x32*.xyz.block.ftl.v1.schema.MetadataDatabasesH\x00R\tdatabases\x12G\n\x08\x65ncoding\x18\t \x01(\x0b\x32).xyz.block.ftl.v1.schema.MetadataEncodingH\x00R\x08\x65ncoding\x12\x44\n\x07ingress\x18\x02 \x01(\x0b\x32(.xyz.block.ftl.v1.schema.MetadataIngressH\x00R\x07ingress\x12>\n\x05retry\x18\x06 \x01(\x0b\x32&.xyz.block.ftl.v1.schema.MetadataRetryH\x00R\x05retry\x12\x44\n\x07secrets\x18\x0b \x01(\x0b\x32(.xyz.block.ftl.v1.schema.MetadataSecretsH\x00R\x07secrets\x12M\n\nsubscriber\x18\x07 \x01(\x0b\x32+.xyz.block.ftl.v1.schema.MetadataSubscriberH\x00R\nsubscriber\x12\x45\n\x08type_map\x18\x08 \x01(\x0b\x32(.xyz.block.ftl.v1.schema.MetadataTypeMapH\x00R\x07typeMapB\x07\n\x05value\"\x9f\x01\n\rMetadataAlias\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x36\n\x04kind\x18\x02 \x01(\x0e\x32\".xyz.block.ftl.v1.schema.AliasKindR\x04kind\x12\x14\n\x05\x61lias\x18\x03 \x01(\tR\x05\x61liasB\x06\n\x04_pos\"\x85\x01\n\rMetadataCalls\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x32\n\x05\x63\x61lls\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x05\x63\x61llsB\x06\n\x04_pos\"\x88\x01\n\x0eMetadataConfig\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x34\n\x06\x63onfig\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x06\x63onfigB\x06\n\x04_pos\"g\n\x0fMetadataCronJob\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x12\n\x04\x63ron\x18\x02 \x01(\tR\x04\x63ronB\x06\n\x04_pos\"\x89\x01\n\x11MetadataDatabases\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x32\n\x05\x63\x61lls\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x05\x63\x61llsB\x06\n\x04_pos\"\x82\x01\n\x10MetadataEncoding\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x12\n\x04type\x18\x02 \x01(\tR\x04type\x12\x18\n\x07lenient\x18\x03 \x01(\x08R\x07lenientB\x06\n\x04_pos\"\xc2\x01\n\x0fMetadataIngress\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x12\n\x04type\x18\x02 \x01(\tR\x04type\x12\x16\n\x06method\x18\x03 \x01(\tR\x06method\x12\x41\n\x04path\x18\x04 \x03(\x0b\x32-.xyz.block.ftl.v1.schema.IngressPathComponentR\x04pathB\x06\n\x04_pos\"\xfb\x01\n\rMetadataRetry\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x19\n\x05\x63ount\x18\x02 \x01(\x03H\x01R\x05\x63ount\x88\x01\x01\x12\x1f\n\x0bmin_backoff\x18\x03 \x01(\tR\nminBackoff\x12\x1f\n\x0bmax_backoff\x18\x04 \x01(\tR\nmaxBackoff\x12\x37\n\x05\x63\x61tch\x18\x05 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefH\x02R\x05\x63\x61tch\x88\x01\x01\x42\x06\n\x04_posB\x08\n\x06_countB\x08\n\x06_catch\"\x8b\x01\n\x0fMetadataSecrets\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x36\n\x07secrets\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x07secretsB\x06\n\x04_pos\"j\n\x12MetadataSubscriber\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x12\n\x04name\x18\x02 \x01(\tR\x04nameB\x06\n\x04_pos\"\x8e\x01\n\x0fMetadataTypeMap\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x18\n\x07runtime\x18\x02 \x01(\tR\x07runtime\x12\x1f\n\x0bnative_name\x18\x03 \x01(\tR\nnativeNameB\x06\n\x04_pos\"\x9e\x02\n\x06Module\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x18\n\x07\x62uiltin\x18\x03 \x01(\x08R\x07\x62uiltin\x12\x12\n\x04name\x18\x04 \x01(\tR\x04name\x12\x33\n\x05\x64\x65\x63ls\x18\x05 \x03(\x0b\x32\x1d.xyz.block.ftl.v1.schema.DeclR\x05\x64\x65\x63ls\x12G\n\x07runtime\x18\x92\xf7\x01 \x01(\x0b\x32&.xyz.block.ftl.v1.schema.ModuleRuntimeH\x01R\x07runtime\x88\x01\x01\x42\x06\n\x04_posB\n\n\x08_runtime\"\xee\x01\n\rModuleRuntime\x12;\n\x0b\x63reate_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ncreateTime\x12\x1a\n\x08language\x18\x02 \x01(\tR\x08language\x12!\n\x0cmin_replicas\x18\x03 \x01(\x05R\x0bminReplicas\x12\x13\n\x02os\x18\x04 \x01(\tH\x00R\x02os\x88\x01\x01\x12\x17\n\x04\x61rch\x18\x05 \x01(\tH\x01R\x04\x61rch\x88\x01\x01\x12\x19\n\x05image\x18\x06 \x01(\tH\x02R\x05image\x88\x01\x01\x42\x05\n\x03_osB\x07\n\x05_archB\x08\n\x06_image\"\x8d\x01\n\x08Optional\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x36\n\x04type\x18\x02 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeH\x01R\x04type\x88\x01\x01\x42\x06\n\x04_posB\x07\n\x05_type\"R\n\x08Position\x12\x1a\n\x08\x66ilename\x18\x01 \x01(\tR\x08\x66ilename\x12\x12\n\x04line\x18\x02 \x01(\x03R\x04line\x12\x16\n\x06\x63olumn\x18\x03 \x01(\x03R\x06\x63olumn\"\xbb\x01\n\x03Ref\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x16\n\x06module\x18\x03 \x01(\tR\x06module\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x46\n\x0ftype_parameters\x18\x04 \x03(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x0etypeParametersB\x06\n\x04_pos\"\x85\x01\n\x06Schema\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x39\n\x07modules\x18\x02 \x03(\x0b\x32\x1f.xyz.block.ftl.v1.schema.ModuleR\x07modulesB\x06\n\x04_pos\"\xad\x01\n\x06Secret\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x31\n\x04type\x18\x04 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x04typeB\x06\n\x04_pos\"J\n\x06String\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x42\x06\n\x04_pos\"e\n\x0bStringValue\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x14\n\x05value\x18\x02 \x01(\tR\x05valueB\x06\n\x04_pos\"\xb4\x01\n\x0cSubscription\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x32\n\x05topic\x18\x04 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefR\x05topicB\x06\n\x04_pos\"H\n\x04Time\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x42\x06\n\x04_pos\"\xc6\x01\n\x05Topic\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x16\n\x06\x65xport\x18\x03 \x01(\x08R\x06\x65xport\x12\x12\n\x04name\x18\x04 \x01(\tR\x04name\x12\x33\n\x05\x65vent\x18\x05 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x05\x65ventB\x06\n\x04_pos\"\x9a\x05\n\x04Type\x12\x30\n\x03\x61ny\x18\t \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.AnyH\x00R\x03\x61ny\x12\x36\n\x05\x61rray\x18\x07 \x01(\x0b\x32\x1e.xyz.block.ftl.v1.schema.ArrayH\x00R\x05\x61rray\x12\x33\n\x04\x62ool\x18\x05 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.BoolH\x00R\x04\x62ool\x12\x36\n\x05\x62ytes\x18\x04 \x01(\x0b\x32\x1e.xyz.block.ftl.v1.schema.BytesH\x00R\x05\x62ytes\x12\x36\n\x05\x66loat\x18\x02 \x01(\x0b\x32\x1e.xyz.block.ftl.v1.schema.FloatH\x00R\x05\x66loat\x12\x30\n\x03int\x18\x01 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.IntH\x00R\x03int\x12\x30\n\x03map\x18\x08 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.MapH\x00R\x03map\x12?\n\x08optional\x18\x0c \x01(\x0b\x32!.xyz.block.ftl.v1.schema.OptionalH\x00R\x08optional\x12\x30\n\x03ref\x18\x0b \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefH\x00R\x03ref\x12\x39\n\x06string\x18\x03 \x01(\x0b\x32\x1f.xyz.block.ftl.v1.schema.StringH\x00R\x06string\x12\x33\n\x04time\x18\x06 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TimeH\x00R\x04time\x12\x33\n\x04unit\x18\n \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.UnitH\x00R\x04unitB\x07\n\x05value\"\x87\x02\n\tTypeAlias\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x16\n\x06\x65xport\x18\x03 \x01(\x08R\x06\x65xport\x12\x12\n\x04name\x18\x04 \x01(\tR\x04name\x12\x31\n\x04type\x18\x05 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x04type\x12=\n\x08metadata\x18\x06 \x03(\x0b\x32!.xyz.block.ftl.v1.schema.MetadataR\x08metadataB\x06\n\x04_pos\"e\n\rTypeParameter\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x12\n\x04name\x18\x02 \x01(\tR\x04nameB\x06\n\x04_pos\"\x82\x01\n\tTypeValue\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x33\n\x05value\x18\x02 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x05valueB\x06\n\x04_pos\"H\n\x04Unit\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x42\x06\n\x04_pos\"\xe2\x01\n\x05Value\x12@\n\tint_value\x18\x02 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.IntValueH\x00R\x08intValue\x12I\n\x0cstring_value\x18\x01 \x01(\x0b\x32$.xyz.block.ftl.v1.schema.StringValueH\x00R\x0bstringValue\x12\x43\n\ntype_value\x18\x03 \x01(\x0b\x32\".xyz.block.ftl.v1.schema.TypeValueH\x00R\ttypeValueB\x07\n\x05value\"\x96\x03\n\x04Verb\x12\x38\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00R\x03pos\x88\x01\x01\x12\x1a\n\x08\x63omments\x18\x02 \x03(\tR\x08\x63omments\x12\x16\n\x06\x65xport\x18\x03 \x01(\x08R\x06\x65xport\x12\x12\n\x04name\x18\x04 \x01(\tR\x04name\x12\x37\n\x07request\x18\x05 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x07request\x12\x39\n\x08response\x18\x06 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeR\x08response\x12=\n\x08metadata\x18\x07 \x03(\x0b\x32!.xyz.block.ftl.v1.schema.MetadataR\x08metadata\x12\x45\n\x07runtime\x18\x92\xf7\x01 \x01(\x0b\x32$.xyz.block.ftl.v1.schema.VerbRuntimeH\x01R\x07runtime\x88\x01\x01\x42\x06\n\x04_posB\n\n\x08_runtime\"\x85\x01\n\x0bVerbRuntime\x12;\n\x0b\x63reate_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ncreateTime\x12\x39\n\nstart_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartTime* \n\tAliasKind\x12\x13\n\x0f\x41LIAS_KIND_JSON\x10\x00\x42NP\x01ZJgithub.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1/schema;schemapbb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$xyz/block/ftl/v1/schema/schema.proto\x12\x17xyz.block.ftl.v1.schema\x1a\x1fgoogle/protobuf/timestamp.proto\"B\n\x03\x41ny\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x42\x06\n\x04_pos\"t\n\x05\x41rray\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x12.\n\x07\x65lement\x18\x02 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeB\x06\n\x04_pos\"C\n\x04\x42ool\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x42\x06\n\x04_pos\"D\n\x05\x42ytes\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x42\x06\n\x04_pos\"\x92\x01\n\x06\x43onfig\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x12\x10\n\x08\x63omments\x18\x02 \x03(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12+\n\x04type\x18\x04 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeB\x06\n\x04_pos\"\x99\x02\n\x04\x44\x61ta\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x12\x10\n\x08\x63omments\x18\x02 \x03(\t\x12\x0e\n\x06\x65xport\x18\x03 \x01(\x08\x12\x0c\n\x04name\x18\x04 \x01(\t\x12?\n\x0ftype_parameters\x18\x05 \x03(\x0b\x32&.xyz.block.ftl.v1.schema.TypeParameter\x12.\n\x06\x66ields\x18\x06 \x03(\x0b\x32\x1e.xyz.block.ftl.v1.schema.Field\x12\x33\n\x08metadata\x18\x07 \x03(\x0b\x32!.xyz.block.ftl.v1.schema.MetadataB\x06\n\x04_pos\"\xc3\x01\n\x08\x44\x61tabase\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x12@\n\x07runtime\x18\x92\xf7\x01 \x01(\x0b\x32(.xyz.block.ftl.v1.schema.DatabaseRuntimeH\x01\x88\x01\x01\x12\x10\n\x08\x63omments\x18\x02 \x03(\t\x12\x0c\n\x04type\x18\x04 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\tB\x06\n\x04_posB\n\n\x08_runtime\"\x1e\n\x0f\x44\x61tabaseRuntime\x12\x0b\n\x03\x64sn\x18\x01 \x01(\t\"\xe3\x03\n\x04\x44\x65\x63l\x12\x31\n\x06\x63onfig\x18\x06 \x01(\x0b\x32\x1f.xyz.block.ftl.v1.schema.ConfigH\x00\x12-\n\x04\x64\x61ta\x18\x01 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.DataH\x00\x12\x35\n\x08\x64\x61tabase\x18\x03 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.DatabaseH\x00\x12-\n\x04\x65num\x18\x04 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.EnumH\x00\x12\x31\n\x06secret\x18\x07 \x01(\x0b\x32\x1f.xyz.block.ftl.v1.schema.SecretH\x00\x12=\n\x0csubscription\x18\n \x01(\x0b\x32%.xyz.block.ftl.v1.schema.SubscriptionH\x00\x12/\n\x05topic\x18\t \x01(\x0b\x32\x1e.xyz.block.ftl.v1.schema.TopicH\x00\x12\x38\n\ntype_alias\x18\x05 \x01(\x0b\x32\".xyz.block.ftl.v1.schema.TypeAliasH\x00\x12-\n\x04verb\x18\x02 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.VerbH\x00\x42\x07\n\x05value\"\xe6\x01\n\x04\x45num\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x12\x10\n\x08\x63omments\x18\x02 \x03(\t\x12\x0e\n\x06\x65xport\x18\x03 \x01(\x08\x12\x0c\n\x04name\x18\x04 \x01(\t\x12\x30\n\x04type\x18\x05 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeH\x01\x88\x01\x01\x12\x36\n\x08variants\x18\x06 \x03(\x0b\x32$.xyz.block.ftl.v1.schema.EnumVariantB\x06\n\x04_posB\x07\n\x05_type\"\x99\x01\n\x0b\x45numVariant\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x12\x10\n\x08\x63omments\x18\x02 \x03(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12-\n\x05value\x18\x04 \x01(\x0b\x32\x1e.xyz.block.ftl.v1.schema.ValueB\x06\n\x04_pos\"\xc6\x01\n\x05\x46ield\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x12\x10\n\x08\x63omments\x18\x03 \x03(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12+\n\x04type\x18\x04 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.Type\x12\x33\n\x08metadata\x18\x05 \x03(\x0b\x32!.xyz.block.ftl.v1.schema.MetadataB\x06\n\x04_pos\"D\n\x05\x46loat\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x42\x06\n\x04_pos\"\xbd\x01\n\x14IngressPathComponent\x12K\n\x14ingress_path_literal\x18\x01 \x01(\x0b\x32+.xyz.block.ftl.v1.schema.IngressPathLiteralH\x00\x12O\n\x16ingress_path_parameter\x18\x02 \x01(\x0b\x32-.xyz.block.ftl.v1.schema.IngressPathParameterH\x00\x42\x07\n\x05value\"_\n\x12IngressPathLiteral\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x12\x0c\n\x04text\x18\x02 \x01(\tB\x06\n\x04_pos\"a\n\x14IngressPathParameter\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x12\x0c\n\x04name\x18\x02 \x01(\tB\x06\n\x04_pos\"B\n\x03Int\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x42\x06\n\x04_pos\"V\n\x08IntValue\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x12\r\n\x05value\x18\x02 \x01(\x03\x42\x06\n\x04_pos\"\x9c\x01\n\x03Map\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x12*\n\x03key\x18\x02 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.Type\x12,\n\x05value\x18\x03 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeB\x06\n\x04_pos\"\xb2\x05\n\x08Metadata\x12\x37\n\x05\x61lias\x18\x05 \x01(\x0b\x32&.xyz.block.ftl.v1.schema.MetadataAliasH\x00\x12\x37\n\x05\x63\x61lls\x18\x01 \x01(\x0b\x32&.xyz.block.ftl.v1.schema.MetadataCallsH\x00\x12\x39\n\x06\x63onfig\x18\n \x01(\x0b\x32\'.xyz.block.ftl.v1.schema.MetadataConfigH\x00\x12<\n\x08\x63ron_job\x18\x03 \x01(\x0b\x32(.xyz.block.ftl.v1.schema.MetadataCronJobH\x00\x12?\n\tdatabases\x18\x04 \x01(\x0b\x32*.xyz.block.ftl.v1.schema.MetadataDatabasesH\x00\x12=\n\x08\x65ncoding\x18\t \x01(\x0b\x32).xyz.block.ftl.v1.schema.MetadataEncodingH\x00\x12;\n\x07ingress\x18\x02 \x01(\x0b\x32(.xyz.block.ftl.v1.schema.MetadataIngressH\x00\x12\x37\n\x05retry\x18\x06 \x01(\x0b\x32&.xyz.block.ftl.v1.schema.MetadataRetryH\x00\x12;\n\x07secrets\x18\x0b \x01(\x0b\x32(.xyz.block.ftl.v1.schema.MetadataSecretsH\x00\x12\x41\n\nsubscriber\x18\x07 \x01(\x0b\x32+.xyz.block.ftl.v1.schema.MetadataSubscriberH\x00\x12<\n\x08type_map\x18\x08 \x01(\x0b\x32(.xyz.block.ftl.v1.schema.MetadataTypeMapH\x00\x42\x07\n\x05value\"\x8d\x01\n\rMetadataAlias\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x12\x30\n\x04kind\x18\x02 \x01(\x0e\x32\".xyz.block.ftl.v1.schema.AliasKind\x12\r\n\x05\x61lias\x18\x03 \x01(\tB\x06\n\x04_pos\"y\n\rMetadataCalls\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x12+\n\x05\x63\x61lls\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefB\x06\n\x04_pos\"{\n\x0eMetadataConfig\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x12,\n\x06\x63onfig\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefB\x06\n\x04_pos\"\\\n\x0fMetadataCronJob\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x12\x0c\n\x04\x63ron\x18\x02 \x01(\tB\x06\n\x04_pos\"}\n\x11MetadataDatabases\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x12+\n\x05\x63\x61lls\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefB\x06\n\x04_pos\"n\n\x10MetadataEncoding\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\x0f\n\x07lenient\x18\x03 \x01(\x08\x42\x06\n\x04_pos\"\xa9\x01\n\x0fMetadataIngress\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\x0e\n\x06method\x18\x03 \x01(\t\x12;\n\x04path\x18\x04 \x03(\x0b\x32-.xyz.block.ftl.v1.schema.IngressPathComponentB\x06\n\x04_pos\"\xd0\x01\n\rMetadataRetry\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x02 \x01(\x03H\x01\x88\x01\x01\x12\x13\n\x0bmin_backoff\x18\x03 \x01(\t\x12\x13\n\x0bmax_backoff\x18\x04 \x01(\t\x12\x30\n\x05\x63\x61tch\x18\x05 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefH\x02\x88\x01\x01\x42\x06\n\x04_posB\x08\n\x06_countB\x08\n\x06_catch\"}\n\x0fMetadataSecrets\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x12-\n\x07secrets\x18\x02 \x03(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefB\x06\n\x04_pos\"_\n\x12MetadataSubscriber\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x12\x0c\n\x04name\x18\x02 \x01(\tB\x06\n\x04_pos\"t\n\x0fMetadataTypeMap\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x12\x0f\n\x07runtime\x18\x02 \x01(\t\x12\x13\n\x0bnative_name\x18\x03 \x01(\tB\x06\n\x04_pos\"\xf0\x01\n\x06Module\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x12\x10\n\x08\x63omments\x18\x02 \x03(\t\x12\x0f\n\x07\x62uiltin\x18\x03 \x01(\x08\x12\x0c\n\x04name\x18\x04 \x01(\t\x12,\n\x05\x64\x65\x63ls\x18\x05 \x03(\x0b\x32\x1d.xyz.block.ftl.v1.schema.Decl\x12>\n\x07runtime\x18\x92\xf7\x01 \x01(\x0b\x32&.xyz.block.ftl.v1.schema.ModuleRuntimeH\x01\x88\x01\x01\x42\x06\n\x04_posB\n\n\x08_runtime\"\xba\x01\n\rModuleRuntime\x12/\n\x0b\x63reate_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x10\n\x08language\x18\x02 \x01(\t\x12\x14\n\x0cmin_replicas\x18\x03 \x01(\x05\x12\x0f\n\x02os\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04\x61rch\x18\x05 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05image\x18\x06 \x01(\tH\x02\x88\x01\x01\x42\x05\n\x03_osB\x07\n\x05_archB\x08\n\x06_image\"\x82\x01\n\x08Optional\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x12\x30\n\x04type\x18\x02 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeH\x01\x88\x01\x01\x42\x06\n\x04_posB\x07\n\x05_type\":\n\x08Position\x12\x10\n\x08\x66ilename\x18\x01 \x01(\t\x12\x0c\n\x04line\x18\x02 \x01(\x03\x12\x0e\n\x06\x63olumn\x18\x03 \x01(\x03\"\x98\x01\n\x03Ref\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x12\x0e\n\x06module\x18\x03 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x36\n\x0ftype_parameters\x18\x04 \x03(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeB\x06\n\x04_pos\"w\n\x06Schema\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x12\x30\n\x07modules\x18\x02 \x03(\x0b\x32\x1f.xyz.block.ftl.v1.schema.ModuleB\x06\n\x04_pos\"\x92\x01\n\x06Secret\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x12\x10\n\x08\x63omments\x18\x02 \x03(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12+\n\x04type\x18\x04 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeB\x06\n\x04_pos\"E\n\x06String\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x42\x06\n\x04_pos\"Y\n\x0bStringValue\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x12\r\n\x05value\x18\x02 \x01(\tB\x06\n\x04_pos\"\x98\x01\n\x0cSubscription\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x12\x10\n\x08\x63omments\x18\x02 \x03(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12+\n\x05topic\x18\x04 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefB\x06\n\x04_pos\"C\n\x04Time\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x42\x06\n\x04_pos\"\xa2\x01\n\x05Topic\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x12\x10\n\x08\x63omments\x18\x02 \x03(\t\x12\x0e\n\x06\x65xport\x18\x03 \x01(\x08\x12\x0c\n\x04name\x18\x04 \x01(\t\x12,\n\x05\x65vent\x18\x05 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeB\x06\n\x04_pos\"\xcd\x04\n\x04Type\x12+\n\x03\x61ny\x18\t \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.AnyH\x00\x12/\n\x05\x61rray\x18\x07 \x01(\x0b\x32\x1e.xyz.block.ftl.v1.schema.ArrayH\x00\x12-\n\x04\x62ool\x18\x05 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.BoolH\x00\x12/\n\x05\x62ytes\x18\x04 \x01(\x0b\x32\x1e.xyz.block.ftl.v1.schema.BytesH\x00\x12/\n\x05\x66loat\x18\x02 \x01(\x0b\x32\x1e.xyz.block.ftl.v1.schema.FloatH\x00\x12+\n\x03int\x18\x01 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.IntH\x00\x12+\n\x03map\x18\x08 \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.MapH\x00\x12\x35\n\x08optional\x18\x0c \x01(\x0b\x32!.xyz.block.ftl.v1.schema.OptionalH\x00\x12+\n\x03ref\x18\x0b \x01(\x0b\x32\x1c.xyz.block.ftl.v1.schema.RefH\x00\x12\x31\n\x06string\x18\x03 \x01(\x0b\x32\x1f.xyz.block.ftl.v1.schema.StringH\x00\x12-\n\x04time\x18\x06 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TimeH\x00\x12-\n\x04unit\x18\n \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.UnitH\x00\x42\x07\n\x05value\"\xda\x01\n\tTypeAlias\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x12\x10\n\x08\x63omments\x18\x02 \x03(\t\x12\x0e\n\x06\x65xport\x18\x03 \x01(\x08\x12\x0c\n\x04name\x18\x04 \x01(\t\x12+\n\x04type\x18\x05 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.Type\x12\x33\n\x08metadata\x18\x06 \x03(\x0b\x32!.xyz.block.ftl.v1.schema.MetadataB\x06\n\x04_pos\"Z\n\rTypeParameter\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x12\x0c\n\x04name\x18\x02 \x01(\tB\x06\n\x04_pos\"v\n\tTypeValue\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.TypeB\x06\n\x04_pos\"C\n\x04Unit\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x42\x06\n\x04_pos\"\xc0\x01\n\x05Value\x12\x36\n\tint_value\x18\x02 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.IntValueH\x00\x12<\n\x0cstring_value\x18\x01 \x01(\x0b\x32$.xyz.block.ftl.v1.schema.StringValueH\x00\x12\x38\n\ntype_value\x18\x03 \x01(\x0b\x32\".xyz.block.ftl.v1.schema.TypeValueH\x00\x42\x07\n\x05value\"\xd3\x02\n\x04Verb\x12\x33\n\x03pos\x18\x01 \x01(\x0b\x32!.xyz.block.ftl.v1.schema.PositionH\x00\x88\x01\x01\x12\x10\n\x08\x63omments\x18\x02 \x03(\t\x12\x0e\n\x06\x65xport\x18\x03 \x01(\x08\x12\x0c\n\x04name\x18\x04 \x01(\t\x12.\n\x07request\x18\x05 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.Type\x12/\n\x08response\x18\x06 \x01(\x0b\x32\x1d.xyz.block.ftl.v1.schema.Type\x12\x33\n\x08metadata\x18\x07 \x03(\x0b\x32!.xyz.block.ftl.v1.schema.Metadata\x12<\n\x07runtime\x18\x92\xf7\x01 \x01(\x0b\x32$.xyz.block.ftl.v1.schema.VerbRuntimeH\x01\x88\x01\x01\x42\x06\n\x04_posB\n\n\x08_runtime\"n\n\x0bVerbRuntime\x12/\n\x0b\x63reate_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nstart_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp* \n\tAliasKind\x12\x13\n\x0f\x41LIAS_KIND_JSON\x10\x00\x42NP\x01ZJgithub.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1/schema;schemapbb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -33,108 +33,108 @@ if not _descriptor._USE_C_DESCRIPTORS: _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'P\001ZJgithub.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1/schema;schemapb' - _globals['_ALIASKIND']._serialized_start=9753 - _globals['_ALIASKIND']._serialized_end=9785 + _globals['_ALIASKIND']._serialized_start=8422 + _globals['_ALIASKIND']._serialized_end=8454 _globals['_ANY']._serialized_start=98 - _globals['_ANY']._serialized_end=169 - _globals['_ARRAY']._serialized_start=172 - _globals['_ARRAY']._serialized_end=302 - _globals['_BOOL']._serialized_start=304 - _globals['_BOOL']._serialized_end=376 - _globals['_BYTES']._serialized_start=378 - _globals['_BYTES']._serialized_end=451 - _globals['_CONFIG']._serialized_start=454 - _globals['_CONFIG']._serialized_end=627 - _globals['_DATA']._serialized_start=630 - _globals['_DATA']._serialized_end=974 - _globals['_DATABASE']._serialized_start=977 - _globals['_DATABASE']._serialized_end=1208 - _globals['_DATABASERUNTIME']._serialized_start=1210 - _globals['_DATABASERUNTIME']._serialized_end=1245 - _globals['_DECL']._serialized_start=1248 - _globals['_DECL']._serialized_end=1807 - _globals['_ENUM']._serialized_start=1810 - _globals['_ENUM']._serialized_end=2085 - _globals['_ENUMVARIANT']._serialized_start=2088 - _globals['_ENUMVARIANT']._serialized_end=2269 - _globals['_FIELD']._serialized_start=2272 - _globals['_FIELD']._serialized_end=2507 - _globals['_FLOAT']._serialized_start=2509 - _globals['_FLOAT']._serialized_end=2582 - _globals['_INGRESSPATHCOMPONENT']._serialized_start=2585 - _globals['_INGRESSPATHCOMPONENT']._serialized_end=2816 - _globals['_INGRESSPATHLITERAL']._serialized_start=2818 - _globals['_INGRESSPATHLITERAL']._serialized_end=2924 - _globals['_INGRESSPATHPARAMETER']._serialized_start=2926 - _globals['_INGRESSPATHPARAMETER']._serialized_end=3034 - _globals['_INT']._serialized_start=3036 - _globals['_INT']._serialized_end=3107 - _globals['_INTVALUE']._serialized_start=3109 - _globals['_INTVALUE']._serialized_end=3207 - _globals['_MAP']._serialized_start=3210 - _globals['_MAP']._serialized_end=3383 - _globals['_METADATA']._serialized_start=3386 - _globals['_METADATA']._serialized_end=4174 - _globals['_METADATAALIAS']._serialized_start=4177 - _globals['_METADATAALIAS']._serialized_end=4336 - _globals['_METADATACALLS']._serialized_start=4339 - _globals['_METADATACALLS']._serialized_end=4472 - _globals['_METADATACONFIG']._serialized_start=4475 - _globals['_METADATACONFIG']._serialized_end=4611 - _globals['_METADATACRONJOB']._serialized_start=4613 - _globals['_METADATACRONJOB']._serialized_end=4716 - _globals['_METADATADATABASES']._serialized_start=4719 - _globals['_METADATADATABASES']._serialized_end=4856 - _globals['_METADATAENCODING']._serialized_start=4859 - _globals['_METADATAENCODING']._serialized_end=4989 - _globals['_METADATAINGRESS']._serialized_start=4992 - _globals['_METADATAINGRESS']._serialized_end=5186 - _globals['_METADATARETRY']._serialized_start=5189 - _globals['_METADATARETRY']._serialized_end=5440 - _globals['_METADATASECRETS']._serialized_start=5443 - _globals['_METADATASECRETS']._serialized_end=5582 - _globals['_METADATASUBSCRIBER']._serialized_start=5584 - _globals['_METADATASUBSCRIBER']._serialized_end=5690 - _globals['_METADATATYPEMAP']._serialized_start=5693 - _globals['_METADATATYPEMAP']._serialized_end=5835 - _globals['_MODULE']._serialized_start=5838 - _globals['_MODULE']._serialized_end=6124 - _globals['_MODULERUNTIME']._serialized_start=6127 - _globals['_MODULERUNTIME']._serialized_end=6365 - _globals['_OPTIONAL']._serialized_start=6368 - _globals['_OPTIONAL']._serialized_end=6509 - _globals['_POSITION']._serialized_start=6511 - _globals['_POSITION']._serialized_end=6593 - _globals['_REF']._serialized_start=6596 - _globals['_REF']._serialized_end=6783 - _globals['_SCHEMA']._serialized_start=6786 - _globals['_SCHEMA']._serialized_end=6919 - _globals['_SECRET']._serialized_start=6922 - _globals['_SECRET']._serialized_end=7095 - _globals['_STRING']._serialized_start=7097 - _globals['_STRING']._serialized_end=7171 - _globals['_STRINGVALUE']._serialized_start=7173 - _globals['_STRINGVALUE']._serialized_end=7274 - _globals['_SUBSCRIPTION']._serialized_start=7277 - _globals['_SUBSCRIPTION']._serialized_end=7457 - _globals['_TIME']._serialized_start=7459 - _globals['_TIME']._serialized_end=7531 - _globals['_TOPIC']._serialized_start=7534 - _globals['_TOPIC']._serialized_end=7732 - _globals['_TYPE']._serialized_start=7735 - _globals['_TYPE']._serialized_end=8401 - _globals['_TYPEALIAS']._serialized_start=8404 - _globals['_TYPEALIAS']._serialized_end=8667 - _globals['_TYPEPARAMETER']._serialized_start=8669 - _globals['_TYPEPARAMETER']._serialized_end=8770 - _globals['_TYPEVALUE']._serialized_start=8773 - _globals['_TYPEVALUE']._serialized_end=8903 - _globals['_UNIT']._serialized_start=8905 - _globals['_UNIT']._serialized_end=8977 - _globals['_VALUE']._serialized_start=8980 - _globals['_VALUE']._serialized_end=9206 - _globals['_VERB']._serialized_start=9209 - _globals['_VERB']._serialized_end=9615 - _globals['_VERBRUNTIME']._serialized_start=9618 - _globals['_VERBRUNTIME']._serialized_end=9751 + _globals['_ANY']._serialized_end=164 + _globals['_ARRAY']._serialized_start=166 + _globals['_ARRAY']._serialized_end=282 + _globals['_BOOL']._serialized_start=284 + _globals['_BOOL']._serialized_end=351 + _globals['_BYTES']._serialized_start=353 + _globals['_BYTES']._serialized_end=421 + _globals['_CONFIG']._serialized_start=424 + _globals['_CONFIG']._serialized_end=570 + _globals['_DATA']._serialized_start=573 + _globals['_DATA']._serialized_end=854 + _globals['_DATABASE']._serialized_start=857 + _globals['_DATABASE']._serialized_end=1052 + _globals['_DATABASERUNTIME']._serialized_start=1054 + _globals['_DATABASERUNTIME']._serialized_end=1084 + _globals['_DECL']._serialized_start=1087 + _globals['_DECL']._serialized_end=1570 + _globals['_ENUM']._serialized_start=1573 + _globals['_ENUM']._serialized_end=1803 + _globals['_ENUMVARIANT']._serialized_start=1806 + _globals['_ENUMVARIANT']._serialized_end=1959 + _globals['_FIELD']._serialized_start=1962 + _globals['_FIELD']._serialized_end=2160 + _globals['_FLOAT']._serialized_start=2162 + _globals['_FLOAT']._serialized_end=2230 + _globals['_INGRESSPATHCOMPONENT']._serialized_start=2233 + _globals['_INGRESSPATHCOMPONENT']._serialized_end=2422 + _globals['_INGRESSPATHLITERAL']._serialized_start=2424 + _globals['_INGRESSPATHLITERAL']._serialized_end=2519 + _globals['_INGRESSPATHPARAMETER']._serialized_start=2521 + _globals['_INGRESSPATHPARAMETER']._serialized_end=2618 + _globals['_INT']._serialized_start=2620 + _globals['_INT']._serialized_end=2686 + _globals['_INTVALUE']._serialized_start=2688 + _globals['_INTVALUE']._serialized_end=2774 + _globals['_MAP']._serialized_start=2777 + _globals['_MAP']._serialized_end=2933 + _globals['_METADATA']._serialized_start=2936 + _globals['_METADATA']._serialized_end=3626 + _globals['_METADATAALIAS']._serialized_start=3629 + _globals['_METADATAALIAS']._serialized_end=3770 + _globals['_METADATACALLS']._serialized_start=3772 + _globals['_METADATACALLS']._serialized_end=3893 + _globals['_METADATACONFIG']._serialized_start=3895 + _globals['_METADATACONFIG']._serialized_end=4018 + _globals['_METADATACRONJOB']._serialized_start=4020 + _globals['_METADATACRONJOB']._serialized_end=4112 + _globals['_METADATADATABASES']._serialized_start=4114 + _globals['_METADATADATABASES']._serialized_end=4239 + _globals['_METADATAENCODING']._serialized_start=4241 + _globals['_METADATAENCODING']._serialized_end=4351 + _globals['_METADATAINGRESS']._serialized_start=4354 + _globals['_METADATAINGRESS']._serialized_end=4523 + _globals['_METADATARETRY']._serialized_start=4526 + _globals['_METADATARETRY']._serialized_end=4734 + _globals['_METADATASECRETS']._serialized_start=4736 + _globals['_METADATASECRETS']._serialized_end=4861 + _globals['_METADATASUBSCRIBER']._serialized_start=4863 + _globals['_METADATASUBSCRIBER']._serialized_end=4958 + _globals['_METADATATYPEMAP']._serialized_start=4960 + _globals['_METADATATYPEMAP']._serialized_end=5076 + _globals['_MODULE']._serialized_start=5079 + _globals['_MODULE']._serialized_end=5319 + _globals['_MODULERUNTIME']._serialized_start=5322 + _globals['_MODULERUNTIME']._serialized_end=5508 + _globals['_OPTIONAL']._serialized_start=5511 + _globals['_OPTIONAL']._serialized_end=5641 + _globals['_POSITION']._serialized_start=5643 + _globals['_POSITION']._serialized_end=5701 + _globals['_REF']._serialized_start=5704 + _globals['_REF']._serialized_end=5856 + _globals['_SCHEMA']._serialized_start=5858 + _globals['_SCHEMA']._serialized_end=5977 + _globals['_SECRET']._serialized_start=5980 + _globals['_SECRET']._serialized_end=6126 + _globals['_STRING']._serialized_start=6128 + _globals['_STRING']._serialized_end=6197 + _globals['_STRINGVALUE']._serialized_start=6199 + _globals['_STRINGVALUE']._serialized_end=6288 + _globals['_SUBSCRIPTION']._serialized_start=6291 + _globals['_SUBSCRIPTION']._serialized_end=6443 + _globals['_TIME']._serialized_start=6445 + _globals['_TIME']._serialized_end=6512 + _globals['_TOPIC']._serialized_start=6515 + _globals['_TOPIC']._serialized_end=6677 + _globals['_TYPE']._serialized_start=6680 + _globals['_TYPE']._serialized_end=7269 + _globals['_TYPEALIAS']._serialized_start=7272 + _globals['_TYPEALIAS']._serialized_end=7490 + _globals['_TYPEPARAMETER']._serialized_start=7492 + _globals['_TYPEPARAMETER']._serialized_end=7582 + _globals['_TYPEVALUE']._serialized_start=7584 + _globals['_TYPEVALUE']._serialized_end=7702 + _globals['_UNIT']._serialized_start=7704 + _globals['_UNIT']._serialized_end=7771 + _globals['_VALUE']._serialized_start=7774 + _globals['_VALUE']._serialized_end=7966 + _globals['_VERB']._serialized_start=7969 + _globals['_VERB']._serialized_end=8308 + _globals['_VERBRUNTIME']._serialized_start=8310 + _globals['_VERBRUNTIME']._serialized_end=8420 # @@protoc_insertion_point(module_scope) diff --git a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/schema/schema_pb2.pyi b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/schema/schema_pb2.pyi index 1955cb447d..197705d4d5 100644 --- a/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/schema/schema_pb2.pyi +++ b/python-runtime/ftl/src/ftl/protos/xyz/block/ftl/v1/schema/schema_pb2.pyi @@ -1,569 +1,1424 @@ -from google.protobuf import timestamp_pb2 as _timestamp_pb2 -from google.protobuf.internal import containers as _containers -from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union - -DESCRIPTOR: _descriptor.FileDescriptor - -class AliasKind(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () - ALIAS_KIND_JSON: _ClassVar[AliasKind] -ALIAS_KIND_JSON: AliasKind - -class Any(_message.Message): - __slots__ = ("pos",) - POS_FIELD_NUMBER: _ClassVar[int] - pos: Position - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ...) -> None: ... - -class Array(_message.Message): - __slots__ = ("pos", "element") - POS_FIELD_NUMBER: _ClassVar[int] - ELEMENT_FIELD_NUMBER: _ClassVar[int] - pos: Position - element: Type - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., element: _Optional[_Union[Type, _Mapping]] = ...) -> None: ... - -class Bool(_message.Message): - __slots__ = ("pos",) - POS_FIELD_NUMBER: _ClassVar[int] - pos: Position - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ...) -> None: ... - -class Bytes(_message.Message): - __slots__ = ("pos",) - POS_FIELD_NUMBER: _ClassVar[int] - pos: Position - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ...) -> None: ... - -class Config(_message.Message): - __slots__ = ("pos", "comments", "name", "type") - POS_FIELD_NUMBER: _ClassVar[int] - COMMENTS_FIELD_NUMBER: _ClassVar[int] - NAME_FIELD_NUMBER: _ClassVar[int] - TYPE_FIELD_NUMBER: _ClassVar[int] - pos: Position - comments: _containers.RepeatedScalarFieldContainer[str] - name: str - type: Type - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., comments: _Optional[_Iterable[str]] = ..., name: _Optional[str] = ..., type: _Optional[_Union[Type, _Mapping]] = ...) -> None: ... - -class Data(_message.Message): - __slots__ = ("pos", "comments", "export", "name", "type_parameters", "fields", "metadata") - POS_FIELD_NUMBER: _ClassVar[int] - COMMENTS_FIELD_NUMBER: _ClassVar[int] - EXPORT_FIELD_NUMBER: _ClassVar[int] - NAME_FIELD_NUMBER: _ClassVar[int] - TYPE_PARAMETERS_FIELD_NUMBER: _ClassVar[int] - FIELDS_FIELD_NUMBER: _ClassVar[int] - METADATA_FIELD_NUMBER: _ClassVar[int] - pos: Position - comments: _containers.RepeatedScalarFieldContainer[str] - export: bool - name: str - type_parameters: _containers.RepeatedCompositeFieldContainer[TypeParameter] - fields: _containers.RepeatedCompositeFieldContainer[Field] - metadata: _containers.RepeatedCompositeFieldContainer[Metadata] - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., comments: _Optional[_Iterable[str]] = ..., export: bool = ..., name: _Optional[str] = ..., type_parameters: _Optional[_Iterable[_Union[TypeParameter, _Mapping]]] = ..., fields: _Optional[_Iterable[_Union[Field, _Mapping]]] = ..., metadata: _Optional[_Iterable[_Union[Metadata, _Mapping]]] = ...) -> None: ... - -class Database(_message.Message): - __slots__ = ("pos", "runtime", "comments", "type", "name") - POS_FIELD_NUMBER: _ClassVar[int] - RUNTIME_FIELD_NUMBER: _ClassVar[int] - COMMENTS_FIELD_NUMBER: _ClassVar[int] - TYPE_FIELD_NUMBER: _ClassVar[int] - NAME_FIELD_NUMBER: _ClassVar[int] - pos: Position - runtime: DatabaseRuntime - comments: _containers.RepeatedScalarFieldContainer[str] - type: str - name: str - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., runtime: _Optional[_Union[DatabaseRuntime, _Mapping]] = ..., comments: _Optional[_Iterable[str]] = ..., type: _Optional[str] = ..., name: _Optional[str] = ...) -> None: ... - -class DatabaseRuntime(_message.Message): - __slots__ = ("dsn",) - DSN_FIELD_NUMBER: _ClassVar[int] - dsn: str - def __init__(self, dsn: _Optional[str] = ...) -> None: ... - -class Decl(_message.Message): - __slots__ = ("config", "data", "database", "enum", "secret", "subscription", "topic", "type_alias", "verb") - CONFIG_FIELD_NUMBER: _ClassVar[int] - DATA_FIELD_NUMBER: _ClassVar[int] - DATABASE_FIELD_NUMBER: _ClassVar[int] - ENUM_FIELD_NUMBER: _ClassVar[int] - SECRET_FIELD_NUMBER: _ClassVar[int] - SUBSCRIPTION_FIELD_NUMBER: _ClassVar[int] - TOPIC_FIELD_NUMBER: _ClassVar[int] - TYPE_ALIAS_FIELD_NUMBER: _ClassVar[int] - VERB_FIELD_NUMBER: _ClassVar[int] - config: Config - data: Data - database: Database - enum: Enum - secret: Secret - subscription: Subscription - topic: Topic - type_alias: TypeAlias - verb: Verb - def __init__(self, config: _Optional[_Union[Config, _Mapping]] = ..., data: _Optional[_Union[Data, _Mapping]] = ..., database: _Optional[_Union[Database, _Mapping]] = ..., enum: _Optional[_Union[Enum, _Mapping]] = ..., secret: _Optional[_Union[Secret, _Mapping]] = ..., subscription: _Optional[_Union[Subscription, _Mapping]] = ..., topic: _Optional[_Union[Topic, _Mapping]] = ..., type_alias: _Optional[_Union[TypeAlias, _Mapping]] = ..., verb: _Optional[_Union[Verb, _Mapping]] = ...) -> None: ... - -class Enum(_message.Message): - __slots__ = ("pos", "comments", "export", "name", "type", "variants") - POS_FIELD_NUMBER: _ClassVar[int] - COMMENTS_FIELD_NUMBER: _ClassVar[int] - EXPORT_FIELD_NUMBER: _ClassVar[int] - NAME_FIELD_NUMBER: _ClassVar[int] - TYPE_FIELD_NUMBER: _ClassVar[int] - VARIANTS_FIELD_NUMBER: _ClassVar[int] - pos: Position - comments: _containers.RepeatedScalarFieldContainer[str] - export: bool - name: str - type: Type - variants: _containers.RepeatedCompositeFieldContainer[EnumVariant] - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., comments: _Optional[_Iterable[str]] = ..., export: bool = ..., name: _Optional[str] = ..., type: _Optional[_Union[Type, _Mapping]] = ..., variants: _Optional[_Iterable[_Union[EnumVariant, _Mapping]]] = ...) -> None: ... - -class EnumVariant(_message.Message): - __slots__ = ("pos", "comments", "name", "value") - POS_FIELD_NUMBER: _ClassVar[int] - COMMENTS_FIELD_NUMBER: _ClassVar[int] - NAME_FIELD_NUMBER: _ClassVar[int] - VALUE_FIELD_NUMBER: _ClassVar[int] - pos: Position - comments: _containers.RepeatedScalarFieldContainer[str] - name: str - value: Value - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., comments: _Optional[_Iterable[str]] = ..., name: _Optional[str] = ..., value: _Optional[_Union[Value, _Mapping]] = ...) -> None: ... - -class Field(_message.Message): - __slots__ = ("pos", "comments", "name", "type", "metadata") - POS_FIELD_NUMBER: _ClassVar[int] - COMMENTS_FIELD_NUMBER: _ClassVar[int] - NAME_FIELD_NUMBER: _ClassVar[int] - TYPE_FIELD_NUMBER: _ClassVar[int] - METADATA_FIELD_NUMBER: _ClassVar[int] - pos: Position - comments: _containers.RepeatedScalarFieldContainer[str] - name: str - type: Type - metadata: _containers.RepeatedCompositeFieldContainer[Metadata] - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., comments: _Optional[_Iterable[str]] = ..., name: _Optional[str] = ..., type: _Optional[_Union[Type, _Mapping]] = ..., metadata: _Optional[_Iterable[_Union[Metadata, _Mapping]]] = ...) -> None: ... - -class Float(_message.Message): - __slots__ = ("pos",) - POS_FIELD_NUMBER: _ClassVar[int] - pos: Position - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ...) -> None: ... - -class IngressPathComponent(_message.Message): - __slots__ = ("ingress_path_literal", "ingress_path_parameter") - INGRESS_PATH_LITERAL_FIELD_NUMBER: _ClassVar[int] - INGRESS_PATH_PARAMETER_FIELD_NUMBER: _ClassVar[int] - ingress_path_literal: IngressPathLiteral - ingress_path_parameter: IngressPathParameter - def __init__(self, ingress_path_literal: _Optional[_Union[IngressPathLiteral, _Mapping]] = ..., ingress_path_parameter: _Optional[_Union[IngressPathParameter, _Mapping]] = ...) -> None: ... - -class IngressPathLiteral(_message.Message): - __slots__ = ("pos", "text") - POS_FIELD_NUMBER: _ClassVar[int] - TEXT_FIELD_NUMBER: _ClassVar[int] - pos: Position - text: str - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., text: _Optional[str] = ...) -> None: ... - -class IngressPathParameter(_message.Message): - __slots__ = ("pos", "name") - POS_FIELD_NUMBER: _ClassVar[int] - NAME_FIELD_NUMBER: _ClassVar[int] - pos: Position - name: str - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., name: _Optional[str] = ...) -> None: ... - -class Int(_message.Message): - __slots__ = ("pos",) - POS_FIELD_NUMBER: _ClassVar[int] - pos: Position - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ...) -> None: ... - -class IntValue(_message.Message): - __slots__ = ("pos", "value") - POS_FIELD_NUMBER: _ClassVar[int] - VALUE_FIELD_NUMBER: _ClassVar[int] - pos: Position - value: int - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., value: _Optional[int] = ...) -> None: ... - -class Map(_message.Message): - __slots__ = ("pos", "key", "value") - POS_FIELD_NUMBER: _ClassVar[int] - KEY_FIELD_NUMBER: _ClassVar[int] - VALUE_FIELD_NUMBER: _ClassVar[int] - pos: Position - key: Type - value: Type - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., key: _Optional[_Union[Type, _Mapping]] = ..., value: _Optional[_Union[Type, _Mapping]] = ...) -> None: ... - -class Metadata(_message.Message): - __slots__ = ("alias", "calls", "config", "cron_job", "databases", "encoding", "ingress", "retry", "secrets", "subscriber", "type_map") - ALIAS_FIELD_NUMBER: _ClassVar[int] - CALLS_FIELD_NUMBER: _ClassVar[int] - CONFIG_FIELD_NUMBER: _ClassVar[int] - CRON_JOB_FIELD_NUMBER: _ClassVar[int] - DATABASES_FIELD_NUMBER: _ClassVar[int] - ENCODING_FIELD_NUMBER: _ClassVar[int] - INGRESS_FIELD_NUMBER: _ClassVar[int] - RETRY_FIELD_NUMBER: _ClassVar[int] - SECRETS_FIELD_NUMBER: _ClassVar[int] - SUBSCRIBER_FIELD_NUMBER: _ClassVar[int] - TYPE_MAP_FIELD_NUMBER: _ClassVar[int] - alias: MetadataAlias - calls: MetadataCalls - config: MetadataConfig - cron_job: MetadataCronJob - databases: MetadataDatabases - encoding: MetadataEncoding - ingress: MetadataIngress - retry: MetadataRetry - secrets: MetadataSecrets - subscriber: MetadataSubscriber - type_map: MetadataTypeMap - def __init__(self, alias: _Optional[_Union[MetadataAlias, _Mapping]] = ..., calls: _Optional[_Union[MetadataCalls, _Mapping]] = ..., config: _Optional[_Union[MetadataConfig, _Mapping]] = ..., cron_job: _Optional[_Union[MetadataCronJob, _Mapping]] = ..., databases: _Optional[_Union[MetadataDatabases, _Mapping]] = ..., encoding: _Optional[_Union[MetadataEncoding, _Mapping]] = ..., ingress: _Optional[_Union[MetadataIngress, _Mapping]] = ..., retry: _Optional[_Union[MetadataRetry, _Mapping]] = ..., secrets: _Optional[_Union[MetadataSecrets, _Mapping]] = ..., subscriber: _Optional[_Union[MetadataSubscriber, _Mapping]] = ..., type_map: _Optional[_Union[MetadataTypeMap, _Mapping]] = ...) -> None: ... - -class MetadataAlias(_message.Message): - __slots__ = ("pos", "kind", "alias") - POS_FIELD_NUMBER: _ClassVar[int] - KIND_FIELD_NUMBER: _ClassVar[int] - ALIAS_FIELD_NUMBER: _ClassVar[int] - pos: Position - kind: AliasKind - alias: str - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., kind: _Optional[_Union[AliasKind, str]] = ..., alias: _Optional[str] = ...) -> None: ... - -class MetadataCalls(_message.Message): - __slots__ = ("pos", "calls") - POS_FIELD_NUMBER: _ClassVar[int] - CALLS_FIELD_NUMBER: _ClassVar[int] - pos: Position - calls: _containers.RepeatedCompositeFieldContainer[Ref] - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., calls: _Optional[_Iterable[_Union[Ref, _Mapping]]] = ...) -> None: ... - -class MetadataConfig(_message.Message): - __slots__ = ("pos", "config") - POS_FIELD_NUMBER: _ClassVar[int] - CONFIG_FIELD_NUMBER: _ClassVar[int] - pos: Position - config: _containers.RepeatedCompositeFieldContainer[Ref] - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., config: _Optional[_Iterable[_Union[Ref, _Mapping]]] = ...) -> None: ... - -class MetadataCronJob(_message.Message): - __slots__ = ("pos", "cron") - POS_FIELD_NUMBER: _ClassVar[int] - CRON_FIELD_NUMBER: _ClassVar[int] - pos: Position - cron: str - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., cron: _Optional[str] = ...) -> None: ... - -class MetadataDatabases(_message.Message): - __slots__ = ("pos", "calls") - POS_FIELD_NUMBER: _ClassVar[int] - CALLS_FIELD_NUMBER: _ClassVar[int] - pos: Position - calls: _containers.RepeatedCompositeFieldContainer[Ref] - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., calls: _Optional[_Iterable[_Union[Ref, _Mapping]]] = ...) -> None: ... - -class MetadataEncoding(_message.Message): - __slots__ = ("pos", "type", "lenient") - POS_FIELD_NUMBER: _ClassVar[int] - TYPE_FIELD_NUMBER: _ClassVar[int] - LENIENT_FIELD_NUMBER: _ClassVar[int] - pos: Position - type: str - lenient: bool - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., type: _Optional[str] = ..., lenient: bool = ...) -> None: ... - -class MetadataIngress(_message.Message): - __slots__ = ("pos", "type", "method", "path") - POS_FIELD_NUMBER: _ClassVar[int] - TYPE_FIELD_NUMBER: _ClassVar[int] - METHOD_FIELD_NUMBER: _ClassVar[int] - PATH_FIELD_NUMBER: _ClassVar[int] - pos: Position - type: str - method: str - path: _containers.RepeatedCompositeFieldContainer[IngressPathComponent] - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., type: _Optional[str] = ..., method: _Optional[str] = ..., path: _Optional[_Iterable[_Union[IngressPathComponent, _Mapping]]] = ...) -> None: ... - -class MetadataRetry(_message.Message): - __slots__ = ("pos", "count", "min_backoff", "max_backoff", "catch") - POS_FIELD_NUMBER: _ClassVar[int] - COUNT_FIELD_NUMBER: _ClassVar[int] - MIN_BACKOFF_FIELD_NUMBER: _ClassVar[int] - MAX_BACKOFF_FIELD_NUMBER: _ClassVar[int] - CATCH_FIELD_NUMBER: _ClassVar[int] - pos: Position - count: int - min_backoff: str - max_backoff: str - catch: Ref - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., count: _Optional[int] = ..., min_backoff: _Optional[str] = ..., max_backoff: _Optional[str] = ..., catch: _Optional[_Union[Ref, _Mapping]] = ...) -> None: ... - -class MetadataSecrets(_message.Message): - __slots__ = ("pos", "secrets") - POS_FIELD_NUMBER: _ClassVar[int] - SECRETS_FIELD_NUMBER: _ClassVar[int] - pos: Position - secrets: _containers.RepeatedCompositeFieldContainer[Ref] - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., secrets: _Optional[_Iterable[_Union[Ref, _Mapping]]] = ...) -> None: ... - -class MetadataSubscriber(_message.Message): - __slots__ = ("pos", "name") - POS_FIELD_NUMBER: _ClassVar[int] - NAME_FIELD_NUMBER: _ClassVar[int] - pos: Position - name: str - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., name: _Optional[str] = ...) -> None: ... - -class MetadataTypeMap(_message.Message): - __slots__ = ("pos", "runtime", "native_name") - POS_FIELD_NUMBER: _ClassVar[int] - RUNTIME_FIELD_NUMBER: _ClassVar[int] - NATIVE_NAME_FIELD_NUMBER: _ClassVar[int] - pos: Position - runtime: str - native_name: str - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., runtime: _Optional[str] = ..., native_name: _Optional[str] = ...) -> None: ... - -class Module(_message.Message): - __slots__ = ("pos", "comments", "builtin", "name", "decls", "runtime") - POS_FIELD_NUMBER: _ClassVar[int] - COMMENTS_FIELD_NUMBER: _ClassVar[int] - BUILTIN_FIELD_NUMBER: _ClassVar[int] - NAME_FIELD_NUMBER: _ClassVar[int] - DECLS_FIELD_NUMBER: _ClassVar[int] - RUNTIME_FIELD_NUMBER: _ClassVar[int] - pos: Position - comments: _containers.RepeatedScalarFieldContainer[str] - builtin: bool - name: str - decls: _containers.RepeatedCompositeFieldContainer[Decl] - runtime: ModuleRuntime - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., comments: _Optional[_Iterable[str]] = ..., builtin: bool = ..., name: _Optional[str] = ..., decls: _Optional[_Iterable[_Union[Decl, _Mapping]]] = ..., runtime: _Optional[_Union[ModuleRuntime, _Mapping]] = ...) -> None: ... - -class ModuleRuntime(_message.Message): - __slots__ = ("create_time", "language", "min_replicas", "os", "arch", "image") - CREATE_TIME_FIELD_NUMBER: _ClassVar[int] - LANGUAGE_FIELD_NUMBER: _ClassVar[int] - MIN_REPLICAS_FIELD_NUMBER: _ClassVar[int] - OS_FIELD_NUMBER: _ClassVar[int] - ARCH_FIELD_NUMBER: _ClassVar[int] - IMAGE_FIELD_NUMBER: _ClassVar[int] - create_time: _timestamp_pb2.Timestamp - language: str - min_replicas: int - os: str - arch: str - image: str - def __init__(self, create_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., language: _Optional[str] = ..., min_replicas: _Optional[int] = ..., os: _Optional[str] = ..., arch: _Optional[str] = ..., image: _Optional[str] = ...) -> None: ... - -class Optional(_message.Message): - __slots__ = ("pos", "type") - POS_FIELD_NUMBER: _ClassVar[int] - TYPE_FIELD_NUMBER: _ClassVar[int] - pos: Position - type: Type - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., type: _Optional[_Union[Type, _Mapping]] = ...) -> None: ... - -class Position(_message.Message): - __slots__ = ("filename", "line", "column") - FILENAME_FIELD_NUMBER: _ClassVar[int] - LINE_FIELD_NUMBER: _ClassVar[int] - COLUMN_FIELD_NUMBER: _ClassVar[int] - filename: str - line: int - column: int - def __init__(self, filename: _Optional[str] = ..., line: _Optional[int] = ..., column: _Optional[int] = ...) -> None: ... - -class Ref(_message.Message): - __slots__ = ("pos", "module", "name", "type_parameters") - POS_FIELD_NUMBER: _ClassVar[int] - MODULE_FIELD_NUMBER: _ClassVar[int] - NAME_FIELD_NUMBER: _ClassVar[int] - TYPE_PARAMETERS_FIELD_NUMBER: _ClassVar[int] - pos: Position - module: str - name: str - type_parameters: _containers.RepeatedCompositeFieldContainer[Type] - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., module: _Optional[str] = ..., name: _Optional[str] = ..., type_parameters: _Optional[_Iterable[_Union[Type, _Mapping]]] = ...) -> None: ... - -class Schema(_message.Message): - __slots__ = ("pos", "modules") - POS_FIELD_NUMBER: _ClassVar[int] - MODULES_FIELD_NUMBER: _ClassVar[int] - pos: Position - modules: _containers.RepeatedCompositeFieldContainer[Module] - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., modules: _Optional[_Iterable[_Union[Module, _Mapping]]] = ...) -> None: ... - -class Secret(_message.Message): - __slots__ = ("pos", "comments", "name", "type") - POS_FIELD_NUMBER: _ClassVar[int] - COMMENTS_FIELD_NUMBER: _ClassVar[int] - NAME_FIELD_NUMBER: _ClassVar[int] - TYPE_FIELD_NUMBER: _ClassVar[int] - pos: Position - comments: _containers.RepeatedScalarFieldContainer[str] - name: str - type: Type - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., comments: _Optional[_Iterable[str]] = ..., name: _Optional[str] = ..., type: _Optional[_Union[Type, _Mapping]] = ...) -> None: ... - -class String(_message.Message): - __slots__ = ("pos",) - POS_FIELD_NUMBER: _ClassVar[int] - pos: Position - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ...) -> None: ... - -class StringValue(_message.Message): - __slots__ = ("pos", "value") - POS_FIELD_NUMBER: _ClassVar[int] - VALUE_FIELD_NUMBER: _ClassVar[int] - pos: Position - value: str - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., value: _Optional[str] = ...) -> None: ... - -class Subscription(_message.Message): - __slots__ = ("pos", "comments", "name", "topic") - POS_FIELD_NUMBER: _ClassVar[int] - COMMENTS_FIELD_NUMBER: _ClassVar[int] - NAME_FIELD_NUMBER: _ClassVar[int] - TOPIC_FIELD_NUMBER: _ClassVar[int] - pos: Position - comments: _containers.RepeatedScalarFieldContainer[str] - name: str - topic: Ref - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., comments: _Optional[_Iterable[str]] = ..., name: _Optional[str] = ..., topic: _Optional[_Union[Ref, _Mapping]] = ...) -> None: ... - -class Time(_message.Message): - __slots__ = ("pos",) - POS_FIELD_NUMBER: _ClassVar[int] - pos: Position - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ...) -> None: ... - -class Topic(_message.Message): - __slots__ = ("pos", "comments", "export", "name", "event") - POS_FIELD_NUMBER: _ClassVar[int] - COMMENTS_FIELD_NUMBER: _ClassVar[int] - EXPORT_FIELD_NUMBER: _ClassVar[int] - NAME_FIELD_NUMBER: _ClassVar[int] - EVENT_FIELD_NUMBER: _ClassVar[int] - pos: Position - comments: _containers.RepeatedScalarFieldContainer[str] - export: bool - name: str - event: Type - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., comments: _Optional[_Iterable[str]] = ..., export: bool = ..., name: _Optional[str] = ..., event: _Optional[_Union[Type, _Mapping]] = ...) -> None: ... - -class Type(_message.Message): - __slots__ = ("any", "array", "bool", "bytes", "float", "int", "map", "optional", "ref", "string", "time", "unit") - ANY_FIELD_NUMBER: _ClassVar[int] - ARRAY_FIELD_NUMBER: _ClassVar[int] - BOOL_FIELD_NUMBER: _ClassVar[int] - BYTES_FIELD_NUMBER: _ClassVar[int] - FLOAT_FIELD_NUMBER: _ClassVar[int] - INT_FIELD_NUMBER: _ClassVar[int] - MAP_FIELD_NUMBER: _ClassVar[int] - OPTIONAL_FIELD_NUMBER: _ClassVar[int] - REF_FIELD_NUMBER: _ClassVar[int] - STRING_FIELD_NUMBER: _ClassVar[int] - TIME_FIELD_NUMBER: _ClassVar[int] - UNIT_FIELD_NUMBER: _ClassVar[int] - any: Any - array: Array - bool: Bool - bytes: Bytes - float: Float - int: Int - map: Map - optional: Optional - ref: Ref - string: String - time: Time - unit: Unit - def __init__(self, any: _Optional[_Union[Any, _Mapping]] = ..., array: _Optional[_Union[Array, _Mapping]] = ..., bool: _Optional[_Union[Bool, _Mapping]] = ..., bytes: _Optional[_Union[Bytes, _Mapping]] = ..., float: _Optional[_Union[Float, _Mapping]] = ..., int: _Optional[_Union[Int, _Mapping]] = ..., map: _Optional[_Union[Map, _Mapping]] = ..., optional: _Optional[_Union[Optional, _Mapping]] = ..., ref: _Optional[_Union[Ref, _Mapping]] = ..., string: _Optional[_Union[String, _Mapping]] = ..., time: _Optional[_Union[Time, _Mapping]] = ..., unit: _Optional[_Union[Unit, _Mapping]] = ...) -> None: ... - -class TypeAlias(_message.Message): - __slots__ = ("pos", "comments", "export", "name", "type", "metadata") - POS_FIELD_NUMBER: _ClassVar[int] - COMMENTS_FIELD_NUMBER: _ClassVar[int] - EXPORT_FIELD_NUMBER: _ClassVar[int] - NAME_FIELD_NUMBER: _ClassVar[int] - TYPE_FIELD_NUMBER: _ClassVar[int] - METADATA_FIELD_NUMBER: _ClassVar[int] - pos: Position - comments: _containers.RepeatedScalarFieldContainer[str] - export: bool - name: str - type: Type - metadata: _containers.RepeatedCompositeFieldContainer[Metadata] - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., comments: _Optional[_Iterable[str]] = ..., export: bool = ..., name: _Optional[str] = ..., type: _Optional[_Union[Type, _Mapping]] = ..., metadata: _Optional[_Iterable[_Union[Metadata, _Mapping]]] = ...) -> None: ... - -class TypeParameter(_message.Message): - __slots__ = ("pos", "name") - POS_FIELD_NUMBER: _ClassVar[int] - NAME_FIELD_NUMBER: _ClassVar[int] - pos: Position - name: str - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., name: _Optional[str] = ...) -> None: ... - -class TypeValue(_message.Message): - __slots__ = ("pos", "value") - POS_FIELD_NUMBER: _ClassVar[int] - VALUE_FIELD_NUMBER: _ClassVar[int] - pos: Position - value: Type - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., value: _Optional[_Union[Type, _Mapping]] = ...) -> None: ... - -class Unit(_message.Message): - __slots__ = ("pos",) - POS_FIELD_NUMBER: _ClassVar[int] - pos: Position - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ...) -> None: ... - -class Value(_message.Message): - __slots__ = ("int_value", "string_value", "type_value") - INT_VALUE_FIELD_NUMBER: _ClassVar[int] - STRING_VALUE_FIELD_NUMBER: _ClassVar[int] - TYPE_VALUE_FIELD_NUMBER: _ClassVar[int] - int_value: IntValue - string_value: StringValue - type_value: TypeValue - def __init__(self, int_value: _Optional[_Union[IntValue, _Mapping]] = ..., string_value: _Optional[_Union[StringValue, _Mapping]] = ..., type_value: _Optional[_Union[TypeValue, _Mapping]] = ...) -> None: ... - -class Verb(_message.Message): - __slots__ = ("pos", "comments", "export", "name", "request", "response", "metadata", "runtime") - POS_FIELD_NUMBER: _ClassVar[int] - COMMENTS_FIELD_NUMBER: _ClassVar[int] - EXPORT_FIELD_NUMBER: _ClassVar[int] - NAME_FIELD_NUMBER: _ClassVar[int] - REQUEST_FIELD_NUMBER: _ClassVar[int] - RESPONSE_FIELD_NUMBER: _ClassVar[int] - METADATA_FIELD_NUMBER: _ClassVar[int] - RUNTIME_FIELD_NUMBER: _ClassVar[int] - pos: Position - comments: _containers.RepeatedScalarFieldContainer[str] - export: bool - name: str - request: Type - response: Type - metadata: _containers.RepeatedCompositeFieldContainer[Metadata] - runtime: VerbRuntime - def __init__(self, pos: _Optional[_Union[Position, _Mapping]] = ..., comments: _Optional[_Iterable[str]] = ..., export: bool = ..., name: _Optional[str] = ..., request: _Optional[_Union[Type, _Mapping]] = ..., response: _Optional[_Union[Type, _Mapping]] = ..., metadata: _Optional[_Iterable[_Union[Metadata, _Mapping]]] = ..., runtime: _Optional[_Union[VerbRuntime, _Mapping]] = ...) -> None: ... - -class VerbRuntime(_message.Message): - __slots__ = ("create_time", "start_time") - CREATE_TIME_FIELD_NUMBER: _ClassVar[int] - START_TIME_FIELD_NUMBER: _ClassVar[int] - create_time: _timestamp_pb2.Timestamp - start_time: _timestamp_pb2.Timestamp - def __init__(self, create_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., start_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +THIS FILE IS GENERATED; DO NOT MODIFY""" + +import builtins +import collections.abc +import google.protobuf.descriptor +import google.protobuf.internal.containers +import google.protobuf.internal.enum_type_wrapper +import google.protobuf.message +import google.protobuf.timestamp_pb2 +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class _AliasKind: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _AliasKindEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_AliasKind.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + ALIAS_KIND_JSON: _AliasKind.ValueType # 0 + +class AliasKind(_AliasKind, metaclass=_AliasKindEnumTypeWrapper): ... + +ALIAS_KIND_JSON: AliasKind.ValueType # 0 +global___AliasKind = AliasKind + +@typing.final +class Any(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + @property + def pos(self) -> global___Position: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___Any = Any + +@typing.final +class Array(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + ELEMENT_FIELD_NUMBER: builtins.int + @property + def pos(self) -> global___Position: ... + @property + def element(self) -> global___Type: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + element: global___Type | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "element", b"element", "pos", b"pos"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "element", b"element", "pos", b"pos"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___Array = Array + +@typing.final +class Bool(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + @property + def pos(self) -> global___Position: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___Bool = Bool + +@typing.final +class Bytes(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + @property + def pos(self) -> global___Position: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___Bytes = Bytes + +@typing.final +class Config(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + COMMENTS_FIELD_NUMBER: builtins.int + NAME_FIELD_NUMBER: builtins.int + TYPE_FIELD_NUMBER: builtins.int + name: builtins.str + @property + def pos(self) -> global___Position: ... + @property + def comments(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + @property + def type(self) -> global___Type: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + comments: collections.abc.Iterable[builtins.str] | None = ..., + name: builtins.str = ..., + type: global___Type | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos", "type", b"type"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "comments", b"comments", "name", b"name", "pos", b"pos", "type", b"type"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___Config = Config + +@typing.final +class Data(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + COMMENTS_FIELD_NUMBER: builtins.int + EXPORT_FIELD_NUMBER: builtins.int + NAME_FIELD_NUMBER: builtins.int + TYPE_PARAMETERS_FIELD_NUMBER: builtins.int + FIELDS_FIELD_NUMBER: builtins.int + METADATA_FIELD_NUMBER: builtins.int + export: builtins.bool + name: builtins.str + @property + def pos(self) -> global___Position: ... + @property + def comments(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + @property + def type_parameters(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___TypeParameter]: ... + @property + def fields(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Field]: ... + @property + def metadata(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Metadata]: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + comments: collections.abc.Iterable[builtins.str] | None = ..., + export: builtins.bool = ..., + name: builtins.str = ..., + type_parameters: collections.abc.Iterable[global___TypeParameter] | None = ..., + fields: collections.abc.Iterable[global___Field] | None = ..., + metadata: collections.abc.Iterable[global___Metadata] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "comments", b"comments", "export", b"export", "fields", b"fields", "metadata", b"metadata", "name", b"name", "pos", b"pos", "type_parameters", b"type_parameters"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___Data = Data + +@typing.final +class Database(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + RUNTIME_FIELD_NUMBER: builtins.int + COMMENTS_FIELD_NUMBER: builtins.int + TYPE_FIELD_NUMBER: builtins.int + NAME_FIELD_NUMBER: builtins.int + type: builtins.str + name: builtins.str + @property + def pos(self) -> global___Position: ... + @property + def runtime(self) -> global___DatabaseRuntime: ... + @property + def comments(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + runtime: global___DatabaseRuntime | None = ..., + comments: collections.abc.Iterable[builtins.str] | None = ..., + type: builtins.str = ..., + name: builtins.str = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "_runtime", b"_runtime", "pos", b"pos", "runtime", b"runtime"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "_runtime", b"_runtime", "comments", b"comments", "name", b"name", "pos", b"pos", "runtime", b"runtime", "type", b"type"]) -> None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_runtime", b"_runtime"]) -> typing.Literal["runtime"] | None: ... + +global___Database = Database + +@typing.final +class DatabaseRuntime(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + DSN_FIELD_NUMBER: builtins.int + dsn: builtins.str + def __init__( + self, + *, + dsn: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["dsn", b"dsn"]) -> None: ... + +global___DatabaseRuntime = DatabaseRuntime + +@typing.final +class Decl(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + CONFIG_FIELD_NUMBER: builtins.int + DATA_FIELD_NUMBER: builtins.int + DATABASE_FIELD_NUMBER: builtins.int + ENUM_FIELD_NUMBER: builtins.int + SECRET_FIELD_NUMBER: builtins.int + SUBSCRIPTION_FIELD_NUMBER: builtins.int + TOPIC_FIELD_NUMBER: builtins.int + TYPE_ALIAS_FIELD_NUMBER: builtins.int + VERB_FIELD_NUMBER: builtins.int + @property + def config(self) -> global___Config: ... + @property + def data(self) -> global___Data: ... + @property + def database(self) -> global___Database: ... + @property + def enum(self) -> global___Enum: ... + @property + def secret(self) -> global___Secret: ... + @property + def subscription(self) -> global___Subscription: ... + @property + def topic(self) -> global___Topic: ... + @property + def type_alias(self) -> global___TypeAlias: ... + @property + def verb(self) -> global___Verb: ... + def __init__( + self, + *, + config: global___Config | None = ..., + data: global___Data | None = ..., + database: global___Database | None = ..., + enum: global___Enum | None = ..., + secret: global___Secret | None = ..., + subscription: global___Subscription | None = ..., + topic: global___Topic | None = ..., + type_alias: global___TypeAlias | None = ..., + verb: global___Verb | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["config", b"config", "data", b"data", "database", b"database", "enum", b"enum", "secret", b"secret", "subscription", b"subscription", "topic", b"topic", "type_alias", b"type_alias", "value", b"value", "verb", b"verb"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["config", b"config", "data", b"data", "database", b"database", "enum", b"enum", "secret", b"secret", "subscription", b"subscription", "topic", b"topic", "type_alias", b"type_alias", "value", b"value", "verb", b"verb"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["value", b"value"]) -> typing.Literal["config", "data", "database", "enum", "secret", "subscription", "topic", "type_alias", "verb"] | None: ... + +global___Decl = Decl + +@typing.final +class Enum(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + COMMENTS_FIELD_NUMBER: builtins.int + EXPORT_FIELD_NUMBER: builtins.int + NAME_FIELD_NUMBER: builtins.int + TYPE_FIELD_NUMBER: builtins.int + VARIANTS_FIELD_NUMBER: builtins.int + export: builtins.bool + name: builtins.str + @property + def pos(self) -> global___Position: ... + @property + def comments(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + @property + def type(self) -> global___Type: ... + @property + def variants(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___EnumVariant]: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + comments: collections.abc.Iterable[builtins.str] | None = ..., + export: builtins.bool = ..., + name: builtins.str = ..., + type: global___Type | None = ..., + variants: collections.abc.Iterable[global___EnumVariant] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "_type", b"_type", "pos", b"pos", "type", b"type"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "_type", b"_type", "comments", b"comments", "export", b"export", "name", b"name", "pos", b"pos", "type", b"type", "variants", b"variants"]) -> None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_type", b"_type"]) -> typing.Literal["type"] | None: ... + +global___Enum = Enum + +@typing.final +class EnumVariant(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + COMMENTS_FIELD_NUMBER: builtins.int + NAME_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + name: builtins.str + @property + def pos(self) -> global___Position: ... + @property + def comments(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + @property + def value(self) -> global___Value: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + comments: collections.abc.Iterable[builtins.str] | None = ..., + name: builtins.str = ..., + value: global___Value | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos", "value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "comments", b"comments", "name", b"name", "pos", b"pos", "value", b"value"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___EnumVariant = EnumVariant + +@typing.final +class Field(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + COMMENTS_FIELD_NUMBER: builtins.int + NAME_FIELD_NUMBER: builtins.int + TYPE_FIELD_NUMBER: builtins.int + METADATA_FIELD_NUMBER: builtins.int + name: builtins.str + @property + def pos(self) -> global___Position: ... + @property + def comments(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + @property + def type(self) -> global___Type: ... + @property + def metadata(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Metadata]: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + comments: collections.abc.Iterable[builtins.str] | None = ..., + name: builtins.str = ..., + type: global___Type | None = ..., + metadata: collections.abc.Iterable[global___Metadata] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos", "type", b"type"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "comments", b"comments", "metadata", b"metadata", "name", b"name", "pos", b"pos", "type", b"type"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___Field = Field + +@typing.final +class Float(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + @property + def pos(self) -> global___Position: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___Float = Float + +@typing.final +class IngressPathComponent(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + INGRESS_PATH_LITERAL_FIELD_NUMBER: builtins.int + INGRESS_PATH_PARAMETER_FIELD_NUMBER: builtins.int + @property + def ingress_path_literal(self) -> global___IngressPathLiteral: ... + @property + def ingress_path_parameter(self) -> global___IngressPathParameter: ... + def __init__( + self, + *, + ingress_path_literal: global___IngressPathLiteral | None = ..., + ingress_path_parameter: global___IngressPathParameter | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["ingress_path_literal", b"ingress_path_literal", "ingress_path_parameter", b"ingress_path_parameter", "value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["ingress_path_literal", b"ingress_path_literal", "ingress_path_parameter", b"ingress_path_parameter", "value", b"value"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["value", b"value"]) -> typing.Literal["ingress_path_literal", "ingress_path_parameter"] | None: ... + +global___IngressPathComponent = IngressPathComponent + +@typing.final +class IngressPathLiteral(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + TEXT_FIELD_NUMBER: builtins.int + text: builtins.str + @property + def pos(self) -> global___Position: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + text: builtins.str = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos", "text", b"text"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___IngressPathLiteral = IngressPathLiteral + +@typing.final +class IngressPathParameter(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + NAME_FIELD_NUMBER: builtins.int + name: builtins.str + @property + def pos(self) -> global___Position: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + name: builtins.str = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "name", b"name", "pos", b"pos"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___IngressPathParameter = IngressPathParameter + +@typing.final +class Int(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + @property + def pos(self) -> global___Position: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___Int = Int + +@typing.final +class IntValue(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + value: builtins.int + @property + def pos(self) -> global___Position: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + value: builtins.int = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos", "value", b"value"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___IntValue = IntValue + +@typing.final +class Map(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + @property + def pos(self) -> global___Position: ... + @property + def key(self) -> global___Type: ... + @property + def value(self) -> global___Type: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + key: global___Type | None = ..., + value: global___Type | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "key", b"key", "pos", b"pos", "value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "key", b"key", "pos", b"pos", "value", b"value"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___Map = Map + +@typing.final +class Metadata(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ALIAS_FIELD_NUMBER: builtins.int + CALLS_FIELD_NUMBER: builtins.int + CONFIG_FIELD_NUMBER: builtins.int + CRON_JOB_FIELD_NUMBER: builtins.int + DATABASES_FIELD_NUMBER: builtins.int + ENCODING_FIELD_NUMBER: builtins.int + INGRESS_FIELD_NUMBER: builtins.int + RETRY_FIELD_NUMBER: builtins.int + SECRETS_FIELD_NUMBER: builtins.int + SUBSCRIBER_FIELD_NUMBER: builtins.int + TYPE_MAP_FIELD_NUMBER: builtins.int + @property + def alias(self) -> global___MetadataAlias: ... + @property + def calls(self) -> global___MetadataCalls: ... + @property + def config(self) -> global___MetadataConfig: ... + @property + def cron_job(self) -> global___MetadataCronJob: ... + @property + def databases(self) -> global___MetadataDatabases: ... + @property + def encoding(self) -> global___MetadataEncoding: ... + @property + def ingress(self) -> global___MetadataIngress: ... + @property + def retry(self) -> global___MetadataRetry: ... + @property + def secrets(self) -> global___MetadataSecrets: ... + @property + def subscriber(self) -> global___MetadataSubscriber: ... + @property + def type_map(self) -> global___MetadataTypeMap: ... + def __init__( + self, + *, + alias: global___MetadataAlias | None = ..., + calls: global___MetadataCalls | None = ..., + config: global___MetadataConfig | None = ..., + cron_job: global___MetadataCronJob | None = ..., + databases: global___MetadataDatabases | None = ..., + encoding: global___MetadataEncoding | None = ..., + ingress: global___MetadataIngress | None = ..., + retry: global___MetadataRetry | None = ..., + secrets: global___MetadataSecrets | None = ..., + subscriber: global___MetadataSubscriber | None = ..., + type_map: global___MetadataTypeMap | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["alias", b"alias", "calls", b"calls", "config", b"config", "cron_job", b"cron_job", "databases", b"databases", "encoding", b"encoding", "ingress", b"ingress", "retry", b"retry", "secrets", b"secrets", "subscriber", b"subscriber", "type_map", b"type_map", "value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["alias", b"alias", "calls", b"calls", "config", b"config", "cron_job", b"cron_job", "databases", b"databases", "encoding", b"encoding", "ingress", b"ingress", "retry", b"retry", "secrets", b"secrets", "subscriber", b"subscriber", "type_map", b"type_map", "value", b"value"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["value", b"value"]) -> typing.Literal["alias", "calls", "config", "cron_job", "databases", "encoding", "ingress", "retry", "secrets", "subscriber", "type_map"] | None: ... + +global___Metadata = Metadata + +@typing.final +class MetadataAlias(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + KIND_FIELD_NUMBER: builtins.int + ALIAS_FIELD_NUMBER: builtins.int + kind: global___AliasKind.ValueType + alias: builtins.str + @property + def pos(self) -> global___Position: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + kind: global___AliasKind.ValueType = ..., + alias: builtins.str = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "alias", b"alias", "kind", b"kind", "pos", b"pos"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___MetadataAlias = MetadataAlias + +@typing.final +class MetadataCalls(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + CALLS_FIELD_NUMBER: builtins.int + @property + def pos(self) -> global___Position: ... + @property + def calls(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Ref]: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + calls: collections.abc.Iterable[global___Ref] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "calls", b"calls", "pos", b"pos"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___MetadataCalls = MetadataCalls + +@typing.final +class MetadataConfig(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + CONFIG_FIELD_NUMBER: builtins.int + @property + def pos(self) -> global___Position: ... + @property + def config(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Ref]: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + config: collections.abc.Iterable[global___Ref] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "config", b"config", "pos", b"pos"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___MetadataConfig = MetadataConfig + +@typing.final +class MetadataCronJob(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + CRON_FIELD_NUMBER: builtins.int + cron: builtins.str + @property + def pos(self) -> global___Position: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + cron: builtins.str = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "cron", b"cron", "pos", b"pos"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___MetadataCronJob = MetadataCronJob + +@typing.final +class MetadataDatabases(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + CALLS_FIELD_NUMBER: builtins.int + @property + def pos(self) -> global___Position: ... + @property + def calls(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Ref]: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + calls: collections.abc.Iterable[global___Ref] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "calls", b"calls", "pos", b"pos"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___MetadataDatabases = MetadataDatabases + +@typing.final +class MetadataEncoding(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + TYPE_FIELD_NUMBER: builtins.int + LENIENT_FIELD_NUMBER: builtins.int + type: builtins.str + lenient: builtins.bool + @property + def pos(self) -> global___Position: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + type: builtins.str = ..., + lenient: builtins.bool = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "lenient", b"lenient", "pos", b"pos", "type", b"type"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___MetadataEncoding = MetadataEncoding + +@typing.final +class MetadataIngress(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + TYPE_FIELD_NUMBER: builtins.int + METHOD_FIELD_NUMBER: builtins.int + PATH_FIELD_NUMBER: builtins.int + type: builtins.str + method: builtins.str + @property + def pos(self) -> global___Position: ... + @property + def path(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___IngressPathComponent]: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + type: builtins.str = ..., + method: builtins.str = ..., + path: collections.abc.Iterable[global___IngressPathComponent] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "method", b"method", "path", b"path", "pos", b"pos", "type", b"type"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___MetadataIngress = MetadataIngress + +@typing.final +class MetadataRetry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + COUNT_FIELD_NUMBER: builtins.int + MIN_BACKOFF_FIELD_NUMBER: builtins.int + MAX_BACKOFF_FIELD_NUMBER: builtins.int + CATCH_FIELD_NUMBER: builtins.int + count: builtins.int + min_backoff: builtins.str + max_backoff: builtins.str + @property + def pos(self) -> global___Position: ... + @property + def catch(self) -> global___Ref: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + count: builtins.int | None = ..., + min_backoff: builtins.str = ..., + max_backoff: builtins.str = ..., + catch: global___Ref | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_catch", b"_catch", "_count", b"_count", "_pos", b"_pos", "catch", b"catch", "count", b"count", "pos", b"pos"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_catch", b"_catch", "_count", b"_count", "_pos", b"_pos", "catch", b"catch", "count", b"count", "max_backoff", b"max_backoff", "min_backoff", b"min_backoff", "pos", b"pos"]) -> None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_catch", b"_catch"]) -> typing.Literal["catch"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_count", b"_count"]) -> typing.Literal["count"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___MetadataRetry = MetadataRetry + +@typing.final +class MetadataSecrets(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + SECRETS_FIELD_NUMBER: builtins.int + @property + def pos(self) -> global___Position: ... + @property + def secrets(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Ref]: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + secrets: collections.abc.Iterable[global___Ref] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos", "secrets", b"secrets"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___MetadataSecrets = MetadataSecrets + +@typing.final +class MetadataSubscriber(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + NAME_FIELD_NUMBER: builtins.int + name: builtins.str + @property + def pos(self) -> global___Position: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + name: builtins.str = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "name", b"name", "pos", b"pos"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___MetadataSubscriber = MetadataSubscriber + +@typing.final +class MetadataTypeMap(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + RUNTIME_FIELD_NUMBER: builtins.int + NATIVE_NAME_FIELD_NUMBER: builtins.int + runtime: builtins.str + native_name: builtins.str + @property + def pos(self) -> global___Position: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + runtime: builtins.str = ..., + native_name: builtins.str = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "native_name", b"native_name", "pos", b"pos", "runtime", b"runtime"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___MetadataTypeMap = MetadataTypeMap + +@typing.final +class Module(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + COMMENTS_FIELD_NUMBER: builtins.int + BUILTIN_FIELD_NUMBER: builtins.int + NAME_FIELD_NUMBER: builtins.int + DECLS_FIELD_NUMBER: builtins.int + RUNTIME_FIELD_NUMBER: builtins.int + builtin: builtins.bool + name: builtins.str + @property + def pos(self) -> global___Position: ... + @property + def comments(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + @property + def decls(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Decl]: ... + @property + def runtime(self) -> global___ModuleRuntime: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + comments: collections.abc.Iterable[builtins.str] | None = ..., + builtin: builtins.bool = ..., + name: builtins.str = ..., + decls: collections.abc.Iterable[global___Decl] | None = ..., + runtime: global___ModuleRuntime | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "_runtime", b"_runtime", "pos", b"pos", "runtime", b"runtime"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "_runtime", b"_runtime", "builtin", b"builtin", "comments", b"comments", "decls", b"decls", "name", b"name", "pos", b"pos", "runtime", b"runtime"]) -> None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_runtime", b"_runtime"]) -> typing.Literal["runtime"] | None: ... + +global___Module = Module + +@typing.final +class ModuleRuntime(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + CREATE_TIME_FIELD_NUMBER: builtins.int + LANGUAGE_FIELD_NUMBER: builtins.int + MIN_REPLICAS_FIELD_NUMBER: builtins.int + OS_FIELD_NUMBER: builtins.int + ARCH_FIELD_NUMBER: builtins.int + IMAGE_FIELD_NUMBER: builtins.int + language: builtins.str + min_replicas: builtins.int + os: builtins.str + arch: builtins.str + image: builtins.str + @property + def create_time(self) -> google.protobuf.timestamp_pb2.Timestamp: ... + def __init__( + self, + *, + create_time: google.protobuf.timestamp_pb2.Timestamp | None = ..., + language: builtins.str = ..., + min_replicas: builtins.int = ..., + os: builtins.str | None = ..., + arch: builtins.str | None = ..., + image: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_arch", b"_arch", "_image", b"_image", "_os", b"_os", "arch", b"arch", "create_time", b"create_time", "image", b"image", "os", b"os"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_arch", b"_arch", "_image", b"_image", "_os", b"_os", "arch", b"arch", "create_time", b"create_time", "image", b"image", "language", b"language", "min_replicas", b"min_replicas", "os", b"os"]) -> None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_arch", b"_arch"]) -> typing.Literal["arch"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_image", b"_image"]) -> typing.Literal["image"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_os", b"_os"]) -> typing.Literal["os"] | None: ... + +global___ModuleRuntime = ModuleRuntime + +@typing.final +class Optional(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + TYPE_FIELD_NUMBER: builtins.int + @property + def pos(self) -> global___Position: ... + @property + def type(self) -> global___Type: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + type: global___Type | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "_type", b"_type", "pos", b"pos", "type", b"type"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "_type", b"_type", "pos", b"pos", "type", b"type"]) -> None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_type", b"_type"]) -> typing.Literal["type"] | None: ... + +global___Optional = Optional + +@typing.final +class Position(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + FILENAME_FIELD_NUMBER: builtins.int + LINE_FIELD_NUMBER: builtins.int + COLUMN_FIELD_NUMBER: builtins.int + filename: builtins.str + line: builtins.int + column: builtins.int + def __init__( + self, + *, + filename: builtins.str = ..., + line: builtins.int = ..., + column: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["column", b"column", "filename", b"filename", "line", b"line"]) -> None: ... + +global___Position = Position + +@typing.final +class Ref(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + MODULE_FIELD_NUMBER: builtins.int + NAME_FIELD_NUMBER: builtins.int + TYPE_PARAMETERS_FIELD_NUMBER: builtins.int + module: builtins.str + name: builtins.str + @property + def pos(self) -> global___Position: ... + @property + def type_parameters(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Type]: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + module: builtins.str = ..., + name: builtins.str = ..., + type_parameters: collections.abc.Iterable[global___Type] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "module", b"module", "name", b"name", "pos", b"pos", "type_parameters", b"type_parameters"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___Ref = Ref + +@typing.final +class Schema(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + MODULES_FIELD_NUMBER: builtins.int + @property + def pos(self) -> global___Position: ... + @property + def modules(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Module]: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + modules: collections.abc.Iterable[global___Module] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "modules", b"modules", "pos", b"pos"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___Schema = Schema + +@typing.final +class Secret(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + COMMENTS_FIELD_NUMBER: builtins.int + NAME_FIELD_NUMBER: builtins.int + TYPE_FIELD_NUMBER: builtins.int + name: builtins.str + @property + def pos(self) -> global___Position: ... + @property + def comments(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + @property + def type(self) -> global___Type: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + comments: collections.abc.Iterable[builtins.str] | None = ..., + name: builtins.str = ..., + type: global___Type | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos", "type", b"type"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "comments", b"comments", "name", b"name", "pos", b"pos", "type", b"type"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___Secret = Secret + +@typing.final +class String(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + @property + def pos(self) -> global___Position: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___String = String + +@typing.final +class StringValue(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + value: builtins.str + @property + def pos(self) -> global___Position: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + value: builtins.str = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos", "value", b"value"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___StringValue = StringValue + +@typing.final +class Subscription(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + COMMENTS_FIELD_NUMBER: builtins.int + NAME_FIELD_NUMBER: builtins.int + TOPIC_FIELD_NUMBER: builtins.int + name: builtins.str + @property + def pos(self) -> global___Position: ... + @property + def comments(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + @property + def topic(self) -> global___Ref: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + comments: collections.abc.Iterable[builtins.str] | None = ..., + name: builtins.str = ..., + topic: global___Ref | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos", "topic", b"topic"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "comments", b"comments", "name", b"name", "pos", b"pos", "topic", b"topic"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___Subscription = Subscription + +@typing.final +class Time(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + @property + def pos(self) -> global___Position: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___Time = Time + +@typing.final +class Topic(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + COMMENTS_FIELD_NUMBER: builtins.int + EXPORT_FIELD_NUMBER: builtins.int + NAME_FIELD_NUMBER: builtins.int + EVENT_FIELD_NUMBER: builtins.int + export: builtins.bool + name: builtins.str + @property + def pos(self) -> global___Position: ... + @property + def comments(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + @property + def event(self) -> global___Type: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + comments: collections.abc.Iterable[builtins.str] | None = ..., + export: builtins.bool = ..., + name: builtins.str = ..., + event: global___Type | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "event", b"event", "pos", b"pos"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "comments", b"comments", "event", b"event", "export", b"export", "name", b"name", "pos", b"pos"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___Topic = Topic + +@typing.final +class Type(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ANY_FIELD_NUMBER: builtins.int + ARRAY_FIELD_NUMBER: builtins.int + BOOL_FIELD_NUMBER: builtins.int + BYTES_FIELD_NUMBER: builtins.int + FLOAT_FIELD_NUMBER: builtins.int + INT_FIELD_NUMBER: builtins.int + MAP_FIELD_NUMBER: builtins.int + OPTIONAL_FIELD_NUMBER: builtins.int + REF_FIELD_NUMBER: builtins.int + STRING_FIELD_NUMBER: builtins.int + TIME_FIELD_NUMBER: builtins.int + UNIT_FIELD_NUMBER: builtins.int + @property + def any(self) -> global___Any: ... + @property + def array(self) -> global___Array: ... + @property + def bool(self) -> global___Bool: ... + @property + def bytes(self) -> global___Bytes: ... + @property + def float(self) -> global___Float: ... + @property + def int(self) -> global___Int: ... + @property + def map(self) -> global___Map: ... + @property + def optional(self) -> global___Optional: ... + @property + def ref(self) -> global___Ref: ... + @property + def string(self) -> global___String: ... + @property + def time(self) -> global___Time: ... + @property + def unit(self) -> global___Unit: ... + def __init__( + self, + *, + any: global___Any | None = ..., + array: global___Array | None = ..., + bool: global___Bool | None = ..., + bytes: global___Bytes | None = ..., + float: global___Float | None = ..., + int: global___Int | None = ..., + map: global___Map | None = ..., + optional: global___Optional | None = ..., + ref: global___Ref | None = ..., + string: global___String | None = ..., + time: global___Time | None = ..., + unit: global___Unit | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["any", b"any", "array", b"array", "bool", b"bool", "bytes", b"bytes", "float", b"float", "int", b"int", "map", b"map", "optional", b"optional", "ref", b"ref", "string", b"string", "time", b"time", "unit", b"unit", "value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["any", b"any", "array", b"array", "bool", b"bool", "bytes", b"bytes", "float", b"float", "int", b"int", "map", b"map", "optional", b"optional", "ref", b"ref", "string", b"string", "time", b"time", "unit", b"unit", "value", b"value"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["value", b"value"]) -> typing.Literal["any", "array", "bool", "bytes", "float", "int", "map", "optional", "ref", "string", "time", "unit"] | None: ... + +global___Type = Type + +@typing.final +class TypeAlias(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + COMMENTS_FIELD_NUMBER: builtins.int + EXPORT_FIELD_NUMBER: builtins.int + NAME_FIELD_NUMBER: builtins.int + TYPE_FIELD_NUMBER: builtins.int + METADATA_FIELD_NUMBER: builtins.int + export: builtins.bool + name: builtins.str + @property + def pos(self) -> global___Position: ... + @property + def comments(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + @property + def type(self) -> global___Type: ... + @property + def metadata(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Metadata]: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + comments: collections.abc.Iterable[builtins.str] | None = ..., + export: builtins.bool = ..., + name: builtins.str = ..., + type: global___Type | None = ..., + metadata: collections.abc.Iterable[global___Metadata] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos", "type", b"type"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "comments", b"comments", "export", b"export", "metadata", b"metadata", "name", b"name", "pos", b"pos", "type", b"type"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___TypeAlias = TypeAlias + +@typing.final +class TypeParameter(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + NAME_FIELD_NUMBER: builtins.int + name: builtins.str + @property + def pos(self) -> global___Position: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + name: builtins.str = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "name", b"name", "pos", b"pos"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___TypeParameter = TypeParameter + +@typing.final +class TypeValue(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + @property + def pos(self) -> global___Position: ... + @property + def value(self) -> global___Type: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + value: global___Type | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos", "value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos", "value", b"value"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___TypeValue = TypeValue + +@typing.final +class Unit(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + @property + def pos(self) -> global___Position: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "pos", b"pos"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + +global___Unit = Unit + +@typing.final +class Value(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + INT_VALUE_FIELD_NUMBER: builtins.int + STRING_VALUE_FIELD_NUMBER: builtins.int + TYPE_VALUE_FIELD_NUMBER: builtins.int + @property + def int_value(self) -> global___IntValue: ... + @property + def string_value(self) -> global___StringValue: ... + @property + def type_value(self) -> global___TypeValue: ... + def __init__( + self, + *, + int_value: global___IntValue | None = ..., + string_value: global___StringValue | None = ..., + type_value: global___TypeValue | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["int_value", b"int_value", "string_value", b"string_value", "type_value", b"type_value", "value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["int_value", b"int_value", "string_value", b"string_value", "type_value", b"type_value", "value", b"value"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["value", b"value"]) -> typing.Literal["int_value", "string_value", "type_value"] | None: ... + +global___Value = Value + +@typing.final +class Verb(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + COMMENTS_FIELD_NUMBER: builtins.int + EXPORT_FIELD_NUMBER: builtins.int + NAME_FIELD_NUMBER: builtins.int + REQUEST_FIELD_NUMBER: builtins.int + RESPONSE_FIELD_NUMBER: builtins.int + METADATA_FIELD_NUMBER: builtins.int + RUNTIME_FIELD_NUMBER: builtins.int + export: builtins.bool + name: builtins.str + @property + def pos(self) -> global___Position: ... + @property + def comments(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + @property + def request(self) -> global___Type: ... + @property + def response(self) -> global___Type: ... + @property + def metadata(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Metadata]: ... + @property + def runtime(self) -> global___VerbRuntime: ... + def __init__( + self, + *, + pos: global___Position | None = ..., + comments: collections.abc.Iterable[builtins.str] | None = ..., + export: builtins.bool = ..., + name: builtins.str = ..., + request: global___Type | None = ..., + response: global___Type | None = ..., + metadata: collections.abc.Iterable[global___Metadata] | None = ..., + runtime: global___VerbRuntime | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_pos", b"_pos", "_runtime", b"_runtime", "pos", b"pos", "request", b"request", "response", b"response", "runtime", b"runtime"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_pos", b"_pos", "_runtime", b"_runtime", "comments", b"comments", "export", b"export", "metadata", b"metadata", "name", b"name", "pos", b"pos", "request", b"request", "response", b"response", "runtime", b"runtime"]) -> None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_pos", b"_pos"]) -> typing.Literal["pos"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_runtime", b"_runtime"]) -> typing.Literal["runtime"] | None: ... + +global___Verb = Verb + +@typing.final +class VerbRuntime(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + CREATE_TIME_FIELD_NUMBER: builtins.int + START_TIME_FIELD_NUMBER: builtins.int + @property + def create_time(self) -> google.protobuf.timestamp_pb2.Timestamp: ... + @property + def start_time(self) -> google.protobuf.timestamp_pb2.Timestamp: ... + def __init__( + self, + *, + create_time: google.protobuf.timestamp_pb2.Timestamp | None = ..., + start_time: google.protobuf.timestamp_pb2.Timestamp | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["create_time", b"create_time", "start_time", b"start_time"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["create_time", b"create_time", "start_time", b"start_time"]) -> None: ... + +global___VerbRuntime = VerbRuntime diff --git a/python-runtime/ftl/src/ftl/verb/__init__.py b/python-runtime/ftl/src/ftl/verb/__init__.py index 403dec5838..d89220617e 100644 --- a/python-runtime/ftl/src/ftl/verb/__init__.py +++ b/python-runtime/ftl/src/ftl/verb/__init__.py @@ -1,5 +1,5 @@ -from .decorator import verb -from .extractor import VerbExtractor -from .model import Verb +from ftl.verb.decorator import verb +from ftl.verb.extractor import VerbExtractor +from ftl.verb.model import Verb __all__ = ["verb", "Verb", "VerbExtractor"] diff --git a/python-runtime/ftl/src/ftl/verb/decorator.py b/python-runtime/ftl/src/ftl/verb/decorator.py index 0245f7c2d7..bddcce4d1f 100644 --- a/python-runtime/ftl/src/ftl/verb/decorator.py +++ b/python-runtime/ftl/src/ftl/verb/decorator.py @@ -1,7 +1,7 @@ import functools from typing import Any, Callable, Optional, TypeVar, Union -from .model import Verb +from ftl.verb.model import Verb F = TypeVar("F", bound=Callable[..., Any]) diff --git a/python-runtime/ftl/src/ftl/verb/extractor.py b/python-runtime/ftl/src/ftl/verb/extractor.py index 157f775ef5..51e999fc6e 100644 --- a/python-runtime/ftl/src/ftl/verb/extractor.py +++ b/python-runtime/ftl/src/ftl/verb/extractor.py @@ -4,7 +4,7 @@ from ftl.extract import LocalExtractionContext, extract_type from ftl.protos.xyz.block.ftl.v1.schema import schema_pb2 as schemapb -from .model import Verb +from ftl.verb.model import Verb class VerbExtractor(ast.NodeVisitor): diff --git a/uv.lock b/uv.lock new file mode 100644 index 0000000000..4ba3e3888b --- /dev/null +++ b/uv.lock @@ -0,0 +1,53 @@ +version = 1 +requires-python = ">=3.12" + +[[package]] +name = "ftl" +version = "0.1.0" +source = { editable = "." } +dependencies = [ + { name = "mypy-protobuf" }, + { name = "protobuf" }, +] + +[package.metadata] +requires-dist = [ + { name = "mypy-protobuf", specifier = ">=3.6.0" }, + { name = "protobuf", specifier = ">=5.28.3" }, +] + +[[package]] +name = "mypy-protobuf" +version = "3.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf" }, + { name = "types-protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4d/6f/282d64d66bf48ce60e38a6560753f784e0f88ab245ac2fb5e93f701a36cd/mypy-protobuf-3.6.0.tar.gz", hash = "sha256:02f242eb3409f66889f2b1a3aa58356ec4d909cdd0f93115622e9e70366eca3c", size = 24445 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/73/d6b999782ae22f16971cc05378b3b33f6a89ede3b9619e8366aa23484bca/mypy_protobuf-3.6.0-py3-none-any.whl", hash = "sha256:56176e4d569070e7350ea620262478b49b7efceba4103d468448f1d21492fd6c", size = 16434 }, +] + +[[package]] +name = "protobuf" +version = "5.28.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/74/6e/e69eb906fddcb38f8530a12f4b410699972ab7ced4e21524ece9d546ac27/protobuf-5.28.3.tar.gz", hash = "sha256:64badbc49180a5e401f373f9ce7ab1d18b63f7dd4a9cdc43c92b9f0b481cef7b", size = 422479 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/c5/05163fad52d7c43e124a545f1372d18266db36036377ad29de4271134a6a/protobuf-5.28.3-cp310-abi3-win32.whl", hash = "sha256:0c4eec6f987338617072592b97943fdbe30d019c56126493111cf24344c1cc24", size = 419624 }, + { url = "https://files.pythonhosted.org/packages/9c/4c/4563ebe001ff30dca9d7ed12e471fa098d9759712980cde1fd03a3a44fb7/protobuf-5.28.3-cp310-abi3-win_amd64.whl", hash = "sha256:91fba8f445723fcf400fdbe9ca796b19d3b1242cd873907979b9ed71e4afe868", size = 431464 }, + { url = "https://files.pythonhosted.org/packages/1c/f2/baf397f3dd1d3e4af7e3f5a0382b868d25ac068eefe1ebde05132333436c/protobuf-5.28.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a3f6857551e53ce35e60b403b8a27b0295f7d6eb63d10484f12bc6879c715687", size = 414743 }, + { url = "https://files.pythonhosted.org/packages/85/50/cd61a358ba1601f40e7d38bcfba22e053f40ef2c50d55b55926aecc8fec7/protobuf-5.28.3-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:3fa2de6b8b29d12c61911505d893afe7320ce7ccba4df913e2971461fa36d584", size = 316511 }, + { url = "https://files.pythonhosted.org/packages/5d/ae/3257b09328c0b4e59535e497b0c7537d4954038bdd53a2f0d2f49d15a7c4/protobuf-5.28.3-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:712319fbdddb46f21abb66cd33cb9e491a5763b2febd8f228251add221981135", size = 316624 }, + { url = "https://files.pythonhosted.org/packages/ad/c3/2377c159e28ea89a91cf1ca223f827ae8deccb2c9c401e5ca233cd73002f/protobuf-5.28.3-py3-none-any.whl", hash = "sha256:cee1757663fa32a1ee673434fcf3bf24dd54763c79690201208bafec62f19eed", size = 169511 }, +] + +[[package]] +name = "types-protobuf" +version = "5.28.3.20241030" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c8/d4/d186e43cfb38ecefc91315ee9193d5722a88d7a3c8eac34a3ed603377407/types-protobuf-5.28.3.20241030.tar.gz", hash = "sha256:f7e6b45845d75393fb41c0b3ce82c46d775f9771fae2097414a1dbfe5b51a988", size = 54665 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/72/da/c261bb44799d3f4455fc881ca342c14f5b5b23878bef568a1cdcd324e62f/types_protobuf-5.28.3.20241030-py3-none-any.whl", hash = "sha256:f3dae16adf342d4fb5bb3673cabb22549a6252e5dd66fc52d8310b1a39c64ba9", size = 68781 }, +]