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

Code before:
        id: str,
        aws_access_key: str,
        aws_secret_access_key: str,
        aws_s3_bucket_name: str,
        aws_s3_object_key: str,
        aws_region: Optional[str] = None,
        aws_s3_client_parameters: Optional[Dict[str, Any]] = None,
        aws_s3_get_object_parameters: Optional[Dict[str, Any]] = None,
        aws_s3_put_object_parameters: Optional[Dict[str, Any]] = None,
        scope: Optional[Scope] = None,
        validity_period: Optional[timedelta] = None,
        **properties,
    ) -> "DataNodeConfig":
        """Configure a new S3 object data node configuration.

        Parameters:
            id (str): The unique identifier of the new S3 Object data node configuration.
            aws_access_key (str): Amazon Web Services ID for to identify account.
            aws_secret_access_key (str): Amazon Web Services access key to authenticate programmatic requests.
            aws_s3_bucket_name (str): The bucket in S3 to read from and to write the data to.
            aws_s3_object_key (str): The specific S3 object key to configure.
            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 the S3 client.
            aws_s3_get_object_parameters (Optional[dict]): Parameters for the GET object request.
            aws_s3_put_object_parameters (Optional[dict]): Parameters for the PUT object request.
            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:

Review comment (suggestion):
```suggestion
            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.
```

Code after:

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

    @classmethod
    def _configure_s3_object(
        cls,
        id: str,
        aws_access_key: str,
        aws_secret_access_key: str,
        aws_s3_bucket_name: str,
        aws_s3_object_key: str,
        aws_region: Optional[str] = None,
        aws_s3_client_parameters: Optional[Dict[str, Any]] = None,
        aws_s3_get_object_parameters: Optional[Dict[str, Any]] = None,
        aws_s3_put_object_parameters: Optional[Dict[str, Any]] = None,
        scope: Optional[Scope] = None,
        validity_period: Optional[timedelta] = None,
        **properties,
    ) -> "DataNodeConfig":
        """Configure a new S3 object data node configuration.

        Parameters:
            id (str): The unique identifier of the new S3 Object data node configuration.
            aws_access_key (str): Amazon Web Services (AWS) ID for to identify account.
            aws_secret_access_key (str): Amazon Web Services (AWS) access key to authenticate
                programmatic requests.
            aws_s3_bucket_name (str): The Amazon Web Services (AWS) S3 bucket to read from and
                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