Files
computer-playbook/roles/dev-python
kevinveenbirkenbachandClaude Opus 5 aceb5295ef feat(docs): let the documentation build generate what make docs generated
Cosmos, Quick Setup and Credits follow from meta/services.yml, categories.yml
and galaxy_info.author, yet 279 role READMEs carried a copy that went stale
whenever the metadata moved and nobody re-ran make docs. The documentation
build now runs the generators itself, against its own scratch checkout, and
the committed READMEs keep only the prose a person writes.

utils.cache.PROJECT_ROOT derives from the module's location, so putting the
checkout first on PYTHONPATH makes the generator operate on the scratch tree.
i18n.py and builder.py add it; the one remaining coupling, a relative_to over
PROJECT_ROOT in a log line, is gone.

CI extracted the "### Production" block from the committed README with awk.
Stripping the section made guide_deployable() return "" for every role, which
selects no deploy row and turns nothing red: a fail-open regression. It now
asks _is_role_invokable, which matches the old condition exactly (178 roles
either way, both difference sets empty), and cli/build/docs/readme/production.py
renders the block for the two guide scripts. All 178 renders are byte-identical
to what HEAD served, and both scripts' extraction pipelines produce identical
output for a web app, a service and a desktop role.

test_readme.py inverts: the three sections are now a hard failure in a
committed README. readme_md.md documents what each is derived from.

Removed: the docs, cosmos, readme-generate, readme-index and readme-check
targets, the five aliases pointing at them, and docs from make quality.

Verified by running generate_commands() in series against a copy of the
checkout: every command exits 0, no README is left without Cosmos or Credits,
and exactly the 178 invokable roles get a Quick Setup. The ansible_roles step
needs pandoc, which only the docs image carries, so that one link of the chain
is unexercised here; it is unchanged by this commit.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-26 01:09:22 +02:00
..
…
…

Python Development Utilities

Description

This Ansible role sets up a Python development environment on Arch Linux. It includes Python itself, the pip package manager, and builds on the general developer persona to support scripting, application development, data science, and more.

Learn more at the Python Official Site, the Arch Wiki - Python, and Wikipedia – Python.

Overview

This role provides the essential tooling for Python developers, enabling immediate use of python and pip from the command line. It supports both general-purpose scripting and advanced software engineering workflows.

Purpose

To simplify and standardize the provisioning of Python-ready environments for developers, students, data scientists, and automation engineers.

Features

  • Installs Python and Pip: Ensures the interpreter and package manager are available.
  • Prefers Python 3.11+: Installs Python 3.11+ where available and makes it the default via /usr/local/bin/python3 and /usr/local/bin/pip3.
  • Persona Integration: Extends dev-core with Python-specific tools.
  • Foundation for Further Stacks: Ideal starting point for Flask, Django, scientific computing, and automation.

Supported distro families in the installer script:

  • Arch Linux
  • Debian
  • Ubuntu
  • Fedora
  • CentOS / RHEL

Customization

Easily extend this role with:

  • Python virtualenv tools (python-virtualenv, pyenv)
  • Popular libraries (numpy, requests, flask)
  • Framework-specific roles (e.g., dev-python-django)