MCPcopy Index your code
hub / github.com/python-pendulum/pendulum / _safe_timezone

Function _safe_timezone

src/pendulum/__init__.py:87–122  ·  view source on GitHub ↗

Creates a timezone instance from a string, Timezone, TimezoneInfo or integer offset.

(
    obj: str | float | _datetime.tzinfo | Timezone | FixedTimezone | None,
    dt: _datetime.datetime | None = None,
)

Source from the content-addressed store, hash-verified

85
86
87def _safe_timezone(
88 obj: str | float | _datetime.tzinfo | Timezone | FixedTimezone | None,
89 dt: _datetime.datetime | None = None,
90) -> Timezone | FixedTimezone:
91 """
92 Creates a timezone instance
93 from a string, Timezone, TimezoneInfo or integer offset.
94 """
95 if isinstance(obj, (Timezone, FixedTimezone)):
96 return obj
97
98 if obj is None or obj == "local":
99 return local_timezone()
100
101 if isinstance(obj, (int, float)):
102 obj = int(obj * 60 * 60)
103 elif isinstance(obj, _datetime.tzinfo):
104 # zoneinfo
105 if hasattr(obj, "key"):
106 obj = obj.key
107 # pytz
108 elif hasattr(obj, "localize"):
109 obj = obj.zone # type: ignore[attr-defined]
110 elif obj.tzname(None) == "UTC":
111 return UTC
112 else:
113 offset = obj.utcoffset(dt)
114
115 if offset is None:
116 offset = _datetime.timedelta(0)
117
118 obj = int(offset.total_seconds())
119
120 obj = cast("Union[str, int]", obj)
121
122 return timezone(obj)
123
124
125# Public API

Calls 5

local_timezoneFunction · 0.90
timezoneFunction · 0.85
tznameMethod · 0.80
utcoffsetMethod · 0.80
total_secondsMethod · 0.45

Tested by 1

Used in the wild real call sites across dependent graphs

searching dependent graphs…