Skip to main content

Unified toolkit to fetch, normalize, score, and export OSS contribution metrics.

Project description

oss-metrics-kit

Toolkit to fetch, normalize, score, and export OSS contribution data — end to end.

Status: early stage; CLI and core models are available and expanding.

What you can do in 5 minutes

  • Analyze a GitHub user’s activity and get a simple score summary.
  • Save scores into SQLite or Postgres for dashboards.
  • Export scores to Parquet for data tools.
  • Optionally, let an LLM suggest a rules TOML from your events.

Quick Start (Beginner-friendly)

  1. Install the package (pick one)
  • pip (recommended for users): pip install oss-metrics-kit
  • uv (recommended for devs): uv venv .venv && source .venv/bin/activate && uv sync --dev
  1. Set a GitHub token (read-only is enough)
export GITHUB_TOKEN=ghp_xxx   # or GH_TOKEN
  1. Analyze your account and print results
ossmk analyze-user <your_github_login> --since 90d --api auto --out -
  1. Save scores (SQLite for a quick try)
ossmk analyze-user <your_github_login> --out scores.json
ossmk save sqlite:///./metrics.db --input scores.json
  1. Export scores to Parquet (for data tools)
pip install "oss-metrics-kit[exporters-parquet]"
ossmk analyze-user <your_github_login> --out parquet:./scores.parquet

That’s it. See Getting Started for more step‑by‑step details.

Getting Started (Step-by-step)

If you are new to Python tools or GitHub APIs, read:

  • docs/getting-started.md — a gentle, copy‑paste tutorial with expected outputs.
  • docs/usage.md — command reference with CI examples.

Install (development)

Use a virtual environment (venv/conda/uv) and install editable:

  • pip install -e . or python -m pip install -e .
  • Check CLI help with ossmk --help

Note: Running ossmk requires installation. For direct runs during development, either install editable or set PYTHONPATH=src and run the entry point.

Dev environment (uv recommended)

  1. Install uv
  • macOS/Linux: curl -LsSf https://astral.sh/uv/install.sh | sh
  • Homebrew: brew install uv
  • pipx: pipx install uv
  1. Create venv and sync deps
  • uv venv .venvsource .venv/bin/activate
  • uv sync --dev
  • All extras: uv sync --dev --extra all
  1. Run
  • ossmk --help (in venv) or uv run ossmk --help

Install from PyPI (users)

  • Stable: pip install oss-metrics-kit
  • With Postgres exporter: pip install "oss-metrics-kit[exporters-postgres]"

Examples

  • Persist scores to Postgres:
export OSSMK_PG_DSN="postgresql://user:pass@host:5432/db"
ossmk analyze-user <your_github_login> --save-pg
  • Load proprietary rules (TOML):
export OSSMK_RULES_FILE=/absolute/path/to/private/rules.toml
ossmk analyze-user <your_github_login> --out -

Usage (overview)

  • Version: ossmk version
  • Analyze GitHub user (parallel fetch, since/GraphQL aware): ossmk analyze-user <login> --since 90d --api auto --out -
  • Fetch repo events: ossmk fetch --provider github --repo owner/name --since 30d --out -
  • Save scores: ossmk save postgresql://... --input scores.json or ossmk save sqlite:///./metrics.db --input scores.json

Storage is selected via DSN (Postgres/SQLite). Parquet output is available as an optional exporter.

LLM-assisted rules (optional)

  • Suggest rules: ossmk rules-llm --input events.json --provider openai --model gpt-4o-mini --out rules.toml
  • Extras: pip install "oss-metrics-kit[llm-openai]" or oss-metrics-kit[llm-anthropic]
  • See docs/LLM_RULES.md

Security & operations

  • Keep tokens in env (GITHUB_TOKEN/GH_TOKEN) and never log them.
  • Rate limiting is a backend responsibility; a simple example is provided at ossmk.security.ratelimit.RateLimiter (use Redis for production).
  • Store private rule TOMLs outside the repo and point OSSMK_RULES_FILE to them. rules=auto|default will load it.
  • Optional features (Postgres/Parquet/LLM) are separated as extras.

See docs/INTEGRATION.md for backend integration. Development typing/lint policy: docs/dev.md. Detailed usage: docs/usage.md. A beginner tutorial is in docs/getting-started.md.

Environment variables

  • GITHUB_TOKEN or GH_TOKEN: GitHub API token (required)
  • OSSMK_RULES_FILE: path to a private rules TOML (optional)
  • OSSMK_PG_DSN or DATABASE_URL: Postgres DSN (if persisting)
  • REDIS_URL: Redis rate limiter (optional)
  • OSSMK_MAX_SINCE_DAYS: max backward window for since (default 180)

Publishing to PyPI (maintainers)

See docs/RELEASING.md for the full release flow (versioning, tagging, CI-based publish, and manual alternatives).

Design highlights

  • src/ layout with py.typed for type distribution.
  • Thin CLI with Typer; business logic in ossmk.core.
  • Providers/exporters/storage/rules via entry points.

Troubleshooting

  • pip._vendor.tomli.TOMLDecodeError: Invalid initial character...

    • Cause: malformed leading section in pyproject.toml
    • Fix: ensure first section is [build-system], reinstall pip install -e .
  • ossmk: command not found

    • Cause: not installed or wrong environment activated.
    • Fix: pip install -e . in the repo, and activate the same environment.
    • With uv: uv sync --dev then source .venv/bin/activate, or uv run ossmk --help.

License

Apache-2.0

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

oss_metrics_kit-0.0.3.tar.gz (36.6 kB view details)

Uploaded Source

Built Distribution

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

oss_metrics_kit-0.0.3-py3-none-any.whl (33.8 kB view details)

Uploaded Python 3

File details

Details for the file oss_metrics_kit-0.0.3.tar.gz.

File metadata

  • Download URL: oss_metrics_kit-0.0.3.tar.gz
  • Upload date:
  • Size: 36.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for oss_metrics_kit-0.0.3.tar.gz
Algorithm Hash digest
SHA256 d28cd9f4696a13846e61d2a8d5031fd22c79f120e725a6097054d6a4063e4c5c
MD5 6ddef10714b62d24cb6e365c811c3bcb
BLAKE2b-256 316950dd4b524177af97c46b81e3d507e26c31754948422638318528564a9f11

See more details on using hashes here.

Provenance

The following attestation bundles were made for oss_metrics_kit-0.0.3.tar.gz:

Publisher: publish.yml on refactoring-my-path/oss-metrics-kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oss_metrics_kit-0.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for oss_metrics_kit-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 ed4405fd2ea42f1e3aae387e3cdb8af8a8d27aca327cfda5a15933a78a4acbd1
MD5 725e0082b68b6f0fe2316dda8f06fe45
BLAKE2b-256 df4f54e70c776e04f47e325986c37b41e2243fcd390659dfab2422ab6a36f189

See more details on using hashes here.

Provenance

The following attestation bundles were made for oss_metrics_kit-0.0.3-py3-none-any.whl:

Publisher: publish.yml on refactoring-my-path/oss-metrics-kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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