Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • bliss bliss
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
  • Issues 542
    • Issues 542
    • List
    • Boards
    • Service Desk
    • Milestones
  • Jira
    • Jira
  • Merge requests 145
    • Merge requests 145
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • BlissBliss
  • blissbliss
  • Issues
  • #3358
Closed
Open
Issue created May 06, 2022 by Wout De Nolf@denolfMaintainer

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?

Assignee
Assign to
Time tracking