Skip to main content

Keep your Python dependencies fresh

Project description

FreshDeps

FreshDeps is a Python tool designed to keep your project's dependencies up-to-date by automatically updating your requirements.txt file from requirements.in.

It integrates with GitLab to create merge requests (MRs) for dependency updates, ensuring that you always have fresh and secure dependencies in your project.

Features

  • Automatically updates Python dependencies using pip-compile.
  • Creates GitLab merge requests with updated dependencies.
  • Supports assigning MRs to specific users.
  • Prevents duplicate or conflicting MRs by checking existing ones.
  • Allows multiple open MRs if needed.

Installation

You can install FreshDeps via pip:

pip install freshdeps

Usage GitLab CI

To use FreshDeps, add job and create scheduled pipeline:

stages:
 - update-dependencies

variables:
 PIP_INDEX_URL: "https://pypi.org/simple"
 GITLAB_URL: "https://gitlab.com"
 GITLAB_PROJECT_ID: $CI_PROJECT_ID
 GITLAB_PRIVATE_TOKEN: $CI_JOB_TOKEN
 GITLAB_DEFAULT_BRANCH: "main"

update_dependencies:
 stage: update-dependencies
 image: python:3.9-slim
 script:
   - pip install freshdeps pip-tools
   - fresh-deps requirements.in --output-file requirements.txt \
       --pypi-index-url=$PIP_INDEX_URL \
       --gitlab-url=$GITLAB_URL \
       --gitlab-project-id=$GITLAB_PROJECT_ID \
       --gitlab-private-token=$GITLAB_PRIVATE_TOKEN \
       --gitlab-default-branch=$GITLAB_DEFAULT_BRANCH

only:
   - schedules   # This job will only run on scheduled pipelines (you can adjust this as needed)

Command-line Arguments:

Argument Description
requirements_in Path to the input file (.in) containing unpinned requirements.
--output-file Path to output file (.txt) where pinned requirements will be written.
--pypi-index-url PyPI index URL (default: https://pypi.org/simple).
--gitlab-url The URL of your GitLab instance (default: https://gitlab.com).
--gitlab-project-id The ID of the GitLab project where MRs should be created.
--gitlab-private-token Your private token for authenticating with GitLab API.
--gitlab-assignee Username of a user who should be assigned to review the MR (optional).
--gitlab-default-branch Default branch name in your repository (default: main).
--gitlab-allow-multiple-mrs Allow multiple open merge requests at once (optional flag).

Handling Merge Requests:

  • If there are no changes detected between current and newly generated dependency files, no MR will be created.

  • If an MR already exists for similar changes, FreshDeps prevents creating duplicates unless explicitly allowed via flags.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

freshdeps-1.0.0.tar.gz (5.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

freshdeps-1.0.0-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

Details for the file freshdeps-1.0.0.tar.gz.

File metadata

  • Download URL: freshdeps-1.0.0.tar.gz
  • Upload date:
  • Size: 5.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.8.10

File hashes

Hashes for freshdeps-1.0.0.tar.gz
Algorithm Hash digest
SHA256 1f0a3f8a4e969ac8ab5920e7dd239ceb0b6d11678cf34452a08748348f7ffaaa
MD5 e04e13d36e7d70165857850e7853e8b2
BLAKE2b-256 d62d836025cf19d1f5059c35852c81f353ac588e254aab9af92e9ca5ab1f6cb4

See more details on using hashes here.

File details

Details for the file freshdeps-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: freshdeps-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 7.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.8.10

File hashes

Hashes for freshdeps-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ca9eda234883da718b3c410b9206b3d72cef2535966c2ec1a3d8055c719f80d8
MD5 e05f45abf637930cf0dda78784ffafa4
BLAKE2b-256 ce5ac9f66787243e967c71ae920eae4f3c4390a07c34690a11b8c28eef35d2af

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page