diff --git a/BUILD.bazel b/BUILD.bazel index 9c7ae51..dd75c97 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -1,7 +1,7 @@ # This `BUILD.bazel` file allows a `bazel` system (configured outside of this # repository) to use code in this directory and its subdirectories. -load("@com_github_reboot_dev_mono//reboot/examples:rules.bzl", "write_templated_source_file") +load("//reboot/examples:rules.bzl", "write_templated_source_file") filegroup( name = "everything", diff --git a/README.md b/README.md index f47915e..45a4e80 100644 --- a/README.md +++ b/README.md @@ -79,9 +79,11 @@ selecting an application directory you select the `.rbtrc` that will be used: + ```sh cd hello-constructors ``` + #### Run the backend diff --git a/bank/backend/tests/account_servicer_test.py b/bank/backend/tests/account_servicer_test.py index 70f5e06..ddb89ac 100644 --- a/bank/backend/tests/account_servicer_test.py +++ b/bank/backend/tests/account_servicer_test.py @@ -73,14 +73,6 @@ async def withdraw(): async def test_send_welcome_email(self, mock_send_email) -> None: await self.rbt.up( Application(servicers=[AccountServicer]), - # Normally, `rbt.up()` runs the servicers in a separate process, to - # ensure that accidental use of blocking functions (an easy mistake - # to make) don't cause the test to lock up. However, in this test - # we're using a mock, which must be in the same process as the test - # or it won't work. - # - # We MUST therefore pass `in_process=True` for `@patch` to work. - in_process=True, ) context = self.rbt.create_external_context(name=f"test-{self.id()}") diff --git a/hello-tasks/backend/tests/hello_servicer_test.py b/hello-tasks/backend/tests/hello_servicer_test.py index 34d104c..4d9dd77 100644 --- a/hello-tasks/backend/tests/hello_servicer_test.py +++ b/hello-tasks/backend/tests/hello_servicer_test.py @@ -22,14 +22,6 @@ async def test_hello_tasks(self) -> None: hello_servicer.ADDITIONAL_SECS_UNTIL_ERASE = 0 await self.rbt.up( Application(servicers=[HelloServicer]), - # Normally, `rbt.up()` runs the servicers in a separate process, to - # ensure that accidental use of blocking functions (an easy mistake - # to make) doesn't cause the test to lock up. However, in this test - # we're updating constants used in a servicer, and the servicer must - # run in the same process as the test or that won't work. - # - # We MUST therefore pass `in_process=True`. - in_process=True, ) context = self.rbt.create_external_context(name=f"test-{self.id()}") diff --git a/pyproject.toml b/pyproject.toml index 21709ce..1e7423d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] requires-python = ">= 3.10" dependencies = [ - "reboot==0.44.0", + "reboot==0.45.2", ] [tool.rye] @@ -9,7 +9,7 @@ dev-dependencies = [ "mypy==1.18.1", "pytest>=7.4.2", "types-protobuf>=4.24.0.20240129", - "reboot==0.44.0", + "reboot==0.45.2", ] # This project only uses `rye` to provide `python` and its dependencies, so diff --git a/requirements-dev.lock b/requirements-dev.lock index 2565a9b..61cc5c5 100644 --- a/requirements-dev.lock +++ b/requirements-dev.lock @@ -19,14 +19,22 @@ aiosignal==1.4.0 annotated-types==0.7.0 # via pydantic anyio==4.9.0 + # via httpx + # via mcp + # via reboot + # via sse-starlette # via starlette async-timeout==4.0.3 # via aiohttp attrs==24.2.0 # via aiohttp + # via jsonschema + # via referencing bitarray==3.8.0 # via reboot certifi==2024.8.30 + # via httpcore + # via httpx # via kubernetes-asyncio cffi==1.17.1 # via cryptography @@ -36,6 +44,7 @@ click==8.1.8 colorama==0.4.6 # via reboot cryptography==44.0.0 + # via pyjwt # via reboot deprecated==1.2.15 # via opentelemetry-api @@ -72,15 +81,23 @@ grpcio-status==1.64.3 grpcio-tools==1.64.3 # via reboot h11==0.14.0 + # via httpcore # via uvicorn h2==4.3.0 # via reboot hpack==4.1.0 # via h2 +httpcore==1.0.8 + # via httpx +httpx==0.28.1 + # via mcp +httpx-sse==0.4.3 + # via mcp hyperframe==6.1.0 # via h2 idna==3.10 # via anyio + # via httpx # via yarl importlib-metadata==8.5.0 # via opentelemetry-api @@ -91,10 +108,16 @@ jinja2==3.1.2 # via reboot jinja2-strcase==0.0.2 # via reboot +jsonschema==4.26.0 + # via mcp +jsonschema-specifications==2025.9.1 + # via jsonschema kubernetes-asyncio==31.1.0 # via reboot markupsafe==2.1.5 # via jinja2 +mcp==1.26.0 + # via reboot multidict==6.1.0 # via aiohttp # via yarl @@ -153,22 +176,37 @@ psutil==6.0.0 # via reboot pycparser==2.22 # via cffi -pydantic==2.9.2 +pydantic==2.12.5 # via fastapi + # via mcp + # via pydantic-settings # via reboot -pydantic-core==2.23.4 +pydantic-core==2.41.5 # via pydantic +pydantic-settings==2.13.1 + # via mcp pyjwt==2.10.1 + # via mcp # via reboot pyprctl==0.1.3 # via reboot pytest==8.3.3 python-dateutil==2.9.0.post0 # via kubernetes-asyncio +python-dotenv==1.2.2 + # via pydantic-settings +python-multipart==0.0.22 + # via mcp pyyaml==6.0.2 # via kubernetes-asyncio # via reboot -reboot==0.44.0 +reboot==0.45.2 +referencing==0.37.0 + # via jsonschema + # via jsonschema-specifications +rpds-py==0.30.0 + # via jsonschema + # via referencing setuptools==75.1.0 # via grpcio-tools six==1.16.0 @@ -176,10 +214,12 @@ six==1.16.0 # via python-dateutil sniffio==1.3.1 # via anyio -sortedcontainers==2.4.0 - # via reboot +sse-starlette==3.0.3 + # via mcp starlette==0.46.2 # via fastapi + # via mcp + # via reboot tabulate==0.9.0 # via reboot tomli==2.0.1 @@ -187,17 +227,23 @@ tomli==2.0.1 # via pytest types-protobuf==5.28.0.20240924 # via mypy-protobuf -typing-extensions==4.9.0 +typing-extensions==4.15.0 # via aiosignal # via anyio # via fastapi + # via mcp # via multidict # via mypy # via opentelemetry-sdk # via pydantic # via pydantic-core - # via reboot + # via referencing + # via typing-inspection # via uvicorn +typing-inspection==0.4.2 + # via mcp + # via pydantic + # via pydantic-settings tzlocal==5.3 # via reboot urllib3==1.26.15 @@ -206,6 +252,7 @@ urllib3==1.26.15 uuid7-standard==1.1.0 # via reboot uvicorn==0.34.0 + # via mcp # via reboot watchdog==6.0.0 # via reboot diff --git a/requirements.lock b/requirements.lock index 3fbc088..d3993b2 100644 --- a/requirements.lock +++ b/requirements.lock @@ -19,14 +19,22 @@ aiosignal==1.4.0 annotated-types==0.7.0 # via pydantic anyio==4.9.0 + # via httpx + # via mcp + # via reboot + # via sse-starlette # via starlette async-timeout==4.0.3 # via aiohttp attrs==24.2.0 # via aiohttp + # via jsonschema + # via referencing bitarray==3.8.0 # via reboot certifi==2024.8.30 + # via httpcore + # via httpx # via kubernetes-asyncio cffi==1.17.1 # via cryptography @@ -36,6 +44,7 @@ click==8.1.8 colorama==0.4.6 # via reboot cryptography==44.0.0 + # via pyjwt # via reboot deprecated==1.2.15 # via opentelemetry-api @@ -71,15 +80,23 @@ grpcio-status==1.64.3 grpcio-tools==1.64.3 # via reboot h11==0.14.0 + # via httpcore # via uvicorn h2==4.3.0 # via reboot hpack==4.1.0 # via h2 +httpcore==1.0.8 + # via httpx +httpx==0.28.1 + # via mcp +httpx-sse==0.4.3 + # via mcp hyperframe==6.1.0 # via h2 idna==3.10 # via anyio + # via httpx # via yarl importlib-metadata==8.5.0 # via opentelemetry-api @@ -88,10 +105,16 @@ jinja2==3.1.2 # via reboot jinja2-strcase==0.0.2 # via reboot +jsonschema==4.26.0 + # via mcp +jsonschema-specifications==2025.9.1 + # via jsonschema kubernetes-asyncio==31.1.0 # via reboot markupsafe==2.1.5 # via jinja2 +mcp==1.26.0 + # via reboot multidict==6.1.0 # via aiohttp # via yarl @@ -143,21 +166,36 @@ psutil==6.0.0 # via reboot pycparser==2.22 # via cffi -pydantic==2.9.2 +pydantic==2.12.5 # via fastapi + # via mcp + # via pydantic-settings # via reboot -pydantic-core==2.23.4 +pydantic-core==2.41.5 # via pydantic +pydantic-settings==2.13.1 + # via mcp pyjwt==2.10.1 + # via mcp # via reboot pyprctl==0.1.3 # via reboot python-dateutil==2.9.0.post0 # via kubernetes-asyncio +python-dotenv==1.2.2 + # via pydantic-settings +python-multipart==0.0.22 + # via mcp pyyaml==6.0.2 # via kubernetes-asyncio # via reboot -reboot==0.44.0 +reboot==0.45.2 +referencing==0.37.0 + # via jsonschema + # via jsonschema-specifications +rpds-py==0.30.0 + # via jsonschema + # via referencing setuptools==75.1.0 # via grpcio-tools six==1.16.0 @@ -165,24 +203,32 @@ six==1.16.0 # via python-dateutil sniffio==1.3.1 # via anyio -sortedcontainers==2.4.0 - # via reboot +sse-starlette==3.0.3 + # via mcp starlette==0.46.2 # via fastapi + # via mcp + # via reboot tabulate==0.9.0 # via reboot types-protobuf==5.28.0.20240924 # via mypy-protobuf -typing-extensions==4.9.0 +typing-extensions==4.15.0 # via aiosignal # via anyio # via fastapi + # via mcp # via multidict # via opentelemetry-sdk # via pydantic # via pydantic-core - # via reboot + # via referencing + # via typing-inspection # via uvicorn +typing-inspection==0.4.2 + # via mcp + # via pydantic + # via pydantic-settings tzlocal==5.3 # via reboot urllib3==1.26.15 @@ -191,6 +237,7 @@ urllib3==1.26.15 uuid7-standard==1.1.0 # via reboot uvicorn==0.34.0 + # via mcp # via reboot watchdog==6.0.0 # via reboot