def __init__()

in source/infrastructure/forecast/forecast/parameters.py [0:0]


    def __init__(self, scope: SolutionStack, id: str):
        super().__init__(scope, id)

        re_http_https_s3 = (
            r"^https?://([-\w\.]+)+(:\d+)?(/([-\w/_\.]*(\?\S+)?)?)?$|^s3://(.*)/(.*)$"
        )
        re_http_https_s3_or_blank = r"^https?://([-\w\.]+)+(:\d+)?(/([-\w/_\.]*(\?\S+)?)?)?$|^s3://(.*)/(.*)$|^$"

        self.email = CfnParameter(
            scope,
            id="Email",
            type="String",
            description="Email to notify with forecast results",
            default="",
            max_length=50,
            allowed_pattern=r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$|^$)",
            constraint_description="Must be a valid email address or blank",
        )

        self.lambda_log_level = CfnParameter(
            scope,
            id="LambdaLogLevel",
            type="String",
            description="Change the verbosity of the logs output to CloudWatch",
            default="WARNING",
            allowed_values=["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"],
        )

        self.notebook_deploy = CfnParameter(
            scope,
            id="NotebookDeploy",
            type="String",
            description="Deploy an Amazon SageMaker Jupyter Notebook instance",
            default="No",
            allowed_values=["Yes", "No"],
        )

        self.notebook_volume_size = CfnParameter(
            scope,
            id="NotebookVolumeSize",
            type="Number",
            description="Enter the size of the notebook instance EBS volume in GB",
            default=10,
            min_value=5,
            max_value=16384,
            constraint_description="Must be an integer between 5 (GB) and 16384 (16 TB)",
        )

        self.notebook_instance_type = CfnParameter(
            scope,
            id="NotebookInstanceType",
            type="String",
            description="Enter the type of the notebook instance",
            default="ml.t3.medium",
            allowed_values=[
                "ml.t2.medium",
                "ml.t3.medium",
                "ml.r5.large",
                "ml.c5.large",
            ],
        )

        self.quicksight_analysis_owner = CfnParameter(
            scope,
            id="QuickSightAnalysisOwner",
            description="With QuickSight Enterprise enabled, provide a QuickSight ADMIN user ARN to automatically create QuickSight analyses",
            default="",
            allowed_pattern="(^arn:.*:quicksight:.*:.*:user.*$|^$)",
        )

        self.forecast_kms_key_arn = CfnParameter(
            scope,
            id="ForecastKmsKeyArn",
            description="Provide Amazon Forecast with an alternate AWS Key Management (KMS) key to use for CreatePredictor and CreateDataset operations",
            default="",
            allowed_pattern="(^arn:.*:kms:.*:.*:key/.*$|^$)",
        )

        # Downloader / Demo Configuration
        self.forecast_deploy = CfnParameter(
            scope,
            id="ForecastDeploy",
            type="String",
            description="Download and deploy these assets with the stack",
            default="No",
            allowed_values=["Yes", "No"],
        )
        self.forecast_name = CfnParameter(
            self,
            id="ForecastName",
            type="String",
            description="Name of the forecast to create in the Amazon Forecast console",
            default=FORECAST_NAME_DEFAULT,
            allowed_pattern=r"^[a-zA-Z][a-zA-Z0-9_]*$",
            max_length=63,
            constraint_description="Forecast names must be less than 63 characters, start with a letter, and contain only alphanumeric characters or underscores",
        )

        self.forecast_defaults_url = CfnParameter(
            self,
            id="ForecastDefaultsUrl",
            type="String",
            description="URL (S3, HTTP or HTTPS) your forecast defaults file (usually named forecast-defaults.yaml)",
            allowed_pattern=re_http_https_s3,
            default=FORECAST_CONFIG_DEFAULT,
            constraint_description="Must be a valid s3/http/https address",
        )

        self.tts_url = CfnParameter(
            self,
            id="TargetTimeSeriesUrl",
            type="String",
            description="URL (S3, HTTP or HTTPS) for target time series data",
            allowed_pattern=re_http_https_s3,
            default=TTS_URL_DEFAULT,
            constraint_description="Must be a valid s3/http/https address",
        )

        self.rts_url = CfnParameter(
            self,
            id="RelatedTimeSeriesUrl",
            type="String",
            description="URL (S3, HTTP or HTTPS) for related time series data",
            allowed_pattern=re_http_https_s3_or_blank,
            default=RTS_URL_DEFAULT,
            constraint_description="Must be a valid s3/http/https address or blank",
        )

        self.md_url = CfnParameter(
            self,
            id="MetadataUrl",
            type="String",
            description="URL (S3, HTTP or HTTPS) for item metadata",
            allowed_pattern=re_http_https_s3_or_blank,
            default=MD_URL_DEFAULT,
            constraint_description="Must be a valid http/https address or blank",
        )

        scope.solutions_template_options.add_parameter(
            self.email, "Email", ParameterSection.notification_configuration
        )
        scope.solutions_template_options.add_parameter(
            self.notebook_deploy,
            "Deploy Jupyter Notebook",
            ParameterSection.visualization_config,
        )
        scope.solutions_template_options.add_parameter(
            self.notebook_instance_type,
            "Jupyter Notebook Instance Type",
            ParameterSection.visualization_config,
        )
        scope.solutions_template_options.add_parameter(
            self.notebook_volume_size,
            "Jupyter Notebook Volume Size",
            ParameterSection.visualization_config,
        )
        scope.solutions_template_options.add_parameter(
            self.quicksight_analysis_owner,
            "(Optional) Deploy QuickSight Dashboard",
            ParameterSection.visualization_config,
        )
        scope.solutions_template_options.add_parameter(
            self.forecast_kms_key_arn,
            "(Optional) KMS key ARN used to encrypt Datasets and Predictors managed by Amazon Forecast",
            ParameterSection.security_config,
        )
        scope.solutions_template_options.add_parameter(
            self.forecast_deploy,
            "Demo / Forecast Deployment",
            ParameterSection.forecast_config,
        )
        scope.solutions_template_options.add_parameter(
            self.forecast_name,
            "(Optional) Forecast Name",
            ParameterSection.forecast_config,
        )
        scope.solutions_template_options.add_parameter(
            self.forecast_defaults_url,
            "(Optional) Default forecast configuration file URL",
            ParameterSection.forecast_config,
        )
        scope.solutions_template_options.add_parameter(
            self.tts_url,
            "(Optional) Target Time Series URL",
            ParameterSection.dataset_config,
        )
        scope.solutions_template_options.add_parameter(
            self.rts_url,
            "(Optional) Related Time Series URL",
            ParameterSection.dataset_config,
        )
        scope.solutions_template_options.add_parameter(
            self.md_url,
            "(Optional) Item Metadata URL",
            ParameterSection.dataset_config,
        )
        scope.solutions_template_options.add_parameter(
            self.lambda_log_level,
            "CloudWatch Log Level",
            ParameterSection.deployment_config,
        )