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)

Reply via email to