diff --git a/tableauserverclient/server/request_options.py b/tableauserverclient/server/request_options.py index da1c70826..14fb18c61 100644 --- a/tableauserverclient/server/request_options.py +++ b/tableauserverclient/server/request_options.py @@ -378,10 +378,10 @@ def vf(self, name: str, value: str) -> Self: in August 2026. Examples below give the wire form (what the server sees after URL decoding) and the data value it matches. To match a value containing a literal comma, wire form - ``Rock\, Paper\, Scissors`` matches data value ``Rock, Paper, + ``Rock\\, Paper\\, Scissors`` matches data value ``Rock, Paper, Scissors`` (without escaping, the comma starts an OR-list). To - match a literal backslash, double it: wire form ``C:\\temp\\file`` - matches data value ``C:\temp\file``. + match a literal backslash, double it: wire form ``C:\\\\temp\\\\file`` + matches data value ``C:\\temp\\file``. - **Empty value** (``vf_=``) is observed to override any workbook-embedded filter on that column, effectively widening it to all values. Not officially documented; behavior may change diff --git a/test/test_datasource.py b/test/test_datasource.py index 824142c11..861aba430 100644 --- a/test/test_datasource.py +++ b/test/test_datasource.py @@ -987,6 +987,8 @@ def test_synchronous_publish_timeout_error(server) -> None: def test_async_publish_timeout_error(server) -> None: + server.version = "3.0" + with requests_mock.mock() as m: m.register_uri("POST", server.datasources.baseurl, status_code=504) diff --git a/test/test_site.py b/test/test_site.py index 3e15330ff..e85429738 100644 --- a/test/test_site.py +++ b/test/test_site.py @@ -205,6 +205,7 @@ def test_update_missing_id(server: TSC.Server) -> None: server.sites.update(single_site) +@pytest.mark.filterwarnings("ignore:FlowsEnabled has been removed") def test_update_subscription_email_and_footer_preserve_case() -> None: # Regression for #1849: RequestFactory used to .lower() customSubscriptionEmail # and customSubscriptionFooter, silently mangling caller intent. Footer @@ -221,6 +222,7 @@ def test_update_subscription_email_and_footer_preserve_case() -> None: ) +@pytest.mark.filterwarnings("ignore:FlowsEnabled has been removed") def test_create_subscription_email_and_footer_preserve_case() -> None: # Same regression for the create-site path. site = TSC.SiteItem(name="X", content_url="x") @@ -348,7 +350,7 @@ def test_parsing_attr_capture(capture): @pytest.mark.filterwarnings("ignore:FlowsEnabled has been removed") -@pytest.mark.parametrize("req, capture", product(["create_req", "update_req"], [True, False, None])) +@pytest.mark.parametrize("req, capture", list(product(["create_req", "update_req"], [True, False, None]))) def test_encoding_attr_capture(req, capture): site = TSC.SiteItem( content_url="test", diff --git a/test/test_workbook.py b/test/test_workbook.py index c3188c4c8..c0965f121 100644 --- a/test/test_workbook.py +++ b/test/test_workbook.py @@ -938,6 +938,8 @@ def test_synchronous_publish_timeout_error(server: TSC.Server) -> None: def test_async_publish_timeout_error(server: TSC.Server) -> None: + server.version = "3.0" + with requests_mock.mock() as m: m.register_uri("POST", server.workbooks.baseurl, status_code=504)