Seda Nur Yazıcı
Deploy application to Hugging Face Spaces
7edb85f
Raw
History Blame Contribute Delete
1.85 kB
from typing import Any
import requests
from config import PYPI_API
def search_pypi(package_name: str) -> dict[str, Any]:
"""
PyPI API üzerinden bir Python paketinin meta verilerini getirir.
"""
package_name = package_name.strip()
if not package_name:
raise ValueError("Paket adı boş olamaz.")
url = f"{PYPI_API}/{package_name}/json"
try:
response = requests.get(
url,
timeout=20,
)
except requests.RequestException as exc:
return {
"success": False,
"package_name": package_name,
"error": f"PyPI API isteği başarısız oldu: {exc}",
}
if response.status_code == 404:
return {
"success": False,
"package_name": package_name,
"error": "Paket PyPI üzerinde bulunamadı.",
}
if response.status_code != 200:
return {
"success": False,
"package_name": package_name,
"status_code": response.status_code,
"error": "PyPI API beklenmeyen bir yanıt döndürdü.",
}
try:
data = response.json()
except ValueError:
return {
"success": False,
"package_name": package_name,
"error": "PyPI API geçerli bir JSON yanıtı döndürmedi.",
}
info = data.get("info", {})
return {
"success": True,
"package_name": info.get("name") or package_name,
"version": info.get("version"),
"summary": info.get("summary"),
"author": info.get("author"),
"license": info.get("license"),
"python_requires": info.get("requires_python"),
"home_page": info.get("home_page"),
"project_url": info.get("project_url"),
"package_url": info.get("package_url"),
}