Repository: Avaiga/taipy
File: taipy/core/data/aws_s3.py (Python)

Code before:
# specific language governing permissions and limitations under the License.

from datetime import datetime, timedelta
from importlib import util
from typing import Any, Dict, List, Optional, Set

from ..common._check_dependencies import _check_dependency_is_installed

if util.find_spec("boto3"):
    import boto3

from taipy.common.config.common.scope import Scope

from .._version._version_manager_factory import _VersionManagerFactory
from ..exceptions.exceptions import MissingRequiredProperty
from .data_node import DataNode
from .data_node_id import DataNodeId, Edit


class S3ObjectDataNode(DataNode):
    """Data Node object stored in an Amazon Web Service S3 Bucket.

    The *properties* attribute must contain the following required entries:
    
    - *aws_access_key* (`str`): Amazon Web Services (AWS) ID to identify the 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.
       
    The *properties* attribute can also contain the following optional entries:
    
    - *aws_region* (`Optional[str]`): Self-contained geographic area where Amazon Web 
        Services (AWS) infrastructure is located.
    - *aws_s3_object_parameters* (`Optional[dict[str, any]]`): A dictionary of 
        additional arguments to be passed into the AWS S3 bucket access string.
    - *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

Review comment (security):
```suggestion
    - *aws_secret_access_key* (`str`): Amazon Web Services (AWS) access key to
```

Code after:
# specific language governing permissions and limitations under the License.

from datetime import datetime, timedelta
from importlib import util
from typing import Any, Dict, List, Optional, Set

from ..common._check_dependencies import _check_dependency_is_installed

if util.find_spec("boto3"):
    import boto3

from taipy.common.config.common.scope import Scope

from .._version._version_manager_factory import _VersionManagerFactory
from ..exceptions.exceptions import MissingRequiredProperty
from .data_node import DataNode
from .data_node_id import DataNodeId, Edit


class S3ObjectDataNode(DataNode):
    """Data Node object stored in an Amazon Web Service S3 Bucket.

    The *properties* attribute must contain the following required entries:
    - *aws_access_key* (`str`): Amazon Web Services (AWS) ID to identify the 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.

    The *properties* attribute can also contain the following optional entries:
    - *aws_region* (`Optional[str]`): Self-contained geographic area where Amazon Web
        Services (AWS) infrastructure is located.
    - *aws_s3_object_parameters* (`Optional[dict[str, any]]`): A dictionary of
        additional arguments to be passed into the AWS S3 bucket access string.
    - *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.
    """