Skip to content
This repository was archived by the owner on Jul 5, 2026. It is now read-only.
Open
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
2 changes: 1 addition & 1 deletion .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
strategy:
matrix:
python-version: ["3.x"]
poetry-version: ["1.8.5"]
poetry-version: ["2.2.1"]
steps:
- name: "Checkout"
uses: actions/checkout@v6
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/python-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
poetry-version: ["1.8.5"]
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
poetry-version: ["2.2.1"]
steps:
- name: "Checkout"
uses: actions/checkout@v6
Expand All @@ -44,8 +44,8 @@ jobs:
runs-on: ${{matrix.os}}
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
poetry-version: ["1.8.5"]
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
poetry-version: ["2.2.1"]
browser: ["chromium", "firefox", "webkit"]
os: ["ubuntu-latest", "windows-latest", "macos-latest"]
steps:
Expand All @@ -65,7 +65,7 @@ jobs:
- name: "Run pytest"
run: make test browser=${{matrix.browser}}
- name: "Upload coverage reports to Codecov"
if: matrix.python-version == '3.13' && matrix.os == 'ubuntu-latest' && matrix.browser == 'chromium' && github.actor != 'dependabot[bot]'
if: matrix.python-version == '3.14' && matrix.os == 'ubuntu-latest' && matrix.browser == 'chromium' && github.actor != 'dependabot[bot]'
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
4 changes: 3 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,16 @@ jobs:
environment: pypi
strategy:
matrix:
poetry-version: ["1.8.5"]
poetry-version: ["2.2.1"]
steps:
- name: "Checkout"
uses: actions/checkout@v6
- name: "Install Poetry ${{matrix.poetry-version}}"
run: pipx install poetry==${{matrix.poetry-version}}
- name: "Setup Python"
uses: actions/setup-python@v6
with:
python-version: "3.14"
- name: "Build package"
run: poetry build
- name: "Publish package distributions to PyPI"
Expand Down
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ install:
poetry install --no-root

lock:
poetry lock --no-update
poetry lock

Copilot AI Jan 9, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The poetry lock command has been changed from "poetry lock --no-update" to "poetry lock". This will update all dependencies to their latest compatible versions on every lock, which may not be the intended behavior. The --no-update flag is typically used to refresh the lock file without updating dependency versions. If the intention is to only refresh the lock file metadata without updating versions, the --no-update flag should be retained.

Suggested change
poetry lock
poetry lock --no-update

Copilot uses AI. Check for mistakes.

browser-install:
poetry run playwright install-deps $(browser)
Expand All @@ -54,4 +54,4 @@ mkdocs-deploy:
poetry run mkdocs gh-deploy --force

actionlint:
docker run --rm -v .:/repo --workdir /repo rhysd/actionlint:latest -color
docker run --rm -v $(shell pwd):/repo --workdir /repo rhysd/actionlint:latest -color
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@
Extension for the Playwright package
that allows access to the [Web Storage API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API).

Supported Python versions: 3.10–3.14.

## Installation

```shell
Expand Down
4 changes: 2 additions & 2 deletions formatters-cfg.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.black]
line-length = 120
target-version = ["py39", "py310", "py311", "py312"]
target-version = ["py310", "py311", "py312", "py313"]

Copilot AI Jan 9, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Black target version list is missing "py314". Since this PR adds support for Python 3.14 and removes 3.9, the target version should include py314 to ensure Black formats code compatible with Python 3.14.

Suggested change
target-version = ["py310", "py311", "py312", "py313"]
target-version = ["py310", "py311", "py312", "py313", "py314"]

Copilot uses AI. Check for mistakes.

[tool.flake8]
inline-quotes = "double"
Expand All @@ -13,7 +13,7 @@ default_section = "THIRDPARTY"
force_single_line = true
line_length = 120
use_parentheses = true
py_version=39
py_version=310

[tool.mypy]
ignore_missing_imports = true
Expand Down
569 changes: 279 additions & 290 deletions poetry.lock

Large diffs are not rendered by default.

70 changes: 34 additions & 36 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,69 +1,67 @@
[tool.poetry]
[project]
name = "playwright-localstorage"
version = "1.1.0"
version = "1.1.1"
description = "Extension for the Playwright package that allows access to the Web Storage API."
documentation = "https://github.com/swimmwatch/playwright-localstorage"
license = "MIT"
readme = "README.md"
homepage = "https://pypi.org/project/playwright-localstorage/"
repository = "https://github.com/swimmwatch/playwright-localstorage"
license = "MIT"
requires-python = ">=3.10,<4.0"
authors = [{name = "Dmitry Vasiliev", email = "contact.vasiliev.dmitry@gmail.com"}]
keywords = ["Playwright", "Web Storage API", "Poetry"]
authors = ["Dmitry Vasiliev <contact.vasiliev.dmitry@gmail.com>"]
classifiers = [
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Operating System :: OS Independent",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3.14",
"Operating System :: OS Independent",
"Topic :: Software Development :: Testing",
"Topic :: Internet :: WWW/HTTP :: Browsers",
"Framework :: AsyncIO"
]
dependencies = [
"playwright>=1,<2",
"greenlet>=3.*",
]

[tool.poetry.dependencies]
python = "^3.9"
playwright = "1.*"

[project.urls]
Homepage = "https://pypi.org/project/playwright-localstorage/"
Repository = "https://github.com/swimmwatch/playwright-localstorage"
Documentation = "https://github.com/swimmwatch/playwright-localstorage"

[tool.poetry.group.dev.dependencies]
mypy = "^1.14.0"
black = ">=24.10,<26.0"
flake8 = "^7.1.1"
isort = ">=5.13.2,<7.0.0"
mypy = "^1.19.1"
black = "^25.12.0"
flake8 = "^7.3.0"
isort = "^5.13.2"

Copilot AI Jan 9, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The isort dependency has been downgraded from version 6.0.1 to 5.13.2. This downgrade is inconsistent with the goal of supporting Python 3.14, as newer versions of isort typically have better support for newer Python syntax and features. Consider using a version of isort that fully supports Python 3.14.

Suggested change
isort = "^5.13.2"
isort = "^6.0.1"

Copilot uses AI. Check for mistakes.
flake8-bandit = "^4.1.1"
pytest = "^8.3.4"
pytest-mock = "^3.14.0"
pytest-mock = "^3.15.1"
flake8-quotes = "^3.4.0"
flake8-isort = "^6.1.1"
flake8-string-format = "^0.3.0"
flake8-rst-docstrings = ">=0.3,<0.5"
flake8-bugbear = "^24.12.12"
pytest-playwright = "^0.5.1"
pytest-xdist = "^3.6.1"
flake8-pyproject = "^1.2.3"
jinja2 = "^3.1.5"
pytest-asyncio = ">=0.25,<0.27"
pytest-playwright-async = "^1.1.0"
nest-asyncio = "^1.6.0"
flake8-pytest-style = "^2.0.0"
mkdocs-material = "^9.5.49"
flake8-isort = "^7.0.0"
flake8-rst-docstrings = "^0.4.0"
flake8-bugbear = "^25.11.29"
pytest-playwright = "^0.7.2"
pytest-xdist = "^3.8.0"
flake8-pyproject = "^1.2.4"
jinja2 = "^3.1.6"
pytest-asyncio = "^1.3.0"
flake8-pytest-style = "^2.2.0"
mkdocs-material = "^9.7.1"
mkdocstrings = ">=0.27,<0.30"
mkdocstrings-python = "^1.13.0"
mkdocs-coverage = "^1.1.0"
mkdocs-section-index = "^0.3.9"
mkdocs = "^1.6.1"
mkdocs-macros-plugin = "^1.3.7"
mkdocs-macros-plugin = "^1.5.0"
mkdocs-minify-plugin = "^0.8.0"
lazydocs = "^0.4.8"
pydocstyle = "^6.3.0"
pytest-cov = ">=6,<8"
pytest-cov = "^7.0.0"
bandit = "^1.9.2"

[build-system]
requires = ["poetry-core"]
requires = ["poetry-core>=2.0.0"]
build-backend = "poetry.core.masonry.api"

[tool.isort]
Expand All @@ -72,4 +70,4 @@ default_section = "THIRDPARTY"
force_single_line = true
line_length = 120
use_parentheses = true
py_version=39
py_version=310
18 changes: 3 additions & 15 deletions tests/test_async/conftest.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
import asyncio
import typing

import nest_asyncio
import pytest
import pytest_asyncio
from playwright.async_api import Page

from tests.types import TempFileFactoryType
Expand All @@ -12,25 +9,16 @@


@pytest.fixture
async def temp_page(page_async: Page, temp_page_maker: TempFileFactoryType) -> TempPageFactoryType:
async def temp_page(page: Page, temp_page_maker: TempFileFactoryType) -> TempPageFactoryType:
async def wrapper(js_code: typing.Optional[str] = None) -> Page:
if js_code is None:
js_code = ""

path = temp_page_maker(js_code)
url = make_fs_url(path)

await page_async.goto(url)
await page.goto(url)

return page_async
return page

return wrapper


@pytest_asyncio.fixture(scope="session", autouse=True)
def event_loop():
policy = asyncio.get_event_loop_policy()
loop = policy.new_event_loop()
nest_asyncio.apply(loop)
yield loop
loop.close()
Loading