NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #95 most downloaded on PyPI
Convenient Filesystem interface over S3
Last release 16 days ago
18 Sep 2026
Ships on a steady schedule
a new release about every 2 months
Nearly every release is documented
notes for 59 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
11 years old
92 releases · first in 2016
retry transient errors on each page of a listing instead of failing or truncating it (#982, 1042)
retry transient errors on each page of a listing instead of failing or truncating it (#982, 1042)
Preserve the original coroutine-related error when its traceback has no response (#1011)
version-guard the big exclusive-write xfails (#1040)
Fix requester pays issues (#1039)
don't cache prefix-filtered listings as complete directory entries
don't cache prefix-filtered listings as complete directory entries (#1034)
One column per quarter.
loosen bounds to allow install from git
cat should use info (#1029)
loosen bounds to allow install from git (#1026)
Fix CI (#1024)
-no changes-
-no changes-
allow _find with both prefix/withdirs, allows prefix in glob
allow _find with both prefix/withdirs, allows prefix in glob (#1014)
deduplicate file listing with bisect (#1010)
check for file expiry with ETag if server doesn't support If-Match (#1008)
concurrent downloads in get/cat_file (#1007)
do delete placeholders with rm(recursive=True)
add custom error handling (#1003)
do delete placeholders with rm(recursive=True) (#1005)
force new session if it was explicitly closed (#1002)
- allow aiobotocore 3
allow aiobotocore 3 (#998)
add support for py3.14 and remove 3.9
remove optional dependencies (#995)
add support for py3.14 and remove 3.9 (#993)
add link docs->repo (#992)
- get bucket info on demand (#987) - add CoC (#986) - add goatcounter tracker
get bucket info on demand (#987)
add CoC (#986)
add goatcounter tracker (#985)
update README for distribution compliance
update README for distribution compliance (#977)
fix exclusive write for small files
fix exclusive write for small files (#974)
acknowledge Anaconda support (#972)
fix test typo (#970)
no changes
no changes
use head_bucket for info(bucket)
simpler requirements syntax (#958)
use head_bucket for info(bucket) (#961)
no changes
no changes
get_event_loop -> get_running_loop at shutdown
get_event_loop -> get_running_loop at shutdown (#954)
recreate sessino object on refresh
recreate sessino object on refresh (#939)
re-enable CI tests (#940)
update docstrings to new default values
update docstrings to new default values (#934)
fix CI (#936)
smaller threshold for copy_managed
CI fixes (#922)
smaller threshold for copy_managed (#921)
exclusive write (#917)
fix bug in _find (#913)
parse query without upstream infer_storage_options (#912)
bug in _upload_file_part_concurrent (#910)
invalidate cache in one-shot pipe file
invalidate cache in one-shot pipe file (#904)
make pipe() concurrent (#901)
add py3.13 (#898)
suppoert R2 multi-part uploads (#888)
no change
no change
no changes
no changes
no changes
no changes
- widen fsspec req version (#869) - _bulk_delete must return list (#866) - retry on "reduce request rate"
widen fsspec req version (#869)
_bulk_delete must return list (#866)
retry on "reduce request rate" (#865)
- accept kwargs in get_file
accept kwargs in get_file (#863)
don't fail ls is parent is unaccessible
don't fail ls is parent is unaccessible (#860)
allow checksum error to retry (#858)
don't lsbuckets for isdir(bucket) (#856)
concurrent uplads of parts in put_file (#848)
- fix cache lookup in _info
fix cache lookup in _info (#840)
no changes
no changes
- revert fallback to anon
revert fallback to anon (#835)
fall back to anon if no creds are found or passed at all
fall back to anon if no creds are found or passed at all (#823)
relax version bounds for aiobotocore (#829)
avoid key error if LastModified missing (#828)
add make_mucket_versioned method (#825)
retain TZ on modified time (#818)
make protocol attribute a tuple
make protocol attribute a tuple (#812)
update to aiobotocore 2.7.0 (#809)
fix in _get_file following failure after connect (#805)
test for du of nonexistent (#803)
- allow size= in fs.open() (#797) - rmdir for non-bucket (#975) - moto updates (#973) - fix CI warnings (#792) - dircache usage with depth
allow size= in fs.open() (#797)
rmdir for non-bucket (#975)
moto updates (#973)
fix CI warnings (#792)
dircache usage with depth (#791)
retry ClientPayloadError while reading after initial connection
retry ClientPayloadError while reading after initial connection (#787)
don't pass ACL if not specified (#785)
better support in bulk ops/glob
aiobotocore to 2.5.4
better ** support in bulk ops/glob (#769)
default ACL to "private" rather than blank (#764)
invalidate cache in rm_file (#762)
closing client in running loop (#760)
streaming file to update it's size for tell (#745, 741)
allow versions in info.exists (#746)
streaming file to update it's size for tell (#745, 741)
Fix file pointer already at end of file when retrying put
Fix "_" in xattrs tests (#732)
Fix file pointer already at end of file when retrying put (#731)
Fix repeated find corrupting cache (#730)
Remove duplicate class definition (#727)
return list of deleted keys in bulk deleted (#726)
- Add streaming async read file (#722) - Doc fixes (#721) - aiobotocore to 2.5.0
Add streaming async read file (#722)
Doc fixes (#721)
aiobotocore to 2.5.0 (#710)
Allow setting endpoint_url as top-level kwarg
Allow setting endpoint_url as top-level kwarg (#704)
minimum python version 3.8 (#702)
Update docs config (#697)
get/put/cp recursive extra tests (#691)
temporary redirects in headBucket
parse lambda ARNs (#686)
recursive on chmod (#679)
default cache to be readahead (#678)
temporary redirects in headBucket (#676)
async iterator for listings (#670)
optionally listing versions with ls
optionally listing versions with ls (#661)
- directory cache race condition (#655) - version aware find
directory cache race condition (#655)
version aware find (#654)
Nothing published for this version
(no change)
(no change)
- aiobotocore 2.4.0 (#643) - del/list multipart uploads (#645) - disallow prerelease aiohttp (#640) - docs syntax
aiobotocore 2.4.0 (#643)
del/list multipart uploads (#645)
disallow prerelease aiohttp (#640)
docs syntax (#634)
No changes
No changes
- aiobotocore 2.3.4
aiobotocore 2.3.4 (#633)
aiobotocore 2.3 (#622, fixes #558)
aiobotocore 2.3 (#622, fixes #558)
rate limiting (#619, #620)
- pre-commit (#612) - aiobotocore 2.2 (#609) - empty ETag (#605) - HTTPClientError retry (#597) - new callbacks support
pre-commit (#612)
aiobotocore 2.2 (#609)
empty ETag (#605)
HTTPClientError retry (#597)
new callbacks support (#590)
- callbacks fixes (#594, 590) - drop py36 (#582) - metadata fixes (#575, 579)
callbacks fixes (#594, 590)
drop py36 (#582)
metadata fixes (#575, 579)
- aiobotocore dep to 2.1.0 (#564) - docs for non-aws (#567) - ContentType in info (#570) - small-file ACL
aiobotocore dep to 2.1.0 (#564)
docs for non-aws (#567)
ContentType in info (#570)
small-file ACL (#574)
ClientPayloadError to retryable
deal with missing ETag (#557)
ClientPayloadError to retryable (#556)
pin aiobotocore (#555)
redondant argument in _rm_versioned_bucket_contents
move to fsspec org
doc tweaks (#546, 540)
redondant argument in _rm_versioned_bucket_contents (#439)
allow client_method in url/sign (POST, etc) (#536)
revert list_v2->head for info (#545)
allow other methods than GET to url/sign
allow other methods than GET to url/sign (#536)
No changes (just released to keep pin with fsspec)
No changes (just released to keep pin with fsspec)
check for bucket also with get_bucket_location
check for bucket also with get_bucket_location (#533)
update versioneer (#531)
- retry on IncompleteRead (#525) - fix isdir for missing bucket (#522) - raise for glob("*")
retry on IncompleteRead (#525)
fix isdir for missing bucket (#522)
raise for glob("*") (#5167)
- fix for aiobotocore update
fix for aiobotocore update (#510)
- make bucket in put(recursive) (#496) - non-truthy prefixes (#497) - implement rm_file
make bucket in put(recursive) (#496)
non-truthy prefixes (#497)
implement rm_file (#499)
- bucket region caching
bucket region caching (#495)
support "prefix" in directory listings
support "prefix" in directory listings (#486)
support negative index in cat_file (#487, 488)
don't requite ETag in file details (#480)
optimize info,exists (and related) calls for non-version aware mode
optimize info,``exists`` (and related) calls for non-version aware mode
copy with entries without ETag (#480)
find not to corrupts parent listing (#476)
short listing to determine directory (#472, 471)
Your coding agent can read these notes before it upgrades. Set up the MCP server →