Upgrade to release 0.16.8:
Bug fixes
- Visit functional TypedDict keyword arguments correctly
- [flake8-simplify] Detect nested async with under sync parent
(SIM117)
- [flake8-simplify] Preserve operand order in SIM109 fix
- [pyupgrade] Preserve required parentheses in multiline UP040
fixes
- [pyupgrade] Skip TypeVarTuple and ParamSpec conversions with
bounds or constraints (UP040, UP046, UP047)
Rule changes
- Add support for __lazy_modules__
- Recognize PEP-728 TypedDict class keywords
- Recognize quoted types in typing.TypeForm
- Support conditional assignment to __lazy_modules__
- [flake8-type-checking] Prefer lazy imports over TYPE_CHECKING on
Python 3.15 and later (TC001, TC002, TC003)
- [pyupgrade] Make the fix for UP040 always unsafe
- [pyupgrade] Stop recommending deprecated ByteString aliases
(UP035)
- [ruff, flake8-use-pathlib] Recognize the parent_mode argument
(RUF064, PTH103)
- [ruff] Detect \Z in pytest.raises() match patterns (RUF043)
This work was sponsored by GOVCERT.LU.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 3.1.0:
- Support for Python 3.8 was removed. The minimum supported version
is now Python 3.9.
- Support for MSVC 2017 has been dropped. #6110
- Changed strict-mode numeric conversions for PEP 484 compatibility:
float now accepts int, and complex now accepts int and float.
- Small extra features added to the pybind11 command line tool
based on python-config.
- Added subinterpreter_thread_state, an RAII wrapper that owns a
reusable PyThreadState for a sub-interpreter, together with a
subinterpreter_scoped_activate overload that activates it. This
lets an OS thread re-enter one or more sub-interpreters without
creating and destroying a PyThreadState on every activation.
- Add py::mod_gil_used() as replacement spelling to
py::mod_gil_not_used(false).
- Fixed a crash in py::subinterpreter::create() when called without
a current PyThreadState, which its documentation explicitly allows
- for example from an embedder that ended initialization with
PyEval_SaveThread(), or from a worker thread that has never
touched Python. error_scope is now constructed after a thread
state has been attached instead of before.
- Make py::print delegate to the current frame/interpreter built-ins
print entry, fixing handling of sys.stdout = None, following the
active runtime's stream, keyword, and error semantics, and
remaining a no-op if the entry is unavailable during teardown.
- Include the builtin complex type in the input annotation of the
std::complex<T> type caster.
- String views (e.g. std::string_view) are now kept alive only when
loaded from a transient source (such as a generator), fixing both
a use-after-free and a regression where casting a view from a
durable object outside a bound function would throw.
- Drop Python 2 prepend to evaluated source, causing errors to be
off by one.
- Fix data race on last_storage_ptr_ cache in
gil_safe_call_once_and_store.
- Allow user defined __str__ on enum_.
- Fix generated Callable type annotations for Python callbacks
passed into C++ by inverting the callback's argument/return I/O
context relative to the enclosing function signature.
- Correct __delitem__ for negative-step slices and re-enable
contiguous erase fast path.
- Do not pass -fno-fat-lto-objects to GCC on macOS, which made all
LTO probes fail and silently disabled LTO.
- Fixed cross-compilation to Emscripten/Pyodide with CMake >= 4.1
by no longer overriding an explicitly set
PYBIND11_USE_CROSSCOMPILING when CMAKE_CROSSCOMPILING_EMULATOR
is defined.
- Unset stale PYTHON_MODULE_DEBUG_POSTFIX and correct
USE_PYTHON_INCLUDE_DIR variable.
- Apply -undefined dynamic_lookup to all Apple platforms.
This work was sponsored by GOVCERT.LU.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 3.1.0:
- Python subclasses can now combine one nanobind base with
additional :ref:`Python mixins <python_mixins>`, including
cooperative super() calls on CPython and PyPy. Inheriting from
multiple nanobind bases remains unsupported.
- The low-level instance API gained
:cpp:func:`nb::inst_python_derived() <inst_python_derived>`,
which reports whether a nanobind instance belongs to a
Python subclass of the bound type.
- Added new low-level functions :cpp:func:`nb::keep_alive_obj()
<keep_alive_obj>` and :cpp:func:`nb::keep_alive_cb()
<keep_alive_cb>`, which expose the mechanism behind the
:cpp:class:`nb::keep_alive <keep_alive>` annotation.
- The new function :cpp:func:`intrusive_counter::ref_count()`
returns the reference count of an intrusively reference-counted
object while it is owned by C++.
- Fixed stale trampoline override caches on PyPy. Changing an
attribute of a nanobind type now correctly invalidates the caches
of its Python subclasses.
- The std::map/std::unordered_map and std::set type casters can now
also handle containers like std::flat_map whose iterators return
temporary values.
- The :ref:`Bazel documentation <bazel>` was rewritten and now
presents an approach based on the Bazel Central Registry.
- Miscellaneous minor improvements.
This work was sponsored by GOVCERT.LU.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 10.13.0.post1:
- Behavior change: pikepdf.DataDecodingError now derives from
pikepdf.PdfError. A stream that will not decode is a defect in
the document, and the same call that raises it -
Object.read_bytes() - already raised PdfError for other kinds of
damage, so except PdfError was a handler that looked correct,
passed on healthy files, and let a traceback escape on damaged
ones. Code catching DataDecodingError by name is unaffected. Code
that orders except PdfError before except DataDecodingError will
now take the first branch; if the distinction matters, reverse
the order.
- Behavior change: pikepdf.PdfParsingError now derives from
pikepdf.PdfError, for the same reason.
- pikepdf.PasswordError remains a sibling of PdfError, not a
subclass. A wrong password does not mean the document is
defective, and handlers that report the two separately depend on
except PdfError not catching it.
- pikepdf.NotExtractableError is now exported. It was already the
base class of the exported HifiPrintImageNotTranscodableError but
could not be caught by name.
- Fixed the exceptions documentation, which referenced a nonexistent
FormCopyWarning (the class is PageCopyWarning) and omitted
ReferenceCycleError, PageCopyWarning and NotExtractableError.
- XMP assigns a type to every standard property, and software that
reads XMP discards a property whose type is wrong - Ghostscript
strips these silently, and PDF/A validators reject them. pikepdf
used to choose the RDF container from the Python type of the
value it was handed, so meta['dc:subject'] = ['a', 'b'] wrote an
rdf:Seq where the specification requires an rdf:Bag, and
meta['dc:creator'] = 'Author' wrote a bare string where an
rdf:Seq belongs. pikepdf now knows the type of the properties in
the standard schemas and converts values to it.
This work was sponsored by GOVCERT.LU.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 2026.4:
- Canada's Northwest Territories moved to permanent -06 on
2026-08-21.
- Obsolescent settings like TZ="EST5EDT" now conform better to
POSIX.
- Fix security, performance and porting bugs in zic and localtime.
This work was sponsored by GOVCERT.LU.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
The 1.3.3 snapshot on release/v1.3.x uses six in 68 files. Upstream has
removed six on main, so take a snapshot from there instead of carrying a
large local patch. main also replaces the cucumber-tag-expressions-only
matcher setup with cucumber-expressions and drops the tomli dependency
for Python 3.11 and newer.
Sent as RFC because main has not been released yet: its own version file
still says 1.4.0.dev0, so the version the recipe claims may still change
before upstream tags 1.4.0.
Built for intel-corei7-64.
AI-Generated: Uses Claude Code (Claude Opus 5)
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
cucumber-expressions provides the step-matcher expression parser that
behave requires from 1.4 onwards. Pure Python, no runtime dependencies
beyond the standard library, built with the uv backend that is already
used for python3-cucumber-tag-expressions.
Built for intel-corei7-64.
AI-Generated: Uses Claude Code (Claude Opus 5)
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Patch txdbus to use the dict methods, int, str, bytes indexing, next and
io.StringIO instead of the six helpers, and drop the runtime dependency.
Built for intel-corei7-64.
AI-Generated: Uses Claude Code (Claude Opus 5)
Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Patch transitions to use the Python 3 equivalents of the six helpers and
drop the runtime dependency.
Built for intel-corei7-64.
AI-Generated: Uses Claude Code (Claude Opus 5)
Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Patch smpplib to use dict.items, a bytes literal and a latin-1 encode
instead of six.iteritems, six.int2byte and six.b, and drop the runtime
dependency.
Built for intel-corei7-64.
AI-Generated: Uses Claude Code (Claude Opus 5)
Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Patch slip to use the metaclass keyword argument in the class statement
instead of six.with_metaclass, and drop the runtime dependency.
Built for intel-corei7-64.
AI-Generated: Uses Claude Code (Claude Opus 5)
Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
qface declares six in install_requires but does not import it anywhere.
Patch it out and drop the dependency from the recipe.
Built for intel-corei7-64.
AI-Generated: Uses Claude Code (Claude Opus 5)
Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Patch pyu2f to use queue, range and the input builtin instead of the
six.moves aliases, and drop the runtime dependency.
Built for intel-corei7-64.
AI-Generated: Uses Claude Code (Claude Opus 5)
Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
pyperf no longer uses six at build time; the native dependency is stale.
Built for intel-corei7-64.
AI-Generated: Uses Claude Code (Claude Opus 5)
Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
pymemcache no longer uses six at build time; the native dependency is
stale.
Built for intel-corei7-64.
AI-Generated: Uses Claude Code (Claude Opus 5)
Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
pathlib2 is a backport of the Python 3 pathlib module for Python 2 and
early Python 3, and it pulls in six. Nothing in the layers depends on it
any more, so drop it rather than carry a Python 2 compatibility package.
Verified that no recipe references python3-pathlib2.
AI-Generated: Uses Claude Code (Claude Opus 5)
Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Patch parse_type to use str instead of six.string_types and drop six from
the requirement lists and from the ptest dependencies.
Built for intel-corei7-64.
AI-Generated: Uses Claude Code (Claude Opus 5)
Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
nocaselist has not imported six since the 2.x series; the runtime
dependency is stale.
Built for intel-corei7-64.
AI-Generated: Uses Claude Code (Claude Opus 5)
Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
nocasedict has not imported six since the 2.x series; the runtime
dependency is stale.
Built for intel-corei7-64.
AI-Generated: Uses Claude Code (Claude Opus 5)
Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Patch jsonpath-rw to use int, str and range instead of six.integer_types,
six.string_types and six.moves.xrange, and drop the runtime dependency.
Built for intel-corei7-64.
AI-Generated: Uses Claude Code (Claude Opus 5)
Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Patch ecdsa to use the Python 3 equivalents of the six helpers and drop
the runtime dependency.
Built for intel-corei7-64.
AI-Generated: Uses Claude Code (Claude Opus 5)
Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Patch dateutil to use the standard library instead of the six metaclass
decorators, type aliases, raise_from and six.moves imports, and drop the
runtime dependency.
Built for intel-corei7-64.
AI-Generated: Uses Claude Code (Claude Opus 5)
Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
The new release drops the six dependency and the 2to3 conversion, and
switches the build backend from poetry-core to hatchling, which needs
hatch-vcs at build time. The COPYING checksum changed with the new
license file header.
Built for intel-corei7-64.
AI-Generated: Uses Claude Code (Claude Opus 5)
Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
astroid has not imported six since the 2.x series; the runtime dependency
is stale.
Built for intel-corei7-64.
AI-Generated: Uses Claude Code (Claude Opus 5)
Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
openembedded-core removed python3-six, so the recipe no longer resolves.
html5lib 1.1 only used six as a Python 2 compatibility layer; patch the
imports over to the Python 3 builtins and drop the runtime dependency.
Signed-off-by: Markus Volk <f_l_k@t-online.de>
AI-Generated: Uses Claude Code (Claude Fable 5.1)
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
These recipes no longer use six, so remove the dependency.
The list of recipes that still use six is a somewhat useful proxy for
packages that are no longer maintained...
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Python 2 was end-of-lifed six years ago now, so move the python3-six
recipe from oe-core to meta-python. Plenty of recipes still claim to
depend on it, but reviewing these is both a good way to review the
dependencies and potentially identify unmaintained packages.
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
pylint 4.0.8 passes asname=False to Import.infer(), a keyword argument
astroid 4.2 removed. With the astroid 4.3.1 in meta-python this makes
pylint crash on any import of a missing submodule:
TypeError: NodeNG.infer() got an unexpected keyword argument 'asname'
which shows up in ptest as astroid-error in three functional tests:
FAIL: tests/test_functional.py:test_functional[fallback_import_enabled]
FAIL: tests/test_functional.py:test_functional[import_error]
FAIL: tests/test_functional.py:test_functional[no_name_in_module]
Backport the pylint/ part of upstream commit 554b1d192434 ("Bump
astroid to 4.2.0b4"), which drops the argument.
meta-python-image-ptest-python3-pylint on qemux86-64 now passes
872 tests with none failing.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
test_basic_ddr_sync and test_basic_ddr_async only check that the
Internet is reachable. On networks that intercept port 53, 1.1.1.1 and
8.8.8.8 still answer ordinary queries but return NXDOMAIN for
_dns.resolver.arpa SVCB, so try_ddr() cannot upgrade the nameservers
and the tests fail:
FAIL: tests/test_ddr.py:test_basic_ddr_sync
FAIL: tests/test_ddr.py:test_basic_ddr_async
assert isinstance('1.1.1.1', dns.nameserver.Nameserver)
Add a patch to skip them unless both resolvers return DDR SVCB records.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
float_as_int_without_noise() returns early when the floored value fits
in a long, checking it with floor_val == static_cast<long>(floor_val).
For values outside the range of long the conversion is undefined
behavior; clang -O2 folds the round trip into "floor_val is integral",
which is always true, so the denoising is skipped:
FAIL: tests/test_fastnumbers_examples.py:test_try_real
FAIL: tests/test_fastnumbers_examples.py:test_try_forceint
assert 3452999999999999737856 == 3453000000000000000000
Add a patch that only does the conversion when the value is in range.
A reduced reproducer returns the wrong answer with the recipe's clang++
at -O2 and the right one with the fix (and with -O0 or gcc).
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
tests/test_core.py runs glances with ./conf/glances.conf and reads plugin
test data from ./tests-data, both relative to the ptest directory.
Neither was installed, and tests-data is not part of the pypi sdist, so
four tests failed:
test_023_get_alert: AssertionError: 'DEFAULT' != 'OK_LOG'
test_025_npu: IndexError: list index out of range
test_026_mpp: AssertionError: 0 != 3 : Expected 3 MPP engines
test_108_fs_zfs_: AssertionError: False is not true
Fetch tests-data from the v4.5.6 tag and install it, together with
conf/, next to the tests. Only tests-data/plugins is used by the tests.
With these in place tests/test_core.py passes 52/52 on qemux86-64.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
tests/integration/test_hooks.py records live https://httpbin.org
requests (no cassettes are shipped for them), so the ptest fails
whenever the service resets the connection, e.g.:
FAIL: tests/integration/test_hooks.py:TestHooks.test_post_start_hook
requests.exceptions.ConnectionError: ('Connection aborted.',
ConnectionResetError(104, 'Connection reset by peer'))
The same tests pass when the service behaves (3 out of 3 runs in a
qemux86-64 VM), so they are flaky rather than broken. Leave them out
of the ptest run.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 4.5.6:
Bugs corrected:
- Alert level decided by dict ordering: a failing+slow URL is
downgraded to WARNING, an unscanned URL reports CRITICAL
- GPU plugin duplicates card name and omits N/A for unavailable
metrics in multi-GPU
- GPU plugin duplicates the utilisation value and paints it with
the memory colour in multi-GPU
- IP plugin displays wrong interface: outer loop in get_ip_address()
never breaks
- VideoCore (v3d) memory shows ~93% on Raspberry Pi 5 with
gpu_mem=4M - misleading denominator from drm-total-memory
- CSV export: --stdout-csv data rows desync from header when
network interfaces change count at runtime
- Glances Network plugin with mismatched schema not logging in
TimescaleDB export
Security patches:
- as_dict_secure() Value-Level Bypass Leaks Credentials in URL
Values via /api/4/config - CVE-2026-68520
- --disable-config-exec does not cover on-alert action commands
- CVE-2026-68519
- Command injection bypass of action-template sanitizer via
cross-field shell-operator reconstruction - CVE-2026-68518
- Incomplete fix of CVE-2026-32608: action-template sanitizer is
bypassed by nested stat values - CVE-2026-62982
- REST API CORS Credentials Guard Uses Exact-Match Instead of
Membership Test - CVE-2026-68517
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 4.2.3:
- Fix ty unresolved-attribute warnings and add mypy back
- Update ruff to version 0.16.5
- Bump github/codeql-action
- Update readme
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Both S and UPSTREAM_CHECK_PYPI_PACKAGE are set to the default values, so
remove them.
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
The need for PYPI_PACKAGE_HASH was removed in 2016[1].
[1] meta-oe 7edad4def4 ("pypi: update the base pypi url to use the
package info without requiring the hash")
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Remove assignments to PYPI_PACKAGE where the value is the default value,
that is the recipe name with any python3- prefix removed.
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Remove redundant UPSTREAM_CHECK_PYPI_PACKAGE assignments of PYPI_PACKAGE,
which is the default value.
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Don't set PYPI_SRC_URI explicitly, instead of PYPI_PACKAGE so the correct
SRC_URI is generated.
Also remove the unused variable SRCNAME.
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 2.2.1:
- Fixed safety issues up to 2026-08-23.
- Development: Tolerate premature deletion of local release/start
branches.
- Docs: Migrated from our own support for generating summary tables
in the documentation to using autodocsumm to fix an import error
with Sphinx 9.
- Development: Added a GitHub Actions workflow named 'backport'
that creates a backport PR to the latest stable branch stable_M.N
when a PR labeled with the 'backport' label is merged.
- Development: Upgraded GitHub Actions plugins to versions that use
node.js 24.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>