Added boto3_transfer_config parameter to S3Client instantiation, which allows passing a boto3.s3.transfer.TransferConfig object and is useful for controlling multipart and thread use in uploads and downloads. See documentation for more details. (#150)
Added support for custom S3-compatible object stores. This functionality is available via the endpoint_url keyword argument when instantiating an S3Client instance. See documentation for more details. (#138 thanks to @YevheniiSemendiak)
Added CloudPath.upload_from which uploads the passed path to this CloudPath (issuse #58)
Added support for common file transfer functions based on shutil. Issue #108. PR #142.
CloudPath.copy copy a file from one location to another. Can be cloud -> local or cloud -> cloud. If client is not the same, the file transits through the local machine.
CloudPath.copytree reucrsively copy a directory from one location to another. Can be cloud -> local or cloud -> cloud. Uses CloudPath.copy so if client is not the same, the file transits through the local machine.
Changed all custom cloudpathlib exceptions to be located in new cloudpathlib.exceptions module.
Changed all custom cloudpathlib exceptions to subclass from new base CloudPathException. This allows for easy catching of any custom exception from cloudpathlib.
Changed all custom exceptions names to end with Error as recommended by PEP 8.
Changed various functions to throw new CloudPathFileExistsError, CloudPathIsADirectoryError or CloudPathNotADirectoryError exceptions instead of a generic ValueError.
Removed exception exports from the root cloudpathlib package namespace. Import from cloudpathlib.exceptions instead if needed.
Fixed download_to method to handle case when source is a file and destination is a directory. (#121 thanks to @genziano)
Fixed bug where hash(...) of a cloud path was not consistent with the equality operator. (#129)
Fixed AzureBlobClient instantiation to throw new error MissingCredentialsError when no credentials are provided, instead of AttributeError. LocalAzureBlobClient has also been changed to accordingly error under those conditions. (#131)
Fixed GSClient to instantiate as anonymous with public access only when instantiated with no credentials, instead of erroring. (#131)
Added a new module cloudpathlib.local with utilities for mocking cloud paths in tests. The module has "Local" substitute classes that use the local filesystem in place of cloud storage. See the new documentation article "Testing code that uses cloudpathlib" to learn more about how to use them. (#107)
Fixed CloudPath instantiation so that reinstantiating with an existing CloudPath instance will reuse the same client, if a new client is not explicitly passed. This addresses the edge case of non-idempotency when reinstantiating a CloudPath instance with a non-default client. (#104)