Skip to content

Feature: Windows Python Default Setup Script #2

@NickLinney

Description

@NickLinney

Feature: Windows Python Default Setup Script

Branch: feature/python-windows-default-setup
Base branch: release/0.4.0
Target release: v0.4.0 (MINOR feature addition)


Summary

Add a Windows-specific Python bootstrap script to the env repository that establishes a standards-aligned, repeatable Python development baseline on Windows systems.

This feature introduces a PowerShell script located at:

env/Python/Windows/python_default_setup.ps1

The script mirrors the intent and structure of the Debian 13 (“trixie”) setup while respecting Windows platform realities. It explicitly aligns with AD-2026-02-09-06 — Python Development Environment Standards, emphasizing:

  • official Python releases
  • pip + venv
  • explicit interpreter selection
  • minimal, auditable tooling
  • no mandatory workflow abstractions

Motivation

  • Windows is a primary developer workstation platform.
  • Existing Windows setups are often inconsistent, manual, or tool-opinionated.
  • The project already enforces conservative, standards-based Python workflows in CI.
  • Debian now has a clean, documented Python bootstrap path.
  • Windows parity is required before broader adoption and contributor onboarding.

This feature ensures Windows developers can reach the same canonical baseline as Linux and macOS without introducing divergent tooling or governance risk.


Scope (Minimal by Design)

This feature will add only what is necessary to:

  • install and manage multiple official Python versions
  • define a clear default interpreter
  • ensure pip and venv work predictably
  • document verification and expected behavior

Out of scope by design:

  • Poetry
  • uv
  • project generators
  • lockfile enforcement
  • workflow orchestration tools

Local developer preferences remain optional and non-normative.


Deliverables

1. Directory Structure

env/
└─ Python/
   └─ Windows/
      ├─ README.md
      └─ python_default_setup.ps1

Structure follows established repo conventions:

  • OS-scoped
  • version-agnostic (Windows does not require distro codename scoping)
  • future-proofed for extension

2. python_default_setup.ps1

Primary Windows bootstrap script.

Responsibilities:

  • Detect or install official Python (via python.org installer or Windows Store-safe method)
  • Ensure pip and venv availability
  • Optionally install multiple Python versions (where supported)
  • Establish a documented default Python interpreter
  • Configure PATH idempotently at the user level
  • Provide clear verification output

Configurable values at top of script:

  • Python versions to install
  • Default Python version
  • Whether to modify user PATH
  • Optional pipx installation (non-authoritative)

Non-Goals:

  • No Poetry
  • No enforced package manager alternatives
  • No project scaffolding
  • No deviation from canonical CI expectations

3. README.md (Windows)

Concise operator documentation covering:

  • Purpose and scope

  • Quick start (one-command PowerShell invocation)

  • What “default Python” means on Windows

  • How to:

    • verify installed versions
    • select a specific interpreter
    • create a venv explicitly
  • Known Windows limitations and assumptions

Style:

  • practical
  • minimal
  • human-oriented
  • consistent with Debian/macOS READMEs

Behavioral Acceptance Criteria

On a fresh Windows system:

  • Running python_default_setup.ps1 completes without manual intervention
  • One or more official Python versions are installed
  • A default Python version is clearly defined
  • A user can successfully run:
python -m venv venv
.\venv\Scripts\Activate.ps1
  • No Poetry or project tooling is required or configured
  • CI-compatible workflows function without translation

Alignment With ADR

This feature explicitly implements AD-2026-02-09-06 by:

  • enforcing a conservative, standards-based baseline
  • avoiding tooling lock-in
  • preserving developer autonomy without fragmenting shared workflows
  • keeping CI and compliance paths intentionally boring

Versioning Impact

  • MINOR version bump
  • Adds new OS support without breaking existing paths
  • No changes to Debian or macOS behavior

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions