Sample and dataset are used in regex patterns
Reported by @berruyer at BM23: when using a parenthesis in the dataset name (I believe it was ")"
)
2022-05-06 15:55:07,870 session_bm23 user_input INFO : SCAN_SAVING.get_data_info()
2022-05-06 15:55:08,235 session_bm23 exceptions ERROR : Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/users/blissadm/local/bliss.git/bliss/scanning/scan_saving.py", line 99, in eval_func
return method(self, *args, **kwargs)
File "/users/blissadm/local/bliss.git/bliss/scanning/scan_saving.py", line 1766, in get_data_info
confirmed, unconfirmed = self.icat_confirm_datasets(eval_dict=eval_dict)
File "/users/blissadm/local/bliss.git/bliss/scanning/scan_saving.py", line 99, in eval_func
return method(self, *args, **kwargs)
File "/users/blissadm/local/bliss.git/bliss/scanning/scan_saving.py", line 1585, in icat_confirm_datasets
dset.confirm_registration()
File "/users/blissadm/local/bliss.git/bliss/icat/dataset.py", line 164, in confirm_registration
self.set_expiration_time(include_parents=False)
File "/users/blissadm/local/bliss.git/bliss/icat/policy.py", line 270, in set_expiration_time
include_parents=include_parents
File "/users/blissadm/local/bliss.git/bliss/icat/policy.py", line 259, in _get_db_names
data_pattern = re.compile(f"^{prefix}:{keep_level}:.+$")
File "/users/blissadm/conda/miniconda/envs/bliss_dev/lib/python3.7/re.py", line 236, in compile
return _compile(pattern, flags)
File "/users/blissadm/conda/miniconda/envs/bliss_dev/lib/python3.7/re.py", line 288, in _compile
p = sre_compile.compile(pattern, flags)
File "/users/blissadm/conda/miniconda/envs/bliss_dev/lib/python3.7/sre_compile.py", line 764, in compile
p = sre_parse.parse(p, flags)
File "/users/blissadm/conda/miniconda/envs/bliss_dev/lib/python3.7/sre_parse.py", line 938, in parse
raise source.error("unbalanced parenthesis")
re.error: unbalanced parenthesis at position 72
For example:
>>> re.compile("abc)")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/users/denolf/virtualenvs/bliss/ubuntu_20_04/lib/python3.7/re.py", line 236, in compile
return _compile(pattern, flags)
File "/users/denolf/virtualenvs/bliss/ubuntu_20_04/lib/python3.7/re.py", line 288, in _compile
p = sre_compile.compile(pattern, flags)
File "/users/denolf/virtualenvs/bliss/ubuntu_20_04/lib/python3.7/sre_compile.py", line 764, in compile
p = sre_parse.parse(p, flags)
File "/users/denolf/virtualenvs/bliss/ubuntu_20_04/lib/python3.7/sre_parse.py", line 938, in parse
raise source.error("unbalanced parenthesis")
re.error: unbalanced parenthesis at position 3
So either we restrict the sample and dataset names to something that can be used as a regex pattern or we remove all regex matching of Redis database names. @matias.guijarro What do you think?