Skip to main content

gh-skyline-python logo

Docs · Plan · Report Bug · Request Feature

Tests Release Artifacts Docs Python Versions Contributors

gh-skyline-python

Python-only MVP of GitHub Skyline generation.

This project can fetch GitHub contribution history, render ASCII output, and generate an STL skyline.

Example Output (ASCII)

   ╽ ╻                            ╻
   ░ ░  ╻                 ╻       ░ ╻╻          ╻
   ░╻░╻ ░╻       ╻   ╻   ╻░     ╻ ░ ░░          ░
 ╻╻░░░░ ░░  ╻   ╻░  ╻░╻ ╻░░ ╻  ┃░╻░╽▓░      ╻ ╻ ░╻╻╻
 ░░░░░░╻░░  ░╻ ╻░░╻ ░░░╻░░░╻░╻ ░░░▒░░░     ╻░╻░ ▒░░░
░░░░░░░░░░░░░░░░░░░░░░▓░░░░░░░ ░░░░░░▒ ░  ░░░░░ ▒░░░

Run this to print an ASCII preview only:

PYTHONPATH=src python -m gh_skyline --year 2024 --user JLSteenwyk --art-only

ASCII Key

  • ╽ high activity at column top
  • ┃ medium activity at column top
  • ╻ low activity at column top
  • ▓ high activity in middle/base blocks
  • ▒ medium activity in middle/base blocks
  • ░ low activity in middle/base blocks
  • . future dates (not yet reached)
  • <space> zero contributions

Current Status

Python-Only Workflow

This project does not require Go for development, testing, or fixture generation. All parity artifacts and tests are generated/validated using Python tooling in this repo.

  • MVP: ready for local skyline generation
  • Test status: 52 passed
  • Not complete yet: final parity tuning and release cutover polish

See migration tracking in:

  • docs/MIGRATION_PLAN.md
  • docs/PROGRESS.md

Requirements

  • Python 3.11+
  • Network access to GitHub GraphQL API
  • Auth via one of:
  1. gh CLI auth session (gh auth login)
  2. GITHUB_TOKEN or GH_TOKEN

Setup

cd gh-skyline-python
python3 -m venv venv
source venv/bin/activate
pip install -U pip
pip install -e .[dev]

Usage

Run as module:

PYTHONPATH=src python -m gh_skyline --year 2024 --user JLSteenwyk --output my-skyline

Or after editable install:

gh-skyline --year 2024 --user JLSteenwyk --output my-skyline

Multiple years

PYTHONPATH=src python -m gh_skyline --user JLSteenwyk --year 2019-2024 --output my-skyline

Full history (join year to now)

PYTHONPATH=src python -m gh_skyline --user JLSteenwyk --full --output my-skyline

ASCII preview only

PYTHONPATH=src python -m gh_skyline --year 2024 --user JLSteenwyk --art-only

Auth Notes

If gh is installed and on PATH, the tool uses it first.

If gh is not installed, set a token:

export GITHUB_TOKEN=YOUR_TOKEN

Optional GHES host override:

export GH_HOST=github.example.com

Testing

source venv/bin/activate
PYTHONPATH=src python -m pytest

Output

  • Default output filename pattern: {username}-{year|year-range}-github-skyline.stl
  • If --output omits .stl, the extension is added automatically.

3D Printing

The generated .stl file is ready for standard 3D-print workflows.

  1. Import the STL into a slicer (PrusaSlicer, Cura, Bambu Studio, etc.).
  2. Orient the model flat on the build plate.
  3. Slice to gcode and print.

Starter slicer settings:

  • Layer height: 0.20 mm
  • Walls/perimeters: 2-3
  • Top/bottom layers: 4-5
  • Infill: 10-15% (grid or gyroid)
  • Supports: Off (usually not needed)
  • Build plate adhesion: Brim if corners lift

Metadata

Release files for gh-skyline-python 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gh-skyline-python 0.1.1
File Size Uploaded Provenance Actions
gh_skyline_python-0.1.1.tar.gz 16.6 kB With provenance Details for gh_skyline_python-0.1.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for gh-skyline-python 0.1.1
File Interpreter ABI Platform Actions
gh_skyline_python-0.1.1-py3-none-any.whl Python 3 none any Details for gh_skyline_python-0.1.1-py3-none-any.whl

Total release size: 36.6 kB

Release files / gh_skyline_python-0.1.1.tar.gz

Download URL gh_skyline_python-0.1.1.tar.gz
Size 16.6 kB
Tags Source
SHA-256 checksum
How to use checksums
12d1fa4f9d21ce1edaaff64e0728979c652ce965aabf0bb32c25a589b1f6a88b
BLAKE2b-256 checksum
How to use checksums
6f20add872c2ae5d2451d9ab9d5e48649d775b7f074e4ec3176f591529dccbff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 23, 2026.

Transparency log

Release files / gh_skyline_python-0.1.1-py3-none-any.whl

Download URL gh_skyline_python-0.1.1-py3-none-any.whl
Size 20.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a7bf3d28f3d88a11a539171383267cc151535c5791ed1bee6e081f519beee351
BLAKE2b-256 checksum
How to use checksums
ae9278408c5fe73ba6871c8f14cfbe10ff36060aed9b7e124dae4c95d82369ea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 23, 2026.

Transparency log

Security for gh-skyline-python 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for gh_skyline_python-0.1.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 23, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page