Repository: Avaiga/taipy
File: taipy/core/config/data_node_config.py (Python)

Code before:
                [page](../../userman/scenario_features/task-orchestration/scenario-config.md#from-task-configurations)
                for more details).
                If *validity_period* is set to None, the data node is always up-to-date.
            **properties (dict[str, any]): A keyworded variable length list of additional arguments.

        Returns:
            The new S3 object data node configuration.
        """  # noqa: E501
        properties.update(
            {
                cls._REQUIRED_AWS_ACCESS_KEY_ID_PROPERTY: aws_access_key,
                cls._REQUIRED_AWS_SECRET_ACCESS_KEY_PROPERTY: aws_secret_access_key,
                cls._REQUIRED_AWS_STORAGE_BUCKET_NAME_PROPERTY: aws_s3_bucket_name,
                cls._REQUIRED_AWS_S3_OBJECT_KEY_PROPERTY: aws_s3_object_key,
            }
        )

        if aws_region is not None:
            properties[cls._OPTIONAL_AWS_REGION_PROPERTY] = aws_region
        if aws_s3_client_parameters is not None:
            properties[cls._OPTIONAL_AWS_S3_CLIENT_PARAMETERS_PROPERTY] = aws_s3_client_parameters
        if aws_s3_get_object_parameters is not None:
            properties[cls._OPTIONAL_AWS_S3_GET_OBJECT_PARAMETERS_PROPERTY] = aws_s3_get_object_parameters
        if aws_s3_put_object_parameters is not None:
            properties[cls._OPTIONAL_AWS_S3_PUT_OBJECT_PARAMETERS_PROPERTY] = aws_s3_put_object_parameters
            return cls.__configure(id, DataNodeConfig._STORAGE_TYPE_VALUE_S3_OBJECT, scope, validity_period, **properties)

    @staticmethod
    def __configure(
        id: str,
        storage_type: Optional[str] = None,
        scope: Optional[Scope] = None,
        validity_period: Optional[timedelta] = None,
        **properties,
    ):
        section = DataNodeConfig(id, storage_type, scope, validity_period, **properties)
        Config._register(section)
        return Config.sections[DataNodeConfig.name][id]


Review comment (suggestion):
```suggestion

        return cls.__configure(id, DataNodeConfig._STORAGE_TYPE_VALUE_S3_OBJECT, scope, validity_period, **properties)
```

There should not be a tab here

Code after:
                to write the data to.
            aws_s3_object_key (str): The Amazon Web Services (AWS) S3 object key to read
                or write.
            aws_region (Optional[str]): Self-contained geographic area where Amazon Web Services (AWS)
                infrastructure is located.
            aws_s3_client_parameters (Optional[dict]): Additional parameters for advanced use
                cases to be passed to the Amazon Web Services (AWS) S3 client.<br/>
                Each parameter key must match the name of a parameter of the
                `boto3.session.Session.client` API.
            aws_s3_get_object_parameters (Optional[dict]): Additional parameters to be
                passed to the Amazon Web Services (AWS) S3 client get function for
                advanced reading use cases. <br/>
                Each parameter key must match the name of a parameter of the
                `boto3.client.get_object` API.
            aws_s3_put_object_parameters (Optional[dict]): Additional parameters to be
                passed to the Amazon Web Services (AWS) S3 client put function for
                advanced writing use cases. <br/>
                Each parameter key must match the name of a parameter of the
                `boto3.client.put_object` API.
            scope (Optional[Scope^]): The scope of the S3 Object data node configuration.<br/>
                The default value is `Scope.SCENARIO`.
            validity_period (Optional[timedelta]): The duration since the last edit date for which the data node can be
                considered up-to-date. Once the validity period has passed, the data node is considered stale and
                relevant tasks will run even if they are skippable (see the Task configuration
                [page](../../../../../../userman/scenario_features/task-orchestration/scenario-config.md#from-task-configurations)
                for more details).
                If *validity_period* is set to None, the data node is always up-to-date.
            **properties (dict[str, any]): A keyworded variable length list of additional arguments.

        Returns:
            The new S3 object data node configuration.
        """  # noqa: E501
        properties.update(
            {
                cls._REQUIRED_AWS_ACCESS_KEY_ID_PROPERTY: aws_access_key,
                cls._REQUIRED_AWS_SECRET_ACCESS_KEY_PROPERTY: aws_secret_access_key,
                cls._REQUIRED_AWS_STORAGE_BUCKET_NAME_PROPERTY: aws_s3_bucket_name,
                cls._REQUIRED_AWS_S3_OBJECT_KEY_PROPERTY: aws_s3_object_key,
            }
        )

        if aws_region is not None:
            properties[cls._OPTIONAL_AWS_REGION_PROPERTY] = aws_region
        if aws_s3_client_parameters is not None:
            properties[cls._OPTIONAL_AWS_S3_CLIENT_PARAMETERS_PROPERTY] = aws_s3_client_parameters
        if aws_s3_get_object_parameters is not None:
            properties[cls._OPTIONAL_AWS_S3_GET_OBJECT_PARAMETERS_PROPERTY] = aws_s3_get_object_parameters
        if aws_s3_put_object_parameters is not None:
            properties[cls._OPTIONAL_AWS_S3_PUT_OBJECT_PARAMETERS_PROPERTY] = aws_s3_put_object_parameters

        return cls.__configure(id, DataNodeConfig._STORAGE_TYPE_VALUE_S3_OBJECT, scope, validity_period, **properties)