Skip to content

Commit

Permalink
Merge pull request #30 from hemzaz/master
Browse files Browse the repository at this point in the history
Fixes an issue caused by a stupid change in pypi.org which broke all cli clients
  • Loading branch information
victorgarric authored May 18, 2022
2 parents 0d04c37 + 57aa498 commit c66f5e7
Showing 1 changed file with 9 additions and 8 deletions.
17 changes: 9 additions & 8 deletions pip_search/pip_search.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,51 +62,52 @@ def search(
params = {"q": query, "page": page}
r = s.get(config.api_url, params=params)
soup = BeautifulSoup(r.text, "html.parser")
snippets += soup.select('a[class*="snippet"]')
snippets += soup.select('a[class*="package-snippet"]')

if "sort" in opts:
if opts.sort == "name":
snippets = sorted(
snippets,
key=lambda s: s.select_one('span[class*="name"]').text.strip(),
key=lambda s: s.select_one('span[class*="package-snippet__name"]').text.strip(),
)
elif opts.sort == "version":
from pkg_resources import parse_version

snippets = sorted(
snippets,
key=lambda s: parse_version(
s.select_one('span[class*="version"]').text.strip()
s.select_one('span[class*="package-snippet__version"]').text.strip()
),
)
elif opts.sort == "released":
snippets = sorted(
snippets,
key=lambda s: s.select_one('span[class*="created"]').find(
key=lambda s: s.select_one('span[class*="package-snippet__created"]').find(
"time"
)["datetime"],
)

for snippet in snippets:
link = urljoin(config.api_url, snippet.get("href"))
package = re.sub(
r"\s+", " ", snippet.select_one('span[class*="name"]').text.strip()
r"\s+", " ", snippet.select_one('span[class*="package-snippet__name"]').text.strip()
)
version = re.sub(
r"\s+",
" ",
snippet.select_one('span[class*="version"]').text.strip(),
snippet.select_one('span[class*="package-snippet__version"]').text.strip(),
)
released = re.sub(
r"\s+",
" ",
snippet.select_one('span[class*="created"]').find("time")[

snippet.select_one('span[class*="package-snippet__created"]').find("time")[
"datetime"
],
)
description = re.sub(
r"\s+",
" ",
snippet.select_one('p[class*="description"]').text.strip(),
snippet.select_one('p[class*="package-snippet__description"]').text.strip(),
)
yield Package(package, version, released, description, link)

0 comments on commit c66f5e7

Please sign in to comment.