From 2f6dc95a7f3dfe74aeef9fcfb806c7c1a20b1d7d Mon Sep 17 00:00:00 2001 From: Jon Michael Aanes Date: Sat, 1 Jun 2024 20:46:38 +0200 Subject: [PATCH] Ruff format --- setup.py | 3 +++ socials_util/__init__.py | 9 +++++++-- socials_util/_version.py | 2 +- test/test_parsing.py | 17 ++++++++++------- 4 files changed, 21 insertions(+), 10 deletions(-) diff --git a/setup.py b/setup.py index 8b66578..0d2c0bf 100644 --- a/setup.py +++ b/setup.py @@ -15,6 +15,7 @@ PACKAGE_NAME = 'socials_util' with open('README.md') as f: readme = f.read() + def parse_version_file(text: str) -> str: match = re.match(r'^__version__\s*=\s*(["\'])([\d\.]+)\1$', text) if match is None: @@ -22,9 +23,11 @@ def parse_version_file(text: str) -> str: raise Exception(msg) return match.group(2) + with open(PACKAGE_NAME + '/_version.py') as f: version = parse_version_file(f.read()) + def parse_requirements(text: str) -> list[str]: return text.strip().split('\n') diff --git a/socials_util/__init__.py b/socials_util/__init__.py index 7488fe9..632b5eb 100644 --- a/socials_util/__init__.py +++ b/socials_util/__init__.py @@ -188,7 +188,9 @@ WIKIDATA_PROPERTIES: dict[SocialSiteId | int, WikidataInfo] = { def re_social_subdomain(main_domain: str) -> str: - return r'^(?:https?:\/\/)?(?:www\.)?([\w_-]+)\.' + re.escape(main_domain) + r'(\/.*)?$' + return ( + r'^(?:https?:\/\/)?(?:www\.)?([\w_-]+)\.' + re.escape(main_domain) + r'(\/.*)?$' + ) RE_ID = r'@?([^\s/]+)' @@ -264,7 +266,9 @@ PIXIV_SKETCH_USER_NICKNAME_URL = re_social_path_adv('sketch.pixiv.net', RE_ID) URL_PARSE_CARRD_PAGE = re_social_subdomain('carrd.co') URL_PARSE_YOUTUBE_CHANNEL_HANDLE_1 = re_social_path_adv( - 'youtube.com', RE_ID, RE_ANY_SUBPATH + 'youtube.com', + RE_ID, + RE_ANY_SUBPATH, ) URL_PARSE_YOUTUBE_CHANNEL_HANDLE_2 = re_social_path_adv('youtube.com', 'c', RE_ID) URL_PARSE_YOUTUBE_CHANNEL_ID = re_social_path_adv('youtube.com', 'channel', RE_ID) @@ -419,6 +423,7 @@ WELL_KNOWN_MASTODON_INSTANCES: frozenset[str] = frozenset( DISALLOWED_IDENTIFIERS: frozenset[str] = frozenset({'www', 'intent', 'user'}) + def determine_social_from_url_internally( url: str, ) -> tuple[SocialSiteId | None, str | None]: diff --git a/socials_util/_version.py b/socials_util/_version.py index 0876fc4..124e462 100644 --- a/socials_util/_version.py +++ b/socials_util/_version.py @@ -1 +1 @@ -__version__ = '0.1.7' \ No newline at end of file +__version__ = '0.1.7' diff --git a/test/test_parsing.py b/test/test_parsing.py index 076ec96..80d811a 100644 --- a/test/test_parsing.py +++ b/test/test_parsing.py @@ -1,6 +1,6 @@ import pytest -from socials_util import determine_social_from_url, SocialSiteId, SocialLink +from socials_util import SocialLink, SocialSiteId, determine_social_from_url PARSABLE_SOCIAL_IDS_COMBINED: list[tuple[str, object, str]] = [ # Tumblr formats @@ -181,15 +181,17 @@ PARSABLE_SOCIAL_IDS_COMBINED: list[tuple[str, object, str]] = [ ] NOT_PARSABLE = [ - # Twitter intents are not supported - 'twitter.com/intent/user?user_id=123', - 'https://twitter.com/intent/user?user_id=123', - 'https://twitter.com/intent/user', - 'https://twitter.com/intent', + # Twitter intents are not supported + 'twitter.com/intent/user?user_id=123', + 'https://twitter.com/intent/user?user_id=123', + 'https://twitter.com/intent/user', + 'https://twitter.com/intent', ] + @pytest.mark.parametrize( - 'url,expected_social_site_id,expected_social_id', PARSABLE_SOCIAL_IDS_COMBINED + 'url,expected_social_site_id,expected_social_id', + PARSABLE_SOCIAL_IDS_COMBINED, ) def test_parse_social_ids(url, expected_social_site_id, expected_social_id): social_link: SocialLink | None = determine_social_from_url(url) @@ -199,6 +201,7 @@ def test_parse_social_ids(url, expected_social_site_id, expected_social_id): expected_social_site_id, ), url + @pytest.mark.parametrize('url', NOT_PARSABLE) def test_not_parsable(url: str): assert determine_social_from_url(url) is None