diff --git a/181/app/api/version_api.py b/181/app/api/version_api.py new file mode 100644 index 0000000..2397c6e --- /dev/null +++ b/181/app/api/version_api.py @@ -0,0 +1,20 @@ +# app/api/version_api.py + +from fastapi import APIRouter +from app.core.version_check import check_versions_auto + +router = APIRouter() + +# می‌توانی نسخه‌های مورد نیاز پروژه خودت رو اینجا مشخص کنی +REQUIRED_VERSIONS = { + "fastapi": "0.100.0", + "uvicorn": "0.23.2" +} + +@router.get("/versions") +def version_check(): + """ + بررسی نسخه پکیج‌ها و نشان دادن ناسازگاری یا قدیمی بودن. + """ + issues = check_versions_auto(REQUIRED_VERSIONS) + return {"versions": issues} diff --git a/181/app/core/version_check.py b/181/app/core/version_check.py new file mode 100644 index 0000000..c0002ae --- /dev/null +++ b/181/app/core/version_check.py @@ -0,0 +1,31 @@ +# app/core/version_check.py + +import pkg_resources + +def check_versions_auto(required_versions=None): + """ + بررسی نسخه پکیج‌ها در محیط فعلی. + + required_versions: dict (نام پکیج: نسخه مورد نیاز) + اگر None باشد، فقط نسخه‌های نصب شده را نشان می‌دهد. + """ + installed_packages = {pkg.key: pkg.version for pkg in pkg_resources.working_set} + results = [] + + for pkg_name, installed_version in installed_packages.items(): + status = "OK" + required_version = None + + if required_versions and pkg_name in required_versions: + required_version = required_versions[pkg_name] + if installed_version != required_version: + status = "MISMATCH" + + results.append({ + "package": pkg_name, + "installed_version": installed_version, + "required_version": required_version, + "status": status + }) + + return results diff --git a/181/app/main.py b/181/app/main.py new file mode 100644 index 0000000..d6b96e1 --- /dev/null +++ b/181/app/main.py @@ -0,0 +1,8 @@ +# app/main.py + +from fastapi import FastAPI +from app.api.version_api import router as version_router + +app = FastAPI(title="Version Checker API") + +app.include_router(version_router, prefix="/api") diff --git a/181/app/schemas/version.py b/181/app/schemas/version.py new file mode 100644 index 0000000..c16294a --- /dev/null +++ b/181/app/schemas/version.py @@ -0,0 +1,6 @@ +# app/schemas/version.py +from pydantic import BaseModel, Field + +class PackageVersion(BaseModel): + name: str = Field(..., example="fastapi") + version: str = Field(..., example="0.95.1") diff --git a/181/requirments.txt b/181/requirments.txt new file mode 100644 index 0000000..324bb81 --- /dev/null +++ b/181/requirments.txt @@ -0,0 +1,6 @@ +fastapi +uvicorn +pip-audit +python-multipart +requests +setuptools \ No newline at end of file