Skip to content

Commit 13fccdf

Browse files
committed
Reduce calls to cast()
1 parent 29c3dd9 commit 13fccdf

1 file changed

Lines changed: 28 additions & 53 deletions

File tree

src/hyperlink/_url.py

Lines changed: 28 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1217,9 +1217,8 @@ def from_text(cls, text):
12171217
if gs['query']:
12181218
query = tuple(
12191219
(
1220-
cast(Tuple[str, str], qe.split(u"=", 1))
1221-
if u'=' in qe else
1222-
(qe, None)
1220+
qe.split(u"=", 1) # type: ignore[misc]
1221+
if u'=' in qe else (qe, None)
12231222
)
12241223
for qe in gs['query'].split(u"&")
12251224
) # type: QueryPairs
@@ -1860,72 +1859,48 @@ def rooted(self):
18601859
@property
18611860
def path(self):
18621861
# type: () -> Sequence[Text]
1863-
try:
1864-
return cast(
1865-
Tuple[Text, ...],
1866-
self._path # type: ignore[has-type] # can't determine
1867-
)
1868-
except AttributeError:
1869-
pass
1870-
self._path = tuple([
1871-
_percent_decode(p, raise_subencoding_exc=True)
1872-
for p in self._url.path
1873-
])
1862+
if not hasattr(self, "_path"):
1863+
self._path = tuple([
1864+
_percent_decode(p, raise_subencoding_exc=True)
1865+
for p in self._url.path
1866+
])
18741867
return self._path
18751868

18761869
@property
18771870
def query(self):
18781871
# type: () -> QueryPairs
1879-
try:
1880-
return cast(
1881-
QueryPairs,
1882-
self._query # type: ignore[has-type] # can't determine
1883-
)
1884-
except AttributeError:
1885-
pass
1886-
self._query = cast(QueryPairs, tuple(
1887-
tuple(
1888-
_percent_decode(x, raise_subencoding_exc=True)
1889-
if x is not None else None
1890-
for x in (k, v)
1891-
)
1892-
for k, v in self._url.query
1893-
))
1872+
if not hasattr(self, "_query"):
1873+
self._query = cast(QueryPairs, tuple(
1874+
tuple(
1875+
_percent_decode(x, raise_subencoding_exc=True)
1876+
if x is not None else None
1877+
for x in (k, v)
1878+
)
1879+
for k, v in self._url.query
1880+
))
18941881
return self._query
18951882

18961883
@property
18971884
def fragment(self):
18981885
# type: () -> Text
1899-
try:
1900-
return cast(
1901-
Text,
1902-
self._fragment # type: ignore[has-type] # can't determine
1903-
)
1904-
except AttributeError:
1905-
pass
1906-
frag = self._url.fragment
1907-
self._fragment = _percent_decode(frag, raise_subencoding_exc=True)
1886+
if not hasattr(self, "_fragment"):
1887+
frag = self._url.fragment
1888+
self._fragment = _percent_decode(frag, raise_subencoding_exc=True)
19081889
return self._fragment
19091890

19101891
@property
19111892
def userinfo(self):
19121893
# type: () -> Union[Tuple[str], Tuple[str, str]]
1913-
try:
1914-
return cast(
1894+
if not hasattr(self, "_userinfo"):
1895+
self._userinfo = cast(
19151896
Union[Tuple[str], Tuple[str, str]],
1916-
self._userinfo # type: ignore[has-type] # can't determine
1917-
)
1918-
except AttributeError:
1919-
pass
1920-
self._userinfo = cast(
1921-
Union[Tuple[str], Tuple[str, str]],
1922-
tuple(
19231897
tuple(
1924-
_percent_decode(p, raise_subencoding_exc=True)
1925-
for p in self._url.userinfo.split(':', 1)
1898+
tuple(
1899+
_percent_decode(p, raise_subencoding_exc=True)
1900+
for p in self._url.userinfo.split(':', 1)
1901+
)
19261902
)
19271903
)
1928-
)
19291904
return self._userinfo
19301905

19311906
@property
@@ -1935,8 +1910,8 @@ def user(self):
19351910

19361911
@property
19371912
def uses_netloc(self):
1938-
# type: () -> bool
1939-
return cast(bool, self._url.uses_netloc)
1913+
# type: () -> Optional[bool]
1914+
return self._url.uses_netloc
19401915

19411916
def replace(
19421917
self,
@@ -1975,7 +1950,7 @@ def replace(
19751950
' ["user", "password"], got %r' % (userinfo,))
19761951
userinfo_text = u':'.join([_encode_reserved(p) for p in userinfo])
19771952
else:
1978-
userinfo_text = cast(Text, _UNSET)
1953+
userinfo_text = _UNSET
19791954
new_url = self._url.replace(scheme=scheme,
19801955
host=host,
19811956
path=path,

0 commit comments

Comments
 (0)