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.
Files changed (18) hide show
  1. {keboola.component-1.6.5/src/keboola.component.egg-info → keboola.component-1.6.7}/PKG-INFO +1 -1
  2. {keboola.component-1.6.5 → keboola.component-1.6.7}/setup.py +1 -1
  3. {keboola.component-1.6.5 → keboola.component-1.6.7}/src/keboola/component/dao.py +72 -24
  4. {keboola.component-1.6.5 → keboola.component-1.6.7}/src/keboola/component/interface.py +12 -4
  5. {keboola.component-1.6.5 → keboola.component-1.6.7/src/keboola.component.egg-info}/PKG-INFO +1 -1
  6. {keboola.component-1.6.5 → keboola.component-1.6.7}/LICENSE +0 -0
  7. {keboola.component-1.6.5 → keboola.component-1.6.7}/README.md +0 -0
  8. {keboola.component-1.6.5 → keboola.component-1.6.7}/setup.cfg +0 -0
  9. {keboola.component-1.6.5 → keboola.component-1.6.7}/src/keboola/component/__init__.py +0 -0
  10. {keboola.component-1.6.5 → keboola.component-1.6.7}/src/keboola/component/base.py +0 -0
  11. {keboola.component-1.6.5 → keboola.component-1.6.7}/src/keboola/component/exceptions.py +0 -0
  12. {keboola.component-1.6.5 → keboola.component-1.6.7}/src/keboola/component/sync_actions.py +0 -0
  13. {keboola.component-1.6.5 → keboola.component-1.6.7}/src/keboola/component/table_schema.py +0 -0
  14. {keboola.component-1.6.5 → keboola.component-1.6.7}/src/keboola.component.egg-info/SOURCES.txt +0 -0
  15. {keboola.component-1.6.5 → keboola.component-1.6.7}/src/keboola.component.egg-info/dependency_links.txt +0 -0
  16. {keboola.component-1.6.5 → keboola.component-1.6.7}/src/keboola.component.egg-info/not-zip-safe +0 -0
  17. {keboola.component-1.6.5 → keboola.component-1.6.7}/src/keboola.component.egg-info/requires.txt +0 -0
  18. {keboola.component-1.6.5 → keboola.component-1.6.7}/src/keboola.component.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: keboola.component
3
- Version: 1.6.5
3
+ Version: 1.6.7
4
4
  Summary: General library for Python applications running in Keboola Connection environment
5
5
  Home-page: https://github.com/keboola/python-component
6
6
  Author: Keboola KDS Team
@@ -13,7 +13,7 @@ project_urls = {
13
13
 
14
14
  setuptools.setup(
15
15
  name="keboola.component",
16
- version="1.6.5",
16
+ version="1.6.7",
17
17
  author="Keboola KDS Team",
18
18
  project_urls=project_urls,
19
19
  setup_requires=['pytest-runner', 'flake8'],
@@ -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[List[ColumnDefinition]] = None,
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[List[ColumnDefinition]] = None,
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
- table_def = cls(name=name,
1104
- stage=stage,
1105
- full_path=full_path,
1106
- is_sliced=is_sliced,
1107
- id=manifest.get('id'),
1108
- table_metadata=TableMetadata(manifest),
1109
- primary_key=manifest.get('primary_key'),
1110
- schema=cls.return_schema_from_manifest(manifest),
1111
- uri=manifest.get('uri'),
1112
- created=manifest.get('created'),
1113
- last_change_date=manifest.get('last_change_date'),
1114
- last_import_date=manifest.get('last_import_date'),
1115
- rows_count=manifest.get('rows_count'),
1116
- data_size_bytes=manifest.get('data_size_bytes'),
1117
- is_alias=manifest.get('is_alias'),
1118
- force_legacy_mode=force_legacy_mode,
1119
- indexed_columns=manifest.get('indexed_columns'),
1120
- attributes=manifest.get('attributes')
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 = os.environ.get('KBC_PROJECT_FEATURE_GATES')
917
+ features = self.environment_variables.project_features
918
+
913
919
  is_legacy_queue = True
914
- if not features or 'queuev2' in features:
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 = self.environment_variables.data_type_support not in ('authoritative', 'hints')
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')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: keboola.component
3
- Version: 1.6.5
3
+ Version: 1.6.7
4
4
  Summary: General library for Python applications running in Keboola Connection environment
5
5
  Home-page: https://github.com/keboola/python-component
6
6
  Author: Keboola KDS Team