From eb5b6ba8945a56c8ef27aa9d3428e3e79ec738b2 Mon Sep 17 00:00:00 2001 From: Reid Sunderland Date: Thu, 14 Dec 2023 14:31:30 +0000 Subject: [PATCH 1/4] This fixes the problem in #861, but needs more testing --- sarracenia/config.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/sarracenia/config.py b/sarracenia/config.py index 05a71923a..9aba17a5b 100755 --- a/sarracenia/config.py +++ b/sarracenia/config.py @@ -2150,9 +2150,10 @@ def variableExpansion(self, cdir, message=None ) -> str: # strftime compatible patterns. - if len(new_dir.split( '${%' )) > 1: - fragment_list=[] - for fragment in new_dir.split( '${%' ): + fragments = new_dir.split( '${%' ) + if len(fragments) > 1: + fragment_list=[fragments[0]] + for fragment in fragments[1:]: close_brace = fragment.find('}') frag_start=0 seconds=self.varTimeOffset From 123c1f451deeab70223f3126174a5d6e9c6baa53 Mon Sep 17 00:00:00 2001 From: Reid Sunderland Date: Thu, 14 Dec 2023 17:26:22 +0000 Subject: [PATCH 2/4] Another fix for #861 --- sarracenia/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sarracenia/config.py b/sarracenia/config.py index 9aba17a5b..772bf623e 100755 --- a/sarracenia/config.py +++ b/sarracenia/config.py @@ -2243,7 +2243,7 @@ def variableExpansion(self, cdir, message=None ) -> str: matches= re.search( r'^[0-9]+$', match_field) # non-numeric thing... variable or something. if not matches: - fragment_list.append(fragment) + fragment_list.append('${' + fragment) continue field=int(match_field) if self.sundew_compat_regex_first_match_is_zero: From 09e5fc6f3dc3263eb099e953632c390f370a3b3f Mon Sep 17 00:00:00 2001 From: Reid Sunderland Date: Thu, 14 Dec 2023 18:02:56 +0000 Subject: [PATCH 3/4] Add test cases for #861 --- tests/sarracenia/config_test.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/sarracenia/config_test.py b/tests/sarracenia/config_test.py index 520c20e07..430780881 100644 --- a/tests/sarracenia/config_test.py +++ b/tests/sarracenia/config_test.py @@ -51,6 +51,10 @@ def test_variableExpansion(): "/pub/DATASETS/NOAA/G02158/unmasked" + '/[0-9]{4}/[0-9]{2}_[A-Z]{1}[a-z]{2}' ) assert try_pattern( options, message, "${PBD}/${%Y}/${SOURCE}/AIRNOW/CSV/BCMOE/${%H}/", \ options.post_baseDir + '/[0-9]{4}/'+ message['source'] +'/AIRNOW/CSV/BCMOE/[0-9]{2}/' ) + assert try_pattern( options, message, "a_path/${DONT_TOUCH_THIS}something/else", "a_path/\${DONT_TOUCH_THIS}something/else") + assert try_pattern( options, message, "a_path/${1DONT_TOUCH_THIS}something/else", "a_path/\${1DONT_TOUCH_THIS}something/else") + assert try_pattern( options, message, "/apps/sarra/public_data/20231214/SSC-DATAINTERCHANGE/MSC-BULLETINS/${T1}${T2}/${CCCC}/17", + "/apps/sarra/public_data/20231214/SSC-DATAINTERCHANGE/MSC-BULLETINS/\${T1}\${T2}/\${CCCC}/17") options.sundew_compat_regex_first_match_is_zero = True options.post_baseDir = '/apps/sarra/public_data' @@ -87,4 +91,3 @@ def test_variableExpansion(): # to get stuff to print out, make it fail. #assert False - From c50fc26e4d6588d068d77d63a880551733b0511a Mon Sep 17 00:00:00 2001 From: Reid Sunderland Date: Thu, 14 Dec 2023 18:08:46 +0000 Subject: [PATCH 4/4] Add a couple more cases, fix deprecation warning --- tests/sarracenia/config_test.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tests/sarracenia/config_test.py b/tests/sarracenia/config_test.py index 430780881..e527e553f 100644 --- a/tests/sarracenia/config_test.py +++ b/tests/sarracenia/config_test.py @@ -51,10 +51,12 @@ def test_variableExpansion(): "/pub/DATASETS/NOAA/G02158/unmasked" + '/[0-9]{4}/[0-9]{2}_[A-Z]{1}[a-z]{2}' ) assert try_pattern( options, message, "${PBD}/${%Y}/${SOURCE}/AIRNOW/CSV/BCMOE/${%H}/", \ options.post_baseDir + '/[0-9]{4}/'+ message['source'] +'/AIRNOW/CSV/BCMOE/[0-9]{2}/' ) - assert try_pattern( options, message, "a_path/${DONT_TOUCH_THIS}something/else", "a_path/\${DONT_TOUCH_THIS}something/else") - assert try_pattern( options, message, "a_path/${1DONT_TOUCH_THIS}something/else", "a_path/\${1DONT_TOUCH_THIS}something/else") + assert try_pattern( options, message, "a_path/${DONT_TOUCH_THIS}something/else", r"a_path/\${DONT_TOUCH_THIS}something/else") + assert try_pattern( options, message, "a_path/${1DONT_TOUCH_THIS}something/else", r"a_path/\${1DONT_TOUCH_THIS}something/else") assert try_pattern( options, message, "/apps/sarra/public_data/20231214/SSC-DATAINTERCHANGE/MSC-BULLETINS/${T1}${T2}/${CCCC}/17", - "/apps/sarra/public_data/20231214/SSC-DATAINTERCHANGE/MSC-BULLETINS/\${T1}\${T2}/\${CCCC}/17") + r"/apps/sarra/public_data/20231214/SSC-DATAINTERCHANGE/MSC-BULLETINS/\${T1}\${T2}/\${CCCC}/17") + assert try_pattern( options, message, "a_path/${1DONT_TOUCH_THIS}some/${%H}/thing/${STILL_DONT_CHANGE_ME}/${%Y}/hello", + r"a_path/\${1DONT_TOUCH_THIS}some/[0-2][0-9]/thing/\${STILL_DONT_CHANGE_ME}/[0-9]{4}/hello") options.sundew_compat_regex_first_match_is_zero = True options.post_baseDir = '/apps/sarra/public_data'