We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Clearing value of a DatetimePicker
#### Description of expected behavior and the observed behavior
Not sure if this is a bug or a new feature to Panel. Let's say I have a layout consisting of a button named "Edit", a DatetimePicker disabled with no default value, and a button named "Submit". At the time of initialization, the value of DatetimePicker is Null. The way these objects interact is as follows:
- Click "Edit" button, DatetimePicker is enabled so user can select a specific time value.
- Click "Submit" button, the selected time value will be pushed to the DB, and the DatetimePicker will be disabled and reset back to Null.

I have tried several ways with no success in clearing the value of the DatetimePicker.

#### Complete, minimal, self-contained example code that reproduces the issue

```
time_widget = pn.widgets.DatetimePicker(disabled=True)
time_widget.value = now()

# how to set value back to None?
time_widget.value = None/pandas.NaT/np.nan => all causes error
```


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `panel/models/datetime_picker.py`
Content:
```
1 from bokeh.core.enums import CalendarPosition
2 from bokeh.core.properties import (
3     Bool, Date, Datetime, Either, Enum, List, Nullable, String, Tuple,
4 )
5 from bokeh.models.widgets.inputs import InputWidget
6 
7 
8 class DatetimePicker(InputWidget):
9     ''' Calendar-based date picker widget.
10 
11     '''
12 
13     value = String(help="""
14     The initial or picked date.
15     """)
16 
17     min_date = Nullable(Either(Date, Datetime), help="""
18     Optional earliest allowable date.
19     """)
20 
21     max_date = Nullable(Either(Date, Datetime), help="""
22     Optional latest allowable date.
23     """)
24 
25     disabled_dates = List(Either(Date, Datetime, Tuple(Date, Date), Tuple(Datetime, Datetime)), default=[], help="""
26     A list of dates of ``(start, end)`` date ranges to make unavailable for
27     selection. All other dates will be avalable.
28 
29     .. note::
30         Only one of ``disabled_dates`` and ``enabled_dates`` should be specified.
31     """)
32 
33     enabled_dates = List(Either(Date, Datetime, Tuple(Date, Date), Tuple(Datetime, Datetime)), default=[], help="""
34     A list of dates of ``(start, end)`` date ranges to make available for
35     selection. All other dates will be unavailable.
36 
37     .. note::
38         Only one of ``disabled_dates`` and ``enabled_dates`` should be specified.
39     """)
40 
41     position = Enum(CalendarPosition, default="auto", help="""
42     Where the calendar is rendered relative to the input when ``inline`` is False.
43     """)
44 
45     inline = Bool(default=False, help="""
46     Whether the calendar sholud be displayed inline.
47     """)
48 
49     enable_time = Bool(default=True)
50 
51     enable_seconds = Bool(default=True)
52 
53     military_time = Bool(default=True)
54 
55     date_format = String("Y-m-d H:i:S")
56 
57     mode = String(default="single", help="""
58     Should either be "single" or "range".""")
59
```
--- 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()

```

diff --git a/panel/models/datetime_picker.py b/panel/models/datetime_picker.py
--- a/panel/models/datetime_picker.py
+++ b/panel/models/datetime_picker.py
@@ -10,7 +10,7 @@
 
     '''
 
-    value = String(help="""
+    value = Nullable(String, help="""
     The initial or picked date.
     """)

{"golden_diff": "diff --git a/panel/models/datetime_picker.py b/panel/models/datetime_picker.py\n--- a/panel/models/datetime_picker.py\n+++ b/panel/models/datetime_picker.py\n@@ -10,7 +10,7 @@\n \n     '''\n \n-    value = String(help=\"\"\"\n+    value = Nullable(String, help=\"\"\"\n     The initial or picked date.\n     \"\"\")\n", "issue": "Clearing value of a DatetimePicker\n#### Description of expected behavior and the observed behavior\r\nNot sure if this is a bug or a new feature to Panel. Let's say I have a layout consisting of a button named \"Edit\", a DatetimePicker disabled with no default value, and a button named \"Submit\". At the time of initialization, the value of DatetimePicker is Null. The way these objects interact is as follows:\r\n- Click \"Edit\" button, DatetimePicker is enabled so user can select a specific time value.\r\n- Click \"Submit\" button, the selected time value will be pushed to the DB, and the DatetimePicker will be disabled and reset back to Null.\r\n\r\nI have tried several ways with no success in clearing the value of the DatetimePicker.\r\n\r\n#### Complete, minimal, self-contained example code that reproduces the issue\r\n\r\n```\r\ntime_widget = pn.widgets.DatetimePicker(disabled=True)\r\ntime_widget.value = now()\r\n\r\n# how to set value back to None?\r\ntime_widget.value = None/pandas.NaT/np.nan => all causes error\r\n```\r\n\n", "before_files": [{"content": "from bokeh.core.enums import CalendarPosition\nfrom bokeh.core.properties import (\n    Bool, Date, Datetime, Either, Enum, List, Nullable, String, Tuple,\n)\nfrom bokeh.models.widgets.inputs import InputWidget\n\n\nclass DatetimePicker(InputWidget):\n    ''' Calendar-based date picker widget.\n\n    '''\n\n    value = String(help=\"\"\"\n    The initial or picked date.\n    \"\"\")\n\n    min_date = Nullable(Either(Date, Datetime), help=\"\"\"\n    Optional earliest allowable date.\n    \"\"\")\n\n    max_date = Nullable(Either(Date, Datetime), help=\"\"\"\n    Optional latest allowable date.\n    \"\"\")\n\n    disabled_dates = List(Either(Date, Datetime, Tuple(Date, Date), Tuple(Datetime, Datetime)), default=[], help=\"\"\"\n    A list of dates of ``(start, end)`` date ranges to make unavailable for\n    selection. All other dates will be avalable.\n\n    .. note::\n        Only one of ``disabled_dates`` and ``enabled_dates`` should be specified.\n    \"\"\")\n\n    enabled_dates = List(Either(Date, Datetime, Tuple(Date, Date), Tuple(Datetime, Datetime)), default=[], help=\"\"\"\n    A list of dates of ``(start, end)`` date ranges to make available for\n    selection. All other dates will be unavailable.\n\n    .. note::\n        Only one of ``disabled_dates`` and ``enabled_dates`` should be specified.\n    \"\"\")\n\n    position = Enum(CalendarPosition, default=\"auto\", help=\"\"\"\n    Where the calendar is rendered relative to the input when ``inline`` is False.\n    \"\"\")\n\n    inline = Bool(default=False, help=\"\"\"\n    Whether the calendar sholud be displayed inline.\n    \"\"\")\n\n    enable_time = Bool(default=True)\n\n    enable_seconds = Bool(default=True)\n\n    military_time = Bool(default=True)\n\n    date_format = String(\"Y-m-d H:i:S\")\n\n    mode = String(default=\"single\", help=\"\"\"\n    Should either be \"single\" or \"range\".\"\"\")\n", "path": "panel/models/datetime_picker.py"}], "after_files": [{"content": "from bokeh.core.enums import CalendarPosition\nfrom bokeh.core.properties import (\n    Bool, Date, Datetime, Either, Enum, List, Nullable, String, Tuple,\n)\nfrom bokeh.models.widgets.inputs import InputWidget\n\n\nclass DatetimePicker(InputWidget):\n    ''' Calendar-based date picker widget.\n\n    '''\n\n    value = Nullable(String, help=\"\"\"\n    The initial or picked date.\n    \"\"\")\n\n    min_date = Nullable(Either(Date, Datetime), help=\"\"\"\n    Optional earliest allowable date.\n    \"\"\")\n\n    max_date = Nullable(Either(Date, Datetime), help=\"\"\"\n    Optional latest allowable date.\n    \"\"\")\n\n    disabled_dates = List(Either(Date, Datetime, Tuple(Date, Date), Tuple(Datetime, Datetime)), default=[], help=\"\"\"\n    A list of dates of ``(start, end)`` date ranges to make unavailable for\n    selection. All other dates will be avalable.\n\n    .. note::\n        Only one of ``disabled_dates`` and ``enabled_dates`` should be specified.\n    \"\"\")\n\n    enabled_dates = List(Either(Date, Datetime, Tuple(Date, Date), Tuple(Datetime, Datetime)), default=[], help=\"\"\"\n    A list of dates of ``(start, end)`` date ranges to make available for\n    selection. All other dates will be unavailable.\n\n    .. note::\n        Only one of ``disabled_dates`` and ``enabled_dates`` should be specified.\n    \"\"\")\n\n    position = Enum(CalendarPosition, default=\"auto\", help=\"\"\"\n    Where the calendar is rendered relative to the input when ``inline`` is False.\n    \"\"\")\n\n    inline = Bool(default=False, help=\"\"\"\n    Whether the calendar sholud be displayed inline.\n    \"\"\")\n\n    enable_time = Bool(default=True)\n\n    enable_seconds = Bool(default=True)\n\n    military_time = Bool(default=True)\n\n    date_format = String(\"Y-m-d H:i:S\")\n\n    mode = String(default=\"single\", help=\"\"\"\n    Should either be \"single\" or \"range\".\"\"\")\n", "path": "panel/models/datetime_picker.py"}]}