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 ContainerMetricPolicyRule(Property):
      """
      AWS Object Type = "AWS::MediaStore::Container.MetricPolicyRule"
  
      Resource Document: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-metricpolicyrule.html
  
      Property Document:
      
      - ``rp_ObjectGroup``: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-metricpolicyrule.html#cfn-mediastore-container-metricpolicyrule-objectgroup
      - ``rp_ObjectGroupName``: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-metricpolicyrule.html#cfn-mediastore-container-metricpolicyrule-objectgroupname
      """
      AWS_OBJECT_TYPE = "AWS::MediaStore::Container.MetricPolicyRule"
      
      rp_ObjectGroup: TypeHint.intrinsic_str = attr.ib(
          default=None,
          validator=attr.validators.instance_of(TypeCheck.intrinsic_str_type),
          metadata={AttrMeta.PROPERTY_NAME: "ObjectGroup"},
      )
      """Doc: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-metricpolicyrule.html#cfn-mediastore-container-metricpolicyrule-objectgroup"""
      rp_ObjectGroupName: TypeHint.intrinsic_str = attr.ib(
          default=None,
          validator=attr.validators.instance_of(TypeCheck.intrinsic_str_type),
          metadata={AttrMeta.PROPERTY_NAME: "ObjectGroupName"},
      )
      """Doc: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-metricpolicyrule.html#cfn-mediastore-container-metricpolicyrule-objectgroupname"""
  
  @attr.s
  class ContainerCorsRule(Property):
      """
      AWS Object Type = "AWS::MediaStore::Container.CorsRule"
  
      Resource Document: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html
  
      Property Document:
      
      - ``p_AllowedHeaders``: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-allowedheaders
      - ``p_AllowedMethods``: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-allowedmethods
      - ``p_AllowedOrigins``: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-allowedorigins
      - ``p_ExposeHeaders``: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-exposeheaders
      - ``p_MaxAgeSeconds``: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-maxageseconds
      """
      AWS_OBJECT_TYPE = "AWS::MediaStore::Container.CorsRule"
      
      p_AllowedHeaders: typing.List[TypeHint.intrinsic_str] = attr.ib(
          default=None,
          validator=attr.validators.optional(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: "AllowedHeaders"},
      )
      """Doc: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-allowedheaders"""
      p_AllowedMethods: typing.List[TypeHint.intrinsic_str] = attr.ib(
          default=None,
          validator=attr.validators.optional(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: "AllowedMethods"},
      )
      """Doc: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-allowedmethods"""
      p_AllowedOrigins: typing.List[TypeHint.intrinsic_str] = attr.ib(
          default=None,
          validator=attr.validators.optional(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: "AllowedOrigins"},
      )
      """Doc: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-allowedorigins"""
      p_ExposeHeaders: typing.List[TypeHint.intrinsic_str] = attr.ib(
          default=None,
          validator=attr.validators.optional(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: "ExposeHeaders"},
      )
      """Doc: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-exposeheaders"""
      p_MaxAgeSeconds: int = attr.ib(
          default=None,
          validator=attr.validators.optional(attr.validators.instance_of(int)),
          metadata={AttrMeta.PROPERTY_NAME: "MaxAgeSeconds"},
      )
      """Doc: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-maxageseconds"""
  
  @attr.s
  class ContainerMetricPolicy(Property):
      """
      AWS Object Type = "AWS::MediaStore::Container.MetricPolicy"
  
      Resource Document: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-metricpolicy.html
  
      Property Document:
      
      - ``rp_ContainerLevelMetrics``: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-metricpolicy.html#cfn-mediastore-container-metricpolicy-containerlevelmetrics
      - ``p_MetricPolicyRules``: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-metricpolicy.html#cfn-mediastore-container-metricpolicy-metricpolicyrules
      """
      AWS_OBJECT_TYPE = "AWS::MediaStore::Container.MetricPolicy"
      
      rp_ContainerLevelMetrics: TypeHint.intrinsic_str = attr.ib(
          default=None,
          validator=attr.validators.instance_of(TypeCheck.intrinsic_str_type),
          metadata={AttrMeta.PROPERTY_NAME: "ContainerLevelMetrics"},
      )
      """Doc: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-metricpolicy.html#cfn-mediastore-container-metricpolicy-containerlevelmetrics"""
      p_MetricPolicyRules: typing.List[typing.Union['ContainerMetricPolicyRule', dict]] = attr.ib(
          default=None,
          converter=ContainerMetricPolicyRule.from_list,
          validator=attr.validators.optional(attr.validators.deep_iterable(member_validator=attr.validators.instance_of(ContainerMetricPolicyRule), iterable_validator=attr.validators.instance_of(list))),
          metadata={AttrMeta.PROPERTY_NAME: "MetricPolicyRules"},
      )
      """Doc: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-metricpolicy.html#cfn-mediastore-container-metricpolicy-metricpolicyrules"""
  
  
  #--- Resource declaration ---
  
  @attr.s
  class Container(Resource):
      """
      AWS Object Type = "AWS::MediaStore::Container"
  
      Resource Document: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediastore-container.html
  
      Property Document:
      
      - ``rp_ContainerName``: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediastore-container.html#cfn-mediastore-container-containername
      - ``p_AccessLoggingEnabled``: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediastore-container.html#cfn-mediastore-container-accessloggingenabled
      - ``p_CorsPolicy``: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediastore-container.html#cfn-mediastore-container-corspolicy
      - ``p_LifecyclePolicy``: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediastore-container.html#cfn-mediastore-container-lifecyclepolicy
      - ``p_MetricPolicy``: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediastore-container.html#cfn-mediastore-container-metricpolicy
      - ``p_Policy``: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediastore-container.html#cfn-mediastore-container-policy
      - ``p_Tags``: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediastore-container.html#cfn-mediastore-container-tags
      """
      AWS_OBJECT_TYPE = "AWS::MediaStore::Container"
  
      
      rp_ContainerName: TypeHint.intrinsic_str = attr.ib(
          default=None,
          validator=attr.validators.instance_of(TypeCheck.intrinsic_str_type),
          metadata={AttrMeta.PROPERTY_NAME: "ContainerName"},
      )
      """Doc: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediastore-container.html#cfn-mediastore-container-containername"""
      p_AccessLoggingEnabled: bool = attr.ib(
          default=None,
          validator=attr.validators.optional(attr.validators.instance_of(bool)),
          metadata={AttrMeta.PROPERTY_NAME: "AccessLoggingEnabled"},
      )
      """Doc: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediastore-container.html#cfn-mediastore-container-accessloggingenabled"""
      p_CorsPolicy: typing.List[typing.Union['ContainerCorsRule', dict]] = attr.ib(
          default=None,
          converter=ContainerCorsRule.from_list,
          validator=attr.validators.optional(attr.validators.deep_iterable(member_validator=attr.validators.instance_of(ContainerCorsRule), iterable_validator=attr.validators.instance_of(list))),
          metadata={AttrMeta.PROPERTY_NAME: "CorsPolicy"},
      )
      """Doc: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediastore-container.html#cfn-mediastore-container-corspolicy"""
      p_LifecyclePolicy: TypeHint.intrinsic_str = attr.ib(
          default=None,
          validator=attr.validators.optional(attr.validators.instance_of(TypeCheck.intrinsic_str_type)),
          metadata={AttrMeta.PROPERTY_NAME: "LifecyclePolicy"},
      )
      """Doc: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediastore-container.html#cfn-mediastore-container-lifecyclepolicy"""
      p_MetricPolicy: typing.Union['ContainerMetricPolicy', dict] = attr.ib(
          default=None,
          converter=ContainerMetricPolicy.from_dict,
          validator=attr.validators.optional(attr.validators.instance_of(ContainerMetricPolicy)),
          metadata={AttrMeta.PROPERTY_NAME: "MetricPolicy"},
      )
      """Doc: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediastore-container.html#cfn-mediastore-container-metricpolicy"""
      p_Policy: TypeHint.intrinsic_str = attr.ib(
          default=None,
          validator=attr.validators.optional(attr.validators.instance_of(TypeCheck.intrinsic_str_type)),
          metadata={AttrMeta.PROPERTY_NAME: "Policy"},
      )
      """Doc: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediastore-container.html#cfn-mediastore-container-policy"""
      p_Tags: typing.List[typing.Union[Tag, dict]] = attr.ib(
          default=None,
          converter=Tag.from_list,
          validator=attr.validators.optional(attr.validators.deep_iterable(member_validator=attr.validators.instance_of(Tag), iterable_validator=attr.validators.instance_of(list))),
          metadata={AttrMeta.PROPERTY_NAME: "Tags"},
      )
      """Doc: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediastore-container.html#cfn-mediastore-container-tags"""
  
      
      @property
      def rv_Endpoint(self) -> GetAtt:
          """Doc: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediastore-container.html#aws-resource-mediastore-container-return-values"""
          return GetAtt(resource=self, attr_name="Endpoint")
      
  