https://github.com/dimagi/dependency-metrics
Python tool to help monitor a project's dependencies and how out of date they are.
https://github.com/dimagi/dependency-metrics
Last synced: 5 months ago
JSON representation
Python tool to help monitor a project's dependencies and how out of date they are.
- Host: GitHub
- URL: https://github.com/dimagi/dependency-metrics
- Owner: dimagi
- License: other
- Created: 2023-03-13T16:14:42.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-05-23T15:50:13.000Z (about 1 year ago)
- Last Synced: 2025-12-05T17:48:38.152Z (7 months ago)
- Language: Python
- Size: 74.2 KB
- Stars: 1
- Watchers: 13
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## Welcome to dependency-metrics ##
### Summary
A command line tool to analyze and monitor how up-to-date dependencies of a project are. For more detail, see the [Usage](#usage) section below.
#### Supported Package Managers
- pip or uv
- yarn
#### Supported Application Monitoring Platforms
- DataDog
### Usage
Run the `metrics` tool from within the repository you wish to generate metrics for.
#### Default behavior
All that is needed is the package manager you want to generate metrics for, and `metrics` will output a table detailing
how out-of-date each dependency is.
```commandline
$ metrics pip
Behind Package Latest Version
0.1.0 my-depedency 1.1.0 1.0.0
2.0.0 my-other-dependency 3.2.1 1.2.3
```
#### --stats option
Use the `--stats` option to generate a simple dictionary that displays the total number of outdated dependencies, as well as a breakdown detailing the number of outdated dependencies for each version type.
```commandline
$ metrics pip --stats
Total: 5
Outdated: 2
Multi-Major: 1
Major: 0
Minor: 1
Patch: 0
Unknown: 0
```
#### --send option
> **NOTE:** Additional setup is required to successfully post stats to a supported backend. See [platform setup](#application-monitoring-platform-setup) for further information.
Use the `--send` option to post the same metrisc generated by `--stats` to an application monitoring platform.
```commandline
$ metrics pip --send
```
### Application Monitoring Platform Setup
This is required to make use of the `--send` option, enabling the ability to send generated stats to a backend of your choice.
#### DataDog
Set the `DATADOG_API_KEY` and `DATADOG_APP_KEY` environment variables in the environment you will run `metrics --send` from.
### Development
#### Requirements
```commandline
pip install -e . # installs dependencies defined in pyproject.toml
pip install -e .[test] # installs test dependencies -- '.[test]' if using zsh
```
#### Tests
Must install test dependencies first. See [requirements](#requirements) above.
```commandline
nose2 # runs all tests
nose2 dot.path.to.file.class.or.test # runs specific test
```
### Publishing to PyPI
To publish a new release on [pypi.org](https://pypi.org/p/dependency-metrics/):
- Update `__version__` in [dependency_metrics/_\_init__.py](dependency_metrics/__init__.py).
- Create and push a git tag with the new version number.
```sh
git tag vX.Y.Z
git push --tags
```
- Wait for the [pypi.yml workflow](https://github.com/dimagi/dependency-metrics/actions/workflows/pypi.yml)
to build and publish the new release.
A dev release is published on [test.pypi.org](https://test.pypi.org/p/dependency-metrics/)
on each new push or merge to main. A dev release may also be published
on-demand for any branch with
[workflow dispatch](https://github.com/dimagi/dependency-metrics/actions/workflows/pypi.yml).