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"), }