Skip to main content

Dependency Manager

Project description

CircleCI Maintenance macOS

forthebadge made-with-python

Rationale

These utilities are meant to solve a problem with related repositories and their dependency relationships

Projects may have hierarchical dependencies. See the following Pyut dependency diagram.

---
title: Pyut Dependency Graph
---
flowchart
	direction LR
	
  pyut(Pyut 7.7.0) --> oglio(oglio 0.5.80)
  pyut(Pyut 7.7.0) --> pyutplugins(pyutplugins 0.8.40)
  
  pyutplugins(pyutplugins 0.8.40) -.-> oglio(oglio 0.5.80)
  pyutplugins(pyutplugins 0.8.40) & oglio(oglio 0.5.80) --> untanglepyut.0.6.40

   pyut(Pyut 7.7.0) & oglio(oglio 0.5.80) & untanglepyut.0.6.40 --> ogl.0.70.20
   
   pyut(Pyut 7.7.0) &  pyutplugins(pyutplugins 0.8.40) &  oglio(oglio 0.5.80) &  untanglepyut.0.6.40 &  ogl.0.70.20 -...-> pyutmodel.1.4.2
   pyut(Pyut 7.7.0) & pyutplugins(pyutplugins 0.8.40) & ogl.0.70.20 ----> hasiicommon.0.2.0

    style pyut fill:#ee4,stroke:#333,stroke-width:
    %% linkStyle 1 stroke:#ff3,stroke-width:4px,color:red;

The above diagram illustrates how low level dependencies ripple up the dependency tree.

Dependency Locations

Additionally, projects may specify dependencies in different places. Examples of the dependency locations are

  • setup.py
  • requirements.txt
  • .circleci/config.yml
  • .travis.yml

Python Console Scripts

VersionOverlord means to handle this problem by providing a set of Python command line scripts to automate updating the first three of the above dependency specification locations

  • querySlug -- queries repositories for their latest release version
  • createSpec -- creates a dependency specification for a project
  • updateDeps -- updates the supported dependency locations using the generated specification

Required Environment Variables

The above commands depend on the following environment variables.

GITHUB_ACCESS_TOKEN - A personal GitHub access token necessary to read repository release information
PROJECTS_BASE             -  The local directory where the python projects are based
PROJECT                          -  The name of the project;  It should be a directory name

See the GitHub Documentation for instructions on how to create a usable access token. These scripts assume that a developer keeps all checked out repositories in a single directory. An example, of a PROJECTS_BASE is:

export PROJECTS_BASE="${HOME}/PycharmProjects" 

This should be set in your shell startup script. For example .bash_profile.

The PROJECT environment variable should be set on a project by project basis. I recommend you use direnv to manage these. An example of a .envrc follows:

export PROJECT=pyutmodel
source pyenv-3.10.6/bin/activate

Slugs

The command line options for querySlug and createSpec are GitHub slugs. For example, for the following repositories

https://github.com/hasii2011/pyutmodel

https://github.com/hasii2011/hasiicommon

The slugs are hasii2011/pyutmode and hasii2011/hasiicommon, respectively.

Usage

From the above dependency diagram assume the following:

Both the pyutmodel and hasiicommon repositories have been updated. We need to update the ogl dependencies to match the latest of both. Assume both GITHUB_ACCESS_TOKEN and PROJECTS_BASE are correctly set and PROJECT is set to 'ogl'. Use the following CLI invocation to create the specification file.

createSpec -s hasii2011/pyutmodel -s hasii2011/hasiicommon

The command creates the file versionSpecification.csv with the following contents.

PackageName,OldVersion,NewVersion
pyutmodel,1.4.0,1.4.1
hasiicommon,0.0.7,0.1.0                   

Again assuming the previously mentioned environment variables are set the following CLI invocation;

updateDeps

correctly updates the following

  • setup.py
  • requirements.txt
  • .circleci/config.yml

Installation

pip install versionoverlord


Written by Humberto A. Sanchez II (C) 2023

Note

For all kind of problems, requests, enhancements, bug reports, etc., please drop me an e-mail.

Humberto's Modified Logo

I am concerned about GitHub's Copilot project

I urge you to read about the Give up GitHub campaign from the Software Freedom Conservancy.

While I do not advocate for all the issues listed there I do not like that a company like Microsoft may profit from open source projects.

I continue to use GitHub because it offers the services I need for free. But, I continue to monitor their terms of service.

Any use of this project's code by GitHub Copilot, past or present, is done without my permission. I do not consent to GitHub's use of this project's code in Copilot.

A repository owner may opt out of Copilot by changing Settings --> GitHub Copilot.

I have done so.

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

versionoverlord-0.5.8.tar.gz (51.2 kB view details)

Uploaded Source

Built Distribution

versionoverlord-0.5.8-py3-none-any.whl (46.1 kB view details)

Uploaded Python 3

File details

Details for the file versionoverlord-0.5.8.tar.gz.

File metadata

  • Download URL: versionoverlord-0.5.8.tar.gz
  • Upload date:
  • Size: 51.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.6

File hashes

Hashes for versionoverlord-0.5.8.tar.gz
Algorithm Hash digest
SHA256 95e6aa7638c5cea0f11ad237d8602575dec6bac7e74d7f9efbd4d7f77dd410b8
MD5 c87ba0f7ce2f5f895cd19a46f3a93403
BLAKE2b-256 4b0e1e7ec3550f12a2aed033fb992ecbeeb2e01319ae408bf1ef9dd91f6356c2

See more details on using hashes here.

File details

Details for the file versionoverlord-0.5.8-py3-none-any.whl.

File metadata

File hashes

Hashes for versionoverlord-0.5.8-py3-none-any.whl
Algorithm Hash digest
SHA256 959b1f77ec9ee4d9f71e51e6283b1961e0352afed1972410ee4a91a73caf8c5a
MD5 45a23a6959e93b9b0fdc1480f952a4d1
BLAKE2b-256 2753a19d0aa4e0fb44eae928e1cb3b74e9a857201a68e3b4e3c7328d264f6a80

See more details on using hashes here.

Supported by

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