Skip to content

Commit

Permalink
hide parameter value in logs and tracking on demand
Browse files Browse the repository at this point in the history
* add `hidden` attr to `ParameterDefinition`
* hide parameter value if needed in TaskBanner and TaskRunParamInfo
* fix misleading type hint
* add tests
  • Loading branch information
FHoffmannCode committed Oct 21, 2020
1 parent 7567c9a commit b7030c4
Show file tree
Hide file tree
Showing 5 changed files with 45 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,7 @@ def run(self):
parameter_id = attr.ib(default=1)

value_meta_conf = attr.ib(default=None) # type: ValueMetaConf
hidden = attr.ib(default=False) # type: bool

@property
def group(self):
Expand Down
4 changes: 2 additions & 2 deletions modules/dbnd/src/dbnd/_core/task_ctrl/task_parameters.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from typing import Any, Dict, List, Tuple, Type

from dbnd._core.configuration.config_value import ConfigValue
from dbnd._core.parameter.parameter_definition import ParameterDefinition
from dbnd._core.parameter.parameter_value import ParameterValue
from dbnd._core.task_ctrl.task_meta import TaskMeta


Expand All @@ -27,7 +27,7 @@ def get_value(self, param_name):

return getattr(self.task, param_name)

def get_param_meta(self, param_name): # type: (str)->ConfigValue
def get_param_meta(self, param_name): # type: (str) -> ParameterValue
return self.task_meta._task_params.get_any_param(param_name, None)

def get_params(
Expand Down
4 changes: 3 additions & 1 deletion modules/dbnd/src/dbnd/_core/task_ctrl/task_visualiser.py
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,9 @@ def _add_params_info(self):
relevant_params.append(p)

for p in relevant_params:
value = self.params.get_value(p.name)
# TODO: change it to param_meta.value_to_track when we make sure
# it'll return correct runtime value
value = self.params.get_value(p.name) if not p.hidden else "***"
param_meta = self.params.get_param_meta(p.name)
target_config = p.target_config
if isinstance(value, InMemoryTarget):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -234,15 +234,18 @@ def build_task_run_info(task_run):
for key, tdp in sorted(tracked_params.items()):
param_meta = t._params.get_param_meta(tdp.name)
if param_meta:
value_source, value = param_meta.source, param_meta.value
value, value_source = param_meta.value, param_meta.source
else:
value_source, value = "", ""
task_run_params.append(
TaskRunParamInfo(
parameter_name=tdp.name,
value_origin=safe_short_string(str(value_source), max_value_len=5000),
value=safe_short_string(
str(task_params_values.get(tdp.name, value)), max_value_len=5000,
str(task_params_values.get(tdp.name, value))
if not tdp.hidden
else "***",
max_value_len=5000,
),
)
)
Expand Down
34 changes: 34 additions & 0 deletions modules/dbnd/test_dbnd/parameters/test_hidden_parameter.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
from dbnd import task
from dbnd._core.parameter.parameter_builder import parameter
from dbnd._core.task_ctrl.task_visualiser import TaskVisualiser
from dbnd._core.tracking.tracking_info_convertor import build_task_run_info


@task
def t_f(input_=parameter[str](hidden=True)):
print("testing...")
return "random string"


class TestHiddenParameter(object):
def test_parameter_value_stays_hidden_in_task_run_info_object(self):
my_task = t_f.t("test_string")
task_run = my_task.dbnd_run().root_task_run

task_run_info = build_task_run_info(task_run)

input_task_param_info = [
task_param_info
for task_param_info in task_run_info.task_run_params
if task_param_info.parameter_name == "input_"
]
assert len(input_task_param_info) == 1
assert input_task_param_info[0].value == "***"

def test_parameter_value_stays_hidden_in_banner(self):
my_task = t_f.t("test_string")
my_task.dbnd_run()

banner = TaskVisualiser(my_task).banner("some_msg")
print(banner)
assert "***" in banner and "test_string" not in banner

0 comments on commit b7030c4

Please sign in to comment.