Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-msgspec for openSUSE:Factory checked in at 2023-12-08 22:32:23 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-msgspec (Old) and /work/SRC/openSUSE:Factory/.python-msgspec.new.25432 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-msgspec" Fri Dec 8 22:32:23 2023 rev:2 rq:1131998 version:0.18.4 Changes: -------- --- /work/SRC/openSUSE:Factory/python-msgspec/python-msgspec.changes 2023-09-01 14:21:47.693765650 +0200 +++ /work/SRC/openSUSE:Factory/.python-msgspec.new.25432/python-msgspec.changes 2023-12-08 22:32:55.089908933 +0100 @@ -1,0 +2,9 @@ +Thu Dec 7 23:03:38 UTC 2023 - Dirk Müller <dmuel...@suse.com> + +- update to 0.18.4: + * Resolve an issue leading to periodic segfaults when importing + ``msgspec`` on CPython 3.12 + * Improve type annotation for ``Struct.__rich_repr__`` + * Add pre-built wheels for Python 3.12 (:pr:`558`) + +------------------------------------------------------------------- Old: ---- msgspec-0.18.2.tar.gz New: ---- msgspec-0.18.4.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-msgspec.spec ++++++ --- /var/tmp/diff_new_pack.e9j8DW/_old 2023-12-08 22:32:55.593927479 +0100 +++ /var/tmp/diff_new_pack.e9j8DW/_new 2023-12-08 22:32:55.597927625 +0100 @@ -17,7 +17,7 @@ Name: python-msgspec -Version: 0.18.2 +Version: 0.18.4 Release: 0 Summary: A fast serialization and validation library License: BSD-3-Clause ++++++ msgspec-0.18.2.tar.gz -> msgspec-0.18.4.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msgspec-0.18.2/.github/workflows/ci.yml new/msgspec-0.18.4/.github/workflows/ci.yml --- old/msgspec-0.18.2/.github/workflows/ci.yml 2023-08-26 22:58:18.000000000 +0200 +++ new/msgspec-0.18.4/.github/workflows/ci.yml 2023-10-05 06:24:28.000000000 +0200 @@ -77,7 +77,7 @@ env: CIBW_TEST_REQUIRES: "pytest msgpack pyyaml tomli tomli_w" CIBW_TEST_COMMAND: "pytest {project}/tests" - CIBW_BUILD: "cp38-* cp39-* cp310-* cp311-*" + CIBW_BUILD: "cp38-* cp39-* cp310-* cp311-* cp312-*" CIBW_SKIP: "*-win32 *_i686 *_s390x *_ppc64le" CIBW_ARCHS_MACOS: "x86_64 arm64" CIBW_ARCHS_LINUX: "x86_64 aarch64" @@ -98,14 +98,8 @@ run: | echo "CIBW_SKIP=${CIBW_SKIP} *-musllinux_* cp38-*_aarch64 cp39-*_aarch64 cp311-*_aarch64 cp312-*_aarch64" >> $GITHUB_ENV - - name: Enable CPython 3.12 prerelease builds for Linux testing - if: github.event_name != 'release' && runner.os == 'Linux' - run: | - echo "CIBW_PRERELEASE_PYTHONS=True" >> $GITHUB_ENV - echo "CIBW_BUILD=cp38-* cp39-* cp310-* cp311-* cp312-*" >> $GITHUB_ENV - - name: Build & Test Wheels - uses: pypa/cibuildwheel@v2.13.1 + uses: pypa/cibuildwheel@v2.16.1 - name: Upload artifact uses: actions/upload-artifact@v2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msgspec-0.18.2/docs/source/changelog.rst new/msgspec-0.18.4/docs/source/changelog.rst --- old/msgspec-0.18.2/docs/source/changelog.rst 2023-08-26 22:58:18.000000000 +0200 +++ new/msgspec-0.18.4/docs/source/changelog.rst 2023-10-05 06:24:28.000000000 +0200 @@ -3,6 +3,18 @@ .. currentmodule:: msgspec +Version 0.18.4 (2023-10-04) +--------------------------- + +- Resolve an issue leading to periodic segfaults when importing ``msgspec`` on + CPython 3.12 (:pr:`561`) + +Version 0.18.3 (2023-10-03) +--------------------------- + +- Improve type annotation for ``Struct.__rich_repr__`` (:pr:`557`) +- Add pre-built wheels for Python 3.12 (:pr:`558`) + Version 0.18.2 (2023-08-26) --------------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msgspec-0.18.2/docs/source/supported-types.rst new/msgspec-0.18.4/docs/source/supported-types.rst --- old/msgspec-0.18.2/docs/source/supported-types.rst 2023-08-26 22:58:18.000000000 +0200 +++ new/msgspec-0.18.4/docs/source/supported-types.rst 2023-10-05 06:24:28.000000000 +0200 @@ -1230,7 +1230,7 @@ "page": 1, "per_page": 5, "total": 252, - "data": [ + "items": [ {"name": "alice", "groups": ["admin"]}, {"name": "ben"}, {"name": "carol", "groups": ["engineering"]}, @@ -1245,7 +1245,7 @@ print(msg) #> Paginated( #> page=1, per_page=5, total=252, - #> data=[ + #> items=[ #> User(name='alice', groups=['admin']), #> User(name='ben', groups=[]), #> User(name='carol', groups=['engineering']), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msgspec-0.18.2/msgspec/__init__.pyi new/msgspec-0.18.4/msgspec/__init__.pyi --- old/msgspec-0.18.2/msgspec/__init__.pyi 2023-08-26 22:58:18.000000000 +0200 +++ new/msgspec-0.18.4/msgspec/__init__.pyi 2023-10-05 06:24:28.000000000 +0200 @@ -68,7 +68,9 @@ weakref: bool = False, dict: bool = False, ) -> None: ... - def __rich_repr__(self) -> Iterable[Tuple[str, Any]]: ... + def __rich_repr__( + self, + ) -> Iterable[Union[Any, Tuple[Any], Tuple[str, Any], Tuple[str, Any, Any]]]: ... def defstruct( name: str, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msgspec-0.18.2/msgspec/_core.c new/msgspec-0.18.4/msgspec/_core.c --- old/msgspec-0.18.2/msgspec/_core.c 2023-08-26 22:58:18.000000000 +0200 +++ new/msgspec-0.18.4/msgspec/_core.c 2023-10-05 06:24:28.000000000 +0200 @@ -6043,16 +6043,11 @@ /* Fill in struct offsets */ if (structmeta_construct_offsets(&info, cls) < 0) goto cleanup; - /* Cache access to __post_init__ (if defined). - * XXX: When StructMeta is defined, the module hasn't finished initializing - * yet so `mod` will be NULL here. */ - if (mod != NULL) { - cls->post_init = PyObject_GetAttr((PyObject *)cls, mod->str___post_init__); + /* Cache access to __post_init__ (if defined). */ + cls->post_init = PyObject_GetAttr((PyObject *)cls, mod->str___post_init__); + if (cls->post_init == NULL) { PyErr_Clear(); } - else { - cls->post_init = NULL; - } cls->nkwonly = info.nkwonly; cls->n_trailing_defaults = info.n_trailing_defaults; @@ -8033,20 +8028,6 @@ } -static MS_INLINE PyObject * -DataclassInfo_get_default(DataclassInfo *self, Py_ssize_t i) { - PyObject *default_value = PyTuple_GET_ITEM(self->defaults, i); - bool is_factory = self->fields[i].type->types & MS_EXTRA_FLAG; - if (is_factory) { - default_value = CALL_NO_ARGS(default_value); - if (default_value == NULL) return NULL; - return default_value; - } - Py_INCREF(default_value); - return default_value; -} - - static int DataclassInfo_post_decode(DataclassInfo *self, PyObject *obj, PathNode *path) { Py_ssize_t nfields = Py_SIZE(self); @@ -21081,17 +21062,6 @@ if (PyModule_AddObject(m, "UNSET", UNSET) < 0) return NULL; - /* Initialize the Struct Type */ - st->StructType = PyObject_CallFunction( - (PyObject *)&StructMetaType, "s(O){ssss}", "Struct", &StructMixinType, - "__module__", "msgspec", "__doc__", Struct__doc__ - ); - if (st->StructType == NULL) - return NULL; - Py_INCREF(st->StructType); - if (PyModule_AddObject(m, "Struct", st->StructType) < 0) - return NULL; - /* Initialize the exceptions. */ st->MsgspecError = PyErr_NewExceptionWithDoc( "msgspec.MsgspecError", @@ -21259,5 +21229,15 @@ CACHED_STRING(str_int, "int"); CACHED_STRING(str_is_safe, "is_safe"); + /* Initialize the Struct Type */ + PyState_AddModule(m, &msgspecmodule); + st->StructType = PyObject_CallFunction( + (PyObject *)&StructMetaType, "s(O){ssss}", "Struct", &StructMixinType, + "__module__", "msgspec", "__doc__", Struct__doc__ + ); + if (st->StructType == NULL) return NULL; + Py_INCREF(st->StructType); + if (PyModule_AddObject(m, "Struct", st->StructType) < 0) return NULL; + return m; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msgspec-0.18.2/msgspec/_version.py new/msgspec-0.18.4/msgspec/_version.py --- old/msgspec-0.18.2/msgspec/_version.py 2023-08-26 22:58:18.000000000 +0200 +++ new/msgspec-0.18.4/msgspec/_version.py 2023-10-05 06:24:28.000000000 +0200 @@ -24,9 +24,9 @@ # setup.py/versioneer.py will grep for the variable names, so they must # each be defined on a line of their own. _version.py will just call # get_keywords(). - git_refnames = " (HEAD -> main, tag: 0.18.2)" - git_full = "256d84a2f233ee741a2c2e4d67633b13ffcd37a4" - git_date = "2023-08-26 15:58:18 -0500" + git_refnames = " (tag: 0.18.4)" + git_full = "05125a80969bba244f0e65ed540ee5301b94e030" + git_date = "2023-10-04 23:24:28 -0500" keywords = {"refnames": git_refnames, "full": git_full, "date": git_date} return keywords diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msgspec-0.18.2/setup.py new/msgspec-0.18.4/setup.py --- old/msgspec-0.18.2/setup.py 2023-08-26 22:58:18.000000000 +0200 +++ new/msgspec-0.18.4/setup.py 2023-10-05 06:24:28.000000000 +0200 @@ -67,6 +67,7 @@ "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", ], extras_require=extras_require, license="BSD", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msgspec-0.18.2/tests/basic_typing_examples.py new/msgspec-0.18.4/tests/basic_typing_examples.py --- old/msgspec-0.18.2/tests/basic_typing_examples.py 2023-08-26 22:58:18.000000000 +0200 +++ new/msgspec-0.18.4/tests/basic_typing_examples.py 2023-10-05 06:24:28.000000000 +0200 @@ -311,7 +311,10 @@ a.x = a.x + b.y repr(a) - for name, val in a.__rich_repr__(): + for item in a.__rich_repr__(): + assert isinstance(item, tuple) + assert len(item) == 2 + name, val = item print(f"{name} = {val}")