atlan-application-sdk 0.1.1rc39__py3-none-any.whl → 0.1.1rc41__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.
Files changed (35) hide show
  1. application_sdk/activities/.cursor/BUGBOT.md +424 -0
  2. application_sdk/activities/metadata_extraction/sql.py +400 -25
  3. application_sdk/application/__init__.py +2 -0
  4. application_sdk/application/metadata_extraction/sql.py +3 -0
  5. application_sdk/clients/.cursor/BUGBOT.md +280 -0
  6. application_sdk/clients/models.py +42 -0
  7. application_sdk/clients/sql.py +127 -87
  8. application_sdk/clients/temporal.py +3 -1
  9. application_sdk/common/.cursor/BUGBOT.md +316 -0
  10. application_sdk/common/aws_utils.py +259 -11
  11. application_sdk/common/utils.py +145 -9
  12. application_sdk/constants.py +8 -0
  13. application_sdk/decorators/.cursor/BUGBOT.md +279 -0
  14. application_sdk/handlers/__init__.py +8 -1
  15. application_sdk/handlers/sql.py +63 -22
  16. application_sdk/inputs/.cursor/BUGBOT.md +250 -0
  17. application_sdk/interceptors/.cursor/BUGBOT.md +320 -0
  18. application_sdk/interceptors/cleanup.py +171 -0
  19. application_sdk/interceptors/events.py +6 -6
  20. application_sdk/observability/decorators/observability_decorator.py +36 -22
  21. application_sdk/outputs/.cursor/BUGBOT.md +295 -0
  22. application_sdk/outputs/iceberg.py +4 -0
  23. application_sdk/outputs/json.py +6 -0
  24. application_sdk/outputs/parquet.py +13 -3
  25. application_sdk/server/.cursor/BUGBOT.md +442 -0
  26. application_sdk/server/fastapi/__init__.py +59 -3
  27. application_sdk/server/fastapi/models.py +27 -0
  28. application_sdk/services/objectstore.py +16 -3
  29. application_sdk/version.py +1 -1
  30. application_sdk/workflows/.cursor/BUGBOT.md +218 -0
  31. {atlan_application_sdk-0.1.1rc39.dist-info → atlan_application_sdk-0.1.1rc41.dist-info}/METADATA +1 -1
  32. {atlan_application_sdk-0.1.1rc39.dist-info → atlan_application_sdk-0.1.1rc41.dist-info}/RECORD +35 -24
  33. {atlan_application_sdk-0.1.1rc39.dist-info → atlan_application_sdk-0.1.1rc41.dist-info}/WHEEL +0 -0
  34. {atlan_application_sdk-0.1.1rc39.dist-info → atlan_application_sdk-0.1.1rc41.dist-info}/licenses/LICENSE +0 -0
  35. {atlan_application_sdk-0.1.1rc39.dist-info → atlan_application_sdk-0.1.1rc41.dist-info}/licenses/NOTICE +0 -0
@@ -208,7 +208,15 @@ class ObjectStore:
208
208
  """
209
209
  try:
210
210
  # First, list all files under the prefix
211
- files_to_delete = await cls.list_files(prefix=prefix, store_name=store_name)
211
+ try:
212
+ files_to_delete = await cls.list_files(
213
+ prefix=prefix, store_name=store_name
214
+ )
215
+ except Exception as e:
216
+ # If we can't list files for any reason, we can't delete them either
217
+ # Raise FileNotFoundError to give developers clear feedback
218
+ logger.info(f"Cannot list files under prefix {prefix}: {str(e)}")
219
+ raise FileNotFoundError(f"No files found under prefix: {prefix}")
212
220
 
213
221
  if not files_to_delete:
214
222
  logger.info(f"No files found under prefix: {prefix}")
@@ -236,6 +244,7 @@ class ObjectStore:
236
244
  source: str,
237
245
  destination: str,
238
246
  store_name: str = DEPLOYMENT_OBJECT_STORE_NAME,
247
+ retain_local_copy: bool = False,
239
248
  ) -> None:
240
249
  """Upload a single file to the object store.
241
250
 
@@ -277,7 +286,8 @@ class ObjectStore:
277
286
  raise e
278
287
 
279
288
  # Clean up local file after successful upload
280
- cls._cleanup_local_path(source)
289
+ if not retain_local_copy:
290
+ cls._cleanup_local_path(source)
281
291
 
282
292
  @classmethod
283
293
  async def upload_prefix(
@@ -286,6 +296,7 @@ class ObjectStore:
286
296
  destination: str,
287
297
  store_name: str = DEPLOYMENT_OBJECT_STORE_NAME,
288
298
  recursive: bool = True,
299
+ retain_local_copy: bool = False,
289
300
  ) -> None:
290
301
  """Upload all files from a directory to the object store.
291
302
 
@@ -333,7 +344,9 @@ class ObjectStore:
333
344
  store_key = os.path.join(destination, relative_path).replace(
334
345
  os.sep, "/"
335
346
  )
336
- await cls.upload_file(file_path, store_key, store_name)
347
+ await cls.upload_file(
348
+ file_path, store_key, store_name, retain_local_copy
349
+ )
337
350
 
338
351
  logger.info(f"Completed uploading directory {source} to object store")
339
352
  except Exception as e:
@@ -2,4 +2,4 @@
2
2
  Version information for the application_sdk package.
3
3
  """
4
4
 
5
- __version__ = "0.1.1rc39"
5
+ __version__ = "0.1.1rc41"
@@ -0,0 +1,218 @@
1
+ # Workflow Code Review Guidelines - Temporal Workflows
2
+
3
+ ## Context-Specific Patterns
4
+
5
+ This directory contains Temporal workflow definitions and orchestration logic. Workflows must be deterministic, resilient, and handle long-running processes gracefully.
6
+
7
+ ### Phase 1: Critical Workflow Safety Issues
8
+
9
+ **Determinism Requirements (CRITICAL):**
10
+
11
+ - Workflows MUST be deterministic - same inputs always produce same sequence of decisions
12
+ - No random number generation, system time calls, or external API calls in workflow code
13
+ - No file I/O, database queries, or network calls directly in workflows
14
+ - All non-deterministic operations must be delegated to activities
15
+ - Thread-safe operations only - no global state mutation
16
+
17
+ **Example Determinism Violations:**
18
+
19
+ ```python
20
+ # ❌ NEVER: Non-deterministic operations in workflows
21
+ async def process_data_workflow(data: dict):
22
+ timestamp = datetime.now() # Non-deterministic!
23
+ random_id = uuid.uuid4() # Non-deterministic!
24
+ user_data = await fetch_user_api(data['user_id']) # External call!
25
+
26
+ # ✅ DO: Delegate to activities
27
+ async def process_data_workflow(data: dict):
28
+ # All external operations via activities
29
+ timestamp = await workflow.execute_activity(
30
+ get_current_timestamp,
31
+ schedule_to_close_timeout=timedelta(seconds=10)
32
+ )
33
+ user_data = await workflow.execute_activity(
34
+ fetch_user_activity,
35
+ data['user_id'],
36
+ schedule_to_close_timeout=timedelta(minutes=5)
37
+ )
38
+ ```
39
+
40
+ **Workflow State Management:**
41
+
42
+ - All workflow data must be serializable (JSON-compatible)
43
+ - No complex objects that can't be reliably serialized/deserialized
44
+ - Workflow parameters and return values must use Pydantic models
45
+ - State changes must be explicit and traceable
46
+ - No mutable shared state between workflow executions
47
+
48
+ ### Phase 2: Workflow Architecture Patterns
49
+
50
+ **Activity Execution Patterns:**
51
+
52
+ - All activities must have explicit timeouts (schedule_to_close_timeout)
53
+ - Retry policies must be defined for activities that can fail
54
+ - Use appropriate heartbeat timeouts for long-running activities
55
+ - Error handling must distinguish between retryable and non-retryable errors
56
+
57
+ ```python
58
+ # ✅ DO: Proper activity execution with timeouts and retries
59
+ await workflow.execute_activity(
60
+ extract_metadata_activity,
61
+ connection_config,
62
+ schedule_to_close_timeout=timedelta(minutes=30),
63
+ retry_policy=RetryPolicy(
64
+ initial_interval=timedelta(seconds=1),
65
+ maximum_interval=timedelta(minutes=1),
66
+ maximum_attempts=3,
67
+ non_retryable_error_types=["ValidationError"]
68
+ )
69
+ )
70
+
71
+ # ❌ NEVER: Activity without proper configuration
72
+ await workflow.execute_activity(process_data) # No timeout, no retry policy
73
+ ```
74
+
75
+ **Workflow Composition:**
76
+
77
+ - Break complex workflows into smaller, reusable sub-workflows
78
+ - Use child workflows for independent business processes
79
+ - Implement proper cancellation handling
80
+ - Use workflow signals for external event handling
81
+ - Design workflows to be resumable after interruption
82
+
83
+ ### Phase 3: Workflow Testing Requirements
84
+
85
+ **Workflow Testing Standards:**
86
+
87
+ - Use Temporal's test framework for workflow unit tests
88
+ - Mock activities in workflow tests
89
+ - Test workflow failure and retry scenarios
90
+ - Test workflow cancellation and timeout behaviors
91
+ - Verify workflow determinism with replay tests
92
+ - Include integration tests with real activities
93
+
94
+ **Activity Testing:**
95
+
96
+ - Test activities independently from workflows
97
+ - Mock external dependencies in activity tests
98
+ - Test activity timeout and retry behaviors
99
+ - Verify proper error handling and logging
100
+ - Include performance tests for long-running activities
101
+
102
+ ### Phase 4: Performance and Scalability
103
+
104
+ **Workflow Performance:**
105
+
106
+ - Minimize workflow execution time - delegate work to activities
107
+ - Avoid deeply nested workflow structures
108
+ - Use parallel activity execution where possible
109
+ - Implement proper batching for bulk operations
110
+ - Monitor workflow execution metrics and duration
111
+
112
+ **Resource Management:**
113
+
114
+ - Activities must clean up resources (connections, files, etc.)
115
+ - Implement proper timeout handling to prevent resource leaks
116
+ - Use connection pooling in activities, not workflows
117
+ - Monitor memory usage in long-running workflows
118
+ - Implement proper backpressure handling
119
+
120
+ ### Phase 5: Workflow Maintainability
121
+
122
+ **Workflow Versioning:**
123
+
124
+ - All workflow changes must be backward compatible
125
+ - Use workflow versioning for breaking changes
126
+ - Document workflow version migration paths
127
+ - Test workflow compatibility across versions
128
+ - Implement graceful handling of version mismatches
129
+
130
+ **Error Handling and Observability:**
131
+
132
+ - All workflow failures must be logged with context
133
+ - Include workflow execution ID in all log messages
134
+ - Implement proper metrics for workflow success/failure rates
135
+ - Use structured logging for workflow events
136
+ - Include tracing information for debugging
137
+
138
+ ---
139
+
140
+ ## Workflow-Specific Anti-Patterns
141
+
142
+ **Always Reject:**
143
+
144
+ - Non-deterministic operations in workflow code
145
+ - Direct database or API calls from workflows
146
+ - Missing timeouts on activity executions
147
+ - Workflows without proper error handling
148
+ - Global state mutation in workflows
149
+ - Synchronous operations in async workflows
150
+ - Activities without retry policies
151
+ - Workflows without proper logging
152
+
153
+ **Determinism Anti-Patterns:**
154
+
155
+ ```python
156
+ # ❌ REJECT: Non-deterministic workflow code
157
+ @workflow.defn
158
+ class BadWorkflow:
159
+ async def run(self, data: dict):
160
+ # All of these break determinism
161
+ current_time = datetime.now()
162
+ random_value = random.random()
163
+ file_content = open('config.txt').read()
164
+ api_response = requests.get('http://api.example.com')
165
+
166
+ # ✅ REQUIRE: Deterministic workflow with activities
167
+ @workflow.defn
168
+ class GoodWorkflow:
169
+ async def run(self, data: dict):
170
+ # Delegate all non-deterministic operations to activities
171
+ current_time = await workflow.execute_activity(
172
+ get_current_timestamp_activity,
173
+ schedule_to_close_timeout=timedelta(seconds=5)
174
+ )
175
+ config = await workflow.execute_activity(
176
+ read_config_activity,
177
+ schedule_to_close_timeout=timedelta(seconds=10)
178
+ )
179
+ ```
180
+
181
+ **Activity Execution Anti-Patterns:**
182
+
183
+ ```python
184
+ # ❌ REJECT: Poor activity configuration
185
+ async def bad_workflow():
186
+ # No timeout, no retry policy, no error handling
187
+ result = await workflow.execute_activity(critical_operation)
188
+
189
+ # ✅ REQUIRE: Proper activity execution
190
+ async def good_workflow():
191
+ try:
192
+ result = await workflow.execute_activity(
193
+ critical_operation,
194
+ schedule_to_close_timeout=timedelta(minutes=10),
195
+ retry_policy=RetryPolicy(
196
+ maximum_attempts=3,
197
+ non_retryable_error_types=["ValidationError"]
198
+ )
199
+ )
200
+ except ActivityError as e:
201
+ # Proper error handling with context
202
+ workflow.logger.error(f"Activity failed: {e}", extra={"workflow_id": workflow.info().workflow_id})
203
+ raise
204
+ ```
205
+
206
+ ## Educational Context for Workflow Reviews
207
+
208
+ When reviewing workflow code, emphasize:
209
+
210
+ 1. **Determinism Impact**: "Workflow determinism isn't just a best practice - it's required for Temporal's replay mechanism to work correctly. Non-deterministic workflows can cause infinite replay loops and corrupt execution history."
211
+
212
+ 2. **Resilience Impact**: "Proper timeout and retry configuration determines whether temporary failures cause workflow abandonment or graceful recovery. At enterprise scale, workflows must handle infrastructure failures transparently."
213
+
214
+ 3. **Performance Impact**: "Workflows should orchestrate, not execute. Heavy computation in workflows blocks the task queue and reduces overall system throughput. Always delegate work to activities."
215
+
216
+ 4. **Maintainability Impact**: "Workflow versioning and backward compatibility are essential for production systems. Breaking workflow compatibility can leave running executions in an unrecoverable state."
217
+
218
+ 5. **Observability Impact**: "Workflow logging and metrics are critical for debugging long-running processes. Proper observability makes the difference between quick problem resolution and hours of investigation."
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: atlan-application-sdk
3
- Version: 0.1.1rc39
3
+ Version: 0.1.1rc41
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
@@ -1,37 +1,42 @@
1
1
  application_sdk/__init__.py,sha256=2e2mvmLJ5dxmJGPELtb33xwP-j6JMdoIuqKycEn7hjg,151
2
- application_sdk/constants.py,sha256=GzwZO0pa9M-FgibmfIs1lh-Fwo06K9Tk6WzGqMyJgpI,10362
3
- application_sdk/version.py,sha256=c9l4xzOeaiyxuYpkhXgaiBr52RJe_2lv_aUnX-NAeR4,88
2
+ application_sdk/constants.py,sha256=1THiejjOEgm4kHFN-PrwrUkfRk7q1pjOLWLm-t2ph1Q,10674
3
+ application_sdk/version.py,sha256=zV2HH6SOEd5nUl8rfci_44ydqpKFM-6ShVxYm8ggtCk,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=L__GZ9BsArwU1ntYwAgCKsSjCqN6QBeOfT-OT4WyD4Y,3983
7
+ application_sdk/activities/.cursor/BUGBOT.md,sha256=FNykX5aMkdOhzgpiGqstOnSp9JN63iR2XP3onU4AGh8,15843
7
8
  application_sdk/activities/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
9
  application_sdk/activities/common/models.py,sha256=LIZfWvTtgtbAUvvn-rwrPQgD7fP2J0Gxdxr_ITgw-jM,1243
9
10
  application_sdk/activities/common/utils.py,sha256=F4Fq9Gl_gvUQj_fSdwzTU7obqUnemYL1dgb_yS34vTM,6967
10
11
  application_sdk/activities/metadata_extraction/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
12
  application_sdk/activities/metadata_extraction/base.py,sha256=ENFojpxqKdN_eVSL4iet3cGfylPOfcl1jnflfo4zhs8,3920
12
13
  application_sdk/activities/metadata_extraction/rest.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
- application_sdk/activities/metadata_extraction/sql.py,sha256=m_kbWjIMcI-L9Ss8VlHoNzmjfC5I8tZ5MPrfMXkvxH8,22615
14
+ application_sdk/activities/metadata_extraction/sql.py,sha256=02u1KXT0EViqKRhYoJ-aYytohAu4IbmTe_JPyC3axTw,35898
14
15
  application_sdk/activities/query_extraction/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
16
  application_sdk/activities/query_extraction/sql.py,sha256=mesGP_kiWzrJ8wboWFVt2jbDuGG_Fl3kQVvVMdH3KWA,21228
16
- application_sdk/application/__init__.py,sha256=WDWDWP-IQ-ny7okqsrdTwH60cXKgXBRcnlJ1XVYfiNU,7957
17
- application_sdk/application/metadata_extraction/sql.py,sha256=ohpV4qZ92uKRlH7I_8G67ocnWkZJAZCU_7XdvqYPiN4,7966
17
+ application_sdk/application/__init__.py,sha256=PbSImXYaQQ2IIee2SvI8AjDiSo2QcCFrM1PX3x-_RQs,8035
18
+ application_sdk/application/metadata_extraction/sql.py,sha256=rOd06Wodr4GyzupCYxVSCsNcuNar1rJM66ej9vocNHw,8138
18
19
  application_sdk/clients/__init__.py,sha256=C9T84J7V6ZumcoWJPAxdd3tqSmbyciaGBJn-CaCCny0,1341
19
20
  application_sdk/clients/atlan.py,sha256=l6yV39fr1006SJFwkOTNDQlbSFlHCZQaUPfdUlzdVEg,5053
20
21
  application_sdk/clients/atlan_auth.py,sha256=D7FuNqv81ohNXLJtdx1AFw_jU6a3g0Pw6149ia4ucFY,8930
21
22
  application_sdk/clients/base.py,sha256=TIn3pG89eXUc1XSYf4jk66m1vajWp0WxcCQOOltdazA,14021
23
+ application_sdk/clients/models.py,sha256=yPgmiqt3I7am2NdFF10BnKiwfgjLceEXrpie0rvGCg8,1509
22
24
  application_sdk/clients/redis.py,sha256=IfAD32vLp88BCvsDTaQtxFHxzHlEx4V7TK7h1HwDDBg,15917
23
- application_sdk/clients/sql.py,sha256=tW89SHuuWdU5jv8lDUP5AUCEpR2CF_5TyUvYDCBHses,17880
24
- application_sdk/clients/temporal.py,sha256=MEGNT1_crWAn-vdfcBUH0A7IKvKDDSAaiEpGCS7gas4,18235
25
+ application_sdk/clients/sql.py,sha256=r-8rghnATLRxxISchLZaNnMCAZMRLKyPAwPZengzMMY,19846
26
+ application_sdk/clients/temporal.py,sha256=g7DXlnMLlWOHAdyXB0TCDx0aWdAwjazDnIbMgNNgKgw,18359
25
27
  application_sdk/clients/utils.py,sha256=zLFOJbTr_6TOqnjfVFGY85OtIXZ4FQy_rquzjaydkbY,779
26
28
  application_sdk/clients/workflow.py,sha256=6bSqmA3sNCk9oY68dOjBUDZ9DhNKQxPD75qqE0cfldc,6104
29
+ application_sdk/clients/.cursor/BUGBOT.md,sha256=7nEDUqWBEMI_uU6eK1jCSZGeXoQtLQcKwOrDn8AIDWo,10595
27
30
  application_sdk/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
- application_sdk/common/aws_utils.py,sha256=aeL3BTMzv1UWJ4KxfwY5EsfYnxtS1FKNJ4xKdHeoTjc,3438
31
+ application_sdk/common/aws_utils.py,sha256=xlSMIQyjvQ-CydEXaxXrnPUygv7AAbCLsxhZ2wtKnzg,11219
29
32
  application_sdk/common/dapr_utils.py,sha256=0yHqDP6qNb1OT-bX2XRYQPZ5xkGkV13nyRw6GkPlHs8,1136
30
33
  application_sdk/common/dataframe_utils.py,sha256=PId9vT6AUoq3tesiTd4sSUvW7RUhPWdAAEBLuOprks4,1262
31
34
  application_sdk/common/error_codes.py,sha256=bxgvugN_0H5b8VXfJw-44mybgX5I9lRJbRdYjtPjqDI,14561
32
- application_sdk/common/utils.py,sha256=ktCZLp-AEiyd-IPOgbD83Dg9qa8Z0Sj_mJmmdSzpOak,14759
35
+ application_sdk/common/utils.py,sha256=ImCrlyCj5Mj571CVWfqy5MynVVju9xhn1ItSlJoaebc,19572
36
+ application_sdk/common/.cursor/BUGBOT.md,sha256=OkB5TMAEJFzaBfbNb3g9ZDPW2r1krQE_KEuJbytMPuI,12176
33
37
  application_sdk/decorators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
38
  application_sdk/decorators/locks.py,sha256=-cdbICCMns3lkqZ4CCQabW1du8cEu9XSWlwzWTTbIPk,1411
39
+ application_sdk/decorators/.cursor/BUGBOT.md,sha256=iiS_41FKaJ4-L2jm9ziEqQhQNGYGNZzHVVk09c2cgN8,11250
35
40
  application_sdk/docgen/__init__.py,sha256=Gr_3uVEnSspKd_-R1YRsDABI-iP4170Dvg5jM2oD76A,7352
36
41
  application_sdk/docgen/exporters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
42
  application_sdk/docgen/exporters/mkdocs.py,sha256=vxYjKLz-7z7rBUSkOGTdNVlPdx_VPfFfJ31HHNgMCeM,4024
@@ -49,31 +54,36 @@ application_sdk/docgen/parsers/directory.py,sha256=8Kk2sjb-0l2wLO_njdlcuHjv5akoN
49
54
  application_sdk/docgen/parsers/manifest.py,sha256=3NP-dBTpHAUQa477usMIDaKSb_9xfLE8G3RX0T1Bq2s,3318
50
55
  application_sdk/events/__init__.py,sha256=OcbVWDF4ZKRTJXK9UaFVtYEwu-3DHE77S-Sn6jNafUs,204
51
56
  application_sdk/events/models.py,sha256=7Esqp3WlbriT2EqT4kNiY_sHtRXRPLj27b8SbeC5Sb0,5121
52
- application_sdk/handlers/__init__.py,sha256=U7kKwVWK0FZz1uIJ2ANN0C5tD83k_9Nyz0ns6ttr92g,1152
57
+ application_sdk/handlers/__init__.py,sha256=3Wf7jCVFR2nYOyHZEc9jj8BQUnHCylFqoezp70J2Df0,1329
53
58
  application_sdk/handlers/base.py,sha256=ieWFbv8Gm7vfrrpS-mdMSm-mHGuQY02qiAVX2qPdj3w,2467
54
- application_sdk/handlers/sql.py,sha256=oeB-sgWwPYo31xaD87TyMc0h51Sary1F-CmhExt9_Pk,16100
59
+ application_sdk/handlers/sql.py,sha256=6A_9xCtkXyNY5gPhImbftzrdPIEWIeTTqjyIewVESHA,17815
55
60
  application_sdk/inputs/__init__.py,sha256=_d-cUhcDyoJTJR3PdQkC831go6VDw9AM6Bg7-qm3NHI,1900
56
61
  application_sdk/inputs/iceberg.py,sha256=xiv1kNtVx1k0h3ZJbJeXjZwdfBGSy9j9orYP_AyCYlI,2756
57
62
  application_sdk/inputs/json.py,sha256=Yv70Y9YuutN2trqK5-z2UNtBL0895ZbdEiBDt9cYM9s,6216
58
63
  application_sdk/inputs/parquet.py,sha256=GnyB0r4-7GNLBl3ooVFUzsxunZsrHStKK2h7XRc7AIY,6723
59
64
  application_sdk/inputs/sql_query.py,sha256=1EREgea6kKNaMIyX2HLJgbJ07rtAgLasd9NyvDcdZok,10636
65
+ application_sdk/inputs/.cursor/BUGBOT.md,sha256=hwKGDbopv3NU0bpC_ElpAPDFcS59GWS3TunObGC6eLQ,9731
60
66
  application_sdk/interceptors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
- application_sdk/interceptors/events.py,sha256=Kh0dEsc6q7YtlN9cxatiL_ZrmBxriv55r9lxvIKGg3A,6548
67
+ application_sdk/interceptors/cleanup.py,sha256=tPLIIa0E3y-Kmjme88tyYN0W3NYrKKZaDggHyHl95ME,6106
68
+ application_sdk/interceptors/events.py,sha256=TeStWmBbc4v1-dm2DWeKYsUfUhJLR8CtTQhu3TWOZWM,6524
62
69
  application_sdk/interceptors/lock.py,sha256=Xe9TSjYKtDZUB94hbV7rHG_9rgKUJPTACeB8z8xsJ0w,5577
70
+ application_sdk/interceptors/.cursor/BUGBOT.md,sha256=pxmUF2c7dtaXAX8yAa1-LBa6FCrj_uw7aQcHrppjf1A,14570
63
71
  application_sdk/observability/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
72
  application_sdk/observability/logger_adaptor.py,sha256=WTqnNg78W2SRGOQVhELVLn6KMRsurkG1kc7essL08Lk,29529
65
73
  application_sdk/observability/metrics_adaptor.py,sha256=4TYPNn38zLeqxwf7cUbe8wh_zwQlr-nyiXjJsiEhTEM,16445
66
74
  application_sdk/observability/observability.py,sha256=DP0I4bHyg3TA4hxCqDFy2IiRmBGOpZ7449m7BUoc_RA,24530
67
75
  application_sdk/observability/traces_adaptor.py,sha256=0eQJPN-tYA_dV8D3uEa5ZiX9g12NDuLnPaFuQMVDdL0,18242
68
76
  application_sdk/observability/utils.py,sha256=MKEpT0WYtpATUgLgJDkGQaAP_t-jpDYMUKDfEvr8Phg,2448
69
- application_sdk/observability/decorators/observability_decorator.py,sha256=JNrWNXT5W4klmlAc5b8C3_VBjDu0PI64W2ptr7LMzk4,8110
77
+ application_sdk/observability/decorators/observability_decorator.py,sha256=yd6qfrg1MmH5KcZ5Ydzb0RaBzmxx5FrmiI9qwvZx3EU,8963
70
78
  application_sdk/outputs/__init__.py,sha256=HIENr2w9gu6u3sF_nvraj45yk53NDAddtaXSUHIVBjs,9469
71
- application_sdk/outputs/iceberg.py,sha256=IGtj5WDgqLu6vzDEvw5DLsKsjm29Krto3AHvWpemr0A,5311
72
- application_sdk/outputs/json.py,sha256=zyYQjGj5tb7bJhNt3ObwsuHT6Gakj8qNey-siUlWdP4,15065
73
- application_sdk/outputs/parquet.py,sha256=AHcsuIVU0C-yNmqk4oUuDwdxCBSjaAxJwe2v7EklVsg,16220
79
+ application_sdk/outputs/iceberg.py,sha256=TdppOMEMfojMhGyBmhWeu1AJQexRyHM-huAYeJmhjdY,5533
80
+ application_sdk/outputs/json.py,sha256=HIQIRhuTRt06enxrj5T5aylAYCMAMBFelnzl5C_D0vw,15407
81
+ application_sdk/outputs/parquet.py,sha256=IdD9pYecZbmwzltMRB12lNkz8ITFCmB5SBBASad5U7s,16744
82
+ application_sdk/outputs/.cursor/BUGBOT.md,sha256=KxEC3CIyRSK1YftZou5BgKc6PRXT3qQmBNFJp-HSyYE,11496
74
83
  application_sdk/server/__init__.py,sha256=KTqE1YPw_3WDVMWatJUuf9OOiobLM2K5SMaBrI62sCo,1568
75
- application_sdk/server/fastapi/__init__.py,sha256=YOdWNE-qqiXfo-exvxPg8T0PSuOxTdeSetUn6-BXxZg,27704
76
- application_sdk/server/fastapi/models.py,sha256=K6eNl3XXiTXKUvRTpq3oqdGH3jY1-ApobXma04J86fE,6665
84
+ application_sdk/server/.cursor/BUGBOT.md,sha256=p_MMoWUW5G1894WfOKYReZKWCuyJT_OJz3rL5g21NbI,16566
85
+ application_sdk/server/fastapi/__init__.py,sha256=BVqf63z1hxEdpJqLU4LXpFTbk5q8dVkjEbWbu_vbW_Y,29578
86
+ application_sdk/server/fastapi/models.py,sha256=dxhV2eOEg2xL_pLDgHFyRwZeKjRICQBCXXNvwRF-eek,7553
77
87
  application_sdk/server/fastapi/utils.py,sha256=2XI4DylhRQsukhX67lpAzRNCHeFCSpbuNd7TlE2IBJA,1164
78
88
  application_sdk/server/fastapi/middleware/logmiddleware.py,sha256=CxcPtDmCbSfSZ8RyI09nIshVIbCokyyA9bByQJ2G_ns,2545
79
89
  application_sdk/server/fastapi/middleware/metrics.py,sha256=5ddHAIg5sT-u9tB_HHMGL3Cfu2g1rm9z7ksienIr9ks,1563
@@ -82,7 +92,7 @@ application_sdk/server/fastapi/routers/server.py,sha256=vfHQwZCysThzfeVFNVW1IjuA
82
92
  application_sdk/services/__init__.py,sha256=H-5HZEPdr53MUfAggyHqHhRXDRLZFZsxvJgWbr257Ds,465
83
93
  application_sdk/services/atlan_storage.py,sha256=TKzXxu0yXeUcmZehwp8PcnQTC4A9w9RlZ0Fl-Xp1bLE,8509
84
94
  application_sdk/services/eventstore.py,sha256=X03JzodKByXh8w8nOl658rnnZfMFTj0IkmiLVbd6IN8,6729
85
- application_sdk/services/objectstore.py,sha256=85e_68ubUsoj3riPSgPorFvJR0vnAlkSq3uglRjUtIA,16402
95
+ application_sdk/services/objectstore.py,sha256=XfXWUodkcibFNJrNad5sSbHTrsKMTrRDjZ3HiA7CLf0,17006
86
96
  application_sdk/services/secretstore.py,sha256=UpyLLcdMia1tqFCpRrn-lE9AnERAt2iGVzET6QqkmqI,13976
87
97
  application_sdk/services/statestore.py,sha256=CQuKq4FXPS0ebDH0e0cfTTAjvsIlrA1zz1MpsWCiWnM,9562
88
98
  application_sdk/test_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -137,12 +147,13 @@ application_sdk/transformers/query/templates/schema.yaml,sha256=U9voaKusmF_8a2_j
137
147
  application_sdk/transformers/query/templates/table.yaml,sha256=QQAGLD1UFjbpSA5wvkuufv0OeIw3pfNzW4cYF73tvKY,8080
138
148
  application_sdk/transformers/query/templates/tag_attachment.yaml,sha256=dWNDGwRU4_P-t7ibv5XelMP36aGLG29U6MEXOA8zYt0,2884
139
149
  application_sdk/workflows/__init__.py,sha256=byluvgzTovr4L1co7YGb4--ktMBqt2pXBjYoxz4dIeU,3869
150
+ application_sdk/workflows/.cursor/BUGBOT.md,sha256=ybjRfSNgVSDzOrYoSvG8zIyL1JEVcsIj3AffizSfZKY,8162
140
151
  application_sdk/workflows/metadata_extraction/__init__.py,sha256=jHUe_ZBQ66jx8bgyduPuECo2RdmJtQsQAKlakADEQbc,120
141
152
  application_sdk/workflows/metadata_extraction/sql.py,sha256=BhaZavEL8H3Jvf28FGcHtZwqdsUT_EHZ4VTqiaieWek,12278
142
153
  application_sdk/workflows/query_extraction/__init__.py,sha256=n066_CX5RpJz6DIxGMkKS3eGSRg03ilaCtsqfJWQb7Q,117
143
154
  application_sdk/workflows/query_extraction/sql.py,sha256=kT_JQkLCRZ44ZpaC4QvPL6DxnRIIVh8gYHLqRbMI-hA,4826
144
- atlan_application_sdk-0.1.1rc39.dist-info/METADATA,sha256=D1HHgG-YRM3VS43mQGsST_RJTkkDacnCSnFszqPfSL4,5567
145
- atlan_application_sdk-0.1.1rc39.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
146
- atlan_application_sdk-0.1.1rc39.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
147
- atlan_application_sdk-0.1.1rc39.dist-info/licenses/NOTICE,sha256=A-XVVGt3KOYuuMmvSMIFkg534F1vHiCggEBp4Ez3wGk,1041
148
- atlan_application_sdk-0.1.1rc39.dist-info/RECORD,,
155
+ atlan_application_sdk-0.1.1rc41.dist-info/METADATA,sha256=foqYmvYq45g_A7zojtZJ0F06AjTxMOeAEnBE9FkkMFE,5567
156
+ atlan_application_sdk-0.1.1rc41.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
157
+ atlan_application_sdk-0.1.1rc41.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
158
+ atlan_application_sdk-0.1.1rc41.dist-info/licenses/NOTICE,sha256=A-XVVGt3KOYuuMmvSMIFkg534F1vHiCggEBp4Ez3wGk,1041
159
+ atlan_application_sdk-0.1.1rc41.dist-info/RECORD,,