For a deeper look into our Eikon Data API, look into:

Overview |  Quickstart |  Documentation |  Downloads |  Tutorials |  Articles

question

Upvotes
1 0 0 0

Error: module 'anyio' has no attribute 'Lock'

Raised in behalf of user as he is getting this error though using the .NET library and so far he is having no problems. He has already installed version eikon-1.1.14.

Will share link to user for him to provide additional information.


Please see details below.

From Eikon API



[18]:


               


############# Eikon ###############
#https://developers.refinitiv.com/en/api-catalog/eikon/eikon-data-api/quick-start#quick-start-guide-for-windows
import eikon as ek 
ek.set_app_key('##### EIKON APP KEY #####')


---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_15876/3524143416.py in <module>
      2 #https://developers.refinitiv.com/en/api-catalog/eikon/eikon-data-api/quick-start#quick-start-guide-for-windows
      3 import eikon as ek
----> 4 ek.set_app_key('##### EIKON APP KEY #####')

~\anaconda3\envs\eikon\lib\site-packages\eikon\Profile.py in set_app_key(app_key)
     31     You can get an app key using the App Key Generator (this App is available in Eikon Desktop).
     32     """
---> 33     get_profile().set_app_key(app_key)
     34      35 
~\anaconda3\envs\eikon\lib\site-packages\eikon\Profile.py in set_app_key(self, app_key)
    221                 self._desktop_session._app_key = app_key  # = DesktopSession(app_key, self._on_state, self._on_event)
    222             else:
--> 223                 self._desktop_session = DesktopSession(app_key=app_key,
    224                                                        on_state= self._on_state,
    225                                                        on_event=self._on_event) 
~\anaconda3\envs\eikon\lib\site-packages\eikon\streaming_session\desktop_session.py in __init__(self, app_key, on_state, on_event, **kwargs)
     23      24     def __init__(self, app_key, on_state=None, on_event=None, **kwargs):
---> 25         super().__init__(app_key=app_key,
     26                          on_state=on_state,
     27                          on_event=on_event,

~\anaconda3\envs\eikon\lib\site-packages\eikon\streaming_session\session.py in __init__(self, app_key, on_state, on_event, token, dacs_user_name, dacs_position, dacs_application_id)
    216         self._timeout = 60
    217         timeout = httpx.Timeout(self._timeout)
--> 218         self._http_session = httpx.AsyncClient(
    219             headers={
                "Accept": "application/json"},
    220             timeout=timeout,

~\anaconda3\envs\eikon\lib\site-packages\httpx\_client.py in __init__(self, auth, params, headers, cookies, verify, cert, http1, http2, proxies, mounts, timeout, follow_redirects, limits, max_redirects, event_hooks, base_url, transport, app, trust_env)
   1378         proxy_map = self._get_proxy_map(proxies, allow_env_proxies)
   1379 -> 1380         self._transport = self._init_transport(
   1381             verify=verify,
   1382             cert=cert,

~\anaconda3\envs\eikon\lib\site-packages\httpx\_client.py in _init_transport(self, verify, cert, http1, http2, limits, transport, app, trust_env)
   1426             return ASGITransport(app=app)
   1427 -> 1428         return AsyncHTTPTransport(
   1429             verify=verify,
   1430             cert=cert,

~\anaconda3\envs\eikon\lib\site-packages\httpx\_transports\default.py in __init__(self, verify, cert, http1, http2, limits, trust_env, proxy, uds, local_address, retries)
    231     232         if proxy is None:
--> 233             self._pool = httpcore.AsyncConnectionPool(
    234                 ssl_context=ssl_context,
    235                 max_connections=limits.max_connections,

~\anaconda3\envs\eikon\lib\site-packages\httpcore\_async\connection_pool.py in __init__(self, ssl_context, max_connections, max_keepalive_connections, keepalive_expiry, http1, http2, retries, local_address, uds, network_backend)
    109         self._pool: List[AsyncConnectionInterface] = []
    110         self._requests: List[RequestStatus] = []
--> 111         self._pool_lock = AsyncLock()
    112         self._network_backend = (
    113             AutoBackend() if network_backend is None else network_backend 
~\anaconda3\envs\eikon\lib\site-packages\httpcore\_synchronization.py in __init__(self)
     10 class AsyncLock:
     11     def __init__(self) -> None:
---> 12         self._lock = anyio.Lock()




api
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 5.0 MiB each and 10.0 MiB total.

Upvotes
1.7k 2 4 7

Hi @nelbert.guantero

Can you ask the user to check the version of the Anyio library using 'pip list' command? I'm using Anyio v3.2.1 with Eikon v1.1.14 and I couldn't reproduce the issue you found, even using the same app key provided.

If the user is using another version of Anyio, please ask them to upgrade the library. But if they're using the same version, there could be any other issue and I'll try to find the cause and how to fix it.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 5.0 MiB each and 10.0 MiB total.

Upvotes
1 0 0 0

Hi @raksina.samasiri, based on piplis previously sent by user, he has anyio version 3.3.4.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 5.0 MiB each and 10.0 MiB total.

Upvotes
1.7k 2 4 7

hi @nelbert.guantero ,

Could you please ask the client to downgrade anyio to version 3.2.1 and try running the code again? it could be that his current version of anyio module does not match the interface expectation by eikon library 1.1.14.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 5.0 MiB each and 10.0 MiB total.

Upvotes
1 0 0 0

Will do, @raksina.samasiri. Thanks.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 5.0 MiB each and 10.0 MiB total.

Click below to post an Idea Post Idea