s3fs icon indicating copy to clipboard operation
s3fs copied to clipboard

BUG: Starting filesystem with boto3 session returns AttributeError

Open IvoMerchiers opened this issue 5 years ago • 0 comments

If I create a filesystem and provide a boto3 session, we get an AttributeError.

versions

boto3=1.12.0 s3fs=0.5.0

Code

Running

session = boto3.Session(profile_name='xpectrum')
fs = s3fs.S3FileSystem(
    session=session,
)

returns

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-8-30d2bfcd4409> in <module>
      1 session = boto3.Session(profile_name='xpectrum')
      2 fs = s3fs.S3FileSystem(
----> 3     session=session,
      4 )

C:\tools\Anaconda3\envs\xpectrum\lib\site-packages\fsspec\spec.py in __call__(cls, *args, **kwargs)
     53             return cls._cache[token]
     54         else:
---> 55             obj = super().__call__(*args, **kwargs)
     56             # Setting _fs_token here causes some static linters to complain.
     57             obj._fs_token_ = token

C:\tools\Anaconda3\envs\xpectrum\lib\site-packages\s3fs\core.py in __init__(self, anon, key, secret, token, use_ssl, client_kwargs, requester_pays, default_block_size, default_fill_cache, default_cache_type, version_aware, config_kwargs, s3_additional_kwargs, session, username, password, asynchronous, loop, **kwargs)
    183         self.use_ssl = use_ssl
    184         if not asynchronous:
--> 185             self.connect()
    186             weakref.finalize(self, sync, self.loop, self._s3.close)
    187         else:

C:\tools\Anaconda3\envs\xpectrum\lib\site-packages\fsspec\asyn.py in wrapper(*args, **kwargs)
     98     def wrapper(*args, **kwargs):
     99         self = obj or args[0]
--> 100         return maybe_sync(func, self, *args, **kwargs)
    101 
    102     return wrapper

C:\tools\Anaconda3\envs\xpectrum\lib\site-packages\fsspec\asyn.py in maybe_sync(func, self, *args, **kwargs)
     78         if inspect.iscoroutinefunction(func):
     79             # run the awaitable on the loop
---> 80             return sync(loop, func, *args, **kwargs)
     81         else:
     82             # just call the blocking function

C:\tools\Anaconda3\envs\xpectrum\lib\site-packages\fsspec\asyn.py in sync(loop, func, callback_timeout, *args, **kwargs)
     49     if error[0]:
     50         typ, exc, tb = error[0]
---> 51         raise exc.with_traceback(tb)
     52     else:
     53         return result[0]

C:\tools\Anaconda3\envs\xpectrum\lib\site-packages\fsspec\asyn.py in f()
     33             if callback_timeout is not None:
     34                 future = asyncio.wait_for(future, callback_timeout)
---> 35             result[0] = await future
     36         except Exception:
     37             error[0] = sys.exc_info()

C:\tools\Anaconda3\envs\xpectrum\lib\site-packages\s3fs\core.py in _connect(self, kwargs)
    303         if self.session is None:
    304             self.session = aiobotocore.get_session(**self.kwargs)
--> 305         s3creator = self.session.create_client('s3', config=conf, **init_kwargs, **client_kwargs)
    306         self._s3 = await s3creator.__aenter__()
    307         self._kwargs_helper = ParamKwargsHelper(self.s3)

AttributeError: 'Session' object has no attribute 'create_client'```

IvoMerchiers avatar Sep 09 '20 10:09 IvoMerchiers