keboola.component 1.9.4__tar.gz → 1.11.0__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.9.4/src/keboola.component.egg-info → keboola_component-1.11.0}/PKG-INFO +1 -1
- {keboola_component-1.9.4 → keboola_component-1.11.0}/pyproject.toml +1 -1
- {keboola_component-1.9.4 → keboola_component-1.11.0}/src/keboola/component/dao.py +0 -5
- {keboola_component-1.9.4 → keboola_component-1.11.0}/src/keboola/component/interface.py +18 -11
- {keboola_component-1.9.4 → keboola_component-1.11.0/src/keboola.component.egg-info}/PKG-INFO +1 -1
- {keboola_component-1.9.4 → keboola_component-1.11.0}/tests/test_dao.py +23 -0
- {keboola_component-1.9.4 → keboola_component-1.11.0}/LICENSE +0 -0
- {keboola_component-1.9.4 → keboola_component-1.11.0}/README.md +0 -0
- {keboola_component-1.9.4 → keboola_component-1.11.0}/setup.cfg +0 -0
- {keboola_component-1.9.4 → keboola_component-1.11.0}/src/keboola/component/__init__.py +0 -0
- {keboola_component-1.9.4 → keboola_component-1.11.0}/src/keboola/component/base.py +0 -0
- {keboola_component-1.9.4 → keboola_component-1.11.0}/src/keboola/component/exceptions.py +0 -0
- {keboola_component-1.9.4 → keboola_component-1.11.0}/src/keboola/component/sync_actions.py +0 -0
- {keboola_component-1.9.4 → keboola_component-1.11.0}/src/keboola/component/table_schema.py +0 -0
- {keboola_component-1.9.4 → keboola_component-1.11.0}/src/keboola.component.egg-info/SOURCES.txt +0 -0
- {keboola_component-1.9.4 → keboola_component-1.11.0}/src/keboola.component.egg-info/dependency_links.txt +0 -0
- {keboola_component-1.9.4 → keboola_component-1.11.0}/src/keboola.component.egg-info/requires.txt +0 -0
- {keboola_component-1.9.4 → keboola_component-1.11.0}/src/keboola.component.egg-info/top_level.txt +0 -0
- {keboola_component-1.9.4 → keboola_component-1.11.0}/tests/test_base.py +0 -0
- {keboola_component-1.9.4 → keboola_component-1.11.0}/tests/test_interface.py +0 -0
- {keboola_component-1.9.4 → keboola_component-1.11.0}/tests/test_schema.py +0 -0
- {keboola_component-1.9.4 → keboola_component-1.11.0}/tests/test_sync_actions.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "keboola.component"
|
|
3
|
-
version = "1.
|
|
3
|
+
version = "1.11.0" # replaced by the actual version based on the release tag in github actions
|
|
4
4
|
dependencies = [
|
|
5
5
|
"pygelf",
|
|
6
6
|
"deprecated",
|
|
@@ -162,11 +162,6 @@ class TableMetadata:
|
|
|
162
162
|
|
|
163
163
|
"""
|
|
164
164
|
|
|
165
|
-
if manifest.get("schema") and (
|
|
166
|
-
manifest.get("metadata") or manifest.get("column_metadata") or manifest.get("columns")
|
|
167
|
-
): # noqa
|
|
168
|
-
raise UserException("Manifest can't contain new 'schema' and old 'metadata'/'column_metadata'/'columns'")
|
|
169
|
-
|
|
170
165
|
if not manifest.get("schema"):
|
|
171
166
|
# column metadata
|
|
172
167
|
for column, metadata_list in manifest.get("column_metadata", {}).items():
|
|
@@ -160,18 +160,22 @@ class CommonInterface:
|
|
|
160
160
|
|
|
161
161
|
hd1 = logging.StreamHandler(sys.stdout)
|
|
162
162
|
hd1.addFilter(InfoFilter())
|
|
163
|
+
hd1._keboola_owned = True
|
|
163
164
|
hd2 = logging.StreamHandler(sys.stderr)
|
|
164
165
|
hd2.setLevel(logging.WARNING)
|
|
166
|
+
hd2._keboola_owned = True
|
|
165
167
|
|
|
166
|
-
logging.getLogger()
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
168
|
+
root = logging.getLogger()
|
|
169
|
+
root.setLevel(log_level)
|
|
170
|
+
# Remove only handlers previously installed by keboola.component, leaving
|
|
171
|
+
# any external handlers (e.g. test infrastructure) untouched.
|
|
172
|
+
for h in list(root.handlers):
|
|
173
|
+
if getattr(h, "_keboola_owned", False):
|
|
174
|
+
root.removeHandler(h)
|
|
175
|
+
root.addHandler(hd1)
|
|
176
|
+
root.addHandler(hd2)
|
|
172
177
|
|
|
173
|
-
|
|
174
|
-
return logger
|
|
178
|
+
return root
|
|
175
179
|
|
|
176
180
|
@staticmethod
|
|
177
181
|
def set_gelf_logger(
|
|
@@ -192,9 +196,11 @@ class CommonInterface:
|
|
|
192
196
|
|
|
193
197
|
Returns: Logger object
|
|
194
198
|
"""
|
|
195
|
-
#
|
|
196
|
-
|
|
197
|
-
|
|
199
|
+
# Remove only handlers previously installed by keboola.component.
|
|
200
|
+
root = logging.getLogger()
|
|
201
|
+
for h in list(root.handlers):
|
|
202
|
+
if getattr(h, "_keboola_owned", False):
|
|
203
|
+
root.removeHandler(h)
|
|
198
204
|
if stdout:
|
|
199
205
|
CommonInterface.set_default_logger(log_level)
|
|
200
206
|
|
|
@@ -210,6 +216,7 @@ class CommonInterface:
|
|
|
210
216
|
else:
|
|
211
217
|
raise ValueError(f"Unsupported gelf transport layer: {transport_layer}. Choose TCP or UDP")
|
|
212
218
|
|
|
219
|
+
gelf._keboola_owned = True
|
|
213
220
|
logging.getLogger().setLevel(log_level)
|
|
214
221
|
logging.getLogger().addHandler(gelf)
|
|
215
222
|
|
|
@@ -122,6 +122,29 @@ class TestTableMetadata(unittest.TestCase):
|
|
|
122
122
|
self.assertEqual(table_metadata.column_metadata, expected_tmetadata.column_metadata)
|
|
123
123
|
self.assertEqual(table_metadata.table_metadata, expected_tmetadata.table_metadata)
|
|
124
124
|
|
|
125
|
+
def test_build_from_manifest_with_schema_and_legacy_keys_valid(self):
|
|
126
|
+
# Input manifests produced by the platform carry the new `schema` node alongside the legacy
|
|
127
|
+
# `columns`/`metadata`/`column_metadata` keys for backward compatibility. The library must accept this:
|
|
128
|
+
# `schema` is the source of truth for columns, while legacy table `metadata` is still loaded.
|
|
129
|
+
raw_manifest = {
|
|
130
|
+
"id": "in.c-bucket.table",
|
|
131
|
+
"columns": ["foo", "bar"],
|
|
132
|
+
"primary_key": ["foo"],
|
|
133
|
+
"metadata": [{"key": "bar", "value": "kochba"}],
|
|
134
|
+
"column_metadata": {"bar": [{"key": "foo", "value": "gogo"}]},
|
|
135
|
+
"schema": [
|
|
136
|
+
{"name": "foo", "data_type": {"base": {"type": "STRING"}}, "nullable": False, "primary_key": True},
|
|
137
|
+
{"name": "bar", "data_type": {"base": {"type": "STRING"}}, "nullable": True},
|
|
138
|
+
],
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
table_metadata = TableMetadata(raw_manifest)
|
|
142
|
+
|
|
143
|
+
# column metadata comes from `schema`, not the legacy `column_metadata` block
|
|
144
|
+
self.assertEqual(table_metadata.column_metadata, {})
|
|
145
|
+
# table-level legacy metadata is still loaded
|
|
146
|
+
self.assertEqual(table_metadata.table_metadata, {"bar": "kochba"})
|
|
147
|
+
|
|
125
148
|
def test_build_manifest_legacy_none_metadata_skipped(self):
|
|
126
149
|
table_def = TableDefinition(
|
|
127
150
|
"testDef",
|
|
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.9.4 → keboola_component-1.11.0}/src/keboola.component.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{keboola_component-1.9.4 → keboola_component-1.11.0}/src/keboola.component.egg-info/requires.txt
RENAMED
|
File without changes
|
{keboola_component-1.9.4 → keboola_component-1.11.0}/src/keboola.component.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|