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
22 changes: 11 additions & 11 deletions .github/workflows/cache_libs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ on:
workflow_call:
inputs:
LIBICONV_VERSION:
default: "1.18"
default: "1.19"
required: false
type: string
LIBXML2_VERSION:
Expand All @@ -16,39 +16,39 @@ on:
required: false
type: string
OPENSSL_VERSION:
default: "3.6.0"
default: "3.6.5"
required: false
type: string
XMLSEC1_VERSION:
default: "1.3.11"
default: "1.3.12"
required: false
type: string
ZLIB_VERSION:
default: "1.3.1"
default: "1.3.2"
required: false
type: string
WIN_LIBICONV_VERSION:
default: "1.18-1"
default: "1.19-1"
required: false
type: string
WIN_LIBXML2_VERSION:
default: "2.11.9-3"
default: "2.11.9-8"
required: false
type: string
WIN_LIBXSLT_VERSION:
default: "1.1.39"
default: "1.1.45"
required: false
type: string
WIN_OPENSSL_VERSION:
default: "3.5.6"
default: "3.5.9"
required: false
type: string
WIN_XMLSEC1_VERSION:
default: "1.3.11"
default: "1.3.12"
required: false
type: string
WIN_ZLIB_VERSION:
default: "1.3.1"
default: "1.3.2"
required: false
type: string

Expand Down Expand Up @@ -87,7 +87,7 @@ jobs:
- "ubuntu-22.04"
- "ubuntu-22.04-arm"
- "macos-latest"
- "windows-2022"
- "windows-2025-vs2026"
- "windows-11-arm"

runs-on: ${{ matrix.os }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/linuxbrew.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:

strategy:
matrix:
python: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
python: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.15"]

env:
# For some unknown reason, linuxbrew tries to use "gcc-11" by default, which doesn't exist.
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/macosx.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:

strategy:
matrix:
python: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
python: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.15"]
static_deps: ["static", ""]

steps:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/manylinux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:

strategy:
matrix:
python-abi: [cp39-cp39, cp310-cp310, cp311-cp311, cp312-cp312, cp313-cp313, cp314-cp314]
python-abi: [cp310-cp310, cp311-cp311, cp312-cp312, cp313-cp313, cp314-cp314, cp315-cp315]
image:
- manylinux2014_x86_64
- manylinux_2_28_x86_64
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/sdist.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:

strategy:
matrix:
python: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
python: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.15"]

steps:
- uses: actions/checkout@v3
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ jobs:

- name: Install cibuildwheel
# N.B. Keep cibuildwheel version pin consistent with "build_wheels" job below.
run: pipx install cibuildwheel==3.3
run: pipx install cibuildwheel==4.3.4

- id: set-matrix
run: |
Expand All @@ -96,7 +96,7 @@ jobs:
&& cibuildwheel --print-build-identifiers --platform macos \
| jq -nRc '{"only": inputs, "os": "macos-latest"}' \
&& cibuildwheel --print-build-identifiers --platform windows \
| jq -nRc '{"only": inputs, "os": "windows-2022"}' \
| jq -nRc '{"only": inputs, "os": "windows-2025-vs2026"}' \
&& cibuildwheel --print-build-identifiers --platform windows --archs ARM64 \
| jq -nRc '{"only": inputs, "os": "windows-11-arm"}'
} | jq -sc
Expand Down Expand Up @@ -145,7 +145,7 @@ jobs:
platforms: all

- name: Build wheels
uses: pypa/cibuildwheel@v3.3.0
uses: pypa/cibuildwheel@v4.3.4
with:
only: ${{ matrix.only }}
env:
Expand Down
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@ notifications:
email: false

python:
- "3.9"
- "3.10"
- "3.11"
- "3.12"
- "3.13"
- "3.14"
- "3.15"

env:
global:
Expand Down
24 changes: 12 additions & 12 deletions build_support/lib_xmlsec_dependency_builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ def triplet(self) -> str:


class LibXmlsecDependencyBuilder:
WINDOWS_LIBS_DOWNLOAD_RELEASE_URL = 'https://github.com/mxamin/python-xmlsec-win-binaries/releases/download/2026.04.28/'
WINDOWS_LIBS_DOWNLOAD_RELEASE_URL = 'https://github.com/mxamin/python-xmlsec-win-binaries/releases/download/2026.10.23/'
LIB_VERSION_ENV_VARS: ClassVar[dict[str, str]] = {
'libiconv_version': 'PYXMLSEC_LIBICONV_VERSION',
'libxml2_version': 'PYXMLSEC_LIBXML2_VERSION',
Expand All @@ -46,20 +46,20 @@ class LibXmlsecDependencyBuilder:
'zlib_version': 'PYXMLSEC_ZLIB_VERSION',
}
UNIX_DEFAULT_LIB_VERSIONS: ClassVar[dict[str, str]] = {
'libiconv_version': '1.18',
'libiconv_version': '1.19',
'libxml2_version': '2.14.6', # Make sure it matches with lxml
'libxslt_version': '1.1.43',
'openssl_version': '3.6.0',
'xmlsec1_version': '1.3.11',
'zlib_version': '1.3.1',
'libxslt_version': '1.1.43', # 1.1.44+ requires libxml2 >= 2.15.1
'openssl_version': '3.6.5',
'xmlsec1_version': '1.3.12',
'zlib_version': '1.3.2',
}
WINDOWS_DEFAULT_LIB_VERSIONS: ClassVar[dict[str, str]] = {
'libiconv_version': '1.18-1',
'libxml2_version': '2.11.9-3', # Make sure it matches with lxml
'libxslt_version': '1.1.39',
'openssl_version': '3.5.6',
'xmlsec1_version': '1.3.11',
'zlib_version': '1.3.1',
'libiconv_version': '1.19-1',
'libxml2_version': '2.11.9-8', # Make sure it matches with lxml
'libxslt_version': '1.1.45',
'openssl_version': '3.5.9',
'xmlsec1_version': '1.3.12',
'zlib_version': '1.3.2',
}

def __init__(self, platform_name, info=None, libs_dir=None, buildroot=None, plat_name=None):
Expand Down
10 changes: 5 additions & 5 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ name = "xmlsec"
dynamic = ["version"]
description = "Python bindings for the XML Security Library"
readme = {file = "README.md", content-type = "text/markdown"}
requires-python = ">=3.9"
requires-python = ">=3.10"
dependencies = ["lxml>=3.8"]
keywords = ["xmlsec"]
authors = [
Expand All @@ -24,12 +24,12 @@ classifiers = [
"Operating System :: OS Independent",
"Programming Language :: C",
"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",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: 3.15",
"Topic :: Text Processing :: Markup :: XML",
"Typing :: Typed"
]
Expand Down Expand Up @@ -90,7 +90,7 @@ disable_error_code = ["attr-defined"]
line-length = 130

# Target Python version (used for autofixes and style rules)
target-version = "py39"
target-version = "py310"

# Directories and files to exclude from linting and formatting
exclude = [
Expand Down Expand Up @@ -154,12 +154,12 @@ line-ending = "lf"
# cibuildwheel
[tool.cibuildwheel]
build = [
"cp39-*",
"cp310-*",
"cp311-*",
"cp312-*",
"cp313-*",
"cp314-*"
"cp314-*",
"cp315-*"
]
build-verbosity = 1
environment = {PYXMLSEC_STATIC_DEPS="true"}
Expand Down
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
lxml==6.1.0
lxml==6.1.3
6 changes: 3 additions & 3 deletions tests/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ def run(self, result=None):
return

m_usage = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
o_count = gc.get_count()[0]
o_count = len(gc.get_objects(0))
m_hits = 0
o_hits = 0
for _ in range(self.iterations):
Expand All @@ -48,7 +48,7 @@ def run(self, result=None):
if m_usage_n > m_usage:
m_usage = m_usage_n
m_hits += 1
o_count_n = gc.get_count()[0]
o_count_n = len(gc.get_objects(0))
if o_count_n > o_count:
o_count = o_count_n
o_hits += 1
Expand Down Expand Up @@ -107,7 +107,7 @@ def assertXmlEqual(self, first, second, msg=None):
cl2 = sorted(second.getchildren(), key=lambda x: x.tag)
if len(cl1) != len(cl2):
self.fail(f'children length differs, {len(cl1)} != {len(cl2)}. {msg}')
for c1, c2 in zip(cl1, cl2):
for c1, c2 in zip(cl1, cl2, strict=True):
self.assertXmlEqual(c1, c2)


Expand Down
Loading