question

Upvotes
Accepted
61 2 4 8

StreamingPrices does not update when open() is not called infront of it every time.

Hello,

>>> rdp.__version__
'1.0.0a12'


I am bit confused about the lack of updates on rdp.StreamingPrices when the function is.open() is not used every time in front of get_snapshot. In the end I want to make this data available to my application and not to read it from the console. Is this normal behavior. Normally with stream state open I would expect that a snapshot delivers the actual value every time and not a valid from 5 minutes ago.

What is the best way to deal with this issue?


case1: Is.open is only used 1x and data is apparently flowing in according to print statement. Here is valid that no update on get_snapshot can be observed:

>>> def display_fields(streaming_prices, instrument_name, fields):
...     print("Fields received for", instrument_name, ":", fields)
... 
>>> streaming_prices = rdp.StreamingPrices(
...     universe = ['EUR=','GBP=','JPY=', 'CAD='], 
...     fields   = ['SALTIM', 'CF_BID','CF_ASK','OPEN_PRC', 'CF_HIGH','CF_LOW', 'CF_CLOSE'],
...     on_refresh = lambda streaming_prices, instrument_name, fields : 
...         display_fields(streaming_prices, instrument_name, fields),
...     on_update = lambda streaming_prices, instrument_name, fields : 
...         display_fields(streaming_prices, instrument_name, fields)
... )
>>> streaming_prices.open()
Fields received for EUR= : {'CF_BID': 1.1131, 'CF_ASK': 1.1132, 'OPEN_PRC': 1.1144, 'CF_HIGH': 1.1155, 'CF_LOW': 1.1122, 'CF_CLOSE': 1.1143}
Fields received for EUR= : {'CF_BID': 1.113, 'CF_ASK': 1.1134}
Fields received for EUR= : {'CF_BID': 1.1129, 'CF_ASK': 1.1133}
Fields received for EUR= : {'CF_BID': 1.1131, 'CF_ASK': 1.1132}
Fields received for GBP= : {'CF_BID': 1.3387, 'CF_ASK': 1.3391, 'OPEN_PRC': 1.3378, 'CF_HIGH': 1.3415, 'CF_LOW': 1.3366, 'CF_CLOSE': 1.3385}
Fields received for CAD= : {'CF_BID': 1.2788, 'CF_ASK': 1.2792, 'OPEN_PRC': 1.2741, 'CF_HIGH': 1.2796, 'CF_LOW': 1.2713, 'CF_CLOSE': 1.274}
Fields received for JPY= : {'CF_BID': 115.6, 'CF_ASK': 115.61, 'OPEN_PRC': 115.35, 'CF_HIGH': 115.68, 'CF_LOW': 115.28, 'CF_CLOSE': 115.34}
<StreamState.Open: 3>
>>> streaming_prices.open()
<StreamState.Open: 3>
>>> streaming_prices.get_snapshot()
  Instrument  CF_BID  CF_ASK  OPEN_PRC  CF_HIGH  CF_LOW  CF_CLOSE
0       EUR=  1.1131  1.1132    1.1144   1.1155  1.1122    1.1143
1       GBP=  1.3387  1.3391    1.3378   1.3415  1.3366    1.3385
2       JPY=   115.6  115.61    115.35   115.68  115.28    115.34
3       CAD=  1.2788  1.2792    1.2741   1.2796  1.2713     1.274
>>> streaming_prices.get_snapshot()
  Instrument  CF_BID  CF_ASK  OPEN_PRC  CF_HIGH  CF_LOW  CF_CLOSE
0       EUR=  1.1131  1.1132    1.1144   1.1155  1.1122    1.1143
1       GBP=  1.3387  1.3391    1.3378   1.3415  1.3366    1.3385
2       JPY=   115.6  115.61    115.35   115.68  115.28    115.34
3       CAD=  1.2788  1.2792    1.2741   1.2796  1.2713     1.274
>>> streaming_prices.get_snapshot()
  Instrument  CF_BID  CF_ASK  OPEN_PRC  CF_HIGH  CF_LOW  CF_CLOSE
0       EUR=  1.1131  1.1132    1.1144   1.1155  1.1122    1.1143
1       GBP=  1.3387  1.3391    1.3378   1.3415  1.3366    1.3385
2       JPY=   115.6  115.61    115.35   115.68  115.28    115.34
3       CAD=  1.2788  1.2792    1.2741   1.2796  1.2713     1.274
>>> streaming_prices.get_snapshot()
  Instrument  CF_BID  CF_ASK  OPEN_PRC  CF_HIGH  CF_LOW  CF_CLOSE
0       EUR=  1.1131  1.1132    1.1144   1.1155  1.1122    1.1143
1       GBP=  1.3387  1.3391    1.3378   1.3415  1.3366    1.3385
2       JPY=   115.6  115.61    115.35   115.68  115.28    115.34
3       CAD=  1.2788  1.2792    1.2741   1.2796  1.2713     1.274
>>> streaming_prices.state()
TypeError: 'StreamState' object is not callable
>>> streaming_prices.state
<StreamState.Open: 3>


Case2: is.open is used every time before get_snapshot and data is updated (now I get different prices):

>>> streaming_prices.state
<StreamState.Open: 3>
>>> streaming_prices.open()
<StreamState.Open: 3>
>>> streaming_prices.get_snapshot()
  Instrument  CF_BID  CF_ASK  OPEN_PRC  CF_HIGH  CF_LOW  CF_CLOSE
0       EUR=  1.1131  1.1132    1.1144   1.1155  1.1122    1.1143
1       GBP=  1.3387  1.3391    1.3378   1.3415  1.3366    1.3385
2       JPY=   115.6  115.61    115.35   115.68  115.28    115.34
3       CAD=  1.2788  1.2792    1.2741   1.2796  1.2713     1.274
>>> streaming_prices.open()
Fields received for EUR= : {'CF_BID': 1.1131, 'CF_ASK': 1.1133}
Fields received for CAD= : {'CF_BID': 1.2788, 'CF_ASK': 1.2793}
Fields received for JPY= : {'CF_BID': 115.59, 'CF_ASK': 115.64}
Fields received for GBP= : {'CF_BID': 1.3387, 'CF_ASK': 1.3392}
Fields received for JPY= : {'CF_BID': 115.6, 'CF_ASK': 115.61}
Fields received for CAD= : {'CF_BID': 1.2789, 'CF_ASK': 1.2791}
Fields received for EUR= : {'CF_BID': 1.1131, 'CF_ASK': 1.1133}
Fields received for GBP= : {'CF_BID': 1.3388, 'CF_ASK': 1.339}
Fields received for JPY= : {'CF_BID': 115.6, 'CF_ASK': 115.61}
Fields received for CAD= : {'CF_BID': 1.2788, 'CF_ASK': 1.2792}
Fields received for EUR= : {'CF_BID': 1.1131, 'CF_ASK': 1.1132}
Fields received for GBP= : {'CF_BID': 1.3387, 'CF_ASK': 1.3391}
<StreamState.Open: 3>
>>> streaming_prices.get_snapshot()
  Instrument  CF_BID  CF_ASK  OPEN_PRC  CF_HIGH  CF_LOW  CF_CLOSE
0       EUR=  1.1131  1.1132    1.1144   1.1155  1.1122    1.1143
1       GBP=  1.3388   1.339    1.3378   1.3415  1.3366    1.3385
2       JPY=   115.6  115.61    115.35   115.68  115.28    115.34
3       CAD=  1.2789  1.2791    1.2741   1.2796  1.2713     1.274
>>> streaming_prices.get_snapshot()
  Instrument  CF_BID  CF_ASK  OPEN_PRC  CF_HIGH  CF_LOW  CF_CLOSE
0       EUR=  1.1131  1.1132    1.1144   1.1155  1.1122    1.1143
1       GBP=  1.3388   1.339    1.3378   1.3415  1.3366    1.3385
2       JPY=   115.6  115.61    115.35   115.68  115.28    115.34
3       CAD=  1.2789  1.2791    1.2741   1.2796  1.2713     1.274
>>> streaming_prices.open()
Fields received for JPY= : {'CF_BID': 115.59, 'CF_ASK': 115.62}
Fields received for JPY= : {'CF_BID': 115.59, 'CF_ASK': 115.63}
Fields received for CAD= : {'CF_BID': 1.2789, 'CF_ASK': 1.2791}
Fields received for GBP= : {'CF_BID': 1.3388, 'CF_ASK': 1.339}
Fields received for JPY= : {'CF_BID': 115.6, 'CF_ASK': 115.61}
Fields received for JPY= : {'CF_BID': 115.6, 'CF_ASK': 115.61}
Fields received for JPY= : {'CF_BID': 115.6, 'CF_ASK': 115.61}
<StreamState.Open: 3>
>>> streaming_prices.get_snapshot()
  Instrument  CF_BID  CF_ASK  OPEN_PRC  CF_HIGH  CF_LOW  CF_CLOSE
0       EUR=   1.113  1.1134    1.1144   1.1155  1.1122    1.1143
1       GBP=  1.3388  1.3389    1.3378   1.3415  1.3366    1.3385
2       JPY=   115.6  115.61    115.35   115.68  115.28    115.34
3       CAD=  1.2788  1.2792    1.2741   1.2796  1.2713     1.274
>>> streaming_prices.open()
Fields received for EUR= : {'CF_BID': 1.1131, 'CF_ASK': 1.1132}
Fields received for CAD= : {'CF_BID': 1.2789, 'CF_ASK': 1.279}
Fields received for CAD= : {'CF_BID': 1.2787, 'CF_ASK': 1.2791}
Fields received for JPY= : {'CF_BID': 115.6, 'CF_ASK': 115.61}
Fields received for CAD= : {'CF_BID': 1.2788, 'CF_ASK': 1.2792}
Fields received for CAD= : {'CF_BID': 1.2789, 'CF_ASK': 1.279}
Fields received for CAD= : {'CF_BID': 1.2788, 'CF_ASK': 1.2792}
Fields received for GBP= : {'CF_BID': 1.3388, 'CF_ASK': 1.3389}
Fields received for EUR= : {'CF_BID': 1.113, 'CF_ASK': 1.1134}
Fields received for CAD= : {'CF_BID': 1.2788, 'CF_ASK': 1.2792}
<StreamState.Open: 3>
>>> streaming_prices.get_snapshot()
  Instrument  CF_BID  CF_ASK  OPEN_PRC  CF_HIGH  CF_LOW  CF_CLOSE
0       EUR=  1.1131  1.1132    1.1144   1.1155  1.1122    1.1143
1       GBP=  1.3387  1.3391    1.3378   1.3415  1.3366    1.3385
2       JPY=   115.6  115.61    115.35   115.68  115.28    115.34
3       CAD=  1.2788  1.2792    1.2741   1.2796  1.2713     1.274
rdp-apistreaming-prices
icon clock
10 |1500

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

Upvotes
Accepted
23.5k 84 10 22

Hi @laurens

Unfortunately. neither myself nor members of the RDP Library team are experienced with R and the RefinitivR package you are using is not a Refinitiv product and therefore we are not able to offer any support for it.

It may be worth reaching out to the developer of RefinitivR - to see if they can shed some light on the issue you are facing.

You can also consider using the alternative Pricing Snapshot API I mentioned in one of my previous posts.


icon clock
10 |1500

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

Upvotes
23.5k 84 10 22

hi @laurens

Do you require asynchronous events as well as the ability to snap as and when required? Or just the ability to snap as and when required?


icon clock
10 |1500

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

Hi @umer.nalla,


I would prefer to do it without asyncio. As I am using it in R in the end. So I would like to have an object that creates the stream (non blocking) and then use get_snapshot to get the actual value from the stream.
Upvotes
23.5k 84 10 22

hi @laurens

I have tested this with a13 release and cannot recreate the issue:

1643371887394.png

Can you please retest with a13?

Also, if you are not interested in receiving the async event updates, you can just use the cache mechanism to snap as and when you want e.g.:
1643372392969.png



1643371887394.png (130.9 KiB)
1643372392969.png (71.0 KiB)
icon clock
10 |1500

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

Upvotes
23.5k 84 10 22

Hi @laurens

The code for the non-async technique was truncated in the snip above:

streaming_prices = rdp.StreamingPrices(
    universe = ['EUR=','GBP=','JPY=', 'CAD='], 
    fields   = ['QUOTIM_MS', 'CF_BID','CF_ASK']
)
streaming_prices.open()
## and then
streaming_prices.get_snapshot()
## as and when required...


icon clock
10 |1500

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

Hi @umer.nalla

As I could not fit in my reaction in this box please see the answer below for a reaction.


Upvotes
61 2 4 8

Hi @umer.nalla and @jason.ramchandani01 ,


From the attached screenshots I have the impression that these snippings are made in codebook. I don't use codebook as this can not be integrated with other information streams.

As a consequence of your reaction I tried with a completely fresh r-eikon conda environment in miniconda.

As can observed below also with the latest version of dataplatform and brand new miniconda and brand new conda environment no updates occur.

I get the impression that eventhough the stream state says it is open it is actually closed and get_snapshot gives the latest result it knows. when open() is called again the stream is open for a very short time again and get_snapshot shows the latest known value. So it looks rather than streaming prices it is more like a streamed_price.


Brand new Conda environment r-eikon as built by a newly installed miniconda

(r-eikon) PS C:\Users\XXXX> conda list
# packages in environment at C:\Users\XXXX\AppData\Local\R-MINI~1\envs\r-eikon:
#
# Name Version Build Channel
anyio 3.5.0 pypi_0 pypi
appdirs 1.4.4 pypi_0 pypi
ca-certificates 2021.10.8 h5b45459_0 conda-forge
certifi 2021.10.8 pypi_0 pypi
chardet 3.0.4 pypi_0 pypi
charset-normalizer 2.0.10 pypi_0 pypi
datetime 4.3 pypi_0 pypi
decorator 5.1.1 pypi_0 pypi
deprecation 2.1.0 pypi_0 pypi
eikon 1.1.14 pypi_0 pypi
eventemitter 0.2.0 pypi_0 pypi
h11 0.12.0 pypi_0 pypi
h2 3.2.0 pypi_0 pypi
hpack 3.0.0 pypi_0 pypi
httpcore 0.14.5 pypi_0 pypi
httpx 0.22.0 pypi_0 pypi
hyperframe 5.2.0 pypi_0 pypi
idna 2.10 pypi_0 pypi
nest-asyncio 1.5.4 pypi_0 pypi
numpy 1.22.1 pypi_0 pypi
openssl 3.0.0 h8ffe710_2 conda-forge
packaging 21.3 pypi_0 pypi
pandas 1.4.0 pypi_0 pypi
pip 21.3.1 pyhd8ed1ab_0 conda-forge
pyparsing 3.0.7 pypi_0 pypi
python 3.8.12 h900ac77_2_cpython conda-forge
python-configuration 0.8.2 pypi_0 pypi
python-dateutil 2.8.2 pypi_0 pypi
python_abi 3.8 2_cp38 conda-forge
pytz 2021.3 pypi_0 pypi
refinitiv-dataplatform 1.0.0a13 pypi_0 pypi
requests 2.27.1 pypi_0 pypi
rfc3986 1.5.0 pypi_0 pypi
scipy 1.7.3 pypi_0 pypi
setuptools 60.5.0 py38haa244fe_0 conda-forge
six 1.16.0 pypi_0 pypi
sniffio 1.2.0 pypi_0 pypi
sqlite 3.37.0 h8ffe710_0 conda-forge
ucrt 10.0.20348.0 h57928b3_0 conda-forge
urllib3 1.26.8 pypi_0 pypi
validators 0.18.2 pypi_0 pypi
vc 14.2 hb210afc_6 conda-forge
vs2015_runtime 14.29.30037 h902a5da_6 conda-forge
watchdog 2.1.6 pypi_0 pypi
websocket-client 1.2.3 pypi_0 pypi
wheel 0.37.1 pyhd8ed1ab_0 conda-forge
zope-interface 5.4.0 pypi_0 pypi
(r-eikon) PS C:\Users\XXXX>

then I tested this with both reticulate::repl_python in r and with pycharm.

1643385550164.png

I also tested it in pycharm with the same result:

1643385977568.png










1643385550164.png (63.9 KiB)
1643385977568.png (211.2 KiB)
icon clock
10 |1500

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

Upvotes
23.5k 84 10 22

Hi @laurens

I am not familiar with R - so cannot assist much in this matter.

Bearing in mind that even with the caching technique, there is some behind the scenes async activity taking place - in order to allow the RDP library to continue receiving the asynchronous stream updates as they are received from the server and thereby keep the cache updated.

My guess is that with R, the stream connection is not remaining open and therefore you are having to continuously re-open it in order to receive your updates.

Hopefully, my colleague @jason.ramchandani01 or others may be able to provide some R based guidance.

One option could be to just open a non-streaming request each time you need to snap e.g.

streaming_prices.open(with_udpates = False)

Otherwise, another alternative you could explore is to use the non-realtime RDP Snapshot service - which is REST-based - requiring you to snap as an when required (via a REST mechanism).

For example with the newer RD Python library, the following makes a snap request using the RDP Snapshot API

Example.DataLibrary.Python/TUT_2.2.01-Pricing-Snapshot.ipynb at main · Refinitiv-API-Samples/Example.DataLibrary.Python (github.com)

# Define our RDP Snapshot Price object
response = rd.content.pricing.Definition(
    ['EUR=', 'GBP=', 'JPY=', 'CAD='],    
    fields=['BID', 'ASK']
    ).get_data()

display(response.data.df)

Notice the get_data() call - as opposed to the get_snapshot() and no mention of Streaming Prices.

Please note that the RDP Snapshot API has different licencing compared to Real-Time streaming - so may not work with your desktop licence.


icon clock
10 |1500

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

Upvotes
7.4k 10 6 8

@laurens Sorry. to hear about your issue - I have tested this with

refinitiv-dataplatform==1.0.0a11

in a standalone python environment and it is working fine - updates are being received after I open the stream and i can see they are changing I snapshot every few seconds or so. Is it the a13 lib that is responsible have you tried to see if a11 lib works? Just a thought. Umer cannot replicate in a13. I am bit tied up at moment but i will try to look at this later.

Actually I just look at your new build - can you drop httpx back to 0.19.0 and nest-asyncio to 1.3.3 and see if that helps?


icon clock
10 |1500

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

Upvotes
61 2 4 8

I have tested this with the current release of https://github.com/GreenGrassBlueOcean/RefinitivR

I have manually downgraded the environment as requested. I could unfortunately not simply downgrade only httpx and nest-asyncio :

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
refinitiv-dataplatform 1.0.0a13 requires h2==3.*, but you have h2 4.0.0 which is incompatible.
refinitiv-dataplatform 1.0.0a13 requires idna==2.*, but you have idna 3.3 which is incompatible.
eikon 1.1.14 requires h2==3.*, but you have h2 4.0.0 which is incompatible.
eikon 1.1.14 requires idna==2.*, but you have idna 3.3 which is incompatible.
eikon 1.1.14 requires nest-asyncio>=1.5.1, but you have nest-asyncio 1.3.3 which is incompatible.
Successfully installed anyio-3.5.0 httpcore-0.13.7 httpx-0.19.0
(r-reticulate) PS C:\Users\XXXX> pip install h2==3.2.0
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
refinitiv-dataplatform 1.0.0a13 requires idna==2.*, but you have idna 3.3 which is incompatible.
eikon 1.1.14 requires idna==2.*, but you have idna 3.3 which is incompatible.
eikon 1.1.14 requires nest-asyncio>=1.5.1, but you have nest-asyncio 1.3.3 which is incompatible.
(r-reticulate) PS C:\Users\XXXX> pip install idna==2.1.0
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
requests 2.27.1 requires idna<4,>=2.5; python_version >= "3", but you have idna 2.1 which is incompatible.
eikon 1.1.14 requires nest-asyncio>=1.5.1, but you have nest-asyncio 1.3.3 which is incompatible.
anyio 3.5.0 requires idna>=2.8, but you have idna 2.1 which is incompatible.


Unfortunatelly Eikon requires a newer version of nest asyncio than 1.3.3 . So the whole thing gets a bit messy now.


As can be observed from below: prices are only streaming after forcing $open() and I doubt if they are really streaming. There is also no check if prices are streaming or not. So there is no way to check if the data that you are looking at is old or actual. Quite dangerous in my eyes.

> rdp <- RDPConnect("key")
> universe = list("EUR=","JPY=", "GBP=", "HKD=")
> fields=list('DSPLY_NAME', 'BID', 'ASK', 'CF_TIME')
> StreamingPricesObject <- rdp$StreamingPrices(universe = universe,  fields = fields)
> StreamingPricesObject$open()
StreamState.Open
> py_snapshot <- StreamingPricesObject$get_snapshot()
> py_snapshot 
  Instrument        DSPLY_NAME     BID     ASK   CF_TIME
0       EUR=  SANTANDER    HKG   1.142  1.1421  10:55:35
1       JPY=  ZUERCHER KB  ZUR  114.99   115.0  10:55:35
2       GBP=  SANTANDER    HKG  1.3492  1.3497  10:55:33
3       HKD=  ZUERCHER KB  ZUR  7.7933  7.7934  10:55:33
> py_snapshot <- StreamingPricesObject$get_snapshot()
> py_snapshot 
  Instrument        DSPLY_NAME     BID     ASK   CF_TIME
0       EUR=  SANTANDER    HKG   1.142  1.1421  10:55:35
1       JPY=  ZUERCHER KB  ZUR  114.99   115.0  10:55:35
2       GBP=  SANTANDER    HKG  1.3492  1.3497  10:55:33
3       HKD=  ZUERCHER KB  ZUR  7.7933  7.7934  10:55:33
> py_snapshot <- StreamingPricesObject$get_snapshot()
> py_snapshot 
  Instrument        DSPLY_NAME     BID     ASK   CF_TIME
0       EUR=  SANTANDER    HKG   1.142  1.1421  10:55:35
1       JPY=  ZUERCHER KB  ZUR  114.99   115.0  10:55:35
2       GBP=  SANTANDER    HKG  1.3492  1.3497  10:55:33
3       HKD=  ZUERCHER KB  ZUR  7.7933  7.7934  10:55:33
> StreamingPricesObject$open()
StreamState.Open
> py_snapshot <- StreamingPricesObject$get_snapshot()
> py_snapshot 
  Instrument        DSPLY_NAME     BID     ASK   CF_TIME
0       EUR=  BARCLAYS     LON  1.1418  1.1422  10:55:40
1       JPY=  BARCLAYS     LON  114.97   115.0  10:55:42
2       GBP=  NEDBANK LTD  JHB  1.3492  1.3496  10:55:42
3       HKD=  BK OF CHINA  HKG  7.7929  7.7934  10:55:41


conda environment

(r-reticulate) PS C:\Users\XXXX> conda list
# packages in environment at C:\Users\XXXX\AppData\Local\R-MINI~1\envs\r-reticulate:
#
# Name Version Build Channel
anyio 3.5.0 pypi_0 pypi
appdirs 1.4.4 pypi_0 pypi
ca-certificates 2021.10.26 haa95532_4
certifi 2021.10.8 pypi_0 pypi
chardet 3.0.4 pypi_0 pypi
charset-normalizer 2.0.4 pyhd3eb1b0_0
dataclasses 0.6 pypi_0 pypi
datetime 4.3 pypi_0 pypi
decorator 5.1.1 pypi_0 pypi
deprecation 2.1.0 pypi_0 pypi
eikon 1.1.14 pypi_0 pypi
eventemitter 0.2.0 pypi_0 pypi
eventkit 0.8.9 pypi_0 pypi
h11 0.12.0 pyhd3eb1b0_0
h2 3.2.0 pypi_0 pypi
hpack 3.0.0 pypi_0 pypi
httpcore 0.13.7 pypi_0 pypi
httpx 0.19.0 py38haa244fe_0 conda-forge
hyperframe 5.2.0 pypi_0 pypi
ib-insync 0.9.70 pypi_0 pypi
idna 2.1 pypi_0 pypi
intel-openmp 2022.0.0 haa95532_3663
libblas 3.9.0 13_win64_mkl conda-forge
libcblas 3.9.0 13_win64_mkl conda-forge
liblapack 3.9.0 13_win64_mkl conda-forge
mkl 2022.0.0 h0e2418a_796 conda-forge
nest-asyncio 1.3.3 pypi_0 pypi
numpy 1.22.1 py38hcf66579_0 conda-forge
openssl 1.1.1m h2bbff1b_0
packaging 21.3 pypi_0 pypi
pandas 1.4.0 pypi_0 pypi
pip 21.2.2 py38haa95532_0
pyparsing 3.0.7 pypi_0 pypi
python 3.8.12 h6244533_0
python-configuration 0.8.2 pypi_0 pypi
python-dateutil 2.8.2 pypi_0 pypi
python_abi 3.8 2_cp38 conda-forge
pytz 2021.3 pypi_0 pypi
refinitiv-dataplatform 1.0.0a13 pypi_0 pypi
requests 2.27.1 pypi_0 pypi
rfc3986 1.4.0 pyhd3eb1b0_0
scipy 1.7.3 pypi_0 pypi
setuptools 58.0.4 py38haa95532_0
six 1.16.0 pypi_0 pypi
sniffio 1.2.0 py38haa95532_1
sqlite 3.37.2 h2bbff1b_0
tbb 2021.5.0 h59b6b97_0
urllib3 1.26.8 pypi_0 pypi
validators 0.18.2 pypi_0 pypi
vc 14.2 h21ff451_1
vs2015_runtime 14.27.29016 h5e58377_2
watchdog 2.1.6 pypi_0 pypi
websocket-client 1.2.3 pypi_0 pypi
wheel 0.37.1 pyhd3eb1b0_0
wincertstore 0.2 py38haa95532_2
zope-interface 5.4.0 pypi_0 pypi
(r-reticulate) PS C:\Users\XXXX>
icon clock
10 |1500

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