10330 Commits
Author SHA1 Message Date
Leon Anavi ead8383ed9 python3-pymodbus: Upgrade 3.15.0 -> 3.16.1
Upgrade to release 3.16.1:

- Revert changes to serialTransport (allow no pyserial).

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-27 13:06:51 -07:00
Leon Anavi 3ffbaf1449 python3-pymisp: Upgrade 2.5.34.2 -> 2.5.34.4
Upgrade to release 2.5.34.4:

- Fix support for pure-magic-rs

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-27 13:06:51 -07:00
Leon Anavi 5a2fe87d4c python3-pyjwt: Upgrade 2.14.0 -> 2.15.1
Upgrade to release 2.15.1:

- Accept trailing Base64URL = padding when decoding JWS segments,
  so tokens issued by AWS ALB and similar systems verify instead of
  raising DecodeError: Invalid crypto padding. Non-alphabet junk
  such as !!!! remains rejected

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-27 13:06:50 -07:00
Leon Anavi 91e230a242 python3-pyflakes: Upgrade 3.4.0 -> 4.0.3
Upgrade to release 4.0.3:

- A few performance improvements
- Fix handling of unconventional NamedTuple / TypedDict argument 1.

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-27 13:06:50 -07:00
Leon Anavi d897784947 python3-pyee: Upgrade 14.0.0 -> 16.0.0
Upgrade to release 16.0.0:

- BREAKING: Use the Self type introduced in Python 3.11

Error handling improvements:

- Avoid logging callback failures when queued executor handlers
  are canceled

Documentation improvements:

- Add Args, Returns and Raises sections to public docstrings
- AGENTS.md file for AI coding assistant guidance

Local development changes:

- Type check with both pyright and mypy by default
- Remove tox test matrix, leaning on Github Actions

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-27 13:06:50 -07:00
Leon Anavi a0a06f02fe python3-pycurl: Upgrade 7.47.0 -> 7.48.0
Upgrade to release 7.48.0:

- Expose more CURLOPT_SSL_OPTIONS (patch by Scott Talbert)
- Read long description from README.rst instead of duplicating it
  in setup.py (patch by Scott Talbert)
- Fix test_redir_protocols_setopt (patch by Scott Talbert)
- Add CURL_LOCK_DATA_HSTS as a CurlShare option (patch by Scott
  Talbert)
- Add libpsl support to vcpkg installs for CI and wheel builds
  (patch by Scott Talbert)
- Configure nuget repo access as read-only from PRs (patch by Scott
  Talbert)
- Officially change project URL to https://pycurl.github.io/ (patch
  by Scott Talbert)
- Replace bare except clauses in examples with specific exception
  types (patch by Kotesh Kumar Yelamati)
- Add HTTP/3 support in libcurl wheel (patch by Will Noble)
- Fix segfault when calling duphandle() on a closed Curl handle
  (patch by Jorge Rocamora)
- Fix abort on non-text string arguments (patch by Jorge Rocamora)
- Fix CurlShare leak when close() detaches attached handles (patch
  by Jorge Rocamora)
- Document that views derived from the callback memoryview are not
  released (patch by Jorge Rocamora)
- Fix crash when duplicating a handle that uses set_ca_certs()
  (patch by Jorge Rocamora)
- Add CurlUrl object wrapping libcurl's URL API, with CURLOPT_CURLU
  support (patch by Jorge Rocamora)
- Fix callback exceptions being replaced by SystemError (patch by
  Jorge Rocamora)
- Fix test guard silently passing on real libcurl errors (patch by
  Jorge Rocamora)
- Update the docstring and manifest source lists (patch by Jorge
  Rocamora)
- Refuse pause() from a thread other than the performing one (patch
  by Jorge Rocamora)
- Add support for Python 3.15 (patch by Scott Talbert)
- Refuse integers for blob options instead of crashing (patch by
  Jorge Rocamora)
- Accept buffer objects for blob options (patch by Jorge Rocamora)
- Release all httppost encoded values and unset the form before
  MIMEPOST (patch by Jorge Rocamora)
- Reject callback return values that do not fit in an int (patch by
  Jorge Rocamora)
- Clear CurlMulti callbacks before deallocating attached handles
  (patch by Eric Buehl)
- Serve the test apps from a threaded WSGI server (patch by Jorge
  Rocamora)
- Add support for missing CURL options (patch by Khavish Anshudass
  Bhundoo)
- Add CURLOPT_SSL_EC_CURVES & CURLOPT_SSL_SIGNATURE_ALGORITHMS
  options (patch by Khavish Anshudass Bhundoo)
- Remove unused variable from do_curl_setopt_httppost (patch by
  Scott Talbert)
- test: silence WSGI test server access logging to stderr (patch by
  Scott Talbert)
- test: pin down oversized mime data_cb error assertions (patch by
  Scott Talbert)
- Give vendored OpenSSL a private OPENSSLDIR on Linux manylinux
  wheels (patch by Scott Talbert)
- Enable -Werror for the pycurl build in cibuildwheel without
  affecting vcpkg (patch by Scott Talbert)
- Handle libcurl options deprecated in 8.22.0 (patch by Scott
  Talbert)

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-27 13:06:50 -07:00
Leon Anavi 9140c19b13 python3-pycodestyle: Upgrade 2.14.0 -> 2.15.0
Upgrade to release 2.15.0:

- Improve performance of module_imports_on_top_of_file.
- Improve performance of python_3000_invalid_escape_sequence.
- Improve performacne of missing_whitespace_after_keyword.
- Drop EOL python 3.9.
- Add support for python 3.15.
- Fix loading unrelated configuration due to commonprefix.

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-27 13:06:49 -07:00
Leon Anavi ca708e91d2 python3-pycares: Upgrade 5.0.1 -> 5.2.1
Upgrade to release 5.2.1:

- Bump c-ares to version 1.34.9

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-27 13:06:49 -07:00
Leon Anavi 24f0b0461b python3-protobuf: Upgrade 6.33.6 -> 7.36.2
Upgrade to release 7.36.2:

- Detects single-crate cross-file symbol collisions and
  conditionally emits crate-root re-exports.
- Prepend the file module name to Rust type paths to use canonical
  paths.
- Expose generated per-file Rust proto modules as public.
- Include .c files in the source_files glob in upb/port/BUILD

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-27 13:06:49 -07:00
Leon Anavi c3f98a383d python3-portion: Upgrade 2.6.2 -> 2.6.3
Upgrade to release 2.6.3:

- IntervalDict.update and __init__ behave like dict.update when the
  provided intervals overlap (the last provided value wins).
- IntervalDict.pop accepts None as default value.
- Fix from_string accepting prefix (re.match) instead of full value
  (re.fullmatch) for infinities.
- Documentation of iterate explicitly states that base should be
  side-effect-free.

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-27 13:06:48 -07:00
Leon Anavi 0c3a05ea79 python3-parse: Upgrade 1.22.3 -> 1.22.4
Upgrade to release 1.22.4:

- Account for the capture groups %z adds to the generated pattern
- Reject out-of-range timezone minutes
- Document the extra_types conversion mapping
- Fix case-sensitive am/pm and Zulu conversion under
  case-insensitive matching
- Resolve year-less strftime formats against the current year

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-27 13:03:41 -07:00
Leon Anavi 97fa9d4241 python3-icu: Upgrade 2.16.2 -> 2.17
Upgrade to release 2.17:

- Added support for DateTimePatternGenerator.getDefaultHourCycle()
  and enums
- Added missing wrappers for UDateFormatField
- Added support for ICU 79.1

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-27 08:28:46 -07:00
Leon Anavi 8f4b06a965 python3-huey: Upgrade 3.4.0 -> 3.5.3
Upgrade to release 3.5.3:

- Close the storage connection before forking process workers, this
  just simplifies things.
- Run the callback of an empty chord with an empty results list.
  Previously it was never enqueued.

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-27 08:28:46 -07:00
Leon Anavi ee6cab0c44 python3-grpcio-reflection: Upgrade 1.84.1 -> 1.85.0
Upgrade to release 1.85.0:

- [AIO] Fixed data race in PollerCompletionQueue.
- Fix SyncServicerContext abort not raising exception.
- Fixed channelz module leak.
- Fixed CSDS memory leak.
- Unpin Cython dependency for source builds.

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-27 08:28:46 -07:00
Leon Anavi 757f4d59b2 python3-grpcio-channelz: Upgrade 1.84.1 -> 1.85.0
Upgrade to release 1.85.0:

- [AIO] Fixed data race in PollerCompletionQueue.
- Fix SyncServicerContext abort not raising exception.
- Fixed channelz module leak.
- Fixed CSDS memory leak.
- Unpin Cython dependency for source builds.

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-27 08:28:46 -07:00
Leon Anavi 18f695a62a python3-cmd2: Upgrade 4.3.0 -> 4.3.1
Upgrade to release 4.3.1:

- Fix type-check failures with ty 0.0.87
- Exclude .DS_Store from release
- Route annotated command help through the application output
  stream
- Add example embedding a cmd2 app in a Textual app with
  textual-tty
- Add example embedding a cmd2 app in a Textual app with
  textual-tty

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-27 08:28:46 -07:00
Leon Anavi cef544b5d3 python3-cachetools: Upgrade 7.2.4 -> 7.2.5
Upgrade to release 7.2.5:

- Fix @cachedmethod with condition for decorated methods taking a
  pending keyword argument (broken since v7.0.0).
- Fix pickling and deep-copying of instances using @cachedmethod
  (broken since v7.0.0).
- Fix calling @cachedmethod decorated methods through the class
  with the receiver (self) passed as a keyword argument (broken
  since v7.2.4).
- Various documentation improvements.

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-27 08:28:46 -07:00
Leon Anavi bcee2a3157 python3-bitstruct: Upgrade 8.23.0 -> 8.24.0
Upgrade to release 8.24.0:

- Add Python 3.15 to test matrix + freethreaded

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-27 08:28:45 -07:00
Leon Anavi 703e088d33 python3-asgiref: Upgrade 3.12.1 -> 3.13.0
Upgrade to release 3.13.0:

- It is now possible to nest ThreadSensitiveContext by providing an
  explicit executor for thread-sensitive tasks. This enables moving
  a block of such work away from the parent context's shared worker.

  The provided executor must run  work sequentially and on a single
  thread, as per ThreadPoolExecutor(max_workers=1), and the calling
  code is responsible for managing the executor's lifecycle.

- Local attribute access is now 2-3x faster. Local(...) now uses one
  of two internal specialisations, selected by thread_critical,
  instead of checking the mode on every access.

  As a result Local is now marked @final and raises TypeError if
  subclassed. Subclassing was never supported, and could not have
  worked correctly with the specialised implementations.

- asgiref.timeout.timeout is deprecated, and will be removed in a
  future release. Move to use asyncio.timeout() instead.

- Added support for Python 3.15.

- Dropped support for EOL Python 3.10.

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-27 08:28:45 -07:00
Khem Raj 75130cb9c0 python3-cchardet: Use python_setuptools_build_meta
pyproject.toml specifies setuptools.build_meta as the build backend, so
inherit python_setuptools_build_meta instead of setuptools3.

Fixes:

QA Issue: inherits setuptools3 but has pyproject.toml specifying backend
setuptools.build_meta, use the correct class [pep517-backend]

Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-27 08:28:45 -07:00
Ankur Tyagi 2f5478b91f python3-tzlocal: upgrade 5.4.4 -> 5.4.5
- Recognize timezone file names with multiple slashes in the TZ environment
  variable.
- Use HTTPS in place of FTP to retrieve tzdata archive.

Signed-off-by: Ankur Tyagi <ankur.tyagi85@gmail.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-26 17:04:31 -07:00
Ross Burton 0bf3c0c072 python3-importlib-metadata: clean up recipe
S is the default, and the dependencies can be consolidated.

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-26 17:04:30 -07:00
Khem Raj 1f3625ff40 python3-engineio: Add missing runtime dependencies
simple-websocket is the only hard dependency in pyproject.toml, and the
default threading async mode uses it for WebSocket connections. The
threading driver and the client also import queue (python3-threading),
and the client imports ssl (python3-io).

Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-26 17:04:30 -07:00
Khem Raj 618cd90b7e python3-simple-websocket: Add recipe
Simple WebSocket server and client for Python, built on wsproto.

Backport the upstream conversion of the async tests to pytest-asyncio;
the 1.1.0 tests call asyncio.get_event_loop(), which fails on Python
3.14 when there is no current event loop. Add it to the fast ptest list;
all 47 tests pass on qemuriscv64.

AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-26 17:04:30 -07:00
Khem Raj 24f3c91e5f python3-ipy: upgrade 1.01 -> 1.2
Changelog:
 * Drop Python 2 support; require Python 3.5+
 * Remove the module-level names INT_TYPES, STR_TYPES and xrange
 * Add inline type annotations; IPy is now a package that ships py.typed
 * Fix IP.broadcast() returning an IPv4 address for IPv6 networks
 * Fix IP.reverseName() for 0.0.0.0/0
 * Fix the flaky IPSet fuzz test

The fuzz test fix stops the intermittent ptest failure in
TestIPSet.testRandomContains, whose oracle ignored that IPSet merges
adjacent prefixes into a larger one.

The sdist is now named ipy-1.2.tar.gz, so drop PYPI_PACKAGE_SDIST.

AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-26 17:04:29 -07:00
Khem Raj 34b647516d python3-pyzmq: Skip timing sensitive test_retry_poll in ptest
The test expects a message sent from another thread 0.2s later to arrive
within a 0.5s poll window, which a loaded test host misses. Upstream
marks it flaky(reruns=3), but pytest-rerunfailures is not available.
Adjust the musl sed to the new end of the -k expression.

AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-25 14:41:37 -07:00
Khem Raj ef9c0bda6c python3-fsspec: Skip network test in ptest
test_async_cat_file_ranges fetches a file from a public S3 bucket, which
fails without DNS and internet access on the target, as in sysvinit
qemu images where resolv.conf is empty.

AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-25 14:41:37 -07:00
Leon Anavi 23a17447f1 python3-pikepdf: Upgrade 10.13.0.post1 -> 10.17.0
Upgrade to release 10.17.0:

- Added {class}pikepdf.ObjectSet, which records the objects that a
  walk of a PDF's object graph has already visited. Objects in a
  PDF are shared and may refer back to their ancestors, so a search
  that only limits its depth can take exponential time on quite
  ordinary files. ObjectSet.add() reports whether an object is new,
  and tells apart direct objects and objects of different Pdf,
  which a set of objgen cannot. See {ref}walking-object-graphs.
- Added {meth}pikepdf.Object.is_same_object_as, which tests whether
  two references lead to the same object. Neither is, == nor
  comparing objgen answers this reliably.
- Added {meth}pikepdf.Pdf.content_scopes and
  {meth}pikepdf.Page.content_scopes, which iterate over every
  content stream that pages can draw, each with the resource
  dictionary it uses: the page itself, form XObjects, annotation
  appearance streams, tiling patterns, Type 3 glyph procedures and
  soft masks, however they are nested or shared. This is the way to
  find every font, image or colour space a document uses. Each
  {class}pikepdf.ContentScope is reported once for the document;
  pages= selects pages and kinds= selects what is reported.
- Added {meth}pikepdf.Page.get_resources, which returns the
  resources of a page or form XObject for reading. Unlike
  {attr}pikepdf.Page.resources, it finds resources inherited from
  the page tree, does not create an empty dictionary when there are
  none, and returns None instead of raising when /Resources is
  malformed.
- Fixed comparing two objects with == taking exponential time when
  the objects being compared share children, such as the same file
  opened twice. Each pair of objects is now compared once.
- Fixed {meth}pikepdf.Pdf.add_pages_from hanging on a page with an
  action whose /Next actions are shared or form a loop.
- Fixed {meth}pikepdf.Pdf.open_outline reading only the first item
  at each level of an outline whose items are direct objects. Such
  items are now made indirect when the outline is saved, as the PDF
  specification requires.
- Reading a stream that will not decode now raises
  {exc}~pikepdf.exceptions.DataDecodingError with the reason,
  whether the stream's data was read from a file or set from
  memory. Previously a stream read from a file raised a
  {exc}~pikepdf.exceptions.PdfError that said only "read_bytes
  called on unfilterable stream", and the reason was available only
  from {meth}pikepdf.Pdf.get_warnings. DataDecodingError is a
  PdfError, so existing handlers are unaffected.
- An exception raised by a JBIG2 decoder now reaches the caller of
  {meth}pikepdf.PdfImage.as_pil_image,
  {meth}pikepdf.PdfImage.extract_to and
  {meth}pikepdf.PdfImage.read_bytes unchanged, with its own type,
  message and traceback. Previously, for an image read from a file,
  it was replaced by a generic DataDecodingError or PdfError.
- Added {exc}~pikepdf.exceptions.QpdfRuntimeError, raised for
  errors from qpdf that pikepdf has no more specific exception for.
  These were previously raised as a bare RuntimeError, which except
  pikepdf.PikepdfError did not catch. The new exception derives
  from both {exc}~pikepdf.exceptions.PikepdfError and RuntimeError,
  so handlers written for RuntimeError still work.
- The empty name / is now supported. The PDF 1.7 and 2.0
  specifications define a lone slash as a valid name made of zero
  characters, but pikepdf.Name('/') raised ValueError, and
  dictionaries refused / as a key. This broke
  {meth}pikepdf.Pdf.add_pages_from on files with an empty-named
  destination such as /Dests << / 3 0 R >>. Such names can now be
  created, used as dictionary keys, and migrated during page
  copying. bool(Name('/')) is False, like an empty
  {class}pikepdf.String. Name(''), which lacks the leading slash,
  is still rejected. PDF/A does not forbid empty names, and the
  PDF/A validator accepts them.
- AcroFormField.get_inheritable_field_value_as_name() now returns a
  {class}pikepdf.Name, as documented, instead of a str. When the
  value is missing or not a name, it returns the empty name
  Name('/'), which is falsy, instead of ''. Comparisons such as ==
  '/Tx' are unaffected.
- Fixed an out-of-bounds read when opening a PDF from a Python file
  object whose readinto() reports more bytes than were requested.
  This now raises ValueError, as writing to such a stream already
  did. Non-blocking streams, whose readinto() returns None, now
  raise ValueError instead of hanging.
- Fixed building from source on PyPy, which failed to compile since
  v10.0. PyPy now reads Python file objects through readinto(),
  like CPython, instead of copying the result of read().
- {func}pikepdf.open reads directly from the file descriptor when
  given a filename, instead of calling the seek() and readinto()
  methods of a Python file object for every read. Opening and
  reading a large file with many objects is about four to five
  times faster, matching the speed of memory mapping
  (access_mode=AccessMode.mmap). Streams passed to
  {func}pikepdf.open, including plain file objects, are read
  through their methods as before.
- Documented {class}pikepdf.TokenFilter with worked examples that
  shorten numbers and convert RGB colors to grayscale, and
  explained when to use a token filter instead of
  {func}pikepdf.parse_content_stream. The API reference no longer
  says that the parser should not be used to edit content streams.
  The TokenFilter.handle_token documentation now says correctly
  that exceptions it raises propagate to the caller.

Extend RDEPENDS with the missing runtime dependencies
python3-fonttools and python3-jsonschema which are required
to import pikepdf.pdfa.

Install pdfa_differential.py to pass the tests from
test_pdfa_differential.py. Fixes:

E   ModuleNotFoundError: No module named 'pdfa_differential'

This work was sponsored by GOVCERT.LU.

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2026-10-24 09:24:02 -07:00
Khem Raj 6c7945c390 python3-fonttools: Extend to native and nativesdk variants
There are other packages python3-pikepdf which need them

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2026-10-24 09:24:02 -07:00
Leon Anavi 70b14fc7d9 python3-importlib-metadata: Upgrade 9.0.1 -> 9.1.0
Upgrade to release 9.1.0:

- Removed support for Python 3.10, now end-of-life.

- Where a path supplies more than one metadata directory for a
  distribution, as an interrupted or unclean upgrade may leave
  behind, discovery now prefers the greater one by reverse
  lexicographic ordering of the directory names, so the stale
  metadata no longer shadows the version in use.

- A missing required metadata field (Name or Version) now raises a
  KeyError that names the field and identifies the distribution,
  which PathDistribution renders as its metadata path.

- Restored lazy validation of EntryPoint.value, deferring the
  ValueError for an invalid value until a component is accessed or
  the entry point is loaded, so one malformed entry point no longer
  prevents entry points in other groups from being selected.

- importlib_metadata.diagnose no longer crashes on a metadata
  directory that has no metadata file or whose metadata declares no
  name. Such distributions are now reported by their location.

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-23 10:48:02 -07:00
Leon Anavi a6e36b5ae6 python3-imgtool: Upgrade 2.4.0 -> 2.5.0
Upgrade to release 2.5.0:

- imgtool now requires Python 3.8 or later. This also fixes key
  export commands, which failed on Python 3.8 and 3.9.

- Added imgtool keyinfo, which reports whether a PEM file holds a
  key pair or only a public key. With --require, it fails if the
  kind does not match, which build systems can use as a check.

- Added --name-suffix to imgtool getpub and imgtool getpubhash,
  which appends a suffix to the generated C or Rust symbol names so
  that several keys can be embedded in one image.

- Public-key-only PEM files are now supported by imgtool getpub,
  imgtool getpubhash and imgtool verify. imgtool sign given a
  public-only PEM now fails with a clear error.

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-23 10:48:01 -07:00
Leon Anavi 8b17e33116 python3-httpx2: Upgrade 2.15.1 -> 2.16.0
Upgrade to release 2.16.0:

Changed:

- Look up only the cookie domains that match the request host, and
  skip the expired cookie sweep until a cookie is due. With 1,000
  cookies across 500 domains, building the Cookie header is about
  18 times faster. Cookies from different domains are now sent from
  the least to the most specific domain.

Fixed:

- Reuse the client cookie jar instead of copying it on every
  request and redirect. A custom policy set with
  client.cookies.jar.set_policy() now applies to outgoing requests

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-23 10:48:01 -07:00
Leon Anavi 73aeb65880 python3-coverage: Upgrade 7.16.2 -> 7.17.0
Upgrade to release 7.17.0:

- Dropped support for Python 3.10.
- Binary wheels are now provided for iOS and Android. This allows
  the use of the optimized C tracer on mobile platforms.
- Fix: three or more levels of nested with statements could make a
  with line look like a branch with an exit that can never happen.
  Using the sys.monitoring core, these phantom branches were
  reported as partial. Other cores hid the problem but still
  counted the phantom branches in the total.
- Fix: a comment or string that merely mentioned if True: or while
  True: could mark its line as a branch that is known to be
  partial, so a branch that never ran was reported as taken. These
  built-in patterns now only match at the start of the statement.
- Fix: region detection missed functions defined in unusual places,
  such as else and except clauses. This is now fixed.
- Fix: recent versions of the lcov tool complain if the same
  function name appears more than once in a report. Python can have
  multiple same-named functions in a few ways, for example,
  getters/setters or conditionally defined functions. These are now
  disambiguated by adding a @<line number> suffix to the function
  name.
- Fix: The "Can't combine statement coverage data with branch data"
  error now names the two data files it couldn’t combine. The error
  description in the docs now lists common causes and how to find
  the process that wrote the file.
- Fix: at coverage totals close to 0 or 100, the XML report could
  get incorrect line-rate values like 8.333e-05 or 1. This is now
  fixed.
- Fix: a parallel data file saved more than once kept the hash of
  its first save in its file name. Combining could then skip it as
  a duplicate of another file that had the same data at that point,
  and delete it, losing the data recorded after the first save.
  Each save now updates the hash. This had been a problem since
  7.13.1.
- Fixes for obscure but legal file names:
  - File names (and plugin names) can contain control characters,
    which are legal in POSIX paths but unsafe in reports: in XML
    1.0 they make the document non-well-formed, and in a terminal
    they act as escape sequences (colors, title/clipboard
    sequences, cursor moves that forge output). Now the XML report,
    the text and Markdown summary reports, and coverage debug data
    replace non-printable characters in names. Printable names are
    unchanged.
  - A file pattern (from include, omit, or a [paths] alias)
    containing a newline sent the glob-to-regex translation into an
    infinite loop, hanging the process. Newlines in patterns are
    now handled like any other character.
- Fixes in the implementation of the C tracer:
  - If a plugin’s dynamic_source_filename method raised an
    exception, lines in that function could be recorded as
    belonging to a different file. Also fixed some minor memory
    leaks in the C tracer.
  - The refcount of None was mismanaged during function calls,
    including comprehensions. This was unlikely to cause an actual
    problem, but is now fixed. Thanks, Andrew Dalke.
  - The C tracer held borrowed references to dictionary values,
    which was unsafe on free-threaded Python. Now it takes its own
    references.
  - An internal error while recording a new file could be reported
    as a confusing SystemError instead of the actual exception.
- Performance: the text summary report (coverage report) held on to
  every file’s parsed source until it finished, so its memory use
  grew with the size of the project: ten times or more what 7.14
  used on large projects. Now it keeps only what it needs to print.
- Performance: HTML reports should be about 5% faster to produce.
- Kept the political banner in the README.

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-23 10:48:01 -07:00
Leon Anavi 6a79ef1cfe python3-brotli: Upgrade 1.2.0 -> 1.2.1
Upgrade to release 1.2.1:

- CVE-2026-111497: out-of-bounds write permits remote code execution

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-23 10:48:01 -07:00
Leon Anavi ac20bdb6f1 python3-autobahn: Upgrade 26.10.1 -> 26.10.2
Upgrade to release 26.10.2:

- Fix reading the TLS peer certificate
  (TransportDetails.peer_cert) with pyOpenSSL 26.2.0 and later:
  autobahn.twisted.util.extract_peer_certificate() raised
  AttributeError: 'X509' object has no attribute 'get_extension'
  for every certificate with extensions, as pyOpenSSL removed its
  X.509 extension API (and deprecates the rest of its X509 API).
  The certificate is now read with cryptography, in the new
  backend-neutral autobahn.util.peer_certificate_details(), which
  also never raises on certificate content it cannot parse (it is
  peer data, read before authentication): extensions, or a subject
  or issuer, that cannot be read are left empty. The peer_cert dict
  keeps its keys and formats, except: ⚠ extensions[].value was
  OpenSSL's text; a subject or issuer alternative name is still
  given as OpenSSL prints it (DNS:localhost, IP Address:127.0.0.1),
  other extensions now as cryptography prints them; and
  signature_algorithm is ed25519 instead of ED25519 for Ed25519
  certificates

- Fix the TLS peer certificate never being available on Twisted
  WebSocket and RawSocket connections: it was read when the TCP
  connection was made, before the TLS handshake, and so was always
  None. It is now read when the TLS handshake is complete, together
  with the TLS channel ID. With this, TLS client certificate
  authentication (Crossbar.io authmethod tls, and dynamic
  authenticators reading transport.peer_cert) works again

- Fix asyncio: fill TransportDetails.peer_cert (it was always
  None), and treat a TLS server connection without a client
  certificate as secure, with a TLS channel ID: is_secure was
  derived from the peer certificate, so WAMP-cryptosign with
  channel binding failed on asyncio servers

- Behaviour change - the TLS channel ID tls-unique on Twisted now
  follows RFC 5929 (the first TLS Finished message of the
  handshake, in a full handshake the client's), as Python's ssl
  module, and so autobahn on asyncio, already did. Twisted used the
  server's Finished message, so WAMP-cryptosign with channel
  binding failed between Twisted and asyncio peers over WebSocket,
  and between Twisted RawSocket peers (whose protocols did not set
  is_server, so the client side used the wrong message). Twisted
  peers on autobahn 26.10.1 or older and on 26.10.2 no longer agree
  on the channel ID over WebSocket: upgrade both sides of
  connections that use channel binding (#2014) Work around a PyPy
  bug: PyPy's ssl module (up to at least PyPy 7.3.23) returns the
  server's TLS Finished message from
  get_channel_binding("tls-unique") instead of the first (the
  client's), so autobahn on asyncio on PyPy disagreed with all
  other peers on the channel ID. The new autobahn.util.tls_unique()
  uses PyPy's own tls_unique_cb() on PyPy, which returns the right
  message

- TransportDetails.is_server is now set on Twisted RawSocket and
  asyncio WebSocket connections (it was None)

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-23 10:48:01 -07:00
Leon Anavi 7a902c3dab python3-alembic: Upgrade 1.20.0 -> 1.20.1
Upgrade to release 1.20.1:

bug:

- [bug] [autogenerate] Fixed issue where a table or column comment
  set to an empty string would cause autogenerate to detect a
  comment change on every run.  As most backends, including
  PostgreSQL, MySQL, MariaDB and Oracle, don't store an empty
  string comment distinctly from no comment, autogenerate now
  treats an empty string comment the same as None when comparing
  comments. Additionally, an empty string comment is now rendered
  in op.create_table() and op.add_column() directives, where it was
  previously omitted.  Pull request courtesy vineoy.

- [bug] [autogenerate] [postgresql] Fixed rendering of the
  PostgreSQL ~sqlalchemy.dialects.postgresql.DOMAIN type in
  autogenerated migration scripts.  Previously the type was
  rendered using repr(), which omitted the check, not_null,
  default, collation, constraint_name, schema and create_type
  arguments and did not apply a dialect prefix to the underlying
  data type.  The full set of arguments is now rendered and the
  underlying data type is rendered using the standard
  type-rendering logic.  Pull request courtesy Sebastian Cao.

- [bug] [autogenerate] [postgresql] Fixed false-positive "Computed
  default cannot be modified" warning emitted during autogenerate
  when comparing PostgreSQL Computed columns whose reflected SQL
  expression includes type cast specifiers such as ::regconfig or
  ::text, which PostgreSQL adds to the expression as stored.  These
  cast specifiers are now stripped before comparison so that
  otherwise equivalent expressions no longer trigger the warning.
  Pull request courtesy Sebastian Cao.

- [bug] [autogenerate] [postgresql] Fixed issue where autogenerate
  would detect an unchanged PostgreSQL expression-based index as
  modified when the expression included type casts, such as a cast
  to a type with a length or precision, a nested cast, or a cast
  followed by a DESC modifier.

- [bug] [postgresql] Fixed bug where Operations.alter_column()
  against a PostgreSQL identity column would render an incomplete,
  invalid ALTER TABLE ... ALTER COLUMN statement with no clause at
  all when existing_server_default was omitted, even if there were
  no existing server default.  Pull request courtesy Riti Grover.

- [bug] [environment] Fixed issue where a third party plugin
  published using the alembic.plugins entrypoint, configured to
  refer to a plugin module as documented at
  alembic.plugins.toplevel, would cause import alembic to fail with
  a TypeError, as the loaded module was erroneously iterated rather
  than being set up directly. An entrypoint that refers to a
  collection of modules, the form which inadvertently worked
  previously, continues to be accepted but now emits a deprecation
  warning.

- [bug] [autogenerate] Fixed issue where dialect-specific keyword
  arguments on a ForeignKeyConstraint, ForeignKey or
  CheckConstraint, such as postgresql_not_valid, were not rendered
  for the constraints that are part of an autogenerated
  Operations.create_table() directive, nor for an autogenerated
  Operations.create_check_constraint() directive.  The
  Operations.create_table() case additionally requires SQLAlchemy
  2.0.55 / 2.1.5 or greater.

- [bug] [autogenerate] Fixed issue where, when using SQLAlchemy
  2.1, the CHECK constraint generated by a type such as
  ~sqlalchemy.types.Enum or ~sqlalchemy.types.Boolean with
  create_constraint=True would be rendered by autogenerate as
  explicit sa.CheckConstraint() entries within op.create_table(),
  in addition to the type itself which already produces that
  constraint, leading to a duplicate constraint error when the
  migration is run.

- [bug] [operations] Fixed issue where a CreateTableOp produced
  from an existing ~sqlalchemy.schema.Table using
  CreateTableOp.from_table() would emit the CHECK constraint
  generated by a type such as ~sqlalchemy.types.Enum or
  ~sqlalchemy.types.Boolean with create_constraint=True twice in
  the resulting CREATE TABLE statement when invoked directly.

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-23 10:48:01 -07:00
Ross Burton c3dc1f2b33 python3-dbus-fast: upgrade 4.0.0 -> 5.2.0
Drop the Cython version patch, as upstream has a wider range now.

async-timeout was removed as an dependency upstream in v1.90.0.

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-23 10:48:01 -07:00
Peter Marko e94f799ccc python3-grpcio-tools: upgrade 1.76.0 -> 1.84.1
Upgrade to addresses eMudhra certificates issue.
See https://emudhra.we-have-a-problem.com/

Sync all grpc recipes to the same version.

Removed obsolete patches:
* The compiler-argument fix is already handled upstream using
  shlex.split()
* Bundled protobuf now restricts musttail to AArch64 and x86-64, so the
  MIPS exclusion patch is unnecessary.

License-Update: switched from license to license expression
orig: License: Apache License 2.0
New:  License-Expression: Apache-2.0

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-23 08:54:06 -07:00
Peter Marko 01a487f06c python3-grpcio-reflection: upgrade 1.84.0 -> 1.84.1
Upgrade to addresses eMudhra certificates issue.
See https://emudhra.we-have-a-problem.com/

Sync all grpc recipes to the same version.

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-23 08:54:06 -07:00
Peter Marko 44bd91716b python3-grpcio-channelz: upgrade 1.84.0 -> 1.84.1
Upgrade to addresses eMudhra certificates issue.
See https://emudhra.we-have-a-problem.com/

Sync all grpc recipes to the same version.

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-23 08:54:06 -07:00
Peter Marko 049f4b32b5 python3-grpcio: upgrade 1.78.0 -> 1.84.1
Upgrade to addresses eMudhra certificates issue.
See https://emudhra.we-have-a-problem.com/

License-Update: clarified which license applies to which file
* https://github.com/grpc/grpc/commit/fb53717dfa6b264e7f930bb5e9a7e5c86a31ed9e

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-23 08:54:06 -07:00
Ross Burton 58b59c7c86 python3-ruff: build with maturin
ruff is built with maturin, so inherit the python_maturin class.

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-23 08:54:05 -07:00
Khem Raj 6241c7a96c python3-ruff: Fix build on targets without 64-bit atomics
std only provides AtomicU64 on targets with 64-bit atomics, so ruff
fails to build for riscv32:

  error[E0432]: unresolved import `std::sync::atomic::AtomicU64`
   --> crates/ruff/src/cache.rs:7:25

Add a patch that uses portable-atomic's AtomicU64 for the cache
timestamp on such targets, archived in the same on-disk format.

AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-23 08:54:03 -07:00
Khem Raj 98867b96b8 python3-ruff: Upgrade 0.16.8 -> 0.17.1
Regenerate python3-ruff-crates.inc with 'bitbake -c update_crates'.

AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-23 08:54:03 -07:00
Khem Raj cd1bf9ee36 python3-fsspec: Fix runtime dependencies and install conftest for ptests
fsspec imports ctypes, asyncio, json, logging and threading, which are
not in python3-core, without ctypes "import fsspec" fails, which also
broke the python3-pyyaml-include ptests.

Install the top-level fsspec/conftest.py into the ptest dir, it
provides the "m" fixture and the autouse instance cache cleaner, and
without it most tests error out or fail.

Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-23 08:54:00 -07:00
Khem Raj 9379ce65ea python3-pandas: Add missing runtime dependency on python3-zoneinfo
pandas 3 imports zoneinfo, so without it "import pandas" fails with
ModuleNotFoundError, and later imports in the same interpreter fail on
the partially initialized module.

Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-23 08:54:00 -07:00
Khem Raj b2f9904639 python3-filelock: Install docs/how-to.rst for ptests
test_documented_cache_lock_name reads docs/how-to.rst relative to the
tests dir and fails with FileNotFoundError when it is not installed.

Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-23 08:53:59 -07:00
Khem Raj 47e9b831af python3-anyio: Add missing runtime dependency on typing-extensions
anyio 4.15 imports typing_extensions on python < 3.15, so importing
anyio on target fails with ModuleNotFoundError. This broke the
a2wsgi, pytest-httpx and uvicorn ptests.

Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-23 08:53:59 -07:00
Leon Anavi b31ebd01b9 python3-fonttools: Add recipe
Add a recipe for fonttools which provides tools to manipulate font
files. Release 4.67.0 brings:

- [varLib] Support decreasing design-space axis mappings, via a new
  keyword-only allow_decreasing argument to models.normalizeValue.
- [designspaceLib] Allow partial DesignSpace v5 axis subsets:
  omitted range attributes on an <axis-subset> are taken from the
  parent axis, as the spec says.
- [designspaceLib] Fix DesignSpaceDocument.normalize() for mapped
  axes: axis bounds and rule conditions are now normalized from
  their original values.
- [designspaceLib] splitInterpolable and splitVariableFonts now
  warn when a source or instance is dropped because it lies outside
  the document's own axes, instead of silently discarding it.
- [varLib.instancer] Add support for instancing variable COLRv1
  fonts.
- [varLib.instancer] Apply VVAR vertical-origin deltas to VORG, and
  use OpenType rounding for instanced advances and vertical
  origins.
- [varLib.instancer] Keep a universal FeatureVariations record when
  pinning removes its last condition but other axes remain.
- [varLib.instancer] Preserve ppem Device corrections in GDEF,
  BASE, GPOS and JSTF instead of asserting on them.
- [varLib.instancer] Allow requesting an axis's original range on
  VARC fonts.
- [varLib.instancer, subset] Fold, remove or remap MATH
  VariationIndex devices when instancing, subsetting the GDEF store
  or optimizing it.
- [varLib] Raise ValueError: Missing required table fvar from
  varLib.mutator and the instancer CLI on a static font, instead of
  a bare KeyError.
- [featureVars] When adding rvrn, also shift lookup indices inside
  existing FeatureVariations. Handle null ConditionSet and
  FeatureTableSubstitution offsets when building, subsetting and
  instancing. Keep FeatureTableSubstitution records sorted after
  merging new ones into an existing record.
- [ttLib] Fix FeatureParams (size, ssXX, cvXX) in FeatureVariations
  alternate feature tables, which failed to compile and round-trip.
- [ttLib] Fully decode lazily loaded ligatures, SinglePos and
  PairPos arrays during recursive decompilation, so reorderGlyphs()
  on a lazy font no longer corrupts or asserts on them.
- [VARC] Update the variation-store binary format to follow
  harfbuzz/boring-expansion-spec#175:
  SparseVarRegionList.RegionCount is uint32, sparse axes use
  Offset32 and MultiVarData items are stored in an INDEX. VARC
  fonts built with earlier fontTools versions must be rebuilt.
- [VARC] Several fixes: derive component conditions from
  conditionIndex, set the implicit scaleY when importing XML,
  report the font's current coordinates for components that reset
  unspecified axes, and keep inherited coordinates when drawing
  CFF2 VARC components.
- [varLib] buildMultiVarData accepts flattened per-region vector
  tuples.
- [otConverters] Bounds-check CFF2 INDEX count and offSize on read,
  raising TTLibError instead of allocating huge lazy lists.
- [ttLib] Handle empty packed deltas when OPTIMIZE_FONT_SPEED is
  set.
- [scaleUpem] Scale per-glyph VORG origins; fix VARC scaling for
  static fonts and condition variations; don't mutate the shared
  default CFF FontMatrix.
- [cmap] Fix format 2 compilation when all codes are single-byte or
  all single-byte codes map to .notdef. Formats 2 and 4 now reject
  glyph IDs above 65535 instead of wrapping them. Split format 14
  default UVS ranges longer than 256 codepoints. Empty format 12
  and 13 subtables round-trip.
- [glyf] Use unsigned instruction lengths, so programs of
  32768-65535 bytes compile and decompile correctly. Keep
  instructions in zero-contour glyphs.
- [pens] Fix cubic off-curve detection in TTGlyphPointPen across
  contour starts. Glyph.drawPoints() now raises NotImplementedError
  for an all-off-curve cubic contour, which the point pen protocol
  cannot express. RoundingPen passes the all-off-curve None
  sentinel through.
- [CFF2] Preserve operands when a blend has zero regions.
- [cffLib] Read CFF font names as Latin-1, matching how they are
  written. Deleting a CFF dict attribute now actually removes it.
- [CFF2ToCFF] Fix conversion of fonts with local subroutines. A
  CFF2 table with a single FontDict is now converted to a
  name-keyed CFF font that keeps its glyph names.
- [subset] Handle a null GDEF variation store.
- [merge] Support merging fonts that both have a MATH table.
- [feaLib] Reject the same mark class used twice in one anchor
  list. Don't crash on value records whose devices are all NULL.
  Pad a short OS/2 Vendor with spaces.
- [feaLib] Raise FeatureLibError with a location, instead of a bare
  Python error, for: a BASE script list without a matching tag
  list, a UnicodeRange bit outside 0-127, a name string that cannot
  be decoded, a STAT axis location with no or too many values, and
  a non-ASCII OS/2 Vendor.
- [name] Fix the BCP 47 tags of some Mac and Windows language IDs,
  e.g. es was mapped to Mac Estonian. getDebugName prefers the
  Windows English name over the Mac one.
- [post] Don't crash on a format 2.0 table with numGlyphs set to 0.
- [VDMX] Recompute numRecs and numRatios when compiling.
- [Silf] Fix compiling a Silf table that was decompiled from
  binary.
- [woff2] Preserve minorVersion when copying flavor data.
- [ttGlyphSet] Compute glyph width lazily for glyf variable fonts
  without HVAR, so .width is correct before drawing.
- [varLib.interpolatable] Respect designspace source layers; fix
  --json output with SciPy.
- [misc.psLib] Fix tokenizing of escaped parentheses in PostScript
  strings.
- [svgLib] Raise ValueError instead of IndexError on a truncated
  path command.
- [misc.transform] Preserve the direction of the remaining axis
  when decomposing a transform whose first column is zero.
- [misc.textTools] Tag.__ne__ returns NotImplemented for
  unsupported types.
- [misc.dictTools] hashdict rejects in-place union (|=).
- [misc.xmlReader] Close owned input streams when parsing fails.
- [misc.filesystem] WriteZipFS.close() can be called more than
  once.
- [EBDT] Keep EBDT/CBDT glyph metrics after probing a missing
  attribute.

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>
2026-10-23 07:55:30 -07:00
Leon Anavi d2b8391d72 python3-lazy-object-proxy: Upgrade 1.12.0 -> 1.13.0
Upgrade to release 1.13.0:

- Document explicit proxy evaluation and identity checks with None.
- Fixed some broken tests on Python 3.15.
- Added configuration for Windows ARM64 wheels.
- Added Python 3.15 wheels.
- Dropped support for EOL Python 3.10 and 3.9.
- Dropped wheel building for Python 3.13 free-threading
  (experimental and unsupported by cibuildwheel anymore; details).
- Fixed typo in __annotations__ (basically it was broken).

License-Update: Copyright years updated

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-10-21 17:07:42 -07:00