An open API service indexing awesome lists of open source software.

https://github.com/n8henrie/update-pypi-deps

Fetch the latest versions of PyPI dependencies from a pyproject.toml
https://github.com/n8henrie/update-pypi-deps

Last synced: 3 months ago
JSON representation

Fetch the latest versions of PyPI dependencies from a pyproject.toml

Awesome Lists containing this project

README

        

# update-pypi-deps

master: [![master branch build status](https://github.com/n8henrie/update-pypi-deps/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/n8henrie/update-pypi-deps/actions/workflows/ci.yml)

Parse pypi dependencies from pyproject.toml and output the latest versions

[![Crates.io](https://img.shields.io/crates/v/update-pypi-deps.svg)](https://crates.io/crates/update-pypi-deps)
[![Docs.rs](https://docs.rs/update-pypi-deps/badge.svg)](https://docs.rs/update-pypi-deps)

NB: This is a low-investment toy / hobby project.

## Features

1. Parses a `pyproject.toml`
2. Pulls out the `dependencies` and `optional-dependencies`
3. Concurrently fetches the default pypi release (usually but not always the
latest version) for each dependency in each of these
4. Prints this out in a format easy to copy and paste back into your pyproject.toml

## Introduction

Sometimes I want to update all of a python's project top-level dependencies to
the latest version and see if it still works. If so, I commit the change. If
not, I try to sort out which of the dependencies are holding me back and why.
Most sane people will just use something like poetry or pip-tools, but after
getting burned by investing time to learn Pipenv, I now prefer to do it the old
fashioned way.

## Quickstart

```console
$ update-pypi-deps [ -i /path/to/pyproject.toml ]
```

### Cargo

* Install the rust toolchain in order to have cargo installed by following
[this](https://www.rust-lang.org/tools/install) guide.
* run `cargo install update-pypi-deps`

### nix

```console
$ nix run github:n8henrie/update-pypi-deps
```

## Troubleshooting / FAQ

- This currently doesn't handle complex version constraints (like
`fauxmo>0.1,<0.6`); it just reuses the same constraint it is given, but with a
new version number