Env¶
Environment configuration and namespace management.
Overview¶
The env module provides the EnvBase class which allows for creating isolated namespaces based on the type and name of environment.
Usage¶
from aibs_informatics_core.env import EnvBase
env_base = EnvBase('dev-projectX')
env_base.prefixed('my_resource', 'blue') # 'dev-projectX-my_resource-blue'
EnvBase ¶
EnvBase(*args, **kwargs)
Bases: ValidatedStr
Environment namespace for generating prefixed resource names.
Parses an environment string (e.g. "dev-myproject") into an environment
type and optional label. Provides methods to generate consistently prefixed
names for AWS resources such as stacks, tables, functions, and buckets.
Source code in src/aibs_informatics_core/collections.py
302 303 304 | |
concat
classmethod
¶
concat(*names, delim='-')
Join name parts with a delimiter.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
*names
|
str
|
Name parts to concatenate. |
()
|
delim
|
SupportedDelim
|
Delimiter between parts. |
'-'
|
Returns:
| Type | Description |
|---|---|
str
|
Concatenated string. |
Source code in src/aibs_informatics_core/env.py
269 270 271 272 273 274 275 276 277 278 279 280 | |
from_env
classmethod
¶
from_env()
Get value from environment variables
- Checks for env base variables.
- Checks for env type and label:
Environment Variable Keys: env base : "env_base" / "ENV_BASE" env type : "env_type" / "ENV_TYPE" env label : "env_label" / "ENV_LABEL" / "label" / "LABEL" Raises: ApplicationException: if variables are not found.
Returns:
| Type | Description |
|---|---|
E
|
EnvBase |
Source code in src/aibs_informatics_core/env.py
308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 | |
from_type_and_label
classmethod
¶
from_type_and_label(env_type, env_label=None)
Construct an EnvBase from an environment type and optional label.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
env_type
|
EnvType
|
The environment type. |
required |
env_label
|
str | None
|
Optional label to append after the type. |
None
|
Returns:
| Type | Description |
|---|---|
E
|
A new EnvBase instance in the form |
Source code in src/aibs_informatics_core/env.py
295 296 297 298 299 300 301 302 303 304 305 306 | |
get_bucket_name ¶
get_bucket_name(base_name, account_id, region)
Generate an S3 bucket name.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
base_name
|
str
|
Bucket base name. |
required |
account_id
|
str
|
AWS account ID. |
required |
region
|
str
|
AWS region. |
required |
Returns:
| Type | Description |
|---|---|
str
|
Bucket name in the form |
Source code in src/aibs_informatics_core/env.py
215 216 217 218 219 220 221 222 223 224 225 226 | |
get_construct_id ¶
get_construct_id(*names)
Generate a CDK construct ID with the env base prefix.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
*names
|
str
|
Name parts to join after the prefix. |
()
|
Returns:
| Type | Description |
|---|---|
str
|
Prefixed construct ID string. |
Source code in src/aibs_informatics_core/env.py
75 76 77 78 79 80 81 82 83 84 | |
get_function_name ¶
get_function_name(name)
Generate a Lambda function name with the env base prefix.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Function base name. |
required |
Returns:
| Type | Description |
|---|---|
str
|
Prefixed function name string. |
Source code in src/aibs_informatics_core/env.py
152 153 154 155 156 157 158 159 160 161 | |
get_job_name ¶
get_job_name(name, hash_value)
Generate a Batch job name with the env base prefix.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Job base name. |
required |
hash_value
|
str
|
Hash value to append for uniqueness. |
required |
Returns:
| Type | Description |
|---|---|
str
|
Prefixed job name string. |
Source code in src/aibs_informatics_core/env.py
174 175 176 177 178 179 180 181 182 183 184 | |
get_metric_namespace ¶
get_metric_namespace(name)
Generate a CloudWatch metric namespace.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Metric namespace base name. |
required |
Returns:
| Type | Description |
|---|---|
str
|
Metric namespace in the form |
Source code in src/aibs_informatics_core/env.py
204 205 206 207 208 209 210 211 212 213 | |
get_pipeline_name ¶
get_pipeline_name(*names)
Generate a pipeline name with the env base prefix.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
*names
|
str
|
Name parts to join after the prefix. |
()
|
Returns:
| Type | Description |
|---|---|
str
|
Prefixed pipeline name string. |
Source code in src/aibs_informatics_core/env.py
108 109 110 111 112 113 114 115 116 117 | |
get_repository_name ¶
get_repository_name(*names)
Generate a repository name using / as delimiter.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
*names
|
str
|
Name parts to join after the prefix. |
()
|
Returns:
| Type | Description |
|---|---|
str
|
Repository name in the form |
Source code in src/aibs_informatics_core/env.py
119 120 121 122 123 124 125 126 127 128 | |
get_resource_name ¶
get_resource_name(*names)
Generate a generic resource name with the env base prefix.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
*names
|
str
|
Name parts to join after the prefix. |
()
|
Returns:
| Type | Description |
|---|---|
str
|
Prefixed resource name string. |
Source code in src/aibs_informatics_core/env.py
130 131 132 133 134 135 136 137 138 139 | |
get_ssm_param_name ¶
get_ssm_param_name(*names)
Generate an SSM parameter name.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
*names
|
str
|
Parameter name parts. |
()
|
Returns:
| Type | Description |
|---|---|
str
|
SSM parameter name in the form |
Source code in src/aibs_informatics_core/env.py
228 229 230 231 232 233 234 235 236 237 | |
get_stack_name ¶
get_stack_name(*names)
Generate a CloudFormation stack name with the env base prefix.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
*names
|
str
|
Name parts to join after the prefix. |
()
|
Returns:
| Type | Description |
|---|---|
str
|
Prefixed stack name string. |
Source code in src/aibs_informatics_core/env.py
86 87 88 89 90 91 92 93 94 95 | |
get_stage_name ¶
get_stage_name(*names)
Generate a pipeline stage name with the env base prefix.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
*names
|
str
|
Name parts to join after the prefix. |
()
|
Returns:
| Type | Description |
|---|---|
str
|
Prefixed stage name string. |
Source code in src/aibs_informatics_core/env.py
97 98 99 100 101 102 103 104 105 106 | |
get_state_machine_log_group_name ¶
get_state_machine_log_group_name(name)
Generate a CloudWatch log group name for a Step Functions state machine.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
State machine base name. |
required |
Returns:
| Type | Description |
|---|---|
str
|
Log group name in the format |
Source code in src/aibs_informatics_core/env.py
186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 | |
get_state_machine_name ¶
get_state_machine_name(name)
Generate a Step Functions state machine name with the env base prefix.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
State machine base name. |
required |
Returns:
| Type | Description |
|---|---|
str
|
Prefixed state machine name string. |
Source code in src/aibs_informatics_core/env.py
163 164 165 166 167 168 169 170 171 172 | |
get_table_name ¶
get_table_name(name)
Generate a DynamoDB table name with the env base prefix.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Table base name. |
required |
Returns:
| Type | Description |
|---|---|
str
|
Prefixed table name string. |
Source code in src/aibs_informatics_core/env.py
141 142 143 144 145 146 147 148 149 150 | |
load_env_label__from_env
classmethod
¶
load_env_label__from_env()
Load the environment label from environment variables.
Checks env_label, ENV_LABEL, label, and LABEL
environment variables.
Returns:
| Type | Description |
|---|---|
str | None
|
The label string, or None if not set. |
Source code in src/aibs_informatics_core/env.py
357 358 359 360 361 362 363 364 365 366 367 | |
load_env_type__from_env
classmethod
¶
load_env_type__from_env()
Load the environment type from environment variables.
Checks env_type and ENV_TYPE environment variables.
Returns:
| Type | Description |
|---|---|
EnvType
|
The resolved EnvType. |
Raises:
| Type | Description |
|---|---|
ApplicationException
|
If no environment type variable is found. |
Source code in src/aibs_informatics_core/env.py
338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 | |
prefixed ¶
prefixed(*names, delim='-')
Return a string with the env base as prefix.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
*names
|
str
|
Name parts to join after the prefix. |
()
|
delim
|
SupportedDelim
|
Delimiter between parts. |
'-'
|
Returns:
| Type | Description |
|---|---|
str
|
String in the form |
Source code in src/aibs_informatics_core/env.py
239 240 241 242 243 244 245 246 247 248 249 250 251 252 | |
suffixed ¶
suffixed(*names, delim='-')
Return a string with the env base as suffix.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
*names
|
str
|
Name parts to join before the suffix. |
()
|
delim
|
SupportedDelim
|
Delimiter between parts. |
'-'
|
Returns:
| Type | Description |
|---|---|
str
|
String in the form |
Source code in src/aibs_informatics_core/env.py
254 255 256 257 258 259 260 261 262 263 264 265 266 267 | |
to_env ¶
to_env()
Write the env base value to the env_base environment variable.
Source code in src/aibs_informatics_core/env.py
282 283 284 | |
to_type_and_label ¶
to_type_and_label()
Parse into environment type and optional label.
Returns:
| Type | Description |
|---|---|
tuple[EnvType, str | None]
|
A tuple of |
Source code in src/aibs_informatics_core/env.py
286 287 288 289 290 291 292 293 | |
EnvBaseEnumMixins ¶
Mixin for enums that provides environment-prefixed name generation.
prefix_with ¶
prefix_with(env_base=None, env_base_class=None)
Prefix the enum value with an environment base.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
env_base
|
E | None
|
Optional EnvBase instance to use. |
None
|
env_base_class
|
type[E] | None
|
Optional EnvBase subclass for loading from environment. |
None
|
Returns:
| Type | Description |
|---|---|
str
|
The prefixed string. |
Source code in src/aibs_informatics_core/env.py
420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 | |
EnvBaseMixins ¶
EnvBaseMixinsBase ¶
Bases: Generic[E]
Generic mixin providing env_base property with lazy environment loading.
env_base
property
writable
¶
env_base
returns env base
If env base has not been set, it sets the value using environment variables
Returns:
| Type | Description |
|---|---|
E
|
env base |
ResourceNameBaseEnum ¶
Bases: str, EnvBaseEnumMixins, Enum
Enum for defining resource names that can be prefixed with an environment base.
get_name ¶
get_name(env_base)
Get the environment-prefixed resource name.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
env_base
|
EnvBase
|
The environment base to use as prefix. |
required |
Returns:
| Type | Description |
|---|---|
str
|
The prefixed resource name string. |
Source code in src/aibs_informatics_core/env.py
443 444 445 446 447 448 449 450 451 452 | |
get_env_base ¶
get_env_base() -> EnvBase
get_env_base(env_base: str | EnvBase) -> EnvBase
get_env_base(env_base: Literal[None]) -> EnvBase
get_env_base(
env_base: Literal[None], env_base_class: Literal[None]
) -> EnvBase
get_env_base(
env_base: Literal[None], env_base_class: type[E]
) -> E
get_env_base(
env_base: str | E, env_base_class: type[E]
) -> E
get_env_base(
env_base: str | E, env_base_class: Literal[None]
) -> EnvBase
get_env_base(env_base=None, env_base_class=None)
Resolve an EnvBase, loading from environment if not provided.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
env_base
|
str | E | None
|
An existing env base string/instance, or None to load from environment. |
None
|
env_base_class
|
type[E | EnvBase] | None
|
The EnvBase subclass to use for construction. Defaults to EnvBase. |
None
|
Returns:
| Type | Description |
|---|---|
E | EnvBase
|
The resolved EnvBase instance. |
Source code in src/aibs_informatics_core/env.py
488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 | |
get_env_label ¶
get_env_label(env_label=MISSING, env_base_class=None)
Get Environment label
If not specified, it will be loaded from envirionment (First checking for env base, then label)
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
env_label
|
Union[Optional[str], _Missing]
|
env label. Defaults to MISSING. |
MISSING
|
Returns:
| Type | Description |
|---|---|
str | None
|
env label string if exists, else None |
Source code in src/aibs_informatics_core/env.py
548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 | |
get_env_type ¶
get_env_type(
env_type=None,
default_env_type=None,
env_base_class=None,
)
Resolve an EnvType, loading from environment if not provided.
If loading from environment, the EnvBase variable takes precedence
over the EnvType variable.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
env_type
|
str | EnvType | None
|
An existing env type string/instance, or None to load from environment. |
None
|
default_env_type
|
EnvType | None
|
Fallback EnvType if loading from environment fails. |
None
|
env_base_class
|
E | None
|
Optional EnvBase subclass for environment resolution. |
None
|
Returns:
| Type | Description |
|---|---|
EnvType
|
The resolved EnvType. |
Raises:
| Type | Description |
|---|---|
Exception
|
If no env type can be resolved and no default is provided. |
Source code in src/aibs_informatics_core/env.py
510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 | |