MetOffice / MetOffice/SimSys_Scripts

Lowercase and CamelCase checking of module imports in UMDP3 checker

Ouverte
#220 0 commentaires 0 réactions 1 personne assignée Voir sur GitHub

@Pierre-siddall y travaille déjà.

Depuis le 28/4/2026.

bug
Langage dominant
Python
Étoiles
9
Forks
19
Merge moyen
5 j 48 min
PR mergées (30 j)
4

Description

During the runtime of `umdp3_conformance.py` it was noted that changing module imports to be uppercase did not result in a failure being registered in the output of the script as expected. `umdp3_conformance.py` calls the following code in `umdp3_checker_rules.py`

```python
def lowercase_variable_names(self, lines: List[str]) -> TestResult:
"""Check for lowercase or CamelCase variable names only"""
"""
TODO: This is a very simplistic check and will not detect many
cases which break UMDP3. I suspect the Perl Predecessor concatenated
continuation lines prior to 'cleaning' and checking. Having identified
a declaration, it also then scanned the rest of the file for that
variable name in any case."""
failures = 0
error_log = {}
count = -1
for count, line in enumerate(lines):
clean_line = self.remove_quoted(line)
clean_line = re.sub(r"!.*$", "", clean_line)

# Simple check for UPPERCASE variable declarations
if re.search(
r"^\s*(INTEGER|REAL|LOGICAL|CHARACTER|TYPE)\s*.*::\s*[A-Z_]+",
clean_line,
re.IGNORECASE,
):
clean_line = re.sub(
r"^\s*(INTEGER|REAL|LOGICAL|CHARACTER|TYPE)\s*.*::\s*",
"",
clean_line,
)
if match := re.search(r"([A-Z]{2,})", clean_line):
self.add_extra_error(f"UPPERCASE variable name : {match[1]}")
failures += 1
error_log = self.add_error_log(
error_log, f"UPPERCASE variable name {match[1]}", count +1
)

output = f"Checked {count + 1} lines, found {failures} failures."
return TestResult(
checker_name="Lowercase or CamelCase variable names only",
failure_count=failures,
passed=(failures == 0),
output=output,
errors=error_log,
)
```

addressing this issue will involve a refactor of this function to ensure module level imports are checked.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.