prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  The calculation of the lunar start date throws a TypeError exception for Thailand and Cambodia
  version: 0.47
  stack trace:
  "python39\lib\site-packages\holidays\calendars\thai.py", line 233, in _get_start_date
      return _ThaiLunisolar.START_DATE + td(days=delta_days)
  TypeError: unsupported type for timedelta days component: numpy.int32
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `holidays/helpers.py`
  Content:
  ```
  1 #  holidays
  2 #  --------
  3 #  A fast, efficient Python library for generating country, province and state
  4 #  specific sets of holidays on the fly. It aims to make determining whether a
  5 #  specific date is a holiday as fast and flexible as possible.
  6 #
  7 #  Authors: Vacanza Team and individual contributors (see AUTHORS file)
  8 #           dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
  9 #           ryanss <ryanssdev@icloud.com> (c) 2014-2017
  10 #  Website: https://github.com/vacanza/python-holidays
  11 #  License: MIT (see LICENSE file)
  12 
  13 
  14 def _normalize_arguments(cls, value):
  15     """Normalize arguments.
  16 
  17     :param cls:
  18         A type of arguments to normalize.
  19 
  20     :param value:
  21         Either a single item or an iterable of `cls` type.
  22 
  23     :return:
  24         A set created from `value` argument.
  25 
  26     """
  27     if isinstance(value, cls):
  28         return {value}
  29 
  30     return set(value) if value is not None else set()
  31 
  32 
  33 def _normalize_tuple(data):
  34     """Normalize tuple.
  35 
  36     :param data:
  37         Either a tuple or a tuple of tuples.
  38 
  39     :return:
  40         An unchanged object for tuple of tuples, e.g., ((JAN, 10), (DEC, 31)).
  41         An object put into a tuple otherwise, e.g., ((JAN, 10),).
  42     """
  43     return data if not data or isinstance(data[0], tuple) else (data,)
  44
  ```
  --- END FILES ---
  
  Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.
  
  Here is an example:
  
  ```diff
  diff --git a/examples/server_async.py b/examples/server_async.py
  --- a/examples/server_async.py
  +++ b/examples/server_async.py
  @@ -313,4 +313,4 @@
   
   
   if __name__ == "__main__":
  -    asyncio.run(run_async_server("."), debug=True)
  +    asyncio.run(run_async_server(), debug=True)
  diff --git a/examples/server_sync.py b/examples/server_sync.py
  --- a/examples/server_sync.py
  +++ b/examples/server_sync.py
  @@ -313,5 +313,5 @@
   
   
   if __name__ == "__main__":
  -    server = run_sync_server(".")
  +    server = run_sync_server()
       server.shutdown()
  
  ```
  
golden_diff: diff --git a/holidays/helpers.py b/holidays/helpers.py
  --- a/holidays/helpers.py
  +++ b/holidays/helpers.py
  @@ -24,13 +24,19 @@
           A set created from `value` argument.
   
       """
  +    if value is None:
  +        return set()
  +
       if isinstance(value, cls):
           return {value}
   
  -    return set(value) if value is not None else set()
  +    try:
  +        return {v if isinstance(v, cls) else cls(v) for v in value}
  +    except TypeError:  # non-iterable
  +        return {value if isinstance(value, cls) else cls(value)}
   
   
  -def _normalize_tuple(data):
  +def _normalize_tuple(value):
       """Normalize tuple.
   
       :param data:
  @@ -40,4 +46,4 @@
           An unchanged object for tuple of tuples, e.g., ((JAN, 10), (DEC, 31)).
           An object put into a tuple otherwise, e.g., ((JAN, 10),).
       """
  -    return data if not data or isinstance(data[0], tuple) else (data,)
  +    return value if not value or isinstance(value[0], tuple) else (value,)
  
verification_info: {"golden_diff": "diff --git a/holidays/helpers.py b/holidays/helpers.py\n--- a/holidays/helpers.py\n+++ b/holidays/helpers.py\n@@ -24,13 +24,19 @@\n         A set created from `value` argument.\n \n     \"\"\"\n+    if value is None:\n+        return set()\n+\n     if isinstance(value, cls):\n         return {value}\n \n-    return set(value) if value is not None else set()\n+    try:\n+        return {v if isinstance(v, cls) else cls(v) for v in value}\n+    except TypeError:  # non-iterable\n+        return {value if isinstance(value, cls) else cls(value)}\n \n \n-def _normalize_tuple(data):\n+def _normalize_tuple(value):\n     \"\"\"Normalize tuple.\n \n     :param data:\n@@ -40,4 +46,4 @@\n         An unchanged object for tuple of tuples, e.g., ((JAN, 10), (DEC, 31)).\n         An object put into a tuple otherwise, e.g., ((JAN, 10),).\n     \"\"\"\n-    return data if not data or isinstance(data[0], tuple) else (data,)\n+    return value if not value or isinstance(value[0], tuple) else (value,)\n", "issue": "The calculation of the lunar start date throws a TypeError exception for Thailand and Cambodia\nversion: 0.47\r\nstack trace:\r\n\"python39\\lib\\site-packages\\holidays\\calendars\\thai.py\", line 233, in _get_start_date\r\n    return _ThaiLunisolar.START_DATE + td(days=delta_days)\r\nTypeError: unsupported type for timedelta days component: numpy.int32\n", "before_files": [{"content": "#  holidays\n#  --------\n#  A fast, efficient Python library for generating country, province and state\n#  specific sets of holidays on the fly. It aims to make determining whether a\n#  specific date is a holiday as fast and flexible as possible.\n#\n#  Authors: Vacanza Team and individual contributors (see AUTHORS file)\n#           dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023\n#           ryanss <ryanssdev@icloud.com> (c) 2014-2017\n#  Website: https://github.com/vacanza/python-holidays\n#  License: MIT (see LICENSE file)\n\n\ndef _normalize_arguments(cls, value):\n    \"\"\"Normalize arguments.\n\n    :param cls:\n        A type of arguments to normalize.\n\n    :param value:\n        Either a single item or an iterable of `cls` type.\n\n    :return:\n        A set created from `value` argument.\n\n    \"\"\"\n    if isinstance(value, cls):\n        return {value}\n\n    return set(value) if value is not None else set()\n\n\ndef _normalize_tuple(data):\n    \"\"\"Normalize tuple.\n\n    :param data:\n        Either a tuple or a tuple of tuples.\n\n    :return:\n        An unchanged object for tuple of tuples, e.g., ((JAN, 10), (DEC, 31)).\n        An object put into a tuple otherwise, e.g., ((JAN, 10),).\n    \"\"\"\n    return data if not data or isinstance(data[0], tuple) else (data,)\n", "path": "holidays/helpers.py"}], "after_files": [{"content": "#  holidays\n#  --------\n#  A fast, efficient Python library for generating country, province and state\n#  specific sets of holidays on the fly. It aims to make determining whether a\n#  specific date is a holiday as fast and flexible as possible.\n#\n#  Authors: Vacanza Team and individual contributors (see AUTHORS file)\n#           dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023\n#           ryanss <ryanssdev@icloud.com> (c) 2014-2017\n#  Website: https://github.com/vacanza/python-holidays\n#  License: MIT (see LICENSE file)\n\n\ndef _normalize_arguments(cls, value):\n    \"\"\"Normalize arguments.\n\n    :param cls:\n        A type of arguments to normalize.\n\n    :param value:\n        Either a single item or an iterable of `cls` type.\n\n    :return:\n        A set created from `value` argument.\n\n    \"\"\"\n    if value is None:\n        return set()\n\n    if isinstance(value, cls):\n        return {value}\n\n    try:\n        return {v if isinstance(v, cls) else cls(v) for v in value}\n    except TypeError:  # non-iterable\n        return {value if isinstance(value, cls) else cls(value)}\n\n\ndef _normalize_tuple(value):\n    \"\"\"Normalize tuple.\n\n    :param data:\n        Either a tuple or a tuple of tuples.\n\n    :return:\n        An unchanged object for tuple of tuples, e.g., ((JAN, 10), (DEC, 31)).\n        An object put into a tuple otherwise, e.g., ((JAN, 10),).\n    \"\"\"\n    return value if not value or isinstance(value[0], tuple) else (value,)\n", "path": "holidays/helpers.py"}]}