From ae2756e3d6d63ad7cc2d36ffdd2e5303e12a94aa Mon Sep 17 00:00:00 2001
From: Anne Philipp <anne.philipp@univie.ac.at>
Date: Fri, 15 Feb 2019 16:46:45 +0100
Subject: [PATCH] added a check for the number parameter

---
 source/python/classes/ControlFile.py |  4 ++-
 source/python/mods/checks.py         | 40 ++++++++++++++++++++++++++++
 2 files changed, 43 insertions(+), 1 deletion(-)

diff --git a/source/python/classes/ControlFile.py b/source/python/classes/ControlFile.py
index b625299..772169d 100644
--- a/source/python/classes/ControlFile.py
+++ b/source/python/classes/ControlFile.py
@@ -58,7 +58,7 @@ from mods.checks import (check_grid, check_area, check_levels, check_purefc,
                          check_basetime, check_public, check_acctype,
                          check_acctime, check_accmaxstep, check_time,
                          check_logicals_type, check_len_type_time_step,
-                         check_addpar, check_job_chunk)
+                         check_addpar, check_job_chunk, check_number)
 
 # ------------------------------------------------------------------------------
 # CLASS
@@ -645,6 +645,8 @@ class ControlFile(object):
 
         self.job_chunk = check_job_chunk(self.job_chunk)
 
+        self.number = check_number(self.number, self.mailfail)
+
         return
 
     def to_list(self):
diff --git a/source/python/mods/checks.py b/source/python/mods/checks.py
index cb85615..5c82032 100644
--- a/source/python/mods/checks.py
+++ b/source/python/mods/checks.py
@@ -29,6 +29,7 @@ import _config
 import exceptions
 from tools import my_error, silent_remove
 from datetime import datetime
+import numpy as np
 # ------------------------------------------------------------------------------
 # FUNCTIONS
 # ------------------------------------------------------------------------------
@@ -824,3 +825,42 @@ def check_job_chunk(job_chunk):
         pass
 
     return job_chunk
+
+
+def check_number(number, mailfail):
+    '''Check for correct string format of ensemble member numbers.
+
+    Parameters
+    ----------
+    number : str
+        List of ensemble member forecast runs.
+
+    mailfail : list of str
+        Contains all email addresses which should be notified.
+        It might also contain just the ecmwf user name which will trigger
+        mailing to the associated email address for this user.
+
+    Return
+    ------
+    number : str
+        String with list of ensemble member forecast runs. E.g. '01/02/03/04'
+    '''
+
+    if '/' in number:
+        numbers = number.split('/')
+        if 'to' in number.lower() and 'by' in number.lower():
+            number = '{:0>3}'.format(int(numbers[0])) + '/TO/' + \
+                     '{:0>3}'.format(int(numbers[2])) + '/BY/' + \
+                     '{:0>3}'.format(int(numbers[4]))
+        elif 'to' in number.lower() and 'by' not in number.lower():
+            number = '{:0>3}'.format(int(numbers[0])) + '/TO/' + \
+                     '{:0>3}'.format(int(numbers[2]))
+        else:
+            numbers = ['{:0>3}'.format(i) for i in numbers]
+            number = '{:0>3}/'.join(numbers)
+    elif number.isdigit():
+        number = '{:0>3}'.format(int(number))
+    else:
+        pass
+
+    return number
-- 
GitLab