|
| 1 | +"""Env dataclass to load and hold all environment variables |
| 2 | +""" |
| 3 | +from dataclasses import dataclass |
1 | 4 | import os
|
2 |
| -from dotenv import load_dotenv |
3 |
| - |
4 |
| - |
5 |
| -class Singleton(object): |
6 |
| - _instances = {} |
7 |
| - |
8 |
| - def __new__(class_, *args, **kwargs): |
9 |
| - if class_ not in class_._instances: |
10 |
| - class_._instances[class_] = super(Singleton, class_).__new__(class_, *args, **kwargs) # noqa E501 |
11 |
| - return class_._instances[class_] |
12 |
| - |
13 |
| - |
14 |
| -class Env(Singleton): |
15 |
| - |
16 |
| - def __init__(self): |
17 |
| - load_dotenv() |
18 |
| - self._workspace_name = os.environ.get("WORKSPACE_NAME") |
19 |
| - self._resource_group = os.environ.get("RESOURCE_GROUP") |
20 |
| - self._subscription_id = os.environ.get("SUBSCRIPTION_ID") |
21 |
| - self._tenant_id = os.environ.get("TENANT_ID") |
22 |
| - self._app_id = os.environ.get("SP_APP_ID") |
23 |
| - self._app_secret = os.environ.get("SP_APP_SECRET") |
24 |
| - self._vm_size = os.environ.get("AML_COMPUTE_CLUSTER_CPU_SKU") |
25 |
| - self._compute_name = os.environ.get("AML_COMPUTE_CLUSTER_NAME") |
26 |
| - self._vm_priority = os.environ.get("AML_CLUSTER_PRIORITY", 'lowpriority') # noqa E501 |
27 |
| - self._min_nodes = int(os.environ.get("AML_CLUSTER_MIN_NODES", 0)) |
28 |
| - self._max_nodes = int(os.environ.get("AML_CLUSTER_MAX_NODES", 4)) |
29 |
| - self._build_id = os.environ.get("BUILD_BUILDID") |
30 |
| - self._pipeline_name = os.environ.get("TRAINING_PIPELINE_NAME") |
31 |
| - self._sources_directory_train = os.environ.get("SOURCES_DIR_TRAIN") |
32 |
| - self._train_script_path = os.environ.get("TRAIN_SCRIPT_PATH") |
33 |
| - self._evaluate_script_path = os.environ.get("EVALUATE_SCRIPT_PATH") |
34 |
| - self._register_script_path = os.environ.get("REGISTER_SCRIPT_PATH") |
35 |
| - self._model_name = os.environ.get("MODEL_NAME") |
36 |
| - self._experiment_name = os.environ.get("EXPERIMENT_NAME") |
37 |
| - self._model_version = os.environ.get('MODEL_VERSION') |
38 |
| - self._image_name = os.environ.get('IMAGE_NAME') |
39 |
| - self._db_cluster_id = os.environ.get("DB_CLUSTER_ID") |
40 |
| - self._score_script = os.environ.get("SCORE_SCRIPT") |
41 |
| - self._build_uri = os.environ.get("BUILD_URI") |
42 |
| - self._dataset_name = os.environ.get("DATASET_NAME") |
43 |
| - self._datastore_name = os.environ.get("DATASTORE_NAME") |
44 |
| - self._dataset_version = os.environ.get("DATASET_VERSION") |
45 |
| - self._run_evaluation = os.environ.get("RUN_EVALUATION", "true") |
46 |
| - self._allow_run_cancel = os.environ.get( |
47 |
| - "ALLOW_RUN_CANCEL", "true") |
48 |
| - self._aml_env_name = os.environ.get("AML_ENV_NAME") |
49 |
| - self._rebuild_env = os.environ.get("AML_REBUILD_ENVIRONMENT", |
50 |
| - "false").lower().strip() == "true" |
51 |
| - |
52 |
| - @property |
53 |
| - def workspace_name(self): |
54 |
| - return self._workspace_name |
55 |
| - |
56 |
| - @property |
57 |
| - def resource_group(self): |
58 |
| - return self._resource_group |
59 |
| - |
60 |
| - @property |
61 |
| - def subscription_id(self): |
62 |
| - return self._subscription_id |
63 |
| - |
64 |
| - @property |
65 |
| - def tenant_id(self): |
66 |
| - return self._tenant_id |
67 |
| - |
68 |
| - @property |
69 |
| - def app_id(self): |
70 |
| - return self._app_id |
71 |
| - |
72 |
| - @property |
73 |
| - def app_secret(self): |
74 |
| - return self._app_secret |
75 |
| - |
76 |
| - @property |
77 |
| - def vm_size(self): |
78 |
| - return self._vm_size |
79 |
| - |
80 |
| - @property |
81 |
| - def compute_name(self): |
82 |
| - return self._compute_name |
83 |
| - |
84 |
| - @property |
85 |
| - def db_cluster_id(self): |
86 |
| - return self._db_cluster_id |
87 |
| - |
88 |
| - @property |
89 |
| - def build_id(self): |
90 |
| - return self._build_id |
91 |
| - |
92 |
| - @property |
93 |
| - def pipeline_name(self): |
94 |
| - return self._pipeline_name |
| 5 | +from typing import Optional |
95 | 6 |
|
96 |
| - @property |
97 |
| - def sources_directory_train(self): |
98 |
| - return self._sources_directory_train |
99 |
| - |
100 |
| - @property |
101 |
| - def train_script_path(self): |
102 |
| - return self._train_script_path |
103 |
| - |
104 |
| - @property |
105 |
| - def evaluate_script_path(self): |
106 |
| - return self._evaluate_script_path |
107 |
| - |
108 |
| - @property |
109 |
| - def register_script_path(self): |
110 |
| - return self._register_script_path |
111 |
| - |
112 |
| - @property |
113 |
| - def model_name(self): |
114 |
| - return self._model_name |
115 |
| - |
116 |
| - @property |
117 |
| - def experiment_name(self): |
118 |
| - return self._experiment_name |
119 |
| - |
120 |
| - @property |
121 |
| - def vm_priority(self): |
122 |
| - return self._vm_priority |
123 |
| - |
124 |
| - @property |
125 |
| - def min_nodes(self): |
126 |
| - return self._min_nodes |
127 |
| - |
128 |
| - @property |
129 |
| - def max_nodes(self): |
130 |
| - return self._max_nodes |
131 |
| - |
132 |
| - @property |
133 |
| - def model_version(self): |
134 |
| - return self._model_version |
135 |
| - |
136 |
| - @property |
137 |
| - def image_name(self): |
138 |
| - return self._image_name |
139 |
| - |
140 |
| - @property |
141 |
| - def score_script(self): |
142 |
| - return self._score_script |
143 |
| - |
144 |
| - @property |
145 |
| - def build_uri(self): |
146 |
| - return self._build_uri |
147 |
| - |
148 |
| - @property |
149 |
| - def dataset_name(self): |
150 |
| - return self._dataset_name |
151 |
| - |
152 |
| - @property |
153 |
| - def datastore_name(self): |
154 |
| - return self._datastore_name |
155 |
| - |
156 |
| - @property |
157 |
| - def dataset_version(self): |
158 |
| - return self._dataset_version |
159 |
| - |
160 |
| - @property |
161 |
| - def run_evaluation(self): |
162 |
| - return self._run_evaluation |
163 |
| - |
164 |
| - @property |
165 |
| - def allow_run_cancel(self): |
166 |
| - return self._allow_run_cancel |
| 7 | +from dotenv import load_dotenv |
167 | 8 |
|
168 |
| - @property |
169 |
| - def aml_env_name(self): |
170 |
| - return self._aml_env_name |
171 | 9 |
|
172 |
| - @property |
173 |
| - def rebuild_env(self): |
174 |
| - return self._rebuild_env |
| 10 | +@dataclass(frozen=True) |
| 11 | +class Env: |
| 12 | + """Loads all environment variables into a predefined set of properties |
| 13 | + """ |
| 14 | + # to load .env file into environment variables for local execution |
| 15 | + load_dotenv() |
| 16 | + workspace_name: Optional[str] = os.environ.get("WORKSPACE_NAME") |
| 17 | + resource_group: Optional[str] = os.environ.get("RESOURCE_GROUP") |
| 18 | + subscription_id: Optional[str] = os.environ.get("SUBSCRIPTION_ID") |
| 19 | + tenant_id: Optional[str] = os.environ.get("TENANT_ID") |
| 20 | + app_id: Optional[str] = os.environ.get("SP_APP_ID") |
| 21 | + app_secret: Optional[str] = os.environ.get("SP_APP_SECRET") |
| 22 | + vm_size: Optional[str] = os.environ.get("AML_COMPUTE_CLUSTER_CPU_SKU") |
| 23 | + compute_name: Optional[str] = os.environ.get("AML_COMPUTE_CLUSTER_NAME") |
| 24 | + vm_priority: Optional[str] = os.environ.get("AML_CLUSTER_PRIORITY", |
| 25 | + 'lowpriority') |
| 26 | + min_nodes: int = int(os.environ.get("AML_CLUSTER_MIN_NODES", 0)) |
| 27 | + max_nodes: int = int(os.environ.get("AML_CLUSTER_MAX_NODES", 4)) |
| 28 | + build_id: Optional[str] = os.environ.get("BUILD_BUILDID") |
| 29 | + pipeline_name: Optional[str] = os.environ.get("TRAINING_PIPELINE_NAME") |
| 30 | + sources_directory_train: Optional[str] = os.environ.get( |
| 31 | + "SOURCES_DIR_TRAIN") |
| 32 | + train_script_path: Optional[str] = os.environ.get("TRAIN_SCRIPT_PATH") |
| 33 | + evaluate_script_path: Optional[str] = os.environ.get( |
| 34 | + "EVALUATE_SCRIPT_PATH") |
| 35 | + register_script_path: Optional[str] = os.environ.get( |
| 36 | + "REGISTER_SCRIPT_PATH") |
| 37 | + model_name: Optional[str] = os.environ.get("MODEL_NAME") |
| 38 | + experiment_name: Optional[str] = os.environ.get("EXPERIMENT_NAME") |
| 39 | + model_version: Optional[str] = os.environ.get('MODEL_VERSION') |
| 40 | + image_name: Optional[str] = os.environ.get('IMAGE_NAME') |
| 41 | + db_cluster_id: Optional[str] = os.environ.get("DB_CLUSTER_ID") |
| 42 | + score_script: Optional[str] = os.environ.get("SCORE_SCRIPT") |
| 43 | + build_uri: Optional[str] = os.environ.get("BUILD_URI") |
| 44 | + dataset_name: Optional[str] = os.environ.get("DATASET_NAME") |
| 45 | + datastore_name: Optional[str] = os.environ.get("DATASTORE_NAME") |
| 46 | + dataset_version: Optional[str] = os.environ.get("DATASET_VERSION") |
| 47 | + run_evaluation: Optional[str] = os.environ.get("RUN_EVALUATION", "true") |
| 48 | + allow_run_cancel: Optional[str] = os.environ.get("ALLOW_RUN_CANCEL", |
| 49 | + "true") |
| 50 | + aml_env_name: Optional[str] = os.environ.get("AML_ENV_NAME") |
| 51 | + rebuild_env: Optional[bool] = os.environ.get( |
| 52 | + "AML_REBUILD_ENVIRONMENT", "false").lower().strip() == "true" |
0 commit comments