dao-treasury 0.0.34__cp312-cp312-musllinux_1_2_x86_64.whl → 0.0.35__cp312-cp312-musllinux_1_2_x86_64.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.
@@ -55,7 +55,116 @@
55
55
  ]
56
56
  }
57
57
  },
58
- "overrides": []
58
+ "overrides": [
59
+ {
60
+ "matcher": {
61
+ "id": "byName",
62
+ "options": "Factory"
63
+ },
64
+ "properties": [
65
+ {
66
+ "id": "links",
67
+ "value": [
68
+ {
69
+ "targetBlank": true,
70
+ "title": "View on Etherscan",
71
+ "url": "https://etherscan.io/address/${__value.raw}"
72
+ }
73
+ ]
74
+ }
75
+ ]
76
+ },
77
+ {
78
+ "matcher": {
79
+ "id": "byName",
80
+ "options": "From"
81
+ },
82
+ "properties": [
83
+ {
84
+ "id": "links",
85
+ "value": [
86
+ {
87
+ "targetBlank": true,
88
+ "title": "View on Etherscan",
89
+ "url": "https://etherscan.io/address/${__value.raw}"
90
+ }
91
+ ]
92
+ }
93
+ ]
94
+ },
95
+ {
96
+ "matcher": {
97
+ "id": "byName",
98
+ "options": "To"
99
+ },
100
+ "properties": [
101
+ {
102
+ "id": "links",
103
+ "value": [
104
+ {
105
+ "targetBlank": true,
106
+ "title": "View on Etherscan",
107
+ "url": "https://etherscan.io/address/${__value.raw}"
108
+ }
109
+ ]
110
+ }
111
+ ]
112
+ },
113
+ {
114
+ "matcher": {
115
+ "id": "byName",
116
+ "options": "Start Block"
117
+ },
118
+ "properties": [
119
+ {
120
+ "id": "links",
121
+ "value": [
122
+ {
123
+ "targetBlank": true,
124
+ "title": "View on Etherscan",
125
+ "url": "https://etherscan.io/block/${__value.raw}"
126
+ }
127
+ ]
128
+ }
129
+ ]
130
+ },
131
+ {
132
+ "matcher": {
133
+ "id": "byName",
134
+ "options": "End Block"
135
+ },
136
+ "properties": [
137
+ {
138
+ "id": "links",
139
+ "value": [
140
+ {
141
+ "targetBlank": true,
142
+ "title": "View on Etherscan",
143
+ "url": "https://etherscan.io/block/${__value.raw}"
144
+ }
145
+ ]
146
+ }
147
+ ]
148
+ },
149
+ {
150
+ "matcher": {
151
+ "id": "byName",
152
+ "options": "Budget Request"
153
+ },
154
+ "properties": [
155
+ {
156
+ "id": "links",
157
+ "value": [
158
+ {
159
+ "targetBlank": true,
160
+ "title": "View Budget Request on Github",
161
+ "url": "https://github.com/yearn/budget/issues/${__value.raw}"
162
+ }
163
+ ]
164
+ }
165
+ ]
166
+ }
167
+ ]
59
168
  },
60
169
  "gridPos": {
61
170
  "h": 19,
@@ -83,9 +192,9 @@
83
192
  "type": "frser-sqlite-datasource",
84
193
  "uid": "P2D2EEF3E092AF52B"
85
194
  },
86
- "queryText": "select stream_id as \"Stream ID\", b.address as \"Factory\", start_block as \"Start Block\", end_block as \"End Block\", c.symbol as \"Token\", d.address as \"From\", e.address as \"To\", reason as \"Reason\", amount_per_second as \"Amount Per Second\", status as \"Status\", txgroup as \"TxGroup\"\nfrom streams a\nleft join addresses b on a.contract = b.address_id\nleft join tokens c on a.token = c.token_id\nleft join addresses d on a.from_address = d.address_id\nleft join addresses e on a.to_address = e.address_id",
195
+ "queryText": "SELECT\n stream_id as \"Stream ID\",\n b.address as \"Factory\",\n start_block as \"Start Block\",\n end_block as \"End Block\",\n c.symbol as \"Token\",\n d.address as \"From\",\n e.address as \"To\",\n reason as \"Reason\",\n CASE\n WHEN reason LIKE 'gh-%' AND\n -- ensures all after \"gh-\" is digits\n REPLACE(SUBSTR(reason, 4), '0', '') >= '' AND\n CAST(SUBSTR(reason, 4) AS INTEGER) || '' = SUBSTR(reason, 4)\n THEN CAST(SUBSTR(reason, 4) AS INTEGER)\n ELSE NULL\n END AS \"Budget Request\",\n amount_per_second as \"Amount Per Second\",\n status as \"Status\",\n txgroup as \"TxGroup\"\n\nFROM streams a\nLEFT JOIN addresses b ON a.contract = b.address_id\nLEFT JOIN tokens c ON a.token = c.token_id\nLEFT JOIN addresses d ON a.from_address = d.address_id\nLEFT JOIN addresses e ON a.to_address = e.address_id",
87
196
  "queryType": "table",
88
- "rawQueryText": "select stream_id as \"Stream ID\", b.address as \"Factory\", start_block as \"Start Block\", end_block as \"End Block\", c.symbol as \"Token\", d.address as \"From\", e.address as \"To\", reason as \"Reason\", amount_per_second as \"Amount Per Second\", status as \"Status\", txgroup as \"TxGroup\"\nfrom streams a\nleft join addresses b on a.contract = b.address_id\nleft join tokens c on a.token = c.token_id\nleft join addresses d on a.from_address = d.address_id\nleft join addresses e on a.to_address = e.address_id",
197
+ "rawQueryText": "SELECT\n stream_id as \"Stream ID\",\n b.address as \"Factory\",\n start_block as \"Start Block\",\n end_block as \"End Block\",\n c.symbol as \"Token\",\n d.address as \"From\",\n e.address as \"To\",\n reason as \"Reason\",\n CASE\n WHEN reason LIKE 'gh-%' AND\n -- ensures all after \"gh-\" is digits\n REPLACE(SUBSTR(reason, 4), '0', '') >= '' AND\n CAST(SUBSTR(reason, 4) AS INTEGER) || '' = SUBSTR(reason, 4)\n THEN CAST(SUBSTR(reason, 4) AS INTEGER)\n ELSE NULL\n END AS \"Budget Request\",\n amount_per_second as \"Amount Per Second\",\n status as \"Status\",\n txgroup as \"TxGroup\"\n\nFROM streams a\nLEFT JOIN addresses b ON a.contract = b.address_id\nLEFT JOIN tokens c ON a.token = c.token_id\nLEFT JOIN addresses d ON a.from_address = d.address_id\nLEFT JOIN addresses e ON a.to_address = e.address_id",
89
198
  "refId": "A",
90
199
  "timeColumns": [
91
200
  "time",
@@ -111,6 +220,6 @@
111
220
  "timezone": "",
112
221
  "title": "LlamaPay",
113
222
  "uid": "aa4d62a2-9e52-4acc-8f38-a96c77810aca",
114
- "version": 1,
223
+ "version": 2,
115
224
  "weekStart": ""
116
- }
225
+ }
@@ -130,7 +130,7 @@
130
130
  {
131
131
  "targetBlank": true,
132
132
  "title": "View on Etherscan",
133
- "url": "https://etherscan.io/address/${__data.fields.from}"
133
+ "url": "https://etherscan.io/address/${__data.fields.From}"
134
134
  }
135
135
  ]
136
136
  }
@@ -148,7 +148,7 @@
148
148
  {
149
149
  "targetBlank": true,
150
150
  "title": "View on Etherscan",
151
- "url": "https://etherscan.io/address/${__data.fields.to}"
151
+ "url": "https://etherscan.io/address/${__data.fields.To}"
152
152
  }
153
153
  ]
154
154
  }
dao_treasury/_wallet.py CHANGED
@@ -149,16 +149,18 @@ def load_wallets_from_yaml(path: Path) -> List[TreasuryWallet]:
149
149
  elif not isinstance(cfg, dict):
150
150
  raise ValueError(f"Invalid config for wallet {address}, expected mapping")
151
151
 
152
- # Extract optional networks list
153
- networks = cfg.get("networks", [])
154
- if not isinstance(networks, list) or not all(
155
- isinstance(n, int) for n in networks
156
- ):
157
- raise ValueError(
158
- f"'networks' for wallet {address} must be a list of integers, got {networks}"
159
- )
152
+ kwargs = {"address": address}
160
153
 
161
- kwargs = {"address": address, "networks": networks}
154
+ # Extract optional networks list
155
+ networks = cfg.get("networks")
156
+ if networks:
157
+ if not isinstance(networks, list) or not all(
158
+ isinstance(n, int) for n in networks
159
+ ):
160
+ raise ValueError(
161
+ f"'networks' for wallet {address} must be a list of integers, got {networks}"
162
+ )
163
+ kwargs["networks"] = networks
162
164
 
163
165
  # Parse start: timestamp universal, block under chain key
164
166
  start_cfg = cfg.get("start", {})
@@ -241,6 +243,8 @@ def load_wallets_from_yaml(path: Path) -> List[TreasuryWallet]:
241
243
  f"Invalid key: {key}. Valid options are 'block' or 'timestamp'."
242
244
  )
243
245
 
244
- wallets.append(TreasuryWallet(**kwargs))
246
+ wallet = TreasuryWallet(**kwargs)
247
+ print(f"initialized {wallet}")
248
+ wallets.append(wallet)
245
249
 
246
250
  return wallets
dao_treasury/db.py CHANGED
@@ -863,27 +863,48 @@ class TreasuryTx(DbEntity):
863
863
  },
864
864
  ) from e
865
865
  except InvalidOperation as e:
866
- logger.error(e)
867
- logger.error(
868
- {
869
- "chain": Chain.get_dbid(CHAINID),
870
- "block": entry.block_number,
871
- "timestamp": ts,
872
- "hash": entry.hash.hex(),
873
- "log_index": log_index,
874
- "from_address": from_address,
875
- "to_address": to_address,
876
- "token": token,
877
- "amount": entry.value,
878
- "price": entry.price,
879
- "value_usd": entry.value_usd,
880
- # TODO: nuke db and add this column
881
- # gas = gas,
882
- "gas_used": gas_used,
883
- "gas_price": gas_price,
884
- "txgroup": txgroup_dbid,
885
- }
886
- )
866
+ with db_session:
867
+ from_address_entity = Address[from_address]
868
+ to_address_entity = Address[to_address]
869
+ token_entity = Token[token]
870
+ logger.error(e)
871
+ logger.error(
872
+ {
873
+ "chain": Chain.get_dbid(CHAINID),
874
+ "block": entry.block_number,
875
+ "timestamp": ts,
876
+ "hash": entry.hash.hex(),
877
+ "log_index": log_index,
878
+ "from_address": {
879
+ "dbid": from_address,
880
+ "address": from_address_entity.address,
881
+ "nickname": from_address_entity.nickname,
882
+ },
883
+ "to_address": {
884
+ "dbid": to_address,
885
+ "address": to_address_entity.address,
886
+ "nickname": to_address_entity.nickname,
887
+ },
888
+ "token": {
889
+ "dbid": token,
890
+ "address": token_entity.address.address,
891
+ "name": token_entity.name,
892
+ "symbol": token_entity.symbol,
893
+ "decimals": token_entity.decimals,
894
+ },
895
+ "amount": entry.value,
896
+ "price": entry.price,
897
+ "value_usd": entry.value_usd,
898
+ # TODO: nuke db and add this column
899
+ # gas = gas,
900
+ "gas_used": gas_used,
901
+ "gas_price": gas_price,
902
+ "txgroup": {
903
+ "dbid": txgroup_dbid,
904
+ "fullname": TxGroup[txgroup_dbid].fullname,
905
+ },
906
+ }
907
+ )
887
908
  return None
888
909
  except TransactionIntegrityError as e:
889
910
  return _validate_integrity_error(entry, log_index)
@@ -3,9 +3,6 @@ networks:
3
3
  docker_eth_portfolio:
4
4
  external: true
5
5
 
6
- volumes:
7
- grafana_data: {}
8
-
9
6
  services:
10
7
  grafana:
11
8
  image: grafana/grafana:10.2.0
@@ -24,7 +21,6 @@ services:
24
21
  - GF_INSTALL_PLUGINS=volkovlabs-variable-panel,frser-sqlite-datasource
25
22
  volumes:
26
23
  - ~/.dao-treasury/:/app/dao-treasury-data
27
- - grafana_data:/var/lib/grafana
28
24
  - ./.grafana/provisioning/:/etc/grafana/provisioning/
29
25
  networks:
30
26
  - dao_treasury
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dao_treasury
3
- Version: 0.0.34
3
+ Version: 0.0.35
4
4
  Summary: Produce comprehensive financial reports for your on-chain org
5
5
  Classifier: Development Status :: 3 - Alpha
6
6
  Classifier: Intended Audience :: Developers
@@ -1,4 +1,4 @@
1
- bf2b4fe1f86ad2ea158b__mypyc.cpython-312-x86_64-linux-musl.so,sha256=o9--cWuMzVRQmRTKLbW4-hXKxA2IpQjpML64BSPvhPU,1557392
1
+ bf2b4fe1f86ad2ea158b__mypyc.cpython-312-x86_64-linux-musl.so,sha256=lgqfkmC-P3l_u4b5i56IjIuXZg2FB_33kGlaLPOv8kA,1558592
2
2
  dao_treasury/ENVIRONMENT_VARIABLES.py,sha256=yKvgOMUyU7-fF_-1zSMXML7ah7-r2f0oHrOV0p10LPc,195
3
3
  dao_treasury/__init__.py,sha256=ZQ0ZROQzSyJdYuQS1Z_VD0c7CiV8BWZcLTX66wO4slc,1004
4
4
  dao_treasury/_docker.cpython-312-x86_64-linux-musl.so,sha256=mYyhF79--IqY25gNVcsnlj29fVHOByCKwTSLPuAm7m8,17752
@@ -6,20 +6,20 @@ dao_treasury/_docker.py,sha256=7MnPA5xhRCM8Kqiogk87ltUVn8i_hpkNgO_hFC-7sPw,5430
6
6
  dao_treasury/_nicknames.cpython-312-x86_64-linux-musl.so,sha256=f6IPfgH2-yVbz_t0IOo820JCkLbdaadsi-b4364kiZ4,17768
7
7
  dao_treasury/_nicknames.py,sha256=deSpcDMtC_78C07tW0fZ_NzHIfHXsoHBVXfb_Dvlzsw,480
8
8
  dao_treasury/_wallet.cpython-312-x86_64-linux-musl.so,sha256=kqwRvoaGPO3HNbAzOeU6jo99nkbrGHh0F_BA46z_LXo,17752
9
- dao_treasury/_wallet.py,sha256=sIeUsyu9Y8MmOm-9bfwIEYjJ9Owgv1GXdTLZpcXMnCg,10338
9
+ dao_treasury/_wallet.py,sha256=epV8LVuwHlOzc9UkA66js7HfEiZBOSAGJMtWbDTzmjU,10462
10
10
  dao_treasury/constants.cpython-312-x86_64-linux-musl.so,sha256=wsN5MKS92Pe3Zo909vGHKs3DcdR1gPDRoUYkUqF57rM,17760
11
11
  dao_treasury/constants.py,sha256=IFg_CyVnfPhPjKyFX1Ix4QaB8ghbOI5QZGSy2TNsUSA,507
12
- dao_treasury/db.py,sha256=F-ZZQ21KCTCNusOgQADIMXl1mpuuI7g26nCV2Y7U8Yk,46136
13
- dao_treasury/docker-compose.yaml,sha256=Q6NPNT9iKkKOehDcKtxltvQjbxZuXmb51Tjwb1M21_I,1376
12
+ dao_treasury/db.py,sha256=7d1OIz82DStylR3kpRz2U2wVB5c3bdGVc0lp_4mEaxg,47259
13
+ dao_treasury/docker-compose.yaml,sha256=E6KE-IjWDisAM19PPDi4ApR6Eu7jmMTM6J9DhtgJvR4,1309
14
14
  dao_treasury/main.py,sha256=31EA10Fpaj9y-cRJPnNnvCBI38UM0848xlzn7A0BzC4,8047
15
15
  dao_treasury/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
16
  dao_treasury/treasury.py,sha256=7xLVQPqnDd3cexbYuF1opTjCiHgkPqHFOanRom8wiLE,6506
17
17
  dao_treasury/types.cpython-312-x86_64-linux-musl.so,sha256=JyfC1keXoWVEiIdHWkT9laX_QirI1jEJEMaOBuyfs0U,17744
18
18
  dao_treasury/types.py,sha256=dJDx0hYfDDL3slcUzRnCgrzFFsgCzoqg8uaTtLaT4kk,3685
19
19
  dao_treasury/.grafana/provisioning/dashboards/dashboards.yaml,sha256=tr6FBJeAAPX76db8E3qBBVWnq2-yrWDXDGuclMDg6dw,1277
20
- dao_treasury/.grafana/provisioning/dashboards/streams/LlamaPay.json,sha256=7bDAboObB2LsY6EicAL-DAC0HKIaSRVW6AbGzmy_xUI,3403
20
+ dao_treasury/.grafana/provisioning/dashboards/streams/LlamaPay.json,sha256=9OzlVtq0wRBDw3MhoaYLrT_hd7w_V3c_B7bYNmX4TJo,7023
21
21
  dao_treasury/.grafana/provisioning/dashboards/summary/Monthly.json,sha256=O6ghjzBf333baPjuMuUNguxF2v6rvPCiOu39sm1zxxY,6533
22
- dao_treasury/.grafana/provisioning/dashboards/transactions/Treasury Transactions.json,sha256=H6qng6k0RHholMaP9l3FODULAvQYpQUIf2ldNzYwq6w,13230
22
+ dao_treasury/.grafana/provisioning/dashboards/transactions/Treasury Transactions.json,sha256=gCWQTzawn5w9LVsxCi4SbobcVXK8IxXrZdk2syH4Ubg,13230
23
23
  dao_treasury/.grafana/provisioning/dashboards/treasury/Cashflow (Including Unsorted).json,sha256=4TpUdEmo40EneKldjeNxaiNLW2-IsIBRiy5jz-nqFdY,25664
24
24
  dao_treasury/.grafana/provisioning/dashboards/treasury/Cashflow.json,sha256=DOpO3leNVyUUQD5ou5FkdGCGc1xJmCRQjuzSUCvBnGU,18139
25
25
  dao_treasury/.grafana/provisioning/dashboards/treasury/Operating Cashflow.json,sha256=tKtUeBp9p-g21MOaFMPItUoXF_coHMM000yNipNB_RU,14352
@@ -45,7 +45,7 @@ dao_treasury/streams/__init__.cpython-312-x86_64-linux-musl.so,sha256=hdcFojfA4M
45
45
  dao_treasury/streams/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
46
  dao_treasury/streams/llamapay.cpython-312-x86_64-linux-musl.so,sha256=vfWsqB5_KbA4AsgEkSW55gvKqXZaXIkaGDwhf_6CblQ,17776
47
47
  dao_treasury/streams/llamapay.py,sha256=xc2sgmTV4EnQFFemea87QoUdIeGtO9OJQCwJG9c-SJQ,12774
48
- dao_treasury-0.0.34.dist-info/METADATA,sha256=C6oXk_ibHqhGAXDo7DxXsTyw_SrXFhmzezf-0KAVN8M,7030
49
- dao_treasury-0.0.34.dist-info/WHEEL,sha256=AwHYJA1Do1jwgPIoLQR4DiHSeYY_vU6Ht9Vljq5Yt_M,112
50
- dao_treasury-0.0.34.dist-info/top_level.txt,sha256=Gw-ri_26lZA_3hwhnOX48mffUbmBGr8NhtoQ0XoMeF8,41
51
- dao_treasury-0.0.34.dist-info/RECORD,,
48
+ dao_treasury-0.0.35.dist-info/METADATA,sha256=k_oTH84gRKdDT9hmU3hSe0Asw72MRkou5gbPJem-kqw,7030
49
+ dao_treasury-0.0.35.dist-info/WHEEL,sha256=AwHYJA1Do1jwgPIoLQR4DiHSeYY_vU6Ht9Vljq5Yt_M,112
50
+ dao_treasury-0.0.35.dist-info/top_level.txt,sha256=Gw-ri_26lZA_3hwhnOX48mffUbmBGr8NhtoQ0XoMeF8,41
51
+ dao_treasury-0.0.35.dist-info/RECORD,,