spedas / pyspedas

Python-based Space Physics Environment Data Analysis Software
https://pyspedas.readthedocs.io/
MIT License
149 stars 58 forks source link

Invalid escape sequences #821

Closed jameswilburlewis closed 5 months ago

jameswilburlewis commented 5 months ago

We have about 44 lines of code with invalid escape sequences in some of the project directories: ., -, \d, \s, etc. Maybe there are incompatibilities with regular expression syntax between IDL and Python that were lost in translation? Some of the errors in in calls to the Pandas read_csv routine, when specifying the delimiter to use.

(base) jwl@jwl-new-mac logs_20240411 % grep W605 python312_log.txt | more
2024-04-11T01:56:52.0182881Z ./pyspedas/maven/download_files_utilities.py:117:30: W605 invalid escape sequence '\.'
2024-04-11T01:56:52.0183248Z ./pyspedas/maven/download_files_utilities.py:117:41: W605 invalid escape sequence '\.'
2024-04-11T01:56:52.0184578Z ./pyspedas/maven/file_regex.py:26:30: W605 invalid escape sequence '\-'
2024-04-11T01:56:52.0184878Z ./pyspedas/maven/file_regex.py:31:43: W605 invalid escape sequence '\.'
2024-04-11T01:56:52.0185159Z ./pyspedas/maven/file_regex.py:33:19: W605 invalid escape sequence '\.'
2024-04-11T01:56:52.0185573Z ./pyspedas/maven/file_regex.py:53:30: W605 invalid escape sequence '\-'
2024-04-11T01:56:52.0185909Z ./pyspedas/maven/file_regex.py:59:26: W605 invalid escape sequence '\.'
2024-04-11T01:56:52.0186364Z ./pyspedas/maven/file_regex.py:61:19: W605 invalid escape sequence '\.'
2024-04-11T01:56:52.0195812Z ./pyspedas/maven/utilities.py:478:37: W605 invalid escape sequence '\d'
2024-04-11T01:56:52.0196110Z ./pyspedas/maven/utilities.py:481:34: W605 invalid escape sequence '\d'
2024-04-11T01:56:52.0196407Z ./pyspedas/maven/utilities.py:492:39: W605 invalid escape sequence '\d'
2024-04-11T01:56:52.0196693Z ./pyspedas/maven/utilities.py:495:34: W605 invalid escape sequence '\d'
2024-04-11T01:56:52.0198729Z ./pyspedas/maven/utilities.py:667:23: W605 invalid escape sequence '\s'
2024-04-11T01:56:52.0199021Z ./pyspedas/maven/utilities.py:676:38: W605 invalid escape sequence '\s'
2024-04-11T01:56:52.0199315Z ./pyspedas/maven/utilities.py:679:23: W605 invalid escape sequence '\s'
2024-04-11T01:56:52.0199611Z ./pyspedas/maven/utilities.py:679:64: W605 invalid escape sequence '\s'
2024-04-11T01:56:52.0200342Z ./pyspedas/maven/utilities.py:682:44: W605 invalid escape sequence '\s'
2024-04-11T01:56:52.0201036Z ./pyspedas/maven/utilities.py:684:39: W605 invalid escape sequence '\s'
2024-04-11T01:56:52.0746848Z ./pyspedas/mms/mms_files_in_interval.py:25:40: W605 invalid escape sequence '\d'
2024-04-11T01:56:52.0747187Z ./pyspedas/mms/mms_files_in_interval.py:25:46: W605 invalid escape sequence '\d'
2024-04-11T01:56:52.0747515Z ./pyspedas/mms/mms_files_in_interval.py:25:52: W605 invalid escape sequence '\d'
2024-04-11T01:56:52.0748703Z ./pyspedas/mms/mms_get_local_files.py:61:92: W605 invalid escape sequence '\d'
2024-04-11T01:56:52.0749018Z ./pyspedas/mms/mms_get_local_files.py:61:98: W605 invalid escape sequence '\d'
2024-04-11T01:56:52.0749343Z ./pyspedas/mms/mms_get_local_files.py:61:104: W605 invalid escape sequence '\d'
2024-04-11T01:56:52.0822954Z ./pyspedas/mms/plots/mms_overview_plot.py:63:91: W605 invalid escape sequence '\m'
2024-04-11T01:56:52.1344805Z ./pyspedas/secs/__init__.py:103:54: W605 invalid escape sequence '\s'
2024-04-11T01:56:52.1377789Z ./pyspedas/secs/makeplots.py:361:118: W605 invalid escape sequence '\s'
2024-04-11T01:56:52.1378085Z ./pyspedas/secs/makeplots.py:362:118: W605 invalid escape sequence '\s'
2024-04-11T01:56:52.1378383Z ./pyspedas/secs/makeplots.py:363:118: W605 invalid escape sequence '\s'
2024-04-11T01:56:52.1378677Z ./pyspedas/secs/makeplots.py:364:118: W605 invalid escape sequence '\s'
2024-04-11T01:56:52.1501391Z ./pyspedas/themis/analysis/scpot2dens.py:38:11: W605 invalid escape sequence '\p'
2024-04-11T01:56:52.1501744Z ./pyspedas/themis/analysis/scpot2dens.py:38:27: W605 invalid escape sequence '\c'
2024-04-11T01:56:52.1502474Z ./pyspedas/themis/analysis/scpot2dens.py:188:11: W605 invalid escape sequence '\p'
2024-04-11T01:56:52.1502819Z ./pyspedas/themis/analysis/scpot2dens.py:188:27: W605 invalid escape sequence '\c'
2024-04-11T01:56:52.2010069Z ./pyspedas/wind/tests/tests.py:83:85: W605 invalid escape sequence '\.'
2024-04-11T01:56:52.2010521Z ./pyspedas/wind/tests/tests.py:83:88: W605 invalid escape sequence '\.'
2024-04-11T01:56:52.2010821Z ./pyspedas/wind/tests/tests.py:83:98: W605 invalid escape sequence '\.'
2024-04-11T01:56:52.2011122Z ./pyspedas/wind/tests/tests.py:83:101: W605 invalid escape sequence '\.'
2024-04-11T01:56:52.2011461Z ./pyspedas/wind/tests/tests.py:83:115: W605 invalid escape sequence '\.'
2024-04-11T01:56:52.2011925Z ./pyspedas/wind/tests/tests.py:83:118: W605 invalid escape sequence '\.'
jameswilburlewis commented 5 months ago

This is another change in Python 3.12. The use of invalid escape sequences in string literals has been deprecated since Python 3.6, but in Python 3.12, the severity of the warning was raised, and eventually, it will no longer compile at all.

The backslashes are necessary in regular expressions (which is what the PySPEDAS usages seem to be). The standard practice is to use raw strings for regexes (e.g. r"foo.bar" rather than "foo.bar"). This is probably preferable to escaping all the backslashes (where "foo.bar" becomes "foo\\.bar"), unless, for some weird reason, you need both literal backslashes and escape sequences like \r or \n in the same string.