예제 #1
0
    def today(self):
        if not self._processed_today:
            self._today = datetimeutils.fill_in_datetime_strings(self._today)
            self._today = datetimeutils.to_datetime(self._today)
            self._processed_today = True

        return self._today
예제 #2
0
    def replace_config_wildcards(cls, val):
        if isinstance(val, dict):
            for k in val:
                val[k] = cls.replace_config_wildcards(val[k])
        elif isinstance(val, list):
            val = [cls.replace_config_wildcards(v) for v in val]
        elif hasattr(val, 'lower'):  # i.e. it's a string
            if val:
                # first, fill in any datetime control codes or wildcards
                val = datetimeutils.fill_in_datetime_strings(val,
                                                             today=cls._TODAY)

                # then, see if the resulting string purely represents a datetime
                try:
                    val = datetimeutils.to_datetime(val, limit_range=True)
                except BlueSkyDatetimeValueError:
                    pass

                if hasattr(val, 'capitalize'):
                    # This gets rid of datetime parsing busters embedded
                    # in strings to prevent conversion to datetime object
                    val = val.replace('{datetime-parse-buster}', '')

                    if cls._RUN_ID:
                        val = val.replace('{run_id}', cls._RUN_ID)

                # TODO: any other replacements?

        return val
예제 #3
0
    def run_id(self, run_id):
        if self._maually_set_run_id:
            raise TypeError(self.RUN_ID_IS_IMMUTABLE_MSG)

        self._maually_set_run_id = True
        logging.debug('filling in run_id wildcards')
        self._run_id = datetimeutils.fill_in_datetime_strings(run_id,
                                                              today=self.today)

        Config.set_run_id(self._run_id)
예제 #4
0
 def _stream(self, file_name, flag):  #, do_strip_newlines):
     if file_name:
         file_name = datetimeutils.fill_in_datetime_strings(
             file_name, today=self.today)
         file_name = file_name.replace('{run_id}', self.run_id)
         return open(file_name, flag)
     else:
         if flag == 'r':
             return sys.stdin
         else:
             return sys.stdout
예제 #5
0
파일: fires.py 프로젝트: meersens/bluesky
 def _stream(self, file_name, flag):  #, do_strip_newlines):
     if file_name:
         file_name = datetimeutils.fill_in_datetime_strings(
             file_name, today=self.today)
         file_name = file_name.replace('{run_id}', self.run_id)
         if file_name.startswith('http'):
             logging.debug("Loading input over http: %s", file_name)
             r = requests.get(file_name)
             return io.StringIO(r.text)
         else:
             logging.debug("Loading local file: %s", file_name)
             return open(file_name, flag)
     else:
         if flag == 'r':
             return sys.stdin
         else:
             return sys.stdout
예제 #6
0
    def test_today_not_defined(self):
        # None value - leave as is
        assert datetimeutils.fill_in_datetime_strings(None) == None

        # invalid value - leave as is
        assert datetimeutils.fill_in_datetime_strings(123) == 123

        # string with nothing to replace
        assert datetimeutils.fill_in_datetime_strings("sljdfsd") == "sljdfsd"

        # invalid and thus not-replaceable
        assert datetimeutils.fill_in_datetime_strings("{today4}") == "{today4}"
        assert datetimeutils.fill_in_datetime_strings(
            "{yesterday++1}") == "{yesterday++1}"
        assert datetimeutils.fill_in_datetime_strings(
            "{timestamp++1}") == "{timestamp++1}"
        assert datetimeutils.fill_in_datetime_strings(
            "{today--1:%Y}") == "{today--1:%Y}"

        # control codes outside of '{(today|tomorrow):' + '}'  and thus not replaced
        assert datetimeutils.fill_in_datetime_strings("%Y-%m-%d") == "%Y-%m-%d"

        # strings with replacements
        assert datetimeutils.fill_in_datetime_strings("{today}") == "20160114"
        assert datetimeutils.fill_in_datetime_strings(
            "{today}00") == "2016011400"
        assert datetimeutils.fill_in_datetime_strings(
            "{today+1}") == "20160115"
        assert datetimeutils.fill_in_datetime_strings(
            "{today-4}") == "20160110"
        assert datetimeutils.fill_in_datetime_strings(
            "{today-4}00") == "2016011000"
        assert datetimeutils.fill_in_datetime_strings(
            "{yesterday+3}") == "20160116"
        assert datetimeutils.fill_in_datetime_strings(
            "{yesterday-4}") == "20160109"
        assert datetimeutils.fill_in_datetime_strings(
            "{yesterday-4}12") == "2016010912"
        assert datetimeutils.fill_in_datetime_strings(
            "{timestamp+3}") == "20160117130111"
        assert datetimeutils.fill_in_datetime_strings(
            "{timestamp-4}") == "20160110130111"
        assert datetimeutils.fill_in_datetime_strings(
            "{timestamp-4}-0") == "20160110130111-0"
        assert datetimeutils.fill_in_datetime_strings(
            "{today:%Y-%m-%d}") == "2016-01-14"
        assert datetimeutils.fill_in_datetime_strings(
            "{today:%Y-%m-%d}T12Z") == "2016-01-14T12Z"
        assert datetimeutils.fill_in_datetime_strings(
            "{today+2:%Y-%m-%d}") == "2016-01-16"
        assert datetimeutils.fill_in_datetime_strings(
            "{today-2:%Y-%m-%d}") == "2016-01-12"
        assert datetimeutils.fill_in_datetime_strings(
            "{today-3:%Y-%m-%d}T12Z") == "2016-01-11T12Z"
        assert datetimeutils.fill_in_datetime_strings(
            "{yesterday:%Y-%m-%d}") == "2016-01-13"
        assert datetimeutils.fill_in_datetime_strings(
            "{yesterday:%Y-%m-%d}T12Z") == "2016-01-13T12Z"
        assert datetimeutils.fill_in_datetime_strings(
            "{yesterday+1:%Y-%m-%d}") == "2016-01-14"
        assert datetimeutils.fill_in_datetime_strings(
            "{yesterday-4:%Y-%m-%d}") == "2016-01-09"
        assert datetimeutils.fill_in_datetime_strings(
            "{yesterday-5:%Y-%m-%d}T12Z") == "2016-01-08T12Z"
        assert datetimeutils.fill_in_datetime_strings(
            "{timestamp:%Y-%m-%dT%H}") == "2016-01-14T13"
        assert datetimeutils.fill_in_datetime_strings(
            "{timestamp:%Y-%m-%d}T12Z") == "2016-01-14T12Z"
        assert datetimeutils.fill_in_datetime_strings(
            "{timestamp+1:%Y-%m-%d}") == "2016-01-15"
        assert datetimeutils.fill_in_datetime_strings(
            "{timestamp-4:%Y-%m-%d}") == "2016-01-10"
        assert datetimeutils.fill_in_datetime_strings(
            "{timestamp-5:%Y-%m-%d}T12Z") == "2016-01-09T12Z"

        val = datetimeutils.fill_in_datetime_strings(
            "{today}-sdf-{yesterday:%Y-%m-%d}T12Z-%Y__%m-%d-{today:%m_%d}-"
            "{yesterday}-{sdf}-{today:%m%d%Y}-{yesterday:%m-%d-%Y}"
            "{today-2}=={today-3:%Y-%m-%d}-{yesterday-2}-{yesterday-3:%Y-%m-%d}"
            "{today+2}=={yesterday+2:%Y-%m-%d}"
            "%Y%m%dT%H%M%S"
            "{timestamp}")
        assert val == ("20160114-sdf-2016-01-13T12Z-%Y__%m-%d-01_14-"
                       "20160113-{sdf}-01142016-01-13-2016"
                       "20160112==2016-01-11-20160111-2016-01-10"
                       "20160116==2016-01-15"
                       "%Y%m%dT%H%M%S"
                       "20160114130111")
예제 #7
0
    def test_today_defined(self):
        # None value - leave as is
        assert datetimeutils.fill_in_datetime_strings(None,
                                                      today=datetime.date(
                                                          2016, 2, 15)) == None
        assert datetimeutils.fill_in_datetime_strings(None,
                                                      today=datetime.datetime(
                                                          2016, 2, 15,
                                                          0)) == None

        # invalid value - leave as is
        assert datetimeutils.fill_in_datetime_strings(123,
                                                      today=datetime.date(
                                                          2016, 2, 15)) == 123
        assert datetimeutils.fill_in_datetime_strings(123,
                                                      today=datetime.datetime(
                                                          2016, 2, 15,
                                                          1)) == 123

        # string with nothing to replace
        assert datetimeutils.fill_in_datetime_strings("sljdfsd",
                                                      today=datetime.date(
                                                          2016, 2,
                                                          15)) == "sljdfsd"
        assert datetimeutils.fill_in_datetime_strings("sljdfsd",
                                                      today=datetime.datetime(
                                                          2016, 2, 15,
                                                          1)) == "sljdfsd"

        # invalid and thus not-replaceable
        assert datetimeutils.fill_in_datetime_strings("{today4}",
                                                      today=datetime.date(
                                                          2016, 2,
                                                          15)) == "{today4}"
        assert datetimeutils.fill_in_datetime_strings(
            "{yesterday++1}", today=datetime.date(2016, 2,
                                                  15)) == "{yesterday++1}"
        assert datetimeutils.fill_in_datetime_strings(
            "{timestamp++1}", today=datetime.date(2016, 2,
                                                  15)) == "{timestamp++1}"
        assert datetimeutils.fill_in_datetime_strings(
            "{today--1:%Y}", today=datetime.date(2016, 2,
                                                 15)) == "{today--1:%Y}"

        # control codes outside of '{(today|tomorrow):' + '}'  and thus not replaced
        assert datetimeutils.fill_in_datetime_strings("%Y-%m-%d") == "%Y-%m-%d"

        # strings with replacements
        assert datetimeutils.fill_in_datetime_strings("{today}",
                                                      today=datetime.date(
                                                          2016, 2,
                                                          15)) == "20160215"
        assert datetimeutils.fill_in_datetime_strings("{today}",
                                                      today=datetime.datetime(
                                                          2016, 2, 15,
                                                          1)) == "20160215"

        assert datetimeutils.fill_in_datetime_strings("{today-1}",
                                                      today=datetime.date(
                                                          2016, 2,
                                                          15)) == "20160214"
        assert datetimeutils.fill_in_datetime_strings("{today-2}",
                                                      today=datetime.datetime(
                                                          2016, 2, 15,
                                                          1)) == "20160213"

        assert datetimeutils.fill_in_datetime_strings("{yesterday}",
                                                      today=datetime.date(
                                                          2016, 2,
                                                          15)) == "20160214"
        assert datetimeutils.fill_in_datetime_strings("{yesterday}",
                                                      today=datetime.datetime(
                                                          2016, 2, 15,
                                                          1)) == "20160214"

        assert datetimeutils.fill_in_datetime_strings("{yesterday-1}",
                                                      today=datetime.date(
                                                          2016, 2,
                                                          15)) == "20160213"
        assert datetimeutils.fill_in_datetime_strings("{yesterday-2}",
                                                      today=datetime.datetime(
                                                          2016, 2, 15,
                                                          1)) == "20160212"

        assert datetimeutils.fill_in_datetime_strings(
            "{timestamp}", today=datetime.date(2016, 2,
                                               15)) == "20160110031122"
        assert datetimeutils.fill_in_datetime_strings(
            "{timestamp}", today=datetime.datetime(2016, 2, 15,
                                                   1)) == "20160110031122"

        assert datetimeutils.fill_in_datetime_strings(
            "{timestamp-1}", today=datetime.date(2016, 2,
                                                 15)) == "20160109031122"
        assert datetimeutils.fill_in_datetime_strings(
            "{timestamp-2}", today=datetime.datetime(2016, 2, 15,
                                                     1)) == "20160108031122"

        assert datetimeutils.fill_in_datetime_strings("{today:%Y-%m-%d}",
                                                      today=datetime.date(
                                                          2016, 2,
                                                          15)) == "2016-02-15"
        assert datetimeutils.fill_in_datetime_strings("{today:%Y-%m-%d}",
                                                      today=datetime.datetime(
                                                          2016, 2, 15,
                                                          1)) == "2016-02-15"

        assert datetimeutils.fill_in_datetime_strings("{today-1:%Y-%m-%d}",
                                                      today=datetime.date(
                                                          2016, 2,
                                                          15)) == "2016-02-14"
        assert datetimeutils.fill_in_datetime_strings("{today-2:%Y-%m-%d}",
                                                      today=datetime.datetime(
                                                          2016, 2, 15,
                                                          1)) == "2016-02-13"

        assert datetimeutils.fill_in_datetime_strings("{yesterday:%Y-%m-%d}",
                                                      today=datetime.date(
                                                          2016, 2,
                                                          15)) == "2016-02-14"
        assert datetimeutils.fill_in_datetime_strings("{yesterday:%Y-%m-%d}",
                                                      today=datetime.datetime(
                                                          2016, 2, 15,
                                                          1)) == "2016-02-14"

        assert datetimeutils.fill_in_datetime_strings("{yesterday-1:%Y-%m-%d}",
                                                      today=datetime.date(
                                                          2016, 2,
                                                          15)) == "2016-02-13"
        assert datetimeutils.fill_in_datetime_strings("{yesterday-2:%Y-%m-%d}",
                                                      today=datetime.datetime(
                                                          2016, 2, 15,
                                                          1)) == "2016-02-12"

        assert datetimeutils.fill_in_datetime_strings("{timestamp:%Y-%m-%d}",
                                                      today=datetime.date(
                                                          2016, 2,
                                                          15)) == "2016-01-10"
        assert datetimeutils.fill_in_datetime_strings(
            "{timestamp:%Y-%m-%dT%H:%M:%S}",
            today=datetime.datetime(2016, 2, 15, 1)) == "2016-01-10T03:11:22"

        assert datetimeutils.fill_in_datetime_strings("{timestamp-1:%Y-%m-%d}",
                                                      today=datetime.date(
                                                          2016, 2,
                                                          15)) == "2016-01-09"
        assert datetimeutils.fill_in_datetime_strings(
            "{timestamp-2:%Y-%m-%dT%H:%M:%S}",
            today=datetime.datetime(2016, 2, 15, 1)) == "2016-01-08T03:11:22"

        val = datetimeutils.fill_in_datetime_strings(
            "{today}-sdf-{yesterday:%Y-%m-%d}T12Z-%Y__%m-%d-{today:%m_%d}-"
            "{yesterday}-{sdf}-{today:%m%d%Y}-{yesterday:%m-%d-%Y}"
            "{today-2}=={today-3:%Y-%m-%d}-{yesterday-2}-{yesterday-3:%Y-%m-%d}"
            "{today+2}=={yesterday+2:%Y-%m-%d}"
            "%Y%m%dT%H%M%S"
            "{timestamp}",
            today=datetime.date(2016, 1, 14))
        assert val == ("20160114-sdf-2016-01-13T12Z-%Y__%m-%d-01_14-"
                       "20160113-{sdf}-01142016-01-13-2016"
                       "20160112==2016-01-11-20160111-2016-01-10"
                       "20160116==2016-01-15"
                       "%Y%m%dT%H%M%S"
                       "20160110031122")
예제 #8
0
파일: fires.py 프로젝트: meersens/bluesky
    def run_id(self, run_id):
        logging.debug('filling in run_id wildcards')
        self._run_id = datetimeutils.fill_in_datetime_strings(run_id,
                                                              today=self.today)

        Config().set_run_id(self._run_id)
예제 #9
0
파일: fires.py 프로젝트: meersens/bluesky
 def today(self, today):
     today = datetimeutils.fill_in_datetime_strings(today)
     today = datetimeutils.to_datetime(today)
     self._today = today
     Config().set_today(self._today)