diff env/lib/python3.7/site-packages/isodate/isostrf.py @ 5:9b1c78e6ba9c draft default tip

"planemo upload commit 6c0a8142489327ece472c84e558c47da711a9142"
author shellac
date Mon, 01 Jun 2020 08:59:25 -0400
parents 79f47841a781
children
line wrap: on
line diff
--- a/env/lib/python3.7/site-packages/isodate/isostrf.py	Thu May 14 16:47:39 2020 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,214 +0,0 @@
-##############################################################################
-# Copyright 2009, Gerhard Weis
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-#  * Redistributions of source code must retain the above copyright notice,
-#    this list of conditions and the following disclaimer.
-#  * Redistributions in binary form must reproduce the above copyright notice,
-#    this list of conditions and the following disclaimer in the documentation
-#    and/or other materials provided with the distribution.
-#  * Neither the name of the authors nor the names of its contributors
-#    may be used to endorse or promote products derived from this software
-#    without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT
-##############################################################################
-"""
-This module provides an alternative strftime method.
-
-The strftime method in this module allows only a subset of Python's strftime
-format codes, plus a few additional. It supports the full range of date values
-possible with standard Python date/time objects. Furthermore there are several
-pr-defined format strings in this module to make ease producing of ISO 8601
-conforming strings.
-"""
-import re
-from datetime import date, timedelta
-
-from isodate.duration import Duration
-from isodate.isotzinfo import tz_isoformat
-
-# Date specific format strings
-DATE_BAS_COMPLETE = '%Y%m%d'
-DATE_EXT_COMPLETE = '%Y-%m-%d'
-DATE_BAS_WEEK_COMPLETE = '%YW%W%w'
-DATE_EXT_WEEK_COMPLETE = '%Y-W%W-%w'
-DATE_BAS_ORD_COMPLETE = '%Y%j'
-DATE_EXT_ORD_COMPLETE = '%Y-%j'
-DATE_BAS_WEEK = '%YW%W'
-DATE_EXT_WEEK = '%Y-W%W'
-DATE_BAS_MONTH = '%Y%m'
-DATE_EXT_MONTH = '%Y-%m'
-DATE_YEAR = '%Y'
-DATE_CENTURY = '%C'
-
-# Time specific format strings
-TIME_BAS_COMPLETE = '%H%M%S'
-TIME_EXT_COMPLETE = '%H:%M:%S'
-TIME_BAS_MINUTE = '%H%M'
-TIME_EXT_MINUTE = '%H:%M'
-TIME_HOUR = '%H'
-
-# Time zone formats
-TZ_BAS = '%z'
-TZ_EXT = '%Z'
-TZ_HOUR = '%h'
-
-# DateTime formats
-DT_EXT_COMPLETE = DATE_EXT_COMPLETE + 'T' + TIME_EXT_COMPLETE + TZ_EXT
-DT_BAS_COMPLETE = DATE_BAS_COMPLETE + 'T' + TIME_BAS_COMPLETE + TZ_BAS
-DT_EXT_ORD_COMPLETE = DATE_EXT_ORD_COMPLETE + 'T' + TIME_EXT_COMPLETE + TZ_EXT
-DT_BAS_ORD_COMPLETE = DATE_BAS_ORD_COMPLETE + 'T' + TIME_BAS_COMPLETE + TZ_BAS
-DT_EXT_WEEK_COMPLETE = (DATE_EXT_WEEK_COMPLETE + 'T' +
-                        TIME_EXT_COMPLETE + TZ_EXT)
-DT_BAS_WEEK_COMPLETE = (DATE_BAS_WEEK_COMPLETE + 'T' +
-                        TIME_BAS_COMPLETE + TZ_BAS)
-
-# Duration formts
-D_DEFAULT = 'P%P'
-D_WEEK = 'P%p'
-D_ALT_EXT = 'P' + DATE_EXT_COMPLETE + 'T' + TIME_EXT_COMPLETE
-D_ALT_BAS = 'P' + DATE_BAS_COMPLETE + 'T' + TIME_BAS_COMPLETE
-D_ALT_EXT_ORD = 'P' + DATE_EXT_ORD_COMPLETE + 'T' + TIME_EXT_COMPLETE
-D_ALT_BAS_ORD = 'P' + DATE_BAS_ORD_COMPLETE + 'T' + TIME_BAS_COMPLETE
-
-STRF_DT_MAP = {'%d': lambda tdt, yds: '%02d' % tdt.day,
-               '%f': lambda tdt, yds: '%06d' % tdt.microsecond,
-               '%H': lambda tdt, yds: '%02d' % tdt.hour,
-               '%j': lambda tdt, yds: '%03d' % (tdt.toordinal() -
-                                                date(tdt.year,
-                                                     1, 1).toordinal() +
-                                                1),
-               '%m': lambda tdt, yds: '%02d' % tdt.month,
-               '%M': lambda tdt, yds: '%02d' % tdt.minute,
-               '%S': lambda tdt, yds: '%02d' % tdt.second,
-               '%w': lambda tdt, yds: '%1d' % tdt.isoweekday(),
-               '%W': lambda tdt, yds: '%02d' % tdt.isocalendar()[1],
-               '%Y': lambda tdt, yds: (((yds != 4) and '+') or '') +
-                                      (('%%0%dd' % yds) % tdt.year),
-               '%C': lambda tdt, yds: (((yds != 4) and '+') or '') +
-                                      (('%%0%dd' % (yds - 2)) %
-                                       (tdt.year / 100)),
-               '%h': lambda tdt, yds: tz_isoformat(tdt, '%h'),
-               '%Z': lambda tdt, yds: tz_isoformat(tdt, '%Z'),
-               '%z': lambda tdt, yds: tz_isoformat(tdt, '%z'),
-               '%%': lambda tdt, yds: '%'}
-
-STRF_D_MAP = {'%d': lambda tdt, yds: '%02d' % tdt.days,
-              '%f': lambda tdt, yds: '%06d' % tdt.microseconds,
-              '%H': lambda tdt, yds: '%02d' % (tdt.seconds / 60 / 60),
-              '%m': lambda tdt, yds: '%02d' % tdt.months,
-              '%M': lambda tdt, yds: '%02d' % ((tdt.seconds / 60) % 60),
-              '%S': lambda tdt, yds: '%02d' % (tdt.seconds % 60),
-              '%W': lambda tdt, yds: '%02d' % (abs(tdt.days / 7)),
-              '%Y': lambda tdt, yds: (((yds != 4) and '+') or '') +
-                                     (('%%0%dd' % yds) % tdt.years),
-              '%C': lambda tdt, yds: (((yds != 4) and '+') or '') +
-                                     (('%%0%dd' % (yds - 2)) %
-                                      (tdt.years / 100)),
-              '%%': lambda tdt, yds: '%'}
-
-
-def _strfduration(tdt, format, yeardigits=4):
-    '''
-    this is the work method for timedelta and Duration instances.
-
-    see strftime for more details.
-    '''
-    def repl(match):
-        '''
-        lookup format command and return corresponding replacement.
-        '''
-        if match.group(0) in STRF_D_MAP:
-            return STRF_D_MAP[match.group(0)](tdt, yeardigits)
-        elif match.group(0) == '%P':
-            ret = []
-            if isinstance(tdt, Duration):
-                if tdt.years:
-                    ret.append('%sY' % abs(tdt.years))
-                if tdt.months:
-                    ret.append('%sM' % abs(tdt.months))
-            usecs = abs((tdt.days * 24 * 60 * 60 + tdt.seconds) * 1000000 +
-                        tdt.microseconds)
-            seconds, usecs = divmod(usecs, 1000000)
-            minutes, seconds = divmod(seconds, 60)
-            hours, minutes = divmod(minutes, 60)
-            days, hours = divmod(hours, 24)
-            if days:
-                ret.append('%sD' % days)
-            if hours or minutes or seconds or usecs:
-                ret.append('T')
-                if hours:
-                    ret.append('%sH' % hours)
-                if minutes:
-                    ret.append('%sM' % minutes)
-                if seconds or usecs:
-                    if usecs:
-                        ret.append(("%d.%06d" % (seconds, usecs)).rstrip('0'))
-                    else:
-                        ret.append("%d" % seconds)
-                    ret.append('S')
-            # at least one component has to be there.
-            return ret and ''.join(ret) or '0D'
-        elif match.group(0) == '%p':
-            return str(abs(tdt.days // 7)) + 'W'
-        return match.group(0)
-    return re.sub('%d|%f|%H|%m|%M|%S|%W|%Y|%C|%%|%P|%p', repl,
-                  format)
-
-
-def _strfdt(tdt, format, yeardigits=4):
-    '''
-    this is the work method for time and date instances.
-
-    see strftime for more details.
-    '''
-    def repl(match):
-        '''
-        lookup format command and return corresponding replacement.
-        '''
-        if match.group(0) in STRF_DT_MAP:
-            return STRF_DT_MAP[match.group(0)](tdt, yeardigits)
-        return match.group(0)
-    return re.sub('%d|%f|%H|%j|%m|%M|%S|%w|%W|%Y|%C|%z|%Z|%h|%%', repl,
-                  format)
-
-
-def strftime(tdt, format, yeardigits=4):
-    '''Directive    Meaning    Notes
-    %d    Day of the month as a decimal number [01,31].
-    %f    Microsecond as a decimal number [0,999999], zero-padded
-          on the left (1)
-    %H    Hour (24-hour clock) as a decimal number [00,23].
-    %j    Day of the year as a decimal number [001,366].
-    %m    Month as a decimal number [01,12].
-    %M    Minute as a decimal number [00,59].
-    %S    Second as a decimal number [00,61].    (3)
-    %w    Weekday as a decimal number [0(Monday),6].
-    %W    Week number of the year (Monday as the first day of the week)
-          as a decimal number [00,53]. All days in a new year preceding the
-          first Monday are considered to be in week 0.  (4)
-    %Y    Year with century as a decimal number. [0000,9999]
-    %C    Century as a decimal number. [00,99]
-    %z    UTC offset in the form +HHMM or -HHMM (empty string if the
-          object is naive).    (5)
-    %Z    Time zone name (empty string if the object is naive).
-    %P    ISO8601 duration format.
-    %p    ISO8601 duration format in weeks.
-    %%    A literal '%' character.
-
-    '''
-    if isinstance(tdt, (timedelta, Duration)):
-        return _strfduration(tdt, format, yeardigits)
-    return _strfdt(tdt, format, yeardigits)