Tooling integration
* add .markdownlint-cli2.jsonc, .ansible-lint, .ansible-lint-ignore
configs (permissive day-1: cosmetic rules disabled, semantic ones on)
* extend scripts/install/lint.sh with generic install_pip_pkg helper +
ensure_ansible_lint / ensure_galaxy_importer / ensure_markdownlint_cli2
ensure_* functions (pip / npm with sudo / --user / --break-system-packages
fallbacks). install_ansible_tools now also pulls ansible-lint and
galaxy-importer; new `markdown` install group.
* extend scripts/lint/ansible.sh to run ansible-lint after the existing
syntax-check.
* add scripts/lint/markdown.sh and scripts/lint/galaxy.sh runners. The
galaxy runner parallelizes via xargs (-P=$(nproc)), prints OK/FAIL per
role, and treats `bare-name dependency` errors as success since our
roles/ tree is not a Galaxy collection layout. All other Galaxy schema
errors still fail.
* Makefile: new lint-markdown and lint-galaxy targets, both wired into
`make lint`.
* CI: new workflows lint-markdown.yml and lint-galaxy.yml; lint-ansible.yml
now installs ansible-core + ansible-lint; ci-orchestrator wires both
new lint workflows into lint-gate.
Galaxy schema fixes
* shorten the canonical `galaxy_info.company` block from three lines to
two ("Kevin Veen-Birkenbach\nhttps://www.veen.world", 45 chars) so it
stays under Galaxy's hard 50-char limit. Updated everywhere: 229 role
meta/main.yml plus _CANONICAL_COMPANY in
tests/lint/repository/test_role_meta_main_galaxy_schema.py.
* shorten 19 over-long role descriptions to <=255 chars.
* add stub READMEs for sys-svc-compose-ca and sys-utils-service-loader.
Markdown baseline fixes
* markdownlint-cli2 --fix run repo-wide (formatting normalization
across CHANGELOG, role READMEs, docs).
* manual MD041 fixes: prepend H1 in 15 files (CHANGELOG, LICENSE,
TODO.md helpers, role README templates, etc.).
* MD025 / MD003 / MD001 / MD032 manual fixes for heading-style and
list-spacing edge cases.
* role README content polish: "## Single Point of Truth (SPOT)" headings
renamed to "## User data resolution" (D3 self-label rule).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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/python3and/usr/local/bin/pip3. - Persona Integration: Extends
dev-corewith 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)
Credits
Developed and maintained by Kevin Veen-Birkenbach. Learn more at veen.world. Part of the Infinito.Nexus Project. Licensed under the Infinito.Nexus Community License (Non-Commercial).