Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
94 changes: 94 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
name: CI

on:
pull_request:
paths:
- "src/**"
- "tests/**"
- "Cargo.toml"
- "Cargo.lock"
- "pyproject.toml"
- "uv.lock"
- "rust-toolchain*"
- ".cargo/**"
- ".github/workflows/ci.yml"
push:
branches: [master]
paths:
- "src/**"
- "tests/**"
- "Cargo.toml"
- "Cargo.lock"
- "pyproject.toml"
- "uv.lock"
- "rust-toolchain*"
- ".cargo/**"
- ".github/workflows/ci.yml"
workflow_dispatch:

permissions:
contents: read

concurrency:
group: ci-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

env:
CARGO_TERM_COLOR: always

jobs:
quality:
runs-on: ubuntu-24.04
timeout-minutes: 20
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v7
with:
python-version: "3.14"
- name: Install native build dependencies
run: sudo apt-get update && sudo apt-get install -y cmake clang libclang-dev
- name: Install Rust tooling
run: rustup toolchain install stable --profile minimal --component rustfmt --component clippy && rustup default stable
- uses: actions/cache@v5
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: quality-${{ runner.os }}-${{ hashFiles('Cargo.lock', 'Cargo.toml') }}
- run: cargo fmt --check
- run: cargo check --locked --all-targets
- run: cargo clippy --locked --all-targets -- -D warnings

tests:
runs-on: ubuntu-24.04
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
python: ["3.10", "3.15"]
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v7
with:
python-version: ${{ matrix.python }}
allow-prereleases: ${{ matrix.python == '3.15' }}
- name: Install native build dependencies
run: sudo apt-get update && sudo apt-get install -y cmake clang libclang-dev
- name: Install Rust
run: rustup toolchain install stable --profile minimal && rustup default stable
- uses: actions/cache@v5
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: test-${{ runner.os }}-${{ matrix.python }}-${{ hashFiles('Cargo.lock', 'Cargo.toml') }}
- run: cargo test --locked
- name: Build and install Python extension
run: |
python -m pip install "maturin>=1.7,<2"
maturin build --locked --out dist
python -m pip install dist/*.whl
- name: Test public Python API
run: python -m unittest discover -s tests -v
26 changes: 26 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Changelog

All notable changes are documented here using [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
Versions follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
Unreleased changes are assigned a version and date when a release is prepared.
For the 0.x series, breaking Python API or supported-platform changes increment
MINOR; backward-compatible fixes increment PATCH. No release is implied by an
Unreleased entry.

## [Unreleased]

### Added
- CI for relevant pull requests, pushes to `master`, and manual runs, with path filters and cancellation of superseded runs.
- Rust checks, regression tests, pedantic Clippy, and Python API tests on Python 3.10 and 3.15.

### Changed
- Update the Rust `rsloop` dependency to 0.1.56 and `wreq` to the stable 0.16.1 series.
- Update PyO3 to 0.29.3 for compatibility with `rsloop`.
- Require Python 3.10 or newer and Rust 1.98 or newer for the updated dependencies.
- Adapt proxy parsing, idle connection configuration, and body streaming to the current `wreq` API.

### Fixed
- Reject unsupported proxy schemes before sending requests, preventing silent direct-request fallback with the current `wreq`; preserve bare `host:port` proxy inputs.
- Drain response bodies without accumulating them when `return_response=false`, preserving body-read failures and full body return when enabled (PR #1).

[Unreleased]: https://github.com/RustedBytes/proxychecker/compare/a82dce87b87247cf33dd6ec676b485d4f157c7c1...HEAD
Loading