diff --git a/bokeh/properties.py b/bokeh/properties.py
index a7304e85d..d234beeb3 100644
--- a/bokeh/properties.py
+++ b/bokeh/properties.py
@@ -1091,7 +1091,7 @@ class DashPattern(Either):
     }
 
     def __init__(self, default=[], help=None):
-        types = Enum(enums.DashPattern), Regex(r"^(\d+(\s+\d+)*)?$"), List(Int)
+        types = Enum(enums.DashPattern), Regex(r"^(\d+(\s+\d+)*)?$"), Seq(Int)
         super(DashPattern, self).__init__(*types, default=default, help=help)
 
     def transform(self, value):

bokeh.plotting.patches line_dash argument only takes a list
The `bokeh.plotting.patches` renderer requires the argument to `line_dash` to be a list, it should probably take list and tuple
diff --git a/bokeh/tests/test_properties.py b/bokeh/tests/test_properties.py
index a520745b3..08b27b501 100644
--- a/bokeh/tests/test_properties.py
+++ b/bokeh/tests/test_properties.py
@@ -330,6 +330,25 @@ class TestDashPattern(unittest.TestCase):
         with self.assertRaises(ValueError):
             f.pat = [2, "a"]
 
+    def test_list(self):
+        class Foo(HasProps):
+            pat = DashPattern
+        f = Foo()
+
+        f.pat = ()
+        self.assertEqual(f.pat, ())
+        f.pat = (2,)
+        self.assertEqual(f.pat, (2,))
+        f.pat = (2, 4)
+        self.assertEqual(f.pat, (2, 4))
+        f.pat = (2, 4, 6)
+        self.assertEqual(f.pat, (2, 4, 6))
+
+        with self.assertRaises(ValueError):
+            f.pat = (2, 4.2)
+        with self.assertRaises(ValueError):
+            f.pat = (2, "a")
+
     def test_invalid(self):
         class Foo(HasProps):
             pat = DashPattern
@@ -764,7 +783,7 @@ class TestProperties(unittest.TestCase):
         self.assertFalse(prop.is_valid(1.0))
         self.assertFalse(prop.is_valid(1.0+1.0j))
         self.assertTrue(prop.is_valid(""))
-        self.assertFalse(prop.is_valid(()))
+        self.assertTrue(prop.is_valid(()))
         self.assertTrue(prop.is_valid([]))
         self.assertFalse(prop.is_valid({}))
         self.assertFalse(prop.is_valid(Foo()))

pip install bokeh
parse_log_pytest
pytest
pytest
apt-get update apt-get install -y gcc
3.9
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
bokeh==3.4.3
contourpy==1.3.0
exceptiongroup @ file:///croot/exceptiongroup_1706031385326/work
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
Jinja2==3.1.6
MarkupSafe==3.0.2
numpy==2.0.2
packaging @ file:///croot/packaging_1734472117206/work
pandas==2.2.3
pillow==11.1.0
pluggy @ file:///croot/pluggy_1733169602837/work
pytest @ file:///croot/pytest_1738938843180/work
python-dateutil==2.9.0.post0
pytz==2025.2
PyYAML==6.0.2
six==1.17.0
tomli @ file:///opt/conda/conda-bld/tomli_1657175507142/work
tornado==6.4.2
tzdata==2025.2
xyzservices==2025.1.0

name: bokeh
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - exceptiongroup=1.2.0=py39h06a4308_0
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - packaging=24.2=py39h06a4308_0
  - pip=25.0=py39h06a4308_0
  - pluggy=1.5.0=py39h06a4308_0
  - pytest=8.3.4=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tomli=2.0.1=py39h06a4308_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - bokeh==3.4.3
      - contourpy==1.3.0
      - jinja2==3.1.6
      - markupsafe==3.0.2
      - numpy==2.0.2
      - pandas==2.2.3
      - pillow==11.1.0
      - python-dateutil==2.9.0.post0
      - pytz==2025.2
      - pyyaml==6.0.2
      - six==1.17.0
      - tornado==6.4.2
      - tzdata==2025.2
      - xyzservices==2025.1.0
prefix: /opt/conda/envs/bokeh

bokeh/tests/test_properties.py::TestDashPattern::test_list bokeh/tests/test_properties.py::TestProperties::test_DashPattern
bokeh/tests/test_properties.py::Basictest::test_enum bokeh/tests/test_properties.py::Basictest::test_inheritance bokeh/tests/test_properties.py::Basictest::test_no_parens bokeh/tests/test_properties.py::Basictest::test_set bokeh/tests/test_properties.py::Basictest::test_simple_class bokeh/tests/test_properties.py::TestDataSpec::test_default bokeh/tests/test_properties.py::TestDataSpec::test_field bokeh/tests/test_properties.py::TestDataSpec::test_multiple_instances bokeh/tests/test_properties.py::TestDataSpec::test_value bokeh/tests/test_properties.py::TestColorSpec::test_default_tuple bokeh/tests/test_properties.py::TestColorSpec::test_field bokeh/tests/test_properties.py::TestColorSpec::test_field_default bokeh/tests/test_properties.py::TestColorSpec::test_fixed_value bokeh/tests/test_properties.py::TestColorSpec::test_hex_value bokeh/tests/test_properties.py::TestColorSpec::test_named_color_overriding_default bokeh/tests/test_properties.py::TestColorSpec::test_named_value bokeh/tests/test_properties.py::TestColorSpec::test_named_value_set_none bokeh/tests/test_properties.py::TestColorSpec::test_named_value_unset bokeh/tests/test_properties.py::TestColorSpec::test_set_dict bokeh/tests/test_properties.py::TestColorSpec::test_tuple_value bokeh/tests/test_properties.py::TestDashPattern::test_invalid bokeh/tests/test_properties.py::TestDashPattern::test_named bokeh/tests/test_properties.py::TestDashPattern::test_string bokeh/tests/test_properties.py::TestProperties::test_Align bokeh/tests/test_properties.py::TestProperties::test_Angle bokeh/tests/test_properties.py::TestProperties::test_Any bokeh/tests/test_properties.py::TestProperties::test_Bool bokeh/tests/test_properties.py::TestProperties::test_Color bokeh/tests/test_properties.py::TestProperties::test_Complex bokeh/tests/test_properties.py::TestProperties::test_Dict bokeh/tests/test_properties.py::TestProperties::test_Either bokeh/tests/test_properties.py::TestProperties::test_Enum bokeh/tests/test_properties.py::TestProperties::test_Float bokeh/tests/test_properties.py::TestProperties::test_Instance bokeh/tests/test_properties.py::TestProperties::test_Int bokeh/tests/test_properties.py::TestProperties::test_List bokeh/tests/test_properties.py::TestProperties::test_Percent bokeh/tests/test_properties.py::TestProperties::test_Range bokeh/tests/test_properties.py::TestProperties::test_Regex bokeh/tests/test_properties.py::TestProperties::test_Size bokeh/tests/test_properties.py::TestProperties::test_String bokeh/tests/test_properties.py::TestProperties::test_Tuple bokeh/tests/test_properties.py::test_HasProps_clone
bokeh/properties.py
bokeh/properties.py