dao-scripts 1.2.2__py3-none-any.whl → 1.3.0.post1__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.
Files changed (27) hide show
  1. dao_analyzer/cache_scripts/_version.py +2 -2
  2. dao_analyzer/cache_scripts/aragon/runner.py +23 -26
  3. dao_analyzer/cache_scripts/argparser.py +14 -19
  4. dao_analyzer/cache_scripts/common/__init__.py +3 -1
  5. dao_analyzer/cache_scripts/common/api_requester.py +14 -13
  6. dao_analyzer/cache_scripts/common/blockscout.py +11 -13
  7. dao_analyzer/cache_scripts/common/common.py +55 -28
  8. dao_analyzer/cache_scripts/common/cryptocompare.py +4 -4
  9. dao_analyzer/cache_scripts/common/thegraph.py +203 -0
  10. dao_analyzer/cache_scripts/config.py +57 -15
  11. dao_analyzer/cache_scripts/daohaus/runner.py +20 -20
  12. dao_analyzer/cache_scripts/daostack/runner.py +25 -28
  13. dao_analyzer/cache_scripts/endpoints.json +14 -18
  14. dao_analyzer/cache_scripts/logging.py +98 -0
  15. dao_analyzer/cache_scripts/main.py +83 -77
  16. dao_analyzer/cache_scripts/metadata.py +6 -6
  17. dao_scripts-1.3.0.post1-py3.12-nspkg.pth +1 -0
  18. dao_scripts-1.3.0.post1.dist-info/LICENSE +674 -0
  19. {dao_scripts-1.2.2.dist-info → dao_scripts-1.3.0.post1.dist-info}/METADATA +42 -8
  20. dao_scripts-1.3.0.post1.dist-info/RECORD +32 -0
  21. {dao_scripts-1.2.2.dist-info → dao_scripts-1.3.0.post1.dist-info}/WHEEL +1 -1
  22. dao_analyzer/cache_scripts/common/graphql.py +0 -143
  23. dao_scripts-1.2.2-py3.11-nspkg.pth +0 -1
  24. dao_scripts-1.2.2.dist-info/RECORD +0 -30
  25. {dao_scripts-1.2.2.dist-info → dao_scripts-1.3.0.post1.dist-info}/entry_points.txt +0 -0
  26. {dao_scripts-1.2.2.dist-info → dao_scripts-1.3.0.post1.dist-info}/namespace_packages.txt +0 -0
  27. {dao_scripts-1.2.2.dist-info → dao_scripts-1.3.0.post1.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dao-scripts
3
- Version: 1.2.2
3
+ Version: 1.3.0.post1
4
4
  Summary: "A tool to download data to monitor DAO activity"
5
5
  Home-page: https://github.com/Grasia/dao-scripts
6
6
  Author: David Davó
@@ -13,15 +13,17 @@ Classifier: Environment :: Console
13
13
  Classifier: Intended Audience :: Science/Research
14
14
  Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
15
15
  Classifier: Programming Language :: Python :: 3
16
- Classifier: Programming Language :: Python :: 3.8
17
16
  Classifier: Programming Language :: Python :: 3.9
18
17
  Classifier: Programming Language :: Python :: 3.10
19
18
  Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
20
  Classifier: Topic :: Sociology
21
21
  Classifier: Typing :: Typed
22
22
  Classifier: Topic :: Utilities
23
- Requires-Python: >=3.8
23
+ Requires-Python: >=3.9
24
24
  Description-Content-Type: text/markdown
25
+ License-File: LICENSE
26
+ Requires-Dist: dynaconf >=3.0.0
25
27
  Requires-Dist: gql >=3.0.0a1
26
28
  Requires-Dist: numpy >=1.17.3
27
29
  Requires-Dist: pandas >=1.3.4
@@ -41,7 +43,22 @@ Requires-Dist: pandas-vet ; extra == 'dev'
41
43
  Requires-Dist: twine ; extra == 'dev'
42
44
  Provides-Extra: upload
43
45
  Requires-Dist: kaggle >=1.5.12 ; extra == 'upload'
44
- Requires-Dist: zenodo-client >=0.3.0 ; extra == 'upload'
46
+ Requires-Dist: zenodo-client >=0.3.4 ; extra == 'upload'
47
+
48
+ <p align="center">
49
+ <a href="https://pypi.org/project/dao-scripts/">
50
+ <img src="https://img.shields.io/pypi/v/dao-scripts" alt="PyPI">
51
+ </a>
52
+ <a href="https://doi.org/10.5281/zenodo.10938359">
53
+ <img src="https://zenodo.org/badge/DOI/10.5281/zenodo.10938359.svg" alt="DOI 10.5281/zenodo.10938359.svg">
54
+ </a>
55
+ <a href="./LICENSE">
56
+ <img src="https://img.shields.io/github/license/grasia/dao-scripts" alt="License">
57
+ </a>
58
+ <a href="https://www.kaggle.com/datasets/daviddavo/dao-analyzer">
59
+ <img src="https://img.shields.io/badge/Kaggle-20BEFF?logo=Kaggle&logoColor=white" alt="Kaggle">
60
+ </a>
61
+ </p>
45
62
 
46
63
  # DAO-Analyzer's cache-scripts
47
64
 
@@ -105,7 +122,7 @@ usage: daoa-cache-scripts [-h] [-V] [-p [{aragon,daohaus,daostack} ...]]
105
122
  [--ignore-errors | --no-ignore-errors] [-d] [-f] [-F] [--skip-daohaus-names]
106
123
  [-n {mainnet,arbitrum,xdai,polygon} [{mainnet,arbitrum,xdai,polygon} ...]]
107
124
  [-c COLLECTORS [COLLECTORS ...]] [--block-datetime BLOCK_DATETIME]
108
- [-D DATAWAREHOUSE] [--cc-api-key CC_API_KEY]
125
+ [-D DATAWAREHOUSE]
109
126
 
110
127
  Main script to populate dao-analyzer cache
111
128
 
@@ -128,8 +145,6 @@ options:
128
145
  Get data up to a block datetime (input in ISO format)
129
146
  -D DATAWAREHOUSE, --datawarehouse DATAWAREHOUSE
130
147
  Specifies the destination folder of the datawarehouse
131
- --cc-api-key CC_API_KEY
132
- Set the CryptoCompare API key (overrides environment variable)
133
148
  ```
134
149
 
135
150
  ### Getting only data from a platform
@@ -148,7 +163,26 @@ daoa-cache-scripts --networks xdai
148
163
 
149
164
  ## Acknowledgements
150
165
 
151
- DAO-Analyzer is created under the umbrella of two research projects: Chain Community, funded by the Spanish Ministry of Science and Innovation (RTI2018‐096820‐A‐I00) and led by Javier Arroyo and Samer Hassan; and P2P Models, funded by the European Research Council (ERC-2017-STG 625 grant no.: 75920), led by Samer Hassan.
166
+ <div align="center">
167
+ <img src="https://github.com/Grasia/dao-analyzer/blob/master/dao_analyzer/web/assets/logo-ministerio.png?raw=true"
168
+ alt="Logo Ministerio de Ciencia e Innovación. Gobierno de España"
169
+ style="max-height: 3em"
170
+ ><img src="https://github.com/Grasia/dao-analyzer/blob/master/dao_analyzer/web/assets/logo-erc.png?raw=true"
171
+ alt="Logotipo European Research Council"
172
+ style="max-height: 3em"
173
+ ><img src="https://github.com/Grasia/dao-analyzer/blob/master/dao_analyzer/web/assets/logo-grasia.png?raw=true"
174
+ alt="Logo GRASIA UCM"
175
+ style="max-height: 3em"
176
+ ><img src="https://github.com/Grasia/dao-analyzer/blob/master/dao_analyzer/web/assets/logo-ucm.png?raw=true"
177
+ alt="Logo Universidad Complutense de Madrid"
178
+ style="max-height: 3em"
179
+ >
180
+ </div>
181
+
182
+ DAO-Analyzer is created under the umbrella of multiple research projects:
183
+ - Chain Community, funded by the Spanish Ministry of Science and Innovation ([RTI2018‐096820‐A‐I00](https://produccioncientifica.ucm.es/proyectos/48103/detalle)) and led by Javier Arroyo and Samer Hassan
184
+ - P2P Models, funded by the European Research Council (ERC-2017-STG 625 grant no.: 75920), led by Samer Hassan.
185
+ - DAOapplications, funded by the Spanish Ministry of Science and Innovation ([PID2021-127956OB-I00](https://produccioncientifica.ucm.es/proyectos/551171/detalle)) and led by Javier Arroyo, Samer Hassan and maria Cruz Valiente
152
186
 
153
187
  ## Cite as
154
188
 
@@ -0,0 +1,32 @@
1
+ dao_scripts-1.3.0.post1-py3.12-nspkg.pth,sha256=_0DzrHlnOxaQL5l1mMdHT1BtXZwXuB6MitMF5phpOhk,497
2
+ dao_analyzer/cache_scripts/__init__.py,sha256=Urg-J2hvyzGcgE2Z-ba71XpcHi1YlPZgex86OFSd_0A,116
3
+ dao_analyzer/cache_scripts/__main__.py,sha256=aNVhgUXjB4rzTefrX3d6dKeLOX3G_Ezs82pI8QCpwx0,61
4
+ dao_analyzer/cache_scripts/_version.py,sha256=fEmRqAxGWPRYP3Rhyj3ZTwD-sjgPHsJH8jzhage354k,417
5
+ dao_analyzer/cache_scripts/argparser.py,sha256=uOBVdRxmgR8H0dZMu2AQyvro6WvkZFKUrf7vJ6Mvw48,3574
6
+ dao_analyzer/cache_scripts/config.py,sha256=6Ooh-SpTtNCHcl2sE637-XMCCCNZBmATJRyD_eguWr0,2180
7
+ dao_analyzer/cache_scripts/endpoints.json,sha256=UR8NiR6S0MgYHn3m-SVDY2YIWyPdSkMEK6_4TLk2T2U,1276
8
+ dao_analyzer/cache_scripts/logging.py,sha256=9sAqZUk_Qnmlf9Ko60C4O__Ve7Tj4xefzQ7cV07aQ70,3196
9
+ dao_analyzer/cache_scripts/main.py,sha256=ao1Zz5nB4_4koXTqSTJMyWmXbCFBp0vpnp0f0M2u9Ms,5665
10
+ dao_analyzer/cache_scripts/metadata.py,sha256=oZ5xLkWClt1YxBAvbsDhciZkyHJ1Vcuic7guFy2ks6w,4211
11
+ dao_analyzer/cache_scripts/aragon/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
+ dao_analyzer/cache_scripts/aragon/dao_names.json,sha256=ASDOJYTsgHELJ7g1z9NccVROYYxsHQaLy9V-vrfr_Ec,7412
13
+ dao_analyzer/cache_scripts/aragon/runner.py,sha256=RQX9KkOm268vrY_jgMHT_RthkrncbXhEn9Fcss8pJs4,8163
14
+ dao_analyzer/cache_scripts/common/__init__.py,sha256=R_rWbKcp-Htw_Y_gt83Y6_N9KQC5kAHyMqb0Dk25HkU,342
15
+ dao_analyzer/cache_scripts/common/api_requester.py,sha256=objbyqKVVEfNFmffds3BC2Nc3Bjk6Gip-9EUGScm7JY,8145
16
+ dao_analyzer/cache_scripts/common/blockscout.py,sha256=8-Xz7yhG8jtZsWBA2Ik3T3xqzDB0Bw89-EI8vcIB8Yk,5041
17
+ dao_analyzer/cache_scripts/common/common.py,sha256=GfdRk69jMXdzwenR55ltkEOMVy9Wio7QFY8bxgEP6F8,10763
18
+ dao_analyzer/cache_scripts/common/cryptocompare.py,sha256=jaHdJ-X_AXEUdVRMVtyK6xwHNJdhTs2Ps44QMD0iuIY,2203
19
+ dao_analyzer/cache_scripts/common/thegraph.py,sha256=iiAfpM3791o4iIzHwF_n7GYBn5G7oAV5t624jMA2rCI,6850
20
+ dao_analyzer/cache_scripts/daohaus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
+ dao_analyzer/cache_scripts/daohaus/runner.py,sha256=nQ7YN_Fbfx0KsHkq47hShwTS82jbo285x60Z-31vj8M,7549
22
+ dao_analyzer/cache_scripts/daostack/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
+ dao_analyzer/cache_scripts/daostack/runner.py,sha256=emjzhZzGMTRGHKljll_lX-uMsGwaIsZBSi4jV1Lsh8Y,10144
24
+ dao_analyzer/cache_scripts/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
+ dao_analyzer/cache_scripts/utils/uploadDataWarehouse.py,sha256=xEzUr-XYcf6DICZkarHEwGSDGLHSz2eXZmRER8Fj1OU,4027
26
+ dao_scripts-1.3.0.post1.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
27
+ dao_scripts-1.3.0.post1.dist-info/METADATA,sha256=2Z62brcn6FDUuOzhtlEqSCB-fc52XuIi3gS_CqVGUTs,8199
28
+ dao_scripts-1.3.0.post1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
29
+ dao_scripts-1.3.0.post1.dist-info/entry_points.txt,sha256=dHhgA8pcQ2YbIlMuqPPSh7fiQkfHE8ioFPUcbBvXWDc,207
30
+ dao_scripts-1.3.0.post1.dist-info/namespace_packages.txt,sha256=gbsNupMgtHQXOyBinbeLMo06f278s8My_9N-CrZh3Bk,13
31
+ dao_scripts-1.3.0.post1.dist-info/top_level.txt,sha256=gbsNupMgtHQXOyBinbeLMo06f278s8My_9N-CrZh3Bk,13
32
+ dao_scripts-1.3.0.post1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.42.0)
2
+ Generator: bdist_wheel (0.43.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,143 +0,0 @@
1
- import logging
2
- from typing import Callable, List, Dict
3
- from abc import ABC, abstractmethod
4
-
5
- import pandas as pd
6
-
7
- from gql.dsl import DSLField
8
-
9
- from .common import ENDPOINTS, NetworkCollector, NetworkRunner, Runner, UpdatableCollector
10
- from .api_requester import GQLRequester
11
- from ..metadata import Block
12
-
13
- def add_where(d, **kwargs):
14
- """
15
- Adds the values specified in kwargs to the where inside d
16
- Example: `**add_where(kwargs, deleted=False)`
17
- """
18
- if "where" in d:
19
- d["where"] |= kwargs
20
- else:
21
- d["where"] = kwargs
22
-
23
- return d
24
-
25
- def partial_query(q, w) -> DSLField:
26
- def wrapper(**kwargs):
27
- return q(**add_where(kwargs, **w))
28
- return wrapper
29
-
30
- def checkSubgraphHealth(endpoint: str, network: str = None):
31
- subgraphName = '/'.join(endpoint.split('/')[-2:])
32
-
33
- requester = GQLRequester(endpoint=ENDPOINTS['_theGraph']['index-node'], introspection=False)
34
- q = f"""
35
- {{
36
- indexingStatusForCurrentVersion(subgraphName: "{subgraphName}") {{
37
- health,
38
- synced,
39
- node,
40
- chains {{
41
- network
42
- }}
43
- }}
44
- }}
45
- """
46
-
47
- r = requester.request_single(q)
48
-
49
- if not r['synced']:
50
- logging.info(f"Subgraph {endpoint} is not synced")
51
-
52
- if r['health'].lower() != 'healthy':
53
- logging.error(f"Subgraph {endpoint} is not healthy")
54
- return False
55
-
56
- subgraph_network = r['chains'][0]['network']
57
- if network and subgraph_network != network:
58
- logging.error(f"Subgraph {endpoint} expected network {network} but got {subgraph_network}")
59
- return False
60
-
61
- return True
62
-
63
- class GraphQLCollector(NetworkCollector, UpdatableCollector):
64
- def __init__(self, name: str, runner: Runner, endpoint: str, result_key: str = None, index: str = None, network: str='mainnet', pbar_enabled: bool=True):
65
- super().__init__(name, runner, network)
66
- self.endpoint: str = endpoint
67
- self.index = index if index else 'id'
68
- self.result_key = result_key if result_key else name
69
- self.postprocessors: Callable = []
70
-
71
- self.requester: GQLRequester = GQLRequester(endpoint=self.endpoint, pbar_enabled=pbar_enabled)
72
-
73
- def postprocessor(self, f: Callable[[pd.DataFrame], pd.DataFrame]):
74
- self.postprocessors.append(f)
75
- return f
76
-
77
- @property
78
- def schema(self):
79
- return self.requester.get_schema()
80
-
81
- @abstractmethod
82
- def query(self, **kwargs) -> DSLField:
83
- raise NotImplementedError
84
-
85
- @property
86
- def df(self) -> pd.DataFrame:
87
- if not self.data_path.is_file():
88
- return pd.DataFrame()
89
-
90
- df = pd.read_feather(self.data_path)
91
- if self.network:
92
- df = df[df['network'] == self.network]
93
-
94
- return df
95
-
96
- def transform_to_df(self, data: List[Dict], skip_post: bool=False) -> pd.DataFrame:
97
- df = pd.DataFrame.from_dict(pd.json_normalize(data))
98
-
99
- # For compatibility reasons we change from . to snake case
100
- def dotsToSnakeCase(str: str) -> str:
101
- splitted = str.split('.')
102
- return splitted[0] + ''.join(x[0].upper()+x[1:] for x in splitted[1:])
103
-
104
- df = df.rename(columns=dotsToSnakeCase)
105
- df['network'] = self.network
106
-
107
- if not skip_post:
108
- for post in self.postprocessors:
109
- logging.debug(f"Running postprocessor {post.__name__}")
110
- df = post(df)
111
- if df is None:
112
- raise ValueError(f"The postprocessor {post.__name__} returned None")
113
-
114
- return df
115
-
116
- def verify(self) -> bool:
117
- # Checking if the queryBuilder doesn't raise any errors
118
- self.query()
119
-
120
- # Checking the health of the subgraph
121
- return checkSubgraphHealth(self.endpoint)
122
-
123
- def query_cb(self, prev_block: Block = None):
124
- if prev_block:
125
- return partial_query(self.query, {'_change_block': {'number_gte': prev_block.number}})
126
- else:
127
- return self.query
128
-
129
- def run(self, force=False, block: Block = None, prev_block: Block = None):
130
- logging.info(f"Running GraphQLCollector with block: {block}, prev_block: {prev_block}")
131
- if block is None:
132
- block = Block()
133
- if prev_block is None or force:
134
- prev_block = Block()
135
-
136
- data = self.requester.n_requests(query=self.query_cb(prev_block), block_hash=block.id)
137
-
138
- # transform to df
139
- df: pd.DataFrame = self.transform_to_df(data)
140
- self._update_data(df, force)
141
-
142
- class GraphQLRunner(NetworkRunner, ABC):
143
- pass
@@ -1 +0,0 @@
1
- import sys, types, os;has_mfs = sys.version_info > (3, 5);p = os.path.join(sys._getframe(1).f_locals['sitedir'], *('dao_analyzer',));importlib = has_mfs and __import__('importlib.util');has_mfs and __import__('importlib.machinery');m = has_mfs and sys.modules.setdefault('dao_analyzer', importlib.util.module_from_spec(importlib.machinery.PathFinder.find_spec('dao_analyzer', [os.path.dirname(p)])));m = m or sys.modules.setdefault('dao_analyzer', types.ModuleType('dao_analyzer'));mp = (m or []) and m.__dict__.setdefault('__path__',[]);(p not in mp) and mp.append(p)
@@ -1,30 +0,0 @@
1
- dao_scripts-1.2.2-py3.11-nspkg.pth,sha256=28DIlG9RX4mQHVYgU9aTDTPJ6dSaHsBAQR5SH8OXwI0,569
2
- dao_analyzer/cache_scripts/__init__.py,sha256=Urg-J2hvyzGcgE2Z-ba71XpcHi1YlPZgex86OFSd_0A,116
3
- dao_analyzer/cache_scripts/__main__.py,sha256=aNVhgUXjB4rzTefrX3d6dKeLOX3G_Ezs82pI8QCpwx0,61
4
- dao_analyzer/cache_scripts/_version.py,sha256=XEVwqOPlIChKtEnSO5v_SvghWXnn9WeQSoJ436w3v9Y,411
5
- dao_analyzer/cache_scripts/argparser.py,sha256=sAeLeBmlqdOIuOwhNMlaeIjD7yNAd8EBsnvUKzR1uOI,3617
6
- dao_analyzer/cache_scripts/config.py,sha256=iFPMg0KErqIVoOZ1zS11vF8oDR2RgmtWq4b0vv2nfKM,744
7
- dao_analyzer/cache_scripts/endpoints.json,sha256=ZPfq0mFUdpdqLlsHSXb7gM38P9mPipCxGCmiVelxsa0,1923
8
- dao_analyzer/cache_scripts/main.py,sha256=zUW-F-7vRELRL9zEzBJDahgnG9S9SiyixHJVWiup9bk,5256
9
- dao_analyzer/cache_scripts/metadata.py,sha256=pJQa7KBszz-gmacLssT81ZRz4IWmVVnM3OQYbtbR82k,4152
10
- dao_analyzer/cache_scripts/aragon/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
- dao_analyzer/cache_scripts/aragon/dao_names.json,sha256=ASDOJYTsgHELJ7g1z9NccVROYYxsHQaLy9V-vrfr_Ec,7412
12
- dao_analyzer/cache_scripts/aragon/runner.py,sha256=OcgzgQT2XyjK_xrGUg9BVX-HykytDBuI9X01R3VF5cc,8421
13
- dao_analyzer/cache_scripts/common/__init__.py,sha256=PNagNaHvK7vvF3n1tnCjnA_yR_sCByZ2jU7HtBmSiYk,264
14
- dao_analyzer/cache_scripts/common/api_requester.py,sha256=gb_GN9-ejn_0nb_MdBXozq16_uJ4EBLqsHuR_oL17mQ,7996
15
- dao_analyzer/cache_scripts/common/blockscout.py,sha256=78rofwjP-RHzoxdyi2NXQ4TAYjTWNQavL3rCd6O6O0I,5030
16
- dao_analyzer/cache_scripts/common/common.py,sha256=wVjypZtfBQRGejeLaVubfaIludP39Ee2Q-th84Dcx1Q,9488
17
- dao_analyzer/cache_scripts/common/cryptocompare.py,sha256=2eXyo5barCNqZty8dkFYeW7j3mXHlXJmqGeumR-Nq8A,2224
18
- dao_analyzer/cache_scripts/common/graphql.py,sha256=yiOqbrD7jCUca8JDzcQTN4gR_6DtpwEJW_XfIkP7faY,4585
19
- dao_analyzer/cache_scripts/daohaus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
- dao_analyzer/cache_scripts/daohaus/runner.py,sha256=pkg-2P1eCRM9y9m_yCvL1VZyOGQmlgEiFNDOTYvQ5qg,7653
21
- dao_analyzer/cache_scripts/daostack/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
- dao_analyzer/cache_scripts/daostack/runner.py,sha256=7hR7Mi7_kRcB15rLVR6Qqp4bT64-tZZVRPWAT8U9Ee4,10279
23
- dao_analyzer/cache_scripts/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
- dao_analyzer/cache_scripts/utils/uploadDataWarehouse.py,sha256=xEzUr-XYcf6DICZkarHEwGSDGLHSz2eXZmRER8Fj1OU,4027
25
- dao_scripts-1.2.2.dist-info/METADATA,sha256=x8LpVRwjv8fe4NkWpIaKoAAmQt-PPIcjGeYVhXmYOYs,6552
26
- dao_scripts-1.2.2.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
27
- dao_scripts-1.2.2.dist-info/entry_points.txt,sha256=dHhgA8pcQ2YbIlMuqPPSh7fiQkfHE8ioFPUcbBvXWDc,207
28
- dao_scripts-1.2.2.dist-info/namespace_packages.txt,sha256=gbsNupMgtHQXOyBinbeLMo06f278s8My_9N-CrZh3Bk,13
29
- dao_scripts-1.2.2.dist-info/top_level.txt,sha256=gbsNupMgtHQXOyBinbeLMo06f278s8My_9N-CrZh3Bk,13
30
- dao_scripts-1.2.2.dist-info/RECORD,,