@@ -41,7 +41,7 @@ class DataNodeConfig(Section):
4141 """
4242
4343 name = "DATA_NODE"
44-
44+ _ALL_TYPES = ( str , int , float , bool , list , dict , tuple , set , type ( None ), callable )
4545 _STORAGE_TYPE_KEY = "storage_type"
4646 _STORAGE_TYPE_VALUE_PICKLE = "pickle"
4747 _STORAGE_TYPE_VALUE_SQL_TABLE = "sql_table"
@@ -157,6 +157,99 @@ class DataNodeConfig(Section):
157157 _OPTIONAL_AWS_S3_GET_OBJECT_PARAMETERS_PROPERTY = "aws_s3_get_object_parameters"
158158 _OPTIONAL_AWS_S3_PUT_OBJECT_PARAMETERS_PROPERTY = "aws_s3_put_object_parameters"
159159
160+ _PROPERTIES_TYPES : Dict [str , Dict [str , Any ]] = {
161+ _STORAGE_TYPE_VALUE_GENERIC : {
162+ _OPTIONAL_READ_FUNCTION_GENERIC_PROPERTY : Callable ,
163+ _OPTIONAL_WRITE_FUNCTION_GENERIC_PROPERTY : Callable ,
164+ _OPTIONAL_READ_FUNCTION_ARGS_GENERIC_PROPERTY : list ,
165+ _OPTIONAL_WRITE_FUNCTION_ARGS_GENERIC_PROPERTY : list ,
166+ },
167+ _STORAGE_TYPE_VALUE_SQL : {
168+ _REQUIRED_DB_NAME_SQL_PROPERTY : str ,
169+ _REQUIRED_DB_ENGINE_SQL_PROPERTY : str ,
170+ _REQUIRED_READ_QUERY_SQL_PROPERTY : str ,
171+ _REQUIRED_WRITE_QUERY_BUILDER_SQL_PROPERTY : Callable ,
172+ _OPTIONAL_APPEND_QUERY_BUILDER_SQL_PROPERTY : Callable ,
173+ _OPTIONAL_DB_USERNAME_SQL_PROPERTY : str ,
174+ _OPTIONAL_DB_PASSWORD_SQL_PROPERTY : str ,
175+ _OPTIONAL_HOST_SQL_PROPERTY : str ,
176+ _OPTIONAL_PORT_SQL_PROPERTY : int ,
177+ _OPTIONAL_DRIVER_SQL_PROPERTY : str ,
178+ _OPTIONAL_FOLDER_PATH_SQLITE_PROPERTY : str ,
179+ _OPTIONAL_FILE_EXTENSION_SQLITE_PROPERTY : str ,
180+ _OPTIONAL_DB_EXTRA_ARGS_SQL_PROPERTY : dict ,
181+ _OPTIONAL_EXPOSED_TYPE_SQL_PROPERTY : (str , Callable ),
182+ },
183+ _STORAGE_TYPE_VALUE_SQL_TABLE : {
184+ _REQUIRED_DB_NAME_SQL_PROPERTY : str ,
185+ _REQUIRED_DB_ENGINE_SQL_PROPERTY : str ,
186+ _REQUIRED_TABLE_NAME_SQL_TABLE_PROPERTY : str ,
187+ _OPTIONAL_DB_USERNAME_SQL_PROPERTY : str ,
188+ _OPTIONAL_DB_PASSWORD_SQL_PROPERTY : str ,
189+ _OPTIONAL_HOST_SQL_PROPERTY : str ,
190+ _OPTIONAL_PORT_SQL_PROPERTY : int ,
191+ _OPTIONAL_DRIVER_SQL_PROPERTY : str ,
192+ _OPTIONAL_FOLDER_PATH_SQLITE_PROPERTY : str ,
193+ _OPTIONAL_FILE_EXTENSION_SQLITE_PROPERTY : str ,
194+ _OPTIONAL_DB_EXTRA_ARGS_SQL_PROPERTY : dict ,
195+ _OPTIONAL_EXPOSED_TYPE_SQL_PROPERTY : (str , Callable ),
196+ },
197+ _STORAGE_TYPE_VALUE_CSV : {
198+ _OPTIONAL_DEFAULT_PATH_CSV_PROPERTY : str ,
199+ _OPTIONAL_ENCODING_PROPERTY : str ,
200+ _OPTIONAL_HAS_HEADER_CSV_PROPERTY : bool ,
201+ _OPTIONAL_EXPOSED_TYPE_CSV_PROPERTY : (str , Callable ),
202+ },
203+ _STORAGE_TYPE_VALUE_EXCEL : {
204+ _OPTIONAL_DEFAULT_PATH_EXCEL_PROPERTY : str ,
205+ _OPTIONAL_HAS_HEADER_EXCEL_PROPERTY : bool ,
206+ _OPTIONAL_SHEET_NAME_EXCEL_PROPERTY : (str , list ),
207+ _OPTIONAL_EXPOSED_TYPE_EXCEL_PROPERTY : (str , Callable ),
208+ },
209+ _STORAGE_TYPE_VALUE_IN_MEMORY : {
210+ _OPTIONAL_DEFAULT_DATA_IN_MEMORY_PROPERTY : _ALL_TYPES ,
211+ },
212+ _STORAGE_TYPE_VALUE_PICKLE : {
213+ _OPTIONAL_DEFAULT_PATH_PICKLE_PROPERTY : str ,
214+ _OPTIONAL_DEFAULT_DATA_PICKLE_PROPERTY : _ALL_TYPES ,
215+ },
216+ _STORAGE_TYPE_VALUE_JSON : {
217+ _OPTIONAL_DEFAULT_PATH_JSON_PROPERTY : str ,
218+ _OPTIONAL_ENCODING_PROPERTY : str ,
219+ _OPTIONAL_ENCODER_JSON_PROPERTY : json .JSONEncoder ,
220+ _OPTIONAL_DECODER_JSON_PROPERTY : json .JSONDecoder ,
221+ },
222+ _STORAGE_TYPE_VALUE_PARQUET : {
223+ _OPTIONAL_DEFAULT_PATH_PARQUET_PROPERTY : str ,
224+ _OPTIONAL_ENGINE_PARQUET_PROPERTY : str ,
225+ _OPTIONAL_COMPRESSION_PARQUET_PROPERTY : str ,
226+ _OPTIONAL_READ_KWARGS_PARQUET_PROPERTY : dict ,
227+ _OPTIONAL_WRITE_KWARGS_PARQUET_PROPERTY : dict ,
228+ _OPTIONAL_EXPOSED_TYPE_PARQUET_PROPERTY : (str , Callable ),
229+ },
230+ _STORAGE_TYPE_VALUE_MONGO_COLLECTION : {
231+ _REQUIRED_DB_NAME_MONGO_PROPERTY : str ,
232+ _REQUIRED_COLLECTION_NAME_MONGO_PROPERTY : str ,
233+ _OPTIONAL_CUSTOM_DOCUMENT_MONGO_PROPERTY : str ,
234+ _OPTIONAL_USERNAME_MONGO_PROPERTY : str ,
235+ _OPTIONAL_PASSWORD_MONGO_PROPERTY : str ,
236+ _OPTIONAL_HOST_MONGO_PROPERTY : str ,
237+ _OPTIONAL_PORT_MONGO_PROPERTY : int ,
238+ _OPTIONAL_DRIVER_MONGO_PROPERTY : str ,
239+ _OPTIONAL_DB_EXTRA_ARGS_MONGO_PROPERTY : dict ,
240+ },
241+ _STORAGE_TYPE_VALUE_S3_OBJECT : {
242+ _REQUIRED_AWS_ACCESS_KEY_ID_PROPERTY : str ,
243+ _REQUIRED_AWS_SECRET_ACCESS_KEY_PROPERTY : str ,
244+ _REQUIRED_AWS_STORAGE_BUCKET_NAME_PROPERTY : str ,
245+ _REQUIRED_AWS_S3_OBJECT_KEY_PROPERTY : str ,
246+ _OPTIONAL_AWS_REGION_PROPERTY : str ,
247+ _OPTIONAL_AWS_S3_CLIENT_PARAMETERS_PROPERTY : dict ,
248+ _OPTIONAL_AWS_S3_GET_OBJECT_PARAMETERS_PROPERTY : dict ,
249+ _OPTIONAL_AWS_S3_PUT_OBJECT_PARAMETERS_PROPERTY : dict ,
250+ },
251+ }
252+
160253 _REQUIRED_PROPERTIES : Dict [str , List ] = {
161254 _STORAGE_TYPE_VALUE_PICKLE : [],
162255 _STORAGE_TYPE_VALUE_SQL_TABLE : [
0 commit comments