The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
All release versions should be documented here with release date and types of changes. Unreleased changes and pre-releases (i.e. alpha/beta versions) can be documented under the section Unreleased.
Possible types of changes are:
- Added for new features
- Changed for changes in existing functionality
- Deprecated for soon-to-be removed features
- Removed for now removed features
- Fixed for any bug fixes
- Security in case of vulnerabilities
open_fsnow supports providing a custom "project" and "api_endpoint", e.g.open_fs("gs://bucket_name?project=test")oropen_fs("gs://bucket_name?api_endpoint=http%3A//localhost%3A8888")(#26)
GCSFS.get_mapper()which returns aGCSMapthat wraps aGCSFSas aMutableMapping. The keys of the mapping become files and the values (which must be bytes) the contents of those files. This is particularly useful to be used with libraries such as xarray or zarr. (#21)
GCSFS.fix_storage()no longer creates a directory marker ifroot_pathis the actual root of the bucket. Apart from not having any advantage, this caused subsequentGCSFS.fix_storage()calls as well asGCSFS.walk()to be stuck in endless loops. (#19)
- Instead of uploading all blobs as application/octet-stream, the MIME type is now guessed via
mimetypes.guess_type(). This enables e.g. hotlinking images directly from GCS. (#15)
- Fixed a bug where the url parameter
strictwas not considered by GCSFS, e.g. inopen_fs("gs://bucket_name?strict=False")(#11)
- Fixed a bug where
create=Truein combination with an empty-ishroot_pathlike"","."or"/"would create a directory marker.
- Implemented the
createproperty onGCSFSand the corresponding opener. By default all new GCSFS instances havecreate=False(PyFilesystem default) - which means they will raise a
CreateFailedexception ifroot_pathdoes not exist (#8)
- Implemented the
- This is the first release available on conda-forge
delimiterproperty fromGCSFSas it was not fully functional and we currently do not have any use case for it
GCSFS.listdir()andGCSFS.scandir()now also correctly list blobs on the root level of a bucket
- Open-sourced GCSFS by moving it to GitHub
GCSFS.getinfo()does not magically fix missing directory markers anymore. Instead, there is a new methodGCSFS.fix_storage()which can be explicitly called to check and fix the entire filesystem.
projectandcredentialsproperties fromGCSFS. Instead, one can now optionally pass aclientof type google.cloud.storage.Client.
GCSFS.makedirs()is now suitable for multiprocessing
- The
bucketandclientproperties ofGCSFSare now only computed once on instance initialization (performance improvement)
GCSFS.exists()now correctly handles existing directories that are not marked with an empty file
- Added a custom implementation of
FS.opendir()in order to be able to skip the directory check if strict=False (performance improvement)
- Fixed a bug where
listdir/scandiron the root level of a bucket would always return an empty result