Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
06355da
Python3 Only Updates
gmr Jul 30, 2024
4ebe9f9
Bump versions
gmr Jul 30, 2024
a78c21c
Add type annotations
gmr Jul 30, 2024
9f090f3
More Python3 Type Annotations and Cleanup
gmr Jul 30, 2024
ccadd76
More Python3 / Type Annotation Updates
gmr Jul 30, 2024
6e62510
Add type annotations and update to pamqp 3.0
gmr Jul 30, 2024
76e1aab
Add type annotations
gmr Jul 30, 2024
a62a66b
Type Annotations, Python3 Improvements, pamqp 3 support
gmr Jul 30, 2024
6ed64ec
Python3 Only, Add Type Annotations
gmr Jul 30, 2024
528dcea
yapf Reformatting
gmr Jul 30, 2024
a569760
yapf reformatting
gmr Jul 30, 2024
ddcd6e5
Add Type Annotations, Drop Python2 Compatibility
gmr Jul 30, 2024
e82bd26
Drop Python3, Add Type Annotations, Refactor a bit
gmr Jul 30, 2024
e252130
Remove Python2, Add Type Annotations, Update to pamqp 3
gmr Jul 30, 2024
24aa7d3
pamqp 3, add type annotations
gmr Jul 30, 2024
50bb615
Abstract exchange types out for type annotations
gmr Jul 30, 2024
5e0ec08
Use the ExchangeTypes annotation
gmr Jul 30, 2024
6e00e18
Break out URL parsing
gmr Dec 30, 2024
52463ae
Clean up base project things
gmr Dec 30, 2024
0d0ba50
Ignore .coverage
gmr Dec 30, 2024
555201c
Remove .pylintrc
gmr Dec 30, 2024
c9269e8
Refactor the Events class and its tests
gmr Dec 30, 2024
9a85d56
"Remove obsolete test environment setup from __init__.py"
gmr Dec 30, 2024
a5030d0
Add asynchronous IO implementation and test cases
gmr Jan 6, 2025
b3dbafb
Refactor IO socket handling for enhanced connection management
gmr Jan 7, 2025
68e2bd7
Handle socket errors, improve SSL context, and add tests
gmr Jan 7, 2025
4bcb824
Add support for SSL hostname validation in URL parser
gmr Jan 7, 2025
ada3045
Add support for capath in URL parser
gmr Jan 7, 2025
575c8da
Refactor error handling and add new test cases
gmr Jan 7, 2025
2efc8e8
Add missing certs for IO SSL tests
gmr Jan 8, 2025
1faa66d
Add EnvironmentVariableMixin for test environment handling
gmr Jan 8, 2025
0911834
Add EnvironmentVariableMixin for test environment handling
gmr Jan 8, 2025
8b8ffa0
Refactor exception strings and add ReceivedOnClosedChannelException
gmr Jan 8, 2025
61ac046
Revise URL parsing and improve I/O logic in rabbitpy
gmr Jan 10, 2025
756c7e6
Simplify and standardize pyproject.toml formatting
gmr Jan 10, 2025
f235668
Updated client cert
gmr Jan 10, 2025
cd478a2
Modernize project tooling to current standards
gmr Apr 1, 2026
0ebc1cc
Apply ruff formatting to docs/conf.py
gmr Apr 1, 2026
79f2f8d
Replace Sphinx docs with mkdocs + GitHub Pages
gmr Apr 1, 2026
7e18798
Rename bootstrap
gmr Apr 1, 2026
5fdac79
Fix connection lifecycle and IO thread shutdown (#145)
gmr Apr 1, 2026
ebd0cb6
Switch integration test env to dotenv
gmr Apr 1, 2026
43fa3ee
Remove bootstrap.sh (renamed to bootstrap)
gmr Apr 1, 2026
67e46da
Fix SSLMockServerTestCase race on Python 3.12
gmr Apr 1, 2026
dbeafc4
Make IO shutdown synchronous and stop-during-startup safe
gmr Apr 1, 2026
265a42f
Merge pull request #147 from gmr/fix/connection-lifecycle
gmr Apr 1, 2026
61a5325
Update pamqp dependency to >=4.0,<5.0
gmr Apr 1, 2026
421a539
Merge pull request #148 from gmr/update/pamqp-4
gmr Apr 1, 2026
6a11518
Add py.typed marker, mypy/basedpyright, and full type annotations
gmr Apr 1, 2026
4ffe972
Merge pull request #149 from gmr/feature/typed
gmr Apr 1, 2026
1d9f30f
Restore library API deleted in modernization commit (cd478a2)
gmr Apr 1, 2026
19272e0
Fix ruff formatting, type annotations, and correctness issues flagged…
gmr Apr 1, 2026
141a382
Fix NameError on Python 3.11-3.13 in base.py
gmr Apr 1, 2026
0f8c000
Fix circular import causing AttributeError on Python 3.11-3.13
gmr Apr 1, 2026
7f8b61e
Fix circular import in channel.py on Python < 3.14
gmr Apr 1, 2026
d514694
Fix race condition in IO tests causing Python 3.12-only failures
gmr Apr 1, 2026
d5a6c19
Address Python 3.11-specific ERROR in test_write_ready_socket_oserror
gmr Apr 1, 2026
245f200
Address 10 CodeRabbit review issues across 5 files
gmr Apr 1, 2026
84d53f8
Fix GH issues #133, #124, #121, #73 and complete connection lifecycle
gmr Apr 1, 2026
fcda482
Fix ruff formatting and mypy type errors in io.py, connection.py, cha…
gmr Apr 1, 2026
3404ca7
Fix circular import in channel.py by moving connection import under T…
gmr Apr 1, 2026
0dc0e53
Fix TypeError in Connection.Close due to None class_id/method_id
gmr Apr 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 22 additions & 44 deletions .github/workflows/deploy.yaml
Original file line number Diff line number Diff line change
@@ -1,53 +1,31 @@
name: Deployment
name: Publish to PyPI

on:
push:
branches-ignore: ["*"]
tags: ["*"]
release:
types: [published]

jobs:
build:
name: Build distribution
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.x"

- name: Install pypa/build
run: python3 -m pip install build --user

- name: Build a binary wheel and a source tarball
run: python3 -m build

- name: Store the distribution packages
uses: actions/upload-artifact@v3
with:
name: python-package-distributions
path: dist/

- name: Publish distribution to PyPI
uses: pypa/gh-action-pypi-publish@release/v1

publish-to-pypi:
name: Publish Python distribution to PyPI
if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes
needs:
- build
runs-on: ubuntu-latest
environment:
name: pypi
url: https://pypi.org/p/rabbitpy
url: https://pypi.org/project/rabbitpy/

permissions:
contents: read
id-token: write

steps:
- name: Download all the dists
uses: actions/download-artifact@v4.1.7
with:
name: python-package-distributions
path: dist/

- name: Publish distribution to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
- uses: actions/checkout@v5

- name: Install uv
uses: astral-sh/setup-uv@v6

- name: Build and check package
run: |
uv build
uvx twine check dist/*

- name: Publish package distributions to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
27 changes: 27 additions & 0 deletions .github/workflows/docs.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Docs
on:
push:
branches: [main]
paths:
- 'docs/**'
- 'mkdocs.yml'
- 'rabbitpy/**'

jobs:
deploy:
runs-on: ubuntu-latest
permissions:
contents: write

steps:
- name: Checkout repository
uses: actions/checkout@v5

- name: Install uv
uses: astral-sh/setup-uv@v6

- name: Install dependencies
run: uv sync --group docs

- name: Deploy docs
run: uv run mkdocs gh-deploy --force
46 changes: 0 additions & 46 deletions .github/workflows/test.yaml

This file was deleted.

66 changes: 66 additions & 0 deletions .github/workflows/testing.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
name: Testing
on:
pull_request:
push:
branches: [main]
paths-ignore:
- 'docs/**'
- '*.md'
- '*.rst'
tags-ignore: ["*"]

jobs:
test:
runs-on: ubuntu-latest
timeout-minutes: 10
strategy:
fail-fast: false
matrix:
python: ["3.11", "3.12", "3.13", "3.14"]

services:
rabbitmq:
image: rabbitmq:4-management
ports:
- 5672:5672
- 15672:15672
options: >-
--health-cmd "rabbitmq-diagnostics -q check_running"
--health-interval 10s
--health-timeout 5s
--health-retries 10

steps:
- name: Checkout repository
uses: actions/checkout@v5

- name: Install uv
uses: astral-sh/setup-uv@v6
with:
python-version: ${{ matrix.python }}

- name: Install dependencies
run: uv sync --all-groups

- name: Write .env for integration tests
run: |
echo "RABBITMQ_URL=amqp://guest:guest@localhost:5672/%2f" >> .env
echo "MANAGEMENT_URL=http://localhost:15672/%2f" >> .env

- name: Lint Check
run: uv run pre-commit run --all-files

- name: Run tests
run: uv run coverage run

- name: Coverage report
run: uv run coverage report

- name: Coverage XML
run: uv run coverage xml

- name: Upload Coverage
uses: codecov/codecov-action@v5
with:
files: ./build/coverage.xml
flags: unittests
53 changes: 3 additions & 50 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,56 +1,9 @@
# Byte-compiled / optimized / DLL files
.coverage
__pycache__/
*.py[cod]

# C extensions
*.so

# Distribution / packaging
.Python
env/
bin/
build/
develop-eggs/
dist/
eggs/
lib/
lib64/
parts/
sdist/
var/
*.egg-info/
.installed.cfg
*.egg

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.cache
nosetests.xml
coverage.xml

# Translations
*.mo

# Mr Developer
.mr.developer.cfg
.project
.pydevproject

# Rope
.ropeproject

# Django stuff:
*.log
*.pot

# Sphinx documentation
docs/_build/

.idea
.vagrant
tests/data/ca.key
.env
36 changes: 36 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v6.0.0
hooks:
- id: check-ast
- id: check-toml
- id: check-yaml
args: [--allow-multiple-documents]
- id: debug-statements
- id: end-of-file-fixer
- id: mixed-line-ending
- id: trailing-whitespace

- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.14.5
hooks:
- id: ruff-format
- id: ruff
args: [--fix]

- repo: local
hooks:
- id: mypy
name: mypy
entry: uv run --frozen mypy
language: system
types: [python]
args: [rabbitpy/, tests/]
pass_filenames: false

- id: basedpyright
name: basedpyright
entry: uv run --frozen basedpyright
language: system
types: [python]
pass_filenames: false
Loading
Loading