diff --git a/modal/app.py b/modal/app.py index a295e687c..69392970b 100644 --- a/modal/app.py +++ b/modal/app.py @@ -33,6 +33,7 @@ from ._utils.function_utils import FunctionInfo, is_global_object, is_method_fn from ._utils.grpc_utils import retry_transient_errors from ._utils.mount_utils import validate_volumes +from ._utils.name_utils import check_object_name from .client import _Client from .cloud_bucket_mount import _CloudBucketMount from .cls import _Cls, parameter @@ -263,6 +264,8 @@ async def lookup( modal.Sandbox.create("echo", "hi", app=app) ``` """ + check_object_name(name, "App") + if client is None: client = await _Client.from_env() diff --git a/test/app_test.py b/test/app_test.py index fb5027211..a54163830 100644 --- a/test/app_test.py +++ b/test/app_test.py @@ -471,3 +471,9 @@ def func(): # noqa: F811 app_3.include(app_4) assert "Overriding existing function" in caplog.messages[0] + + +@pytest.mark.parametrize("name", ["", " ", "no way", "my-app!", "a" * 65]) +def test_lookup_invalid_name(name): + with pytest.raises(InvalidError, match="Invalid App name"): + App.lookup(name)