(root)/
Python-3.12.0/
Modules/
clinic/
_zoneinfo.c.h
       1  /*[clinic input]
       2  preserve
       3  [clinic start generated code]*/
       4  
       5  #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
       6  #  include "pycore_gc.h"            // PyGC_Head
       7  #  include "pycore_runtime.h"       // _Py_ID()
       8  #endif
       9  
      10  
      11  PyDoc_STRVAR(zoneinfo_ZoneInfo_from_file__doc__,
      12  "from_file($type, file_obj, /, key=None)\n"
      13  "--\n"
      14  "\n"
      15  "Create a ZoneInfo file from a file object.");
      16  
      17  #define ZONEINFO_ZONEINFO_FROM_FILE_METHODDEF    \
      18      {"from_file", _PyCFunction_CAST(zoneinfo_ZoneInfo_from_file), METH_METHOD|METH_FASTCALL|METH_KEYWORDS|METH_CLASS, zoneinfo_ZoneInfo_from_file__doc__},
      19  
      20  static PyObject *
      21  zoneinfo_ZoneInfo_from_file_impl(PyTypeObject *type, PyTypeObject *cls,
      22                                   PyObject *file_obj, PyObject *key);
      23  
      24  static PyObject *
      25  zoneinfo_ZoneInfo_from_file(PyTypeObject *type, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
      26  {
      27      PyObject *return_value = NULL;
      28      #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
      29  
      30      #define NUM_KEYWORDS 1
      31      static struct {
      32          PyGC_Head _this_is_not_used;
      33          PyObject_VAR_HEAD
      34          PyObject *ob_item[NUM_KEYWORDS];
      35      } _kwtuple = {
      36          .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
      37          .ob_item = { &_Py_ID(key), },
      38      };
      39      #undef NUM_KEYWORDS
      40      #define KWTUPLE (&_kwtuple.ob_base.ob_base)
      41  
      42      #else  // !Py_BUILD_CORE
      43      #  define KWTUPLE NULL
      44      #endif  // !Py_BUILD_CORE
      45  
      46      static const char * const _keywords[] = {"", "key", NULL};
      47      static _PyArg_Parser _parser = {
      48          .keywords = _keywords,
      49          .fname = "from_file",
      50          .kwtuple = KWTUPLE,
      51      };
      52      #undef KWTUPLE
      53      PyObject *argsbuf[2];
      54      Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
      55      PyObject *file_obj;
      56      PyObject *key = Py_None;
      57  
      58      args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf);
      59      if (!args) {
      60          goto exit;
      61      }
      62      file_obj = args[0];
      63      if (!noptargs) {
      64          goto skip_optional_pos;
      65      }
      66      key = args[1];
      67  skip_optional_pos:
      68      return_value = zoneinfo_ZoneInfo_from_file_impl(type, cls, file_obj, key);
      69  
      70  exit:
      71      return return_value;
      72  }
      73  
      74  PyDoc_STRVAR(zoneinfo_ZoneInfo_no_cache__doc__,
      75  "no_cache($type, /, key)\n"
      76  "--\n"
      77  "\n"
      78  "Get a new instance of ZoneInfo, bypassing the cache.");
      79  
      80  #define ZONEINFO_ZONEINFO_NO_CACHE_METHODDEF    \
      81      {"no_cache", _PyCFunction_CAST(zoneinfo_ZoneInfo_no_cache), METH_METHOD|METH_FASTCALL|METH_KEYWORDS|METH_CLASS, zoneinfo_ZoneInfo_no_cache__doc__},
      82  
      83  static PyObject *
      84  zoneinfo_ZoneInfo_no_cache_impl(PyTypeObject *type, PyTypeObject *cls,
      85                                  PyObject *key);
      86  
      87  static PyObject *
      88  zoneinfo_ZoneInfo_no_cache(PyTypeObject *type, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
      89  {
      90      PyObject *return_value = NULL;
      91      #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
      92  
      93      #define NUM_KEYWORDS 1
      94      static struct {
      95          PyGC_Head _this_is_not_used;
      96          PyObject_VAR_HEAD
      97          PyObject *ob_item[NUM_KEYWORDS];
      98      } _kwtuple = {
      99          .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
     100          .ob_item = { &_Py_ID(key), },
     101      };
     102      #undef NUM_KEYWORDS
     103      #define KWTUPLE (&_kwtuple.ob_base.ob_base)
     104  
     105      #else  // !Py_BUILD_CORE
     106      #  define KWTUPLE NULL
     107      #endif  // !Py_BUILD_CORE
     108  
     109      static const char * const _keywords[] = {"key", NULL};
     110      static _PyArg_Parser _parser = {
     111          .keywords = _keywords,
     112          .fname = "no_cache",
     113          .kwtuple = KWTUPLE,
     114      };
     115      #undef KWTUPLE
     116      PyObject *argsbuf[1];
     117      PyObject *key;
     118  
     119      args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
     120      if (!args) {
     121          goto exit;
     122      }
     123      key = args[0];
     124      return_value = zoneinfo_ZoneInfo_no_cache_impl(type, cls, key);
     125  
     126  exit:
     127      return return_value;
     128  }
     129  
     130  PyDoc_STRVAR(zoneinfo_ZoneInfo_clear_cache__doc__,
     131  "clear_cache($type, /, *, only_keys=None)\n"
     132  "--\n"
     133  "\n"
     134  "Clear the ZoneInfo cache.");
     135  
     136  #define ZONEINFO_ZONEINFO_CLEAR_CACHE_METHODDEF    \
     137      {"clear_cache", _PyCFunction_CAST(zoneinfo_ZoneInfo_clear_cache), METH_METHOD|METH_FASTCALL|METH_KEYWORDS|METH_CLASS, zoneinfo_ZoneInfo_clear_cache__doc__},
     138  
     139  static PyObject *
     140  zoneinfo_ZoneInfo_clear_cache_impl(PyTypeObject *type, PyTypeObject *cls,
     141                                     PyObject *only_keys);
     142  
     143  static PyObject *
     144  zoneinfo_ZoneInfo_clear_cache(PyTypeObject *type, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
     145  {
     146      PyObject *return_value = NULL;
     147      #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
     148  
     149      #define NUM_KEYWORDS 1
     150      static struct {
     151          PyGC_Head _this_is_not_used;
     152          PyObject_VAR_HEAD
     153          PyObject *ob_item[NUM_KEYWORDS];
     154      } _kwtuple = {
     155          .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
     156          .ob_item = { &_Py_ID(only_keys), },
     157      };
     158      #undef NUM_KEYWORDS
     159      #define KWTUPLE (&_kwtuple.ob_base.ob_base)
     160  
     161      #else  // !Py_BUILD_CORE
     162      #  define KWTUPLE NULL
     163      #endif  // !Py_BUILD_CORE
     164  
     165      static const char * const _keywords[] = {"only_keys", NULL};
     166      static _PyArg_Parser _parser = {
     167          .keywords = _keywords,
     168          .fname = "clear_cache",
     169          .kwtuple = KWTUPLE,
     170      };
     171      #undef KWTUPLE
     172      PyObject *argsbuf[1];
     173      Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
     174      PyObject *only_keys = Py_None;
     175  
     176      args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 0, 0, argsbuf);
     177      if (!args) {
     178          goto exit;
     179      }
     180      if (!noptargs) {
     181          goto skip_optional_kwonly;
     182      }
     183      only_keys = args[0];
     184  skip_optional_kwonly:
     185      return_value = zoneinfo_ZoneInfo_clear_cache_impl(type, cls, only_keys);
     186  
     187  exit:
     188      return return_value;
     189  }
     190  
     191  PyDoc_STRVAR(zoneinfo_ZoneInfo_utcoffset__doc__,
     192  "utcoffset($self, dt, /)\n"
     193  "--\n"
     194  "\n"
     195  "Retrieve a timedelta representing the UTC offset in a zone at the given datetime.");
     196  
     197  #define ZONEINFO_ZONEINFO_UTCOFFSET_METHODDEF    \
     198      {"utcoffset", _PyCFunction_CAST(zoneinfo_ZoneInfo_utcoffset), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, zoneinfo_ZoneInfo_utcoffset__doc__},
     199  
     200  static PyObject *
     201  zoneinfo_ZoneInfo_utcoffset_impl(PyObject *self, PyTypeObject *cls,
     202                                   PyObject *dt);
     203  
     204  static PyObject *
     205  zoneinfo_ZoneInfo_utcoffset(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
     206  {
     207      PyObject *return_value = NULL;
     208      #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
     209      #  define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty)
     210      #else
     211      #  define KWTUPLE NULL
     212      #endif
     213  
     214      static const char * const _keywords[] = {"", NULL};
     215      static _PyArg_Parser _parser = {
     216          .keywords = _keywords,
     217          .fname = "utcoffset",
     218          .kwtuple = KWTUPLE,
     219      };
     220      #undef KWTUPLE
     221      PyObject *argsbuf[1];
     222      PyObject *dt;
     223  
     224      args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
     225      if (!args) {
     226          goto exit;
     227      }
     228      dt = args[0];
     229      return_value = zoneinfo_ZoneInfo_utcoffset_impl(self, cls, dt);
     230  
     231  exit:
     232      return return_value;
     233  }
     234  
     235  PyDoc_STRVAR(zoneinfo_ZoneInfo_dst__doc__,
     236  "dst($self, dt, /)\n"
     237  "--\n"
     238  "\n"
     239  "Retrieve a timedelta representing the amount of DST applied in a zone at the given datetime.");
     240  
     241  #define ZONEINFO_ZONEINFO_DST_METHODDEF    \
     242      {"dst", _PyCFunction_CAST(zoneinfo_ZoneInfo_dst), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, zoneinfo_ZoneInfo_dst__doc__},
     243  
     244  static PyObject *
     245  zoneinfo_ZoneInfo_dst_impl(PyObject *self, PyTypeObject *cls, PyObject *dt);
     246  
     247  static PyObject *
     248  zoneinfo_ZoneInfo_dst(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
     249  {
     250      PyObject *return_value = NULL;
     251      #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
     252      #  define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty)
     253      #else
     254      #  define KWTUPLE NULL
     255      #endif
     256  
     257      static const char * const _keywords[] = {"", NULL};
     258      static _PyArg_Parser _parser = {
     259          .keywords = _keywords,
     260          .fname = "dst",
     261          .kwtuple = KWTUPLE,
     262      };
     263      #undef KWTUPLE
     264      PyObject *argsbuf[1];
     265      PyObject *dt;
     266  
     267      args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
     268      if (!args) {
     269          goto exit;
     270      }
     271      dt = args[0];
     272      return_value = zoneinfo_ZoneInfo_dst_impl(self, cls, dt);
     273  
     274  exit:
     275      return return_value;
     276  }
     277  
     278  PyDoc_STRVAR(zoneinfo_ZoneInfo_tzname__doc__,
     279  "tzname($self, dt, /)\n"
     280  "--\n"
     281  "\n"
     282  "Retrieve a string containing the abbreviation for the time zone that applies in a zone at a given datetime.");
     283  
     284  #define ZONEINFO_ZONEINFO_TZNAME_METHODDEF    \
     285      {"tzname", _PyCFunction_CAST(zoneinfo_ZoneInfo_tzname), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, zoneinfo_ZoneInfo_tzname__doc__},
     286  
     287  static PyObject *
     288  zoneinfo_ZoneInfo_tzname_impl(PyObject *self, PyTypeObject *cls,
     289                                PyObject *dt);
     290  
     291  static PyObject *
     292  zoneinfo_ZoneInfo_tzname(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
     293  {
     294      PyObject *return_value = NULL;
     295      #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
     296      #  define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty)
     297      #else
     298      #  define KWTUPLE NULL
     299      #endif
     300  
     301      static const char * const _keywords[] = {"", NULL};
     302      static _PyArg_Parser _parser = {
     303          .keywords = _keywords,
     304          .fname = "tzname",
     305          .kwtuple = KWTUPLE,
     306      };
     307      #undef KWTUPLE
     308      PyObject *argsbuf[1];
     309      PyObject *dt;
     310  
     311      args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
     312      if (!args) {
     313          goto exit;
     314      }
     315      dt = args[0];
     316      return_value = zoneinfo_ZoneInfo_tzname_impl(self, cls, dt);
     317  
     318  exit:
     319      return return_value;
     320  }
     321  
     322  PyDoc_STRVAR(zoneinfo_ZoneInfo__unpickle__doc__,
     323  "_unpickle($type, key, from_cache, /)\n"
     324  "--\n"
     325  "\n"
     326  "Private method used in unpickling.");
     327  
     328  #define ZONEINFO_ZONEINFO__UNPICKLE_METHODDEF    \
     329      {"_unpickle", _PyCFunction_CAST(zoneinfo_ZoneInfo__unpickle), METH_METHOD|METH_FASTCALL|METH_KEYWORDS|METH_CLASS, zoneinfo_ZoneInfo__unpickle__doc__},
     330  
     331  static PyObject *
     332  zoneinfo_ZoneInfo__unpickle_impl(PyTypeObject *type, PyTypeObject *cls,
     333                                   PyObject *key, unsigned char from_cache);
     334  
     335  static PyObject *
     336  zoneinfo_ZoneInfo__unpickle(PyTypeObject *type, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
     337  {
     338      PyObject *return_value = NULL;
     339      #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
     340      #  define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty)
     341      #else
     342      #  define KWTUPLE NULL
     343      #endif
     344  
     345      static const char * const _keywords[] = {"", "", NULL};
     346      static _PyArg_Parser _parser = {
     347          .keywords = _keywords,
     348          .fname = "_unpickle",
     349          .kwtuple = KWTUPLE,
     350      };
     351      #undef KWTUPLE
     352      PyObject *argsbuf[2];
     353      PyObject *key;
     354      unsigned char from_cache;
     355  
     356      args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 2, 0, argsbuf);
     357      if (!args) {
     358          goto exit;
     359      }
     360      key = args[0];
     361      {
     362          unsigned long ival = PyLong_AsUnsignedLongMask(args[1]);
     363          if (ival == (unsigned long)-1 && PyErr_Occurred()) {
     364              goto exit;
     365          }
     366          else {
     367              from_cache = (unsigned char) ival;
     368          }
     369      }
     370      return_value = zoneinfo_ZoneInfo__unpickle_impl(type, cls, key, from_cache);
     371  
     372  exit:
     373      return return_value;
     374  }
     375  /*[clinic end generated code: output=54051388dfc408af input=a9049054013a1b77]*/