cryptodatapy 0.2.0__tar.gz → 0.2.2__tar.gz

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.
Files changed (119) hide show
  1. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/PKG-INFO +1 -1
  2. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/pyproject.toml +1 -1
  3. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/setup.py +63 -7
  4. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/.DS_Store +0 -0
  5. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/conf/tickers.csv +6 -0
  6. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/extract/libraries/ccxt_api.py +81 -60
  7. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/extract/libraries/library.py +19 -8
  8. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/extract/libraries/pandasdr_api.py +1 -1
  9. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/transform/wrangle.py +2 -4
  10. cryptodatapy-0.2.0/src/cryptodatapy/.idea/workspace.xml +0 -41
  11. cryptodatapy-0.2.0/src/cryptodatapy/conf/.pytest_cache/.gitignore +0 -2
  12. cryptodatapy-0.2.0/src/cryptodatapy/conf/.pytest_cache/CACHEDIR.TAG +0 -4
  13. cryptodatapy-0.2.0/src/cryptodatapy/conf/.pytest_cache/README.md +0 -8
  14. cryptodatapy-0.2.0/src/cryptodatapy/conf/.pytest_cache/v/cache/nodeids +0 -1
  15. cryptodatapy-0.2.0/src/cryptodatapy/conf/.pytest_cache/v/cache/stepwise +0 -1
  16. cryptodatapy-0.2.0/src/cryptodatapy/conf/__pycache__/__init__.cpython-39.pyc +0 -0
  17. cryptodatapy-0.2.0/src/cryptodatapy/datasets/__pycache__/__init__.cpython-39.pyc +0 -0
  18. cryptodatapy-0.2.0/src/cryptodatapy/datasets/__pycache__/get_econ_calendars.cpython-39.pyc +0 -0
  19. cryptodatapy-0.2.0/src/cryptodatapy/extract/__pycache__/__init__.cpython-39.pyc +0 -0
  20. cryptodatapy-0.2.0/src/cryptodatapy/extract/__pycache__/datarequest.cpython-39.pyc +0 -0
  21. cryptodatapy-0.2.0/src/cryptodatapy/extract/__pycache__/getdata.cpython-39.pyc +0 -0
  22. cryptodatapy-0.2.0/src/cryptodatapy/extract/data_vendors/.ipynb_checkpoints/glassnode_api_test-checkpoint.ipynb +0 -504
  23. cryptodatapy-0.2.0/src/cryptodatapy/extract/data_vendors/.pytest_cache/.gitignore +0 -2
  24. cryptodatapy-0.2.0/src/cryptodatapy/extract/data_vendors/.pytest_cache/CACHEDIR.TAG +0 -4
  25. cryptodatapy-0.2.0/src/cryptodatapy/extract/data_vendors/.pytest_cache/README.md +0 -8
  26. cryptodatapy-0.2.0/src/cryptodatapy/extract/data_vendors/.pytest_cache/v/cache/nodeids +0 -1
  27. cryptodatapy-0.2.0/src/cryptodatapy/extract/data_vendors/.pytest_cache/v/cache/stepwise +0 -1
  28. cryptodatapy-0.2.0/src/cryptodatapy/extract/data_vendors/__pycache__/__init__.cpython-39.pyc +0 -0
  29. cryptodatapy-0.2.0/src/cryptodatapy/extract/data_vendors/__pycache__/ccxt_api.cpython-39.pyc +0 -0
  30. cryptodatapy-0.2.0/src/cryptodatapy/extract/data_vendors/__pycache__/coinmetrics_api.cpython-39.pyc +0 -0
  31. cryptodatapy-0.2.0/src/cryptodatapy/extract/data_vendors/__pycache__/cryptocompare_api.cpython-39.pyc +0 -0
  32. cryptodatapy-0.2.0/src/cryptodatapy/extract/data_vendors/__pycache__/datavendor.cpython-39.pyc +0 -0
  33. cryptodatapy-0.2.0/src/cryptodatapy/extract/data_vendors/__pycache__/dbnomics_api.cpython-39.pyc +0 -0
  34. cryptodatapy-0.2.0/src/cryptodatapy/extract/data_vendors/__pycache__/glassnode_api.cpython-39.pyc +0 -0
  35. cryptodatapy-0.2.0/src/cryptodatapy/extract/data_vendors/__pycache__/investpy_api.cpython-39.pyc +0 -0
  36. cryptodatapy-0.2.0/src/cryptodatapy/extract/data_vendors/__pycache__/pandasdr_api.cpython-39.pyc +0 -0
  37. cryptodatapy-0.2.0/src/cryptodatapy/extract/data_vendors/__pycache__/tiingo_api.cpython-39.pyc +0 -0
  38. cryptodatapy-0.2.0/src/cryptodatapy/extract/libraries/__pycache__/__init__.cpython-39.pyc +0 -0
  39. cryptodatapy-0.2.0/src/cryptodatapy/extract/libraries/__pycache__/ccxt_api.cpython-39.pyc +0 -0
  40. cryptodatapy-0.2.0/src/cryptodatapy/extract/libraries/__pycache__/dbnomics_api.cpython-39.pyc +0 -0
  41. cryptodatapy-0.2.0/src/cryptodatapy/extract/libraries/__pycache__/investpy_api.cpython-39.pyc +0 -0
  42. cryptodatapy-0.2.0/src/cryptodatapy/extract/libraries/__pycache__/library.cpython-39.pyc +0 -0
  43. cryptodatapy-0.2.0/src/cryptodatapy/extract/libraries/__pycache__/pandasdr_api.cpython-39.pyc +0 -0
  44. cryptodatapy-0.2.0/src/cryptodatapy/extract/web/.ipynb_checkpoints/Untitled-checkpoint.ipynb +0 -6
  45. cryptodatapy-0.2.0/src/cryptodatapy/extract/web/Untitled.ipynb +0 -559
  46. cryptodatapy-0.2.0/src/cryptodatapy/extract/web/__pycache__/__init__.cpython-39.pyc +0 -0
  47. cryptodatapy-0.2.0/src/cryptodatapy/extract/web/__pycache__/aqr.cpython-39.pyc +0 -0
  48. cryptodatapy-0.2.0/src/cryptodatapy/extract/web/__pycache__/web.cpython-39.pyc +0 -0
  49. cryptodatapy-0.2.0/src/cryptodatapy/transform/__pycache__/__init__.cpython-39.pyc +0 -0
  50. cryptodatapy-0.2.0/src/cryptodatapy/transform/__pycache__/clean.cpython-39.pyc +0 -0
  51. cryptodatapy-0.2.0/src/cryptodatapy/transform/__pycache__/convertparams.cpython-39.pyc +0 -0
  52. cryptodatapy-0.2.0/src/cryptodatapy/transform/__pycache__/filter.cpython-39.pyc +0 -0
  53. cryptodatapy-0.2.0/src/cryptodatapy/transform/__pycache__/impute.cpython-39.pyc +0 -0
  54. cryptodatapy-0.2.0/src/cryptodatapy/transform/__pycache__/od.cpython-39.pyc +0 -0
  55. cryptodatapy-0.2.0/src/cryptodatapy/transform/__pycache__/wrangle.cpython-39.pyc +0 -0
  56. cryptodatapy-0.2.0/src/cryptodatapy/util/__pycache__/__init__.cpython-39.pyc +0 -0
  57. cryptodatapy-0.2.0/src/cryptodatapy/util/__pycache__/convertparams.cpython-39.pyc +0 -0
  58. cryptodatapy-0.2.0/src/cryptodatapy/util/__pycache__/datacatalog.cpython-39.pyc +0 -0
  59. cryptodatapy-0.2.0/src/cryptodatapy/util/__pycache__/datacredentials.cpython-39.pyc +0 -0
  60. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/LICENSE +0 -0
  61. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/README.md +0 -0
  62. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/.idea/.gitignore +0 -0
  63. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/.idea/cryptodatapy.iml +0 -0
  64. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/.idea/csv-plugin.xml +0 -0
  65. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/.idea/inspectionProfiles/Project_Default.xml +0 -0
  66. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/.idea/inspectionProfiles/profiles_settings.xml +0 -0
  67. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/.idea/misc.xml +0 -0
  68. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/.idea/modules.xml +0 -0
  69. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/.idea/vcs.xml +0 -0
  70. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/__init__.py +0 -0
  71. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/conf/__init__.py +0 -0
  72. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/conf/fields.csv +0 -0
  73. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/datasets/__init__.py +0 -0
  74. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/datasets/br_econ_calendar.csv +0 -0
  75. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/datasets/ca_econ_calendar.csv +0 -0
  76. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/datasets/cn_econ_calendar.csv +0 -0
  77. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/datasets/de_econ_calendar.csv +0 -0
  78. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/datasets/ez_econ_calendar.csv +0 -0
  79. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/datasets/fr_econ_calendar.csv +0 -0
  80. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/datasets/gb_econ_calendar.csv +0 -0
  81. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/datasets/get_econ_calendars.py +0 -0
  82. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/datasets/id_econ_calendar.csv +0 -0
  83. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/datasets/in_econ_calendar.csv +0 -0
  84. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/datasets/it_econ_calendar.csv +0 -0
  85. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/datasets/jp_econ_calendar.csv +0 -0
  86. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/datasets/kr_econ_calendar.csv +0 -0
  87. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/datasets/mx_econ_calendar.csv +0 -0
  88. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/datasets/ru_econ_calendar.csv +0 -0
  89. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/datasets/tr_econ_calendar.csv +0 -0
  90. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/datasets/us_econ_calendar.csv +0 -0
  91. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/extract/__init__.py +0 -0
  92. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/extract/data_vendors/.ipynb_checkpoints/CCXT-checkpoint.ipynb +0 -0
  93. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/extract/data_vendors/.ipynb_checkpoints/DBNomics-checkpoint.ipynb +0 -0
  94. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/extract/data_vendors/.ipynb_checkpoints/InvestPy-checkpoint.ipynb +0 -0
  95. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/extract/data_vendors/.ipynb_checkpoints/NasdaqDataLink-checkpoint.ipynb +0 -0
  96. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/extract/data_vendors/.ipynb_checkpoints/PandasDataReader-checkpoint.ipynb +0 -0
  97. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/extract/data_vendors/__init__.py +0 -0
  98. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/extract/data_vendors/coinmetrics_api.py +0 -0
  99. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/extract/data_vendors/cryptocompare_api.py +0 -0
  100. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/extract/data_vendors/datavendor.py +0 -0
  101. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/extract/data_vendors/glassnode_api.py +0 -0
  102. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/extract/data_vendors/tiingo_api.py +0 -0
  103. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/extract/datarequest.py +0 -0
  104. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/extract/getdata.py +0 -0
  105. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/extract/libraries/__init__.py +0 -0
  106. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/extract/libraries/dbnomics_api.py +0 -0
  107. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/extract/libraries/investpy_api.py +0 -0
  108. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/extract/web/__init__.py +0 -0
  109. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/extract/web/aqr.py +0 -0
  110. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/extract/web/web.py +0 -0
  111. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/transform/__init__.py +0 -0
  112. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/transform/clean.py +0 -0
  113. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/transform/convertparams.py +0 -0
  114. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/transform/filter.py +0 -0
  115. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/transform/impute.py +0 -0
  116. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/transform/od.py +0 -0
  117. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/util/__init__.py +0 -0
  118. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/util/datacatalog.py +0 -0
  119. {cryptodatapy-0.2.0 → cryptodatapy-0.2.2}/src/cryptodatapy/util/datacredentials.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cryptodatapy
3
- Version: 0.2.0
3
+ Version: 0.2.2
4
4
  Summary: Cryptoasset data library
5
5
  License: Apache-2.0
6
6
  Author: Systamental
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "cryptodatapy"
3
- version = "0.2.0"
3
+ version = "0.2.2"
4
4
  description = "Cryptoasset data library"
5
5
  authors = ["Systamental"]
6
6
  license = "Apache License 2.0"
@@ -17,12 +17,68 @@ packages = \
17
17
 
18
18
  package_data = \
19
19
  {'': ['*'],
20
- 'cryptodatapy': ['.idea/*', '.idea/inspectionProfiles/*'],
21
- 'cryptodatapy.conf': ['.pytest_cache/*', '.pytest_cache/v/cache/*'],
22
- 'cryptodatapy.extract.data_vendors': ['.ipynb_checkpoints/*',
23
- '.pytest_cache/*',
24
- '.pytest_cache/v/cache/*'],
25
- 'cryptodatapy.extract.web': ['.ipynb_checkpoints/*']}
20
+ 'cryptodatapy': ['.idea/.gitignore',
21
+ '.idea/.gitignore',
22
+ '.idea/.gitignore',
23
+ '.idea/.gitignore',
24
+ '.idea/.gitignore',
25
+ '.idea/.gitignore',
26
+ '.idea/cryptodatapy.iml',
27
+ '.idea/cryptodatapy.iml',
28
+ '.idea/cryptodatapy.iml',
29
+ '.idea/cryptodatapy.iml',
30
+ '.idea/cryptodatapy.iml',
31
+ '.idea/cryptodatapy.iml',
32
+ '.idea/csv-plugin.xml',
33
+ '.idea/csv-plugin.xml',
34
+ '.idea/csv-plugin.xml',
35
+ '.idea/csv-plugin.xml',
36
+ '.idea/csv-plugin.xml',
37
+ '.idea/csv-plugin.xml',
38
+ '.idea/inspectionProfiles/*',
39
+ '.idea/misc.xml',
40
+ '.idea/misc.xml',
41
+ '.idea/misc.xml',
42
+ '.idea/misc.xml',
43
+ '.idea/misc.xml',
44
+ '.idea/misc.xml',
45
+ '.idea/modules.xml',
46
+ '.idea/modules.xml',
47
+ '.idea/modules.xml',
48
+ '.idea/modules.xml',
49
+ '.idea/modules.xml',
50
+ '.idea/modules.xml',
51
+ '.idea/vcs.xml',
52
+ '.idea/vcs.xml',
53
+ '.idea/vcs.xml',
54
+ '.idea/vcs.xml',
55
+ '.idea/vcs.xml',
56
+ '.idea/vcs.xml'],
57
+ 'cryptodatapy.extract.data_vendors': ['.ipynb_checkpoints/CCXT-checkpoint.ipynb',
58
+ '.ipynb_checkpoints/CCXT-checkpoint.ipynb',
59
+ '.ipynb_checkpoints/CCXT-checkpoint.ipynb',
60
+ '.ipynb_checkpoints/CCXT-checkpoint.ipynb',
61
+ '.ipynb_checkpoints/CCXT-checkpoint.ipynb',
62
+ '.ipynb_checkpoints/DBNomics-checkpoint.ipynb',
63
+ '.ipynb_checkpoints/DBNomics-checkpoint.ipynb',
64
+ '.ipynb_checkpoints/DBNomics-checkpoint.ipynb',
65
+ '.ipynb_checkpoints/DBNomics-checkpoint.ipynb',
66
+ '.ipynb_checkpoints/DBNomics-checkpoint.ipynb',
67
+ '.ipynb_checkpoints/InvestPy-checkpoint.ipynb',
68
+ '.ipynb_checkpoints/InvestPy-checkpoint.ipynb',
69
+ '.ipynb_checkpoints/InvestPy-checkpoint.ipynb',
70
+ '.ipynb_checkpoints/InvestPy-checkpoint.ipynb',
71
+ '.ipynb_checkpoints/InvestPy-checkpoint.ipynb',
72
+ '.ipynb_checkpoints/NasdaqDataLink-checkpoint.ipynb',
73
+ '.ipynb_checkpoints/NasdaqDataLink-checkpoint.ipynb',
74
+ '.ipynb_checkpoints/NasdaqDataLink-checkpoint.ipynb',
75
+ '.ipynb_checkpoints/NasdaqDataLink-checkpoint.ipynb',
76
+ '.ipynb_checkpoints/NasdaqDataLink-checkpoint.ipynb',
77
+ '.ipynb_checkpoints/PandasDataReader-checkpoint.ipynb',
78
+ '.ipynb_checkpoints/PandasDataReader-checkpoint.ipynb',
79
+ '.ipynb_checkpoints/PandasDataReader-checkpoint.ipynb',
80
+ '.ipynb_checkpoints/PandasDataReader-checkpoint.ipynb',
81
+ '.ipynb_checkpoints/PandasDataReader-checkpoint.ipynb']}
26
82
 
27
83
  install_requires = \
28
84
  ['DBnomics>=1.2.3',
@@ -47,7 +103,7 @@ extras_require = \
47
103
 
48
104
  setup_kwargs = {
49
105
  'name': 'cryptodatapy',
50
- 'version': '0.2.0',
106
+ 'version': '0.2.2',
51
107
  'description': 'Cryptoasset data library',
52
108
  'long_description': "![](cryptodatapy_logo.jpeg)\n\n# CryptoDataPy\n### _Better data beats fancier algorithms_\n<br/>\n\n**CryptoDataPy** is a python library which makes it easy to build high quality data pipelines \nfor the analysis of digital assets. By providing easy access to over 100,000 time series for thousands of assets, \nit facilitates the pre-processing of a wide range of data from different sources.\n\nCryptoassets generate a huge amount of market, on-chain and off-chain data. \nBut unlike legacy financial markets, this data is often fragmented, \nunstructured and dirty. By extracting data from various sources, \npre-processing it into a user-friendly (tidy) format, detecting and repairing 'bad' data,\nand allowing for easy storage and retrieval, CryptoDataPy allows you to spend less time gathering \nand cleaning data, and more time analyzing it.\n\nOur data includes:\n\n- **Market:** market prices of varying granularity (e.g. tick, trade and bar data, aka OHLC),\nfor spot, futures and options markets, as well as funding rates for the analysis of \ncryptoasset returns.\n- **On-chain:** network health and usage data, circulating supply, asset holder positions and \ncost-basis, for the analysis of underlying crypto network fundamentals.\n- **Off-chain:** news, social media, developer activity, web traffic and search for project interest and \nsentiment, as well as traditional financial market and macroeconomic data for broader financial and \neconomic conditions.\n\nThe library's intuitive interface facilitates each step of the ETL/ETL (extract-transform-load) process:\n\n- **Extract**: Extracting data from a wide range of data sources and file formats.\n- **Transform**: \n - Wrangling data into a pandas DataFrame in a structured and user-friendly format, \n a.k.a [tidy data](https://www.jstatsoft.org/article/view/v059i10). \n - Detecting, scrubbing and repairing 'bad' data (e.g. outliers, missing values, 0s, etc.) to improve the accuracy and reliability\nof machine learning/predictive models.\n- **Load**: Storing clean and ready-for-analysis data and metadata for easy access.\n\n## Installation\n\n```bash\n$ pip install cryptodatapy\n```\n\n## Usage\n\n**CryptoDataPy** allows you to pull ready-to-analyze data from a variety of sources \nwith only a few lines of code.\n\nFirst specify which data you want with a `DataRequest`:\n\n```python\n# import DataRequest\nfrom cryptodatapy.extract.datarequest import DataRequest\n# specify parameters for data request: tickers, fields, start date, end_date, etc.\ndata_req = DataRequest(\n source='glassnode', # name of data source\n tickers=['btc', 'eth'], # list of asset tickers, in CryptoDataPy format, defaults to 'btc'\n fields=['close', 'add_act', 'hashrate'], # list of fields, in CryptoDataPy, defaults to 'close'\n freq=None, # data frequency, defaults to daily \n quote_ccy=None, # defaults to USD/USDT\n exch=None, # defaults to exchange weighted average or Binance\n mkt_type= 'spot', # defaults to spot\n start_date=None, # defaults to start date for longest series\n end_date=None, # defaults to most recent \n tz=None, # defaults to UTC time\n cat=None, # optional, should be specified when asset class is not crypto, eg. 'fx', 'rates', 'macro', etc.\n)\n```\nThen get the data :\n\n```python\n# import GetData\nfrom cryptodatapy.extract.getdata import GetData\n# get data\nGetData(data_req).get_series()\n```\n\nWith the same data request parameters, you can retrieve the same data from a different source:\n\n```python\n# modify data source parameter\ndata_req = DataRequest(\n source='coinmetrics', \n tickers=['btc', 'eth'], \n fields=['close', 'add_act', 'hashrate'], \n req='d',\n start_date='2016-01-01')\n# get data\nGetData(data_req).get_series()\n```\n\nFor more detailed code examples and interactive tutorials \nsee [here](https://github.com/systamental/cryptodatapy/blob/main/docs/example.ipynb).\n## Supported Data Sources\n\n- [CryptoCompare](https://min-api.cryptocompare.com/documentation)\n- [CCXT](https://docs.ccxt.com/en/latest/)\n- [Glassnode](https://docs.glassnode.com/)\n- [Coin Metrics](https://docs.coinmetrics.io/api/v4/)\n- [Tiingo](https://api.tiingo.com/documentation/general/overview)\n- [Yahoo Finance](https://github.com/ranaroussi/yfinance)\n- [Fama-French Data](http://mba.tuck.dartmouth.edu/pages/faculty/ken.french/data_library.html)\n- [AQR](https://www.aqr.com/Insights/Datasets)\n- [Federal Reserve Economic Data (FRED)](https://fred.stlouisfed.org/docs/api/fred/)\n- [DBnomics](https://db.nomics.world/docs/)\n- [WorldBank](https://documents.worldbank.org/en/publication/documents-reports/api)\n- [Pandas-datareader](https://pandas-datareader.readthedocs.io/en/latest/)\n\n## Contributing\n\nInterested in contributing? Check out the contributing guidelines and \ncontact us at info@systamental.com. Please note that this project is s\nreleased with a Code of Conduct. By contributing to this project, you agree \nto abide by its terms.\n\n## License\n\n`cryptodatapy` was created by Systamental. \nIt is licensed under the terms of the Apache License 2.0 license.\n\n",
53
109
  'author': 'Systamental',
@@ -1702,6 +1702,9 @@ MX_Manuf_PMI,Mexico S&P Global Manufacturing PMI,,,MX,MEX,Mexico,EM,macro,growth
1702
1702
  KR_Manuf_PMI,South Korea S&P Global Manufacturing PMI,,,KR,KOR,South Korea,EM,macro,growth,,m,,index,KRW,,,,,,Nikkei Manufacturing PMI,,
1703
1703
  CA_Manuf_PMI,Canada Manufacturing PMI,,,CA,CAN,Canada,DM,macro,growth,,m,,index,CAD,,,,,,Manufacturing PMI,,
1704
1704
  EZ_Manuf_PMI,Eurozone S&P Global Manufacturing PMI,,,EZ,EMU,Euro zone,Euro zone,macro,growth,,m,,index,EUR,,,,,,Manufacturing PMI,,
1705
+ G20_CLI,G20 Composite Leading Indicator,"G20 Composite Leading Indicator, Amplitude adjusted (CLI), Monthly",,G20,G20,G20,G20,macro,growth,,m,,index,,,,,,LOLITOAA.G-20.M,,,
1706
+ G20_BCI,G20 Business Confidence Index,"G20 Business Confidence Index, OECD Standardised BCI, Amplitude adjusted (Long term average=100), SA, Monthly",,G20,G20,G21,G20,macro,growth,,m,,index,,,,,,BSCICP03.G-20.M,,,
1707
+ G20_CCI,G20 Consumer Confidence Index,"G20 Consumer Confidence Index, OECD Standardised CCI, Amplitude adjusted (Long term average=100), SA, Monthly",,G20,G20,G22,G20,macro,growth,,m,,index,,,,,,CSCICP03.G-20.M,,,
1705
1708
  US_GDP_Sh_PPP,"United States Share of World GDP based on PPP, %","United States Share of World GDP based on PPP, %. Units: Percent. Estimates begin after 2018. Expressed in percent of world GDP in PPP dollars. These data form the basis for the country weights used to generate the World Economic Outlook country group composites for the domestic economy.",,US,USA,United States,DM,macro,activity,,y,,%,USD,,,,,IMF/WEO:2021-04/USA.PPPSH.pcent,,,
1706
1709
  CN_GDP_Sh_PPP,"China Share of World GDP based on PPP, %","China Share of World GDP based on PPP, %. Units: Percent. Estimates begin after 2018. Expressed in percent of world GDP in PPP dollars.These data form the basis for the country weights used to generate the World Economic Outlook country group composites for the domestic economy.",,CN,CHN,China,EM,macro,activity,,y,,%,CNY,,,,,IMF/WEO:2021-04/CHN.PPPSH.pcent,,,
1707
1710
  IN_GDP_Sh_PPP,"India Share of World GDP based on PPP, %","India Share of World GDP based on PPP, %. Units: Percent. Estimates begin after 2018. Expressed in percent of world GDP in PPP dollars.These data form the basis for the country weights used to generate the World Economic Outlook country group composites for the domestic economy.",,IN,IND,India,EM,macro,activity,,y,,%,INR,,,,,IMF/WEO:2021-04/IND.PPPSH.pcent,,,
@@ -1773,6 +1776,9 @@ IT_Infl_CPI_YoY,"Italy CPI Inflation Rate, Year over year percentage change",,,I
1773
1776
  MX_Infl_CPI_YoY,"Mexico CPI Inflation Rate, Year over year percentage change",,,MX,MEX,Mexico,EM,macro,inflation,,m,,yoy % chg,MXN,,,,,,CPI (YoY),,
1774
1777
  KR_Infl_CPI_YoY,"South Korea CPI Inflation Rate, Year over year percentage change",,,KR,KOR,South Korea,EM,macro,inflation,,m,,yoy % chg,KRW,,,,,,CPI (YoY),,
1775
1778
  CA_Infl_CPI_YoY,"Canada CPI Inflation Rate, Year over year percentage change",,,CA,CAN,Canada,DM,macro,inflation,,m,,yoy % chg,CAD,,,,,,CPI (YoY),,
1779
+ G20_Infl_CPI_YoY,"G20 CPI Inflation Rate, Year over year percentage change","G20 - Consumer Price Index, All items, Total, Growth rate same period previous year, Monthly",,G20,G20,G20,G20,macro,inflation,,m,,yoy % chg,,,,,,G-20.CPALTT01.GY.M,,,
1780
+ G20_Infl_CPI_MoM,"G20 CPI Inflation Rate, Month over month percentage change","G20 � Consumer Price Index, All items, Total, Growth rate previous period, Monthly",,G20,G20,G20,G20,macro,inflation,,m,,mom % chg,,,,,,G-20.CPALTT01.GP.M,,,
1781
+ G20_Infl_CPI_Idx,"G20 CPI Inflation Rate, Index","G20 � Consumer Price Index, All items, Total, Index 2015=100, Monthly",,G20,G20,G20,G20,macro,inflation,,m,,index,,,,,,G-20.CPALTT01.IXOB.M,,,
1776
1782
  EZ_Infl_Exp_1Y,"ECB, Survey of Professional Forecasters, 12 months ahead HICP inflation",,,EZ,EMU,Euro zone,Euro zone,macro,inflation,,q,,YoY % chg,EUR,,,,,ECB/SPF/M.U2.HICP.POINT.P12M.Q.AVG,,,
1777
1783
  US_UE_Rate,United States Unemployment Rate,,,US,USA,United States,DM,macro,unemployment,,m,,%,,,,,UNRATE,BLS/ln/LNS14000000,,,
1778
1784
  CN_UE_Rate,China Urban Surveyed Unemployment Rate,,,CN,CHN,China,EM,macro,unemployment,,m,,%,,,,,,NBS/M_A0E01/A0E0101,,,
@@ -28,7 +28,7 @@ class CCXT(Library):
28
28
  indexes: Optional[List[str]] = None,
29
29
  assets: Optional[Dict[str, List[str]]] = None,
30
30
  markets: Optional[Dict[str, List[str]]] = None,
31
- market_types=None,
31
+ market_types: List[str] = ["spot", "future", "perpetual_future", "option"],
32
32
  fields: Optional[List[str]] = None,
33
33
  frequencies: Optional[Dict[str, List[str]]] = None,
34
34
  base_url: Optional[str] = None,
@@ -86,24 +86,10 @@ class CCXT(Library):
86
86
  rate_limit,
87
87
  )
88
88
 
89
- if market_types is None:
90
- self.market_types = ["spot", "future", "perpetual_future", "option"]
91
- if market_types is exchanges:
92
- self.exchanges = self.get_exchanges_info(as_list=True)
93
- if assets is None:
94
- self.assets = self.get_assets_info(as_list=True)
95
- if markets is None:
96
- self.markets = self.get_markets_info(as_list=True)
97
- if fields is None:
98
- self.fields = self.get_fields_info()
99
- if frequencies is None:
100
- self.frequencies = self.get_frequencies_info()
101
- if rate_limit is None:
102
- self.rate_limit = self.get_rate_limit_info()
103
-
104
- @staticmethod
105
89
  def get_exchanges_info(
106
- exch: Optional[str] = None, as_list: bool = False
90
+ self,
91
+ exch: Optional[str] = None,
92
+ as_list: bool = True
107
93
  ) -> Union[List[str], pd.DataFrame]:
108
94
  """
109
95
  Get exchanges info.
@@ -122,12 +108,14 @@ class CCXT(Library):
122
108
  """
123
109
  # list
124
110
  if as_list:
125
- exchanges = ccxt.exchanges
111
+ self.exchanges = ccxt.exchanges
112
+
113
+ # df
126
114
  else:
127
115
  if exch is not None:
128
- exchanges = [exch]
116
+ self.exchanges = [exch]
129
117
  else:
130
- exchanges = ccxt.exchanges
118
+ self.exchanges = ccxt.exchanges
131
119
  print(
132
120
  "Getting metadata for all supported exchanges can take a few minutes."
133
121
  " For quick info on a specific exchange, provide the name of the exchange in the exch parameter."
@@ -135,7 +123,7 @@ class CCXT(Library):
135
123
 
136
124
  # exch df
137
125
  exch_df = pd.DataFrame(
138
- index=exchanges,
126
+ index=self.exchanges,
139
127
  columns=[
140
128
  "id",
141
129
  "name",
@@ -161,24 +149,36 @@ class CCXT(Library):
161
149
  ],
162
150
  )
163
151
 
164
- # extract exch info
165
- for row in exch_df.iterrows():
152
+ # Extract exchange info
153
+ for index, row in exch_df.iterrows():
166
154
  try:
167
- exchange = getattr(ccxt, str(row[0]))()
155
+ exchange = getattr(ccxt, index)()
168
156
  exchange.load_markets()
169
- except Exception:
170
- exch_df.loc[row[0], :] = np.nan
157
+ except AttributeError as e:
158
+ print(f"AttributeError: {e} for exchange {index}")
159
+ exch_df.loc[index, :] = np.nan
160
+ except ccxt.BaseError as e: # Catch specific ccxt exceptions
161
+ print(f"CCXT Error: {e} for exchange {index}")
162
+ exch_df.loc[index, :] = np.nan
163
+ except Exception as e: # Fallback for any other exceptions
164
+ print(f"Unexpected error: {e} for exchange {index}")
165
+ exch_df.loc[index, :] = np.nan
171
166
  else:
172
167
  for col in exch_df.columns:
173
168
  try:
174
- exch_df.loc[row[0], col] = str(getattr(exchange, str(col)))
175
- except Exception:
176
- exch_df.loc[row[0], col] = np.nan
169
+ exch_df.loc[index, col] = str(getattr(exchange, col))
170
+ except AttributeError as e:
171
+ print(f"AttributeError: {e} for attribute {col} in exchange {index}")
172
+ exch_df.loc[index, col] = np.nan
173
+ except Exception as e: # Fallback for any other exceptions
174
+ print(f"Unexpected error: {e} for attribute {col} in exchange {index}")
175
+ exch_df.loc[index, col] = np.nan
176
+
177
177
  # set index name
178
178
  exch_df.index.name = "exchange"
179
- exchanges = exch_df
179
+ self.exchanges = exch_df
180
180
 
181
- return exchanges
181
+ return self.exchanges
182
182
 
183
183
  def get_indexes_info(self) -> None:
184
184
  """
@@ -187,7 +187,9 @@ class CCXT(Library):
187
187
  return None
188
188
 
189
189
  def get_assets_info(
190
- self, exch: str = "binance", as_list: bool = False
190
+ self,
191
+ exch: str = "binance",
192
+ as_list: bool = False
191
193
  ) -> Union[pd.DataFrame, List[str]]:
192
194
  """
193
195
  Get assets info.
@@ -209,14 +211,14 @@ class CCXT(Library):
209
211
 
210
212
  # get assets on exchange and create df
211
213
  exchange.load_markets()
212
- assets = pd.DataFrame(exchange.currencies).T
213
- assets.index.name = "ticker"
214
+ self.assets = pd.DataFrame(exchange.currencies).T
215
+ self.assets.index.name = "ticker"
214
216
 
215
217
  # as list of assets
216
218
  if as_list:
217
- assets = assets.index.to_list()
219
+ self.assets = self.assets.index.to_list()
218
220
 
219
- return assets
221
+ return self.assets
220
222
 
221
223
  def get_markets_info(
222
224
  self,
@@ -224,7 +226,7 @@ class CCXT(Library):
224
226
  quote_ccy: Optional[str] = None,
225
227
  mkt_type: Optional[str] = None,
226
228
  as_list: bool = False,
227
- ) -> Union[Dict[str, List[str]], pd.DataFrame]:
229
+ ) -> Union[pd.DataFrame, List[str]]:
228
230
  """
229
231
  Get markets info.
230
232
 
@@ -241,34 +243,34 @@ class CCXT(Library):
241
243
 
242
244
  Returns
243
245
  -------
244
- markets: dictionary or pd.DataFrame
245
- Dictionary or dataframe with info on available markets, by exchange.
246
+ markets: list or pd.DataFrame
247
+ List or dataframe with info on available markets, by exchange.
246
248
  """
247
249
  # inst exch
248
250
  exchange = getattr(ccxt, exch)()
249
251
 
250
252
  # get assets on exchange
251
- markets = pd.DataFrame(exchange.load_markets()).T
252
- markets.index.name = "ticker"
253
+ self.markets = pd.DataFrame(exchange.load_markets()).T
254
+ self.markets.index.name = "ticker"
253
255
 
254
256
  # quote ccy
255
257
  if quote_ccy is not None:
256
- markets = markets[markets.quote == quote_ccy.upper()]
258
+ self.markets = self.markets[self.markets.quote == quote_ccy.upper()]
257
259
 
258
260
  # mkt type
259
261
  if mkt_type == "perpetual_future":
260
- if markets[markets.type == "swap"].empty:
261
- markets = markets[markets.type == "future"]
262
+ if self.markets[self.markets.type == "swap"].empty:
263
+ self.markets = self.markets[self.markets.type == "future"]
262
264
  else:
263
- markets = markets[markets.type == "swap"]
265
+ self.markets = self.markets[self.markets.type == "swap"]
264
266
  elif mkt_type == "spot" or mkt_type == "future" or mkt_type == "option":
265
- markets = markets[markets.type == mkt_type]
267
+ self.markets = self.markets[self.markets.type == mkt_type]
266
268
 
267
269
  # dict of assets
268
270
  if as_list:
269
- markets = markets.index.to_list()
271
+ self.markets = self.markets.index.to_list()
270
272
 
271
- return markets
273
+ return self.markets
272
274
 
273
275
  def get_fields_info(self) -> List[str]:
274
276
  """
@@ -280,12 +282,11 @@ class CCXT(Library):
280
282
  List of available fields.
281
283
  """
282
284
  # list of fields
283
- fields = ["open", "high", "low", "close", "volume", "funding_rate"]
285
+ self.fields = ["open", "high", "low", "close", "volume", "funding_rate"]
284
286
 
285
- return fields
287
+ return self.fields
286
288
 
287
- @staticmethod
288
- def get_frequencies_info(exch: str = "binance") -> Dict[str, List[str]]:
289
+ def get_frequencies_info(self, exch: str = "binance") -> Dict[str, List[str]]:
289
290
  """
290
291
  Get frequencies info.
291
292
 
@@ -304,9 +305,9 @@ class CCXT(Library):
304
305
  exchange.load_markets()
305
306
 
306
307
  # freq dict
307
- freq = exchange.timeframes
308
+ self.frequencies = exchange.timeframes
308
309
 
309
- return freq
310
+ return self.frequencies
310
311
 
311
312
  def get_rate_limit_info(self, exch: str = "binance") -> Dict[str, Union[str, int]]:
312
313
  """
@@ -325,10 +326,30 @@ class CCXT(Library):
325
326
  # inst exch
326
327
  exchange = getattr(ccxt, exch)()
327
328
 
328
- return {
329
+ self.rate_limit = {
329
330
  "exchange rate limit": "delay in milliseconds between two consequent HTTP requests to the same exchange",
330
- exch: exchange.rateLimit,
331
+ exch: exchange.rateLimit
331
332
  }
333
+ return self.rate_limit
334
+
335
+ def get_metadata(self) -> None:
336
+ """
337
+ Get CCXT metadata.
338
+ """
339
+ if self.exchanges is None:
340
+ self.exchanges = self.get_exchanges_info(as_list=True)
341
+ if self.market_types is None:
342
+ self.market_types = ["spot", "future", "perpetual_future", "option"]
343
+ if self.assets is None:
344
+ self.assets = self.get_assets_info(as_list=True)
345
+ if self.markets is None:
346
+ self.markets = self.get_markets_info(as_list=True)
347
+ if self.fields is None:
348
+ self.fields = self.get_fields_info()
349
+ if self.frequencies is None:
350
+ self.frequencies = self.get_frequencies_info()
351
+ if self.rate_limit is None:
352
+ self.rate_limit = self.get_rate_limit_info()
332
353
 
333
354
  def req_data(self,
334
355
  data_req: DataRequest,
@@ -623,7 +644,7 @@ class CCXT(Library):
623
644
  f"Assets are not available. Use assets attribute to check available assets for {cx_data_req['exch']}")
624
645
 
625
646
  # check tickers
626
- fields = self.fields
647
+ fields = self.get_fields_info()
627
648
  if not any([field in fields for field in data_req.fields]):
628
649
  raise ValueError(
629
650
  f"Fields are not available. Use fields attribute to check available fields."
@@ -689,7 +710,7 @@ class CCXT(Library):
689
710
  try:
690
711
  df0 = self.get_tidy_ohlcv(data_req, mkt)
691
712
 
692
- except Exception:
713
+ except AssertionError:
693
714
  logging.info(f"Failed to get OHLCV data for {ticker} after many attempts.")
694
715
 
695
716
  else:
@@ -731,7 +752,7 @@ class CCXT(Library):
731
752
  try:
732
753
  df0 = self.get_tidy_funding_rates(data_req, mkt)
733
754
 
734
- except Exception:
755
+ except AssertionError:
735
756
  logging.info(f"Failed to get funding rates for {ticker} after many attempts.")
736
757
 
737
758
  else:
@@ -100,14 +100,15 @@ class Library(ABC):
100
100
  exchanges is None
101
101
  or isinstance(exchanges, list)
102
102
  or isinstance(exchanges, dict)
103
+ or isinstance(exchanges, pd.DataFrame)
103
104
  ):
104
105
  self._exchanges = exchanges
105
106
  elif isinstance(exchanges, str):
106
107
  self._exchanges = [exchanges]
107
108
  else:
108
109
  raise TypeError(
109
- "Exchanges must be a string, list of strings (exchanges) or"
110
- " dict with {cat: List[str]} key-value pairs."
110
+ "Exchanges must be a string, list of strings (exchanges), "
111
+ " dict with {cat: List[str]} key-value pairs or a dataframe."
111
112
  )
112
113
 
113
114
  @abstractmethod
@@ -158,14 +159,19 @@ class Library(ABC):
158
159
  """
159
160
  Sets a list of available assets for the data vendor.
160
161
  """
161
- if assets is None or isinstance(assets, list) or isinstance(assets, dict):
162
+ if (
163
+ assets is None
164
+ or isinstance(assets, list)
165
+ or isinstance(assets, dict)
166
+ or isinstance(assets, pd.DataFrame)
167
+ ):
162
168
  self._assets = assets
163
169
  elif isinstance(assets, str):
164
170
  self._assets = [assets]
165
171
  else:
166
172
  raise TypeError(
167
- "Assets must be a string (ticker), list of strings (tickers) or"
168
- " a dict with {cat: List[str]} key-value pairs."
173
+ "Assets must be a string (ticker), list of strings (tickers),"
174
+ " a dict with {cat: List[str]} key-value pairs or dataframe."
169
175
  )
170
176
 
171
177
  @abstractmethod
@@ -187,14 +193,19 @@ class Library(ABC):
187
193
  """
188
194
  Sets a list of available markets for the data vendor.
189
195
  """
190
- if markets is None or isinstance(markets, list) or isinstance(markets, dict):
196
+ if (
197
+ markets is None
198
+ or isinstance(markets, list)
199
+ or isinstance(markets, dict)
200
+ or isinstance(markets, pd.DataFrame)
201
+ ):
191
202
  self._markets = markets
192
203
  elif isinstance(markets, str):
193
204
  self._markets = [markets]
194
205
  else:
195
206
  raise TypeError(
196
- "Markets must be a string (ticker), list of strings (tickers) or"
197
- " a dict with {cat: List[str]} key-value pairs."
207
+ "Markets must be a string (ticker), list of strings (tickers),"
208
+ " a dict with {cat: List[str]} key-value pairs or dataframe."
198
209
  )
199
210
 
200
211
  @abstractmethod
@@ -179,7 +179,7 @@ class PandasDataReader(Library):
179
179
  )
180
180
 
181
181
  # list of fields
182
- market_fields_list = ["open", "high", "low", "close", "volume", "er"]
182
+ market_fields_list = ["open", "high", "low", "close", "volume", "close_adj", "er"]
183
183
  macro_fields_list = ["actual"]
184
184
 
185
185
  # fields dict
@@ -750,14 +750,12 @@ class WrangleData:
750
750
  if 'close' in self.data_resp.columns:
751
751
  self.data_resp['date'] = pd.to_datetime(self.data_resp.date, unit='ms')
752
752
  elif 'funding_rate' in self.data_resp.columns:
753
- self.data_resp['date'] = pd.to_datetime(self.data_resp.set_index('date').index). \
754
- floor('S').tz_localize(None)
753
+ self.data_resp['date'] = pd.to_datetime(self.data_resp.set_index('date').index).floor('s').tz_localize(None)
755
754
  # set index
756
755
  self.data_resp = self.data_resp.set_index('date').sort_index()
757
756
  # resample
758
757
  if 'funding_rate' in self.data_resp.columns and self.data_req.freq in ['d', 'w', 'm', 'q', 'y']:
759
- self.data_resp = (self.data_resp.funding_rate + 1).cumprod().resample(self.data_req.freq).last(). \
760
- diff().to_frame()
758
+ self.data_resp = ((self.data_resp.funding_rate + 1).resample(self.data_req.freq).prod() - 1).to_frame()
761
759
  # type conversion
762
760
  self.data_resp = self.data_resp.apply(pd.to_numeric, errors='coerce').convert_dtypes()
763
761
  # remove bad data
@@ -1,41 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="AutoImportSettings">
4
- <option name="autoReloadType" value="SELECTIVE" />
5
- </component>
6
- <component name="ChangeListManager">
7
- <list default="true" id="92febf09-7ac8-47ba-8a87-a519768464c7" name="Changes" comment="" />
8
- <option name="SHOW_DIALOG" value="false" />
9
- <option name="HIGHLIGHT_CONFLICTS" value="true" />
10
- <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
11
- <option name="LAST_RESOLUTION" value="IGNORE" />
12
- </component>
13
- <component name="Git.Settings">
14
- <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/../.." />
15
- </component>
16
- <component name="MarkdownSettingsMigration">
17
- <option name="stateVersion" value="1" />
18
- </component>
19
- <component name="ProjectId" id="2QibbOcBNNYUvHIEuh3raGrbChp" />
20
- <component name="ProjectViewState">
21
- <option name="hideEmptyMiddlePackages" value="true" />
22
- <option name="showLibraryContents" value="true" />
23
- </component>
24
- <component name="PropertiesComponent">{
25
- &quot;keyToString&quot;: {
26
- &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
27
- &quot;last_opened_file_path&quot;: &quot;/Users/nickl/projects/systamental/cryptodatapy/src/cryptodatapy&quot;
28
- }
29
- }</component>
30
- <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
31
- <component name="TaskManager">
32
- <task active="true" id="Default" summary="Default task">
33
- <changelist id="92febf09-7ac8-47ba-8a87-a519768464c7" name="Changes" comment="" />
34
- <created>1685839420372</created>
35
- <option name="number" value="Default" />
36
- <option name="presentableId" value="Default" />
37
- <updated>1685839420372</updated>
38
- </task>
39
- <servers />
40
- </component>
41
- </project>
@@ -1,2 +0,0 @@
1
- # Created by pytest automatically.
2
- *
@@ -1,4 +0,0 @@
1
- Signature: 8a477f597d28d172789f06886806bc55
2
- # This file is a cache directory tag created by pytest.
3
- # For information about cache directory tags, see:
4
- # https://bford.info/cachedir/spec.html
@@ -1,8 +0,0 @@
1
- # pytest cache directory #
2
-
3
- This directory contains data from the pytest's cache plugin,
4
- which provides the `--lf` and `--ff` options, as well as the `cache` fixture.
5
-
6
- **Do not** commit this to version control.
7
-
8
- See [the docs](https://docs.pytest.org/en/stable/how-to/cache.html) for more information.