|
@@ -41,7 +41,7 @@ class DataNodeConfig(Section):
|
|
|
"""
|
|
|
|
|
|
name = "DATA_NODE"
|
|
|
-
|
|
|
+ _ALL_TYPES = (str, int, float, bool, list, dict, tuple, set, type(None), callable)
|
|
|
_STORAGE_TYPE_KEY = "storage_type"
|
|
|
_STORAGE_TYPE_VALUE_PICKLE = "pickle"
|
|
|
_STORAGE_TYPE_VALUE_SQL_TABLE = "sql_table"
|
|
@@ -157,6 +157,99 @@ class DataNodeConfig(Section):
|
|
|
_OPTIONAL_AWS_S3_GET_OBJECT_PARAMETERS_PROPERTY = "aws_s3_get_object_parameters"
|
|
|
_OPTIONAL_AWS_S3_PUT_OBJECT_PARAMETERS_PROPERTY = "aws_s3_put_object_parameters"
|
|
|
|
|
|
+ _PROPERTIES_TYPES: Dict[str, Dict[str, Any]] = {
|
|
|
+ _STORAGE_TYPE_VALUE_GENERIC: {
|
|
|
+ _OPTIONAL_READ_FUNCTION_GENERIC_PROPERTY: Callable,
|
|
|
+ _OPTIONAL_WRITE_FUNCTION_GENERIC_PROPERTY: Callable,
|
|
|
+ _OPTIONAL_READ_FUNCTION_ARGS_GENERIC_PROPERTY: list,
|
|
|
+ _OPTIONAL_WRITE_FUNCTION_ARGS_GENERIC_PROPERTY: list,
|
|
|
+ },
|
|
|
+ _STORAGE_TYPE_VALUE_SQL: {
|
|
|
+ _REQUIRED_DB_NAME_SQL_PROPERTY: str,
|
|
|
+ _REQUIRED_DB_ENGINE_SQL_PROPERTY: str,
|
|
|
+ _REQUIRED_READ_QUERY_SQL_PROPERTY: str,
|
|
|
+ _REQUIRED_WRITE_QUERY_BUILDER_SQL_PROPERTY: Callable,
|
|
|
+ _OPTIONAL_APPEND_QUERY_BUILDER_SQL_PROPERTY: Callable,
|
|
|
+ _OPTIONAL_DB_USERNAME_SQL_PROPERTY: str,
|
|
|
+ _OPTIONAL_DB_PASSWORD_SQL_PROPERTY: str,
|
|
|
+ _OPTIONAL_HOST_SQL_PROPERTY: str,
|
|
|
+ _OPTIONAL_PORT_SQL_PROPERTY: int,
|
|
|
+ _OPTIONAL_DRIVER_SQL_PROPERTY: str,
|
|
|
+ _OPTIONAL_FOLDER_PATH_SQLITE_PROPERTY: str,
|
|
|
+ _OPTIONAL_FILE_EXTENSION_SQLITE_PROPERTY: str,
|
|
|
+ _OPTIONAL_DB_EXTRA_ARGS_SQL_PROPERTY: dict,
|
|
|
+ _OPTIONAL_EXPOSED_TYPE_SQL_PROPERTY: (str, Callable),
|
|
|
+ },
|
|
|
+ _STORAGE_TYPE_VALUE_SQL_TABLE: {
|
|
|
+ _REQUIRED_DB_NAME_SQL_PROPERTY: str,
|
|
|
+ _REQUIRED_DB_ENGINE_SQL_PROPERTY: str,
|
|
|
+ _REQUIRED_TABLE_NAME_SQL_TABLE_PROPERTY: str,
|
|
|
+ _OPTIONAL_DB_USERNAME_SQL_PROPERTY: str,
|
|
|
+ _OPTIONAL_DB_PASSWORD_SQL_PROPERTY: str,
|
|
|
+ _OPTIONAL_HOST_SQL_PROPERTY: str,
|
|
|
+ _OPTIONAL_PORT_SQL_PROPERTY: int,
|
|
|
+ _OPTIONAL_DRIVER_SQL_PROPERTY: str,
|
|
|
+ _OPTIONAL_FOLDER_PATH_SQLITE_PROPERTY: str,
|
|
|
+ _OPTIONAL_FILE_EXTENSION_SQLITE_PROPERTY: str,
|
|
|
+ _OPTIONAL_DB_EXTRA_ARGS_SQL_PROPERTY: dict,
|
|
|
+ _OPTIONAL_EXPOSED_TYPE_SQL_PROPERTY: (str, Callable),
|
|
|
+ },
|
|
|
+ _STORAGE_TYPE_VALUE_CSV: {
|
|
|
+ _OPTIONAL_DEFAULT_PATH_CSV_PROPERTY: str,
|
|
|
+ _OPTIONAL_ENCODING_PROPERTY: str,
|
|
|
+ _OPTIONAL_HAS_HEADER_CSV_PROPERTY: bool,
|
|
|
+ _OPTIONAL_EXPOSED_TYPE_CSV_PROPERTY: (str, Callable),
|
|
|
+ },
|
|
|
+ _STORAGE_TYPE_VALUE_EXCEL: {
|
|
|
+ _OPTIONAL_DEFAULT_PATH_EXCEL_PROPERTY: str,
|
|
|
+ _OPTIONAL_HAS_HEADER_EXCEL_PROPERTY: bool,
|
|
|
+ _OPTIONAL_SHEET_NAME_EXCEL_PROPERTY: (str, list),
|
|
|
+ _OPTIONAL_EXPOSED_TYPE_EXCEL_PROPERTY: (str, Callable),
|
|
|
+ },
|
|
|
+ _STORAGE_TYPE_VALUE_IN_MEMORY: {
|
|
|
+ _OPTIONAL_DEFAULT_DATA_IN_MEMORY_PROPERTY: _ALL_TYPES,
|
|
|
+ },
|
|
|
+ _STORAGE_TYPE_VALUE_PICKLE: {
|
|
|
+ _OPTIONAL_DEFAULT_PATH_PICKLE_PROPERTY: str,
|
|
|
+ _OPTIONAL_DEFAULT_DATA_PICKLE_PROPERTY: _ALL_TYPES,
|
|
|
+ },
|
|
|
+ _STORAGE_TYPE_VALUE_JSON: {
|
|
|
+ _OPTIONAL_DEFAULT_PATH_JSON_PROPERTY: str,
|
|
|
+ _OPTIONAL_ENCODING_PROPERTY: str,
|
|
|
+ _OPTIONAL_ENCODER_JSON_PROPERTY: json.JSONEncoder,
|
|
|
+ _OPTIONAL_DECODER_JSON_PROPERTY: json.JSONDecoder,
|
|
|
+ },
|
|
|
+ _STORAGE_TYPE_VALUE_PARQUET: {
|
|
|
+ _OPTIONAL_DEFAULT_PATH_PARQUET_PROPERTY: str,
|
|
|
+ _OPTIONAL_ENGINE_PARQUET_PROPERTY: str,
|
|
|
+ _OPTIONAL_COMPRESSION_PARQUET_PROPERTY: str,
|
|
|
+ _OPTIONAL_READ_KWARGS_PARQUET_PROPERTY: dict,
|
|
|
+ _OPTIONAL_WRITE_KWARGS_PARQUET_PROPERTY: dict,
|
|
|
+ _OPTIONAL_EXPOSED_TYPE_PARQUET_PROPERTY: (str, Callable),
|
|
|
+ },
|
|
|
+ _STORAGE_TYPE_VALUE_MONGO_COLLECTION: {
|
|
|
+ _REQUIRED_DB_NAME_MONGO_PROPERTY: str,
|
|
|
+ _REQUIRED_COLLECTION_NAME_MONGO_PROPERTY: str,
|
|
|
+ _OPTIONAL_CUSTOM_DOCUMENT_MONGO_PROPERTY: str,
|
|
|
+ _OPTIONAL_USERNAME_MONGO_PROPERTY: str,
|
|
|
+ _OPTIONAL_PASSWORD_MONGO_PROPERTY: str,
|
|
|
+ _OPTIONAL_HOST_MONGO_PROPERTY: str,
|
|
|
+ _OPTIONAL_PORT_MONGO_PROPERTY: int,
|
|
|
+ _OPTIONAL_DRIVER_MONGO_PROPERTY: str,
|
|
|
+ _OPTIONAL_DB_EXTRA_ARGS_MONGO_PROPERTY: dict,
|
|
|
+ },
|
|
|
+ _STORAGE_TYPE_VALUE_S3_OBJECT: {
|
|
|
+ _REQUIRED_AWS_ACCESS_KEY_ID_PROPERTY: str,
|
|
|
+ _REQUIRED_AWS_SECRET_ACCESS_KEY_PROPERTY: str,
|
|
|
+ _REQUIRED_AWS_STORAGE_BUCKET_NAME_PROPERTY: str,
|
|
|
+ _REQUIRED_AWS_S3_OBJECT_KEY_PROPERTY: str,
|
|
|
+ _OPTIONAL_AWS_REGION_PROPERTY: str,
|
|
|
+ _OPTIONAL_AWS_S3_CLIENT_PARAMETERS_PROPERTY: dict,
|
|
|
+ _OPTIONAL_AWS_S3_GET_OBJECT_PARAMETERS_PROPERTY: dict,
|
|
|
+ _OPTIONAL_AWS_S3_PUT_OBJECT_PARAMETERS_PROPERTY: dict,
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
_REQUIRED_PROPERTIES: Dict[str, List] = {
|
|
|
_STORAGE_TYPE_VALUE_PICKLE: [],
|
|
|
_STORAGE_TYPE_VALUE_SQL_TABLE: [
|