6395a5fb5d
## Summary - Fixes `ty` type checker reporting `error[no-matching-overload]` when calling `Sandbox.kill()` (and all other methods using the `class_method_variant` pattern) - Single 2-line change: make `class_method_variant` inherit from `Generic[T]` instead of `object` ## Problem The `class_method_variant` descriptor uses `cast(T, self)` to tell type checkers that the decorator preserves the original function's type. Without `Generic[T]`, `T` is only a method-level TypeVar — `ty` doesn't trust the cast and fails to resolve overloads at call sites. `mypy` and `pyright` are more lenient and accept it either way. Affected methods (both `Sandbox` and `AsyncSandbox`): `kill`, `connect`, `set_timeout`, `get_info`, `get_metrics`, `beta_pause`. ## Fix Adding `Generic[T]` makes `T` a class-level type parameter, so `ty` can track the type binding through the descriptor (`class_method_variant[(self, **opts) -> bool]`). The cast then makes sense to all three type checkers. ## Verification Tested with a consumer repro (`sandbox.kill()`) against: | Type Checker | Before | After | |---|---|---| | ty 0.0.15 | `error[no-matching-overload]` | All checks passed | | mypy 1.19.1 | All checks passed | All checks passed | | pyright 1.1.408 | All checks passed | All checks passed | ## Test plan - [x] Verified `ty check` passes on consumer-side repro - [x] Verified `mypy` and `pyright` still pass (no regressions) - [x] Verified Python syntax is valid - [x] No runtime behavior change (`Generic[T]` only affects type-level metadata)
What is E2B?
E2B is an open-source infrastructure that allows you to run AI-generated code in secure isolated sandboxes in the cloud. To start and control sandboxes, use our JavaScript SDK or Python SDK.
Run your first Sandbox
1. Install SDK
pip install e2b-code-interpreter
2. Get your E2B API key
E2B_API_KEY=e2b_***
3. Execute code with code interpreter inside Sandbox
from e2b_code_interpreter import Sandbox
with Sandbox.create() as sandbox:
sandbox.run_code("x = 1")
execution = sandbox.run_code("x+=1; x")
print(execution.text) # outputs 2
4. Check docs
Visit E2B documentation.
5. E2B cookbook
Visit our Cookbook to get inspired by examples with different LLMs and AI frameworks.
