atlan-application-sdk 0.1.1rc46__py3-none-any.whl → 0.1.1rc48__py3-none-any.whl
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.
- application_sdk/activities/metadata_extraction/sql.py +5 -14
- application_sdk/constants.py +4 -2
- application_sdk/outputs/parquet.py +10 -8
- application_sdk/version.py +1 -1
- {atlan_application_sdk-0.1.1rc46.dist-info → atlan_application_sdk-0.1.1rc48.dist-info}/METADATA +1 -1
- {atlan_application_sdk-0.1.1rc46.dist-info → atlan_application_sdk-0.1.1rc48.dist-info}/RECORD +9 -9
- {atlan_application_sdk-0.1.1rc46.dist-info → atlan_application_sdk-0.1.1rc48.dist-info}/WHEEL +0 -0
- {atlan_application_sdk-0.1.1rc46.dist-info → atlan_application_sdk-0.1.1rc48.dist-info}/licenses/LICENSE +0 -0
- {atlan_application_sdk-0.1.1rc46.dist-info → atlan_application_sdk-0.1.1rc48.dist-info}/licenses/NOTICE +0 -0
|
@@ -528,7 +528,6 @@ class BaseSQLMetadataExtractionActivities(ActivitiesInterface):
|
|
|
528
528
|
raise ValueError("SQL client engine not initialized")
|
|
529
529
|
|
|
530
530
|
successful_databases: List[str] = []
|
|
531
|
-
failed_databases: List[str] = []
|
|
532
531
|
dataframe_list: List[
|
|
533
532
|
Union[AsyncIterator["pd.DataFrame"], Iterator["pd.DataFrame"]]
|
|
534
533
|
] = []
|
|
@@ -560,31 +559,23 @@ class BaseSQLMetadataExtractionActivities(ActivitiesInterface):
|
|
|
560
559
|
|
|
561
560
|
if success:
|
|
562
561
|
logger.info(f"Successfully processed database: {database_name}")
|
|
563
|
-
|
|
564
|
-
logger.warning(
|
|
565
|
-
f"Failed to execute query for database: {database_name}"
|
|
566
|
-
)
|
|
562
|
+
|
|
567
563
|
except Exception as e: # noqa: BLE001
|
|
568
|
-
logger.
|
|
569
|
-
f"Failed to process database '{database_name}': {str(e)}.
|
|
564
|
+
logger.error(
|
|
565
|
+
f"Failed to process database '{database_name}': {str(e)}. Failing the workflow.",
|
|
566
|
+
exc_info=True,
|
|
570
567
|
)
|
|
571
|
-
|
|
568
|
+
raise
|
|
572
569
|
|
|
573
570
|
if success:
|
|
574
571
|
successful_databases.append(database_name)
|
|
575
572
|
if not write_to_file and batched_iterator:
|
|
576
573
|
dataframe_list.append(batched_iterator)
|
|
577
|
-
else:
|
|
578
|
-
failed_databases.append(database_name)
|
|
579
574
|
|
|
580
575
|
# Log results
|
|
581
576
|
logger.info(
|
|
582
577
|
f"Successfully processed {len(successful_databases)} databases: {successful_databases}"
|
|
583
578
|
)
|
|
584
|
-
if failed_databases:
|
|
585
|
-
logger.warning(
|
|
586
|
-
f"Failed to process {len(failed_databases)} databases: {failed_databases}"
|
|
587
|
-
)
|
|
588
579
|
|
|
589
580
|
# Finalize results
|
|
590
581
|
return await self._finalize_multidb_results(
|
application_sdk/constants.py
CHANGED
|
@@ -114,11 +114,13 @@ DEPLOYMENT_NAME_KEY = "deployment_name"
|
|
|
114
114
|
# Workflow Constants
|
|
115
115
|
#: Timeout duration for activity heartbeats
|
|
116
116
|
HEARTBEAT_TIMEOUT = timedelta(
|
|
117
|
-
seconds=int(os.getenv("
|
|
117
|
+
seconds=int(os.getenv("ATLAN_HEARTBEAT_TIMEOUT_SECONDS", 300)) # 5 minutes
|
|
118
118
|
)
|
|
119
119
|
#: Maximum duration an activity can run before timing out
|
|
120
120
|
START_TO_CLOSE_TIMEOUT = timedelta(
|
|
121
|
-
seconds=int(
|
|
121
|
+
seconds=int(
|
|
122
|
+
os.getenv("ATLAN_START_TO_CLOSE_TIMEOUT_SECONDS", 2 * 60 * 60)
|
|
123
|
+
) # 2 hours
|
|
122
124
|
)
|
|
123
125
|
|
|
124
126
|
# SQL Client Constants
|
|
@@ -221,17 +221,19 @@ class ParquetOutput(Output):
|
|
|
221
221
|
if row_count == 0:
|
|
222
222
|
return
|
|
223
223
|
|
|
224
|
+
file_paths = []
|
|
224
225
|
# Use Daft's execution context for temporary configuration
|
|
225
226
|
with daft.execution_config_ctx(
|
|
226
227
|
parquet_target_filesize=self.max_file_size_bytes,
|
|
227
228
|
default_morsel_size=morsel_size,
|
|
228
229
|
):
|
|
229
230
|
# Daft automatically handles file splitting and naming
|
|
230
|
-
dataframe.write_parquet(
|
|
231
|
+
result = dataframe.write_parquet(
|
|
231
232
|
root_dir=self.output_path,
|
|
232
233
|
write_mode=write_mode.value,
|
|
233
|
-
partition_cols=partition_cols
|
|
234
|
+
partition_cols=partition_cols,
|
|
234
235
|
)
|
|
236
|
+
file_paths = result.to_pydict().get("path", [])
|
|
235
237
|
|
|
236
238
|
# Update counters
|
|
237
239
|
self.chunk_count += 1
|
|
@@ -266,12 +268,12 @@ class ParquetOutput(Output):
|
|
|
266
268
|
logger.info(
|
|
267
269
|
f"No files found under prefix {get_object_store_prefix(self.output_path)}: {str(e)}"
|
|
268
270
|
)
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
271
|
+
for path in file_paths:
|
|
272
|
+
await ObjectStore.upload_file(
|
|
273
|
+
source=path,
|
|
274
|
+
destination=get_object_store_prefix(path),
|
|
275
|
+
retain_local_copy=self.retain_local_copy,
|
|
276
|
+
)
|
|
275
277
|
|
|
276
278
|
except Exception as e:
|
|
277
279
|
# Record metrics for failed write
|
application_sdk/version.py
CHANGED
{atlan_application_sdk-0.1.1rc46.dist-info → atlan_application_sdk-0.1.1rc48.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: atlan-application-sdk
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.1rc48
|
|
4
4
|
Summary: Atlan Application SDK is a Python library for developing applications on the Atlan Platform
|
|
5
5
|
Project-URL: Repository, https://github.com/atlanhq/application-sdk
|
|
6
6
|
Project-URL: Documentation, https://github.com/atlanhq/application-sdk/README.md
|
{atlan_application_sdk-0.1.1rc46.dist-info → atlan_application_sdk-0.1.1rc48.dist-info}/RECORD
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
application_sdk/__init__.py,sha256=2e2mvmLJ5dxmJGPELtb33xwP-j6JMdoIuqKycEn7hjg,151
|
|
2
|
-
application_sdk/constants.py,sha256=
|
|
3
|
-
application_sdk/version.py,sha256=
|
|
2
|
+
application_sdk/constants.py,sha256=EDGR-3SuCxNV-3x0D4wA9is9vBbVWa3nHvJ8r2w4lYY,10977
|
|
3
|
+
application_sdk/version.py,sha256=RlBuSchlnwak46JYM6YgODBzj9SpLSur8hV4n1h3Cso,88
|
|
4
4
|
application_sdk/worker.py,sha256=i5f0AeKI39IfsLO05QkwC6uMz0zDPSJqP7B2byri1VI,7489
|
|
5
5
|
application_sdk/activities/__init__.py,sha256=QaXLOBYbb0zPOY5kfDQh56qbXQFaYNXOjJ5PCvatiZ4,9530
|
|
6
6
|
application_sdk/activities/lock_management.py,sha256=oX2qPpfEu_xP0MiaCakVGk9ivZDvG4EddVZag1DuHSE,3976
|
|
@@ -11,7 +11,7 @@ application_sdk/activities/common/utils.py,sha256=nSNGkY5eS5pPc8etdPWkXBFTSaConG
|
|
|
11
11
|
application_sdk/activities/metadata_extraction/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
12
12
|
application_sdk/activities/metadata_extraction/base.py,sha256=ENFojpxqKdN_eVSL4iet3cGfylPOfcl1jnflfo4zhs8,3920
|
|
13
13
|
application_sdk/activities/metadata_extraction/rest.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
|
-
application_sdk/activities/metadata_extraction/sql.py,sha256=
|
|
14
|
+
application_sdk/activities/metadata_extraction/sql.py,sha256=9VdQ9Kv3vCuK6b1US9akvdv9A8NvFVVOvK3Svxkj0ws,34284
|
|
15
15
|
application_sdk/activities/query_extraction/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
16
|
application_sdk/activities/query_extraction/sql.py,sha256=l64cGyTmbtaGcg3qj1YXKyNWiWeRsWPEuQyqW06rxxQ,21165
|
|
17
17
|
application_sdk/application/__init__.py,sha256=hb5zBc4zi-10av8Ivbovhb0CEAwNgr3eFlfpRaMKVmI,9861
|
|
@@ -79,7 +79,7 @@ application_sdk/observability/decorators/observability_decorator.py,sha256=yd6qf
|
|
|
79
79
|
application_sdk/outputs/__init__.py,sha256=hrOPw0xuG9xP720Bt309TfbY2Qq_i51R8Xt3ZjwWDUY,15906
|
|
80
80
|
application_sdk/outputs/iceberg.py,sha256=TdppOMEMfojMhGyBmhWeu1AJQexRyHM-huAYeJmhjdY,5533
|
|
81
81
|
application_sdk/outputs/json.py,sha256=gYDDNOVb8EFxxeOkb6zKWZWjTEVgZLoapFM97_roK4A,10883
|
|
82
|
-
application_sdk/outputs/parquet.py,sha256
|
|
82
|
+
application_sdk/outputs/parquet.py,sha256=-_7C7D7vc53brFjLgqa25Tnee6txwpj6V2yRfeH5hP4,20329
|
|
83
83
|
application_sdk/outputs/.cursor/BUGBOT.md,sha256=KxEC3CIyRSK1YftZou5BgKc6PRXT3qQmBNFJp-HSyYE,11496
|
|
84
84
|
application_sdk/server/__init__.py,sha256=KTqE1YPw_3WDVMWatJUuf9OOiobLM2K5SMaBrI62sCo,1568
|
|
85
85
|
application_sdk/server/.cursor/BUGBOT.md,sha256=p_MMoWUW5G1894WfOKYReZKWCuyJT_OJz3rL5g21NbI,16566
|
|
@@ -156,8 +156,8 @@ application_sdk/workflows/metadata_extraction/__init__.py,sha256=jHUe_ZBQ66jx8bg
|
|
|
156
156
|
application_sdk/workflows/metadata_extraction/sql.py,sha256=6ZaVt84n-8U2ZvR9GR7uIJKv5v8CuyQjhlnoRJvDszc,12435
|
|
157
157
|
application_sdk/workflows/query_extraction/__init__.py,sha256=n066_CX5RpJz6DIxGMkKS3eGSRg03ilaCtsqfJWQb7Q,117
|
|
158
158
|
application_sdk/workflows/query_extraction/sql.py,sha256=kT_JQkLCRZ44ZpaC4QvPL6DxnRIIVh8gYHLqRbMI-hA,4826
|
|
159
|
-
atlan_application_sdk-0.1.
|
|
160
|
-
atlan_application_sdk-0.1.
|
|
161
|
-
atlan_application_sdk-0.1.
|
|
162
|
-
atlan_application_sdk-0.1.
|
|
163
|
-
atlan_application_sdk-0.1.
|
|
159
|
+
atlan_application_sdk-0.1.1rc48.dist-info/METADATA,sha256=MYGHDkOz2WRhmmUIWjpfNvDyj1cWMwE93O5DmoiyuA8,5567
|
|
160
|
+
atlan_application_sdk-0.1.1rc48.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
161
|
+
atlan_application_sdk-0.1.1rc48.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
162
|
+
atlan_application_sdk-0.1.1rc48.dist-info/licenses/NOTICE,sha256=A-XVVGt3KOYuuMmvSMIFkg534F1vHiCggEBp4Ez3wGk,1041
|
|
163
|
+
atlan_application_sdk-0.1.1rc48.dist-info/RECORD,,
|
{atlan_application_sdk-0.1.1rc46.dist-info → atlan_application_sdk-0.1.1rc48.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|