Skip to content

PyPI (Python Package Index) Support #5

Description

@slauger

PyPI (Python Package Index) Support - Research & Planning

Status: 📋 Research Phase
Priority: ⭐⭐⭐ High (Python ist überall)

Use Case

Air-Gapped Python Development:

  • Python-Entwicklung in isolierten Netzwerken
  • Machine Learning / Data Science oft Air-Gapped (sensitive data)
  • CI/CD Pipelines brauchen lokale PyPI-Mirror
  • Reproduzierbare Builds mit gefrorenen Dependencies

Existing Tools (bekannt)

bandersnatch (Official PyPI Mirror)

devpi

PyPI Format (bekannt)

Simple API (PEP 503):

https://pypi.org/simple/
├── index.html                    # Liste aller Packages
├── requests/
│   └── index.html                # Versions-Liste
└── numpy/
    └── index.html

Package Format:

  • .whl (Wheel) - Binary distribution
  • .tar.gz / .zip - Source distribution
  • SHA256 Checksums in HTML

JSON API:

  • https://pypi.org/pypi/{package}/json
  • Detailed Metadata

Research Tasks

  • Bandersnatch Architektur analysieren
  • PEP 503 (Simple API) vollständig verstehen
  • JSON API vs. Simple API (was brauchen wir?)
  • Filtering-Strategien (requirements.txt-basiert?)
  • Metadata-Handling (METADATA, PKG-INFO)
  • Deduplikation bei Wheels (plattform-spezifisch!)

Questions

  • Wie groß ist ein Full PyPI Mirror? (TB-Range?)
  • Wheels sind plattform-spezifisch (linux_x86_64, macosx, win_amd64) - Filter?
  • Nur Wheels? Oder auch Source Distributions?
  • requirements.txt als Filter-Input?

Synergies mit Chantal

  • ✅ Content-addressed Storage wiederverwendbar
  • ✅ Snapshot-System wiederverwendbar
  • ✅ SHA256 Checksums (perfekt für Pool)
  • ✅ Simple API = einfache Metadaten

Estimated Complexity

⭐⭐ Low-Medium (ähnlich wie Helm, einfaches Format)

Estimated Effort: 2-3 weeks


Next Steps:

  1. Deep-dive Recherche zu bandersnatch
  2. PEP 503 Spec lesen
  3. Test-Mirror mit bandersnatch aufsetzen
  4. Design-Proposal erstellen

Metadata

Metadata

Assignees

No one assigned

    Labels

    researchResearch & Planning phase

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions