Skip to content

Commit 9d1cb8a

Browse files
authored
Modernization phase 1.4 (#210)
* add feature branch audit file * build: migrate from setuptools to hatchling (#209) - Replace setuptools build backend with hatchling - Remove [tool.setuptools.*] configuration - Add [tool.hatch.build.*] configuration - sdist now includes all git-tracked files by default (fixes #208) This fixes the issue where tests/conftest.py and tests/util.py were missing from the source distribution, which prevented downstream packagers (Gentoo) from running tests. Note: This work was completed with AI assistance (Claude Code). * Bump version to 25.12.2 Version 25.12.1 was already published to PyPI with setuptools-based setup.py. This release (25.12.2) is the first using the hatchling build backend with pyproject.toml-only configuration. Note: This work was completed with AI assistance (Claude Code). * Add tag trigger to main.yml for release workflow chain Without this, pushing a version tag (e.g., v25.12.2) would not trigger the main workflow, which means the release workflow (triggered via workflow_run) would never run for tagged releases. Flow: 1. Merge PR to master → main.yml runs → release.yml → development release 2. Push version tag → main.yml runs on tag → release.yml → stable release to PyPI Note: This work was completed with AI assistance (Claude Code). * Add Autobahn logo to documentation with scour optimization - Add autobahn_logo_blue.svg to docs/_graphics/ (source) - Add _build-images just recipe to optimize SVGs using scour - Update docs recipe to call _build-images before sphinx-build - Add html_logo to conf.py pointing to optimized logo - Add docs/_static/img/ to .gitignore (generated files) The logo is optimized from 2671 bytes to ~573 bytes (21.5% of original) using scour's SVG optimization options. Note: This work was completed with AI assistance (Claude Code). * docs: standardize Sphinx configuration across WAMP projects - Update conf.py with additional extensions (sphinx.ext.ifconfig, sphinx.ext.doctest) - Standardize project metadata and copyright format - Add docs-spelling just recipe for spell checking Note: This work was completed with AI assistance (Claude Code). * Add docs/ai/index.rst for AI policy documentation - Create docs/ai/index.rst to collect AI-related docs in toctree - Update docs/index.rst to link to ai/index instead of individual files This organizes AI policy documentation under a dedicated section. Note: This work was completed with AI assistance (Claude Code). * Add OVERVIEW.md from wamp-ai submodule for project docs - Update .ai submodule to include OVERVIEW.md with wamp-xbr section - Add OVERVIEW.md symlink to project root (via just setup-repo) - Add docs/OVERVIEW.md symlink for Sphinx documentation - Add OVERVIEW.md to docs toctree OVERVIEW.md provides context about the WAMP project ecosystem. Note: This work was completed with AI assistance (Claude Code). * Modernize Sphinx docs: Furo theme, branding, favicon - Add sync-images recipe to copy logo/favicon from autobahn-python - Update conf.py with Autobahn Medium Blue (#027eae) brand colors - Add html_favicon setting for browser tab icon - Add pygments_dark_style for dark mode code highlighting - Update docs recipe to depend on sync-images Part of docs consistency effort across WAMP Python projects. Note: This work was completed with AI assistance (Claude Code). * add after sync-images * Standardize docs: .gitignore and AutoAPI configuration - Add docs/autoapi/ and .build/ to .gitignore - Remove manual api entry from index.rst (autoapi_add_toctree_entry=True) Note: This work was completed with AI assistance (Claude Code). * Standardize docs: autoapi options, page title - Add private-members and special-members to autoapi_options - Update page title to "Twisted-asyncio Networking Helper Library" Note: This work was completed with AI assistance (Claude Code). * Add AI_ACKNOWLEDGEMENT.md symlink to docs/ai - Create symlink to .ai/AI_ACKNOWLEDGEMENT.md - Reference in docs/ai/index.rst toctree Note: This work was completed with AI assistance (Claude Code). * Standardize docs ToC structure per STD-TOC.md Add standard documentation sections: - installation.rst - getting-started.rst - changelog.rst - contributing.rst Update index.rst with standardized ToC order: Overview, Installation, Getting Started, Programming Guide, Releases, Changelog, Contributing, WAMP Projects, AI Policy Note: This work was completed with AI assistance (Claude Code). * Standardize LICENSE with SPDX header and add docs copyright footer - Add YAML-formatted SPDX license metadata header to LICENSE - Add copyright/trademark footer to docs/index.rst - MIT license year based on first git commit (2015) Note: This work was completed with AI assistance (Claude Code). * Add CONTRIBUTING.md and update docs to include via MyST - Add root-level CONTRIBUTING.md with contribution guidelines - Update docs/contributing.rst to include CONTRIBUTING.md via MyST parser - Single source of truth for contribution documentation Note: This work was completed with AI assistance (Claude Code). * docs: Rename Overview to Introduction, Releases to Release Notes Standardize documentation page titles across the WAMP project group: - Rename 'Overview' page to 'Introduction' - Rename 'Package Releases' page to 'Release Notes' Note: This work was completed with AI assistance (Claude Code). * docs: Restructure release documentation with workflow recipes - Migrate changelog content from releases.rst to changelog.rst - Transform releases.rst into release artifact index with links to: - GitHub releases - PyPI packages - RTD documentation - Add missing changelog entries for 25.9.1, 25.9.2, 25.12.1 (reconstructed from git history) - Add Release Workflow documentation for maintainers - Add justfile recipes: - prepare-changelog: Generate changelog entry from git history - draft-release: Check/generate release entry templates - prepare-release: Validate release readiness (tests, docs, versions) Note: This work was completed with AI assistance (Claude Code). * docs: Add explicit anchor targets for stable HTML anchors Add RST anchor targets (e.g., `.. _v25.12.1:`) before each version section heading. This ensures stable, semantic HTML anchor IDs (e.g., #v25.12.1) instead of auto-generated #id1, #id2, etc. Anchor naming convention: - releases.rst: `.. _v<version>:` (e.g., `.. _v25.12.1:`) - changelog.rst: `.. _changelog-<version>:` (e.g., `.. _changelog-25.12.1:`) Note: This work was completed with AI assistance (Claude Code). * docs: Use sphinx_auto_section_anchors for stable HTML anchors - Update .cicd submodule to include sphinx_auto_section_anchors extension - Add extension to docs/conf.py with path to .cicd/scripts - Remove manual anchor targets from releases.rst and changelog.rst (now auto-generated by the extension) - Keep explicit anchors for non-version sections (release-workflow, etc.) The extension automatically generates slug-based anchors like #25-12-1 for version headings, eliminating the need for manual `.. _v25.12.1:` targets in RST files. Note: This work was completed with AI assistance (Claude Code). * docs: Enable auto_section_anchor_force for stable HTML anchors This ensures the sphinx_auto_section_anchors extension overwrites auto-generated ids (id1, id2, etc.) with slug-based anchors like #25-12-1 instead of #id3. Note: This work was completed with AI assistance (Claude Code). * docs: Merge api.rst content into programming-guide.rst The api.rst file was not linked in the toctree. Its content (API reference documentation) has been merged into the beginning of programming-guide.rst, providing a single consolidated guide. Note: This work was completed with AI assistance (Claude Code). * docs: Fix releases.rst formatting and add git hooks steps - Add blank lines before subheadings (fixes Sphinx rendering) - Add Step 4: Disable Git Hooks (if needed) - Add Step 6: Enable Git Hooks (if previously disabled) - Renumber remaining steps accordingly Note: This work was completed with AI assistance (Claude Code). * Standardize project badges - Add 6 core badges: PyPI, Python, CI, Docs (RTD), License, Downloads - Apply consistent badge format to both README.md and docs/index.rst - Use RTD native badge for documentation status Note: This work was completed with AI assistance (Claude Code). * Update .cicd submodule: fix linting error Pull in wamp-cicd commit 08c9305 which removes unused variable in sphinx_auto_section_anchors.py (F841 linting error). Note: This work was completed with AI assistance (Claude Code). * Fix RST badge rendering: disable override_image_directive Set override_image_directive=False in sphinxcontrib-images config to preserve standard RST image directive :target: option support. This fixes badge substitutions in docs/index.rst that require the :target: option for clickable badge links. Note: This work was completed with AI assistance (Claude Code). * Add conf.py comment and require Sphinx>=8.2.3 - Add explanatory comment for override_image_directive=False setting explaining it's required for RST badge :target: option support - Update sphinx>=8.2.3 in docs optional dependency (highest version compatible with furo's sphinx<9.0 constraint) Note: This work was completed with AI assistance (Claude Code).
1 parent e7d0c29 commit 9d1cb8a

27 files changed

Lines changed: 1381 additions & 578 deletions

.ai

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
- [ ] I did **not** use any AI-assistance tools to help create this pull request.
2+
- [x] I **did** use AI-assistance tools to *help* create this pull request.
3+
- [x] I have read, understood and followed the project's AI_POLICY.md when creating code, documentation etc. for this pull request.
4+
5+
Submitted by: @oberstet
6+
Date: 2025-12-05
7+
Related issue(s): #209
8+
Branch: oberstet:modernization-phase-1.4

.cicd

.github/workflows/main.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ name: main
33
on:
44
push:
55
branches: ["**"]
6+
tags: ["v*"] # Trigger on version tags for release workflow chain
67
pull_request:
78
branches: [master]
89
workflow_dispatch:

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,11 @@ coverage.xml
5151
# Sphinx documentation
5252
docs/_build/
5353
docs/_spelling/
54+
docs/_static/img/
55+
docs/autoapi/
56+
57+
# Build artifacts
58+
.build/
5459

5560
# PyBuilder
5661
target/

CONTRIBUTING.md

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# Contributing
2+
3+
We welcome contributions to **txaio**! This guide explains how to get involved.
4+
5+
## Getting in Touch
6+
7+
- **GitHub Issues**: Report bugs or request features at
8+
https://github.com/crossbario/txaio/issues
9+
- **GitHub Discussions**: Ask questions and discuss at
10+
https://github.com/crossbario/txaio/discussions
11+
- **Mailing List**: Join the Autobahn mailing list at
12+
https://groups.google.com/forum/#!forum/autobahnws
13+
14+
## Reporting Issues
15+
16+
When reporting issues, please include:
17+
18+
1. Python version (`python --version`)
19+
2. txaio version (`python -c "import txaio; print(txaio.__version__)"`)
20+
3. Operating system and version
21+
4. Framework being used (Twisted or asyncio)
22+
5. Minimal code example reproducing the issue
23+
6. Full traceback if applicable
24+
25+
## Contributing Code
26+
27+
1. **Fork the repository** on GitHub
28+
2. **Create a feature branch** from `master`
29+
3. **Make your changes** following the code style
30+
4. **Add tests** for new functionality
31+
5. **Run the test suite** to ensure nothing is broken
32+
6. **Submit a pull request** referencing any related issues
33+
34+
## Development Setup
35+
36+
```bash
37+
git clone https://github.com/crossbario/txaio.git
38+
cd txaio
39+
pip install -e .[dev]
40+
```
41+
42+
## Running Tests
43+
44+
```bash
45+
# Run all tests
46+
tox
47+
48+
# Run tests for specific Python version
49+
tox -e py312
50+
```
51+
52+
## Code Style
53+
54+
- Follow PEP 8
55+
- Use meaningful variable and function names
56+
- Add docstrings for public APIs
57+
- Keep lines under 100 characters
58+
59+
## License
60+
61+
By contributing to txaio, you agree that your contributions will be
62+
licensed under the MIT License.

LICENSE

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,34 @@
1+
---
2+
title: MIT License
3+
spdx-id: MIT
4+
source: https://opensource.org/license/mit/
5+
6+
description: |
7+
The MIT License is a short, permissive free software license.
8+
It allows reuse within proprietary software provided all copies retain
9+
the license terms. This project is distributed under the MIT License
10+
by typedef int GmbH and Contributors.
11+
12+
permissions:
13+
- commercial-use
14+
- modifications
15+
- distribution
16+
- private-use
17+
- sublicense
18+
19+
conditions:
20+
- include-copyright
21+
- include-license
22+
23+
limitations:
24+
- liability
25+
- warranty
26+
27+
held-by: typedef int GmbH and Contributors
28+
project: txaio
29+
year: 2015
30+
---
31+
132
The MIT License (MIT)
233

334
Copyright (c) typedef int GmbH and Contributors

OVERVIEW.md

Lines changed: 0 additions & 137 deletions
This file was deleted.

OVERVIEW.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
.ai/OVERVIEW.md

README.md

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
# txaio
22

3-
[![Version](https://img.shields.io/pypi/v/txaio.svg)](https://pypi.python.org/pypi/txaio)
4-
[![Test](https://github.com/crossbario/txaio/workflows/main/badge.svg)](https://github.com/crossbario/txaio/actions?query=workflow%3Amain)
5-
[![Docs](https://img.shields.io/badge/docs-latest-brightgreen.svg?style=flat)](https://txaio.readthedocs.io/en/latest/)
6-
<!--
3+
[![PyPI](https://img.shields.io/pypi/v/txaio.svg)](https://pypi.python.org/pypi/txaio)
4+
[![Python](https://img.shields.io/pypi/pyversions/txaio.svg)](https://pypi.python.org/pypi/txaio)
5+
[![CI](https://github.com/crossbario/txaio/workflows/main/badge.svg)](https://github.com/crossbario/txaio/actions?query=workflow%3Amain)
76
[![Docs](https://readthedocs.org/projects/txaio/badge/?version=latest)](https://txaio.readthedocs.io/en/latest/)
8-
[![Deploy Workflow](https://github.com/crossbario/txaio/workflows/deploy/badge.svg)](https://github.com/crossbario/txaio/actions?query=workflow%3Adeploy)
9-
[![Coverage](https://codecov.io/github/crossbario/txaio/coverage.svg?branch=master)](https://codecov.io/github/crossbario/txaio)
10-
-->
7+
[![License](https://img.shields.io/pypi/l/txaio.svg)](https://github.com/crossbario/txaio/blob/master/LICENSE)
8+
[![Downloads](https://img.shields.io/pypi/dm/txaio.svg)](https://pypi.python.org/pypi/txaio)
119

1210
------------------------------------------------------------------------
1311

0 commit comments

Comments
 (0)