commit 39ee38b0dc9f36467c09397dc33852c37de2ad71
parent 270a35badada9b7fccfeb5c342849d18c9c54411
Author: lash <dev@holbrook.no>
Date: Sun, 6 Aug 2023 19:32:10 +0100
Implement syncer context
Diffstat:
10 files changed, 75 insertions(+), 4 deletions(-)
diff --git a/CHANGELOG b/CHANGELOG
@@ -1,3 +1,6 @@
+- 0.8.1
+ * Implement syncer context
+ * Add key-value parameter for cli, environment, config to pass to syncer context
- 0.8.0
* Implement RPC batch limits for syncer
- 0.7.6
diff --git a/WAIVER b/WAIVER
@@ -0,0 +1,17 @@
+# Copyright waiver for the python package "eth-monitor"
+
+I dedicate any and all copyright interest in this software to the
+public domain. I make this dedication for the benefit of the public at
+large and to the detriment of my heirs and successors. I intend this
+dedication to be an overt act of relinquishment in perpetuity of all
+present and future rights to this software under copyright law.
+
+To the best of my knowledge and belief, my contributions are either
+originally authored by me or are derived from prior works which I have
+verified are also in the public domain and are not subject to claims
+of copyright by other parties.
+
+To the best of my knowledge and belief, no individual, business,
+organization, government, or other entity has any copyright interest
+in my contributions, and I affirm that I will not make contributions
+that are otherwise encumbered.
diff --git a/WAIVER.asc b/WAIVER.asc
@@ -0,0 +1,29 @@
+-----BEGIN PGP MESSAGE-----
+
+owGVU39QFFUc58fFwHYYYvwq0cfPoO6umsoEJgMJ4wQVGn7IiMje3ru7B7e7d/vj
+rmMwS7iwMPImp8LUIGdATWgsHamjyYCQPGZkYEIkQ7QcEobRVIYGTXu7B2r1V3/c
+zO2+7/fz8+2uYH+fQN+YwQn3jq7WNb5t/rwuoDhDW5T1GmW96YwDmazFwSGjSQB2
+EtkgBwwsBwQTBBaHYGIZYCGpStIIQSwUTGqaZZDAcrEEoQV6qEcUKUBAMg780wPS
+bAbUPTTECJCDvPQHwyEe8KxBsJMcBAIr4RMWUWdGFNCzNIkYDdACmqyE3tF5aITp
+F9ToIAMNSACswSvOu0wKhJnkjFDm9+LiZYFDNGTkWdoBTBBxvDzAixQFeZ7leIlO
+EihtYULiAUKMopPwAIvDEABJyTgcNCPGKiLeJCNjTxbIWaAgIsEhnWPvhAXblQ4l
+KoMoiNiqHAXvVfZgBCKjx0nfD8tM2jUEUcDOW+UXtFcyrN0M9fMGdVgENKikA4pl
+sEudKEnG5jAkRHiXI1gMiBgsB3ci4gI5iPccgIYABynNYWJcM1bIsTSwcAi/trNc
+JQ/sJkSZcC4m0gYJ7B0ZEB6TVkgzz3prvBe8tzVv7XiCYQWcrq4C4rSwWcpMIpon
+sIf7FrEIVlKILxQnIMj/D7+MxK5HNqQXSbMK6EQeMbhHFTZrJBlUJRenAkapMUbq
+RyWZ9bLhJ6kiE8nL9/S/95PANv4dqEqm1wLSYEAcjUWSAn6yI3zBJafyRf3HAiGP
+SEnIrHbE40IYSqR1mEOvId7xe07h4xvoEx0eowhMnG62qJfV9V6qy1/4LB/ykz5G
+HyIoZOFNd90jtxQHErIvnUw+crf7TkR7+uXvTo3EF1TtnJoq72mEuYl96unSuZCI
+8zDj9Ppjm3unPFlP3bg9Xp7KbOskM5OuG/6ccl17V/vsiLt4Q8qXnujZjceO1Mwe
+3fHm1pOhqc6WU+uvDpS8Yu+mF/kPLEkqVuZuGdwY3DFdv51uSPg0Mj8kq93xbQfV
+8Jerv+tVpXbvocLG1LSKQ+1Lgt8W7dd+y94VUNZ6Tlml73um+pfhbfqBmR/O1nKj
+YQH7xjTllr7C1V2LfdTDdfFXnwbWE4teyEmfW5wUalwXPe23O/r7nJXvryrpWD4G
+n3j8p6HkweaalIuPOXO+2fTh5pSgioo97tKZccVeNTFX+YHxRubnEVHK30d2Hld0
+Dm1tWXewv35Prtv3eJNr7mNdUUZV650y99qm/ZdbHK9PehJXwpnJ0WXh8KP86pzc
+ULfTj7bF6iOjFNn7mtq+GA8vS9mdN7G6wDX86IraTav+CANKD3K+cdD/4X5Tz+TR
+puaCHyeH2p8nn7yotqTF5sc3xrV+0tOpGdgf1G1962bRr4eXj4vp9FiYx2rz+FWt
+Ma14ObL5q3Mp57dUO/NqPjszd/tKEGcLnTibfCu9ovGMUFLa67owU852LVXWD96d
+bLii2B7cdjhG8+KGn8vFAy+9N+tKczgzHa64wrxGd28XuzQ1avpEWu7Xa1NrL4Se
+TrDqRq//DQ==
+=yHWM
+-----END PGP MESSAGE-----
diff --git a/eth_monitor/cli/arg.py b/eth_monitor/cli/arg.py
@@ -30,3 +30,6 @@ def process_args(argparser, args, flags):
argparser.add_argument('--store-tx-data', action='store_true', dest='store_tx_data', help='Store tx data in cache store')
argparser.add_argument('--store-block-data', action='store_true', dest='store_block_data', help='Store block data in cache store')
argparser.add_argument('--fresh', action='store_true', help='Do not read block and tx data from cache, even if available')
+
+ # misc flags
+ argparser.add_argument('-k', '--context-key', dest='context_key', action='append', type=str, help='Add a key-value pair to be added to the context')
diff --git a/eth_monitor/cli/config.py b/eth_monitor/cli/config.py
@@ -38,6 +38,8 @@ def process_config(config, arg, args, flags):
arg_override['ETHMONITOR_STATE_DIR'] = getattr(args, 'state_dir')
+ arg_override['ETHMONITOR_CONTEXT_KEY'] = getattr(args, 'context_key')
+
arg_override['ETHCACHE_STORE_BLOCK'] = getattr(args, 'store_block_data')
arg_override['ETHCACHE_STORE_TX'] = getattr(args, 'store_tx_data')
diff --git a/eth_monitor/data/config/monitor.ini b/eth_monitor/data/config/monitor.ini
@@ -18,3 +18,4 @@ filter =
block_filter =
include_default = 0
state_dir = ./.eth-monitor
+context_key =
diff --git a/eth_monitor/runnable/sync.py b/eth_monitor/runnable/sync.py
@@ -85,6 +85,7 @@ config.add_schema_dir(chainsyncer_config_dir)
config = process_config(config, arg, args, flags)
config = process_config_sync(config, arg, args, flags)
config = eth_monitor.cli.process_config(config, arg, args, flags)
+logg.debug('loaded config:\n{}'.format(config))
settings = ChainSettings()
settings = process_settings(settings, config)
@@ -95,6 +96,7 @@ logg.debug('loaded settings:\n{}'.format(settings))
def main():
logg.info('session is {}'.format(settings.get('SESSION_ID')))
+
drv = ChainInterfaceDriver(
settings.get('SYNC_STORE'),
settings.get('SYNCER_INTERFACE'),
@@ -104,9 +106,9 @@ def main():
post_callback=post_callback,
block_callback=settings.get('BLOCK_HANDLER').filter,
)
-
+
try:
- r = drv.run(settings.get('CONN'))
+ r = drv.run(settings.get('CONN'), ctx=settings.get('SYNCER_CONTEXT'))
except SyncDone as e:
sys.stderr.write("sync {} done at block {}\n".format(drv, e))
diff --git a/eth_monitor/settings.py b/eth_monitor/settings.py
@@ -380,11 +380,25 @@ def process_cache(settings, config):
return settings
+def process_user_context(settings, config):
+ ctx_usr = {}
+ for kv in config.get('ETHMONITOR_CONTEXT_KEY'):
+ (k, v) = kv.split('=', 1)
+ ctx_usr[k] = v
+ ctx = {
+ 'driver': 'eth-monitor',
+ 'usr': ctx_usr,
+ }
+ settings.set('SYNCER_CONTEXT', ctx)
+ return settings
+
+
def process_settings(settings, config):
settings = process_monitor_session(settings, config)
settings = process_monitor_session_dir(settings, config)
settings = process_arg_rules(settings, config)
settings = process_sync(settings, config)
settings = process_cache(settings, config)
+ settings = process_user_context(settings, config)
settings = process_filter(settings, config)
return settings
diff --git a/requirements.txt b/requirements.txt
@@ -1,6 +1,6 @@
chainlib-eth~=0.5.0
chainlib~=0.5.0
-chainsyncer~=0.8.0
+chainsyncer~=0.8.1
leveldir~=0.3.0
eth-cache~=0.3.0
confini~=0.6.3
diff --git a/setup.cfg b/setup.cfg
@@ -1,6 +1,6 @@
[metadata]
name = eth-monitor
-version = 0.8.0
+version = 0.8.1
description = Monitor and cache transactions using match filters
author = Louis Holbrook
author_email = dev@holbrook.no