lasio icon indicating copy to clipboard operation
lasio copied to clipboard

PEP 0515 (Underscores in Numeric Literals) not taken into account when reading headers.

Open Aycon3296 opened this issue 3 months ago • 1 comments

Describe the error Underscores are accepted as numbers when reading service sections.

For playback Try to read any title that contains an underscore. For example "WELL" header item in:

~Version Information
#---------------------------------------------------------------- ---------------
VERS. 1.20: CWLS log ASCII Standard - VERSION 1.20
WRAP. YES : Multiple lines per depth step
~Well Information
#---------------------------------------------------------------- ---------------
#MNEM.UNIT DATA TYPE INFORMATION
#--------- -------------------------- -------------- ---------
STRT .M 74 : Start depth
STOP .M 1855 : Stop depth
STEP .M 0.2000 : Step
NULL. -9999 : Null value
COMP. COMPANY: Test
WELL. WELL: 321_04

Expected Behavior The title will be read as a string with underscores, but not as a number.

Software Versions (fill in the following information):

  • Python version: 3.10.5

Additional context Due to https://www.python.org/dev/peps/pep-0515/ numbers containing underscores are now considered real numbers. So if you use int(value) inside a try/catch block to check whether the message read is a number, you will run into problems parsing strings like this "WELL . WELL : 321_04" (In "~W" sections). You could check for "_" signs in the read fragment before doing this. And if the "_" signs are present, then conclude that the fragment read is str instead of int.

Aycon3296 avatar Mar 14 '24 07:03 Aycon3296

Sounds good, I would welcome a PR but it should be configurable and off by default. I would not expect that to be parsed as a number, but accept that some might.

kinverarity1 avatar Mar 14 '24 07:03 kinverarity1