Skip to content

Commit 7545f81

Browse files
author
David Stirling
authored
Add sanitization of pipeline dumps, handle invalid dump version parameter (#53)
1 parent 584102f commit 7545f81

3 files changed

Lines changed: 12 additions & 5 deletions

File tree

cellprofiler_core/pipeline/_pipeline.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -592,8 +592,8 @@ def setup_module(
592592

593593
return module
594594

595-
def dump(self, fp, save_image_plane_details=True):
596-
dumpit(self, fp, save_image_plane_details)
595+
def dump(self, fp, save_image_plane_details=True, sanitize=False):
596+
dumpit(self, fp, save_image_plane_details, sanitize=sanitize)
597597

598598
def save_pipeline_notes(self, fd, indent=2):
599599
"""Save pipeline notes to a text file

cellprofiler_core/pipeline/io/__init__.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,10 @@
99
from ._v6 import dump as dump_v6
1010

1111

12-
def dump(pipeline, fp, save_image_plane_details=True, version=5):
12+
def dump(pipeline, fp, save_image_plane_details=True, version=5, sanitize=False):
1313
if version == 5:
14-
dump_v5(pipeline, fp, save_image_plane_details)
14+
dump_v5(pipeline, fp, save_image_plane_details, sanitize)
1515
elif version == 6:
1616
dump_v6(pipeline, fp, save_image_plane_details)
17+
else:
18+
raise NotImplementedError("Invalid pipeline version")

cellprofiler_core/pipeline/io/_v5.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import cellprofiler_core.utilities.core.pipeline
77

88

9-
def dump(pipeline, fp, save_image_plane_details):
9+
def dump(pipeline, fp, save_image_plane_details, sanitize=False):
1010
if len(pipeline.file_list) == 0:
1111
save_image_plane_details = False
1212

@@ -44,6 +44,11 @@ def dump(pipeline, fp, save_image_plane_details):
4444
fp.write(f"{module.module_name}:[{'|'.join(module_attributes)}]\n")
4545

4646
for setting in module.settings():
47+
if sanitize and any(
48+
phrase in setting.text.lower()
49+
for phrase in ("username", "password", "host")
50+
):
51+
setting.unicode_value = "*****"
4752
fp.write(f" {setting.text}:{setting.unicode_value}\n")
4853

4954
if save_image_plane_details:

0 commit comments

Comments
 (0)