dao-treasury 0.0.29__cp310-cp310-macosx_11_0_arm64.whl → 0.0.30__cp310-cp310-macosx_11_0_arm64.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.
- 3619d39567c7fe330ece__mypyc.cpython-310-darwin.so +0 -0
- dao_treasury/_docker.cpython-310-darwin.so +0 -0
- dao_treasury/_docker.py +23 -18
- dao_treasury/_nicknames.cpython-310-darwin.so +0 -0
- dao_treasury/_wallet.cpython-310-darwin.so +0 -0
- dao_treasury/constants.cpython-310-darwin.so +0 -0
- dao_treasury/docker-compose.yaml +1 -0
- dao_treasury/main.py +27 -3
- dao_treasury/sorting/__init__.cpython-310-darwin.so +0 -0
- dao_treasury/sorting/_matchers.cpython-310-darwin.so +0 -0
- dao_treasury/sorting/_rules.cpython-310-darwin.so +0 -0
- dao_treasury/sorting/factory.cpython-310-darwin.so +0 -0
- dao_treasury/sorting/rule.cpython-310-darwin.so +0 -0
- dao_treasury/sorting/rule.py +5 -0
- dao_treasury/treasury.py +3 -0
- dao_treasury/types.cpython-310-darwin.so +0 -0
- {dao_treasury-0.0.29.dist-info → dao_treasury-0.0.30.dist-info}/METADATA +37 -5
- dao_treasury-0.0.30.dist-info/RECORD +38 -0
- dao_treasury-0.0.30.dist-info/top_level.txt +2 -0
- 8d7637a0eb7617042369__mypyc.cpython-310-darwin.so +0 -0
- dao_treasury-0.0.29.dist-info/RECORD +0 -37
- dao_treasury-0.0.29.dist-info/top_level.txt +0 -2
- {dao_treasury-0.0.29.dist-info → dao_treasury-0.0.30.dist-info}/WHEEL +0 -0
Binary file
|
Binary file
|
dao_treasury/_docker.py
CHANGED
@@ -1,33 +1,38 @@
|
|
1
1
|
"""This module contains utilities for managing dao-treasury's docker containers"""
|
2
2
|
|
3
3
|
import logging
|
4
|
-
import
|
4
|
+
from importlib import resources
|
5
5
|
import subprocess
|
6
6
|
from functools import wraps
|
7
|
-
from typing import Any, Callable, Coroutine, Final, Iterable, Tuple, TypeVar
|
7
|
+
from typing import Any, Callable, Coroutine, Final, Iterable, Tuple, TypeVar, List
|
8
8
|
|
9
9
|
import eth_portfolio_scripts.docker
|
10
10
|
from typing_extensions import ParamSpec
|
11
11
|
|
12
12
|
logger: Final = logging.getLogger(__name__)
|
13
13
|
|
14
|
-
compose_file: Final =
|
15
|
-
|
14
|
+
compose_file: Final = str(
|
15
|
+
resources.files("dao_treasury").joinpath("docker-compose.yaml")
|
16
16
|
)
|
17
17
|
"""The path of dao-treasury's docker-compose.yaml file on your machine"""
|
18
18
|
|
19
19
|
|
20
|
-
def up() -> None:
|
21
|
-
"""Build and start
|
20
|
+
def up(*services: str) -> None:
|
21
|
+
"""Build and start the specified containers defined in the compose file.
|
22
|
+
|
23
|
+
Args:
|
24
|
+
services: service names to bring up.
|
22
25
|
|
23
26
|
This function first builds the Docker services by invoking
|
24
|
-
:func:`build` and then starts
|
27
|
+
:func:`build` and then starts the specified services in detached mode using
|
25
28
|
Docker Compose. If Docker Compose is not available, it falls back
|
26
29
|
to the legacy ``docker-compose`` command.
|
27
30
|
|
28
31
|
Examples:
|
32
|
+
>>> up('grafana')
|
33
|
+
starting the grafana container
|
29
34
|
>>> up()
|
30
|
-
starting
|
35
|
+
starting all containers (grafana and renderer)
|
31
36
|
|
32
37
|
See Also:
|
33
38
|
:func:`build`
|
@@ -35,10 +40,10 @@ def up() -> None:
|
|
35
40
|
:func:`_exec_command`
|
36
41
|
"""
|
37
42
|
# eth-portfolio containers must be started first so dao-treasury can attach to the eth-portfolio docker network
|
38
|
-
eth_portfolio_scripts.docker.up()
|
39
|
-
build()
|
40
|
-
print("starting the grafana
|
41
|
-
_exec_command(["up", "-d"])
|
43
|
+
eth_portfolio_scripts.docker.up("victoria-metrics")
|
44
|
+
build(*services)
|
45
|
+
print(f"starting the {', '.join(services) if services else 'grafana'} container(s)")
|
46
|
+
_exec_command(["up", "-d", *services])
|
42
47
|
|
43
48
|
|
44
49
|
def down() -> None:
|
@@ -57,7 +62,7 @@ def down() -> None:
|
|
57
62
|
_exec_command(["down"])
|
58
63
|
|
59
64
|
|
60
|
-
def build() -> None:
|
65
|
+
def build(*services: str) -> None:
|
61
66
|
"""Build Docker images for Grafana containers.
|
62
67
|
|
63
68
|
This function builds all services defined in the Docker Compose
|
@@ -73,7 +78,7 @@ def build() -> None:
|
|
73
78
|
:func:`_exec_command`
|
74
79
|
"""
|
75
80
|
print("building the grafana containers")
|
76
|
-
_exec_command(["build"])
|
81
|
+
_exec_command(["build", *services])
|
77
82
|
|
78
83
|
|
79
84
|
_P = ParamSpec("_P")
|
@@ -118,20 +123,20 @@ def ensure_containers(
|
|
118
123
|
# signal.signal(signal.SIGINT, down)
|
119
124
|
|
120
125
|
# start Grafana containers
|
121
|
-
up()
|
126
|
+
up("grafana")
|
122
127
|
|
123
128
|
try:
|
124
129
|
# attempt to run `fn`
|
125
|
-
await fn(*args, **kwargs)
|
130
|
+
return await fn(*args, **kwargs)
|
126
131
|
finally:
|
127
132
|
# stop and remove containers
|
128
133
|
# down()
|
129
|
-
|
134
|
+
pass
|
130
135
|
|
131
136
|
return compose_wrap
|
132
137
|
|
133
138
|
|
134
|
-
def _exec_command(command:
|
139
|
+
def _exec_command(command: List[str], *, compose_options: Tuple[str, ...] = ()) -> None:
|
135
140
|
"""Execute a Docker Compose command with system checks and fallback.
|
136
141
|
|
137
142
|
This internal function ensures that Docker and Docker Compose
|
Binary file
|
Binary file
|
Binary file
|
dao_treasury/docker-compose.yaml
CHANGED
@@ -15,6 +15,7 @@ services:
|
|
15
15
|
- GF_SECURITY_ADMIN_USER=${GF_SECURITY_ADMIN_USER:-admin}
|
16
16
|
- GF_SECURITY_ADMIN_PASSWORD=${GF_SECURITY_ADMIN_PASSWORD:-admin}
|
17
17
|
- GF_AUTH_ANONYMOUS_ENABLED=true
|
18
|
+
- GF_AUTH_ANONYMOUS_ORG_ROLE=Viewer
|
18
19
|
- GF_DASHBOARDS_DEFAULT_HOME_DASHBOARD_PATH=/etc/grafana/provisioning/dashboards/summary/Monthly.json
|
19
20
|
- GF_SERVER_ROOT_URL
|
20
21
|
- GF_RENDERING_SERVER_URL=http://renderer:8091/render
|
dao_treasury/main.py
CHANGED
@@ -28,6 +28,7 @@ from pathlib import Path
|
|
28
28
|
|
29
29
|
import brownie
|
30
30
|
import yaml
|
31
|
+
from a_sync import create_task
|
31
32
|
from dao_treasury._wallet import load_wallets_from_yaml
|
32
33
|
from eth_portfolio_scripts.balances import export_balances
|
33
34
|
from eth_typing import BlockNumber
|
@@ -107,6 +108,11 @@ parser.add_argument(
|
|
107
108
|
help="Port for the DAO Treasury dashboard web interface. Default: 3000",
|
108
109
|
default=3000,
|
109
110
|
)
|
111
|
+
parser.add_argument(
|
112
|
+
"--start-renderer",
|
113
|
+
action="store_true",
|
114
|
+
help="If set, the Grafana renderer container will be started for dashboard image export. By default, only the grafana container is started.",
|
115
|
+
)
|
110
116
|
parser.add_argument(
|
111
117
|
"--renderer-port",
|
112
118
|
type=int,
|
@@ -154,6 +160,7 @@ async def export(args) -> None:
|
|
154
160
|
daemon: Ignored flag.
|
155
161
|
grafana_port: Port for Grafana (sets DAO_TREASURY_GRAFANA_PORT).
|
156
162
|
renderer_port: Port for renderer (sets DAO_TREASURY_RENDERER_PORT).
|
163
|
+
start_renderer: If True, start renderer; otherwise, only start grafana.
|
157
164
|
|
158
165
|
Example:
|
159
166
|
In code::
|
@@ -165,6 +172,8 @@ async def export(args) -> None:
|
|
165
172
|
:func:`dao_treasury._docker.down`,
|
166
173
|
:class:`dao_treasury.Treasury.populate_db`
|
167
174
|
"""
|
175
|
+
import eth_portfolio_scripts.docker
|
176
|
+
|
168
177
|
from dao_treasury import _docker, constants, db, Treasury
|
169
178
|
|
170
179
|
wallets = getattr(args, "wallet", None)
|
@@ -195,7 +204,12 @@ async def export(args) -> None:
|
|
195
204
|
db.Address.set_nickname(address, nickname)
|
196
205
|
|
197
206
|
treasury = Treasury(wallets, args.sort_rules, asynchronous=True)
|
198
|
-
|
207
|
+
|
208
|
+
# Start only the requested containers
|
209
|
+
if args.start_renderer is True:
|
210
|
+
_docker.up()
|
211
|
+
else:
|
212
|
+
_docker.up("grafana")
|
199
213
|
|
200
214
|
# eth-portfolio needs this present
|
201
215
|
# TODO: we need to update eth-portfolio to honor wallet join and exit times
|
@@ -209,11 +223,21 @@ async def export(args) -> None:
|
|
209
223
|
# TODO: make this user configurable? would require some dynamic grafana dashboard files
|
210
224
|
args.label = "Treasury"
|
211
225
|
|
212
|
-
|
213
|
-
|
226
|
+
export_task = create_task(
|
227
|
+
asyncio.gather(
|
214
228
|
export_balances(args),
|
215
229
|
treasury.populate_db(BlockNumber(0), brownie.chain.height),
|
216
230
|
)
|
231
|
+
)
|
232
|
+
|
233
|
+
await asyncio.sleep(1)
|
234
|
+
|
235
|
+
# we don't need these containers since dao-treasury uses its own.
|
236
|
+
eth_portfolio_scripts.docker.stop("grafana")
|
237
|
+
eth_portfolio_scripts.docker.stop("renderer")
|
238
|
+
|
239
|
+
try:
|
240
|
+
await export_task
|
217
241
|
finally:
|
218
242
|
_docker.down()
|
219
243
|
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
dao_treasury/sorting/rule.py
CHANGED
@@ -31,6 +31,7 @@ See Also:
|
|
31
31
|
|
32
32
|
from collections import defaultdict
|
33
33
|
from dataclasses import dataclass
|
34
|
+
from logging import getLogger
|
34
35
|
from typing import (
|
35
36
|
TYPE_CHECKING,
|
36
37
|
DefaultDict,
|
@@ -53,6 +54,9 @@ if TYPE_CHECKING:
|
|
53
54
|
from dao_treasury.db import TreasuryTx
|
54
55
|
|
55
56
|
|
57
|
+
logger: Final = getLogger(__name__)
|
58
|
+
_log_debug: Final = logger.debug
|
59
|
+
|
56
60
|
SORT_RULES: DefaultDict[Type[SortRule], List[SortRule]] = defaultdict(list)
|
57
61
|
"""Mapping from sort rule classes to lists of instantiated rules, in creation order per class.
|
58
62
|
|
@@ -214,6 +218,7 @@ class _SortRule:
|
|
214
218
|
getattr(tx, matcher) == getattr(self, matcher) for matcher in matchers
|
215
219
|
)
|
216
220
|
|
221
|
+
_log_debug("checking %s for %s", tx, self.func)
|
217
222
|
match = self.func(tx) # type: ignore [misc]
|
218
223
|
return match if isinstance(match, bool) else await match
|
219
224
|
|
dao_treasury/treasury.py
CHANGED
Binary file
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: dao_treasury
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.30
|
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
|
@@ -14,7 +14,7 @@ Classifier: Operating System :: OS Independent
|
|
14
14
|
Classifier: Topic :: Software Development :: Libraries
|
15
15
|
Requires-Python: >=3.10,<3.13
|
16
16
|
Description-Content-Type: text/markdown
|
17
|
-
Requires-Dist: eth-portfolio-temp<0.1,>=0.0.
|
17
|
+
Requires-Dist: eth-portfolio-temp<0.1,>=0.0.23.dev0
|
18
18
|
Dynamic: classifier
|
19
19
|
Dynamic: description
|
20
20
|
Dynamic: description-content-type
|
@@ -38,7 +38,7 @@ DAO Treasury is a comprehensive financial reporting and treasury management solu
|
|
38
38
|
|
39
39
|
## Prerequisites
|
40
40
|
|
41
|
-
- First, you will need to bring your own archive node. This can be one you run yourself, or one from one of the common providers (Tenderly, Alchemy, QuickNode, etc.)
|
41
|
+
- First, you will need to bring your own archive node. This can be one you run yourself, or one from one of the common providers (Tenderly, Alchemy, QuickNode, etc.). Your archive node must have tracing enabled (free-tier Alchemy nodes do not support this option).
|
42
42
|
- You must configure a [brownie network](https://eth-brownie.readthedocs.io/en/stable/network-management.html) to use your RPC.
|
43
43
|
- You will need an auth token for [Etherscan](https://etherscan.io/)'s API. Follow their [guide](https://docs.etherscan.io/etherscan-v2/getting-an-api-key) to get your key, and set env var `ETHERSCAN_TOKEN` with its value.
|
44
44
|
- You'll also need [Docker](https://www.docker.com/get-started/) installed on your system. If on MacOS, you will need to leave Docker Desktop open while Yearn Treasury is running.
|
@@ -68,13 +68,43 @@ poetry run dao-treasury run --wallet 0x123 --network mainnet --interval 12h
|
|
68
68
|
- `--interval`: The time interval between each data snapshot (default: 12h)
|
69
69
|
- `--daemon`: Run the export process in the background (default: False) (NOTE: currently unsupported)
|
70
70
|
- `--grafana-port`: Set the port for the Grafana dashboard where you can view data (default: 3004)
|
71
|
-
- `--renderer-port`: Set the port for the report rendering service (default:
|
71
|
+
- `--renderer-port`: Set the port for the report rendering service (default: 8091)
|
72
72
|
- `--victoria-port`: Set the port for the Victoria metrics reporting endpoint (default: 8430)
|
73
|
+
- `--start-renderer`: If set, both the Grafana and renderer containers will be started for dashboard image export. By default, only the grafana container is started.
|
73
74
|
|
74
75
|
After running the command, the export script will run continuously until you close your terminal.
|
75
76
|
To view the dashboards, just open your browser and navigate to [http://localhost:3004](http://localhost:3004)!
|
76
77
|
|
77
|
-
|
78
|
+
## Docker
|
79
|
+
|
80
|
+
When you run DAO Treasury, [eth-portfolio](https://github.com/BobTheBuidler/eth-portfolio) will build and start 4 [required Docker containers](https://bobthebuidler.github.io/eth-portfolio/exporter.html#docker-containers) on your system. Additionally, DAO Treasury will build and start 2 more required containers:
|
81
|
+
|
82
|
+
- **grafana**
|
83
|
+
- Provides a web-based dashboard for visualizing your treasury data.
|
84
|
+
- Pre-configured with dashboards and plugins for real-time monitoring.
|
85
|
+
- Uses persistent storage to retain dashboard settings and data.
|
86
|
+
- Accessible locally (default port `3004`, configurable via `--grafana-port`).
|
87
|
+
- Supports anonymous access for convenience.
|
88
|
+
- Integrates with the renderer container for dashboard image export.
|
89
|
+
- Loads dashboards and data sources automatically via provisioning files.
|
90
|
+
|
91
|
+
- **renderer**
|
92
|
+
- Runs the official Grafana image renderer service.
|
93
|
+
- Enables Grafana to export dashboards as images for reporting or sharing.
|
94
|
+
- Operates on port `8091` by default (configurable via `--renderer-port`).
|
95
|
+
- Tightly integrated with the Grafana container for seamless image rendering.
|
96
|
+
- **Note:** The renderer container is only started if you pass the `--start-renderer` CLI flag.
|
97
|
+
|
98
|
+
**How it works:**
|
99
|
+
1. DAO Treasury collects and exports treasury data.
|
100
|
+
2. Grafana displays this data in pre-built dashboards for analysis and reporting.
|
101
|
+
3. The renderer container allows dashboards to be exported as images directly from Grafana (if enabled).
|
102
|
+
|
103
|
+
**Additional Information:**
|
104
|
+
- All containers are orchestrated via Docker Compose and started automatically as needed.
|
105
|
+
- Grafana provisioning ensures dashboards and data sources are set up out-of-the-box.
|
106
|
+
- All dashboard data and settings are persisted for durability.
|
107
|
+
- Dashboard images can be generated for reporting via the renderer (if enabled).
|
78
108
|
|
79
109
|
## Screenshots
|
80
110
|
|
@@ -85,3 +115,5 @@ Enjoy!
|
|
85
115
|
## Contributing
|
86
116
|
|
87
117
|
We welcome contributions to DAO Treasury! For detailed guidelines on how to contribute, please see the [Contributing Guidelines](https://github.com/BobTheBuidler/dao-treasury/blob/master/CONTRIBUTING.md).
|
118
|
+
|
119
|
+
Enjoy!
|
@@ -0,0 +1,38 @@
|
|
1
|
+
3619d39567c7fe330ece__mypyc.cpython-310-darwin.so,sha256=xouER7EGRB3R82IyAfgLAf_Ffg5J4L6trgpeiDSkWzU,506400
|
2
|
+
dao_treasury/_wallet.py,sha256=sIeUsyu9Y8MmOm-9bfwIEYjJ9Owgv1GXdTLZpcXMnCg,10338
|
3
|
+
dao_treasury/_wallet.cpython-310-darwin.so,sha256=JWaLh_upei8ztRqyY0EootvQWjpoNevctU7drjDXeKQ,50640
|
4
|
+
dao_treasury/db.py,sha256=PGl1-lo4SqJrCftbjaV00WwPLyzPVygdhDra1PrcL8k,40025
|
5
|
+
dao_treasury/docker-compose.yaml,sha256=Q6NPNT9iKkKOehDcKtxltvQjbxZuXmb51Tjwb1M21_I,1376
|
6
|
+
dao_treasury/types.cpython-310-darwin.so,sha256=s1rZ70u_Ly2YXB8i-i_nYJ-Dg60lAQH7viDbk9bVk7U,50616
|
7
|
+
dao_treasury/ENVIRONMENT_VARIABLES.py,sha256=yKvgOMUyU7-fF_-1zSMXML7ah7-r2f0oHrOV0p10LPc,195
|
8
|
+
dao_treasury/_nicknames.cpython-310-darwin.so,sha256=dKJrWfQGGwEnvzmd4Kn7gwk8J0pIe5QEBTjwHaoktyg,50656
|
9
|
+
dao_treasury/constants.py,sha256=IFg_CyVnfPhPjKyFX1Ix4QaB8ghbOI5QZGSy2TNsUSA,507
|
10
|
+
dao_treasury/__init__.py,sha256=ZQ0ZROQzSyJdYuQS1Z_VD0c7CiV8BWZcLTX66wO4slc,1004
|
11
|
+
dao_treasury/_nicknames.py,sha256=deSpcDMtC_78C07tW0fZ_NzHIfHXsoHBVXfb_Dvlzsw,480
|
12
|
+
dao_treasury/types.py,sha256=dJDx0hYfDDL3slcUzRnCgrzFFsgCzoqg8uaTtLaT4kk,3685
|
13
|
+
dao_treasury/_docker.py,sha256=7MnPA5xhRCM8Kqiogk87ltUVn8i_hpkNgO_hFC-7sPw,5430
|
14
|
+
dao_treasury/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
15
|
+
dao_treasury/constants.cpython-310-darwin.so,sha256=xhkN2OxPprlM0JCoTCQaz6_tu_Y9NpmClYDTp7ABp1Y,50656
|
16
|
+
dao_treasury/_docker.cpython-310-darwin.so,sha256=sJvwBQXBfA0sMBc-S9bzMnOhHdWnNk4xTKiLAZbC2zA,50640
|
17
|
+
dao_treasury/treasury.py,sha256=W_C9FOpHGlBmFW9IK7eELPaj_Pr_SzLy9xbP_GW3VLg,5800
|
18
|
+
dao_treasury/main.py,sha256=31EA10Fpaj9y-cRJPnNnvCBI38UM0848xlzn7A0BzC4,8047
|
19
|
+
dao_treasury/.grafana/provisioning/datasources/datasources.yaml,sha256=mjQs8or651NgD_bZnKBm8vSghzjw_g3enL01YPt0dik,327
|
20
|
+
dao_treasury/.grafana/provisioning/dashboards/dashboards.yaml,sha256=UMEBnTJWQLBJEfHjMsQ-vHpJ8DjdFYv4DMH57eJa7cg,544
|
21
|
+
dao_treasury/.grafana/provisioning/dashboards/transactions/Treasury Transactions.json,sha256=2IuiXuDGAx_PUAFiiu5omNntDpidi8axXEUXLcvA_b8,15974
|
22
|
+
dao_treasury/.grafana/provisioning/dashboards/treasury/Treasury.json,sha256=p9bupL06-CKqkqCOb6KkgP1LCa6P1VMkq3yhkyqMAzI,70178
|
23
|
+
dao_treasury/.grafana/provisioning/dashboards/treasury/Cashflow.json,sha256=VxfZYplgBYEbYyPXOq9V4PhKcejWqUoZ5CYgQFigFKU,42305
|
24
|
+
dao_treasury/.grafana/provisioning/dashboards/summary/Monthly.json,sha256=y7t4O0ujImcfVULGsV_0WxcZCm7sz1jtAB5ZXUfPww4,7911
|
25
|
+
dao_treasury/sorting/factory.cpython-310-darwin.so,sha256=VkGOrc5wgh8O0BCBu5NwHNQNDrVCyPNcTlzOiiC2i5I,50656
|
26
|
+
dao_treasury/sorting/_rules.py,sha256=vWkqJVA8yCHKRv9sw872Jq6G0zpM-v_J1jCz-Mgleec,8994
|
27
|
+
dao_treasury/sorting/rule.cpython-310-darwin.so,sha256=sjR3g5lbAtKmV0C2OUEgtg6ISeEdWl3AFKRQuIqFefs,50632
|
28
|
+
dao_treasury/sorting/_matchers.cpython-310-darwin.so,sha256=RBlnY54EOa-dEVeQgIaIZh6ZxP-utFxNebEb-3fwe44,50656
|
29
|
+
dao_treasury/sorting/__init__.py,sha256=pmv0FN9f8rHtLgmRREjoxyh11uZVkBTaIj-LTmP8JDQ,5744
|
30
|
+
dao_treasury/sorting/factory.py,sha256=pFD6luc0bKxOTT1hlAp3ZwJw6R0wN8pjIZrqMZwhsko,10185
|
31
|
+
dao_treasury/sorting/__init__.cpython-310-darwin.so,sha256=qQVHcFbOsCvEdZt0ZD829l7vcs9K-sA5E5eHlc5Uo6I,50640
|
32
|
+
dao_treasury/sorting/rule.py,sha256=-4dokQbRJ2GPJLEwtpgGG0aXAM1pW4jI17aezo--Z5g,11491
|
33
|
+
dao_treasury/sorting/_rules.cpython-310-darwin.so,sha256=lteGiLYPqWOSvh2_xY07vwR5FYwgHDFid6-ON9mmYhI,50640
|
34
|
+
dao_treasury/sorting/_matchers.py,sha256=u0GfPYiODr_NtzbfyLxEKDuXmWRiaeuZulDj9FPDOH8,14005
|
35
|
+
dao_treasury-0.0.30.dist-info/RECORD,,
|
36
|
+
dao_treasury-0.0.30.dist-info/WHEEL,sha256=11kMdE9gzbsaQG30fRcsAYxBLEVRsqJo098Y5iL60Xo,136
|
37
|
+
dao_treasury-0.0.30.dist-info/top_level.txt,sha256=NRjzFf9H2cBekP0cVk8IWoVYf0fTSSKfqvVPvaMhoNs,41
|
38
|
+
dao_treasury-0.0.30.dist-info/METADATA,sha256=OK_7a84tZkdzhPE9z_tuDk_VPTFktAUmMjaK65IPE0g,7030
|
Binary file
|
@@ -1,37 +0,0 @@
|
|
1
|
-
8d7637a0eb7617042369__mypyc.cpython-310-darwin.so,sha256=pA-s9C15REUejOCcRPp8yaTBgrkNowT3hygaUsv4ZGM,477312
|
2
|
-
dao_treasury/_wallet.py,sha256=sIeUsyu9Y8MmOm-9bfwIEYjJ9Owgv1GXdTLZpcXMnCg,10338
|
3
|
-
dao_treasury/_wallet.cpython-310-darwin.so,sha256=XBtguB6cFotr_nQ0B1fnHxNEd1pHZm6DEg6b6UXXgvs,50640
|
4
|
-
dao_treasury/db.py,sha256=PGl1-lo4SqJrCftbjaV00WwPLyzPVygdhDra1PrcL8k,40025
|
5
|
-
dao_treasury/docker-compose.yaml,sha256=Zurmymsh3j2zhOUIeHNFe9aEJHRXS4C6vurYpbfmy0o,1334
|
6
|
-
dao_treasury/types.cpython-310-darwin.so,sha256=I4GA7G3usD59D6JG0zbZGFQyUvOdwzmuHk0NWJ-6snI,50616
|
7
|
-
dao_treasury/ENVIRONMENT_VARIABLES.py,sha256=yKvgOMUyU7-fF_-1zSMXML7ah7-r2f0oHrOV0p10LPc,195
|
8
|
-
dao_treasury/_nicknames.cpython-310-darwin.so,sha256=oAKact-TQUNSUel94bR4dmRjsJTWLSS1ghc3vhNCNvk,50656
|
9
|
-
dao_treasury/constants.py,sha256=IFg_CyVnfPhPjKyFX1Ix4QaB8ghbOI5QZGSy2TNsUSA,507
|
10
|
-
dao_treasury/__init__.py,sha256=ZQ0ZROQzSyJdYuQS1Z_VD0c7CiV8BWZcLTX66wO4slc,1004
|
11
|
-
dao_treasury/_nicknames.py,sha256=deSpcDMtC_78C07tW0fZ_NzHIfHXsoHBVXfb_Dvlzsw,480
|
12
|
-
dao_treasury/types.py,sha256=dJDx0hYfDDL3slcUzRnCgrzFFsgCzoqg8uaTtLaT4kk,3685
|
13
|
-
dao_treasury/_docker.py,sha256=08eeEXFWh_E7VMqoaG-OSZDd3uMd1quv5YIsNWWharA,5117
|
14
|
-
dao_treasury/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
15
|
-
dao_treasury/constants.cpython-310-darwin.so,sha256=jNeh1_8RyB7Z9R6Btc_99IO8pHi15ewL0jGU8U5qjGo,50656
|
16
|
-
dao_treasury/treasury.py,sha256=w7FiA-PuDta4XxG6N65k_she60GUBcTJMWbBnqnrvXc,5692
|
17
|
-
dao_treasury/main.py,sha256=ODNVJC7sN_ELJsRnMCEPFOn3ilCnoeX2wr81l0peL_4,7294
|
18
|
-
dao_treasury/.grafana/provisioning/datasources/datasources.yaml,sha256=mjQs8or651NgD_bZnKBm8vSghzjw_g3enL01YPt0dik,327
|
19
|
-
dao_treasury/.grafana/provisioning/dashboards/dashboards.yaml,sha256=UMEBnTJWQLBJEfHjMsQ-vHpJ8DjdFYv4DMH57eJa7cg,544
|
20
|
-
dao_treasury/.grafana/provisioning/dashboards/transactions/Treasury Transactions.json,sha256=2IuiXuDGAx_PUAFiiu5omNntDpidi8axXEUXLcvA_b8,15974
|
21
|
-
dao_treasury/.grafana/provisioning/dashboards/treasury/Treasury.json,sha256=p9bupL06-CKqkqCOb6KkgP1LCa6P1VMkq3yhkyqMAzI,70178
|
22
|
-
dao_treasury/.grafana/provisioning/dashboards/treasury/Cashflow.json,sha256=VxfZYplgBYEbYyPXOq9V4PhKcejWqUoZ5CYgQFigFKU,42305
|
23
|
-
dao_treasury/.grafana/provisioning/dashboards/summary/Monthly.json,sha256=y7t4O0ujImcfVULGsV_0WxcZCm7sz1jtAB5ZXUfPww4,7911
|
24
|
-
dao_treasury/sorting/factory.cpython-310-darwin.so,sha256=ZbhKwbkXtI24-LrpMRK13LfXOcQzfAsOuw8liIczc70,50656
|
25
|
-
dao_treasury/sorting/_rules.py,sha256=vWkqJVA8yCHKRv9sw872Jq6G0zpM-v_J1jCz-Mgleec,8994
|
26
|
-
dao_treasury/sorting/rule.cpython-310-darwin.so,sha256=4fhAkwRV7daCrTnFE-aIqC99n6eHu8ljtZslROWlGjo,50632
|
27
|
-
dao_treasury/sorting/_matchers.cpython-310-darwin.so,sha256=bMy0V1Qre-iHUClBqpWiaocjwSrDEygrtrWjrlMntsc,50656
|
28
|
-
dao_treasury/sorting/__init__.py,sha256=pmv0FN9f8rHtLgmRREjoxyh11uZVkBTaIj-LTmP8JDQ,5744
|
29
|
-
dao_treasury/sorting/factory.py,sha256=pFD6luc0bKxOTT1hlAp3ZwJw6R0wN8pjIZrqMZwhsko,10185
|
30
|
-
dao_treasury/sorting/__init__.cpython-310-darwin.so,sha256=bKOEsz311yBBY1kN4jp5RyXdetowcjCdziHrsNtyQdw,50640
|
31
|
-
dao_treasury/sorting/rule.py,sha256=flxmEOUB9ucHczysT9i6SV0zbY2mq-5vvf53HxiJRKk,11335
|
32
|
-
dao_treasury/sorting/_rules.cpython-310-darwin.so,sha256=IZT61tUIIpKcBTJdORMg4e1ytB0IVfitrsbnWHVJqOk,50640
|
33
|
-
dao_treasury/sorting/_matchers.py,sha256=u0GfPYiODr_NtzbfyLxEKDuXmWRiaeuZulDj9FPDOH8,14005
|
34
|
-
dao_treasury-0.0.29.dist-info/RECORD,,
|
35
|
-
dao_treasury-0.0.29.dist-info/WHEEL,sha256=11kMdE9gzbsaQG30fRcsAYxBLEVRsqJo098Y5iL60Xo,136
|
36
|
-
dao_treasury-0.0.29.dist-info/top_level.txt,sha256=gLBdPS4UkA4KGtYmzVb1Jqq5N0FmaTK76zmC9-mACEE,41
|
37
|
-
dao_treasury-0.0.29.dist-info/METADATA,sha256=pQsRESHa0-_qmtdUkOCA5QrHAzVMXQxWbM0ep3v7X3U,4928
|
File without changes
|