From 52d41b763437dd5de18b1305ba574b561b4a1938 Mon Sep 17 00:00:00 2001 From: Manabu Niseki Date: Wed, 18 Mar 2026 18:16:28 +0900 Subject: [PATCH 1/3] docs: document utils module --- docs/references/utils.md | 1 + src/urlscan/utils.py | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 docs/references/utils.md diff --git a/docs/references/utils.md b/docs/references/utils.md new file mode 100644 index 0000000..d34bda3 --- /dev/null +++ b/docs/references/utils.md @@ -0,0 +1 @@ +::: urlscan.utils diff --git a/src/urlscan/utils.py b/src/urlscan/utils.py index 6e49302..7a4e52f 100644 --- a/src/urlscan/utils.py +++ b/src/urlscan/utils.py @@ -33,7 +33,16 @@ def parse_datetime(s: str) -> datetime.datetime: def extract(path: StrOrBytesPath, outdir: StrOrBytesPath): - """Extract a compressed file to the specified output directory.""" + """Extract a compressed file to the specified output directory. + + Args: + path (StrOrBytesPath): The path to the compressed file. + outdir (StrOrBytesPath): The directory to extract the files to. + + Returns: + None + + """ basename = os.path.basename(str(path)) if basename.endswith(".tar.gz"): with tarfile.open(path, mode="r:*", ignore_zeros=True) as tar: From 4c5288f19ef48ed90c2d6d943fa478c9ce565d75 Mon Sep 17 00:00:00 2001 From: Manabu Niseki Date: Wed, 18 Mar 2026 18:17:16 +0900 Subject: [PATCH 2/3] refactor: make parse_datetime private --- src/urlscan/client.py | 4 ++-- src/urlscan/utils.py | 2 +- tests/unit/test_utils.py | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/urlscan/client.py b/src/urlscan/client.py index e00efbf..e92ad5a 100644 --- a/src/urlscan/client.py +++ b/src/urlscan/client.py @@ -17,7 +17,7 @@ from .error import APIError, ItemError, RateLimitError, RateLimitRemainingError from .iterator import SearchIterator from .types import ActionType, SearchDataSource, VisibilityType -from .utils import _compact, parse_datetime +from .utils import _compact, _parse_datetime logger = logging.getLogger("urlscan-python") @@ -249,7 +249,7 @@ def _send_request( if remaining and reset: self._rate_limit_memo[action] = RateLimit( remaining=int(remaining), - reset=parse_datetime(reset), + reset=_parse_datetime(reset), ) return res diff --git a/src/urlscan/utils.py b/src/urlscan/utils.py index 7a4e52f..eff1650 100644 --- a/src/urlscan/utils.py +++ b/src/urlscan/utils.py @@ -26,7 +26,7 @@ def _merge(d: dict, kwargs: dict[str, Any]) -> dict: return result -def parse_datetime(s: str) -> datetime.datetime: +def _parse_datetime(s: str) -> datetime.datetime: """Parse an ISO 8601 datetime string to a datetime object.""" dt = datetime.datetime.strptime(s, "%Y-%m-%dT%H:%M:%S.%fZ") return dt.replace(tzinfo=datetime.timezone.utc) diff --git a/tests/unit/test_utils.py b/tests/unit/test_utils.py index c16614c..2edb900 100644 --- a/tests/unit/test_utils.py +++ b/tests/unit/test_utils.py @@ -4,7 +4,7 @@ import pytest -from urlscan.utils import _merge, extract, parse_datetime +from urlscan.utils import _merge, _parse_datetime, extract def test_merge(): @@ -32,7 +32,7 @@ def inner(**kwargs): ], ) def test_parse_datetime(input_str: str, expected: datetime.datetime): - result = parse_datetime(input_str) + result = _parse_datetime(input_str) assert result == expected From e410167445b07a0e72ab661cc384185e76ca6389 Mon Sep 17 00:00:00 2001 From: Manabu Niseki Date: Wed, 18 Mar 2026 18:17:28 +0900 Subject: [PATCH 3/3] fix: fix typo --- src/urlscan/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/urlscan/utils.py b/src/urlscan/utils.py index eff1650..0016060 100644 --- a/src/urlscan/utils.py +++ b/src/urlscan/utils.py @@ -19,7 +19,7 @@ def _merge(d: dict, kwargs: dict[str, Any]) -> dict: result = d.copy() for k, v in kwargs.items(): if k in result: - raise ValueError(f"Recived multiple values for key: {k}") + raise ValueError(f"Received multiple values for key: {k}") result[k] = v