together 2.0.0a17__py3-none-any.whl → 2.0.0a18__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. together/_base_client.py +5 -2
  2. together/_client.py +1 -39
  3. together/_compat.py +3 -3
  4. together/_utils/_json.py +35 -0
  5. together/_version.py +1 -1
  6. together/lib/cli/api/endpoints/create.py +7 -3
  7. together/lib/cli/api/endpoints/hardware.py +37 -6
  8. together/lib/cli/api/models/upload.py +5 -1
  9. together/resources/__init__.py +0 -14
  10. together/resources/beta/__init__.py +14 -0
  11. together/resources/beta/beta.py +32 -0
  12. together/resources/beta/clusters/clusters.py +12 -12
  13. together/resources/beta/clusters/storage.py +10 -10
  14. together/resources/beta/jig/__init__.py +61 -0
  15. together/resources/beta/jig/jig.py +1024 -0
  16. together/resources/beta/jig/queue.py +482 -0
  17. together/resources/beta/jig/secrets.py +548 -0
  18. together/resources/beta/jig/volumes.py +514 -0
  19. together/resources/chat/completions.py +10 -0
  20. together/resources/models/__init__.py +33 -0
  21. together/resources/{models.py → models/models.py} +41 -9
  22. together/resources/models/uploads.py +163 -0
  23. together/types/__init__.py +0 -2
  24. together/types/beta/__init__.py +6 -0
  25. together/types/beta/deployment.py +261 -0
  26. together/types/beta/deployment_logs.py +11 -0
  27. together/types/beta/jig/__init__.py +20 -0
  28. together/types/beta/jig/queue_cancel_params.py +13 -0
  29. together/types/beta/jig/queue_cancel_response.py +11 -0
  30. together/types/beta/jig/queue_metrics_params.py +12 -0
  31. together/types/beta/jig/queue_metrics_response.py +8 -0
  32. together/types/beta/jig/queue_retrieve_params.py +15 -0
  33. together/types/beta/jig/queue_retrieve_response.py +35 -0
  34. together/types/beta/jig/queue_submit_params.py +19 -0
  35. together/types/beta/jig/queue_submit_response.py +25 -0
  36. together/types/beta/jig/secret.py +33 -0
  37. together/types/beta/jig/secret_create_params.py +34 -0
  38. together/types/beta/jig/secret_list_response.py +16 -0
  39. together/types/beta/jig/secret_update_params.py +34 -0
  40. together/types/beta/jig/volume.py +47 -0
  41. together/types/beta/jig/volume_create_params.py +34 -0
  42. together/types/beta/jig/volume_list_response.py +16 -0
  43. together/types/beta/jig/volume_update_params.py +34 -0
  44. together/types/beta/jig_deploy_params.py +150 -0
  45. together/types/beta/jig_list_response.py +16 -0
  46. together/types/beta/jig_retrieve_logs_params.py +15 -0
  47. together/types/beta/jig_update_params.py +141 -0
  48. together/types/chat/completion_create_params.py +11 -0
  49. together/types/models/__init__.py +5 -0
  50. together/types/{job_retrieve_response.py → models/upload_status_response.py} +3 -3
  51. {together-2.0.0a17.dist-info → together-2.0.0a18.dist-info}/METADATA +11 -14
  52. {together-2.0.0a17.dist-info → together-2.0.0a18.dist-info}/RECORD +55 -25
  53. together/resources/jobs.py +0 -214
  54. together/types/job_list_response.py +0 -47
  55. {together-2.0.0a17.dist-info → together-2.0.0a18.dist-info}/WHEEL +0 -0
  56. {together-2.0.0a17.dist-info → together-2.0.0a18.dist-info}/entry_points.txt +0 -0
  57. {together-2.0.0a17.dist-info → together-2.0.0a18.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,35 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Dict, List, Optional
4
+
5
+ from ...._models import BaseModel
6
+
7
+ __all__ = ["QueueRetrieveResponse"]
8
+
9
+
10
+ class QueueRetrieveResponse(BaseModel):
11
+ claimed_at: Optional[str] = None
12
+
13
+ created_at: Optional[str] = None
14
+
15
+ done_at: Optional[str] = None
16
+
17
+ info: Optional[Dict[str, object]] = None
18
+
19
+ inputs: Optional[Dict[str, object]] = None
20
+
21
+ model: Optional[str] = None
22
+
23
+ outputs: Optional[Dict[str, object]] = None
24
+
25
+ priority: Optional[int] = None
26
+ """Additional fields for test compatibility"""
27
+
28
+ request_id: Optional[str] = None
29
+
30
+ retries: Optional[int] = None
31
+
32
+ status: Optional[str] = None
33
+ """this should be the enum, but isn't for backwards compatability"""
34
+
35
+ warnings: Optional[List[str]] = None
@@ -0,0 +1,19 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Dict
6
+ from typing_extensions import Required, TypedDict
7
+
8
+ __all__ = ["QueueSubmitParams"]
9
+
10
+
11
+ class QueueSubmitParams(TypedDict, total=False):
12
+ model: Required[str]
13
+ """Required model identifier"""
14
+
15
+ payload: Required[Dict[str, object]]
16
+
17
+ info: Dict[str, object]
18
+
19
+ priority: int
@@ -0,0 +1,25 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Optional
4
+
5
+ from pydantic import Field as FieldInfo
6
+
7
+ from ...._models import BaseModel
8
+
9
+ __all__ = ["QueueSubmitResponse", "Error"]
10
+
11
+
12
+ class Error(BaseModel):
13
+ code: Optional[str] = None
14
+
15
+ message: Optional[str] = None
16
+
17
+ param: Optional[str] = None
18
+
19
+ type: Optional[str] = None
20
+
21
+
22
+ class QueueSubmitResponse(BaseModel):
23
+ error: Optional[Error] = None
24
+
25
+ request_id: Optional[str] = FieldInfo(alias="requestId", default=None)
@@ -0,0 +1,33 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Optional
4
+
5
+ from ...._models import BaseModel
6
+
7
+ __all__ = ["Secret"]
8
+
9
+
10
+ class Secret(BaseModel):
11
+ id: Optional[str] = None
12
+ """ID is the unique identifier for this secret"""
13
+
14
+ created_at: Optional[str] = None
15
+ """CreatedAt is the ISO8601 timestamp when this secret was created"""
16
+
17
+ created_by: Optional[str] = None
18
+ """CreatedBy is the identifier of the user who created this secret"""
19
+
20
+ description: Optional[str] = None
21
+ """Description is a human-readable description of the secret's purpose"""
22
+
23
+ last_updated_by: Optional[str] = None
24
+ """LastUpdatedBy is the identifier of the user who last updated this secret"""
25
+
26
+ name: Optional[str] = None
27
+ """Name is the name/key of the secret"""
28
+
29
+ object: Optional[str] = None
30
+ """Object is the type identifier for this response (always "secret")"""
31
+
32
+ updated_at: Optional[str] = None
33
+ """UpdatedAt is the ISO8601 timestamp when this secret was last updated"""
@@ -0,0 +1,34 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import Required, TypedDict
6
+
7
+ __all__ = ["SecretCreateParams"]
8
+
9
+
10
+ class SecretCreateParams(TypedDict, total=False):
11
+ name: Required[str]
12
+ """Name is the unique identifier for the secret.
13
+
14
+ Can contain alphanumeric characters, underscores, hyphens, forward slashes, and
15
+ periods (1-100 characters)
16
+ """
17
+
18
+ value: Required[str]
19
+ """
20
+ Value is the sensitive data to store securely (e.g., API keys, passwords,
21
+ tokens). This value will be encrypted at rest
22
+ """
23
+
24
+ description: str
25
+ """
26
+ Description is an optional human-readable description of the secret's purpose
27
+ (max 500 characters)
28
+ """
29
+
30
+ project_id: str
31
+ """
32
+ ProjectID is ignored - the project is automatically determined from your
33
+ authentication
34
+ """
@@ -0,0 +1,16 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List, Optional
4
+
5
+ from .secret import Secret
6
+ from ...._models import BaseModel
7
+
8
+ __all__ = ["SecretListResponse"]
9
+
10
+
11
+ class SecretListResponse(BaseModel):
12
+ data: Optional[List[Secret]] = None
13
+ """Data is the array of secret items"""
14
+
15
+ object: Optional[str] = None
16
+ """Object is the type identifier for this response (always "list")"""
@@ -0,0 +1,34 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import TypedDict
6
+
7
+ __all__ = ["SecretUpdateParams"]
8
+
9
+
10
+ class SecretUpdateParams(TypedDict, total=False):
11
+ description: str
12
+ """
13
+ Description is an optional human-readable description of the secret's purpose
14
+ (max 500 characters)
15
+ """
16
+
17
+ name: str
18
+ """Name is the new unique identifier for the secret.
19
+
20
+ Can contain alphanumeric characters, underscores, hyphens, forward slashes, and
21
+ periods (1-100 characters)
22
+ """
23
+
24
+ project_id: str
25
+ """
26
+ ProjectID is ignored - the project is automatically determined from your
27
+ authentication
28
+ """
29
+
30
+ value: str
31
+ """Value is the new sensitive data to store securely.
32
+
33
+ Updating this will replace the existing secret value
34
+ """
@@ -0,0 +1,47 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Optional
4
+ from typing_extensions import Literal
5
+
6
+ from ...._models import BaseModel
7
+
8
+ __all__ = ["Volume", "Content"]
9
+
10
+
11
+ class Content(BaseModel):
12
+ """Content specifies the content that will be preloaded to this volume"""
13
+
14
+ source_prefix: Optional[str] = None
15
+ """
16
+ SourcePrefix is the file path prefix for the content to be preloaded into the
17
+ volume
18
+ """
19
+
20
+ type: Optional[Literal["files"]] = None
21
+ """
22
+ Type is the content type (currently only "files" is supported which allows
23
+ preloading files uploaded via Files API into the volume)
24
+ """
25
+
26
+
27
+ class Volume(BaseModel):
28
+ id: Optional[str] = None
29
+ """ID is the unique identifier for this volume"""
30
+
31
+ content: Optional[Content] = None
32
+ """Content specifies the content that will be preloaded to this volume"""
33
+
34
+ created_at: Optional[str] = None
35
+ """CreatedAt is the ISO8601 timestamp when this volume was created"""
36
+
37
+ name: Optional[str] = None
38
+ """Name is the name of the volume"""
39
+
40
+ object: Optional[str] = None
41
+ """Object is the type identifier for this response (always "volume")"""
42
+
43
+ type: Optional[Literal["readOnly"]] = None
44
+ """Type is the volume type (e.g., "readOnly")"""
45
+
46
+ updated_at: Optional[str] = None
47
+ """UpdatedAt is the ISO8601 timestamp when this volume was last updated"""
@@ -0,0 +1,34 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import Literal, Required, TypedDict
6
+
7
+ __all__ = ["VolumeCreateParams", "Content"]
8
+
9
+
10
+ class VolumeCreateParams(TypedDict, total=False):
11
+ content: Required[Content]
12
+ """Content specifies the content configuration for this volume"""
13
+
14
+ name: Required[str]
15
+ """Name is the unique identifier for the volume within the project"""
16
+
17
+ type: Required[Literal["readOnly"]]
18
+ """Type is the volume type (currently only "readOnly" is supported)"""
19
+
20
+
21
+ class Content(TypedDict, total=False):
22
+ """Content specifies the content configuration for this volume"""
23
+
24
+ source_prefix: str
25
+ """
26
+ SourcePrefix is the file path prefix for the content to be preloaded into the
27
+ volume
28
+ """
29
+
30
+ type: Literal["files"]
31
+ """
32
+ Type is the content type (currently only "files" is supported which allows
33
+ preloading files uploaded via Files API into the volume)
34
+ """
@@ -0,0 +1,16 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List, Optional
4
+
5
+ from .volume import Volume
6
+ from ...._models import BaseModel
7
+
8
+ __all__ = ["VolumeListResponse"]
9
+
10
+
11
+ class VolumeListResponse(BaseModel):
12
+ data: Optional[List[Volume]] = None
13
+ """Data is the array of volume items"""
14
+
15
+ object: Optional[str] = None
16
+ """Object is the type identifier for this response (always "list")"""
@@ -0,0 +1,34 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import Literal, TypedDict
6
+
7
+ __all__ = ["VolumeUpdateParams", "Content"]
8
+
9
+
10
+ class VolumeUpdateParams(TypedDict, total=False):
11
+ content: Content
12
+ """Content specifies the new content that will be preloaded to this volume"""
13
+
14
+ name: str
15
+ """Name is the new unique identifier for the volume within the project"""
16
+
17
+ type: Literal["readOnly"]
18
+ """Type is the new volume type (currently only "readOnly" is supported)"""
19
+
20
+
21
+ class Content(TypedDict, total=False):
22
+ """Content specifies the new content that will be preloaded to this volume"""
23
+
24
+ source_prefix: str
25
+ """
26
+ SourcePrefix is the file path prefix for the content to be preloaded into the
27
+ volume
28
+ """
29
+
30
+ type: Literal["files"]
31
+ """
32
+ Type is the content type (currently only "files" is supported which allows
33
+ preloading files uploaded via Files API into the volume)
34
+ """
@@ -0,0 +1,150 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Dict, Iterable
6
+ from typing_extensions import Literal, Required, TypedDict
7
+
8
+ from ..._types import SequenceNotStr
9
+
10
+ __all__ = ["JigDeployParams", "EnvironmentVariable", "Volume"]
11
+
12
+
13
+ class JigDeployParams(TypedDict, total=False):
14
+ gpu_type: Required[Literal["h100-80gb", " a100-80gb"]]
15
+ """GPUType specifies the GPU hardware to use (e.g., "h100-80gb")."""
16
+
17
+ image: Required[str]
18
+ """Image is the container image to deploy from registry.together.ai."""
19
+
20
+ name: Required[str]
21
+ """Name is the unique identifier for your deployment.
22
+
23
+ Must contain only alphanumeric characters, underscores, or hyphens (1-100
24
+ characters)
25
+ """
26
+
27
+ args: SequenceNotStr[str]
28
+ """Args overrides the container's CMD.
29
+
30
+ Provide as an array of arguments (e.g., ["python", "app.py"])
31
+ """
32
+
33
+ autoscaling: Dict[str, str]
34
+ """Autoscaling configuration as key-value pairs.
35
+
36
+ Example: {"metric": "QueueBacklogPerWorker", "target": "10"} to scale based on
37
+ queue backlog
38
+ """
39
+
40
+ command: SequenceNotStr[str]
41
+ """Command overrides the container's ENTRYPOINT.
42
+
43
+ Provide as an array (e.g., ["/bin/sh", "-c"])
44
+ """
45
+
46
+ cpu: float
47
+ """
48
+ CPU is the number of CPU cores to allocate per container instance (e.g., 0.1 =
49
+ 100 milli cores)
50
+ """
51
+
52
+ description: str
53
+ """Description is an optional human-readable description of your deployment"""
54
+
55
+ environment_variables: Iterable[EnvironmentVariable]
56
+ """EnvironmentVariables is a list of environment variables to set in the container.
57
+
58
+ Each must have a name and either a value or value_from_secret
59
+ """
60
+
61
+ gpu_count: int
62
+ """GPUCount is the number of GPUs to allocate per container instance.
63
+
64
+ Defaults to 0 if not specified
65
+ """
66
+
67
+ health_check_path: str
68
+ """HealthCheckPath is the HTTP path for health checks (e.g., "/health").
69
+
70
+ If set, the platform will check this endpoint to determine container health
71
+ """
72
+
73
+ max_replicas: int
74
+ """
75
+ MaxReplicas is the maximum number of container instances that can be scaled up
76
+ to. If not set, will be set to MinReplicas
77
+ """
78
+
79
+ memory: float
80
+ """
81
+ Memory is the amount of RAM to allocate per container instance in GiB (e.g., 0.5
82
+ = 512MiB)
83
+ """
84
+
85
+ min_replicas: int
86
+ """MinReplicas is the minimum number of container instances to run.
87
+
88
+ Defaults to 1 if not specified
89
+ """
90
+
91
+ port: int
92
+ """
93
+ Port is the container port your application listens on (e.g., 8080 for web
94
+ servers). Required if your application serves traffic
95
+ """
96
+
97
+ storage: int
98
+ """
99
+ Storage is the amount of ephemeral disk storage to allocate per container
100
+ instance (e.g., 10 = 10GiB)
101
+ """
102
+
103
+ termination_grace_period_seconds: int
104
+ """
105
+ TerminationGracePeriodSeconds is the time in seconds to wait for graceful
106
+ shutdown before forcefully terminating the replica
107
+ """
108
+
109
+ volumes: Iterable[Volume]
110
+ """Volumes is a list of volume mounts to attach to the container.
111
+
112
+ Each mount must reference an existing volume by name
113
+ """
114
+
115
+
116
+ class EnvironmentVariable(TypedDict, total=False):
117
+ name: Required[str]
118
+ """Name is the environment variable name (e.g., "DATABASE_URL").
119
+
120
+ Must start with a letter or underscore, followed by letters, numbers, or
121
+ underscores
122
+ """
123
+
124
+ value: str
125
+ """Value is the plain text value for the environment variable.
126
+
127
+ Use this for non-sensitive values. Either Value or ValueFromSecret must be set,
128
+ but not both
129
+ """
130
+
131
+ value_from_secret: str
132
+ """ValueFromSecret references a secret by name or ID to use as the value.
133
+
134
+ Use this for sensitive values like API keys or passwords. Either Value or
135
+ ValueFromSecret must be set, but not both
136
+ """
137
+
138
+
139
+ class Volume(TypedDict, total=False):
140
+ mount_path: Required[str]
141
+ """
142
+ MountPath is the path in the container where the volume will be mounted (e.g.,
143
+ "/data")
144
+ """
145
+
146
+ name: Required[str]
147
+ """Name is the name of the volume to mount.
148
+
149
+ Must reference an existing volume by name or ID
150
+ """
@@ -0,0 +1,16 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List, Optional
4
+
5
+ from ..._models import BaseModel
6
+ from .deployment import Deployment
7
+
8
+ __all__ = ["JigListResponse"]
9
+
10
+
11
+ class JigListResponse(BaseModel):
12
+ data: Optional[List[Deployment]] = None
13
+ """Data is the array of deployment items"""
14
+
15
+ object: Optional[str] = None
16
+ """Object is the type identifier for this response (always "list")"""
@@ -0,0 +1,15 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import TypedDict
6
+
7
+ __all__ = ["JigRetrieveLogsParams"]
8
+
9
+
10
+ class JigRetrieveLogsParams(TypedDict, total=False):
11
+ follow: bool
12
+ """Stream logs in real-time (ndjson format)"""
13
+
14
+ replica_id: str
15
+ """Replica ID to filter logs"""
@@ -0,0 +1,141 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Dict, Iterable
6
+ from typing_extensions import Literal, Required, TypedDict
7
+
8
+ from ..._types import SequenceNotStr
9
+
10
+ __all__ = ["JigUpdateParams", "EnvironmentVariable", "Volume"]
11
+
12
+
13
+ class JigUpdateParams(TypedDict, total=False):
14
+ args: SequenceNotStr[str]
15
+ """Args overrides the container's CMD.
16
+
17
+ Provide as an array of arguments (e.g., ["python", "app.py"])
18
+ """
19
+
20
+ autoscaling: Dict[str, str]
21
+ """Autoscaling configuration as key-value pairs.
22
+
23
+ Example: {"metric": "QueueBacklogPerWorker", "target": "10"} to scale based on
24
+ queue backlog
25
+ """
26
+
27
+ command: SequenceNotStr[str]
28
+ """Command overrides the container's ENTRYPOINT.
29
+
30
+ Provide as an array (e.g., ["/bin/sh", "-c"])
31
+ """
32
+
33
+ cpu: float
34
+ """
35
+ CPU is the number of CPU cores to allocate per container instance (e.g., 0.1 =
36
+ 100 milli cores)
37
+ """
38
+
39
+ description: str
40
+ """Description is an optional human-readable description of your deployment"""
41
+
42
+ environment_variables: Iterable[EnvironmentVariable]
43
+ """EnvironmentVariables is a list of environment variables to set in the container.
44
+
45
+ This will replace all existing environment variables
46
+ """
47
+
48
+ gpu_count: int
49
+ """GPUCount is the number of GPUs to allocate per container instance"""
50
+
51
+ gpu_type: Literal["h100-80gb", " a100-80gb"]
52
+ """GPUType specifies the GPU hardware to use (e.g., "h100-80gb")"""
53
+
54
+ health_check_path: str
55
+ """HealthCheckPath is the HTTP path for health checks (e.g., "/health").
56
+
57
+ Set to empty string to disable health checks
58
+ """
59
+
60
+ image: str
61
+ """Image is the container image to deploy from registry.together.ai."""
62
+
63
+ max_replicas: int
64
+ """MaxReplicas is the maximum number of replicas that can be scaled up to."""
65
+
66
+ memory: float
67
+ """
68
+ Memory is the amount of RAM to allocate per container instance in GiB (e.g., 0.5
69
+ = 512MiB)
70
+ """
71
+
72
+ min_replicas: int
73
+ """MinReplicas is the minimum number of replicas to run"""
74
+
75
+ name: str
76
+ """Name is the new unique identifier for your deployment.
77
+
78
+ Must contain only alphanumeric characters, underscores, or hyphens (1-100
79
+ characters)
80
+ """
81
+
82
+ port: int
83
+ """
84
+ Port is the container port your application listens on (e.g., 8080 for web
85
+ servers)
86
+ """
87
+
88
+ storage: int
89
+ """
90
+ Storage is the amount of ephemeral disk storage to allocate per container
91
+ instance (e.g., 10 = 10GiB)
92
+ """
93
+
94
+ termination_grace_period_seconds: int
95
+ """
96
+ TerminationGracePeriodSeconds is the time in seconds to wait for graceful
97
+ shutdown before forcefully terminating the replica
98
+ """
99
+
100
+ volumes: Iterable[Volume]
101
+ """Volumes is a list of volume mounts to attach to the container.
102
+
103
+ This will replace all existing volumes
104
+ """
105
+
106
+
107
+ class EnvironmentVariable(TypedDict, total=False):
108
+ name: Required[str]
109
+ """Name is the environment variable name (e.g., "DATABASE_URL").
110
+
111
+ Must start with a letter or underscore, followed by letters, numbers, or
112
+ underscores
113
+ """
114
+
115
+ value: str
116
+ """Value is the plain text value for the environment variable.
117
+
118
+ Use this for non-sensitive values. Either Value or ValueFromSecret must be set,
119
+ but not both
120
+ """
121
+
122
+ value_from_secret: str
123
+ """ValueFromSecret references a secret by name or ID to use as the value.
124
+
125
+ Use this for sensitive values like API keys or passwords. Either Value or
126
+ ValueFromSecret must be set, but not both
127
+ """
128
+
129
+
130
+ class Volume(TypedDict, total=False):
131
+ mount_path: Required[str]
132
+ """
133
+ MountPath is the path in the container where the volume will be mounted (e.g.,
134
+ "/data")
135
+ """
136
+
137
+ name: Required[str]
138
+ """Name is the name of the volume to mount.
139
+
140
+ Must reference an existing volume by name or ID
141
+ """