Code view:

A painting is a person's account of this edit as text, recorded independently of the node mapping - a rendering often has several equally defensible answers where the mapping has one. Deletions and insertions carry no position on the opposite side in a painting, so that panel draws no caret for them.

Before

…lines 1–7 unchanged (7 lines)
8)
9from openhands.app_server.services.injector import Injector
10from openhands.sdk.utils.models import DiscriminatedUnionMixin
11
12# The version of the agent server to use for deployments.
13# Typically this will be the same as the values from the pyproject.toml
14AGENT_SERVER_IMAGE = 'ghcr.io/openhands/agent-server:be9725b-python'
15
16
17class SandboxSpecService(ABC):
18 """Service for managing Sandbox specs.
19
20 At present this is read only. The plan is that later this class will allow building
…lines 21–60 unchanged (40 lines)

After

…lines 1–7 unchanged (7 lines)
8)
9from openhands.app_server.services.injector import Injector
10from openhands.sdk.utils.models import DiscriminatedUnionMixin
11
12# The version of the agent server to use for deployments.
13# Typically this will be the same as the values from the pyproject.toml
14AGENT_SERVER_IMAGE = 'ghcr.io/openhands/agent-server:23c8436-python'
15
16
17class SandboxSpecService(ABC):
18 """Service for managing Sandbox specs.
19
20 At present this is read only. The plan is that later this class will allow building
…lines 21–60 unchanged (40 lines)

Before

module
import_statement
import "import"
dotted_name
identifier "asyncio"
import_from_statement
from "from"
dotted_name
identifier "abc"
import "import"
dotted_name
identifier "ABC"
, ","
dotted_name
identifier "abstractmethod"
import_from_statement
from "from"
dotted_name
identifier "openhands"
. "."
identifier "app_server"
. "."
identifier "errors"
import "import"
dotted_name
identifier "SandboxError"
import_from_statement
from "from"
dotted_name
identifier "openhands"
. "."
identifier "app_server"
. "."
identifier "sandbox"
. "."
identifier "sandbox_spec_models"
import "import"
( "("
dotted_name
identifier "SandboxSpecInfo"
, ","
dotted_name
identifier "SandboxSpecInfoPage"
, ","
) ")"
import_from_statement
from "from"
dotted_name
identifier "openhands"
. "."
identifier "app_server"
. "."
identifier "services"
. "."
identifier "injector"
import "import"
dotted_name
identifier "Injector"
import_from_statement
from "from"
dotted_name
identifier "openhands"
. "."
identifier "sdk"
. "."
identifier "utils"
. "."
identifier "models"
import "import"
dotted_name
identifier "DiscriminatedUnionMixin"
comment "# The version of the agent server to use for deployments."
comment "# Typically this will be the same as the values from the pyp"...
expression_statement
assignment
identifier "AGENT_SERVER_IMAGE"
= "="
string
string_start "'"
string_content "ghcr.io/openhands/agent-server:be9725b-python"
string_end "'"
class_definition (+224 nodes collapsed)
class_definition
class "class"
identifier "SandboxSpecServiceInjector"
argument_list
( "("
identifier "DiscriminatedUnionMixin"
, ","
subscript
identifier "Injector"
[ "["
identifier "SandboxSpecService"
] "]"
, ","
identifier "ABC"
) ")"
: ":"
block
pass_statement
pass "pass"

After

module
import_statement
import "import"
dotted_name
identifier "asyncio"
import_from_statement
from "from"
dotted_name
identifier "abc"
import "import"
dotted_name
identifier "ABC"
, ","
dotted_name
identifier "abstractmethod"
import_from_statement
from "from"
dotted_name
identifier "openhands"
. "."
identifier "app_server"
. "."
identifier "errors"
import "import"
dotted_name
identifier "SandboxError"
import_from_statement
from "from"
dotted_name
identifier "openhands"
. "."
identifier "app_server"
. "."
identifier "sandbox"
. "."
identifier "sandbox_spec_models"
import "import"
( "("
dotted_name
identifier "SandboxSpecInfo"
, ","
dotted_name
identifier "SandboxSpecInfoPage"
, ","
) ")"
import_from_statement
from "from"
dotted_name
identifier "openhands"
. "."
identifier "app_server"
. "."
identifier "services"
. "."
identifier "injector"
import "import"
dotted_name
identifier "Injector"
import_from_statement
from "from"
dotted_name
identifier "openhands"
. "."
identifier "sdk"
. "."
identifier "utils"
. "."
identifier "models"
import "import"
dotted_name
identifier "DiscriminatedUnionMixin"
comment "# The version of the agent server to use for deployments."
comment "# Typically this will be the same as the values from the pyp"...
expression_statement
assignment
identifier "AGENT_SERVER_IMAGE"
= "="
string
string_start "'"
string_content "ghcr.io/openhands/agent-server:23c8436-python"
string_end "'"
class_definition (+224 nodes collapsed)
class_definition
class "class"
identifier "SandboxSpecServiceInjector"
argument_list
( "("
identifier "DiscriminatedUnionMixin"
, ","
subscript
identifier "Injector"
[ "["
identifier "SandboxSpecService"
] "]"
, ","
identifier "ABC"
) ")"
: ":"
block
pass_statement
pass "pass"