Practical UVA VS Code extension for working with Python dependency files. Supports both uv / PEP 621 Features🔍 Outdated Dependency DetectionAutomatically checks your dependencies against PyPI and highlights outdated versions with inline diagnostics. Works in both
🛡️ Security Advisories (opt-in)Checks your declared dependencies against the OSV advisory database — the PyPA Advisory Database and GitHub Security Advisories — and reports known vulnerabilities as diagnostics, with the CVE, its severity, and the version that fixes it. This is off by default. Enable Findings appear in four places: as squiggles and Problems-panel entries (with a clickable link to the advisory on osv.dev), in the hover for the package, as a Upgrade … (fixes CVE-…) quick fix, and in a Security column in the dependency dashboard. When a package carries several advisories wanting different floors, the quick fix picks the highest version, so one bump clears them all. Checking a single dependencyPress The result distinguishes clean from unverifiable. A dependency with no How versions are resolvedAn advisory applies to a concrete version, but a dependency is usually declared as a range. Two cases:
Only your top-level declared dependencies are checked. PrivacyEnabling this sends the names and versions of your declared dependencies to 🐍 Pip /
|
| Command | Description |
|---|---|
UV: Sync |
Run uv sync |
UV: Add |
Add a package via uv add |
UV: Run |
Run a command via uv run |
UV: Show Dependencies |
Open the dependency dashboard |
UV: Check Dependencies for Security Advisories |
Run a one-off OSV check on the active file, regardless of uv.security.enabled |
UV: Convert requirements.txt to uv project |
Run uv init (if needed) and uv add -r <file> — only shown when a requirements.txt is active |
Settings
| Setting | Default | Description |
|---|---|---|
uv.security.enabled |
false |
Check declared dependencies against the OSV advisory database and report known vulnerabilities as diagnostics. Sends dependency names and versions to api.osv.dev. |
uv.security.includeRangeFindings |
false |
Also report advisories that a dependency's declared range permits but that its resolved version may not have. Requires uv.security.enabled. |
Supported Sources
In pyproject.toml, dependencies are parsed using a real TOML parser (@iarna/toml) — both inline (dependencies = ['x==1.0', ...]) and multi-line array styles, with single or double quotes, are handled identically. Recognized sections:
[project]→dependencies = [...][project.optional-dependencies]→dev = [...], etc.[dependency-groups]→dev = [...], etc.
In requirements.txt (and the variants listed above), each line is parsed as a PEP 508 requirement.
Requirements
- VS Code
^1.125.0 - Internet access for PyPI lookups, and for
api.osv.devif security checking is enabled
About Wizhut.tech
Practical UV is built by Wizhut.tech. We make sharp, focused software that removes busywork from the working day — lean open-source libraries at one end, full-platform observability and AI tooling at the other. The common thread is that our tools are meant to stay out of your way.
Open source
| Project | What it does |
|---|---|
| Practical UV | This extension — uv and pip dependency management inside VS Code. |
| Kyori | String distance and similarity for JavaScript: Levenshtein, Hamming, Damerau-Levenshtein, Jaro-Winkler, plus a token-sensitive ranking score for autocomplete. @wizhut_tech/kyori |
| WizJS | Curated everyday JavaScript utilities organised by namespace, without becoming another lodash. Zero runtime dependencies. @wizhut_tech/wizjs |
| json2jsonl | A pipe-friendly CLI that converts one or many JSON files into a single JSONL stream. One static binary. |
Apps and platforms
| Product | What it does |
|---|---|
| EasyHomebrew | Supply-chain hygiene for your Mac: a native Homebrew manager that scans everything you've installed against a live CVE database and keeps watching for new advisories. macOS 14+, €10 one-time. |
| Contain | Gathers macOS windows you already have open into one window with tabs — one tab per window, put back exactly where it was when you release it. macOS 13+, free public beta (the current build is time-limited). |
| Promptivo | Scores AI prompts across seven quality dimensions, deterministically — no model calls, no latency, no per-evaluation cost. Grounded in peer-reviewed research. |
| Cloudproc | Application-level observability: metrics, traces, and logs in one dashboard, with alerting that cuts noise rather than adding to it. |
Development
# Install dependencies
npm install
# Compile
npm run compile
# Watch for changes
npm run watch
# Run unit tests (parser, requirements.txt, security audit)
npm test
# Build .vsix for both registries (output in dist/)
npm run package # vscode + openvsx
npm run package:vscode # VS Code Marketplace only
npm run package:openvsx # Open VSX only
The two registries require different (name, publisher) pairs. Edit build/targets.json to change them. The script overrides package.json in place during each build and restores it afterwards.
Press F5 to launch the Extension Development Host for testing.
Tests use the built-in node:test runner and live in src/test/.
License
MIT

