Skip to content

Commit e099404

Browse files
authored
Merge pull request #841 from atlanhq/BLDX-715
BLDX-715 | Regenerate v9 models with validate/minimize/relate SDK methods
2 parents a5bcbe7 + fdccd2a commit e099404

407 files changed

Lines changed: 27229 additions & 198 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

pyatlan_v9/model/assets/adf.py

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
from pyatlan_v9.model.serde import Serde, get_serde
2626
from pyatlan_v9.model.transform import register_asset
2727

28+
from .adf_related import RelatedADF
2829
from .airflow_related import RelatedAirflowTask
2930
from .anomalo_related import RelatedAnomaloCheck
3031
from .app_related import RelatedApplication, RelatedApplicationField
@@ -193,6 +194,66 @@ class ADF(Asset):
193194
def __post_init__(self) -> None:
194195
self.type_name = "ADF"
195196

197+
# =========================================================================
198+
# SDK Methods
199+
# =========================================================================
200+
201+
def validate(self, for_creation: bool = False) -> None:
202+
"""
203+
Dry-run validation of this ADF instance.
204+
205+
Checks that required fields (type_name, name, qualified_name) are set.
206+
When ``for_creation=True``, also checks hierarchy-specific fields
207+
(parent references, denormalized attributes) needed to create this asset.
208+
209+
This is purely opt-in and is NOT called by any serde path — only by
210+
explicit user invocation (e.g., validating JSONL before sending to Atlan).
211+
212+
Args:
213+
for_creation: If True, also validate fields required for asset creation.
214+
215+
Raises:
216+
ValueError: If any required fields are missing or invalid.
217+
"""
218+
errors: list[str] = []
219+
if self.type_name is UNSET:
220+
errors.append("type_name is required")
221+
if self.name is UNSET:
222+
errors.append("name is required")
223+
if self.qualified_name is UNSET or self.qualified_name is None:
224+
errors.append("qualified_name is required")
225+
if errors:
226+
raise ValueError(f"ADF validation failed: {errors}")
227+
228+
def minimize(self) -> "ADF":
229+
"""
230+
Return a minimal copy of this ADF with only updater-required fields.
231+
232+
Calls :meth:`validate` first to ensure the instance is valid, then
233+
returns a new ADF with only the fields needed for an update
234+
(qualified_name, name, and any type-specific additional fields).
235+
236+
Returns:
237+
A new ADF instance with only the minimum required fields.
238+
"""
239+
self.validate()
240+
return ADF(qualified_name=self.qualified_name, name=self.name)
241+
242+
def relate(self) -> "RelatedADF":
243+
"""
244+
Create a :class:`RelatedADF` reference from this instance.
245+
246+
Returns a lightweight reference suitable for use in relationship
247+
attributes. Prefers ``guid`` if set, otherwise falls back to
248+
``qualified_name``.
249+
250+
Returns:
251+
A RelatedADF reference to this asset.
252+
"""
253+
if self.guid is not UNSET:
254+
return RelatedADF(guid=self.guid)
255+
return RelatedADF(qualified_name=self.qualified_name)
256+
196257
# =========================================================================
197258
# Optimized Serialization Methods (override Asset base class)
198259
# =========================================================================

pyatlan_v9/model/assets/adf_activity.py

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
from pyatlan_v9.model.transform import register_asset
2828

2929
from .adf_related import (
30+
RelatedAdfActivity,
3031
RelatedAdfDataflow,
3132
RelatedAdfDataset,
3233
RelatedAdfLinkedservice,
@@ -302,6 +303,74 @@ def __post_init__(self) -> None:
302303

303304
_QUALIFIED_NAME_PATTERN: ClassVar[re.Pattern] = re.compile(r"^.+/[^/]+/[^/]+$")
304305

306+
def validate(self, for_creation: bool = False) -> None:
307+
"""
308+
Dry-run validation of this AdfActivity instance.
309+
310+
Checks that required fields (type_name, name, qualified_name) are set.
311+
When ``for_creation=True``, also checks hierarchy-specific fields
312+
(parent references, denormalized attributes) needed to create this asset.
313+
314+
This is purely opt-in and is NOT called by any serde path — only by
315+
explicit user invocation (e.g., validating JSONL before sending to Atlan).
316+
317+
Args:
318+
for_creation: If True, also validate fields required for asset creation.
319+
320+
Raises:
321+
ValueError: If any required fields are missing or invalid.
322+
"""
323+
errors: list[str] = []
324+
if self.type_name is UNSET:
325+
errors.append("type_name is required")
326+
if self.name is UNSET:
327+
errors.append("name is required")
328+
if self.qualified_name is UNSET or self.qualified_name is None:
329+
errors.append("qualified_name is required")
330+
elif not self._QUALIFIED_NAME_PATTERN.match(self.qualified_name):
331+
errors.append(
332+
f"qualified_name '{self.qualified_name}' does not match expected "
333+
f"pattern: {self._QUALIFIED_NAME_PATTERN.pattern}"
334+
)
335+
if for_creation:
336+
if self.connection_qualified_name is UNSET:
337+
errors.append("connection_qualified_name is required for creation")
338+
if self.adf_pipeline is UNSET:
339+
errors.append("adf_pipeline is required for creation")
340+
if self.adf_pipeline_qualified_name is UNSET:
341+
errors.append("adf_pipeline_qualified_name is required for creation")
342+
if errors:
343+
raise ValueError(f"AdfActivity validation failed: {errors}")
344+
345+
def minimize(self) -> "AdfActivity":
346+
"""
347+
Return a minimal copy of this AdfActivity with only updater-required fields.
348+
349+
Calls :meth:`validate` first to ensure the instance is valid, then
350+
returns a new AdfActivity with only the fields needed for an update
351+
(qualified_name, name, and any type-specific additional fields).
352+
353+
Returns:
354+
A new AdfActivity instance with only the minimum required fields.
355+
"""
356+
self.validate()
357+
return AdfActivity(qualified_name=self.qualified_name, name=self.name)
358+
359+
def relate(self) -> "RelatedAdfActivity":
360+
"""
361+
Create a :class:`RelatedAdfActivity` reference from this instance.
362+
363+
Returns a lightweight reference suitable for use in relationship
364+
attributes. Prefers ``guid`` if set, otherwise falls back to
365+
``qualified_name``.
366+
367+
Returns:
368+
A RelatedAdfActivity reference to this asset.
369+
"""
370+
if self.guid is not UNSET:
371+
return RelatedAdfActivity(guid=self.guid)
372+
return RelatedAdfActivity(qualified_name=self.qualified_name)
373+
305374
# =========================================================================
306375
# Optimized Serialization Methods (override Asset base class)
307376
# =========================================================================

pyatlan_v9/model/assets/adf_dataflow.py

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
from .adf_related import (
2929
RelatedAdfActivity,
30+
RelatedAdfDataflow,
3031
RelatedAdfDataset,
3132
RelatedAdfLinkedservice,
3233
RelatedAdfPipeline,
@@ -227,6 +228,66 @@ class AdfDataflow(Asset):
227228
def __post_init__(self) -> None:
228229
self.type_name = "AdfDataflow"
229230

231+
# =========================================================================
232+
# SDK Methods
233+
# =========================================================================
234+
235+
def validate(self, for_creation: bool = False) -> None:
236+
"""
237+
Dry-run validation of this AdfDataflow instance.
238+
239+
Checks that required fields (type_name, name, qualified_name) are set.
240+
When ``for_creation=True``, also checks hierarchy-specific fields
241+
(parent references, denormalized attributes) needed to create this asset.
242+
243+
This is purely opt-in and is NOT called by any serde path — only by
244+
explicit user invocation (e.g., validating JSONL before sending to Atlan).
245+
246+
Args:
247+
for_creation: If True, also validate fields required for asset creation.
248+
249+
Raises:
250+
ValueError: If any required fields are missing or invalid.
251+
"""
252+
errors: list[str] = []
253+
if self.type_name is UNSET:
254+
errors.append("type_name is required")
255+
if self.name is UNSET:
256+
errors.append("name is required")
257+
if self.qualified_name is UNSET or self.qualified_name is None:
258+
errors.append("qualified_name is required")
259+
if errors:
260+
raise ValueError(f"AdfDataflow validation failed: {errors}")
261+
262+
def minimize(self) -> "AdfDataflow":
263+
"""
264+
Return a minimal copy of this AdfDataflow with only updater-required fields.
265+
266+
Calls :meth:`validate` first to ensure the instance is valid, then
267+
returns a new AdfDataflow with only the fields needed for an update
268+
(qualified_name, name, and any type-specific additional fields).
269+
270+
Returns:
271+
A new AdfDataflow instance with only the minimum required fields.
272+
"""
273+
self.validate()
274+
return AdfDataflow(qualified_name=self.qualified_name, name=self.name)
275+
276+
def relate(self) -> "RelatedAdfDataflow":
277+
"""
278+
Create a :class:`RelatedAdfDataflow` reference from this instance.
279+
280+
Returns a lightweight reference suitable for use in relationship
281+
attributes. Prefers ``guid`` if set, otherwise falls back to
282+
``qualified_name``.
283+
284+
Returns:
285+
A RelatedAdfDataflow reference to this asset.
286+
"""
287+
if self.guid is not UNSET:
288+
return RelatedAdfDataflow(guid=self.guid)
289+
return RelatedAdfDataflow(qualified_name=self.qualified_name)
290+
230291
# =========================================================================
231292
# Optimized Serialization Methods (override Asset base class)
232293
# =========================================================================

pyatlan_v9/model/assets/adf_dataset.py

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
from .adf_related import (
2929
RelatedAdfActivity,
3030
RelatedAdfDataflow,
31+
RelatedAdfDataset,
3132
RelatedAdfLinkedservice,
3233
RelatedAdfPipeline,
3334
)
@@ -259,6 +260,66 @@ class AdfDataset(Asset):
259260
def __post_init__(self) -> None:
260261
self.type_name = "AdfDataset"
261262

263+
# =========================================================================
264+
# SDK Methods
265+
# =========================================================================
266+
267+
def validate(self, for_creation: bool = False) -> None:
268+
"""
269+
Dry-run validation of this AdfDataset instance.
270+
271+
Checks that required fields (type_name, name, qualified_name) are set.
272+
When ``for_creation=True``, also checks hierarchy-specific fields
273+
(parent references, denormalized attributes) needed to create this asset.
274+
275+
This is purely opt-in and is NOT called by any serde path — only by
276+
explicit user invocation (e.g., validating JSONL before sending to Atlan).
277+
278+
Args:
279+
for_creation: If True, also validate fields required for asset creation.
280+
281+
Raises:
282+
ValueError: If any required fields are missing or invalid.
283+
"""
284+
errors: list[str] = []
285+
if self.type_name is UNSET:
286+
errors.append("type_name is required")
287+
if self.name is UNSET:
288+
errors.append("name is required")
289+
if self.qualified_name is UNSET or self.qualified_name is None:
290+
errors.append("qualified_name is required")
291+
if errors:
292+
raise ValueError(f"AdfDataset validation failed: {errors}")
293+
294+
def minimize(self) -> "AdfDataset":
295+
"""
296+
Return a minimal copy of this AdfDataset with only updater-required fields.
297+
298+
Calls :meth:`validate` first to ensure the instance is valid, then
299+
returns a new AdfDataset with only the fields needed for an update
300+
(qualified_name, name, and any type-specific additional fields).
301+
302+
Returns:
303+
A new AdfDataset instance with only the minimum required fields.
304+
"""
305+
self.validate()
306+
return AdfDataset(qualified_name=self.qualified_name, name=self.name)
307+
308+
def relate(self) -> "RelatedAdfDataset":
309+
"""
310+
Create a :class:`RelatedAdfDataset` reference from this instance.
311+
312+
Returns a lightweight reference suitable for use in relationship
313+
attributes. Prefers ``guid`` if set, otherwise falls back to
314+
``qualified_name``.
315+
316+
Returns:
317+
A RelatedAdfDataset reference to this asset.
318+
"""
319+
if self.guid is not UNSET:
320+
return RelatedAdfDataset(guid=self.guid)
321+
return RelatedAdfDataset(qualified_name=self.qualified_name)
322+
262323
# =========================================================================
263324
# Optimized Serialization Methods (override Asset base class)
264325
# =========================================================================

pyatlan_v9/model/assets/adf_linkedservice.py

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
RelatedAdfActivity,
3030
RelatedAdfDataflow,
3131
RelatedAdfDataset,
32+
RelatedAdfLinkedservice,
3233
RelatedAdfPipeline,
3334
)
3435
from .airflow_related import RelatedAirflowTask
@@ -275,6 +276,66 @@ class AdfLinkedservice(Asset):
275276
def __post_init__(self) -> None:
276277
self.type_name = "AdfLinkedservice"
277278

279+
# =========================================================================
280+
# SDK Methods
281+
# =========================================================================
282+
283+
def validate(self, for_creation: bool = False) -> None:
284+
"""
285+
Dry-run validation of this AdfLinkedservice instance.
286+
287+
Checks that required fields (type_name, name, qualified_name) are set.
288+
When ``for_creation=True``, also checks hierarchy-specific fields
289+
(parent references, denormalized attributes) needed to create this asset.
290+
291+
This is purely opt-in and is NOT called by any serde path — only by
292+
explicit user invocation (e.g., validating JSONL before sending to Atlan).
293+
294+
Args:
295+
for_creation: If True, also validate fields required for asset creation.
296+
297+
Raises:
298+
ValueError: If any required fields are missing or invalid.
299+
"""
300+
errors: list[str] = []
301+
if self.type_name is UNSET:
302+
errors.append("type_name is required")
303+
if self.name is UNSET:
304+
errors.append("name is required")
305+
if self.qualified_name is UNSET or self.qualified_name is None:
306+
errors.append("qualified_name is required")
307+
if errors:
308+
raise ValueError(f"AdfLinkedservice validation failed: {errors}")
309+
310+
def minimize(self) -> "AdfLinkedservice":
311+
"""
312+
Return a minimal copy of this AdfLinkedservice with only updater-required fields.
313+
314+
Calls :meth:`validate` first to ensure the instance is valid, then
315+
returns a new AdfLinkedservice with only the fields needed for an update
316+
(qualified_name, name, and any type-specific additional fields).
317+
318+
Returns:
319+
A new AdfLinkedservice instance with only the minimum required fields.
320+
"""
321+
self.validate()
322+
return AdfLinkedservice(qualified_name=self.qualified_name, name=self.name)
323+
324+
def relate(self) -> "RelatedAdfLinkedservice":
325+
"""
326+
Create a :class:`RelatedAdfLinkedservice` reference from this instance.
327+
328+
Returns a lightweight reference suitable for use in relationship
329+
attributes. Prefers ``guid`` if set, otherwise falls back to
330+
``qualified_name``.
331+
332+
Returns:
333+
A RelatedAdfLinkedservice reference to this asset.
334+
"""
335+
if self.guid is not UNSET:
336+
return RelatedAdfLinkedservice(guid=self.guid)
337+
return RelatedAdfLinkedservice(qualified_name=self.qualified_name)
338+
278339
# =========================================================================
279340
# Optimized Serialization Methods (override Asset base class)
280341
# =========================================================================

0 commit comments

Comments
 (0)