Open maresb opened 1 year ago
This looks like it is happening again. Here's a failing CI run for my package (satpy): https://github.com/pytroll/satpy/actions/runs/8338561408/job/22819069867?pr=2762
s3fs 0.6.0 is being installed and an old incompatible botocore with an old vendored requests.
And this happened in the past too: https://github.com/conda-forge/filesystem-spec-feedstock/pull/86#issuecomment-1841505464
https://github.com/conda-forge/s3fs-feedstock/blob/main/recipe/meta.yaml#L22 says that we have now very unconstrained aiobotocore requirements, and these days aiobotocore and botocore should be released together.
Is it possible this is only intermittent while the packages are being built by conda-forge?
Given that 0.6.0 is now almost 3 years old, I wonder if we should simply remove (yank) all old versions from pypi.
from pypi.
From conda-forge?
No, I had meant pypi, because this has happened with pip too (sorry). conda ought to be much more thorough - I don't know how to get information out of the solver for what it's doing. If I try to install s3fs, I get the current version. Can you point to your environment file, please?
Trying to build that right now wanted to pull
- conda-forge/noarch::s3fs==2024.3.1=pyhd8ed1ab_0
as it should. Can you try again, maybe it was indeed because conda-forge builds were in flight or their index hadn't updated?
Solution to issue cannot be found in the documentation.
Issue
I was having some really bizarre errors with fsspec + s3fs. After a very long investigation I tracked it down to the version (0.4.2) of s3fs which was being installed.
The reason for the ancient version of s3fs seems to be as follows:
For example,
results in s3fs v0.4.2. (Note: 1.26.132 is simply the current version of boto3, so the upper bound is only included for reproducibility.)
The reason I'm opening this issue in fsspec is that modern fsspec seems to play poorly with ancient s3fs. As a concrete example, consider
Dockerfile:
test.py:
in Bash:
Output:
Curiously, this seems to have surfaced only since the very recent https://github.com/fsspec/filesystem_spec/pull/1254, with the introduction of line 960 in
spec.py
, which callsself.isdir(lpaths[0])
. It seems thatself
is S3 whilelpaths[0]
is in the localtmp/
directory, so it's not surprising that S3 would give access denied to a bucket namedtmp
. (I'm not sure why newer versions of s3fs don't lead to this error, I don't have time to investigate further.)So finally, the reason I'm raising this issue here is that I suspect the proper solution would be to do a repodata patch and add a run_constrained of
s3fs >0.4.2
to modern fsspec packages. This would give it a kick to choose an s3fs version withaiobotocore
and would probably lead to more sensible solutions from the solver.Installed packages