summaryrefslogtreecommitdiffstats
path: root/Modules/clinic
diff options
context:
space:
mode:
authorErlend E. Aasland <erlend.aasland@protonmail.com>2023-02-15 21:58:48 (GMT)
committerGitHub <noreply@github.com>2023-02-15 21:58:48 (GMT)
commitc1ce0d178fe57b50f37578b285a343d77485ac02 (patch)
tree0278769834169272434cde8833fe58befc955f52 /Modules/clinic
parenteb0c485b6c836abb71932537a5058344d11d7bc8 (diff)
downloadcpython-c1ce0d178fe57b50f37578b285a343d77485ac02.zip
cpython-c1ce0d178fe57b50f37578b285a343d77485ac02.tar.gz
cpython-c1ce0d178fe57b50f37578b285a343d77485ac02.tar.bz2
gh-99138: Isolate _zoneinfo (#99218)
* Convert zone info type to heap type and add it to module state * Add global variables to module state
Diffstat (limited to 'Modules/clinic')
-rw-r--r--Modules/clinic/_zoneinfo.c.h215
1 files changed, 201 insertions, 14 deletions
diff --git a/Modules/clinic/_zoneinfo.c.h b/Modules/clinic/_zoneinfo.c.h
index 78fcbfa..ae62865 100644
--- a/Modules/clinic/_zoneinfo.c.h
+++ b/Modules/clinic/_zoneinfo.c.h
@@ -15,14 +15,14 @@ PyDoc_STRVAR(zoneinfo_ZoneInfo_from_file__doc__,
"Create a ZoneInfo file from a file object.");
#define ZONEINFO_ZONEINFO_FROM_FILE_METHODDEF \
- {"from_file", _PyCFunction_CAST(zoneinfo_ZoneInfo_from_file), METH_FASTCALL|METH_KEYWORDS|METH_CLASS, zoneinfo_ZoneInfo_from_file__doc__},
+ {"from_file", _PyCFunction_CAST(zoneinfo_ZoneInfo_from_file), METH_METHOD|METH_FASTCALL|METH_KEYWORDS|METH_CLASS, zoneinfo_ZoneInfo_from_file__doc__},
static PyObject *
-zoneinfo_ZoneInfo_from_file_impl(PyTypeObject *type, PyObject *file_obj,
- PyObject *key);
+zoneinfo_ZoneInfo_from_file_impl(PyTypeObject *type, PyTypeObject *cls,
+ PyObject *file_obj, PyObject *key);
static PyObject *
-zoneinfo_ZoneInfo_from_file(PyTypeObject *type, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
+zoneinfo_ZoneInfo_from_file(PyTypeObject *type, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
{
PyObject *return_value = NULL;
#if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
@@ -65,7 +65,7 @@ zoneinfo_ZoneInfo_from_file(PyTypeObject *type, PyObject *const *args, Py_ssize_
}
key = args[1];
skip_optional_pos:
- return_value = zoneinfo_ZoneInfo_from_file_impl(type, file_obj, key);
+ return_value = zoneinfo_ZoneInfo_from_file_impl(type, cls, file_obj, key);
exit:
return return_value;
@@ -78,13 +78,14 @@ PyDoc_STRVAR(zoneinfo_ZoneInfo_no_cache__doc__,
"Get a new instance of ZoneInfo, bypassing the cache.");
#define ZONEINFO_ZONEINFO_NO_CACHE_METHODDEF \
- {"no_cache", _PyCFunction_CAST(zoneinfo_ZoneInfo_no_cache), METH_FASTCALL|METH_KEYWORDS|METH_CLASS, zoneinfo_ZoneInfo_no_cache__doc__},
+ {"no_cache", _PyCFunction_CAST(zoneinfo_ZoneInfo_no_cache), METH_METHOD|METH_FASTCALL|METH_KEYWORDS|METH_CLASS, zoneinfo_ZoneInfo_no_cache__doc__},
static PyObject *
-zoneinfo_ZoneInfo_no_cache_impl(PyTypeObject *type, PyObject *key);
+zoneinfo_ZoneInfo_no_cache_impl(PyTypeObject *type, PyTypeObject *cls,
+ PyObject *key);
static PyObject *
-zoneinfo_ZoneInfo_no_cache(PyTypeObject *type, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
+zoneinfo_ZoneInfo_no_cache(PyTypeObject *type, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
{
PyObject *return_value = NULL;
#if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
@@ -120,7 +121,7 @@ zoneinfo_ZoneInfo_no_cache(PyTypeObject *type, PyObject *const *args, Py_ssize_t
goto exit;
}
key = args[0];
- return_value = zoneinfo_ZoneInfo_no_cache_impl(type, key);
+ return_value = zoneinfo_ZoneInfo_no_cache_impl(type, cls, key);
exit:
return return_value;
@@ -133,13 +134,14 @@ PyDoc_STRVAR(zoneinfo_ZoneInfo_clear_cache__doc__,
"Clear the ZoneInfo cache.");
#define ZONEINFO_ZONEINFO_CLEAR_CACHE_METHODDEF \
- {"clear_cache", _PyCFunction_CAST(zoneinfo_ZoneInfo_clear_cache), METH_FASTCALL|METH_KEYWORDS|METH_CLASS, zoneinfo_ZoneInfo_clear_cache__doc__},
+ {"clear_cache", _PyCFunction_CAST(zoneinfo_ZoneInfo_clear_cache), METH_METHOD|METH_FASTCALL|METH_KEYWORDS|METH_CLASS, zoneinfo_ZoneInfo_clear_cache__doc__},
static PyObject *
-zoneinfo_ZoneInfo_clear_cache_impl(PyTypeObject *type, PyObject *only_keys);
+zoneinfo_ZoneInfo_clear_cache_impl(PyTypeObject *type, PyTypeObject *cls,
+ PyObject *only_keys);
static PyObject *
-zoneinfo_ZoneInfo_clear_cache(PyTypeObject *type, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
+zoneinfo_ZoneInfo_clear_cache(PyTypeObject *type, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
{
PyObject *return_value = NULL;
#if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
@@ -180,9 +182,194 @@ zoneinfo_ZoneInfo_clear_cache(PyTypeObject *type, PyObject *const *args, Py_ssiz
}
only_keys = args[0];
skip_optional_kwonly:
- return_value = zoneinfo_ZoneInfo_clear_cache_impl(type, only_keys);
+ return_value = zoneinfo_ZoneInfo_clear_cache_impl(type, cls, only_keys);
exit:
return return_value;
}
-/*[clinic end generated code: output=d2da73ef66146b83 input=a9049054013a1b77]*/
+
+PyDoc_STRVAR(zoneinfo_ZoneInfo_utcoffset__doc__,
+"utcoffset($self, dt, /)\n"
+"--\n"
+"\n"
+"Retrieve a timedelta representing the UTC offset in a zone at the given datetime.");
+
+#define ZONEINFO_ZONEINFO_UTCOFFSET_METHODDEF \
+ {"utcoffset", _PyCFunction_CAST(zoneinfo_ZoneInfo_utcoffset), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, zoneinfo_ZoneInfo_utcoffset__doc__},
+
+static PyObject *
+zoneinfo_ZoneInfo_utcoffset_impl(PyObject *self, PyTypeObject *cls,
+ PyObject *dt);
+
+static PyObject *
+zoneinfo_ZoneInfo_utcoffset(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
+{
+ PyObject *return_value = NULL;
+ #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
+ # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty)
+ #else
+ # define KWTUPLE NULL
+ #endif
+
+ static const char * const _keywords[] = {"", NULL};
+ static _PyArg_Parser _parser = {
+ .keywords = _keywords,
+ .fname = "utcoffset",
+ .kwtuple = KWTUPLE,
+ };
+ #undef KWTUPLE
+ PyObject *argsbuf[1];
+ PyObject *dt;
+
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
+ if (!args) {
+ goto exit;
+ }
+ dt = args[0];
+ return_value = zoneinfo_ZoneInfo_utcoffset_impl(self, cls, dt);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(zoneinfo_ZoneInfo_dst__doc__,
+"dst($self, dt, /)\n"
+"--\n"
+"\n"
+"Retrieve a timedelta representing the amount of DST applied in a zone at the given datetime.");
+
+#define ZONEINFO_ZONEINFO_DST_METHODDEF \
+ {"dst", _PyCFunction_CAST(zoneinfo_ZoneInfo_dst), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, zoneinfo_ZoneInfo_dst__doc__},
+
+static PyObject *
+zoneinfo_ZoneInfo_dst_impl(PyObject *self, PyTypeObject *cls, PyObject *dt);
+
+static PyObject *
+zoneinfo_ZoneInfo_dst(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
+{
+ PyObject *return_value = NULL;
+ #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
+ # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty)
+ #else
+ # define KWTUPLE NULL
+ #endif
+
+ static const char * const _keywords[] = {"", NULL};
+ static _PyArg_Parser _parser = {
+ .keywords = _keywords,
+ .fname = "dst",
+ .kwtuple = KWTUPLE,
+ };
+ #undef KWTUPLE
+ PyObject *argsbuf[1];
+ PyObject *dt;
+
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
+ if (!args) {
+ goto exit;
+ }
+ dt = args[0];
+ return_value = zoneinfo_ZoneInfo_dst_impl(self, cls, dt);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(zoneinfo_ZoneInfo_tzname__doc__,
+"tzname($self, dt, /)\n"
+"--\n"
+"\n"
+"Retrieve a string containing the abbreviation for the time zone that applies in a zone at a given datetime.");
+
+#define ZONEINFO_ZONEINFO_TZNAME_METHODDEF \
+ {"tzname", _PyCFunction_CAST(zoneinfo_ZoneInfo_tzname), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, zoneinfo_ZoneInfo_tzname__doc__},
+
+static PyObject *
+zoneinfo_ZoneInfo_tzname_impl(PyObject *self, PyTypeObject *cls,
+ PyObject *dt);
+
+static PyObject *
+zoneinfo_ZoneInfo_tzname(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
+{
+ PyObject *return_value = NULL;
+ #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
+ # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty)
+ #else
+ # define KWTUPLE NULL
+ #endif
+
+ static const char * const _keywords[] = {"", NULL};
+ static _PyArg_Parser _parser = {
+ .keywords = _keywords,
+ .fname = "tzname",
+ .kwtuple = KWTUPLE,
+ };
+ #undef KWTUPLE
+ PyObject *argsbuf[1];
+ PyObject *dt;
+
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
+ if (!args) {
+ goto exit;
+ }
+ dt = args[0];
+ return_value = zoneinfo_ZoneInfo_tzname_impl(self, cls, dt);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(zoneinfo_ZoneInfo__unpickle__doc__,
+"_unpickle($type, key, from_cache, /)\n"
+"--\n"
+"\n"
+"Private method used in unpickling.");
+
+#define ZONEINFO_ZONEINFO__UNPICKLE_METHODDEF \
+ {"_unpickle", _PyCFunction_CAST(zoneinfo_ZoneInfo__unpickle), METH_METHOD|METH_FASTCALL|METH_KEYWORDS|METH_CLASS, zoneinfo_ZoneInfo__unpickle__doc__},
+
+static PyObject *
+zoneinfo_ZoneInfo__unpickle_impl(PyTypeObject *type, PyTypeObject *cls,
+ PyObject *key, unsigned char from_cache);
+
+static PyObject *
+zoneinfo_ZoneInfo__unpickle(PyTypeObject *type, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
+{
+ PyObject *return_value = NULL;
+ #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
+ # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty)
+ #else
+ # define KWTUPLE NULL
+ #endif
+
+ static const char * const _keywords[] = {"", "", NULL};
+ static _PyArg_Parser _parser = {
+ .keywords = _keywords,
+ .fname = "_unpickle",
+ .kwtuple = KWTUPLE,
+ };
+ #undef KWTUPLE
+ PyObject *argsbuf[2];
+ PyObject *key;
+ unsigned char from_cache;
+
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 2, 0, argsbuf);
+ if (!args) {
+ goto exit;
+ }
+ key = args[0];
+ {
+ unsigned long ival = PyLong_AsUnsignedLongMask(args[1]);
+ if (ival == (unsigned long)-1 && PyErr_Occurred()) {
+ goto exit;
+ }
+ else {
+ from_cache = (unsigned char) ival;
+ }
+ }
+ return_value = zoneinfo_ZoneInfo__unpickle_impl(type, cls, key, from_cache);
+
+exit:
+ return return_value;
+}
+/*[clinic end generated code: output=54051388dfc408af input=a9049054013a1b77]*/