From 47cee8fb6b5355deda45ed21eae1f9b3a48afe85 Mon Sep 17 00:00:00 2001 From: Asim Hanif Date: Sat, 12 Jul 2025 00:46:34 +0500 Subject: [PATCH 1/4] Update .pre-commit-config.yaml to reflect current linting and formatting setup - Replaced outdated references to `black` with the actual tools used in the repo: `ruff` and `ruff-format`. - Ensured all configured hooks are up to date and relevant to Python development. - This aligns the linting and formatting setup with the project's actual pre-commit pipeline. - Improves consistency for contributors by preventing confusion between formatting tools. --- .pre-commit-config.yaml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 6c1879ab1ac6..372198d8c4a7 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -18,8 +18,8 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit rev: v0.11.11 hooks: - - id: ruff - - id: ruff-format + - id: ruff # Linting + - id: ruff-format # Auto-formatting - repo: https://github.com/codespell-project/codespell rev: v2.4.1 @@ -29,7 +29,7 @@ repos: - tomli - repo: https://github.com/tox-dev/pyproject-fmt - rev: "v2.6.0" + rev: v2.6.0 hooks: - id: pyproject-fmt @@ -53,12 +53,13 @@ repos: args: - --explicit-package-bases - --ignore-missing-imports - - --install-types # See mirrors-mypy README.md + - --install-types - --non-interactive - additional_dependencies: [types-requests] + additional_dependencies: + - types-requests - repo: https://github.com/pre-commit/mirrors-prettier - rev: "v4.0.0-alpha.8" + rev: v4.0.0-alpha.8 hooks: - id: prettier types_or: [toml, yaml] From 190a52de7c0e4d5e156ff4b972e013b756e59b66 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 11 Jul 2025 19:47:56 +0000 Subject: [PATCH 2/4] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 372198d8c4a7..ca5596402a25 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -18,8 +18,8 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit rev: v0.11.11 hooks: - - id: ruff # Linting - - id: ruff-format # Auto-formatting + - id: ruff # Linting + - id: ruff-format # Auto-formatting - repo: https://github.com/codespell-project/codespell rev: v2.4.1 From ea9ea8c5440d3d52f891c31cde7e77bcf6b860b7 Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Fri, 11 Jul 2025 22:15:27 +0200 Subject: [PATCH 3/4] We use httpx, not requests --- .pre-commit-config.yaml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index ca5596402a25..969328415be6 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -18,8 +18,8 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit rev: v0.11.11 hooks: - - id: ruff # Linting - - id: ruff-format # Auto-formatting + - id: ruff-check + - id: ruff-format - repo: https://github.com/codespell-project/codespell rev: v2.4.1 @@ -55,8 +55,6 @@ repos: - --ignore-missing-imports - --install-types - --non-interactive - additional_dependencies: - - types-requests - repo: https://github.com/pre-commit/mirrors-prettier rev: v4.0.0-alpha.8 From 0731f00198a5989cbfe74fdcc006cdd725a4793c Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Fri, 11 Jul 2025 22:23:21 +0200 Subject: [PATCH 4/4] response = httpx.get(request_url, timeout=10).raise_for_status() --- web_programming/fetch_well_rx_price.py | 33 +++++++++++--------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/web_programming/fetch_well_rx_price.py b/web_programming/fetch_well_rx_price.py index 93be2a9235d9..e34a89c19cc8 100644 --- a/web_programming/fetch_well_rx_price.py +++ b/web_programming/fetch_well_rx_price.py @@ -5,12 +5,10 @@ """ -from urllib.error import HTTPError - +import httpx from bs4 import BeautifulSoup -from requests import exceptions, get -BASE_URL = "https://www.wellrx.com/prescriptions/{0}/{1}/?freshSearch=true" +BASE_URL = "https://www.wellrx.com/prescriptions/{}/{}/?freshSearch=true" def fetch_pharmacy_and_price_list(drug_name: str, zip_code: str) -> list | None: @@ -18,8 +16,8 @@ def fetch_pharmacy_and_price_list(drug_name: str, zip_code: str) -> list | None: This function will take input of drug name and zipcode, then request to the BASE_URL site. - Get the page data and scrape it to the generate the - list of lowest prices for the prescription drug. + Get the page data and scrape it to generate the + list of the lowest prices for the prescription drug. Args: drug_name (str): [Drug name] @@ -28,12 +26,12 @@ def fetch_pharmacy_and_price_list(drug_name: str, zip_code: str) -> list | None: Returns: list: [List of pharmacy name and price] - >>> fetch_pharmacy_and_price_list(None, None) - - >>> fetch_pharmacy_and_price_list(None, 30303) - - >>> fetch_pharmacy_and_price_list("eliquis", None) - + >>> print(fetch_pharmacy_and_price_list(None, None)) + None + >>> print(fetch_pharmacy_and_price_list(None, 30303)) + None + >>> print(fetch_pharmacy_and_price_list("eliquis", None)) + None """ try: @@ -42,10 +40,7 @@ def fetch_pharmacy_and_price_list(drug_name: str, zip_code: str) -> list | None: return None request_url = BASE_URL.format(drug_name, zip_code) - response = get(request_url, timeout=10) - - # Is the response ok? - response.raise_for_status() + response = httpx.get(request_url, timeout=10).raise_for_status() # Scrape the data using bs4 soup = BeautifulSoup(response.text, "html.parser") @@ -53,14 +48,14 @@ def fetch_pharmacy_and_price_list(drug_name: str, zip_code: str) -> list | None: # This list will store the name and price. pharmacy_price_list = [] - # Fetch all the grids that contains the items. + # Fetch all the grids that contain the items. grid_list = soup.find_all("div", {"class": "grid-x pharmCard"}) if grid_list and len(grid_list) > 0: for grid in grid_list: # Get the pharmacy price. pharmacy_name = grid.find("p", {"class": "list-title"}).text - # Get price of the drug. + # Get the price of the drug. price = grid.find("span", {"p", "price price-large"}).text pharmacy_price_list.append( @@ -72,7 +67,7 @@ def fetch_pharmacy_and_price_list(drug_name: str, zip_code: str) -> list | None: return pharmacy_price_list - except (HTTPError, exceptions.RequestException, ValueError): + except (httpx.HTTPError, ValueError): return None