mirror of https://github.com/ecmwf/eccodes.git
Examples: Python script to check BUFR Table B (formatting, isort, flake8 etc)
This commit is contained in:
parent
3200d6f4bc
commit
20ebd55074
|
@ -12,10 +12,9 @@
|
||||||
|
|
||||||
from __future__ import print_function
|
from __future__ import print_function
|
||||||
|
|
||||||
import getopt
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import traceback
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
||||||
MIN_NUM_COLUMNS = 8
|
MIN_NUM_COLUMNS = 8
|
||||||
|
@ -49,13 +48,11 @@ def verify_table(table, filename):
|
||||||
linenum = 1 + i
|
linenum = 1 + i
|
||||||
numcols = len(a_row)
|
numcols = len(a_row)
|
||||||
if numcols < MIN_NUM_COLUMNS:
|
if numcols < MIN_NUM_COLUMNS:
|
||||||
print(f"{a_row}")
|
|
||||||
print(f"Error in line {linenum}: Column count (={numcols}) < required miniumum (={MIN_NUM_COLUMNS})")
|
print(f"Error in line {linenum}: Column count (={numcols}) < required miniumum (={MIN_NUM_COLUMNS})")
|
||||||
return 1
|
return 1
|
||||||
a_code = a_row[0]
|
a_code = a_row[0]
|
||||||
a_key = a_row[1]
|
a_key = a_row[1]
|
||||||
a_type = a_row[2]
|
a_type = a_row[2]
|
||||||
a_unit = a_row[4]
|
|
||||||
a_scale = a_row[5]
|
a_scale = a_row[5]
|
||||||
a_ref = a_row[6]
|
a_ref = a_row[6]
|
||||||
a_width = a_row[7]
|
a_width = a_row[7]
|
||||||
|
@ -63,12 +60,8 @@ def verify_table(table, filename):
|
||||||
print(f"Error in line {linenum}: Code '{a_code}' (column 1) is not numeric")
|
print(f"Error in line {linenum}: Code '{a_code}' (column 1) is not numeric")
|
||||||
return 1
|
return 1
|
||||||
if len(a_code) != LEN_DESCRIPTOR:
|
if len(a_code) != LEN_DESCRIPTOR:
|
||||||
print(
|
print(f"Error in line {linenum}: Code '{a_code}' (column 1) should be {LEN_DESCRIPTOR} digits long")
|
||||||
f"Error in line {linenum}: Code '{a_code}' (column 1) should be {LEN_DESCRIPTOR} digits long"
|
print("\tAll descriptor codes (FXY) must have 1 digit for F, 2 for X and 3 for Y")
|
||||||
)
|
|
||||||
print(
|
|
||||||
f"\tAll descriptors have a F-X-Y structure: 1 digit for F, 2 for X and 3 for Y"
|
|
||||||
)
|
|
||||||
return 1
|
return 1
|
||||||
if not a_key:
|
if not a_key:
|
||||||
print(f"Error in line {linenum}: Key '{a_key}' (column 2) is not valid")
|
print(f"Error in line {linenum}: Key '{a_key}' (column 2) is not valid")
|
||||||
|
@ -77,19 +70,13 @@ def verify_table(table, filename):
|
||||||
print(f"\tPlease choose from: {ALLOWED_TYPES}")
|
print(f"\tPlease choose from: {ALLOWED_TYPES}")
|
||||||
return 1
|
return 1
|
||||||
if not isNumeric(a_scale):
|
if not isNumeric(a_scale):
|
||||||
print(
|
print(f"Error in line {linenum}: Scale '{a_scale}' (column 6) is not numeric")
|
||||||
f"Error in line {linenum}: Scale '{a_scale}' (column 6) is not numeric"
|
|
||||||
)
|
|
||||||
return 1
|
return 1
|
||||||
if not isNumeric(a_ref):
|
if not isNumeric(a_ref):
|
||||||
print(
|
print(f"Error in line {linenum}: Reference '{a_ref}' (column 7) is not numeric")
|
||||||
f"Error in line {linenum}: Reference '{a_ref}' (column 7) is not numeric"
|
|
||||||
)
|
|
||||||
return 1
|
return 1
|
||||||
if not isNumeric(a_width):
|
if not isNumeric(a_width):
|
||||||
print(
|
print(f"Error in line {linenum}: Width '{a_width}' (column 8) is not numeric")
|
||||||
f"Error in line {linenum}: Width '{a_width}' (column 8) is not numeric"
|
|
||||||
)
|
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
print("All OK")
|
print("All OK")
|
||||||
|
@ -117,7 +104,7 @@ def main():
|
||||||
assert False, "Invalid option. Specify -B or -D"
|
assert False, "Invalid option. Specify -B or -D"
|
||||||
filename = sys.argv[2]
|
filename = sys.argv[2]
|
||||||
|
|
||||||
print(f"Processing {filename}")
|
print(f"Processing {filename}: Table{table}")
|
||||||
status = verify_table(table, filename)
|
status = verify_table(table, filename)
|
||||||
return status
|
return status
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue