All notable changes to this project will be documented in this file.
-
There now exist classes
fluke.storage.GCPStorageFile
andfluke.storage.GCPStorageDir
in order to interact with Google Cloud Storage buckets. Furthermore, a classfluke.auth.GCPAuth
has been added in order to be able to authenticate with GCP. (#10) -
Added a new dependency:
google-cloud-storage==2.10.0
(#10) -
Class constructors
fluke.storage.{AmazonS3File,AzureBlobFile,GCPStorageFile}
now receive aload_metadata
parameter that can be used in order to load an object's metadata during instantiation. (#46) -
Added method
cat
to File API that can be used in order to print the contents of a file as text. (#58)
-
Methods
Dir/File.transfer_to
will now throw anInvalidChunkSizeError
exceptions if a chunk size that is not supported by the "destination" directory has been specified. (#48) -
Method
Dir.ls
will now print a prettier output when parameterrecursively
has been set toTrue
. (#50) -
Class constructor
fluke.auth.RemoteAuth
no longer receives string parameterspublic_key
andkey_type
. Instead, it receives a singlepublic_key
parameter of typeRemoteAuth.PublicKey
which can be generated via one of theRemoteAuth.PublicKey
class' "generate" methods. (#53) -
Any contents of
fluke.storage.RemoteDir
will now be displayed sorted by an ascending order no matter the underlying remote system. (#53) -
fluke.storage.RemoteDir
will not follow any symbolic links from now on. (#60)
-
Fixed issue where referencing the root directory
/
through eitherfluke.storage.LocalDir
orfluke.storage.RemoteDir
resulted in anInvalidPathError
exception being raised. (#52) -
Fixed issue where it was impossible to establish a connection to a remote host if their public key had been previously added to the system's "known_hosts" file, though their public key had been changed since then. (#53)
-
Fixed bug that occurred when caching the root directory of any storage system. (#56)
-
Fixed bug where activating the cache on
fluke.storage.RemoteDir
would sometimes result in getting different contents due to symbolic linked being followed. (#60)
-
A
BucketNotFound
exception will now be thrown during instantiation of either thefluke.storage.AmazonS3File
or afluke.storage.AmazonS3Dir
class, if the bucket provided to the constructor via parameterbucket
does not exist. (#42) -
Class
fluke.exceptions.AzureBlobContainerNotFoundError
has been renamed toContainerNotFoundError
. (#42)
- Fixed issue where method
fluke.queues.AmazonSQSQueue.poll
would sometimes return fewer messages than the number of messages specified via parameternum_messages
. (#40)
-
Dir API
transfer_to
method now receives a filter param in order to filter out files during the transfer. (#30) -
There now exists a module
fluke.queues
which contains a number of classes used in order to access message queues provided by various message queue services in the cloud. (#31) -
Added a new dependency:
azure-storage-queue==12.6.0
(#31)
-
Class
fluke.auth.AzureAuth
no longer has a constructor for creating anAzureAuth
instance via an Azure service principal. Instead, this is now achieved via theAzureAuth.from_service_principal
method. (#31) -
Classes
fluke.storage.{AWSS3File, AWSS3Dir}
have been renamed tofluke.storage.{AmazonS3File, AmazonS3Dir}
. (#34) -
Updated dependency versions:
- azure-identity: 1.12.0 -> 1.13.0
- azure-storage-blob: 12.15.0 -> 12.17.0
- boto3: 1.26.84 -> 1.28.0
- paramiko: 3.0.0 -> 3.2.0
- Fixed issue where type of objects could not be inferred when they were instantiate via a context manager. (#35)
-
File API now provides a
read_range
method in order to be able to partially read a file. (#20) -
File API now provides a
read_chunks
method in order to be able to read files in chunks of bytes. (#20) -
File API now provides a
read_text
method in order to be able to read files as text. (#21) -
File API now provides a
read_lines
method in order to be able to read a text file line-by-line. (#21) -
Dir API now provides a
get_subdir
method in order to be able to access any subdirectory of a directory as a Dir instance. (#25)
-
File/Dir API method
transfer_to
now returns abool
value instead ofNone
depending on whether the transfer was successful or not. (#20) -
File/Dir API
transfer_to
now receives achunk_size
parameter in order to specify the size of the file chunk that is transfered at a given time. (#20) -
Dir API method
transfer_to
now receives asuppress_output
parameter in place ofshow_progress
. (#20) -
File API method
get_file
method now throws anInvalidPathError
exception if the specified file path does not exist. (#25) -
File API method
get_file
method now throws anInvalidFileError
exception if the specified path exists, but points to a directory. (#25) -
File API method
get_file
method'sfile_path
param has been renamed topath
. (#25) -
Removed Dir API methods
get_files
andtraverse_files
. (#25) -
Method
AzureBlobDir.get_path
now returns the empty string when no path (or aNone
path) has been provided via the class constructor. (#25)
- Fixed bug where listing the contents of a cacheable directory after having fetched either the size or metadata of one of its files, would result in only listing said file. (#25)
-
File API now provides a
read
method in order to read a file's bytes. (#11) -
Dir API now provides an
is_file
method used for determining whether the specified path points to a file or not. (#16) -
Dir API now provides a set of methods in order to gain access to the directory's files via the File API. These methods are the following:
get_file(file_path: str) -> File
traverse_files(recursively: bool = False) -> Iterator[File]
get_files(recursively: bool = False, show_abs_path: bool = False) -> dict[str, File]
All files spawned by a dictionary share the same metadata dictionaries with the directory that spawned them. In the case of remote files, they also share the same client and cache. (#16)
-
fluke.storage.AmazonS3File
now has aget_bucket_name
method. (#16)
-
Parameter
path
influke.storage.AmazonS3Dir
andfluke.storage.AzureBlobDir
constructors now defaults toNone
in order to gain access to the whole container and bucket respectively (#15) -
Providing a path that starts with a separator, e.g.
/
, to constructorsfluke.storage.AmazonS3Dir
andfluke.storage.AzureBlobDir
will now throw anInvalidPathError
exception. (#15) -
Both File and Dir API method
get_metadata
will now return an empty dictionary instead ofNone
when no metadata has been set (#16). -
Dir API method ```iterate_contents
has been renamed to
traverse``. (#16)
-
Bug in
tests.test_storage.MockSFTPClient.getfo
. (#11) -
Explicitly sort the results of
os.listdir
andos.walk
due to inconsistent order. (#12) -
Bug where the recursive cache was considered empty if the directory contained no sub-directories (#16)
-
Bug where both File and Dir API method
get_metadata
returned the reference to the private metadata dictionary reference, instead of a copy of said dictionary (#16).
First release