From 3d59a8ccb03c689f19bba6423543976bb50d5d77 Mon Sep 17 00:00:00 2001 From: Paul Osborne Date: Fri, 29 May 2026 15:36:12 -0500 Subject: [PATCH 1/2] Deduplicate componentize-py dependency Prior to this change, we had a verison of componentize-py that was mismatched from the version embedded in our own build tool. To avoid inconsistencies, we just expose the required bits of the `binding` subcommand we had been using with an entrypoint on our own CLI. End users will likely never need this, but it also is not harmful to ship either and unlikely to cause confusion. --- Makefile | 2 +- crates/fastly-compute-py/src/cli.rs | 18 ++++++ crates/fastly-compute-py/src/config.rs | 1 + crates/fastly-compute-py/src/lib.rs | 79 +++++++++++++++++++++----- examples/backend-requests/uv.lock | 1 - examples/bottle-app/uv.lock | 1 - examples/flask-app/uv.lock | 1 - examples/game-of-life/uv.lock | 1 - pyproject.toml | 1 - uv.lock | 15 ----- 10 files changed, 86 insertions(+), 34 deletions(-) diff --git a/Makefile b/Makefile index 99e1d11..e56e18c 100644 --- a/Makefile +++ b/Makefile @@ -48,7 +48,7 @@ all: $(COMPOSED_WASMS) $(STUBS_DIR): $(COMPUTE_WIT) rm -rf $(STUBS_DIR) - uv run --extra dev componentize-py -d wit --world-module wit_world -w $(TARGET_WORLD) bindings $(STUBS_DIR) + $(FASTLY_COMPUTE_PY) bindings -d wit -w $(TARGET_WORLD) --world-module wit_world $(STUBS_DIR) # Build our composed wasm using fastly-compute-py build $(BUILD_DIR)/%.composed.wasm: wit/viceroy.wit wit/deps/fastly/compute.wit fastly_compute/wsgi.py fastly_compute/runtime_patching/patches.py | $(BUILD_DIR) $(STUBS_DIR) diff --git a/crates/fastly-compute-py/src/cli.rs b/crates/fastly-compute-py/src/cli.rs index bf41327..ec0361c 100644 --- a/crates/fastly-compute-py/src/cli.rs +++ b/crates/fastly-compute-py/src/cli.rs @@ -36,4 +36,22 @@ pub enum Command { #[arg(short, long)] virtualenv: Option, }, + + /// Generate WIT binding stubs for use with type checkers and IDEs + Bindings { + /// WIT directory to generate bindings from (default: wit) + #[arg(short = 'd', long)] + wit_dir: Option, + + /// WIT world to target (e.g. fastly:compute/service@0.1.0) + #[arg(short = 'w', long)] + world: Option, + + /// Python module name for the generated bindings (default: wit_world) + #[arg(long)] + world_module: Option, + + /// Output directory for the generated stubs + output_dir: PathBuf, + }, } diff --git a/crates/fastly-compute-py/src/config.rs b/crates/fastly-compute-py/src/config.rs index 4414dac..d8cd037 100644 --- a/crates/fastly-compute-py/src/config.rs +++ b/crates/fastly-compute-py/src/config.rs @@ -74,6 +74,7 @@ impl ConfigBuilder { self.cli.output = output.clone(); self.cli.virtualenv = virtualenv.clone(); } + Command::Bindings { .. } => {} } self } diff --git a/crates/fastly-compute-py/src/lib.rs b/crates/fastly-compute-py/src/lib.rs index f4784e2..424e8b0 100644 --- a/crates/fastly-compute-py/src/lib.rs +++ b/crates/fastly-compute-py/src/lib.rs @@ -80,23 +80,40 @@ fn init_logging(verbose: u8) { pub fn run_main(cli: &Cli) -> Result<()> { init_logging(cli.verbose); - log::info!("Building Python application for Fastly Compute..."); + match &cli.command { + cli::Command::Build { .. } => { + log::info!("Building Python application for Fastly Compute..."); - let config = ConfigBuilder::from_pyproject() - .unwrap_or_else(|e| { - log::warn!("Failed to load pyproject.toml: {}", e); - ConfigBuilder::default() - }) - .with_command(&cli.command) - .resolve(); + let config = ConfigBuilder::from_pyproject() + .unwrap_or_else(|e| { + log::warn!("Failed to load pyproject.toml: {}", e); + ConfigBuilder::default() + }) + .with_command(&cli.command) + .resolve(); - log::debug!("Final resolved configuration: {config:?}"); - log::info!(" Entry point: {}", config.entry); - log::info!(" Output: {}", config.output.display()); + log::debug!("Final resolved configuration: {config:?}"); + log::info!(" Entry point: {}", config.entry); + log::info!(" Output: {}", config.output.display()); - build(config.output.clone(), config.entry, config.virtualenv)?; + build(config.output.clone(), config.entry, config.virtualenv)?; - log::info!("✓ Build complete: {}", config.output.display()); + log::info!("✓ Build complete: {}", config.output.display()); + } + cli::Command::Bindings { + wit_dir, + world, + world_module, + output_dir, + } => { + generate_bindings( + wit_dir.as_deref(), + world.as_deref(), + world_module.as_deref(), + output_dir, + )?; + } + } Ok(()) } @@ -119,6 +136,42 @@ fn _fastly_compute_py(_py: Python, m: &Bound<'_, PyModule>) -> PyResult<()> { Ok(()) } +pub fn generate_bindings( + wit_dir: Option<&Path>, + world: Option<&str>, + world_module: Option<&str>, + output_dir: &Path, +) -> Result<()> { + let wit_path = wit_dir.unwrap_or(Path::new("wit")); + let worlds: &[&str] = match world { + Some(w) => &[w], + None => &[], + }; + + log::info!("Generating WIT bindings..."); + log::debug!(" WIT path: {}", wit_path.display()); + log::debug!(" World: {:?}", world); + log::debug!(" World module: {:?}", world_module); + log::debug!(" Output dir: {}", output_dir.display()); + + componentize_py::BindingsGenerator { + wit_path: &[wit_path], + worlds, + features: &[], + all_features: false, + world_module, + output_dir, + import_interface_names: &HashMap::new(), + export_interface_names: &HashMap::new(), + full_names: false, + } + .generate()?; + + log::info!("✓ Bindings generated: {}", output_dir.display()); + + Ok(()) +} + pub fn build(output: PathBuf, entry_name: String, virtualenv: Option) -> Result<()> { let temp_dir = TempDir::new()?; let temp_path = temp_dir.path(); diff --git a/examples/backend-requests/uv.lock b/examples/backend-requests/uv.lock index 236eeba..9fbc7c3 100644 --- a/examples/backend-requests/uv.lock +++ b/examples/backend-requests/uv.lock @@ -35,7 +35,6 @@ source = { editable = "../../" } requires-dist = [ { name = "bottle", marker = "extra == 'examples'", specifier = ">=0.12.25" }, { name = "bottle", marker = "extra == 'test'", specifier = ">=0.12.25" }, - { name = "componentize-py", marker = "extra == 'dev'", specifier = ">=0.19.3,<0.20" }, { name = "flask", marker = "extra == 'examples'", specifier = ">=3.1.2,<4.0" }, { name = "pyrefly", marker = "extra == 'dev'", specifier = ">=0.49.0,<0.50" }, { name = "pytest", marker = "extra == 'test'", specifier = ">=8.4.0,<9.0.0" }, diff --git a/examples/bottle-app/uv.lock b/examples/bottle-app/uv.lock index a0d5055..2880ae6 100644 --- a/examples/bottle-app/uv.lock +++ b/examples/bottle-app/uv.lock @@ -35,7 +35,6 @@ source = { editable = "../../" } requires-dist = [ { name = "bottle", marker = "extra == 'examples'", specifier = ">=0.12.25" }, { name = "bottle", marker = "extra == 'test'", specifier = ">=0.12.25" }, - { name = "componentize-py", marker = "extra == 'dev'", specifier = ">=0.19.3,<0.20" }, { name = "flask", marker = "extra == 'examples'", specifier = ">=3.1.2,<4.0" }, { name = "pyrefly", marker = "extra == 'dev'", specifier = ">=0.49.0,<0.50" }, { name = "pytest", marker = "extra == 'test'", specifier = ">=8.4.0,<9.0.0" }, diff --git a/examples/flask-app/uv.lock b/examples/flask-app/uv.lock index 42a3009..86e398d 100644 --- a/examples/flask-app/uv.lock +++ b/examples/flask-app/uv.lock @@ -41,7 +41,6 @@ source = { editable = "../../" } requires-dist = [ { name = "bottle", marker = "extra == 'examples'", specifier = ">=0.12.25" }, { name = "bottle", marker = "extra == 'test'", specifier = ">=0.12.25" }, - { name = "componentize-py", marker = "extra == 'dev'", specifier = ">=0.19.3,<0.20" }, { name = "flask", marker = "extra == 'examples'", specifier = ">=3.1.2,<4.0" }, { name = "pyrefly", marker = "extra == 'dev'", specifier = ">=0.49.0,<0.50" }, { name = "pytest", marker = "extra == 'test'", specifier = ">=8.4.0,<9.0.0" }, diff --git a/examples/game-of-life/uv.lock b/examples/game-of-life/uv.lock index 1bd5d5a..b7fc1a8 100644 --- a/examples/game-of-life/uv.lock +++ b/examples/game-of-life/uv.lock @@ -41,7 +41,6 @@ source = { editable = "../../" } requires-dist = [ { name = "bottle", marker = "extra == 'examples'", specifier = ">=0.12.25" }, { name = "bottle", marker = "extra == 'test'", specifier = ">=0.12.25" }, - { name = "componentize-py", marker = "extra == 'dev'", specifier = ">=0.19.3,<0.20" }, { name = "flask", marker = "extra == 'examples'", specifier = ">=3.1.2,<4.0" }, { name = "pyrefly", marker = "extra == 'dev'", specifier = ">=0.49.0,<0.50" }, { name = "pytest", marker = "extra == 'test'", specifier = ">=8.4.0,<9.0.0" }, diff --git a/pyproject.toml b/pyproject.toml index fb9ca74..b52ec60 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,7 +15,6 @@ test = [ "syrupy (==5.0.0)", ] dev = [ - "componentize-py (>=0.19.3,<0.20)", "ruff (>=0.12.11,<0.13.0)", "pyrefly (>=0.49.0,<0.50)", ] diff --git a/uv.lock b/uv.lock index 24204bf..f764ffc 100644 --- a/uv.lock +++ b/uv.lock @@ -123,19 +123,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, ] -[[package]] -name = "componentize-py" -version = "0.19.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/19/fd/8b04b29f7321a2cb9a290be015b45f6c776838b5b3abfa1dbc677910aee8/componentize_py-0.19.3.tar.gz", hash = "sha256:09a3cf44dd4d85340e127467cf211817fb339e8673b2eb113527663635452ee2", size = 172756, upload-time = "2025-11-24T21:18:13.345Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b8/87/cc02b37ceeacf4ecbf1325e01d45484bbc6b69ffb17f723f74cb57253eec/componentize_py-0.19.3-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:0cd9ebe222947da39425c80293c9ee76e8657e6faf7a6dea8d7f98c8a4e5aa64", size = 23592460, upload-time = "2025-11-24T21:17:42.849Z" }, - { url = "https://files.pythonhosted.org/packages/3d/a6/d4d4d6615b2bf312f169387e91414d5f24dbae8b8ffe1a1a38fd33b787b7/componentize_py-0.19.3-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:c41e26785767ef5d2235216a61bae9263c85c6bfe94149484f84c2441c228d9e", size = 22839205, upload-time = "2025-11-24T21:17:50.42Z" }, - { url = "https://files.pythonhosted.org/packages/95/cc/a3d94927fb510320ec07773eb3fb50e5ce4a6fe9bc08c4af9c8a34d849d6/componentize_py-0.19.3-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:3c739ac68f7308dfeda4a56b6abfbaa786ef5d1752365536869b5a02de3fcc42", size = 23942495, upload-time = "2025-11-24T21:17:57.451Z" }, - { url = "https://files.pythonhosted.org/packages/42/34/94be4922fa52986138075f6ca98e4a775112b57145906a9dc34b3d8fdb06/componentize_py-0.19.3-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:38090c8ad642fbf754bcab9d9940ae73a9b4ca3f226eadfe48e7e9158cdf20d5", size = 24337701, upload-time = "2025-11-24T21:18:04.408Z" }, - { url = "https://files.pythonhosted.org/packages/9b/9d/53c8548a6a8f903e63a70b113cf316520320f7cc9dd2ba102c1af0bb36e1/componentize_py-0.19.3-cp39-abi3-win_amd64.whl", hash = "sha256:f8ddd953c674460fb988cd5d8d2f72045c54df1e76880f7515451eb81ccd320f", size = 22308097, upload-time = "2025-11-24T21:18:11.276Z" }, -] - [[package]] name = "fastly-compute" version = "0.1.0" @@ -143,7 +130,6 @@ source = { editable = "." } [package.optional-dependencies] dev = [ - { name = "componentize-py" }, { name = "pyrefly" }, { name = "ruff" }, ] @@ -169,7 +155,6 @@ dev = [ requires-dist = [ { name = "bottle", marker = "extra == 'examples'", specifier = ">=0.12.25" }, { name = "bottle", marker = "extra == 'test'", specifier = ">=0.12.25" }, - { name = "componentize-py", marker = "extra == 'dev'", specifier = ">=0.19.3,<0.20" }, { name = "flask", marker = "extra == 'examples'", specifier = ">=3.1.2,<4.0" }, { name = "pyrefly", marker = "extra == 'dev'", specifier = ">=0.49.0,<0.50" }, { name = "pytest", marker = "extra == 'test'", specifier = ">=8.4.0,<9.0.0" }, From 21f59cc355d4276b2d7a39a53694ec35c2cd7115 Mon Sep 17 00:00:00 2001 From: Paul Osborne Date: Fri, 29 May 2026 15:47:54 -0500 Subject: [PATCH 2/2] Stub updates from componentize-py update (for bindings) These now match the implementation that was actually being provided at runtime (no functional differences). --- fastly_compute/testing/stubs/poll_loop.py | 5 +- .../stubs/wit_world/exports/__init__.py | 4 +- .../testing/stubs/wit_world/imports/acl.py | 6 +- .../stubs/wit_world/imports/backend.py | 36 +++++------ .../testing/stubs/wit_world/imports/cache.py | 60 +++++++++---------- .../stubs/wit_world/imports/config_store.py | 4 +- .../wit_world/imports/device_detection.py | 2 +- .../stubs/wit_world/imports/dictionary.py | 4 +- .../testing/stubs/wit_world/imports/erl.py | 16 ++--- .../testing/stubs/wit_world/imports/geo.py | 2 +- .../stubs/wit_world/imports/http_body.py | 20 +++---- .../stubs/wit_world/imports/http_cache.py | 56 ++++++++--------- .../wit_world/imports/http_downstream.py | 38 ++++++------ .../stubs/wit_world/imports/http_req.py | 58 +++++++++--------- .../stubs/wit_world/imports/http_resp.py | 36 +++++------ .../wit_world/imports/image_optimizer.py | 4 +- .../stubs/wit_world/imports/kv_store.py | 28 ++++----- .../testing/stubs/wit_world/imports/log.py | 2 +- .../testing/stubs/wit_world/imports/purge.py | 4 +- .../stubs/wit_world/imports/secret_store.py | 8 +-- .../stubs/wit_world/imports/security.py | 4 +- .../stubs/wit_world/imports/shielding.py | 4 +- .../stubs/wit_world/imports/streams.py | 26 ++++---- 23 files changed, 213 insertions(+), 214 deletions(-) diff --git a/fastly_compute/testing/stubs/poll_loop.py b/fastly_compute/testing/stubs/poll_loop.py index c067a0f..504c958 100644 --- a/fastly_compute/testing/stubs/poll_loop.py +++ b/fastly_compute/testing/stubs/poll_loop.py @@ -2,9 +2,8 @@ This also includes helper classes and functions for working with `wasi:http`. -As of WASI Preview 2, there is not yet a standard for first-class, composable -asynchronous functions and streams. We expect that little or none of this -boilerplate will be needed once those features arrive in Preview 3. +This is only useful for `wasi:http@0.2.x`; `wasi:http@0.3.x` uses a different +mechanism to model concurrency. """ import asyncio diff --git a/fastly_compute/testing/stubs/wit_world/exports/__init__.py b/fastly_compute/testing/stubs/wit_world/exports/__init__.py index 981f1a2..47a00e5 100644 --- a/fastly_compute/testing/stubs/wit_world/exports/__init__.py +++ b/fastly_compute/testing/stubs/wit_world/exports/__init__.py @@ -8,8 +8,8 @@ import weakref from componentize_py_types import Result, Ok, Err, Some -from ..imports import http_req from ..imports import async_io +from ..imports import http_req class HttpIncoming(Protocol): @@ -26,7 +26,7 @@ def handle(self, request: http_req.Request, body: async_io.Pollable) -> None: stream the response body after the response has been initiated, use `send-downstream-streaming`. - Raises: `wit_world.types.Err(None)` + Raises: `componentize_py_types.Err(None)` """ raise NotImplementedError diff --git a/fastly_compute/testing/stubs/wit_world/imports/acl.py b/fastly_compute/testing/stubs/wit_world/imports/acl.py index 65f8dfd..abc28d6 100644 --- a/fastly_compute/testing/stubs/wit_world/imports/acl.py +++ b/fastly_compute/testing/stubs/wit_world/imports/acl.py @@ -13,8 +13,8 @@ import weakref from componentize_py_types import Result, Ok, Err, Some -from ..imports import async_io from ..imports import types +from ..imports import async_io class AclError(Enum): """ @@ -33,7 +33,7 @@ def open(cls, name: str) -> Self: """ Opens an ACL linked to the current service with the given link name. - Raises: `wit_world.types.Err(wit_world.imports.types.OpenError)` + Raises: `componentize_py_types.Err(wit_world.imports.types.OpenError)` """ raise NotImplementedError def lookup(self, ip_addr: types.IpAddress) -> Optional[async_io.Pollable]: @@ -45,7 +45,7 @@ def lookup(self, ip_addr: types.IpAddress) -> Optional[async_io.Pollable]: If no matches are found, then `ok(none)` is returned. This corresponds to an HTTP error code of 204, “No Content”. - Raises: `wit_world.types.Err(wit_world.imports.acl.AclError)` + Raises: `componentize_py_types.Err(wit_world.imports.acl.AclError)` """ raise NotImplementedError def __enter__(self) -> Self: diff --git a/fastly_compute/testing/stubs/wit_world/imports/backend.py b/fastly_compute/testing/stubs/wit_world/imports/backend.py index c8cd26c..ee35369 100644 --- a/fastly_compute/testing/stubs/wit_world/imports/backend.py +++ b/fastly_compute/testing/stubs/wit_world/imports/backend.py @@ -268,7 +268,7 @@ def open(cls, name: str) -> Self: """ Attempts to open the named static backend. - Raises: `wit_world.types.Err(wit_world.imports.types.OpenError)` + Raises: `componentize_py_types.Err(wit_world.imports.types.OpenError)` """ raise NotImplementedError def get_name(self) -> str: @@ -283,21 +283,21 @@ def is_healthy(self) -> BackendHealth: For backends without a configured healthcheck, this will always return `backend-health.unknown`. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def is_dynamic(self) -> bool: """ Returns `true` if the backend is a “dynamic” backend. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_host(self, max_len: int) -> str: """ Gets the host of this backend. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_override_host(self, max_len: int) -> Optional[bytes]: @@ -309,21 +309,21 @@ def get_override_host(self, max_len: int) -> Optional[bytes]: [the Fastly documentation on override hosts]: https://docs.fastly.com/en/guides/specifying-an-override-host - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_port(self) -> int: """ Gets the remote TCP port of the backend connection for the request. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_connect_timeout_ms(self) -> int: """ Gets the connection timeout of the backend. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_first_byte_timeout_ms(self) -> int: @@ -332,7 +332,7 @@ def get_first_byte_timeout_ms(self) -> int: This timeout applies between the time of connection and the time we get the first byte back. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_between_bytes_timeout_ms(self) -> int: @@ -341,28 +341,28 @@ def get_between_bytes_timeout_ms(self) -> int: This timeout applies between any two bytes we receive across the wire. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def is_tls(self) -> bool: """ Returns `true` if the backend is configured to use TLS. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_tls_min_version(self) -> Optional[int]: """ Gets the minimum TLS version this backend will use. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_tls_max_version(self) -> Optional[int]: """ Gets the maximum TLS version this backend will use. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_http_keepalive_time(self) -> int: @@ -370,21 +370,21 @@ def get_http_keepalive_time(self) -> int: Returns the time for this backend to hold onto an idle HTTP keepalive connection after it was last used before closing it. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_tcp_keepalive_enable(self) -> bool: """ Returns `true` if TCP keepalives have been enabled for this backend. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_tcp_keepalive_interval(self) -> int: """ Returns the time to wait in between sending each TCP keepalive probe to this backend. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_tcp_keepalive_probes(self) -> int: @@ -392,7 +392,7 @@ def get_tcp_keepalive_probes(self) -> int: Returns the time to wait after the last data was sent before starting to send TCP keepalive probes to this backend. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_tcp_keepalive_time(self) -> int: @@ -400,7 +400,7 @@ def get_tcp_keepalive_time(self) -> int: Returns the time to wait after the last data was sent before starting to send TCP keepalive probes to this backend. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def __enter__(self) -> Self: @@ -439,6 +439,6 @@ def register_dynamic_backend(prefix: str, target: str, options: DynamicBackendOp backends with a service that has not had dynamic backends enabled, or dynamic backends have been administratively prohibited for the node in response to an ongoing incident. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError diff --git a/fastly_compute/testing/stubs/wit_world/imports/cache.py b/fastly_compute/testing/stubs/wit_world/imports/cache.py index 91bdf96..4a84d69 100644 --- a/fastly_compute/testing/stubs/wit_world/imports/cache.py +++ b/fastly_compute/testing/stubs/wit_world/imports/cache.py @@ -132,7 +132,7 @@ def lookup(cls, key: bytes, options: LookupOptions) -> Self: Returns a result without waiting for any request collapsing that may be ongoing. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError @classmethod @@ -143,7 +143,7 @@ def transaction_lookup(cls, key: bytes, options: LookupOptions) -> Self: This operation always participates in request collapsing and may return stale objects. To bypass request collapsing, use `entry.lookup` or `insert` instead. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError @classmethod @@ -155,7 +155,7 @@ def transaction_lookup_async(cls, key: bytes, options: LookupOptions) -> async_i This operation always participates in request collapsing and may return stale objects. To bypass request collapsing, use `entry.lookup` or `insert` instead. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def transaction_insert(self, options: WriteOptions) -> async_io.Pollable: @@ -167,7 +167,7 @@ def transaction_insert(self, options: WriteOptions) -> async_io.Pollable: The returned handle is to a streaming body that is used for writing the object into the cache. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def transaction_insert_and_stream_back(self, options: WriteOptions) -> Tuple[async_io.Pollable, Self]: @@ -183,7 +183,7 @@ def transaction_insert_and_stream_back(self, options: WriteOptions) -> Tuple[asy the cache. The returned cache handle provides a separate transaction for reading out the newly cached object to send elsewhere. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def transaction_update(self, options: WriteOptions) -> None: @@ -194,7 +194,7 @@ def transaction_update(self, options: WriteOptions) -> None: - `found` - `must-insert-or-update` - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_state(self) -> LookupState: @@ -205,7 +205,7 @@ def get_state(self) -> LookupState: Some SDKs were released that checked only FOUND to infer "usable"; we preserve the equivalence for backwards compatibility. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_user_metadata(self, max_len: int) -> Optional[bytes]: @@ -213,7 +213,7 @@ def get_user_metadata(self, max_len: int) -> Optional[bytes]: Gets the user metadata of the found object, returning `ok(none)` if no object was found. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_body(self, options: GetBodyOptions) -> async_io.Pollable: @@ -228,7 +228,7 @@ def get_body(self, options: GetBodyOptions) -> async_io.Pollable: the body of objects that are past the stale-while-revalidate period will not be available, even when other metadata is. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_length(self) -> Optional[int]: @@ -236,7 +236,7 @@ def get_length(self) -> Optional[int]: Gets the content length of the found object, returning `ok(none)` if there was no found object, or no content length was provided. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_max_age_ns(self) -> Optional[int]: @@ -244,7 +244,7 @@ def get_max_age_ns(self) -> Optional[int]: Gets the configured max age of the found object, returning `ok(none)` if there was no found object. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_stale_while_revalidate_ns(self) -> Optional[int]: @@ -252,7 +252,7 @@ def get_stale_while_revalidate_ns(self) -> Optional[int]: Gets the configured stale-while-revalidate period of the found object, returning `ok(none)` if there was no found object. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_age_ns(self) -> Optional[int]: @@ -260,7 +260,7 @@ def get_age_ns(self) -> Optional[int]: Gets the age of the found object, returning `ok(none)` if there was no found object. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_hits(self) -> Optional[int]: @@ -268,7 +268,7 @@ def get_hits(self) -> Optional[int]: Gets the number of cache hits for the found object, returning `ok(none)` if there was no found object. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def transaction_cancel(self) -> None: @@ -278,7 +278,7 @@ def transaction_cancel(self) -> None: Useful if there is an error before streaming is possible, for example if a backend is unreachable. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def __enter__(self) -> Self: @@ -338,7 +338,7 @@ def replace(cls, key: bytes, options: ReplaceOptions) -> Self: This operation always participates in request collapsing and may return stale objects. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_age_ns(self) -> Optional[int]: @@ -346,7 +346,7 @@ def get_age_ns(self) -> Optional[int]: Gets the age of the existing object during replace, returning `ok(none)` if there was no object. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_body(self, options: GetBodyOptions) -> Optional[async_io.Pollable]: @@ -357,7 +357,7 @@ def get_body(self, options: GetBodyOptions) -> Optional[async_io.Pollable]: The returned `body` must be closed before calling this function again on the same `replace-entry`. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_hits(self) -> Optional[int]: @@ -365,7 +365,7 @@ def get_hits(self) -> Optional[int]: Gets the number of cache hits for the existing object during replace, returning `ok(none)` if there was no object. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_length(self) -> Optional[int]: @@ -374,7 +374,7 @@ def get_length(self) -> Optional[int]: returning `ok(none)` if there was no object, or no content length was provided. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_max_age_ns(self) -> Optional[int]: @@ -382,7 +382,7 @@ def get_max_age_ns(self) -> Optional[int]: Gets the configured max age of the existing object during replace, returning `ok(none)` if there was no object. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_stale_while_revalidate_ns(self) -> Optional[int]: @@ -391,7 +391,7 @@ def get_stale_while_revalidate_ns(self) -> Optional[int]: object during replace, returning `ok(none)` if there was no object. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_state(self) -> Optional[LookupState]: @@ -403,7 +403,7 @@ def get_state(self) -> Optional[LookupState]: Some SDKs were released that checked only FOUND to infer "usable"; we preserve the equivalence for backwards compatibility. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_user_metadata(self, max_len: int) -> Optional[bytes]: @@ -411,7 +411,7 @@ def get_user_metadata(self, max_len: int) -> Optional[bytes]: Gets the user metadata of the existing object during replace, returning `ok(none)` if there was no object. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def __enter__(self) -> Self: @@ -433,7 +433,7 @@ def insert(key: bytes, options: WriteOptions) -> async_io.Pollable: The returned handle is to a streaming body that is used for writing the object into the cache. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def await_entry(handle: async_io.Pollable) -> Entry: @@ -441,14 +441,14 @@ def await_entry(handle: async_io.Pollable) -> Entry: Continues the lookup transaction from which the given busy handle was returned, waiting for the leader transaction if request collapsed, and returns a cache handle. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def close_pending_entry(handle: async_io.Pollable) -> None: """ Closes an interaction with the cache that has not yet finished request collapsing. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def close_entry(handle: Entry) -> None: @@ -459,7 +459,7 @@ def close_entry(handle: Entry) -> None: update has been performed), closing the handle cancels any request collapsing, potentially choosing a new waiter to perform the insertion/update. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def replace_insert(handle: ReplaceEntry, options: WriteOptions) -> async_io.Pollable: @@ -469,7 +469,7 @@ def replace_insert(handle: ReplaceEntry, options: WriteOptions) -> async_io.Poll The returned handle is to a streaming body that is used for writing the object into the cache. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def close_replace_entry(handle: ReplaceEntry) -> None: @@ -480,6 +480,6 @@ def close_replace_entry(handle: ReplaceEntry) -> None: update has been performed), closing the handle cancels any request collapsing, potentially choosing a new waiter to perform the insertion/update. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError diff --git a/fastly_compute/testing/stubs/wit_world/imports/config_store.py b/fastly_compute/testing/stubs/wit_world/imports/config_store.py index 3d0ca2f..932f585 100644 --- a/fastly_compute/testing/stubs/wit_world/imports/config_store.py +++ b/fastly_compute/testing/stubs/wit_world/imports/config_store.py @@ -27,14 +27,14 @@ def open(cls, name: str) -> Self: Names are case sensitive. - Raises: `wit_world.types.Err(wit_world.imports.types.OpenError)` + Raises: `componentize_py_types.Err(wit_world.imports.types.OpenError)` """ raise NotImplementedError def get(self, key: str, max_len: int) -> Optional[str]: """ Fetches a value from the config store, returning `ok(none)` if it doesn't exist. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def __enter__(self) -> Self: diff --git a/fastly_compute/testing/stubs/wit_world/imports/device_detection.py b/fastly_compute/testing/stubs/wit_world/imports/device_detection.py index c9c4f38..33ac84b 100644 --- a/fastly_compute/testing/stubs/wit_world/imports/device_detection.py +++ b/fastly_compute/testing/stubs/wit_world/imports/device_detection.py @@ -23,6 +23,6 @@ def lookup(user_agent: str, max_len: int) -> Optional[str]: [here]: https://www.fastly.com/documentation/reference/vcl/variables/client-request/client-identified/ - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError diff --git a/fastly_compute/testing/stubs/wit_world/imports/dictionary.py b/fastly_compute/testing/stubs/wit_world/imports/dictionary.py index 6c0ae2b..ae668f1 100644 --- a/fastly_compute/testing/stubs/wit_world/imports/dictionary.py +++ b/fastly_compute/testing/stubs/wit_world/imports/dictionary.py @@ -27,7 +27,7 @@ def open(cls, name: str) -> Self: Names are case sensitive. - Raises: `wit_world.types.Err(wit_world.imports.types.OpenError)` + Raises: `componentize_py_types.Err(wit_world.imports.types.OpenError)` """ raise NotImplementedError def lookup(self, key: str, max_len: int) -> Optional[str]: @@ -37,7 +37,7 @@ def lookup(self, key: str, max_len: int) -> Optional[str]: If the lookup is successful, this function returns `ok(some(s))` containing the found string `s`, or `ok(none)` if no entry with the given key was found. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def __enter__(self) -> Self: diff --git a/fastly_compute/testing/stubs/wit_world/imports/erl.py b/fastly_compute/testing/stubs/wit_world/imports/erl.py index 1c957d6..1dbcfa4 100644 --- a/fastly_compute/testing/stubs/wit_world/imports/erl.py +++ b/fastly_compute/testing/stubs/wit_world/imports/erl.py @@ -26,7 +26,7 @@ def open(cls, name: str) -> Self: """ Opens a `penalty-box` identified by the given name. - Raises: `wit_world.types.Err(wit_world.imports.types.OpenError)` + Raises: `componentize_py_types.Err(wit_world.imports.types.OpenError)` """ raise NotImplementedError def get_name(self) -> str: @@ -40,14 +40,14 @@ def add(self, entry: str, ttl: int) -> None: Valid ttl span is 1m to 1h and TTL value is truncated to the nearest minute. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def has(self, entry: str) -> bool: """ Checks if `entry` is in the penaltybox. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def __enter__(self) -> Self: @@ -72,7 +72,7 @@ def open(cls, name: str) -> Self: """ Opens a `rate-counter` with the given name. - Raises: `wit_world.types.Err(wit_world.imports.types.OpenError)` + Raises: `componentize_py_types.Err(wit_world.imports.types.OpenError)` """ raise NotImplementedError def get_name(self) -> str: @@ -90,28 +90,28 @@ def check_rate(self, entry: str, delta: int, window: int, limit: int, penalty_bo Returns `true` if the client is penalized (i.e. should be limited), or `false` if not. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def increment(self, entry: str, delta: int) -> None: """ Increments an entry in the ratecounter by `delta`. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def lookup_rate(self, entry: str, window: int) -> int: """ Looks up the current rate for entry in the ratecounter for a window. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def lookup_count(self, entry: str, duration: int) -> int: """ Looks up the current count for entry in the ratecounter for duration. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def __enter__(self) -> Self: diff --git a/fastly_compute/testing/stubs/wit_world/imports/geo.py b/fastly_compute/testing/stubs/wit_world/imports/geo.py index 9660d34..6a58de1 100644 --- a/fastly_compute/testing/stubs/wit_world/imports/geo.py +++ b/fastly_compute/testing/stubs/wit_world/imports/geo.py @@ -25,6 +25,6 @@ def lookup(ip_addr: types.IpAddress, max_len: int) -> str: [here]: https://www.fastly.com/documentation/reference/vcl/variables/geolocation/ - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError diff --git a/fastly_compute/testing/stubs/wit_world/imports/http_body.py b/fastly_compute/testing/stubs/wit_world/imports/http_body.py index c89fba5..050d1db 100644 --- a/fastly_compute/testing/stubs/wit_world/imports/http_body.py +++ b/fastly_compute/testing/stubs/wit_world/imports/http_body.py @@ -37,21 +37,21 @@ def new() -> async_io.Pollable: """ Creates a new empty body that can be used for outgoing requests and responses. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def append(dest: async_io.Pollable, src: async_io.Pollable) -> None: """ Appends the contents of the body `src` to the body `dest`. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def read(body: async_io.Pollable, chunk_size: int) -> bytes: """ Reads from a body. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def write(body: async_io.Pollable, buf: bytes) -> int: @@ -61,7 +61,7 @@ def write(body: async_io.Pollable, buf: bytes) -> int: This function may write fewer bytes than requested; on success, the number of bytes actually written is returned. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def write_front(body: async_io.Pollable, buf: bytes) -> None: @@ -70,7 +70,7 @@ def write_front(body: async_io.Pollable, buf: bytes) -> None: On success, this function always writes all the bytes of `buf`. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def close(body: async_io.Pollable) -> None: @@ -85,7 +85,7 @@ def close(body: async_io.Pollable) -> None: If a handle is dropped without calling `close`, it's an *unsuccessful* stream termination. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_known_length(body: async_io.Pollable) -> Optional[int]: @@ -107,7 +107,7 @@ def append_trailer(body: async_io.Pollable, name: str, value: bytes) -> None: """ Adds a body trailing header with given value. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_trailer_names(body: async_io.Pollable, max_len: int, cursor: int) -> Tuple[str, Optional[int]]: @@ -120,7 +120,7 @@ def get_trailer_names(body: async_io.Pollable, max_len: int, cursor: int) -> Tup or `none` if all the remaining names fit. If `max-len` is too small to fit any name, an `error.buffer-len` error is returned, providing a recommended buffer size. - Raises: `wit_world.types.Err(wit_world.imports.http_body.TrailerError)` + Raises: `componentize_py_types.Err(wit_world.imports.http_body.TrailerError)` """ raise NotImplementedError def get_trailer_value(body: async_io.Pollable, name: str, max_len: int) -> Optional[bytes]: @@ -135,7 +135,7 @@ def get_trailer_value(body: async_io.Pollable, name: str, max_len: int) -> Optio small to fit the value, an `error.buffer-len` error is returned, providing a recommended buffer size. - Raises: `wit_world.types.Err(wit_world.imports.http_body.TrailerError)` + Raises: `componentize_py_types.Err(wit_world.imports.http_body.TrailerError)` """ raise NotImplementedError def get_trailer_values(body: async_io.Pollable, name: str, max_len: int, cursor: int) -> Tuple[bytes, Optional[int]]: @@ -150,6 +150,6 @@ def get_trailer_values(body: async_io.Pollable, name: str, max_len: int, cursor: fit, or `none` if all the remaining values fit. If `max-len` is too small to fit any value, an `error.buffer-len` error is returned, providing a recommended buffer size. - Raises: `wit_world.types.Err(wit_world.imports.http_body.TrailerError)` + Raises: `componentize_py_types.Err(wit_world.imports.http_body.TrailerError)` """ raise NotImplementedError diff --git a/fastly_compute/testing/stubs/wit_world/imports/http_cache.py b/fastly_compute/testing/stubs/wit_world/imports/http_cache.py index d535aff..d0d6b82 100644 --- a/fastly_compute/testing/stubs/wit_world/imports/http_cache.py +++ b/fastly_compute/testing/stubs/wit_world/imports/http_cache.py @@ -33,11 +33,11 @@ import weakref from componentize_py_types import Result, Ok, Err, Some -from ..imports import cache -from ..imports import http_req from ..imports import backend -from ..imports import http_resp from ..imports import async_io +from ..imports import http_resp +from ..imports import http_req +from ..imports import cache class ExtraLookupOptions: """ @@ -113,7 +113,7 @@ def get_vary_rule(self, max_len: int) -> str: """ Returns the suggested value for the `write-options.vary-rule` field. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_initial_age_ns(self) -> int: @@ -130,7 +130,7 @@ def get_surrogate_keys(self, max_len: int) -> str: """ Returns the suggested value for the `write-options.surrogate-keys` field. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_length(self) -> Optional[int]: @@ -179,7 +179,7 @@ def transaction_lookup(cls, req_handle: http_req.Request, options: LookupOptions The request is not consumed. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def transaction_insert(self, resp_handle: http_resp.Response, options: WriteOptions) -> async_io.Pollable: @@ -191,7 +191,7 @@ def transaction_insert(self, resp_handle: http_resp.Response, options: WriteOpti The response is consumed. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def transaction_insert_and_stream_back(self, resp_handle: http_resp.Response, options: WriteOptions) -> Tuple[async_io.Pollable, Self]: @@ -205,7 +205,7 @@ def transaction_insert_and_stream_back(self, resp_handle: http_resp.Response, op The response is consumed. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def transaction_update(self, resp_handle: http_resp.Response, options: WriteOptions) -> None: @@ -219,7 +219,7 @@ def transaction_update(self, resp_handle: http_resp.Response, options: WriteOpti The response is consumed. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def transaction_update_and_return_fresh(self, resp_handle: http_resp.Response, options: WriteOptions) -> Self: @@ -234,7 +234,7 @@ def transaction_update_and_return_fresh(self, resp_handle: http_resp.Response, o The response is consumed. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def transaction_record_not_cacheable(self, options: WriteOptions) -> None: @@ -246,7 +246,7 @@ def transaction_record_not_cacheable(self, options: WriteOptions) -> None: Only the max age and, optionally, the vary rule are read from the `options` for this function. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_suggested_backend_request(self) -> http_req.Request: @@ -257,7 +257,7 @@ def get_suggested_backend_request(self) -> http_req.Request: looked-up request is ranged, the suggested request will be unranged in order to try caching the entire response. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_suggested_write_options(self, response: http_resp.Response) -> SuggestedWriteOptions: @@ -266,7 +266,7 @@ def get_suggested_write_options(self, response: http_resp.Response) -> Suggested The response is not consumed. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def prepare_response_for_storage(self, response: http_resp.Response) -> Tuple[StorageAction, http_resp.Response]: @@ -279,7 +279,7 @@ def prepare_response_for_storage(self, response: http_resp.Response) -> Tuple[St In addition to the updated response, this function returns the recommended storage action. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_found_response(self, transform_for_client: int) -> Optional[Tuple[http_resp.Response, async_io.Pollable]]: @@ -291,7 +291,7 @@ def get_found_response(self, transform_for_client: int) -> Optional[Tuple[http_r request. For example, a response retrieved for a range request may be transformed into a `206 Partial Content` response with an appropriate `content-range` header. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_state(self) -> cache.LookupState: @@ -301,7 +301,7 @@ def get_state(self) -> cache.LookupState: Primarily useful after performing the lookup to determine what subsequent operations are possible and whether any insertion or update obligations exist. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_length(self) -> Optional[int]: @@ -309,7 +309,7 @@ def get_length(self) -> Optional[int]: Gets the length of the found response, returning `ok(none)` if there was no response found or no length was provided. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_max_age_ns(self) -> Optional[int]: @@ -317,7 +317,7 @@ def get_max_age_ns(self) -> Optional[int]: Gets the configured max age of the found response in nanoseconds, returning `ok(none)` if there was no response found. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_stale_while_revalidate_ns(self) -> Optional[int]: @@ -325,7 +325,7 @@ def get_stale_while_revalidate_ns(self) -> Optional[int]: Gets the configured stale-while-revalidate period of the found response in nanoseconds, returning `ok(none)` if there was no response found. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_age_ns(self) -> Optional[int]: @@ -333,7 +333,7 @@ def get_age_ns(self) -> Optional[int]: Gets the age of the found response in nanoseconds, returning `ok(none)` if there was no response found. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_hits(self) -> Optional[int]: @@ -344,7 +344,7 @@ def get_hits(self) -> Optional[int]: This figure only reflects hits for a stored response in a particular cache server or cluster, not the entire Fastly network. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_sensitive_data(self) -> Optional[bool]: @@ -352,7 +352,7 @@ def get_sensitive_data(self) -> Optional[bool]: Gets whether a found response is marked as containing sensitive data, returning `ok(none)` if there was no response found. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_surrogate_keys(self, max_len: int) -> Optional[str]: @@ -365,7 +365,7 @@ def get_surrogate_keys(self, max_len: int) -> Optional[str]: If the full list requires more than `max-len` bytes, an `error.buffer-len` error is returned containing the required size. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_vary_rule(self, max_len: int) -> Optional[str]: @@ -378,7 +378,7 @@ def get_vary_rule(self, max_len: int) -> Optional[str]: If the full list requires more than `max-len` bytes, an `error.buffer-len` error is returned containing the required size. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def transaction_abandon(self) -> None: @@ -394,7 +394,7 @@ def transaction_abandon(self) -> None: requests. Consider using `transaction-record-not-cacheable` to make lookups for this request bypass the cache. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def __enter__(self) -> Self: @@ -420,7 +420,7 @@ def is_request_cacheable(request: http_req.Request) -> bool: [RFC 9111]: https://www.rfc-editor.org/rfc/rfc9111.html - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_suggested_cache_key(request: http_req.Request, max_len: int) -> bytes: @@ -432,7 +432,7 @@ def get_suggested_cache_key(request: http_req.Request, max_len: int) -> bytes: At the moment, HTTP cache keys must always be 32 bytes. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def close_entry(handle: Entry) -> None: @@ -443,6 +443,6 @@ def close_entry(handle: Entry) -> None: has been performed), closing the handle cancels any request collapsing, potentially choosing a new waiter to perform the insertion/update. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError diff --git a/fastly_compute/testing/stubs/wit_world/imports/http_downstream.py b/fastly_compute/testing/stubs/wit_world/imports/http_downstream.py index 4d61c54..67621f0 100644 --- a/fastly_compute/testing/stubs/wit_world/imports/http_downstream.py +++ b/fastly_compute/testing/stubs/wit_world/imports/http_downstream.py @@ -13,9 +13,9 @@ import weakref from componentize_py_types import Result, Ok, Err, Some -from ..imports import http_req from ..imports import types from ..imports import async_io +from ..imports import http_req class ExtraNextRequestOptions: """ @@ -65,7 +65,7 @@ def next_request(options: NextRequestOptions) -> async_io.Pollable: necessary to preserve state between multiple requests, store it outside of the sandbox. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def await_request(pending: async_io.Pollable) -> Optional[Tuple[http_req.Request, async_io.Pollable]]: @@ -75,7 +75,7 @@ def await_request(pending: async_io.Pollable) -> Optional[Tuple[http_req.Request Returns `ok(none)` if there are no more requests for this sandbox. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def downstream_original_header_names(ds_request: http_req.Request, max_len: int, cursor: int) -> Tuple[str, Optional[int]]: @@ -91,14 +91,14 @@ def downstream_original_header_names(ds_request: http_req.Request, max_len: int, or `none` if all the remaining names fit. If `max-len` is too small to fit any name, an `error.buffer-len` error is returned, providing a recommended buffer size. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def downstream_original_header_count(ds_request: http_req.Request) -> int: """ Returns the number of headers in the client request as originally received. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def downstream_client_ip_addr(ds_request: http_req.Request) -> Optional[types.IpAddress]: @@ -115,28 +115,28 @@ def downstream_client_h2_fingerprint(ds_request: http_req.Request, max_len: int) """ Gets the HTTP/2 fingerprint of client request if available. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def downstream_client_request_id(ds_request: http_req.Request, max_len: int) -> str: """ Gets the id of the current request if available. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def downstream_client_oh_fingerprint(ds_request: http_req.Request, max_len: int) -> str: """ Gets the fingerprint of client request headers if available. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def downstream_client_ddos_detected(ds_request: http_req.Request) -> bool: """ Returns whether the request was tagged as contributing to a DDoS attack. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def downstream_tls_cipher_openssl_name(ds_request: http_req.Request, max_len: int) -> Optional[bytes]: @@ -149,7 +149,7 @@ def downstream_tls_cipher_openssl_name(ds_request: http_req.Request, max_len: in [OpenSSL name]: https://testssl.sh/openssl-iana.mapping.html - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def downstream_tls_protocol(ds_request: http_req.Request, max_len: int) -> Optional[bytes]: @@ -158,7 +158,7 @@ def downstream_tls_protocol(ds_request: http_req.Request, max_len: int) -> Optio Returns `ok(none)` if the downstream client connection is not a TLS connection. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def downstream_tls_client_hello(ds_request: http_req.Request, max_len: int) -> Optional[bytes]: @@ -171,7 +171,7 @@ def downstream_tls_client_hello(ds_request: http_req.Request, max_len: int) -> O [RFC 5246]: https://www.rfc-editor.org/rfc/rfc5246#section-7.4.1.2 - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def downstream_tls_raw_client_certificate(ds_request: http_req.Request, max_len: int) -> Optional[bytes]: @@ -182,7 +182,7 @@ def downstream_tls_raw_client_certificate(ds_request: http_req.Request, max_len: Returns `ok(none)` if the downstream client connection is not a TLS connection. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def downstream_tls_client_cert_verify_result(ds_request: http_req.Request) -> Optional[http_req.ClientCertVerifyResult]: @@ -191,7 +191,7 @@ def downstream_tls_client_cert_verify_result(ds_request: http_req.Request) -> Op Returns `ok(none)` if the downstream client connection is not a TLS connection. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def downstream_tls_client_servername(ds_request: http_req.Request, max_len: int) -> Optional[str]: @@ -200,7 +200,7 @@ def downstream_tls_client_servername(ds_request: http_req.Request, max_len: int) Returns `ok(none)` if not available. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def downstream_tls_ja3_md5(ds_request: http_req.Request) -> Optional[bytes]: @@ -209,7 +209,7 @@ def downstream_tls_ja3_md5(ds_request: http_req.Request) -> Optional[bytes]: Returns `ok(none)` if the downstream client connection is not a TLS connection. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def downstream_tls_ja4(ds_request: http_req.Request, max_len: int) -> Optional[str]: @@ -218,14 +218,14 @@ def downstream_tls_ja4(ds_request: http_req.Request, max_len: int) -> Optional[s Returns `ok(none)` if the downstream client connection is not a TLS connection. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def downstream_compliance_region(ds_request: http_req.Request, max_len: int) -> Optional[str]: """ Gets the compliance region that the client IP address is in. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def fastly_key_is_valid(ds_request: http_req.Request) -> bool: @@ -234,6 +234,6 @@ def fastly_key_is_valid(ds_request: http_req.Request) -> bool: Fastly-Key belonging to a user with the rights to purge content on this service. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError diff --git a/fastly_compute/testing/stubs/wit_world/imports/http_req.py b/fastly_compute/testing/stubs/wit_world/imports/http_req.py index e8abd74..6ec795a 100644 --- a/fastly_compute/testing/stubs/wit_world/imports/http_req.py +++ b/fastly_compute/testing/stubs/wit_world/imports/http_req.py @@ -11,9 +11,9 @@ import weakref from componentize_py_types import Result, Ok, Err, Some +from ..imports import types from ..imports import http_types from ..imports import backend -from ..imports import types from ..imports import async_io from ..imports import http_resp @@ -79,7 +79,7 @@ def new(cls) -> Self: """ Creates a new `request` with no method, URL, or headers, and an empty body. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def set_cache_override(self, cache_override: CacheOverride) -> None: @@ -88,7 +88,7 @@ def set_cache_override(self, cache_override: CacheOverride) -> None: This setting will override any cache directive headers returned in response to this request. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_header_names(self, max_len: int, cursor: int) -> Tuple[str, Optional[int]]: @@ -101,7 +101,7 @@ def get_header_names(self, max_len: int, cursor: int) -> Tuple[str, Optional[int or `none` if all the remaining names fit. If `max-len` is too small to fit any name, an `error.buffer-len` error is returned, providing a recommended buffer size. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_header_value(self, name: str, max_len: int) -> Optional[bytes]: @@ -114,7 +114,7 @@ def get_header_value(self, name: str, max_len: int) -> Optional[bytes]: If header name requires more than `max-len` bytes, this will return an `error.buffer-len` containing the required size. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_header_values(self, name: str, max_len: int, cursor: int) -> Tuple[bytes, Optional[int]]: @@ -129,7 +129,7 @@ def get_header_values(self, name: str, max_len: int, cursor: int) -> Tuple[bytes fit, or `none` if all the remaining values fit. If `max-len` is too small to fit any value, an `error.buffer-len` error is returned, providing a recommended buffer size. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def set_header_values(self, name: str, values: bytes) -> None: @@ -137,7 +137,7 @@ def set_header_values(self, name: str, values: bytes) -> None: Sets the values for the given header name, replacing any headers that previously existed for that name. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def insert_header(self, name: str, value: bytes) -> None: @@ -145,7 +145,7 @@ def insert_header(self, name: str, value: bytes) -> None: Sets a request header to the given value, discarding any previous values for the given header name. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def append_header(self, name: str, value: bytes) -> None: @@ -154,7 +154,7 @@ def append_header(self, name: str, value: bytes) -> None: Unlike `set-header-values`, this does not discard existing values for the same header name. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def remove_header(self, name: str) -> None: @@ -163,49 +163,49 @@ def remove_header(self, name: str) -> None: Returns `ok` if any headers were successfully removed. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_method(self, max_len: int) -> str: """ Gets the request method. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def set_method(self, method: str) -> None: """ Sets the request method. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_uri(self, max_len: int) -> str: """ Gets the request URI. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def set_uri(self, uri: str) -> None: """ Sets the request URI. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_version(self) -> http_types.HttpVersion: """ Gets the HTTP version of this request. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def set_version(self, version: http_types.HttpVersion) -> None: """ Sets the HTTP version of this request. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def set_auto_decompress_response(self, encodings: http_types.ContentEncodings) -> None: @@ -219,7 +219,7 @@ def set_auto_decompress_response(self, encodings: http_types.ContentEncodings) - Not all of the flags defined in `content-encodings` are supported. Currently the only supported flag is `content-encodings.gzip`. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def redirect_to_websocket_proxy(self, backend: backend.Backend) -> None: @@ -236,7 +236,7 @@ def redirect_to_websocket_proxy(self, backend: backend.Backend) -> None: [WebSockets passthrough]: https://www.fastly.com/documentation/guides/concepts/real-time-messaging/websockets-tunnel/ - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def set_framing_headers_mode(self, mode: http_types.FramingHeadersMode) -> None: @@ -244,12 +244,12 @@ def set_framing_headers_mode(self, mode: http_types.FramingHeadersMode) -> None: Sets how the framing headers `Content-Length` and `Transfer-Encoding` will be determined when sending this request. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def redirect_to_grip_proxy(self, backend: backend.Backend) -> None: """ - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def __enter__(self) -> Self: @@ -462,7 +462,7 @@ def send(request: Request, body: async_io.Pollable, backend: backend.Backend) -> Returns once the response headers have been received, or an error occurs. - Raises: `wit_world.types.Err(wit_world.imports.http_req.ErrorWithDetail)` + Raises: `componentize_py_types.Err(wit_world.imports.http_req.ErrorWithDetail)` """ raise NotImplementedError def send_uncached(request: Request, body: async_io.Pollable, backend: backend.Backend) -> Tuple[http_resp.Response, async_io.Pollable]: @@ -472,7 +472,7 @@ def send_uncached(request: Request, body: async_io.Pollable, backend: backend.Ba Returns once the response headers have been received, or an error occurs. - Raises: `wit_world.types.Err(wit_world.imports.http_req.ErrorWithDetail)` + Raises: `componentize_py_types.Err(wit_world.imports.http_req.ErrorWithDetail)` """ raise NotImplementedError def send_async(request: Request, body: async_io.Pollable, backend: backend.Backend) -> async_io.Pollable: @@ -493,7 +493,7 @@ def send_async(request: Request, body: async_io.Pollable, backend: backend.Backe able to run, as the request will continue sending even after the program that initiated it exits. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def send_async_uncached(request: Request, body: async_io.Pollable, backend: backend.Backend) -> async_io.Pollable: @@ -504,7 +504,7 @@ def send_async_uncached(request: Request, body: async_io.Pollable, backend: back backend server without performing any caching or inserting any cache-related headers in the response. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def send_async_streaming(request: Request, body: async_io.Pollable, backend: backend.Backend) -> async_io.Pollable: @@ -526,7 +526,7 @@ def send_async_streaming(request: Request, body: async_io.Pollable, backend: bac and transmission of the request body and headers will continue in the background. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def send_async_uncached_streaming(request: Request, body: async_io.Pollable, backend: backend.Backend) -> async_io.Pollable: @@ -537,7 +537,7 @@ def send_async_uncached_streaming(request: Request, body: async_io.Pollable, bac backend server without performing any caching or inserting any cache-related headers in the response. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def await_response(pending: async_io.Pollable) -> Tuple[http_resp.Response, async_io.Pollable]: @@ -545,7 +545,7 @@ def await_response(pending: async_io.Pollable) -> Tuple[http_resp.Response, asyn Waits until the request is completed, and then returns the resulting response and body. - Raises: `wit_world.types.Err(wit_world.imports.http_req.ErrorWithDetail)` + Raises: `componentize_py_types.Err(wit_world.imports.http_req.ErrorWithDetail)` """ raise NotImplementedError def close(request: Request) -> None: @@ -555,11 +555,11 @@ def close(request: Request) -> None: A `request` is automatically consumed when you send a request. You should call `close` only if you have a `request` you don't intend to use anymore. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def upgrade_websocket(backend: backend.Backend) -> None: """ - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError diff --git a/fastly_compute/testing/stubs/wit_world/imports/http_resp.py b/fastly_compute/testing/stubs/wit_world/imports/http_resp.py index a295a8f..3e2a4f4 100644 --- a/fastly_compute/testing/stubs/wit_world/imports/http_resp.py +++ b/fastly_compute/testing/stubs/wit_world/imports/http_resp.py @@ -11,8 +11,8 @@ import weakref from componentize_py_types import Result, Ok, Err, Some -from ..imports import http_types from ..imports import types +from ..imports import http_types from ..imports import async_io class KeepaliveMode(Enum): @@ -31,7 +31,7 @@ def new(cls) -> Self: The new `response` is created with status code 200 OK, no headers, and an empty body. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_header_names(self, max_len: int, cursor: int) -> Tuple[str, Optional[int]]: @@ -44,7 +44,7 @@ def get_header_names(self, max_len: int, cursor: int) -> Tuple[str, Optional[int or `none` if all the remaining names fit. If `max-len` is too small to fit any name, an `error.buffer-len` error is returned, providing a recommended buffer size. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_header_value(self, name: str, max_len: int) -> Optional[bytes]: @@ -57,7 +57,7 @@ def get_header_value(self, name: str, max_len: int) -> Optional[bytes]: If header name requires more than `max-len` bytes, this will return an `error.buffer-len` containing the required size. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_header_values(self, name: str, max_len: int, cursor: int) -> Tuple[bytes, Optional[int]]: @@ -72,7 +72,7 @@ def get_header_values(self, name: str, max_len: int, cursor: int) -> Tuple[bytes fit, or `none` if all the remaining values fit. If `max-len` is too small to fit any value, an `error.buffer-len` error is returned, providing a recommended buffer size. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def set_header_values(self, name: str, values: bytes) -> None: @@ -80,7 +80,7 @@ def set_header_values(self, name: str, values: bytes) -> None: Sets the values for the given header name, replacing any headers that previously existed for that name. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def insert_header(self, name: str, value: bytes) -> None: @@ -88,7 +88,7 @@ def insert_header(self, name: str, value: bytes) -> None: Sets a response header to the given value, discarding any previous values for the given header name. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def append_header(self, name: str, value: bytes) -> None: @@ -97,7 +97,7 @@ def append_header(self, name: str, value: bytes) -> None: Unlike `set-header-values`, this does not discard existing values for the same header name. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def remove_header(self, name: str) -> None: @@ -106,35 +106,35 @@ def remove_header(self, name: str) -> None: Returns `ok` if any headers were successfully removed. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_version(self) -> http_types.HttpVersion: """ Gets the HTTP version of this response. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def set_version(self, version: http_types.HttpVersion) -> None: """ Sets the HTTP version of this response. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_status(self) -> int: """ Gets the HTTP status code of the response. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def set_status(self, status: int) -> None: """ Sets the HTTP status code of the response. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def set_framing_headers_mode(self, mode: http_types.FramingHeadersMode) -> None: @@ -142,14 +142,14 @@ def set_framing_headers_mode(self, mode: http_types.FramingHeadersMode) -> None: Sets how the framing headers `Content-Length` and `Transfer-Encoding` will be determined when sending this response. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def set_http_keepalive_mode(self, mode: KeepaliveMode) -> None: """ Adjust the response's connection reuse mode. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def get_remote_ip_addr(self) -> Optional[types.IpAddress]: @@ -184,7 +184,7 @@ def send_downstream(response: Response, body: async_io.Pollable) -> None: Data for the body must be written before calling this function. To start a response and write data to it afterwards, use `send-downstream-streaming` instead. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def send_downstream_streaming(response: Response, body: async_io.Pollable) -> None: @@ -193,7 +193,7 @@ def send_downstream_streaming(response: Response, body: async_io.Pollable) -> No The body is left open, allowing data to be written after calling this function. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def close(response: Response) -> None: @@ -204,6 +204,6 @@ def close(response: Response) -> None: client. You should call `close` only if you have a `response` you don't intend to use anymore. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError diff --git a/fastly_compute/testing/stubs/wit_world/imports/image_optimizer.py b/fastly_compute/testing/stubs/wit_world/imports/image_optimizer.py index 8fe144c..8ca24d9 100644 --- a/fastly_compute/testing/stubs/wit_world/imports/image_optimizer.py +++ b/fastly_compute/testing/stubs/wit_world/imports/image_optimizer.py @@ -13,10 +13,10 @@ import weakref from componentize_py_types import Result, Ok, Err, Some -from ..imports import http_req from ..imports import backend from ..imports import async_io from ..imports import http_resp +from ..imports import http_req class ExtraImageOptimizerTransformOptions: """ @@ -42,6 +42,6 @@ class ImageOptimizerTransformOptions: def transform_image_optimizer_request(origin_image_request: http_req.Request, origin_image_request_body: Optional[async_io.Pollable], origin_image_request_backend: backend.Backend, io_transform_options: ImageOptimizerTransformOptions) -> Tuple[http_resp.Response, async_io.Pollable]: """ - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError diff --git a/fastly_compute/testing/stubs/wit_world/imports/kv_store.py b/fastly_compute/testing/stubs/wit_world/imports/kv_store.py index e9d3bd0..8da2a70 100644 --- a/fastly_compute/testing/stubs/wit_world/imports/kv_store.py +++ b/fastly_compute/testing/stubs/wit_world/imports/kv_store.py @@ -36,7 +36,7 @@ def metadata(self, max_len: int) -> Optional[str]: """ Read the metadata of the KV Store item, if present. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def generation(self) -> int: @@ -202,7 +202,7 @@ def open(cls, name: str) -> Self: """ Opens the KV Store with the given name. - Raises: `wit_world.types.Err(wit_world.imports.types.OpenError)` + Raises: `componentize_py_types.Err(wit_world.imports.types.OpenError)` """ raise NotImplementedError def lookup(self, key: str) -> Optional[Entry]: @@ -214,7 +214,7 @@ def lookup(self, key: str) -> Optional[Entry]: This function waits until the operation completes. - Raises: `wit_world.types.Err(wit_world.imports.kv_store.KvError)` + Raises: `componentize_py_types.Err(wit_world.imports.kv_store.KvError)` """ raise NotImplementedError def lookup_async(self, key: str) -> async_io.Pollable: @@ -224,7 +224,7 @@ def lookup_async(self, key: str) -> async_io.Pollable: This function initiates an async lookup of a value in the KV Store. Use `await-lookup` to finish the lookup. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def insert(self, key: str, body: async_io.Pollable, options: InsertOptions) -> None: @@ -236,7 +236,7 @@ def insert(self, key: str, body: async_io.Pollable, options: InsertOptions) -> N This function waits until the operation completes. - Raises: `wit_world.types.Err(wit_world.imports.kv_store.KvError)` + Raises: `componentize_py_types.Err(wit_world.imports.kv_store.KvError)` """ raise NotImplementedError def insert_async(self, key: str, body: async_io.Pollable, options: InsertOptions) -> async_io.Pollable: @@ -249,7 +249,7 @@ def insert_async(self, key: str, body: async_io.Pollable, options: InsertOptions This function initiates an async insert of a value in the KV Store. Use `await-insert` to finish the lookup. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def delete(self, key: str) -> bool: @@ -261,7 +261,7 @@ def delete(self, key: str) -> bool: This function waits until the operation completes. - Raises: `wit_world.types.Err(wit_world.imports.kv_store.KvError)` + Raises: `componentize_py_types.Err(wit_world.imports.kv_store.KvError)` """ raise NotImplementedError def delete_async(self, key: str) -> async_io.Pollable: @@ -271,7 +271,7 @@ def delete_async(self, key: str) -> async_io.Pollable: This function initiates an async delete of a value in the KV Store. Use `await-delete` to finish the lookup. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def list(self, options: ListOptions) -> async_io.Pollable: @@ -283,7 +283,7 @@ def list(self, options: ListOptions) -> async_io.Pollable: This function waits until the operation completes. - Raises: `wit_world.types.Err(wit_world.imports.kv_store.KvError)` + Raises: `componentize_py_types.Err(wit_world.imports.kv_store.KvError)` """ raise NotImplementedError def list_async(self, options: ListOptions) -> async_io.Pollable: @@ -293,7 +293,7 @@ def list_async(self, options: ListOptions) -> async_io.Pollable: This function initiates an async list value in the KV Store. Use `await-list` to finish the lookup. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def __enter__(self) -> Self: @@ -315,7 +315,7 @@ def await_lookup(handle: async_io.Pollable) -> Optional[Entry]: Returns `ok(some(v))` with the value `v` that was found, `ok(none)` if no value was found, or `err(e)` indicating the error `e` occurred. - Raises: `wit_world.types.Err(wit_world.imports.kv_store.KvError)` + Raises: `componentize_py_types.Err(wit_world.imports.kv_store.KvError)` """ raise NotImplementedError def await_insert(handle: async_io.Pollable) -> None: @@ -324,7 +324,7 @@ def await_insert(handle: async_io.Pollable) -> None: Returns `ok` if the `insert` succeeded, or an error code on failure. - Raises: `wit_world.types.Err(wit_world.imports.kv_store.KvError)` + Raises: `componentize_py_types.Err(wit_world.imports.kv_store.KvError)` """ raise NotImplementedError def await_delete(handle: async_io.Pollable) -> bool: @@ -334,7 +334,7 @@ def await_delete(handle: async_io.Pollable) -> bool: Returns `ok(true)` if a value was successfully deleted, `ok(false)` if no value was found, or `err(e)` indicating the error `e` occurred. - Raises: `wit_world.types.Err(wit_world.imports.kv_store.KvError)` + Raises: `componentize_py_types.Err(wit_world.imports.kv_store.KvError)` """ raise NotImplementedError def await_list(handle: async_io.Pollable) -> async_io.Pollable: @@ -344,6 +344,6 @@ def await_list(handle: async_io.Pollable) -> async_io.Pollable: Returns `ok(b)` with the JSON-encoded body `b` on success, or `err(e)` indicating the error `e` occurred. - Raises: `wit_world.types.Err(wit_world.imports.kv_store.KvError)` + Raises: `componentize_py_types.Err(wit_world.imports.kv_store.KvError)` """ raise NotImplementedError diff --git a/fastly_compute/testing/stubs/wit_world/imports/log.py b/fastly_compute/testing/stubs/wit_world/imports/log.py index 1b326a4..977415a 100644 --- a/fastly_compute/testing/stubs/wit_world/imports/log.py +++ b/fastly_compute/testing/stubs/wit_world/imports/log.py @@ -35,7 +35,7 @@ def open(cls, name: str) -> Self: to that endpoint will succeed. Refer to your service dashboard to diagnose missing log events. - Raises: `wit_world.types.Err(wit_world.imports.types.OpenError)` + Raises: `componentize_py_types.Err(wit_world.imports.types.OpenError)` """ raise NotImplementedError def write(self, msg: bytes) -> None: diff --git a/fastly_compute/testing/stubs/wit_world/imports/purge.py b/fastly_compute/testing/stubs/wit_world/imports/purge.py index be6ab32..39f0c9f 100644 --- a/fastly_compute/testing/stubs/wit_world/imports/purge.py +++ b/fastly_compute/testing/stubs/wit_world/imports/purge.py @@ -45,7 +45,7 @@ def purge_surrogate_key(surrogate_keys: str, purge_options: PurgeOptions) -> Non A surrogate key must contain only printable ASCII characters (those between `0x21` and `0x7E`, inclusive). - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def purge_surrogate_key_verbose(surrogate_keys: str, purge_options: PurgeOptions, max_len: int) -> str: @@ -58,6 +58,6 @@ def purge_surrogate_key_verbose(surrogate_keys: str, purge_options: PurgeOptions [JSON purge response]: https://developer.fastly.com/reference/api/purging/#purge-tag - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError diff --git a/fastly_compute/testing/stubs/wit_world/imports/secret_store.py b/fastly_compute/testing/stubs/wit_world/imports/secret_store.py index b8a8687..0f6bb16 100644 --- a/fastly_compute/testing/stubs/wit_world/imports/secret_store.py +++ b/fastly_compute/testing/stubs/wit_world/imports/secret_store.py @@ -37,14 +37,14 @@ def from_bytes(cls, bytes: bytes) -> Self: As the early note says, this `secret` will be local to the current sandbox, and will not be shared with other instances of this service. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def plaintext(self, max_len: int) -> bytes: """ Returns the plaintext value of this secret. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def __enter__(self) -> Self: @@ -68,7 +68,7 @@ def open(cls, name: str) -> Self: """ Opens the Secret Store with the given name. - Raises: `wit_world.types.Err(wit_world.imports.types.OpenError)` + Raises: `componentize_py_types.Err(wit_world.imports.types.OpenError)` """ raise NotImplementedError def get(self, key: str) -> Optional[Secret]: @@ -78,7 +78,7 @@ def get(self, key: str) -> Optional[Secret]: If successful, this method returns `ok(some(s))` containing the found secret `s` if the secret is found, or `ok(none)` if the secret was not found. - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def __enter__(self) -> Self: diff --git a/fastly_compute/testing/stubs/wit_world/imports/security.py b/fastly_compute/testing/stubs/wit_world/imports/security.py index 06b4ccf..9af91ba 100644 --- a/fastly_compute/testing/stubs/wit_world/imports/security.py +++ b/fastly_compute/testing/stubs/wit_world/imports/security.py @@ -13,9 +13,9 @@ import weakref from componentize_py_types import Result, Ok, Err, Some +from ..imports import types from ..imports import async_io from ..imports import http_req -from ..imports import types class ExtraInspectOptions: """ @@ -52,6 +52,6 @@ def inspect(request: http_req.Request, body: async_io.Pollable, options: Inspect [NGWAF]: https://docs.fastly.com/en/ngwaf/ - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError diff --git a/fastly_compute/testing/stubs/wit_world/imports/shielding.py b/fastly_compute/testing/stubs/wit_world/imports/shielding.py index 07694a0..ebd0ab0 100644 --- a/fastly_compute/testing/stubs/wit_world/imports/shielding.py +++ b/fastly_compute/testing/stubs/wit_world/imports/shielding.py @@ -41,11 +41,11 @@ def __exit__(self, exc_type: type[BaseException] | None, exc_value: BaseExceptio def shield_info(name: str, max_len: int) -> str: """ - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError def backend_for_shield(name: str, options: Optional[ShieldBackendOptions]) -> backend.Backend: """ - Raises: `wit_world.types.Err(wit_world.imports.types.Error)` + Raises: `componentize_py_types.Err(wit_world.imports.types.Error)` """ raise NotImplementedError diff --git a/fastly_compute/testing/stubs/wit_world/imports/streams.py b/fastly_compute/testing/stubs/wit_world/imports/streams.py index fc14206..3fc7b3d 100644 --- a/fastly_compute/testing/stubs/wit_world/imports/streams.py +++ b/fastly_compute/testing/stubs/wit_world/imports/streams.py @@ -76,7 +76,7 @@ def read(self, len: int) -> bytes: as a return value by the callee. The callee may return a list of bytes less than `len` in size while more bytes are available for reading. - Raises: `wit_world.types.Err(wit_world.imports.streams.StreamError)` + Raises: `componentize_py_types.Err(wit_world.imports.streams.StreamError)` """ raise NotImplementedError def blocking_read(self, len: int) -> bytes: @@ -84,7 +84,7 @@ def blocking_read(self, len: int) -> bytes: Read bytes from a stream, after blocking until at least one byte can be read. Except for blocking, behavior is identical to `read`. - Raises: `wit_world.types.Err(wit_world.imports.streams.StreamError)` + Raises: `componentize_py_types.Err(wit_world.imports.streams.StreamError)` """ raise NotImplementedError def skip(self, len: int) -> int: @@ -94,7 +94,7 @@ def skip(self, len: int) -> int: Behaves identical to `read`, except instead of returning a list of bytes, returns the number of bytes consumed from the stream. - Raises: `wit_world.types.Err(wit_world.imports.streams.StreamError)` + Raises: `componentize_py_types.Err(wit_world.imports.streams.StreamError)` """ raise NotImplementedError def blocking_skip(self, len: int) -> int: @@ -102,7 +102,7 @@ def blocking_skip(self, len: int) -> int: Skip bytes from a stream, after blocking until at least one byte can be skipped. Except for blocking behavior, identical to `skip`. - Raises: `wit_world.types.Err(wit_world.imports.streams.StreamError)` + Raises: `componentize_py_types.Err(wit_world.imports.streams.StreamError)` """ raise NotImplementedError def subscribe(self) -> poll.Pollable: @@ -154,7 +154,7 @@ def check_write(self) -> int: become ready when this function will report at least 1 byte, or an error. - Raises: `wit_world.types.Err(wit_world.imports.streams.StreamError)` + Raises: `componentize_py_types.Err(wit_world.imports.streams.StreamError)` """ raise NotImplementedError def write(self, contents: bytes) -> None: @@ -173,7 +173,7 @@ def write(self, contents: bytes) -> None: returns Err(closed) without writing if the stream has closed since the last call to check-write provided a permit. - Raises: `wit_world.types.Err(wit_world.imports.streams.StreamError)` + Raises: `componentize_py_types.Err(wit_world.imports.streams.StreamError)` """ raise NotImplementedError def blocking_write_and_flush(self, contents: bytes) -> None: @@ -203,7 +203,7 @@ def blocking_write_and_flush(self, contents: bytes) -> None: let _ = this.check-write(); // eliding error handling ``` - Raises: `wit_world.types.Err(wit_world.imports.streams.StreamError)` + Raises: `componentize_py_types.Err(wit_world.imports.streams.StreamError)` """ raise NotImplementedError def flush(self) -> None: @@ -219,7 +219,7 @@ def flush(self) -> None: completed. The `subscribe` pollable will become ready when the flush has completed and the stream can accept more writes. - Raises: `wit_world.types.Err(wit_world.imports.streams.StreamError)` + Raises: `componentize_py_types.Err(wit_world.imports.streams.StreamError)` """ raise NotImplementedError def blocking_flush(self) -> None: @@ -227,7 +227,7 @@ def blocking_flush(self) -> None: Request to flush buffered output, and block until flush completes and stream is ready for writing again. - Raises: `wit_world.types.Err(wit_world.imports.streams.StreamError)` + Raises: `componentize_py_types.Err(wit_world.imports.streams.StreamError)` """ raise NotImplementedError def subscribe(self) -> poll.Pollable: @@ -253,7 +253,7 @@ def write_zeroes(self, len: int) -> None: passing a list of bytes, you simply pass the number of zero-bytes that should be written. - Raises: `wit_world.types.Err(wit_world.imports.streams.StreamError)` + Raises: `componentize_py_types.Err(wit_world.imports.streams.StreamError)` """ raise NotImplementedError def blocking_write_zeroes_and_flush(self, len: int) -> None: @@ -283,7 +283,7 @@ def blocking_write_zeroes_and_flush(self, len: int) -> None: let _ = this.check-write(); // eliding error handling ``` - Raises: `wit_world.types.Err(wit_world.imports.streams.StreamError)` + Raises: `componentize_py_types.Err(wit_world.imports.streams.StreamError)` """ raise NotImplementedError def splice(self, src: InputStream, len: int) -> int: @@ -302,7 +302,7 @@ def splice(self, src: InputStream, len: int) -> int: This function returns the number of bytes transferred; it may be less than `len`. - Raises: `wit_world.types.Err(wit_world.imports.streams.StreamError)` + Raises: `componentize_py_types.Err(wit_world.imports.streams.StreamError)` """ raise NotImplementedError def blocking_splice(self, src: InputStream, len: int) -> int: @@ -313,7 +313,7 @@ def blocking_splice(self, src: InputStream, len: int) -> int: `output-stream` is ready for writing, and the `input-stream` is ready for reading, before performing the `splice`. - Raises: `wit_world.types.Err(wit_world.imports.streams.StreamError)` + Raises: `componentize_py_types.Err(wit_world.imports.streams.StreamError)` """ raise NotImplementedError def __enter__(self) -> Self: