Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
74f16d6
Update Python versions
bskinn Nov 22, 2025
3d8fe3a
Spruce up ci_test -> core_tests
bskinn Nov 27, 2025
9aa9474
Add sdist_test workflow
bskinn Nov 27, 2025
9ab3ec0
Deactivate Azure Pipelines
bskinn Nov 27, 2025
6d2e9ae
Add initial testdir_coverage workflow
bskinn Nov 27, 2025
6b790f6
Rename workflows to indicate run context
bskinn Nov 27, 2025
3ca7162
Add/fix [skip ci] handling
bskinn Nov 27, 2025
a39e97f
Add cross-platform tests for PRs to stable
bskinn Nov 27, 2025
0c8dfe9
Switch primary testing Python to 3.13
bskinn Nov 27, 2025
263b407
Actually *ahem* change the Python version
bskinn Nov 27, 2025
cc750fb
Delete Azure Pipelines YAML
bskinn Nov 27, 2025
0c41294
Update some project meta-content
bskinn Nov 27, 2025
3550178
Add typing
bskinn Nov 27, 2025
b13ccd0
Add black and mypy tox envs
bskinn Nov 27, 2025
9b1692e
Update/fix black config in pyproject.toml
bskinn Nov 27, 2025
4fdf31a
Modernize pyproject.toml
bskinn Nov 27, 2025
a0bc4d8
Add isort and check tox envs
bskinn Nov 28, 2025
662f53a
Apply isort
bskinn Nov 28, 2025
be3447b
Remove codecov from CI requirements
bskinn Nov 28, 2025
2f6a928
Remove build and flake8 req'ts from dev req'ts
bskinn Nov 28, 2025
c145f12
Add build env to tox
bskinn Nov 28, 2025
90ad183
Revert the unneeded intermediate typed variable in Plugin.run()
bskinn Nov 28, 2025
8fde84c
Set persist-credentials: false for all workflows
bskinn Nov 28, 2025
268da15
Expand SemVer discussion in CHANGELOG.md
bskinn Nov 28, 2025
56c04cb
Add type cast to setup.py
bskinn Nov 28, 2025
38d4a70
Switch CI badge back to `main` branch in README
bskinn Nov 28, 2025
b890733
Bump version to 1.0.0.3
bskinn Nov 28, 2025
cfd8203
Rename to README.md
bskinn Nov 28, 2025
a39a7d4
Convert README contents to Markdown
bskinn Nov 28, 2025
c047726
Update copyright years to 2025
bskinn Nov 28, 2025
ca343e6
Update keywords & add 'typed' classifier in pyproject.toml
bskinn Nov 28, 2025
8d88aaf
Update PePy badge link
bskinn Nov 28, 2025
6883e7a
Update CHANGELOG
bskinn Nov 28, 2025
dd1a0e4
Tweak README title
bskinn Nov 28, 2025
f2c94ce
Remove THANK link from pyproject.toml metadata
bskinn Nov 28, 2025
6eb984e
Bump to next dev version
bskinn Nov 28, 2025
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
Original file line number Diff line number Diff line change
@@ -1,21 +1,27 @@
name: ci-tests
name: 'PR: Run core tests'

on: push
on: pull_request

jobs:
all_checks:
name: Run all tests, lints, etc. (Python 3.11)
name: plus lints, etc. on Python 3.13
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, '[skip ci]')"
if: ${{ !contains(toJson(github.event), '[skip ci]') }}

steps:
- name: Check out repo
uses: actions/checkout@v2
uses: actions/checkout@v6
with:
persist-credentials: false

- name: Install Python
uses: actions/setup-python@v2
uses: actions/setup-python@v6
with:
python-version: '3.11'
python-version: '3.13'
cache: 'pip'
cache-dependency-path: |
requirements-ci.txt
requirements-flake8.txt

- name: Update pip & setuptools
run: python -m pip install -U pip setuptools
Expand All @@ -34,26 +40,27 @@ jobs:
- name: Lint code
run: tox -e flake8

- name: Transmit to Codecov
run: codecov


just_tests:
name: Run only the test suite
name: for Python ${{ matrix.python }}
runs-on: ubuntu-latest
strategy:
matrix:
python: ['3.8', '3.9', '3.10', '3.11', '3.12']
if: "!contains(github.event.head_commit.message, '[skip ci]')"
python: ['3.10', '3.11', '3.12', '3.14']
if: '!contains(github.event.head_commit.message, ''[skip ci]'')'

steps:
- name: Check out repo
uses: actions/checkout@v2
uses: actions/checkout@v6
with:
persist-credentials: false

- name: Install Python
uses: actions/setup-python@v2
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python }}
cache: 'pip'
cache-dependency-path: requirements-ci.txt

- name: Update pip & setuptools
run: python -m pip install -U pip setuptools
Expand Down
51 changes: 51 additions & 0 deletions .github/workflows/release_platform_tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: 'RELEASE: Run cross-platform tests'

on:
pull_request:
types:
- opened
- reopened
- synchronize
- ready_for_review
branches:
- stable

jobs:
just_tests:
name: ${{ matrix.os }} python ${{ matrix.py }}
runs-on: ${{ matrix.os }}
concurrency:
group: ${{ github.workflow }}-${{ matrix.os }}-${{ matrix.py }}-${{ github.ref }}
cancel-in-progress: true
if: ${{ !github.event.pull_request.draft && !contains(toJson(github.event), '[skip ci]') }}
strategy:
matrix:
os: ['windows-latest', 'macos-latest']
py: ['3.10', '3.11', '3.12', '3.13']

steps:
- name: Check out repo
uses: actions/checkout@v6
with:
persist-credentials: false

- name: Install Python
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.py }}
cache: 'pip'
cache-dependency-path: requirements-ci.txt

- name: Update pip & setuptools
run: python -m pip install -U pip setuptools

- name: Install & report CI dependencies
run: |
python -m pip install -U --force-reinstall -r requirements-ci.txt
python --version
pip list

- name: Run tests
run: |
pytest --cov
tox -e sdist_install
76 changes: 76 additions & 0 deletions .github/workflows/release_sdist_test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
name: 'RELEASE: Check sdist'

on:
pull_request:
types:
- opened
- reopened
- synchronize
- ready_for_review
branches:
- stable

jobs:
sdist_build_and_check:
name: builds & is testable
runs-on: 'ubuntu-latest'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
if: ${{ !github.event.pull_request.draft && !contains(toJson(github.event), '[skip ci]')}}

steps:
- name: Check out repo
uses: actions/checkout@v6
with:
persist-credentials: false

- name: Install Python
uses: actions/setup-python@v6
with:
python-version: '3.14'
cache: 'pip'
cache-dependency-path: |
requirements-dev.txt
requirements-flake8.txt

- name: Install 'build' package
run: python -m pip install build

- name: Build sdist
run: |
python -m build -s
ls -lah dist

- name: Create sandbox
run: mkdir sandbox

- name: Unpack sdist in sandbox
run: |
cp dist/*.gz sandbox/
cd sandbox
tar xvf *.gz

- name: Create venv
run: |
cd sandbox
python -m venv env

# Only the dir of the unpacked sdist will have a digit in its name
- name: Store sdist unpack path
run: echo "UNPACK_PATH=$( find sandbox -maxdepth 1 -type d -regex 'sandbox/.+[0-9].+' )" >> $GITHUB_ENV

- name: Report sdist unpack path
run: echo $UNPACK_PATH

- name: Install dev req'ts to venv
run: |
source sandbox/env/bin/activate
cd "$UNPACK_PATH"
python -m pip install -r requirements-dev.txt

- name: Run test suite in sandbox
run: |
source sandbox/env/bin/activate
cd "$UNPACK_PATH"
pytest
40 changes: 40 additions & 0 deletions .github/workflows/release_testdir_coverage.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: 'RELEASE: Ensure all tests ran'

on:
pull_request:
types:
- opened
- reopened
- synchronize
- ready_for_review
branches:
- stable

jobs:
testdir_coverage:
name: via coverage check
runs-on: 'ubuntu-latest'
if: ${{ !github.event.pull_request.draft && !contains(toJson(github.event), '[skip ci]')}}

steps:
- name: Check out repo
uses: actions/checkout@v6
with:
persist-credentials: false

- name: Install Python
uses: actions/setup-python@v6
with:
python-version: '3.14'
cache: 'pip'
cache-dependency-path: |
requirements-ci.txt

- name: Install CI requirements
run: pip install -r requirements-ci.txt

- name: Run pytest with coverage
run: pytest --cov

- name: Check 100% test execution
run: coverage report --include="tests/*" --fail-under=100
2 changes: 1 addition & 1 deletion AUTHORS.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ Credits
=======

`flake8-absolute-import` is authored and maintained by Brian Skinn
([Blog](https://bskinn.github.io)) ([Twitter](https://twitter.com/btskinn)). The
([Blog](https://bskinn.github.io)) ([Mastodon](https://fosstodon.org/@btskinn)). The
skeleton of the AST-based implementation used for this plugin was shamelessly
swiped from [`flake8-2020`](https://github.com/asottile/flake8-2020) by
[Anthony Sottile](https://github.com/asottile).
Expand Down
76 changes: 74 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,80 @@
All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project strives to adhere (mostly) to
[Semantic Versioning](http://semver.org/spec/v2.0.0.html).
and this project follows an extension of [Semantic
Versioning](http://semver.org/spec/v2.0.0.html), adding a fourth `ADMIN` version
segment.

The plugin interface changes implied by bumps in these SemVer versions are
specific to the error codes emitted by the plugin as part of flake8 execution:

- **Major**
- Any addition or removal of an error code emitted by the plugin.
- Any change to the default behavior of the plugin with respect to an existing
error code.
- **Minor**
- Addition of new, configurable behavior of the plugin related to an existing
error code, which is not expected to alter the error code emitting behavior
of any existing user configurations.
- **Patch**
- Bugfixes to align the plugin's actual behavior with its stated behavior with
regard to error codes emitted.
- **Admin**
- Releases with changes that are expected to have no effect on plugin
behavior.


### [1.0.0.3] - 2025-11-27

This release contains significant changes, but none that should alter the
behavior of the plugin. Thus, it is being considered an administrative release
despite its scale.

#### Dependencies

- Add formal support for Python 3.13 and 3.14.

- Drop formal support for Python 3.8 and 3.9.

- Increase the minimum permitted Python version to install the package to Python
3.10.

#### Internal

- Add types to the project code.

#### Administrative

- Upgrade `checkout` and `setup-python` actions.

- Convert Azure Pipelines jobs to GitHub Actions and remove Azure config.
- The cross-platform auth/auth required to keep Pipelines working just wasn't
worth the effort to put in place.
- The cross-platform tests, sdist-install check, and test-dir coverage check
now all run only on PRs to `stable`.
- Credentials persistence was disabled for all.
- All were implemented with pip caching.

- Convert core tests workflow to run on PR, not push, and modernize.
- Cache pip.
- Disable credentials persistence.
- Advance Python versions.

- Remove CodeCov from workflows and requirements.
- The project/team is far too small for it to be valuable.

- Update copyright end years.

- Convert `README` to Markdown.

- Modernize `pyproject.toml` and `setuptools` config.

- Add multiple `tox` envs:
- `black`
- `mypy`
- `isort`
- `check` (rollup of `isort`, `black`, `flake8`, `mypy`)
- `build`


### [1.0.0.2] - 2023-10-08
Expand Down
2 changes: 1 addition & 1 deletion LICENSE.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
The MIT License (MIT)

Copyright (c) 2019-2023 Brian Skinn
Copyright (c) 2019-2025 Brian Skinn

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
3 changes: 2 additions & 1 deletion MANIFEST.in
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
include AUTHORS.md LICENSE.txt README.rst CHANGELOG.md pyproject.toml
include AUTHORS.md LICENSE.txt README.md CHANGELOG.md pyproject.toml
include requirements-dev.txt requirements-flake8.txt tox.ini
include src/flake8_absolute_import/py.typed
Loading