text: # -*- coding: utf-8 -*-
  
  """
  This module
  """
  
  import attr
  import typing
  
  from ..core.model import (
      Property, Resource, Tag, GetAtt, TypeHint, TypeCheck,
  )
  from ..core.constant import AttrMeta
  
  #--- Property declaration ---
  
  @attr.s
  class PropNotificationRuleTarget(Property):
      """
      AWS Object Type = "AWS::CodeStarNotifications::NotificationRule.Target"
  
      Resource Document: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codestarnotifications-notificationrule-target.html
  
      Property Document:
      
      - ``rp_TargetAddress``: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codestarnotifications-notificationrule-target.html#cfn-codestarnotifications-notificationrule-target-targetaddress
      - ``rp_TargetType``: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codestarnotifications-notificationrule-target.html#cfn-codestarnotifications-notificationrule-target-targettype
      """
      AWS_OBJECT_TYPE = "AWS::CodeStarNotifications::NotificationRule.Target"
      
      rp_TargetAddress: TypeHint.intrinsic_str = attr.ib(
          default=None,
          validator=attr.validators.instance_of(TypeCheck.intrinsic_str_type),
          metadata={AttrMeta.PROPERTY_NAME: "TargetAddress"},
      )
      """Doc: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codestarnotifications-notificationrule-target.html#cfn-codestarnotifications-notificationrule-target-targetaddress"""
      rp_TargetType: TypeHint.intrinsic_str = attr.ib(
          default=None,
          validator=attr.validators.instance_of(TypeCheck.intrinsic_str_type),
          metadata={AttrMeta.PROPERTY_NAME: "TargetType"},
      )
      """Doc: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codestarnotifications-notificationrule-target.html#cfn-codestarnotifications-notificationrule-target-targettype"""
  
  
  #--- Resource declaration ---
  
  @attr.s
  class NotificationRule(Resource):
      """
      AWS Object Type = "AWS::CodeStarNotifications::NotificationRule"
  
      Resource Document: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestarnotifications-notificationrule.html
  
      Property Document:
      
      - ``rp_DetailType``: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestarnotifications-notificationrule.html#cfn-codestarnotifications-notificationrule-detailtype
      - ``rp_EventTypeIds``: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestarnotifications-notificationrule.html#cfn-codestarnotifications-notificationrule-eventtypeids
      - ``rp_Name``: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestarnotifications-notificationrule.html#cfn-codestarnotifications-notificationrule-name
      - ``rp_Resource``: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestarnotifications-notificationrule.html#cfn-codestarnotifications-notificationrule-resource
      - ``rp_Targets``: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestarnotifications-notificationrule.html#cfn-codestarnotifications-notificationrule-targets
      - ``p_CreatedBy``: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestarnotifications-notificationrule.html#cfn-codestarnotifications-notificationrule-createdby
      - ``p_EventTypeId``: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestarnotifications-notificationrule.html#cfn-codestarnotifications-notificationrule-eventtypeid
      - ``p_Status``: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestarnotifications-notificationrule.html#cfn-codestarnotifications-notificationrule-status
      - ``p_TargetAddress``: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestarnotifications-notificationrule.html#cfn-codestarnotifications-notificationrule-targetaddress
      - ``p_Tags``: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestarnotifications-notificationrule.html#cfn-codestarnotifications-notificationrule-tags
      """
      AWS_OBJECT_TYPE = "AWS::CodeStarNotifications::NotificationRule"
  
      
      rp_DetailType: TypeHint.intrinsic_str = attr.ib(
          default=None,
          validator=attr.validators.instance_of(TypeCheck.intrinsic_str_type),
          metadata={AttrMeta.PROPERTY_NAME: "DetailType"},
      )
      """Doc: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestarnotifications-notificationrule.html#cfn-codestarnotifications-notificationrule-detailtype"""
      rp_EventTypeIds: typing.List[TypeHint.intrinsic_str] = attr.ib(
          default=None,
          validator=attr.validators.deep_iterable(member_validator=attr.validators.instance_of(TypeCheck.intrinsic_str_type), iterable_validator=attr.validators.instance_of(list)),
          metadata={AttrMeta.PROPERTY_NAME: "EventTypeIds"},
      )
      """Doc: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestarnotifications-notificationrule.html#cfn-codestarnotifications-notificationrule-eventtypeids"""
      rp_Name: TypeHint.intrinsic_str = attr.ib(
          default=None,
          validator=attr.validators.instance_of(TypeCheck.intrinsic_str_type),
          metadata={AttrMeta.PROPERTY_NAME: "Name"},
      )
      """Doc: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestarnotifications-notificationrule.html#cfn-codestarnotifications-notificationrule-name"""
      rp_Resource: TypeHint.intrinsic_str = attr.ib(
          default=None,
          validator=attr.validators.instance_of(TypeCheck.intrinsic_str_type),
          metadata={AttrMeta.PROPERTY_NAME: "Resource"},
      )
      """Doc: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestarnotifications-notificationrule.html#cfn-codestarnotifications-notificationrule-resource"""
      rp_Targets: typing.List[typing.Union['PropNotificationRuleTarget', dict]] = attr.ib(
          default=None,
          converter=PropNotificationRuleTarget.from_list,
          validator=attr.validators.deep_iterable(member_validator=attr.validators.instance_of(PropNotificationRuleTarget), iterable_validator=attr.validators.instance_of(list)),
          metadata={AttrMeta.PROPERTY_NAME: "Targets"},
      )
      """Doc: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestarnotifications-notificationrule.html#cfn-codestarnotifications-notificationrule-targets"""
      p_CreatedBy: TypeHint.intrinsic_str = attr.ib(
          default=None,
          validator=attr.validators.optional(attr.validators.instance_of(TypeCheck.intrinsic_str_type)),
          metadata={AttrMeta.PROPERTY_NAME: "CreatedBy"},
      )
      """Doc: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestarnotifications-notificationrule.html#cfn-codestarnotifications-notificationrule-createdby"""
      p_EventTypeId: TypeHint.intrinsic_str = attr.ib(
          default=None,
          validator=attr.validators.optional(attr.validators.instance_of(TypeCheck.intrinsic_str_type)),
          metadata={AttrMeta.PROPERTY_NAME: "EventTypeId"},
      )
      """Doc: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestarnotifications-notificationrule.html#cfn-codestarnotifications-notificationrule-eventtypeid"""
      p_Status: TypeHint.intrinsic_str = attr.ib(
          default=None,
          validator=attr.validators.optional(attr.validators.instance_of(TypeCheck.intrinsic_str_type)),
          metadata={AttrMeta.PROPERTY_NAME: "Status"},
      )
      """Doc: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestarnotifications-notificationrule.html#cfn-codestarnotifications-notificationrule-status"""
      p_TargetAddress: TypeHint.intrinsic_str = attr.ib(
          default=None,
          validator=attr.validators.optional(attr.validators.instance_of(TypeCheck.intrinsic_str_type)),
          metadata={AttrMeta.PROPERTY_NAME: "TargetAddress"},
      )
      """Doc: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestarnotifications-notificationrule.html#cfn-codestarnotifications-notificationrule-targetaddress"""
      p_Tags: dict = attr.ib(
          default=None,
          validator=attr.validators.optional(attr.validators.instance_of(dict)),
          metadata={AttrMeta.PROPERTY_NAME: "Tags"},
      )
      """Doc: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestarnotifications-notificationrule.html#cfn-codestarnotifications-notificationrule-tags"""
  
      
      @property
      def rv_Arn(self) -> GetAtt:
          """Doc: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestarnotifications-notificationrule.html#aws-resource-codestarnotifications-notificationrule-return-values"""
          return GetAtt(resource=self, attr_name="Arn")
      
  