Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions 181/app/api/version_api.py
Original file line number Diff line number Diff line change
@@ -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}
31 changes: 31 additions & 0 deletions 181/app/core/version_check.py
Original file line number Diff line number Diff line change
@@ -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
8 changes: 8 additions & 0 deletions 181/app/main.py
Original file line number Diff line number Diff line change
@@ -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")
6 changes: 6 additions & 0 deletions 181/app/schemas/version.py
Original file line number Diff line number Diff line change
@@ -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")
6 changes: 6 additions & 0 deletions 181/requirments.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
fastapi
uvicorn
pip-audit
python-multipart
requests
setuptools