# SPDX-License-Identifier: Apache-2.0
# Copyright 2025 Atlan Pte. Ltd.
from __future__ import annotations
from datetime import datetime
from typing import ClassVar, List, Optional
from pydantic.v1 import Field, validator
from pyatlan.model.fields.atlan_fields import (
KeywordField,
NumericField,
RelationField,
TextField,
)
from pyatlan.model.structs import BusinessPolicyRule
from .core.asset import Asset
[docs]
class BusinessPolicy(Asset, type_name="BusinessPolicy"):
"""Description"""
type_name: str = Field(default="BusinessPolicy", allow_mutation=False)
@validator("type_name")
def validate_type_name(cls, v):
if v != "BusinessPolicy":
raise ValueError("must be BusinessPolicy")
return v
def __setattr__(self, name, value):
if name in BusinessPolicy._convenience_properties:
return object.__setattr__(self, name, value)
super().__setattr__(name, value)
BUSINESS_POLICY_TYPE: ClassVar[KeywordField] = KeywordField(
"businessPolicyType", "businessPolicyType"
)
"""
Type of business policy
"""
BUSINESS_POLICY_LONG_DESCRIPTION: ClassVar[RelationField] = RelationField(
"businessPolicyLongDescription"
)
"""
Body of the business policy, a long readme like document
"""
BUSINESS_POLICY_VALID_TILL: ClassVar[NumericField] = NumericField(
"businessPolicyValidTill", "businessPolicyValidTill"
)
"""
Validity end date of the policy
"""
BUSINESS_POLICY_VALID_FROM: ClassVar[NumericField] = NumericField(
"businessPolicyValidFrom", "businessPolicyValidFrom"
)
"""
Validity start date of the policy
"""
BUSINESS_POLICY_VERSION: ClassVar[NumericField] = NumericField(
"businessPolicyVersion", "businessPolicyVersion"
)
"""
Version of the policy
"""
BUSINESS_POLICY_REVIEW_PERIOD: ClassVar[KeywordField] = KeywordField(
"businessPolicyReviewPeriod", "businessPolicyReviewPeriod"
)
"""
Duration for the business policy to complete review.
"""
BUSINESS_POLICY_FILTER_DSL: ClassVar[TextField] = TextField(
"businessPolicyFilterDSL", "businessPolicyFilterDSL"
)
"""
Business Policy Filter ES DSL to denote the associate asset/s involved.
"""
BUSINESS_POLICY_BASE_PARENT_GUID: ClassVar[KeywordField] = KeywordField(
"businessPolicyBaseParentGuid", "businessPolicyBaseParentGuid"
)
"""
Base parent Guid for policy used in version
"""
BUSINESS_POLICY_SELECTED_APPROVAL_WF: ClassVar[TextField] = TextField(
"businessPolicySelectedApprovalWF", "businessPolicySelectedApprovalWF"
)
"""
Selected approval workflow id for business policy
"""
BUSINESS_POLICY_RULES: ClassVar[KeywordField] = KeywordField(
"businessPolicyRules", "businessPolicyRules"
)
"""
List of rules applied to this business policy.
"""
EXCEPTIONS_FOR_BUSINESS_POLICY: ClassVar[RelationField] = RelationField(
"exceptionsForBusinessPolicy"
)
"""
TBC
"""
RELATED_BUSINESS_POLICIES: ClassVar[RelationField] = RelationField(
"relatedBusinessPolicies"
)
"""
TBC
"""
_convenience_properties: ClassVar[List[str]] = [
"business_policy_type",
"business_policy_long_description",
"business_policy_valid_till",
"business_policy_valid_from",
"business_policy_version",
"business_policy_review_period",
"business_policy_filter_d_s_l",
"business_policy_base_parent_guid",
"business_policy_selected_approval_w_f",
"business_policy_rules",
"exceptions_for_business_policy",
"related_business_policies",
]
@property
def business_policy_type(self) -> Optional[str]:
return None if self.attributes is None else self.attributes.business_policy_type
@business_policy_type.setter
def business_policy_type(self, business_policy_type: Optional[str]):
if self.attributes is None:
self.attributes = self.Attributes()
self.attributes.business_policy_type = business_policy_type
@property
def business_policy_long_description(self) -> Optional[str]:
return (
None
if self.attributes is None
else self.attributes.business_policy_long_description
)
@business_policy_long_description.setter
def business_policy_long_description(
self, business_policy_long_description: Optional[str]
):
if self.attributes is None:
self.attributes = self.Attributes()
self.attributes.business_policy_long_description = (
business_policy_long_description
)
@property
def business_policy_valid_till(self) -> Optional[datetime]:
return (
None
if self.attributes is None
else self.attributes.business_policy_valid_till
)
@business_policy_valid_till.setter
def business_policy_valid_till(
self, business_policy_valid_till: Optional[datetime]
):
if self.attributes is None:
self.attributes = self.Attributes()
self.attributes.business_policy_valid_till = business_policy_valid_till
@property
def business_policy_valid_from(self) -> Optional[datetime]:
return (
None
if self.attributes is None
else self.attributes.business_policy_valid_from
)
@business_policy_valid_from.setter
def business_policy_valid_from(
self, business_policy_valid_from: Optional[datetime]
):
if self.attributes is None:
self.attributes = self.Attributes()
self.attributes.business_policy_valid_from = business_policy_valid_from
@property
def business_policy_version(self) -> Optional[int]:
return (
None if self.attributes is None else self.attributes.business_policy_version
)
@business_policy_version.setter
def business_policy_version(self, business_policy_version: Optional[int]):
if self.attributes is None:
self.attributes = self.Attributes()
self.attributes.business_policy_version = business_policy_version
@property
def business_policy_review_period(self) -> Optional[str]:
return (
None
if self.attributes is None
else self.attributes.business_policy_review_period
)
@business_policy_review_period.setter
def business_policy_review_period(
self, business_policy_review_period: Optional[str]
):
if self.attributes is None:
self.attributes = self.Attributes()
self.attributes.business_policy_review_period = business_policy_review_period
@property
def business_policy_filter_d_s_l(self) -> Optional[str]:
return (
None
if self.attributes is None
else self.attributes.business_policy_filter_d_s_l
)
@business_policy_filter_d_s_l.setter
def business_policy_filter_d_s_l(self, business_policy_filter_d_s_l: Optional[str]):
if self.attributes is None:
self.attributes = self.Attributes()
self.attributes.business_policy_filter_d_s_l = business_policy_filter_d_s_l
@property
def business_policy_base_parent_guid(self) -> Optional[str]:
return (
None
if self.attributes is None
else self.attributes.business_policy_base_parent_guid
)
@business_policy_base_parent_guid.setter
def business_policy_base_parent_guid(
self, business_policy_base_parent_guid: Optional[str]
):
if self.attributes is None:
self.attributes = self.Attributes()
self.attributes.business_policy_base_parent_guid = (
business_policy_base_parent_guid
)
@property
def business_policy_selected_approval_w_f(self) -> Optional[str]:
return (
None
if self.attributes is None
else self.attributes.business_policy_selected_approval_w_f
)
@business_policy_selected_approval_w_f.setter
def business_policy_selected_approval_w_f(
self, business_policy_selected_approval_w_f: Optional[str]
):
if self.attributes is None:
self.attributes = self.Attributes()
self.attributes.business_policy_selected_approval_w_f = (
business_policy_selected_approval_w_f
)
@property
def business_policy_rules(self) -> Optional[List[BusinessPolicyRule]]:
return (
None if self.attributes is None else self.attributes.business_policy_rules
)
@business_policy_rules.setter
def business_policy_rules(
self, business_policy_rules: Optional[List[BusinessPolicyRule]]
):
if self.attributes is None:
self.attributes = self.Attributes()
self.attributes.business_policy_rules = business_policy_rules
@property
def exceptions_for_business_policy(self) -> Optional[List[BusinessPolicyException]]:
return (
None
if self.attributes is None
else self.attributes.exceptions_for_business_policy
)
@exceptions_for_business_policy.setter
def exceptions_for_business_policy(
self, exceptions_for_business_policy: Optional[List[BusinessPolicyException]]
):
if self.attributes is None:
self.attributes = self.Attributes()
self.attributes.exceptions_for_business_policy = exceptions_for_business_policy
@property
def related_business_policies(self) -> Optional[List[BusinessPolicy]]:
return (
None
if self.attributes is None
else self.attributes.related_business_policies
)
@related_business_policies.setter
def related_business_policies(
self, related_business_policies: Optional[List[BusinessPolicy]]
):
if self.attributes is None:
self.attributes = self.Attributes()
self.attributes.related_business_policies = related_business_policies
class Attributes(Asset.Attributes):
business_policy_type: Optional[str] = Field(default=None, description="")
business_policy_long_description: Optional[str] = Field(
default=None, description=""
)
business_policy_valid_till: Optional[datetime] = Field(
default=None, description=""
)
business_policy_valid_from: Optional[datetime] = Field(
default=None, description=""
)
business_policy_version: Optional[int] = Field(default=None, description="")
business_policy_review_period: Optional[str] = Field(
default=None, description=""
)
business_policy_filter_d_s_l: Optional[str] = Field(
default=None, description=""
)
business_policy_base_parent_guid: Optional[str] = Field(
default=None, description=""
)
business_policy_selected_approval_w_f: Optional[str] = Field(
default=None, description=""
)
business_policy_rules: Optional[List[BusinessPolicyRule]] = Field(
default=None, description=""
)
exceptions_for_business_policy: Optional[List[BusinessPolicyException]] = Field(
default=None, description=""
) # relationship
related_business_policies: Optional[List[BusinessPolicy]] = Field(
default=None, description=""
) # relationship
attributes: BusinessPolicy.Attributes = Field(
default_factory=lambda: BusinessPolicy.Attributes(),
description=(
"Map of attributes in the instance and their values. "
"The specific keys of this map will vary by type, "
"so are described in the sub-types of this schema."
),
)
from .business_policy_exception import BusinessPolicyException # noqa: E402, F401
BusinessPolicy.Attributes.update_forward_refs()