cryptodatapy 0.2.8__py3-none-any.whl → 0.2.10__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- cryptodatapy/extract/datarequest.py +0 -1
- cryptodatapy/extract/exchanges/__init__.py +2 -0
- cryptodatapy/extract/exchanges/dydx.py +137 -0
- cryptodatapy/extract/exchanges/exchange.py +439 -0
- cryptodatapy/extract/getdata.py +68 -0
- cryptodatapy/extract/libraries/ccxt_api.py +706 -150
- cryptodatapy/extract/libraries/library.py +1 -3
- cryptodatapy/extract/web/web.py +62 -0
- cryptodatapy/transform/convertparams.py +5 -6
- cryptodatapy/transform/filter.py +7 -8
- cryptodatapy/transform/wrangle.py +2 -1
- {cryptodatapy-0.2.8.dist-info → cryptodatapy-0.2.10.dist-info}/METADATA +1 -1
- {cryptodatapy-0.2.8.dist-info → cryptodatapy-0.2.10.dist-info}/RECORD +15 -26
- cryptodatapy/conf/fx_tickers.csv +0 -31
- cryptodatapy/extract/data_vendors/CoinMetrics.ipynb +0 -747
- cryptodatapy/extract/libraries/Untitled.ipynb +0 -199
- cryptodatapy/extract/libraries/ccxt.ipynb +0 -747
- cryptodatapy/extract/libraries/yfinance_api.py +0 -511
- cryptodatapy/transform/cc_onchain_data.csv +0 -118423
- cryptodatapy/transform/clean_onchain_data.ipynb +0 -4750
- cryptodatapy/transform/clean_perp_futures_ohlcv.ipynb +0 -2819
- cryptodatapy/transform/cmdty_data.ipynb +0 -402
- cryptodatapy/transform/credit_data.ipynb +0 -291
- cryptodatapy/transform/eqty_data.ipynb +0 -836
- cryptodatapy/transform/global_credit_data_daily.parquet +0 -0
- cryptodatapy/transform/rates_data.ipynb +0 -465
- cryptodatapy/transform/us_rates_daily.csv +0 -227752
- {cryptodatapy-0.2.8.dist-info → cryptodatapy-0.2.10.dist-info}/LICENSE +0 -0
- {cryptodatapy-0.2.8.dist-info → cryptodatapy-0.2.10.dist-info}/WHEEL +0 -0
@@ -11,7 +11,6 @@ class Library(ABC):
|
|
11
11
|
Library is an abstract base class which provides a blueprint for properties and methods for the
|
12
12
|
library subclass.
|
13
13
|
"""
|
14
|
-
|
15
14
|
def __init__(
|
16
15
|
self,
|
17
16
|
categories,
|
@@ -400,8 +399,7 @@ class Library(ABC):
|
|
400
399
|
|
401
400
|
@staticmethod
|
402
401
|
@abstractmethod
|
403
|
-
def wrangle_data_resp(data_req: DataRequest, data_resp: Union[Dict[str, Any], pd.DataFrame])
|
404
|
-
-> pd.DataFrame:
|
402
|
+
def wrangle_data_resp(data_req: DataRequest, data_resp: Union[Dict[str, Any], pd.DataFrame]) -> pd.DataFrame:
|
405
403
|
"""
|
406
404
|
Wrangles data response from data vendor API into tidy format.
|
407
405
|
"""
|
cryptodatapy/extract/web/web.py
CHANGED
@@ -46,6 +46,11 @@ class Web(ABC):
|
|
46
46
|
def categories(self, categories: Union[str, List[str]]):
|
47
47
|
"""
|
48
48
|
Sets a list of available categories for the data vendor.
|
49
|
+
|
50
|
+
Parameters
|
51
|
+
----------
|
52
|
+
categories : Union[str, List[str]]
|
53
|
+
A string or list of strings containing the categories to filter the data vendor's data.
|
49
54
|
"""
|
50
55
|
valid_categories = [
|
51
56
|
None,
|
@@ -89,6 +94,11 @@ class Web(ABC):
|
|
89
94
|
def indexes(self, indexes: Optional[Union[str, List[str], Dict[str, List[str]]]]):
|
90
95
|
"""
|
91
96
|
Sets a list of available indexes for the web page.
|
97
|
+
|
98
|
+
Parameters
|
99
|
+
----------
|
100
|
+
indexes : Optional[Union[str, List[str], Dict[str, List[str]]]
|
101
|
+
A string, list of strings, or dict containing the indexes to filter the web page's data.
|
92
102
|
"""
|
93
103
|
if indexes is None or isinstance(indexes, list) or isinstance(indexes, dict):
|
94
104
|
self._indexes = indexes
|
@@ -118,6 +128,11 @@ class Web(ABC):
|
|
118
128
|
def assets(self, assets: Optional[Union[str, List[str], Dict[str, List[str]]]]):
|
119
129
|
"""
|
120
130
|
Sets a list of available assets for the data vendor.
|
131
|
+
|
132
|
+
Parameters
|
133
|
+
----------
|
134
|
+
assets : Optional[Union[str, List[str], Dict[str, List[str]]]
|
135
|
+
A string, list of strings, or dict containing the assets to filter the data vendor's data.
|
121
136
|
"""
|
122
137
|
if assets is None or isinstance(assets, list) or isinstance(assets, dict):
|
123
138
|
self._assets = assets
|
@@ -147,6 +162,11 @@ class Web(ABC):
|
|
147
162
|
def markets(self, markets: Optional[Union[str, List[str], Dict[str, List[str]]]]):
|
148
163
|
"""
|
149
164
|
Sets a list of available markets for the data vendor.
|
165
|
+
|
166
|
+
Parameters
|
167
|
+
----------
|
168
|
+
markets : Optional[Union[str, List[str], Dict[str, List[str]]]
|
169
|
+
A string, list of strings, or dict containing the markets to filter the data vendor's data.
|
150
170
|
"""
|
151
171
|
if markets is None or isinstance(markets, list) or isinstance(markets, dict):
|
152
172
|
self._markets = markets
|
@@ -176,6 +196,11 @@ class Web(ABC):
|
|
176
196
|
def market_types(self, market_types: Optional[Union[str, List[str]]]):
|
177
197
|
"""
|
178
198
|
Sets a list of available market types for the data vendor.
|
199
|
+
|
200
|
+
Parameters
|
201
|
+
----------
|
202
|
+
market_types : Optional[Union[str, List[str]]
|
203
|
+
A string or list of strings containing the market types to filter the data vendor's data.
|
179
204
|
"""
|
180
205
|
valid_mkt_types, mkt_types_list = [
|
181
206
|
None,
|
@@ -214,6 +239,11 @@ class Web(ABC):
|
|
214
239
|
def fields(self, fields: Optional[Union[str, List[str], Dict[str, List[str]]]]):
|
215
240
|
"""
|
216
241
|
Sets a list of available fields for the data vendor.
|
242
|
+
|
243
|
+
Parameters
|
244
|
+
----------
|
245
|
+
fields : Optional[Union[str, List[str], Dict[str, List[str]]]
|
246
|
+
A string, list of strings, or dict containing the fields to filter the data vendor's data.
|
217
247
|
"""
|
218
248
|
if fields is None or isinstance(fields, list) or isinstance(fields, dict):
|
219
249
|
self._fields = fields
|
@@ -229,6 +259,11 @@ class Web(ABC):
|
|
229
259
|
def get_fields_info(self, data_type: Optional[str]):
|
230
260
|
"""
|
231
261
|
Gets info for available fields from the data vendor.
|
262
|
+
|
263
|
+
Parameters
|
264
|
+
----------
|
265
|
+
data_type : Optional[str]
|
266
|
+
A string containing the data type to filter the data vendor's fields
|
232
267
|
"""
|
233
268
|
# to be implemented by subclasses
|
234
269
|
|
@@ -245,6 +280,11 @@ class Web(ABC):
|
|
245
280
|
):
|
246
281
|
"""
|
247
282
|
Sets a list of available data frequencies for the data vendor.
|
283
|
+
|
284
|
+
Parameters
|
285
|
+
----------
|
286
|
+
frequencies : Optional[Union[str, List[str], Dict[str, List[str]]]
|
287
|
+
A string, list of strings, or dict containing the frequencies to filter the data vendor's data.
|
248
288
|
"""
|
249
289
|
if (
|
250
290
|
frequencies is None
|
@@ -271,6 +311,11 @@ class Web(ABC):
|
|
271
311
|
def base_url(self, url: Optional[str]):
|
272
312
|
"""
|
273
313
|
Sets the base url for the data vendor.
|
314
|
+
|
315
|
+
Parameters
|
316
|
+
----------
|
317
|
+
url : Optional[str]
|
318
|
+
A string containing the data vendor's base URL to which endpoint paths are appended.
|
274
319
|
"""
|
275
320
|
if url is None or isinstance(url, str):
|
276
321
|
self._base_url = url
|
@@ -291,6 +336,11 @@ class Web(ABC):
|
|
291
336
|
def file_formats(self, formats: Optional[Union[str, List[str]]]):
|
292
337
|
"""
|
293
338
|
Sets the file formats for the files on the web page.
|
339
|
+
|
340
|
+
Parameters
|
341
|
+
----------
|
342
|
+
formats : Optional[Union[str, List[str]]
|
343
|
+
A string or list of strings containing the file formats for the web page's data files.
|
294
344
|
"""
|
295
345
|
if formats is None or isinstance(formats, list):
|
296
346
|
self._file_formats = formats
|
@@ -305,6 +355,11 @@ class Web(ABC):
|
|
305
355
|
def get_data(self, data_req: DataRequest) -> pd.DataFrame:
|
306
356
|
"""
|
307
357
|
Submits get data request to API.
|
358
|
+
|
359
|
+
Parameters
|
360
|
+
----------
|
361
|
+
data_req : DataRequest
|
362
|
+
A DataRequest object containing the request parameters.
|
308
363
|
"""
|
309
364
|
# to be implemented by subclasses
|
310
365
|
|
@@ -313,5 +368,12 @@ class Web(ABC):
|
|
313
368
|
def wrangle_data_resp(data_req: DataRequest, data_resp: Union[Dict[str, Any], pd.DataFrame]) -> pd.DataFrame:
|
314
369
|
"""
|
315
370
|
Wrangles data response from data vendor API into tidy format.
|
371
|
+
|
372
|
+
Parameters
|
373
|
+
----------
|
374
|
+
data_req : DataRequest
|
375
|
+
A DataRequest object containing the request parameters.
|
376
|
+
data_resp : Union[Dict[str, Any], pd.DataFrame]
|
377
|
+
A dictionary or DataFrame containing the data response from the data vendor API.
|
316
378
|
"""
|
317
379
|
# to be implemented by subclasses
|
@@ -57,17 +57,17 @@ class ConvertParams:
|
|
57
57
|
exch = self.data_req.exch
|
58
58
|
# convert start date
|
59
59
|
if self.data_req.freq[-3:] == "min": # limit to higher frequency data responses
|
60
|
-
start_date =
|
60
|
+
start_date = int((datetime.now() - timedelta(days=7)).timestamp())
|
61
61
|
# no start date
|
62
62
|
elif self.data_req.start_date is None:
|
63
|
-
start_date =
|
63
|
+
start_date = int(pd.Timestamp("2009-01-03 00:00:00").timestamp())
|
64
64
|
else:
|
65
|
-
start_date =
|
65
|
+
start_date = int(pd.Timestamp(self.data_req.start_date).timestamp())
|
66
66
|
# convert end date
|
67
67
|
if self.data_req.end_date is None:
|
68
|
-
end_date =
|
68
|
+
end_date = int(pd.Timestamp.utcnow().timestamp())
|
69
69
|
else:
|
70
|
-
end_date =
|
70
|
+
end_date = int(pd.Timestamp(self.data_req.end_date).timestamp())
|
71
71
|
# fields
|
72
72
|
if self.data_req.source_fields is not None:
|
73
73
|
fields = self.data_req.source_fields
|
@@ -986,7 +986,6 @@ class ConvertParams:
|
|
986
986
|
-------
|
987
987
|
quote_ccy: str
|
988
988
|
Quote currency.
|
989
|
-
|
990
989
|
"""
|
991
990
|
mkts = [] # fx pairs list
|
992
991
|
# fx groups
|
cryptodatapy/transform/filter.py
CHANGED
@@ -159,12 +159,12 @@ class Filter:
|
|
159
159
|
and fields (cols).
|
160
160
|
"""
|
161
161
|
# drop tickers with nobs < ts_obs
|
162
|
-
obs = self.df.groupby(level=1).count().
|
162
|
+
obs = self.df.groupby(level=1).count().median(axis=1)
|
163
163
|
drop_tickers_list = obs[obs < ts_obs].index.to_list()
|
164
164
|
self.filtered_df = self.df.drop(drop_tickers_list, level=1, axis=0)
|
165
165
|
|
166
166
|
# drop tickers with nobs < cs_obs
|
167
|
-
obs = self.filtered_df.groupby(level=0).count().
|
167
|
+
obs = self.filtered_df.groupby(level=0).count().median(axis=1)
|
168
168
|
idx_start = obs[obs > cs_obs].index[0]
|
169
169
|
self.filtered_df = self.filtered_df.loc[idx_start:]
|
170
170
|
|
@@ -185,16 +185,15 @@ class Filter:
|
|
185
185
|
Filtered dataFrame with DatetimeIndex (level 0), tickers (level 1) and fields (cols).
|
186
186
|
"""
|
187
187
|
# unchanged rows
|
188
|
-
unch_rows = (self.df.subtract(self.df.iloc[:, :4].mean(axis=1), axis=0) == 0).any(axis=1)
|
188
|
+
unch_rows: object = (self.df.subtract(self.df.iloc[:, :4].mean(axis=1), axis=0) == 0).any(axis=1)
|
189
189
|
|
190
|
-
# delisted
|
191
|
-
|
190
|
+
# replace delisted with NaNs
|
191
|
+
self.filtered_df = self.df.loc[~unch_rows].reindex(self.df.index)
|
192
192
|
|
193
193
|
# repair
|
194
194
|
if method == 'remove':
|
195
|
-
self.filtered_df = self.
|
196
|
-
|
197
|
-
self.filtered_df = self.df.loc[~unch_rows].reindex(self.df.index)
|
195
|
+
self.filtered_df = list(self.filtered_df.unstack().columns[self.filtered_df.unstack().iloc[-1].isna()].
|
196
|
+
droplevel(0).unique())
|
198
197
|
|
199
198
|
return self.filtered_df
|
200
199
|
|
@@ -854,7 +854,8 @@ class WrangleData:
|
|
854
854
|
self.tidy_data = self.tidy_data.apply(pd.to_numeric, errors='coerce').convert_dtypes()
|
855
855
|
|
856
856
|
# remove bad data
|
857
|
-
|
857
|
+
if data_type != 'funding_rates':
|
858
|
+
self.tidy_data = self.tidy_data[self.tidy_data != 0] # 0 values
|
858
859
|
self.tidy_data = self.tidy_data[~self.tidy_data.index.duplicated()] # duplicate rows
|
859
860
|
self.tidy_data = self.tidy_data.dropna(how='all').dropna(how='all', axis=1) # entire row or col NaNs
|
860
861
|
|
@@ -1,7 +1,6 @@
|
|
1
1
|
cryptodatapy/__init__.py,sha256=ee1UaINHZn1A_SZ96XM3hCguQEJgiPTvKlnYsk3mmS4,185
|
2
2
|
cryptodatapy/conf/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
3
|
cryptodatapy/conf/fields.csv,sha256=Xjs_sWIY4DuhdHlWOPo0pgDC8sHYA6xzf6kb0PuUp9w,25735
|
4
|
-
cryptodatapy/conf/fx_tickers.csv,sha256=vqbY93_6Zi4vXg8iu0veXZ-NDm_NV2rrmb5lNYRqNUA,288
|
5
4
|
cryptodatapy/conf/tickers.csv,sha256=Bs9KfDKawoUPKIQZMN8CtoLYJuzOkwLh2il30c8CsqE,357066
|
6
5
|
cryptodatapy/datasets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
7
6
|
cryptodatapy/datasets/br_econ_calendar.csv,sha256=mSM0IOIByI-0gIIL1CbDQPqHYI5lK6vavrY1ODj3Jlk,1185318
|
@@ -27,47 +26,37 @@ cryptodatapy/extract/data_vendors/.ipynb_checkpoints/DBNomics-checkpoint.ipynb,s
|
|
27
26
|
cryptodatapy/extract/data_vendors/.ipynb_checkpoints/InvestPy-checkpoint.ipynb,sha256=ybcHKXzmmlTYEoxC-qkWmd0Pjn1WjJ5CMPvMVotqJ7o,50215
|
28
27
|
cryptodatapy/extract/data_vendors/.ipynb_checkpoints/NasdaqDataLink-checkpoint.ipynb,sha256=hY2QkCcTiLgPnl8SQPsO8spio5-RBMGeBLYzAwgSWb4,147170
|
29
28
|
cryptodatapy/extract/data_vendors/.ipynb_checkpoints/PandasDataReader-checkpoint.ipynb,sha256=n7vzOV6AxC_Ti5CLWW2ABMEEcbbBpiBBs4qTUBQinIg,24171
|
30
|
-
cryptodatapy/extract/data_vendors/CoinMetrics.ipynb,sha256=OtepxnBvt2DMCJpPFcY0kGhMRcKhw8ArSL85Cd3oO10,24923
|
31
29
|
cryptodatapy/extract/data_vendors/__init__.py,sha256=Nk6gcT43d0XOLfrlVA9r--5mvHCgHfq295IKL3Puu74,354
|
32
30
|
cryptodatapy/extract/data_vendors/coinmetrics_api.py,sha256=2fnsgKkBWjzMa1jzfVa7UbJKTpMWzcFVjo0bKDEud8U,34991
|
33
31
|
cryptodatapy/extract/data_vendors/cryptocompare_api.py,sha256=3oBfQioBz1vrs9JNtwE0hBLI4BTtpFBBEEsDawmobE8,28872
|
34
32
|
cryptodatapy/extract/data_vendors/datavendor.py,sha256=kGKxHcPng6JiGGhcuPx87ij0DXl4E-OSqxlvxhJ1HQo,12642
|
35
33
|
cryptodatapy/extract/data_vendors/glassnode_api.py,sha256=PuuJOjHztoJyFijb5XU1zm1S_2NAj7MX-wC89DL_bWQ,13103
|
36
34
|
cryptodatapy/extract/data_vendors/tiingo_api.py,sha256=Bvj5nF8zCkpU3cf5ImUmCS1cd1w2UtjgQvRmQ9Wfg6g,26404
|
37
|
-
cryptodatapy/extract/datarequest.py,sha256=
|
38
|
-
cryptodatapy/extract/
|
39
|
-
cryptodatapy/extract/
|
35
|
+
cryptodatapy/extract/datarequest.py,sha256=Yi1pVe-ljv_su6kwEw5uylhG3XtneujBaNS2pmAIyk0,25879
|
36
|
+
cryptodatapy/extract/exchanges/__init__.py,sha256=VKTNzrbe-wltGHWH9lK5RLZoXCGHp-UGGZ4gMVHJXrQ,113
|
37
|
+
cryptodatapy/extract/exchanges/dydx.py,sha256=Oifb4sKbPRKArdZBx9q5ob4yTFkd65n0zXiS7hga0mk,4199
|
38
|
+
cryptodatapy/extract/exchanges/exchange.py,sha256=Cicj3KS4zLbwmXX5fu89byXNwqqU4TH31GFv0zj3D4s,13010
|
39
|
+
cryptodatapy/extract/getdata.py,sha256=BQ-OCfoQqPTYN1GtSI8t93iPpCUbtwiXC0BDxbrdKKM,11477
|
40
40
|
cryptodatapy/extract/libraries/__init__.py,sha256=9rJ_hFHWlvkPwyIkNG5bqH6HTY2jQNPIKQjzYEsVSDo,319
|
41
|
-
cryptodatapy/extract/libraries/
|
42
|
-
cryptodatapy/extract/libraries/ccxt_api.py,sha256=nHkNeOKAL2KEvbY-ZI-ZgTlO5v15k9KnqODPiMM5zWw,35865
|
41
|
+
cryptodatapy/extract/libraries/ccxt_api.py,sha256=bYQxmOHdw3uCYf8jUb3Nzng30lypYX7lemfxjqSLzd4,56642
|
43
42
|
cryptodatapy/extract/libraries/dbnomics_api.py,sha256=M6kPIH-hKqkmeBQb-g56dY9jatqLCtSl_MnvPblHtAc,9421
|
44
43
|
cryptodatapy/extract/libraries/investpy_api.py,sha256=qtGm3LDluXxJorvFv0w1bm1oBrcZIfE5cZSYzNYvttY,18409
|
45
|
-
cryptodatapy/extract/libraries/library.py,sha256=
|
44
|
+
cryptodatapy/extract/libraries/library.py,sha256=eU8NnQZ9luLGdIF5hms6j8VPCWc50evkREc4xdh-g1I,12301
|
46
45
|
cryptodatapy/extract/libraries/pandasdr_api.py,sha256=-62P0W0Pa98f-96nB_bDgDkPFshP8yiqKZ9VU-usv94,13696
|
47
|
-
cryptodatapy/extract/libraries/yfinance_api.py,sha256=E4c8gIpDh5ta8ILsn9SBs3C1pOU1VP4OqwQb6TcOzCc,17311
|
48
46
|
cryptodatapy/extract/web/__init__.py,sha256=8i0fweCeqSpdiPf-47jT240I4ca6SizCu9aD-qDS67w,89
|
49
47
|
cryptodatapy/extract/web/aqr.py,sha256=LS1D7QzG6UWkLUfDMgBFtiHpznnnAUOpec5Sx3vRGME,11875
|
50
|
-
cryptodatapy/extract/web/web.py,sha256=
|
48
|
+
cryptodatapy/extract/web/web.py,sha256=R1xEnHE1McxSWxp4vrTfgh9gW6FF6XDlp0gmp2NmWOM,12126
|
51
49
|
cryptodatapy/transform/__init__.py,sha256=Spb5cGJ3V_o8hgSWOSrF8J_vsSZpFk0uzW7RpkgfbFE,131
|
52
|
-
cryptodatapy/transform/cc_onchain_data.csv,sha256=qA9u3hekHk_NueBlMYQ7IKATh7AlnY-EN9E9X-9kIsU,9544500
|
53
50
|
cryptodatapy/transform/clean.py,sha256=C9VypQOjdJ987TcD-qAHh7qYaoJBotvp3cWTr3ttSGM,12807
|
54
|
-
cryptodatapy/transform/
|
55
|
-
cryptodatapy/transform/
|
56
|
-
cryptodatapy/transform/cmdty_data.ipynb,sha256=McAMfzNDfrv61gSlzFOkw_DXaOGZE1qfqXc2E_KeSbs,1220371
|
57
|
-
cryptodatapy/transform/convertparams.py,sha256=X80Hdi2AMHVSYTJ6i-ovOzv5L6JQlGswJlC82xCriX8,39687
|
58
|
-
cryptodatapy/transform/credit_data.ipynb,sha256=Wvvnu9ejsmqCb0s3cTG8bLJaywWQCskgk6FBd5J5Vf8,1892822
|
59
|
-
cryptodatapy/transform/eqty_data.ipynb,sha256=A5cA13hOPrOe7Fra0HL4QPFkJGVfArigTR0GUUBpQ3A,25609
|
60
|
-
cryptodatapy/transform/filter.py,sha256=iQDUXthEXVGcrZUZLjevhDqwf9oywEQHTIh6n_sxOhU,9056
|
61
|
-
cryptodatapy/transform/global_credit_data_daily.parquet ,sha256=Dw27SX41AeSYcZyYlrGbwVe8KZM6c35TQ-gzCd2gU2I,745732
|
51
|
+
cryptodatapy/transform/convertparams.py,sha256=qkWABkyCeTfNdCJWhw_8FdBOgP-_yt5okf66HYs3C84,39676
|
52
|
+
cryptodatapy/transform/filter.py,sha256=KYYyta0uREAjBkYTVyvhOCCLSKR_qPSlqj5Nl7l4iBk,9064
|
62
53
|
cryptodatapy/transform/impute.py,sha256=c7qdgFg0qs_xuQnX0jazpt0wgASC0KElLZRuxTkeVKY,5519
|
63
54
|
cryptodatapy/transform/od.py,sha256=z__CWiN70f1leqx12SS9pIvTggxpUPrg1falJIKMZCc,31031
|
64
|
-
cryptodatapy/transform/
|
65
|
-
cryptodatapy/transform/us_rates_daily.csv,sha256=BIA4a6egQYrVsLk51IZ54ZXXWMwjrx_t5S4XMdvHg44,6434830
|
66
|
-
cryptodatapy/transform/wrangle.py,sha256=KqPIY7akFtHasW5gqUNR1cCGMBBkgHmzWxyMZFw8t-Q,42564
|
55
|
+
cryptodatapy/transform/wrangle.py,sha256=TXh6BRyyEKAqJjS3sCLZwaNwEn7kRIvn0pfRqnEDXDQ,42609
|
67
56
|
cryptodatapy/util/__init__.py,sha256=zSQ2HU2QIXzCuptJjknmrClwtQKCvIj4aNysZljIgrU,116
|
68
57
|
cryptodatapy/util/datacatalog.py,sha256=qCCX6srXvaAbVAKuA0M2y5IK_2OEx5xA3yRahDZlC-g,13157
|
69
58
|
cryptodatapy/util/datacredentials.py,sha256=fXuGgI2NKCLlcnK8M37CtdyAc3O_YCV23x3KTlfakjA,2160
|
70
|
-
cryptodatapy-0.2.
|
71
|
-
cryptodatapy-0.2.
|
72
|
-
cryptodatapy-0.2.
|
73
|
-
cryptodatapy-0.2.
|
59
|
+
cryptodatapy-0.2.10.dist-info/LICENSE,sha256=sw4oVq8bDjT3uMtaFebQ-xeIVP4H-bXldTs9q-Jjeks,11344
|
60
|
+
cryptodatapy-0.2.10.dist-info/METADATA,sha256=nWI_azCrpIZ4TudJTVqvVcqILc0MIA4CA4TwZ6xhfW0,6427
|
61
|
+
cryptodatapy-0.2.10.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
62
|
+
cryptodatapy-0.2.10.dist-info/RECORD,,
|
cryptodatapy/conf/fx_tickers.csv
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
id,name,tiingo_id
|
2
|
-
eurusd,,
|
3
|
-
gbpusd,,
|
4
|
-
usdjpy,,
|
5
|
-
usdchf,,
|
6
|
-
usdcad,,
|
7
|
-
usdsek,,
|
8
|
-
usdnok,,
|
9
|
-
audusd,,
|
10
|
-
nzdusd,,
|
11
|
-
usdars,,
|
12
|
-
usdmxn,,
|
13
|
-
usdbrl,,
|
14
|
-
usdcop,,
|
15
|
-
usdclp,,
|
16
|
-
usdpen,,
|
17
|
-
usdils,,
|
18
|
-
usdrub,,
|
19
|
-
usdczk,,
|
20
|
-
usdpln,,
|
21
|
-
usdhuf,,
|
22
|
-
usdzar,,
|
23
|
-
usdtry,,
|
24
|
-
usdcny,,
|
25
|
-
usdhkd,,
|
26
|
-
usdsgd,,
|
27
|
-
usdtwd,,
|
28
|
-
usdkrw,,
|
29
|
-
usdphp,,
|
30
|
-
usdinr,,
|
31
|
-
usdidr,,
|