about summary refs log tree commit diff
path: root/.venv/lib/python3.12/site-packages/isodate/tzinfo.py
diff options
context:
space:
mode:
authorS. Solomon Darnell2025-03-28 21:52:21 -0500
committerS. Solomon Darnell2025-03-28 21:52:21 -0500
commit4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch)
treeee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/isodate/tzinfo.py
parentcc961e04ba734dd72309fb548a2f97d67d578813 (diff)
downloadgn-ai-master.tar.gz
two version of R2R are here HEAD master
Diffstat (limited to '.venv/lib/python3.12/site-packages/isodate/tzinfo.py')
-rw-r--r--.venv/lib/python3.12/site-packages/isodate/tzinfo.py166
1 files changed, 166 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/isodate/tzinfo.py b/.venv/lib/python3.12/site-packages/isodate/tzinfo.py
new file mode 100644
index 00000000..726c54a3
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/isodate/tzinfo.py
@@ -0,0 +1,166 @@
+"""
+This module provides some datetime.tzinfo implementations.
+
+All those classes are taken from the Python documentation.
+"""
+
+import time
+from datetime import timedelta, tzinfo
+
+ZERO = timedelta(0)
+# constant for zero time offset.
+
+
+class Utc(tzinfo):
+    """UTC
+
+    Universal time coordinated time zone.
+    """
+
+    def utcoffset(self, dt):
+        """
+        Return offset from UTC in minutes east of UTC, which is ZERO for UTC.
+        """
+        return ZERO
+
+    def tzname(self, dt):
+        """
+        Return the time zone name corresponding to the datetime object dt,
+        as a string.
+        """
+        return "UTC"
+
+    def dst(self, dt):
+        """
+        Return the daylight saving time (DST) adjustment, in minutes east
+        of UTC.
+        """
+        return ZERO
+
+    def __reduce__(self):
+        """
+        When unpickling a Utc object, return the default instance below, UTC.
+        """
+        return _Utc, ()
+
+
+UTC = Utc()
+# the default instance for UTC.
+
+
+def _Utc():
+    """
+    Helper function for unpickling a Utc object.
+    """
+    return UTC
+
+
+class FixedOffset(tzinfo):
+    """
+    A class building tzinfo objects for fixed-offset time zones.
+
+    Note that FixedOffset(0, 0, "UTC") or FixedOffset() is a different way to
+    build a UTC tzinfo object.
+    """
+
+    def __init__(self, offset_hours=0, offset_minutes=0, name="UTC"):
+        """
+        Initialise an instance with time offset and name.
+        The time offset should be positive for time zones east of UTC
+        and negate for time zones west of UTC.
+        """
+        self.__offset = timedelta(hours=offset_hours, minutes=offset_minutes)
+        self.__name = name
+
+    def utcoffset(self, dt):
+        """
+        Return offset from UTC in minutes of UTC.
+        """
+        return self.__offset
+
+    def tzname(self, dt):
+        """
+        Return the time zone name corresponding to the datetime object dt, as a
+        string.
+        """
+        return self.__name
+
+    def dst(self, dt):
+        """
+        Return the daylight saving time (DST) adjustment, in minutes east of
+        UTC.
+        """
+        return ZERO
+
+    def __repr__(self):
+        """
+        Return nicely formatted repr string.
+        """
+        return "<FixedOffset %r>" % self.__name
+
+
+STDOFFSET = timedelta(seconds=-time.timezone)
+# locale time zone offset
+
+# calculate local daylight saving offset if any.
+if time.daylight:
+    DSTOFFSET = timedelta(seconds=-time.altzone)
+else:
+    DSTOFFSET = STDOFFSET
+
+DSTDIFF = DSTOFFSET - STDOFFSET
+# difference between local time zone and local DST time zone
+
+
+class LocalTimezone(tzinfo):
+    """
+    A class capturing the platform's idea of local time.
+    """
+
+    def utcoffset(self, dt):
+        """
+        Return offset from UTC in minutes of UTC.
+        """
+        if self._isdst(dt):
+            return DSTOFFSET
+        else:
+            return STDOFFSET
+
+    def dst(self, dt):
+        """
+        Return daylight saving offset.
+        """
+        if self._isdst(dt):
+            return DSTDIFF
+        else:
+            return ZERO
+
+    def tzname(self, dt):
+        """
+        Return the time zone name corresponding to the datetime object dt, as a
+        string.
+        """
+        return time.tzname[self._isdst(dt)]
+
+    def _isdst(self, dt):
+        """
+        Returns true if DST is active for given datetime object dt.
+        """
+        tt = (
+            dt.year,
+            dt.month,
+            dt.day,
+            dt.hour,
+            dt.minute,
+            dt.second,
+            dt.weekday(),
+            0,
+            -1,
+        )
+        stamp = time.mktime(tt)
+        tt = time.localtime(stamp)
+        return tt.tm_isdst > 0
+
+
+# the default instance for local time zone.
+LOCAL = LocalTimezone()