Skip to content

Commit 1d5f186

Browse files
committed
chore: refactor helper functions
1 parent 8587b86 commit 1d5f186

File tree

2 files changed

+27
-25
lines changed

2 files changed

+27
-25
lines changed

tableauserverclient/helpers/strings.py

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from defusedxml.ElementTree import fromstring, tostring
22
from functools import singledispatch
3-
from typing import TypeVar
3+
from typing import TypeVar, overload
44

55

66
# the redact method can handle either strings or bytes, but it can't mix them.
@@ -41,3 +41,27 @@ def _(xml: str) -> str:
4141
@redact_xml.register # type: ignore[no-redef]
4242
def _(xml: bytes) -> bytes:
4343
return _redact_any_type(bytearray(xml), b"password", b"..[redacted]")
44+
45+
46+
@overload
47+
def nullable_str_to_int(value: None) -> None: ...
48+
49+
50+
@overload
51+
def nullable_str_to_int(value: str) -> int: ...
52+
53+
54+
def nullable_str_to_int(value):
55+
return int(value) if value is not None else None
56+
57+
58+
@overload
59+
def nullable_str_to_bool(value: None) -> None: ...
60+
61+
62+
@overload
63+
def nullable_str_to_bool(value: str) -> bool: ...
64+
65+
66+
def nullable_str_to_bool(value):
67+
return str(value).lower() == "true" if value is not None else None

tableauserverclient/models/datasource_item.py

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import copy
22
import datetime
33
import xml.etree.ElementTree as ET
4-
from typing import Optional, overload
4+
from typing import Optional
55

66
from defusedxml.ElementTree import fromstring
77

88
from tableauserverclient.datetime_helpers import parse_datetime
9+
from tableauserverclient.helpers.strings import nullable_str_to_bool, nullable_str_to_int
910
from tableauserverclient.models.connection_item import ConnectionItem
1011
from tableauserverclient.models.exceptions import UnpopulatedPropertyError
1112
from tableauserverclient.models.permissions_item import PermissionsRule
@@ -580,26 +581,3 @@ def _parse_element(datasource_xml: ET.Element, ns: dict) -> tuple:
580581
owner,
581582
)
582583

583-
584-
@overload
585-
def nullable_str_to_int(value: None) -> None: ...
586-
587-
588-
@overload
589-
def nullable_str_to_int(value: str) -> int: ...
590-
591-
592-
def nullable_str_to_int(value):
593-
return int(value) if value is not None else None
594-
595-
596-
@overload
597-
def nullable_str_to_bool(value: None) -> None: ...
598-
599-
600-
@overload
601-
def nullable_str_to_bool(value: str) -> bool: ...
602-
603-
604-
def nullable_str_to_bool(value):
605-
return str(value).lower() == "true" if value is not None else None

0 commit comments

Comments
 (0)