keboola.component 1.6.5__tar.gz → 1.6.7__tar.gz
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.
- {keboola.component-1.6.5/src/keboola.component.egg-info → keboola.component-1.6.7}/PKG-INFO +1 -1
- {keboola.component-1.6.5 → keboola.component-1.6.7}/setup.py +1 -1
- {keboola.component-1.6.5 → keboola.component-1.6.7}/src/keboola/component/dao.py +72 -24
- {keboola.component-1.6.5 → keboola.component-1.6.7}/src/keboola/component/interface.py +12 -4
- {keboola.component-1.6.5 → keboola.component-1.6.7/src/keboola.component.egg-info}/PKG-INFO +1 -1
- {keboola.component-1.6.5 → keboola.component-1.6.7}/LICENSE +0 -0
- {keboola.component-1.6.5 → keboola.component-1.6.7}/README.md +0 -0
- {keboola.component-1.6.5 → keboola.component-1.6.7}/setup.cfg +0 -0
- {keboola.component-1.6.5 → keboola.component-1.6.7}/src/keboola/component/__init__.py +0 -0
- {keboola.component-1.6.5 → keboola.component-1.6.7}/src/keboola/component/base.py +0 -0
- {keboola.component-1.6.5 → keboola.component-1.6.7}/src/keboola/component/exceptions.py +0 -0
- {keboola.component-1.6.5 → keboola.component-1.6.7}/src/keboola/component/sync_actions.py +0 -0
- {keboola.component-1.6.5 → keboola.component-1.6.7}/src/keboola/component/table_schema.py +0 -0
- {keboola.component-1.6.5 → keboola.component-1.6.7}/src/keboola.component.egg-info/SOURCES.txt +0 -0
- {keboola.component-1.6.5 → keboola.component-1.6.7}/src/keboola.component.egg-info/dependency_links.txt +0 -0
- {keboola.component-1.6.5 → keboola.component-1.6.7}/src/keboola.component.egg-info/not-zip-safe +0 -0
- {keboola.component-1.6.5 → keboola.component-1.6.7}/src/keboola.component.egg-info/requires.txt +0 -0
- {keboola.component-1.6.5 → keboola.component-1.6.7}/src/keboola.component.egg-info/top_level.txt +0 -0
|
@@ -66,6 +66,7 @@ class EnvironmentVariables:
|
|
|
66
66
|
logger_port: str
|
|
67
67
|
|
|
68
68
|
data_type_support: str
|
|
69
|
+
project_features: str
|
|
69
70
|
|
|
70
71
|
|
|
71
72
|
class SupportedDataTypes(str, Enum):
|
|
@@ -849,6 +850,15 @@ class TableDefinition(IODefinition):
|
|
|
849
850
|
self.delete_where_column = None
|
|
850
851
|
self.delete_where_operator = None
|
|
851
852
|
|
|
853
|
+
if kwargs.get('delete_where_values'):
|
|
854
|
+
self.delete_where_values = kwargs['delete_where_values']
|
|
855
|
+
|
|
856
|
+
if kwargs.get('delete_where_column'):
|
|
857
|
+
self.delete_where_column = kwargs['delete_where_column']
|
|
858
|
+
|
|
859
|
+
if kwargs.get('delete_where_operator'):
|
|
860
|
+
self.delete_where_operator = kwargs['delete_where_operator']
|
|
861
|
+
|
|
852
862
|
self.set_delete_where_from_dict(delete_where)
|
|
853
863
|
self.write_always = write_always
|
|
854
864
|
|
|
@@ -883,7 +893,8 @@ class TableDefinition(IODefinition):
|
|
|
883
893
|
delimiter: Optional[str] = ',',
|
|
884
894
|
delete_where: Optional[dict] = None,
|
|
885
895
|
write_always: Optional[bool] = False,
|
|
886
|
-
schema: Optional[
|
|
896
|
+
schema: Optional[Union[TypeOrderedDict[str, ColumnDefinition], list[str]]] = None,
|
|
897
|
+
**kwargs
|
|
887
898
|
):
|
|
888
899
|
"""
|
|
889
900
|
Factory method for creating a TableDefinition instance for output tables.
|
|
@@ -918,6 +929,7 @@ class TableDefinition(IODefinition):
|
|
|
918
929
|
delete_where=delete_where,
|
|
919
930
|
write_always=write_always,
|
|
920
931
|
schema=schema,
|
|
932
|
+
**kwargs
|
|
921
933
|
)
|
|
922
934
|
|
|
923
935
|
@classmethod
|
|
@@ -935,7 +947,7 @@ class TableDefinition(IODefinition):
|
|
|
935
947
|
delete_where: Optional[dict] = None,
|
|
936
948
|
stage: Optional[str] = 'in',
|
|
937
949
|
write_always: Optional[bool] = False,
|
|
938
|
-
schema: Optional[
|
|
950
|
+
schema: Optional[Union[TypeOrderedDict[str, ColumnDefinition], list[str]]] = None,
|
|
939
951
|
rows_count: Optional[int] = None,
|
|
940
952
|
data_size_bytes: Optional[int] = None,
|
|
941
953
|
is_alias: Optional[bool] = False,
|
|
@@ -945,7 +957,9 @@ class TableDefinition(IODefinition):
|
|
|
945
957
|
id: Optional[str] = '',
|
|
946
958
|
created: Optional[str] = None,
|
|
947
959
|
last_change_date: Optional[str] = None,
|
|
948
|
-
last_import_date: Optional[str] = None
|
|
960
|
+
last_import_date: Optional[str] = None,
|
|
961
|
+
**kwargs
|
|
962
|
+
):
|
|
949
963
|
"""
|
|
950
964
|
Factory method for creating a TableDefinition instance for input tables.
|
|
951
965
|
|
|
@@ -1000,7 +1014,9 @@ class TableDefinition(IODefinition):
|
|
|
1000
1014
|
id=id,
|
|
1001
1015
|
created=created,
|
|
1002
1016
|
last_change_date=last_change_date,
|
|
1003
|
-
last_import_date=last_import_date
|
|
1017
|
+
last_import_date=last_import_date,
|
|
1018
|
+
**kwargs
|
|
1019
|
+
)
|
|
1004
1020
|
|
|
1005
1021
|
@classmethod
|
|
1006
1022
|
def convert_to_column_definition(cls, column_name, column_metadata, primary_key=False):
|
|
@@ -1088,6 +1104,9 @@ class TableDefinition(IODefinition):
|
|
|
1088
1104
|
else:
|
|
1089
1105
|
name = Path(manifest_file_path).stem
|
|
1090
1106
|
|
|
1107
|
+
if manifest.get('name'):
|
|
1108
|
+
name = manifest.get('name')
|
|
1109
|
+
|
|
1091
1110
|
# test if the manifest is output and incompatible
|
|
1092
1111
|
force_legacy_mode = False
|
|
1093
1112
|
if not manifest.get('columns') and manifest.get('primary_key'):
|
|
@@ -1097,28 +1116,57 @@ class TableDefinition(IODefinition):
|
|
|
1097
1116
|
|
|
1098
1117
|
if manifest.get('id'):
|
|
1099
1118
|
stage = 'in'
|
|
1119
|
+
table_def = cls.build_input_definition(
|
|
1120
|
+
# helper parameters
|
|
1121
|
+
stage=stage,
|
|
1122
|
+
force_legacy_mode=force_legacy_mode,
|
|
1123
|
+
is_sliced=is_sliced,
|
|
1124
|
+
full_path=full_path,
|
|
1125
|
+
|
|
1126
|
+
# basic in manifest parameters
|
|
1127
|
+
id=manifest.get('id'),
|
|
1128
|
+
uri=manifest.get('uri'),
|
|
1129
|
+
name=name,
|
|
1130
|
+
primary_key=manifest.get('primary_key'),
|
|
1131
|
+
created=manifest.get('created'),
|
|
1132
|
+
last_change_date=manifest.get('last_change_date'),
|
|
1133
|
+
last_import_date=manifest.get('last_import_date'),
|
|
1134
|
+
schema=cls.return_schema_from_manifest(manifest),
|
|
1135
|
+
table_metadata=TableMetadata(manifest),
|
|
1136
|
+
|
|
1137
|
+
# additional in manifest parameters
|
|
1138
|
+
rows_count=manifest.get('rows_count'),
|
|
1139
|
+
data_size_bytes=manifest.get('data_size_bytes'),
|
|
1140
|
+
is_alias=manifest.get('is_alias'),
|
|
1141
|
+
attributes=manifest.get('attributes'),
|
|
1142
|
+
indexed_columns=manifest.get('indexed_columns'),
|
|
1143
|
+
)
|
|
1144
|
+
|
|
1100
1145
|
else:
|
|
1101
1146
|
stage = 'out'
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1147
|
+
table_def = cls.build_output_definition(
|
|
1148
|
+
# helper parameters
|
|
1149
|
+
stage=stage,
|
|
1150
|
+
force_legacy_mode=force_legacy_mode,
|
|
1151
|
+
is_sliced=is_sliced,
|
|
1152
|
+
full_path=full_path,
|
|
1153
|
+
|
|
1154
|
+
# basic out manifest parameters
|
|
1155
|
+
name=name,
|
|
1156
|
+
destination=manifest.get('destination'),
|
|
1157
|
+
schema=cls.return_schema_from_manifest(manifest),
|
|
1158
|
+
incremental=manifest.get('incremental'),
|
|
1159
|
+
primary_key=manifest.get('primary_key'),
|
|
1160
|
+
write_always=manifest.get('write_always', False),
|
|
1161
|
+
delimiter=manifest.get('delimiter', ','),
|
|
1162
|
+
enclosure=manifest.get('enclosure', '"'),
|
|
1163
|
+
table_metadata=TableMetadata(manifest),
|
|
1164
|
+
|
|
1165
|
+
# additional in manifest parameters
|
|
1166
|
+
delete_where_values=manifest.get('delete_where_values'),
|
|
1167
|
+
delete_where_column=manifest.get('delete_where_column'),
|
|
1168
|
+
delete_where_operator=manifest.get('delete_where_operator')
|
|
1169
|
+
)
|
|
1122
1170
|
|
|
1123
1171
|
return table_def
|
|
1124
1172
|
|
|
@@ -55,7 +55,8 @@ def init_environment_variables() -> dao.EnvironmentVariables:
|
|
|
55
55
|
real_user=os.environ.get('KBC_REALUSER', None),
|
|
56
56
|
logger_addr=os.environ.get('KBC_LOGGER_ADDR', None),
|
|
57
57
|
logger_port=os.environ.get('KBC_LOGGER_PORT', None),
|
|
58
|
-
data_type_support=os.environ.get('KBC_DATA_TYPE_SUPPORT', None)
|
|
58
|
+
data_type_support=os.environ.get('KBC_DATA_TYPE_SUPPORT', None),
|
|
59
|
+
project_features=os.environ.get('KBC_PROJECT_FEATURE_GATES', '')
|
|
59
60
|
)
|
|
60
61
|
|
|
61
62
|
|
|
@@ -902,6 +903,10 @@ class CommonInterface:
|
|
|
902
903
|
def files_in_path(self):
|
|
903
904
|
return os.path.join(self.data_folder_path, 'in', 'files')
|
|
904
905
|
|
|
906
|
+
@property
|
|
907
|
+
def _running_in_kbc(self):
|
|
908
|
+
return self.environment_variables.stack_id or False
|
|
909
|
+
|
|
905
910
|
@property
|
|
906
911
|
def is_legacy_queue(self) -> bool:
|
|
907
912
|
"""
|
|
@@ -909,9 +914,10 @@ class CommonInterface:
|
|
|
909
914
|
Returns:
|
|
910
915
|
|
|
911
916
|
"""
|
|
912
|
-
features =
|
|
917
|
+
features = self.environment_variables.project_features
|
|
918
|
+
|
|
913
919
|
is_legacy_queue = True
|
|
914
|
-
if not
|
|
920
|
+
if not self._running_in_kbc or 'queuev2' in features:
|
|
915
921
|
is_legacy_queue = False
|
|
916
922
|
return is_legacy_queue
|
|
917
923
|
|
|
@@ -961,7 +967,9 @@ class CommonInterface:
|
|
|
961
967
|
json.dump(manifest, manifest_file)
|
|
962
968
|
|
|
963
969
|
def _expects_legacy_manifest(self) -> bool:
|
|
964
|
-
legacy_manifest
|
|
970
|
+
legacy_manifest =\
|
|
971
|
+
(self._running_in_kbc and self.environment_variables.data_type_support not in ('authoritative', 'hints'))
|
|
972
|
+
|
|
965
973
|
om_override = self.configuration.config_data.get('storage', {}).get('output', {}).get('data_type_support')
|
|
966
974
|
if om_override:
|
|
967
975
|
legacy_manifest = om_override not in ('authoritative', 'hints')
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{keboola.component-1.6.5 → keboola.component-1.6.7}/src/keboola.component.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{keboola.component-1.6.5 → keboola.component-1.6.7}/src/keboola.component.egg-info/not-zip-safe
RENAMED
|
File without changes
|
{keboola.component-1.6.5 → keboola.component-1.6.7}/src/keboola.component.egg-info/requires.txt
RENAMED
|
File without changes
|
{keboola.component-1.6.5 → keboola.component-1.6.7}/src/keboola.component.egg-info/top_level.txt
RENAMED
|
File without changes
|