{"package":"portalocker","ecosystem":"pypi","latest_version":"4.3.0","description":"Cross-platform file locking, with Redis, PID-file and bounded-semaphore locks","license":"BSD-3-Clause","license_risk":"permissive","commercial_use_notes":"Permissive: commercial closed-source use OK; preserve the copyright notice.","homepage":"https://pypi.org/project/portalocker/","repository":"","downloads_weekly":0,"health":{"score":67,"risk":"moderate","breakdown":{"maintenance":25,"popularity":0,"security":25,"maturity":15,"community":2},"deprecated":false,"max_score":100},"vulnerabilities":{"count":0,"critical":0,"high":0,"medium":0,"low":0,"details":[]},"versions":{"latest":"4.3.0","total_count":51,"recent":["2.3.1","2.3.2","2.4.0","2.5.0","2.5.1","2.6.0","2.7.0","2.8.0","2.8.1","2.8.2","2.10.0","2.10.1","3.0.0","3.1.0","3.1.1","3.2.0","4.0.0","4.1.0","4.2.0","4.3.0"]},"metadata":{"deprecated":false,"deprecated_message":null,"maintainers_count":1,"first_published":null,"last_published":"2026-08-25T18:05:18.640979Z","dependencies_count":13,"dependencies":["sphinx>=7; extra == \"docs\"","furo; extra == \"docs\"","redis>=5.0; extra == \"redis\"","portalocker[redis]; extra == \"tests\"","fakeredis>=2.31.0; extra == \"tests\"","pytest>=5.4.1; extra == \"tests\"","pytest-cov>=2.8.1; extra == \"tests\"","pytest-timeout>=2.1.0; extra == \"tests\"","pytest-rerunfailures>=15.1; extra == \"tests\"","coverage-conditional-plugin>=0.9; extra == \"tests\"","types-pywin32>=310.0.0.20250429; extra == \"tests\"","typing-extensions>=4.4; extra == \"tests\"","pywin32>=226; sys_platform == \"win32\" and extra == \"win32\""]},"github_stats":null,"bundle":null,"typescript":null,"known_issues":{"bugs_count":0,"bugs_severity":{},"status_breakdown":{},"link":null,"scope":"none"},"historical_compromise":null,"recommendation":{"action":"use_with_caution","issues":["Moderate health score (67/100) — verify manually"],"use_version":"4.3.0","version_hint":null,"summary":"portalocker@4.3.0 low health (67/100) — consider alternatives"},"version_scoped":null,"_meta":{"endpoint":"check","tier":"full","philosophy":"DepScope is free. Use the cheapest endpoint that answers your real question.","cheaper_alternatives":[{"endpoint":"/api/exists/pypi/portalocker","tokens_estimated":12,"use_when":"you only need to know if the package exists (hallucination guard)"},{"endpoint":"/api/health/pypi/portalocker","tokens_estimated":80,"use_when":"you only need a 0-100 score for go/no-go (>=70 = safe)"},{"endpoint":"/api/prompt/pypi/portalocker","tokens_estimated":280,"use_when":"you want a plain-text LLM-friendly brief instead of JSON"},{"endpoint":"POST /api/check_bulk","tokens_estimated":60,"use_when":"you have 5+ packages to check; sends one round-trip instead of N"}],"docs":"https://depscope.dev/integrate","hint_bulk":"You've called /api/check 83 times in 60s. Save bandwidth + tokens with POST /api/check_bulk (1 round-trip for N pkgs)."},"requested_version":null,"_cache":"hit","_response_ms":0,"_powered_by":"depscope.dev — free package intelligence for AI agents","typosquat":{"is_suspected":false},"maintainer_trust":{"available":false},"malicious":{"is_malicious":false},"scorecard":{"available":false},"quality":{"available":true,"criticality_score":null,"criticality_tier":null,"velocity_pct":0.0,"velocity_trend":"stable","publish_security":"api_token"},"version_history_summary":{"total_versions":20,"first_release_age_days":5667,"last_release_days_ago":5,"avg_days_between_releases":298,"release_velocity":"active"}}