Skip to content

Commit 179faa0

Browse files
chore(release): prepare 4.1.1 metadata/docs cleanup and release workflow updates (#734)
* chore(release): prepare 4.1.1 metadata cleanup Fix package metadata and README badges after 4.1.0. - correct PyPI badge package name - update package description metadata - add current Python version classifiers - align release metadata with supported Python versions - remove obsolete universal wheel configuration - add 4.1.1 changelog entry * chore(release): standardize pyproject build and release runbook - migrate package metadata to pyproject.toml as source of truth - keep setup.py as compatibility shim - update bump2version target to pyproject.toml - add concise RELEASING.md and link from README - point legacy release-process.rst to new runbook * ci(test): add Python 3.7 to CI matrix on ubuntu-22.04 (latest 24.04 not support 3.7) * ci(test): ignore RELEASING docs-only changes
1 parent 4af0ce1 commit 179faa0

10 files changed

Lines changed: 187 additions & 129 deletions

File tree

.github/workflows/test.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ on:
66
paths-ignore:
77
- CHANGELOG.md
88
- README.md
9+
- RELEASING.md
910
- LICENSE
1011
- LICENSE.txt
1112
- release-process.rst
@@ -24,6 +25,7 @@ on:
2425
paths-ignore:
2526
- CHANGELOG.md
2627
- README.md
28+
- RELEASING.md
2729
- LICENSE
2830
- LICENSE.txt
2931
- release-process.rst
@@ -53,6 +55,9 @@ jobs:
5355
os: [ windows-latest ]
5456
wdm-log: ['']
5557
include:
58+
- python-version: '3.7'
59+
selenium-version: '4.10.0'
60+
os: ubuntu-22.04
5661
- python-version: '3.13'
5762
selenium-version: '4.10.0'
5863
os: ubuntu-latest

.github/workflows/test_xdist.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ on:
66
paths-ignore:
77
- CHANGELOG.md
88
- README.md
9+
- RELEASING.md
910
- LICENSE
1011
- LICENSE.txt
1112
- release-process.rst
@@ -24,6 +25,7 @@ on:
2425
paths-ignore:
2526
- CHANGELOG.md
2627
- README.md
28+
- RELEASING.md
2729
- LICENSE
2830
- LICENSE.txt
2931
- release-process.rst

CHANGELOG.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,27 @@
22

33
---
44

5+
## 4.1.1
6+
7+
### Packaging
8+
9+
- Fixed package metadata shown on PyPI.
10+
- Added Python version classifiers for currently supported Python versions.
11+
- Removed obsolete universal wheel metadata.
12+
- Ensured release metadata better reflects the current Python support policy.
13+
14+
### Docs
15+
16+
- Fixed PyPI badge package name in README.
17+
- Updated README badges to use the published package name `webdriver-manager`.
18+
19+
### Notes
20+
21+
- No functional driver-resolution changes are included in this release.
22+
- This is a packaging and documentation cleanup release following 4.1.0.
23+
24+
---
25+
526
## 4.1.0
627

728
### Compatibility

README.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# Webdriver Manager for Python
22

33
[![Tests](https://github.com/SergeyPirogov/webdriver_manager/actions/workflows/test.yml/badge.svg)](https://github.com/SergeyPirogov/webdriver_manager/actions/workflows/test.yml)
4-
[![PyPI](https://img.shields.io/pypi/v/webdriver_manager.svg)](https://pypi.org/project/webdriver-manager)
5-
[![Supported Python Versions](https://img.shields.io/pypi/pyversions/webdriver_manager.svg)](https://pypi.org/project/webdriver-manager/)
4+
[![PyPI](https://img.shields.io/pypi/v/webdriver-manager.svg)](https://pypi.org/project/webdriver-manager/)
5+
[![Supported Python Versions](https://img.shields.io/pypi/pyversions/webdriver-manager.svg)](https://pypi.org/project/webdriver-manager/)
66
[![codecov](https://codecov.io/gh/SergeyPirogov/webdriver_manager/branch/master/graph/badge.svg)](https://codecov.io/gh/SergeyPirogov/webdriver_manager)
77

88
`webdriver-manager` is a Python library for explicit browser driver management.
@@ -536,6 +536,8 @@ Bug fixes, compatibility fixes, CI improvements, documentation updates, and regr
536536

537537
For larger changes, please open an issue first to discuss the proposed approach.
538538

539+
Maintainers: see [RELEASING.md](RELEASING.md) for the release runbook.
540+
539541
## Maintenance status
540542

541543
The project accepts maintenance contributions focused on:

RELEASING.md

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
# Releasing webdriver-manager
2+
3+
This document is the maintainer runbook for publishing `webdriver-manager` releases.
4+
5+
## Release model
6+
7+
- Use `patch` for bugfixes, metadata/docs cleanup, and non-breaking maintenance changes.
8+
- Use `minor` for new backward-compatible features.
9+
- Use `major` for breaking changes.
10+
11+
## Prerequisites
12+
13+
- Maintainer access to:
14+
- repository push/tag permissions;
15+
- GitHub Releases;
16+
- PyPI token (`__token__` user) when publishing manually.
17+
- Local environment:
18+
- Python 3.12+ is recommended for release tooling;
19+
- `.venv` with `build`, `twine`, and `bump2version`.
20+
21+
Install tooling:
22+
23+
```bash
24+
./.venv/bin/pip install -U build twine bump2version
25+
```
26+
27+
## Version sources
28+
29+
Release version must stay aligned in:
30+
31+
- `pyproject.toml` (`[project].version`);
32+
- `webdriver_manager/__init__.py` (`__version__`);
33+
- `setup.cfg` (`[bumpversion].current_version`).
34+
35+
`setup.py` is a compatibility shim. Packaging metadata is sourced from `pyproject.toml`.
36+
37+
## Standard release flow (preferred)
38+
39+
1. Ensure branch is up to date and tests are green.
40+
2. Update `CHANGELOG.md` for the target version.
41+
3. Bump version:
42+
43+
```bash
44+
./.venv/bin/bump2version patch
45+
# or: minor / major
46+
```
47+
48+
4. Build and validate artifacts:
49+
50+
```bash
51+
find . -maxdepth 1 -name '*.egg-info' -exec rm -rf {} +
52+
rm -rf dist build
53+
./.venv/bin/python -m build
54+
./.venv/bin/twine check dist/*
55+
```
56+
57+
5. Push commit and tag:
58+
59+
```bash
60+
git push
61+
git push --tags
62+
```
63+
64+
6. Create and publish a GitHub Release for the new tag.
65+
7. Verify deploy workflow completed successfully:
66+
- `.github/workflows/deploy.yml` runs on `release.published`;
67+
- artifacts are uploaded to PyPI.
68+
69+
## Fallback when GitHub Release UI/API is unavailable
70+
71+
Use this only when GitHub release creation is blocked.
72+
73+
1. Run steps 1-5 from the standard flow.
74+
2. Publish directly to PyPI from local artifacts:
75+
76+
```bash
77+
./.venv/bin/twine upload dist/*
78+
```
79+
80+
3. When GitHub recovers, create the GitHub Release for the same tag and include notes.
81+
82+
Important:
83+
84+
- The deploy workflow may fail later on re-upload because the same version already exists on PyPI.
85+
- That failure is expected in this fallback path; do not republish with the same version.
86+
87+
## Post-release checks
88+
89+
- PyPI page shows correct:
90+
- version;
91+
- summary;
92+
- `Requires-Python`;
93+
- supported Python classifiers.
94+
- README badges resolve to `webdriver-manager` package.
95+
- Install smoke test:
96+
97+
```bash
98+
python -m venv /tmp/wdm-smoke
99+
source /tmp/wdm-smoke/bin/activate
100+
pip install webdriver-manager==X.Y.Z
101+
python -c "import webdriver_manager; print(webdriver_manager.__version__)"
102+
```
103+
104+
## Notes
105+
106+
- Keep `4.x` maintenance releases small and focused.
107+
- Do not yank a release unless it is functionally unsafe (install/runtime/security/API breakage).

pyproject.toml

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,48 @@
1+
[build-system]
2+
requires = ["setuptools>=69", "wheel"]
3+
build-backend = "setuptools.build_meta"
4+
15
[project]
26
name = "webdriver-manager"
3-
version = "4.1.0"
4-
description = "Add your description here"
7+
version = "4.1.1"
8+
description = "Library provides the way to automatically manage drivers for different browsers"
59
readme = "README.md"
610
requires-python = ">=3.7"
11+
license = "Apache-2.0"
12+
authors = [
13+
{ name = "Sergey Pirogov", email = "automationremarks@gmail.com" },
14+
]
15+
keywords = ["testing", "selenium", "driver", "test automation"]
16+
urls = { Homepage = "https://github.com/SergeyPirogov/webdriver_manager", Repository = "https://github.com/SergeyPirogov/webdriver_manager" }
17+
classifiers = [
18+
"Intended Audience :: Information Technology",
19+
"Intended Audience :: Developers",
20+
"Programming Language :: Python :: 3.7",
21+
"Programming Language :: Python :: 3.8",
22+
"Programming Language :: Python :: 3.9",
23+
"Programming Language :: Python :: 3.10",
24+
"Programming Language :: Python :: 3.11",
25+
"Programming Language :: Python :: 3.12",
26+
"Programming Language :: Python :: 3.13",
27+
"Programming Language :: Python :: 3.14",
28+
"Topic :: Software Development :: Libraries :: Python Modules",
29+
"Operating System :: Microsoft :: Windows",
30+
"Operating System :: POSIX",
31+
"Operating System :: Unix",
32+
"Operating System :: MacOS",
33+
]
734
dependencies = [
835
"requests",
936
"python-dotenv",
1037
"packaging",
1138
]
1239

40+
[tool.setuptools.packages.find]
41+
include = ["webdriver_manager*"]
42+
43+
[tool.setuptools.package-data]
44+
webdriver_manager = ["py.typed"]
45+
1346
[dependency-groups]
1447
dev = [
1548
"selenium",

release-process.rst

Lines changed: 5 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,10 @@
11
Release process
22
===============
33

4-
Run tests on target brunch
5-
--------------------------
4+
The release process documentation moved to ``RELEASING.md`` at the repository root.
65

7-
Steps::
8-
9-
tox -epep8
10-
tox -esphinx-docs
11-
12-
13-
Release new version
14-
-------------------
15-
16-
In repo root and master branch run::
17-
18-
bump2version <release_kind {major|minor|patch}>
19-
git push --follow-tags
20-
21-
Cut off stable branch
22-
---------------------
23-
24-
Steps::
25-
26-
git checkout -b vX.X.X-stable
27-
git push origin vX.X.X-stable
28-
29-
30-
Create GitHub tag
31-
-----------------
32-
33-
Steps::
34-
35-
Releases ---> Draft New Release
36-
Name: python-testrelease version X.X.X stable release
37-
38-
39-
Collect changes from previous version
40-
-------------------------------------
41-
42-
Steps::
43-
44-
git log --oneline --decorate
45-
46-
47-
Build distribution package
48-
--------------------------
49-
50-
Steps::
51-
52-
python setup.py bdist_wheel
53-
54-
55-
Check install capability for the wheel
56-
--------------------------------------
57-
58-
Steps::
59-
60-
virtualenv .test_venv
61-
source .test_venv/bin/activate
62-
pip install dist/testcontainer-X.X.X-py2.py3-none-any.whl
6+
Use that file as the source of truth for:
637

8+
- standard GitHub Release based publishing;
9+
- fallback publishing when GitHub UI/API is unavailable;
10+
- artifact validation and post-release checks.

setup.cfg

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,15 @@
11
[bumpversion]
2-
current_version = 4.1.0
2+
current_version = 4.1.1
33
commit = True
44
tag = True
55

6-
[bdist_wheel]
7-
universal = 1
8-
9-
[bumpversion:file:setup.py]
10-
search = version='{current_version}',
11-
replace = version='{new_version}',
6+
[bumpversion:file:pyproject.toml]
7+
search = version = "{current_version}"
8+
replace = version = "{new_version}"
129

1310
[bumpversion:file:webdriver_manager/__init__.py]
1411
search = __version__ = '{current_version}'
1512
replace = __version__ = '{new_version}'
1613

1714
[metadata]
18-
description-file = README.md
15+
description_file = README.md

0 commit comments

Comments
 (0)