hobuinc / silvimetric

Apache License 2.0
8 stars 4 forks source link

Adding a Metric from command line does not work as documented #101

Open rrowlands opened 5 days ago

rrowlands commented 5 days ago

When following the documentation I get the following unexpected error:

Traceback (most recent call last): File "/home/rrowlands/miniconda3/envs/silvimetric/bin/silvimetric", line 8, in sys.exit(cli()) ^^^^^ File "/home/rrowlands/miniconda3/envs/silvimetric/lib/python3.12/site-packages/click/core.py", line 1157, in call return self.main(args, kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/rrowlands/miniconda3/envs/silvimetric/lib/python3.12/site-packages/click/core.py", line 1078, in main rv = self.invoke(ctx) ^^^^^^^^^^^^^^^^ File "/home/rrowlands/miniconda3/envs/silvimetric/lib/python3.12/site-packages/click/core.py", line 1688, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/rrowlands/miniconda3/envs/silvimetric/lib/python3.12/site-packages/click/core.py", line 1434, in invoke return ctx.invoke(self.callback, ctx.params) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/rrowlands/miniconda3/envs/silvimetric/lib/python3.12/site-packages/click/core.py", line 783, in invoke return __callback(args, *kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/rrowlands/miniconda3/envs/silvimetric/lib/python3.12/site-packages/click/decorators.py", line 45, in new_func return f(get_current_context().obj, args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/rrowlands/miniconda3/envs/silvimetric/lib/python3.12/site-packages/silvimetric/cli/cli.py", line 146, in initialize_cmd storageconfig = StorageConfig(tdb_dir = app.tdb_dir, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "", line 14, in init File "/home/rrowlands/miniconda3/envs/silvimetric/lib/python3.12/site-packages/silvimetric/resources/config.py", line 105, in __post_init__ self.metric_definitions = { m.name: str(m) for m in self.metrics} ^^^^^^ AttributeError: 'list' object has no attribute 'name'

kylemann16 commented 5 days ago

Awesome, thanks for finding that. Can you point me to which line in the docs caused this to fail?

rrowlands commented 5 days ago

It's the initialize line in this section:

https://silvimetric.com/en/latest/tutorial.html#user-defined-metrics

rrowlands commented 5 days ago

Tested and found to happen on versions 1.2.1 and also 1.2.3

Reverting to v1.1.1 fixed the issue.

rrowlands commented 5 days ago

It also seems like combining a custom metrics file with builtin metrics, as specified in the documentation, doesn't work. I'm getting this error:

Error: Invalid value for '--metrics' / '-m': Failed to import metrics from /home/rrowlands/dev/projects/uasdm/silvimetric/pg2/silvimetric_metrics.py.min,max,mean with error Failed to find import file for metrics at /home/rrowlands/dev/projects/uasdm/silvimetric/pg2/silvimetric_metrics.py,min,max,mean

When I get rid of the "min,max,mean" it works.

kylemann16 commented 1 day ago

Yeah, that has changed once or twice through the development process. -m "${METRIC_PATH},min,max,mean" is supposed to work, as well as -m $METRIC_PATH -m min -m max -m mean.

I'll take a look at this.