summaryrefslogtreecommitdiff
path: root/devdocs/python~3.12/library%2Fzoneinfo.html
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2024-04-07 13:41:34 -0500
committerCraig Jennings <c@cjennings.net>2024-04-07 13:41:34 -0500
commit754bbf7a25a8dda49b5d08ef0d0443bbf5af0e36 (patch)
treef1190704f78f04a2b0b4c977d20fe96a828377f1 /devdocs/python~3.12/library%2Fzoneinfo.html
new repository
Diffstat (limited to 'devdocs/python~3.12/library%2Fzoneinfo.html')
-rw-r--r--devdocs/python~3.12/library%2Fzoneinfo.html103
1 files changed, 103 insertions, 0 deletions
diff --git a/devdocs/python~3.12/library%2Fzoneinfo.html b/devdocs/python~3.12/library%2Fzoneinfo.html
new file mode 100644
index 00000000..425eb65a
--- /dev/null
+++ b/devdocs/python~3.12/library%2Fzoneinfo.html
@@ -0,0 +1,103 @@
+ <span id="zoneinfo-iana-time-zone-support"></span><h1>zoneinfo — IANA time zone support</h1> <div class="versionadded"> <p><span class="versionmodified added">New in version 3.9.</span></p> </div> <p><strong>Source code:</strong> <a class="reference external" href="https://github.com/python/cpython/tree/3.12/Lib/zoneinfo">Lib/zoneinfo</a></p> <p>The <a class="reference internal" href="#module-zoneinfo" title="zoneinfo: IANA time zone support"><code>zoneinfo</code></a> module provides a concrete time zone implementation to support the IANA time zone database as originally specified in <span class="target" id="index-0"></span><a class="pep reference external" href="https://peps.python.org/pep-0615/"><strong>PEP 615</strong></a>. By default, <a class="reference internal" href="#module-zoneinfo" title="zoneinfo: IANA time zone support"><code>zoneinfo</code></a> uses the system’s time zone data if available; if no system time zone data is available, the library will fall back to using the first-party <a class="reference external" href="https://pypi.org/project/tzdata/">tzdata</a> package available on PyPI.</p> <div class="admonition seealso"> <p class="admonition-title">See also</p> <dl class="simple"> <dt>
+<code>Module:</code> <a class="reference internal" href="datetime#module-datetime" title="datetime: Basic date and time types."><code>datetime</code></a>
+</dt>
+<dd>
+<p>Provides the <a class="reference internal" href="datetime#datetime.time" title="datetime.time"><code>time</code></a> and <a class="reference internal" href="datetime#datetime.datetime" title="datetime.datetime"><code>datetime</code></a> types with which the <a class="reference internal" href="#zoneinfo.ZoneInfo" title="zoneinfo.ZoneInfo"><code>ZoneInfo</code></a> class is designed to be used.</p> </dd> <dt>Package <a class="reference external" href="https://pypi.org/project/tzdata/">tzdata</a>
+</dt>
+<dd>
+<p>First-party package maintained by the CPython core developers to supply time zone data via PyPI.</p> </dd> </dl> </div> <div class="availability docutils container"> <p><a class="reference internal" href="https://docs.python.org/3.12/library/intro.html#availability"><span class="std std-ref">Availability</span></a>: not Emscripten, not WASI.</p> <p>This module does not work or is not available on WebAssembly platforms <code>wasm32-emscripten</code> and <code>wasm32-wasi</code>. See <a class="reference internal" href="https://docs.python.org/3.12/library/intro.html#wasm-availability"><span class="std std-ref">WebAssembly platforms</span></a> for more information.</p> </div> <section id="using-zoneinfo"> <h2>Using <code>ZoneInfo</code>
+</h2> <p><a class="reference internal" href="#zoneinfo.ZoneInfo" title="zoneinfo.ZoneInfo"><code>ZoneInfo</code></a> is a concrete implementation of the <a class="reference internal" href="datetime#datetime.tzinfo" title="datetime.tzinfo"><code>datetime.tzinfo</code></a> abstract base class, and is intended to be attached to <code>tzinfo</code>, either via the constructor, the <a class="reference internal" href="datetime#datetime.datetime.replace" title="datetime.datetime.replace"><code>datetime.replace</code></a> method or <a class="reference internal" href="datetime#datetime.datetime.astimezone" title="datetime.datetime.astimezone"><code>datetime.astimezone</code></a>:</p> <pre data-language="python">&gt;&gt;&gt; from zoneinfo import ZoneInfo
+&gt;&gt;&gt; from datetime import datetime, timedelta
+
+&gt;&gt;&gt; dt = datetime(2020, 10, 31, 12, tzinfo=ZoneInfo("America/Los_Angeles"))
+&gt;&gt;&gt; print(dt)
+2020-10-31 12:00:00-07:00
+
+&gt;&gt;&gt; dt.tzname()
+'PDT'
+</pre> <p>Datetimes constructed in this way are compatible with datetime arithmetic and handle daylight saving time transitions with no further intervention:</p> <pre data-language="python">&gt;&gt;&gt; dt_add = dt + timedelta(days=1)
+
+&gt;&gt;&gt; print(dt_add)
+2020-11-01 12:00:00-08:00
+
+&gt;&gt;&gt; dt_add.tzname()
+'PST'
+</pre> <p>These time zones also support the <a class="reference internal" href="datetime#datetime.datetime.fold" title="datetime.datetime.fold"><code>fold</code></a> attribute introduced in <span class="target" id="index-1"></span><a class="pep reference external" href="https://peps.python.org/pep-0495/"><strong>PEP 495</strong></a>. During offset transitions which induce ambiguous times (such as a daylight saving time to standard time transition), the offset from <em>before</em> the transition is used when <code>fold=0</code>, and the offset <em>after</em> the transition is used when <code>fold=1</code>, for example:</p> <pre data-language="python">&gt;&gt;&gt; dt = datetime(2020, 11, 1, 1, tzinfo=ZoneInfo("America/Los_Angeles"))
+&gt;&gt;&gt; print(dt)
+2020-11-01 01:00:00-07:00
+
+&gt;&gt;&gt; print(dt.replace(fold=1))
+2020-11-01 01:00:00-08:00
+</pre> <p>When converting from another time zone, the fold will be set to the correct value:</p> <pre data-language="python">&gt;&gt;&gt; from datetime import timezone
+&gt;&gt;&gt; LOS_ANGELES = ZoneInfo("America/Los_Angeles")
+&gt;&gt;&gt; dt_utc = datetime(2020, 11, 1, 8, tzinfo=timezone.utc)
+
+&gt;&gt;&gt; # Before the PDT -&gt; PST transition
+&gt;&gt;&gt; print(dt_utc.astimezone(LOS_ANGELES))
+2020-11-01 01:00:00-07:00
+
+&gt;&gt;&gt; # After the PDT -&gt; PST transition
+&gt;&gt;&gt; print((dt_utc + timedelta(hours=1)).astimezone(LOS_ANGELES))
+2020-11-01 01:00:00-08:00
+</pre> </section> <section id="data-sources"> <h2>Data sources</h2> <p>The <code>zoneinfo</code> module does not directly provide time zone data, and instead pulls time zone information from the system time zone database or the first-party PyPI package <a class="reference external" href="https://pypi.org/project/tzdata/">tzdata</a>, if available. Some systems, including notably Windows systems, do not have an IANA database available, and so for projects targeting cross-platform compatibility that require time zone data, it is recommended to declare a dependency on tzdata. If neither system data nor tzdata are available, all calls to <a class="reference internal" href="#zoneinfo.ZoneInfo" title="zoneinfo.ZoneInfo"><code>ZoneInfo</code></a> will raise <a class="reference internal" href="#zoneinfo.ZoneInfoNotFoundError" title="zoneinfo.ZoneInfoNotFoundError"><code>ZoneInfoNotFoundError</code></a>.</p> <section id="configuring-the-data-sources"> <span id="zoneinfo-data-configuration"></span><h3>Configuring the data sources</h3> <p>When <code>ZoneInfo(key)</code> is called, the constructor first searches the directories specified in <a class="reference internal" href="#zoneinfo.TZPATH" title="zoneinfo.TZPATH"><code>TZPATH</code></a> for a file matching <code>key</code>, and on failure looks for a match in the tzdata package. This behavior can be configured in three ways:</p> <ol class="arabic simple"> <li>The default <a class="reference internal" href="#zoneinfo.TZPATH" title="zoneinfo.TZPATH"><code>TZPATH</code></a> when not otherwise specified can be configured at <a class="reference internal" href="#zoneinfo-data-compile-time-config"><span class="std std-ref">compile time</span></a>.</li> <li>
+<a class="reference internal" href="#zoneinfo.TZPATH" title="zoneinfo.TZPATH"><code>TZPATH</code></a> can be configured using <a class="reference internal" href="#zoneinfo-data-environment-var"><span class="std std-ref">an environment variable</span></a>.</li> <li>At <a class="reference internal" href="#zoneinfo-data-runtime-config"><span class="std std-ref">runtime</span></a>, the search path can be manipulated using the <a class="reference internal" href="#zoneinfo.reset_tzpath" title="zoneinfo.reset_tzpath"><code>reset_tzpath()</code></a> function.</li> </ol> <section id="compile-time-configuration"> <span id="zoneinfo-data-compile-time-config"></span><h4>Compile-time configuration</h4> <p>The default <a class="reference internal" href="#zoneinfo.TZPATH" title="zoneinfo.TZPATH"><code>TZPATH</code></a> includes several common deployment locations for the time zone database (except on Windows, where there are no “well-known” locations for time zone data). On POSIX systems, downstream distributors and those building Python from source who know where their system time zone data is deployed may change the default time zone path by specifying the compile-time option <code>TZPATH</code> (or, more likely, the <a class="reference internal" href="../using/configure#cmdoption-with-tzpath"><code>configure
+flag --with-tzpath</code></a>), which should be a string delimited by <a class="reference internal" href="os#os.pathsep" title="os.pathsep"><code>os.pathsep</code></a>.</p> <p>On all platforms, the configured value is available as the <code>TZPATH</code> key in <a class="reference internal" href="sysconfig#sysconfig.get_config_var" title="sysconfig.get_config_var"><code>sysconfig.get_config_var()</code></a>.</p> </section> <section id="environment-configuration"> <span id="zoneinfo-data-environment-var"></span><h4>Environment configuration</h4> <p>When initializing <a class="reference internal" href="#zoneinfo.TZPATH" title="zoneinfo.TZPATH"><code>TZPATH</code></a> (either at import time or whenever <a class="reference internal" href="#zoneinfo.reset_tzpath" title="zoneinfo.reset_tzpath"><code>reset_tzpath()</code></a> is called with no arguments), the <code>zoneinfo</code> module will use the environment variable <code>PYTHONTZPATH</code>, if it exists, to set the search path.</p> <dl class="std envvar"> <dt class="sig sig-object std" id="envvar-PYTHONTZPATH">
+<code>PYTHONTZPATH</code> </dt> <dd>
+<p>This is an <a class="reference internal" href="os#os.pathsep" title="os.pathsep"><code>os.pathsep</code></a>-separated string containing the time zone search path to use. It must consist of only absolute rather than relative paths. Relative components specified in <code>PYTHONTZPATH</code> will not be used, but otherwise the behavior when a relative path is specified is implementation-defined; CPython will raise <a class="reference internal" href="#zoneinfo.InvalidTZPathWarning" title="zoneinfo.InvalidTZPathWarning"><code>InvalidTZPathWarning</code></a>, but other implementations are free to silently ignore the erroneous component or raise an exception.</p> </dd>
+</dl> <p>To set the system to ignore the system data and use the tzdata package instead, set <code>PYTHONTZPATH=""</code>.</p> </section> <section id="runtime-configuration"> <span id="zoneinfo-data-runtime-config"></span><h4>Runtime configuration</h4> <p>The TZ search path can also be configured at runtime using the <a class="reference internal" href="#zoneinfo.reset_tzpath" title="zoneinfo.reset_tzpath"><code>reset_tzpath()</code></a> function. This is generally not an advisable operation, though it is reasonable to use it in test functions that require the use of a specific time zone path (or require disabling access to the system time zones).</p> </section> </section> </section> <section id="the-zoneinfo-class"> <h2>The <code>ZoneInfo</code> class</h2> <dl class="py class"> <dt class="sig sig-object py" id="zoneinfo.ZoneInfo">
+<code>class zoneinfo.ZoneInfo(key)</code> </dt> <dd>
+<p>A concrete <a class="reference internal" href="datetime#datetime.tzinfo" title="datetime.tzinfo"><code>datetime.tzinfo</code></a> subclass that represents an IANA time zone specified by the string <code>key</code>. Calls to the primary constructor will always return objects that compare identically; put another way, barring cache invalidation via <a class="reference internal" href="#zoneinfo.ZoneInfo.clear_cache" title="zoneinfo.ZoneInfo.clear_cache"><code>ZoneInfo.clear_cache()</code></a>, for all values of <code>key</code>, the following assertion will always be true:</p> <pre data-language="python">a = ZoneInfo(key)
+b = ZoneInfo(key)
+assert a is b
+</pre> <p><code>key</code> must be in the form of a relative, normalized POSIX path, with no up-level references. The constructor will raise <a class="reference internal" href="exceptions#ValueError" title="ValueError"><code>ValueError</code></a> if a non-conforming key is passed.</p> <p>If no file matching <code>key</code> is found, the constructor will raise <a class="reference internal" href="#zoneinfo.ZoneInfoNotFoundError" title="zoneinfo.ZoneInfoNotFoundError"><code>ZoneInfoNotFoundError</code></a>.</p> </dd>
+</dl> <p>The <code>ZoneInfo</code> class has two alternate constructors:</p> <dl class="py method"> <dt class="sig sig-object py" id="zoneinfo.ZoneInfo.from_file">
+<code>classmethod ZoneInfo.from_file(fobj, /, key=None)</code> </dt> <dd>
+<p>Constructs a <code>ZoneInfo</code> object from a file-like object returning bytes (e.g. a file opened in binary mode or an <a class="reference internal" href="io#io.BytesIO" title="io.BytesIO"><code>io.BytesIO</code></a> object). Unlike the primary constructor, this always constructs a new object.</p> <p>The <code>key</code> parameter sets the name of the zone for the purposes of <a class="reference internal" href="../reference/datamodel#object.__str__" title="object.__str__"><code>__str__()</code></a> and <a class="reference internal" href="../reference/datamodel#object.__repr__" title="object.__repr__"><code>__repr__()</code></a>.</p> <p>Objects created via this constructor cannot be pickled (see <a class="reference internal" href="#pickling">pickling</a>).</p> </dd>
+</dl> <dl class="py method"> <dt class="sig sig-object py" id="zoneinfo.ZoneInfo.no_cache">
+<code>classmethod ZoneInfo.no_cache(key)</code> </dt> <dd>
+<p>An alternate constructor that bypasses the constructor’s cache. It is identical to the primary constructor, but returns a new object on each call. This is most likely to be useful for testing or demonstration purposes, but it can also be used to create a system with a different cache invalidation strategy.</p> <p>Objects created via this constructor will also bypass the cache of a deserializing process when unpickled.</p> <div class="admonition caution"> <p class="admonition-title">Caution</p> <p>Using this constructor may change the semantics of your datetimes in surprising ways, only use it if you know that you need to.</p> </div> </dd>
+</dl> <p>The following class methods are also available:</p> <dl class="py method"> <dt class="sig sig-object py" id="zoneinfo.ZoneInfo.clear_cache">
+<code>classmethod ZoneInfo.clear_cache(*, only_keys=None)</code> </dt> <dd>
+<p>A method for invalidating the cache on the <code>ZoneInfo</code> class. If no arguments are passed, all caches are invalidated and the next call to the primary constructor for each key will return a new instance.</p> <p>If an iterable of key names is passed to the <code>only_keys</code> parameter, only the specified keys will be removed from the cache. Keys passed to <code>only_keys</code> but not found in the cache are ignored.</p> <div class="admonition warning"> <p class="admonition-title">Warning</p> <p>Invoking this function may change the semantics of datetimes using <code>ZoneInfo</code> in surprising ways; this modifies module state and thus may have wide-ranging effects. Only use it if you know that you need to.</p> </div> </dd>
+</dl> <p>The class has one attribute:</p> <dl class="py attribute"> <dt class="sig sig-object py" id="zoneinfo.ZoneInfo.key">
+<code>ZoneInfo.key</code> </dt> <dd>
+<p>This is a read-only <a class="reference internal" href="../glossary#term-attribute"><span class="xref std std-term">attribute</span></a> that returns the value of <code>key</code> passed to the constructor, which should be a lookup key in the IANA time zone database (e.g. <code>America/New_York</code>, <code>Europe/Paris</code> or <code>Asia/Tokyo</code>).</p> <p>For zones constructed from file without specifying a <code>key</code> parameter, this will be set to <code>None</code>.</p> <div class="admonition note"> <p class="admonition-title">Note</p> <p>Although it is a somewhat common practice to expose these to end users, these values are designed to be primary keys for representing the relevant zones and not necessarily user-facing elements. Projects like CLDR (the Unicode Common Locale Data Repository) can be used to get more user-friendly strings from these keys.</p> </div> </dd>
+</dl> <section id="string-representations"> <h3>String representations</h3> <p>The string representation returned when calling <a class="reference internal" href="stdtypes#str" title="str"><code>str</code></a> on a <a class="reference internal" href="#zoneinfo.ZoneInfo" title="zoneinfo.ZoneInfo"><code>ZoneInfo</code></a> object defaults to using the <a class="reference internal" href="#zoneinfo.ZoneInfo.key" title="zoneinfo.ZoneInfo.key"><code>ZoneInfo.key</code></a> attribute (see the note on usage in the attribute documentation):</p> <pre data-language="python">&gt;&gt;&gt; zone = ZoneInfo("Pacific/Kwajalein")
+&gt;&gt;&gt; str(zone)
+'Pacific/Kwajalein'
+
+&gt;&gt;&gt; dt = datetime(2020, 4, 1, 3, 15, tzinfo=zone)
+&gt;&gt;&gt; f"{dt.isoformat()} [{dt.tzinfo}]"
+'2020-04-01T03:15:00+12:00 [Pacific/Kwajalein]'
+</pre> <p>For objects constructed from a file without specifying a <code>key</code> parameter, <code>str</code> falls back to calling <a class="reference internal" href="functions#repr" title="repr"><code>repr()</code></a>. <code>ZoneInfo</code>’s <code>repr</code> is implementation-defined and not necessarily stable between versions, but it is guaranteed not to be a valid <code>ZoneInfo</code> key.</p> </section> <section id="pickle-serialization"> <span id="pickling"></span><h3>Pickle serialization</h3> <p>Rather than serializing all transition data, <code>ZoneInfo</code> objects are serialized by key, and <code>ZoneInfo</code> objects constructed from files (even those with a value for <code>key</code> specified) cannot be pickled.</p> <p>The behavior of a <code>ZoneInfo</code> file depends on how it was constructed:</p> <ol class="arabic"> <li>
+<p><code>ZoneInfo(key)</code>: When constructed with the primary constructor, a <code>ZoneInfo</code> object is serialized by key, and when deserialized, the deserializing process uses the primary and thus it is expected that these are expected to be the same object as other references to the same time zone. For example, if <code>europe_berlin_pkl</code> is a string containing a pickle constructed from <code>ZoneInfo("Europe/Berlin")</code>, one would expect the following behavior:</p> <pre data-language="pycon">&gt;&gt;&gt; a = ZoneInfo("Europe/Berlin")
+&gt;&gt;&gt; b = pickle.loads(europe_berlin_pkl)
+&gt;&gt;&gt; a is b
+True
+</pre> </li> <li>
+<p><code>ZoneInfo.no_cache(key)</code>: When constructed from the cache-bypassing constructor, the <code>ZoneInfo</code> object is also serialized by key, but when deserialized, the deserializing process uses the cache bypassing constructor. If <code>europe_berlin_pkl_nc</code> is a string containing a pickle constructed from <code>ZoneInfo.no_cache("Europe/Berlin")</code>, one would expect the following behavior:</p> <pre data-language="pycon">&gt;&gt;&gt; a = ZoneInfo("Europe/Berlin")
+&gt;&gt;&gt; b = pickle.loads(europe_berlin_pkl_nc)
+&gt;&gt;&gt; a is b
+False
+</pre> </li> <li>
+<code>ZoneInfo.from_file(fobj, /, key=None)</code>: When constructed from a file, the <code>ZoneInfo</code> object raises an exception on pickling. If an end user wants to pickle a <code>ZoneInfo</code> constructed from a file, it is recommended that they use a wrapper type or a custom serialization function: either serializing by key or storing the contents of the file object and serializing that.</li> </ol> <p>This method of serialization requires that the time zone data for the required key be available on both the serializing and deserializing side, similar to the way that references to classes and functions are expected to exist in both the serializing and deserializing environments. It also means that no guarantees are made about the consistency of results when unpickling a <code>ZoneInfo</code> pickled in an environment with a different version of the time zone data.</p> </section> </section> <section id="functions"> <h2>Functions</h2> <dl class="py function"> <dt class="sig sig-object py" id="zoneinfo.available_timezones">
+<code>zoneinfo.available_timezones()</code> </dt> <dd>
+<p>Get a set containing all the valid keys for IANA time zones available anywhere on the time zone path. This is recalculated on every call to the function.</p> <p>This function only includes canonical zone names and does not include “special” zones such as those under the <code>posix/</code> and <code>right/</code> directories, or the <code>posixrules</code> zone.</p> <div class="admonition caution"> <p class="admonition-title">Caution</p> <p>This function may open a large number of files, as the best way to determine if a file on the time zone path is a valid time zone is to read the “magic string” at the beginning.</p> </div> <div class="admonition note"> <p class="admonition-title">Note</p> <p>These values are not designed to be exposed to end-users; for user facing elements, applications should use something like CLDR (the Unicode Common Locale Data Repository) to get more user-friendly strings. See also the cautionary note on <a class="reference internal" href="#zoneinfo.ZoneInfo.key" title="zoneinfo.ZoneInfo.key"><code>ZoneInfo.key</code></a>.</p> </div> </dd>
+</dl> <dl class="py function"> <dt class="sig sig-object py" id="zoneinfo.reset_tzpath">
+<code>zoneinfo.reset_tzpath(to=None)</code> </dt> <dd>
+<p>Sets or resets the time zone search path (<a class="reference internal" href="#zoneinfo.TZPATH" title="zoneinfo.TZPATH"><code>TZPATH</code></a>) for the module. When called with no arguments, <a class="reference internal" href="#zoneinfo.TZPATH" title="zoneinfo.TZPATH"><code>TZPATH</code></a> is set to the default value.</p> <p>Calling <code>reset_tzpath</code> will not invalidate the <a class="reference internal" href="#zoneinfo.ZoneInfo" title="zoneinfo.ZoneInfo"><code>ZoneInfo</code></a> cache, and so calls to the primary <code>ZoneInfo</code> constructor will only use the new <code>TZPATH</code> in the case of a cache miss.</p> <p>The <code>to</code> parameter must be a <a class="reference internal" href="../glossary#term-sequence"><span class="xref std std-term">sequence</span></a> of strings or <a class="reference internal" href="os#os.PathLike" title="os.PathLike"><code>os.PathLike</code></a> and not a string, all of which must be absolute paths. <a class="reference internal" href="exceptions#ValueError" title="ValueError"><code>ValueError</code></a> will be raised if something other than an absolute path is passed.</p> </dd>
+</dl> </section> <section id="globals"> <h2>Globals</h2> <dl class="py data"> <dt class="sig sig-object py" id="zoneinfo.TZPATH">
+<code>zoneinfo.TZPATH</code> </dt> <dd>
+<p>A read-only sequence representing the time zone search path – when constructing a <code>ZoneInfo</code> from a key, the key is joined to each entry in the <code>TZPATH</code>, and the first file found is used.</p> <p><code>TZPATH</code> may contain only absolute paths, never relative paths, regardless of how it is configured.</p> <p>The object that <code>zoneinfo.TZPATH</code> points to may change in response to a call to <a class="reference internal" href="#zoneinfo.reset_tzpath" title="zoneinfo.reset_tzpath"><code>reset_tzpath()</code></a>, so it is recommended to use <code>zoneinfo.TZPATH</code> rather than importing <code>TZPATH</code> from <code>zoneinfo</code> or assigning a long-lived variable to <code>zoneinfo.TZPATH</code>.</p> <p>For more information on configuring the time zone search path, see <a class="reference internal" href="#zoneinfo-data-configuration"><span class="std std-ref">Configuring the data sources</span></a>.</p> </dd>
+</dl> </section> <section id="exceptions-and-warnings"> <h2>Exceptions and warnings</h2> <dl class="py exception"> <dt class="sig sig-object py" id="zoneinfo.ZoneInfoNotFoundError">
+<code>exception zoneinfo.ZoneInfoNotFoundError</code> </dt> <dd>
+<p>Raised when construction of a <a class="reference internal" href="#zoneinfo.ZoneInfo" title="zoneinfo.ZoneInfo"><code>ZoneInfo</code></a> object fails because the specified key could not be found on the system. This is a subclass of <a class="reference internal" href="exceptions#KeyError" title="KeyError"><code>KeyError</code></a>.</p> </dd>
+</dl> <dl class="py exception"> <dt class="sig sig-object py" id="zoneinfo.InvalidTZPathWarning">
+<code>exception zoneinfo.InvalidTZPathWarning</code> </dt> <dd>
+<p>Raised when <span class="target" id="index-2"></span><a class="reference internal" href="#envvar-PYTHONTZPATH"><code>PYTHONTZPATH</code></a> contains an invalid component that will be filtered out, such as a relative path.</p> </dd>
+</dl> </section> <div class="_attribution">
+ <p class="_attribution-p">
+ &copy; 2001&ndash;2023 Python Software Foundation<br>Licensed under the PSF License.<br>
+ <a href="https://docs.python.org/3.12/library/zoneinfo.html" class="_attribution-link">https://docs.python.org/3.12/library/zoneinfo.html</a>
+ </p>
+</div>