Skip to content

Releases: manzt/juv

v0.4.2

21 Mar 19:47
Compare
Choose a tag to compare

Enhancements

  • Correctly resolve Jupyter data/config dirs on Windows (#89)

Other changes

  • Move juv run Jupyter setup logic to static module (#88)

Contributors

v0.4.1

19 Mar 21:40
Compare
Choose a tag to compare

Bug fixes

  • Manually clean up temp file in juv run on Windows (#87)

Contributors

Full Changelog: v0.4.0...v0.4.1

v0.4.0

18 Mar 02:48
Compare
Choose a tag to compare

Release Notes

This release is considered breaking since it sets a minimum bound on uv dependency to v0.6.7 or later. This could potentially affect environments where both juv and uv are Python dependencies, and there is an upper bound on the uv version (unlikely).

There are no intentional breaking changes to juv commands.

Enhancements

  • Add explicit juv sync command (#84)

Breaking changes

  • Replace juv venv internals with uv sync --script (#84)

Contributors

v0.3.4

12 Mar 17:59
Compare
Choose a tag to compare

What's Changed

  • Support stdin --requirements with juv add by @manzt in #83

Full Changelog: v0.3.3...v0.3.4

v0.3.3

06 Mar 20:26
Compare
Choose a tag to compare

Enhancements

  • Extend juv venv to regular python scripts (#82)

Allows for passing a script with inline script metadata to juv venv.

uv init --script foo.py
uv add --script foo.py attrs
juv venv --from foo.py
# Using CPython 3.13.0
# Creating virtual environment at: .venv
# Activate with: source .venv/bin/activate
# Using Python 3.13.0 environment at: .venv
# Resolved 1 package in 0.62ms
# Installed 1 package in 1ms
# + attrs==25.1.0

Useful for quickly creating a .venv for a standalone script, which can be used by other tools like text editors or IDEs.

Contributors

v0.3.2

06 Mar 19:40
44bb439
Compare
Choose a tag to compare

Enhancements

  • Add juv venv to support exporting explicit notebook environments (#80)

Some editors and environments are missing the benefits of standalone notebooks because juv manages virtual environments transparently within juv run. To improve compatibility with other tools (e.g., editors & IDEs), this release adds juv venv to export a virtual environment with all a notebook's specified dependencies (and ipykernel):

juv venv --from=Untitled.ipynb
# Using CPython 3.13.0
# Creating virtual environment at: .venv
# Activate with: source .venv/bin/activate

The resulting environment (i.e., .venv) can be selected in an editor like VS Code to run the notebook.

To create a virtual environment with only the locked dependencies (i.e., without ipykernel), use the --no-kernel flag:

juv venv --from=Untitled.ipynb --no-kernel

Contributors

v0.3.1

15 Feb 19:17
e2bbdba
Compare
Choose a tag to compare

What's Changed

  • Add --index and --default-index flags to juv add by @manzt in #76

Full Changelog: v0.3.0...v0.3.1

v0.3.0

15 Jan 18:05
e0ce712
Compare
Choose a tag to compare

Release Notes

This release adds support for generating lockfiles from Jupyter notebooks using inline metadata, as defined in PEP 723. It is based on uv's recent support for locking standalone scripts, except instead of writing a separate lockfile, juv embeds (and updates) a lockfile in the Jupyter notebook metadata.

By default, notebooks remain unlocked. To lock a notebook, run juv lock /path/to/notebook.ipynb, which generates and embeds a lockfile in the notebook's metadata under the "uv.lock" key. The lockfile is respected and updated automatically when using juv run, uv add, or uv remove.

Additional commands:

  • juv export: Outputs an alternative lockfile format (requirements.txt
    style) to stdout.
  • uv tree: Displays the dependency tree for a script.

Both commands work with notebooks, whether locked or unlocked.

This release is considered breaking due to the lockfile support, which requires a minimum uv 0.5.18 and modifies execution.

Breaking changes

  • Upgrade minimum uv to v0.5 (#63)
  • Respect lockfile in run (#67)

Enhancements

  • Add --clear flag to lock to clear lockfile metadata (#69)
  • Add export command (#70)
  • Add lock command (#64)
  • Add tree command (#68)
  • Sync lockfile during add command (#65)
  • Sync lockfile during remove command (#66)

Bug fixes

  • Require at least one package for add and remove (#73)
  • Support relative paths in the run command (#72)

Contributors

v0.2.28

06 Dec 02:19
Compare
Choose a tag to compare

Other changes

  • Add remove command (#59)

Contributors

Notes

This release adds juv remove to remove packages from a notebook or script. Dependencies are removed from the PEP-723 inline metadata. The command follows uv's semantics. See the uv docs for more information.

uvx juv init
uvx juv add Untitled.ipynb 'numpy>=1.0.0' 'polars' # adds 'numpy>=1.0.0' 'polars'
uvx juv remove Untitled.ipynb numpy # removes 'numpy>=1.0.0'

v0.2.27

04 Dec 03:01
Compare
Choose a tag to compare

Enhancements

  • Force UTF-8 encoding when reading/writing text (#56)

Bug fixes

  • Use TemporaryDirectoryIgnoreErrors in replacement template (#57)

Contributors