Skip to main content

A CLI tool for extracting and analyzing dependency manifests across multiple ecosystems

Project description

Vitalis

This repository now provides the functionality for analyzing and monitoring package health across different programming languages and package managers. The new analyzer service offers a seamless workflow from dependency manifest parsing to repository health analysis.

Repository Structure

  • analyzer/: The unified FastAPI service for package and repository health analysis

    • Single orchestrator endpoint for manifest-to-health-report workflow
    • Supports Python (PyPI), JavaScript (npm), and more
    • Integrates dependency extraction, package info, and repo health checks
    • Docker deployment and CI/CD support
  • extractor/: Standalone Python tooling and GitHub Action for extracting dependencies from manifests

  • example-projects/: Example projects in different languages for testing and demonstration

Purpose

This repository aims to provide tools and services for:

  1. Analyzing package health across different programming languages
  2. Monitoring package repositories and their metadata
  3. Providing insights into package dependencies and their relationships
  4. Supporting development teams in making informed decisions about package usage
  5. Evaluating repository health through activity metrics and documentation presence
  6. Identifying potential maintenance issues through inactivity tracking

Installation

From Test PyPI

pipx install --index-url https://test.pypi.org/simple/ vitalis

From Source

git clone https://github.com/zchryr/vitalis.git
cd vitalis
pip install -e .

CLI Usage

The vitalis CLI provides commands for extracting dependencies from manifest files:

# Check CLI health
vitalis health

# Extract dependencies from a manifest file
vitalis extract requirements.txt
vitalis extract package.json
vitalis extract pyproject.toml

# Specify manifest type explicitly
vitalis extract myfile.txt --manifest-type requirements.txt

Supported Manifest Types

  • requirements.txt (Python pip)
  • pyproject.toml (Python Poetry/setuptools)
  • poetry.lock (Python Poetry)
  • package.json (Node.js npm)
  • environment.yml (Conda)

Getting Started

Analyzer API

The main service is now located in analyzer. It exposes a single orchestrator endpoint:

POST /v1/analyze

Request Body:

{
  "manifest_content": "<string: contents of requirements.txt, package.json, etc.>",
  "manifest_type": "requirements.txt | package.json | pyproject.toml | environment.yml | poetry.lock",
  "policy": {
    "max_inactive_days": 365,
    "require_license": true,
    "require_readme": true
  }
}
  • manifest_content: The raw text of your dependency manifest.
  • manifest_type: The type of manifest (e.g., requirements.txt, package.json).
  • policy: (Optional) Health policy configuration.

Response: Returns a comprehensive health analysis for each dependency, including package metadata and repository health metrics.

Development

The repository uses Python for the main API service and includes example projects in various languages. Development dependencies and setup instructions can be found in the respective component directories.

Example Usage

You can use the /v1/analyze endpoint to analyze any supported manifest. Example with curl:

curl -X POST http://localhost:8000/v1/analyze \
  -H "Content-Type: application/json" \
  -d '{
    "manifest_content": "requests\nfastapi\npytest",
    "manifest_type": "requirements.txt"
  }'

Authentication

For repository health checks, set your GitHub and GitLab tokens in a .env file in the project root:

GITHUB_TOKEN=your_github_token
GITLAB_TOKEN=your_gitlab_token

The analyzer service will load these automatically.

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

vitalis-0.1.0.tar.gz (18.2 kB view details)

Uploaded Source

Built Distribution

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

vitalis-0.1.0-py3-none-any.whl (21.9 kB view details)

Uploaded Python 3

File details

Details for the file vitalis-0.1.0.tar.gz.

File metadata

  • Download URL: vitalis-0.1.0.tar.gz
  • Upload date:
  • Size: 18.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for vitalis-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e8f6d243a7f36f8c46c0520b36533d47fd2c7ff7e56688a47f37965000056687
MD5 18d437f303e4072b17d34272100f0846
BLAKE2b-256 b23168e42bc7cfecbfa5b75e21c1b8e2307e6c1240295599f71f6154d6d8dc76

See more details on using hashes here.

File details

Details for the file vitalis-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: vitalis-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 21.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for vitalis-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8bb90cd11b66f933a20cf01c27925ee13f17c7b468a7faedcdfe478c29902146
MD5 ceb570e230c0520c7562b08506b8bff2
BLAKE2b-256 c35c15f17d73e18f8612d4e5d0056fcc74682f0516910cbf6f28e200b591e854

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