Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package micropython-lib for openSUSE:Factory
checked in at 2026-10-14 18:47:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/micropython-lib (Old)
and /work/SRC/openSUSE:Factory/.micropython-lib.new.3698736 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "micropython-lib"
Wed Oct 14 18:47:46 2026 rev:8 rq:1384772 version:1.29.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/micropython-lib/micropython-lib.changes
2026-04-28 12:02:06.215797998 +0200
+++
/work/SRC/openSUSE:Factory/.micropython-lib.new.3698736/micropython-lib.changes
2026-10-14 18:47:57.611187465 +0200
@@ -1,0 +2,79 @@
+Wed Oct 14 10:42:49 UTC 2026 - Dominik Heidler <[email protected]>
+
+- Update to 1.29.0
+ * aiorepl: Optimize sys.stdout.write calls.
+ * aiorepl: Fix Enter key handling in raw terminal mode.
+ * uaiohttpclient: Add basic test for uaiohttpclient.request.
+ * uaiohttpclient: Use "utf8" encoding instead of "latin-1".
+ * requests: Reuse lowerl for Content-Length matching.
+ * requests: Match response header names case-insensitively.
+ * requests: Document chunked response support.
+ * requests: Test chunked response decoding.
+ * requests: Add chunked response body support.
+ * requests: Add tests for query and anchor in URL.
+ * requests: Add support for query and anchor chars directly after domain.
+ * requests: Support unicode in json and data payloads.
+ * requests: Add support for relative redirect URLs.
+ * requests: Switch to HTTP/1.1 with Content-Length and raw streaming.
+ * requests: Add context manager for response object.
+ * aiohttp: Match response header names case-insensitively.
+ * aioble/security: Only schedule save when needed.
+ * usb/examples: Put timeout=0 in CDCInterface constructor.
+ * usb-device-cdc: Optimise CDCInterface constructor.
+ * usb-device-cdc: Fix default timeout in CDCInterface.init().
+ * tools/ci.sh: Add umqtt.simple mock test to package tests CI.
+ * tools/ci.sh: Add pprint test to CI.
+ * tools/ci.sh: Allow CI tests to run locally.
+ * tools/ci.sh: Use $TMPDIR for temporary storage.
+ * umqtt.simple: Avoid None comparisons in _send_subunsub.
+ * umqtt.simple: Share Remaining Length VBI encoding.
+ * umqtt.simple: Share subscribe/unsubscribe packet encoding.
+ * umqtt.simple: Encode subscribe Remaining Length as VBI.
+ * umqtt.simple: Add call to main() at end of example scripts.
+ * umqtt.simple: Close any old socket on connect.
+ * umqtt.simple: Add example for mqtt tls.
+ * uuid: Make UUID.__repr__ match CPython.
+ * uuid: Add UUID.bytes attribute.
+ * uuid: Use bytes.hex instead of binascii.hexlify.
+ * uuid: Convert test to use unittest.
+ * uuid: Provide UUID class and uuid4() implementation using os.urandom().
+ * colorsys: Add colorsys and test_colorsys from CPython.
+ * ntptime: Use NTPv4.
+ * pprint: Bump version to 0.1.0.
+ * pprint: Fix use of micropython.const.
+ * pprint: Add test_pprint.py.
+ * pprint: Implement depth recursion.
+ * pprint: Refactor implementation and add PrettyPrint class.
+ * pprint: Add simple and partial implementation for depth of 1.
+ * CONTRIBUTING: Clarify some constraints for PR submission.
+ * CONTRIBUTING: Remove references to `black`.
+ * usb-device-keyboard: Add a simpler keyboard example, document releasing.
+ * os: Provide namedtuple response for os.stat().
+ * unittest: Bump minor version due to recent optimisations.
+ * unittest: Optimise to only create a single nop lambda.
+ * unittest: Optimise skipUnless in terms of skipIf.
+ * unittest: Optimise by only formatting msg if needed.
+ * unittest: Optimise calling of _handle_test_exception.
+ * unittest: Optimise by removing support for CPython.
+ * unittest: Optimise by reusing AssertRaisesContext for assertWarns.
+ * unittest: Remove f-strings.
+ * ssd1306: Add I2C protocol example for SSD1306 display.
+ * umqtt.robust: Ease document readability.
+ * umqtt.robust: Document and add examples overriding the connect() method.
+ * umqtt.robust: Let reconnect() call the connect() method of parent class.
+ * pathlib: Add Path.expanduser().
+ * pathlib: Fix glob/rglob to return Path objects rather than strings.
+ * operator: Add mul and some other operators.
+ * unix-ffi/signal: Add SIGALRM constant.
+ * unix-ffi/signal: Add alarm() and pause() functions.
+ * collections-defaultdict: Add items() function.
+ * copy: Provide top-level documentation.
+ * unix-ffi/ffilib: Extend libc versions range.
+ * PR template: Add PR template to micropython-lib.
+ * lora: Fix CRC error IRQ bit mask for sx126x.
+ * unix-ffi/json: Fix json.loads() of a bytes object.
+ * mip: Add an alias for codeberg repos.
+ * usb-device-core: Fix comment describing the signature of done_cb.
+ * usb-device-hid: Enable configuring the bInterval on hid devices.
+
+-------------------------------------------------------------------
Old:
----
micropython-lib-1.28.0.tar.gz
New:
----
micropython-lib-1.29.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ micropython-lib.spec ++++++
--- /var/tmp/diff_new_pack.xm24qI/_old 2026-10-14 18:47:59.356260502 +0200
+++ /var/tmp/diff_new_pack.xm24qI/_new 2026-10-14 18:47:59.357260543 +0200
@@ -17,7 +17,7 @@
Name: micropython-lib
-Version: 1.28.0
+Version: 1.29.0
Release: 0
Summary: Core Python libraries ported to MicroPython
License: MIT AND Python-2.0
++++++ manifestfile.py ++++++
--- /var/tmp/diff_new_pack.xm24qI/_old 2026-10-14 18:47:59.397262218 +0200
+++ /var/tmp/diff_new_pack.xm24qI/_new 2026-10-14 18:47:59.400262343 +0200
@@ -27,6 +27,7 @@
import contextlib
import os
+import re
import sys
import glob
import tempfile
@@ -40,6 +41,9 @@
MODE_COMPILE = 2
# Same as compile, but handles require(..., pypi="name") as a requirements.txt
entry.
MODE_PYPROJECT = 3
+# Same surface as MODE_FREEZE, but freeze/package/module are no-ops so callers
+# can collect c_module() entries without touching files referenced by freeze().
+MODE_LIST_C_MODULES = 4
# In compile mode, .py -> KIND_COMPILE_AS_MPY
# In freeze mode, .py -> KIND_FREEZE_AS_MPY, .mpy->KIND_FREEZE_MPY
@@ -192,6 +196,8 @@
self._manifest_files = []
# List of PyPI dependencies (when mode=MODE_PYPROJECT).
self._pypi_dependencies = []
+ # List of C module directories.
+ self._c_modules = []
# Don't allow including the same file twice.
self._visited = set()
# Stack of metadata for each level.
@@ -201,7 +207,9 @@
# List of directories to search for packages.
self._library_dirs = []
# Add default micropython-lib libraries if $(MPY_LIB_DIR) has been
specified.
- if self._path_vars["MPY_LIB_DIR"]:
+ # Use .get() to avoid KeyError if MPY_LIB_DIR wasn't passed (shouldn't
happen
+ # in normal cmake/make builds, but be defensive for direct tool
invocations).
+ if self._path_vars.get("MPY_LIB_DIR"):
for lib in BASE_LIBRARY_NAMES:
self.add_library(lib, os.path.join("$(MPY_LIB_DIR)", lib))
@@ -221,11 +229,12 @@
"add_library": self.add_library,
"package": self.package,
"module": self.module,
+ "c_module": self.c_module,
"options": IncludeOptions(**kwargs),
}
# Extra legacy functions only for freeze mode.
- if self._mode == MODE_FREEZE:
+ if self._mode in (MODE_FREEZE, MODE_LIST_C_MODULES):
g.update(
{
"freeze": self.freeze,
@@ -244,6 +253,9 @@
# In MODE_PYPROJECT, this will return a list suitable for
requirements.txt.
return self._pypi_dependencies
+ def c_modules(self):
+ return self._c_modules
+
def execute(self, manifest_file):
if manifest_file.endswith(".py"):
# Execute file from filesystem.
@@ -478,6 +490,9 @@
"""
self._metadata[-1].check_initialised(self._mode)
+ if self._mode == MODE_LIST_C_MODULES:
+ return
+
# Include "base_path/package_path/**/*.py" --> "package_path/**/*.py"
self._search(base_path, package_path, files, exts=(".py",),
kind=KIND_AUTO, opt=opt)
@@ -493,6 +508,9 @@
"""
self._metadata[-1].check_initialised(self._mode)
+ if self._mode == MODE_LIST_C_MODULES:
+ return
+
# Include "base_path/module_path" --> "module_path"
base_path = self._resolve_path(base_path)
_, ext = os.path.splitext(module_path)
@@ -501,7 +519,56 @@
# TODO: version None
self._add_file(os.path.join(base_path, module_path), module_path,
opt=opt)
+ def c_module(self, module_path):
+ """
+ Include a C module directory in the build.
+
+ The module_path should be a directory containing a micropython.mk
and/or
+ micropython.cmake file.
+
+ Supports $(VAR) path substitution:
+ c_module("$(MPY_DIR)/examples/usercmodule/cexample")
+ c_module("$(BOARD_DIR)/../../drivers/sensor")
+
+ Can be called multiple times to include multiple C modules.
+
+ Only has effect when collecting modules for the build system
+ (MODE_FREEZE / MODE_LIST_C_MODULES). Silent no-op in MODE_COMPILE /
+ MODE_PYPROJECT, so the same manifest can be evaluated in any mode.
+ """
+ if self._mode not in (MODE_FREEZE, MODE_LIST_C_MODULES):
+ return
+ resolved = self._resolve_path(module_path)
+ # Reject unresolved $(VAR) up front so a bad manifest fails with a
+ # clear message rather than a confusing "path does not exist"
containing
+ # the variable literal.
+ unresolved = re.search(r"\$\([^)]+\)", resolved)
+ if unresolved:
+ raise ManifestFileError(
+ "Unresolved variable in c_module() path:
{}".format(unresolved.group(0))
+ )
+ module_path = resolved
+ if not os.path.exists(module_path):
+ raise ManifestFileError("C module path does not exist:
{}".format(module_path))
+ if not os.path.isdir(module_path):
+ raise ManifestFileError("C module path must be a directory:
{}".format(module_path))
+ # Verify the directory contains a micropython.mk or micropython.cmake
file.
+ has_mk = os.path.isfile(os.path.join(module_path, "micropython.mk"))
+ has_cmake = os.path.isfile(os.path.join(module_path,
"micropython.cmake"))
+ if not has_mk and not has_cmake:
+ raise ManifestFileError(
+ "C module directory must contain micropython.mk or
micropython.cmake: {}".format(
+ module_path
+ )
+ )
+ self._c_modules.append(module_path)
+
def _freeze_internal(self, path, script, exts, kind, opt):
+ # In list-c-modules mode we only care about c_module() entries; skip
+ # the file-system walk so freeze targets that don't exist (e.g. a
+ # board-conditional modules directory) don't abort the listing.
+ if self._mode == MODE_LIST_C_MODULES:
+ return
if script is None:
self._search(path, None, None, exts=exts, kind=kind, opt=opt)
elif isinstance(script, str) and os.path.isdir(os.path.join(path,
script)):
@@ -555,6 +622,8 @@
Freeze the given `path` and all .py scripts within it as a string,
which will be compiled upon import.
"""
+ if self._mode == MODE_LIST_C_MODULES:
+ return
self._search(path, None, None, exts=(".py",), kind=KIND_FREEZE_AS_STR)
def freeze_as_mpy(self, path, script=None, opt=None):
++++++ micropython-lib-1.28.0.tar.gz -> micropython-lib-1.29.0.tar.gz ++++++
++++ 4197 lines of diff (skipped)