Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-pylsqpack for 
openSUSE:Factory checked in at 2024-09-04 13:22:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pylsqpack (Old)
 and      /work/SRC/openSUSE:Factory/.python-pylsqpack.new.10096 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-pylsqpack"

Wed Sep  4 13:22:30 2024 rev:4 rq:1198046 version:0.3.18

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pylsqpack/python-pylsqpack.changes        
2023-07-05 15:31:48.467010449 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-pylsqpack.new.10096/python-pylsqpack.changes 
    2024-09-04 13:22:39.824844961 +0200
@@ -1,0 +2,8 @@
+Sat Aug 31 11:53:14 UTC 2024 - Dirk Müller <[email protected]>
+
+- update to 0.3.18:
+  * add python 3.11 and 3.12 support
+  * Fix error message from Decoder_resume_header
+  * Fix Decoder.feed_header and .resume_header docs
+
+-------------------------------------------------------------------

Old:
----
  pylsqpack-0.3.16.tar.gz

New:
----
  pylsqpack-0.3.18.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-pylsqpack.spec ++++++
--- /var/tmp/diff_new_pack.nDIBqA/_old  2024-09-04 13:22:40.396868897 +0200
+++ /var/tmp/diff_new_pack.nDIBqA/_new  2024-09-04 13:22:40.400869064 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-pylsqpack
 #
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-pylsqpack
-Version:        0.3.16
+Version:        0.3.18
 Release:        0
 Summary:        Python ls-qpack QPACK library
 License:        BSD-3-Clause
@@ -26,7 +26,9 @@
 URL:            https://github.com/aiortc/pylsqpack
 Source:         
https://files.pythonhosted.org/packages/source/p/pylsqpack/pylsqpack-%{version}.tar.gz
 BuildRequires:  %{python_module devel}
+BuildRequires:  %{python_module pip}
 BuildRequires:  %{python_module setuptools}
+BuildRequires:  %{python_module wheel}
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
 %python_subpackages
@@ -39,10 +41,10 @@
 
 %build
 export CFLAGS="%{optflags}"
-%python_build
+%pyproject_wheel
 
 %install
-%python_install
+%pyproject_install
 %python_expand %fdupes %{buildroot}%{$python_sitearch}
 
 %check
@@ -51,5 +53,6 @@
 %files %{python_files}
 %doc README.rst
 %license LICENSE
-%{python_sitearch}/*
+%{python_sitearch}/pylsqpack
+%{python_sitearch}/pylsqpack-%{version}.dist-info
 

++++++ pylsqpack-0.3.16.tar.gz -> pylsqpack-0.3.18.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylsqpack-0.3.16/PKG-INFO 
new/pylsqpack-0.3.18/PKG-INFO
--- old/pylsqpack-0.3.16/PKG-INFO       2022-03-30 00:37:10.000000000 +0200
+++ new/pylsqpack-0.3.18/PKG-INFO       2023-11-04 20:00:31.000000000 +0100
@@ -1,41 +1,11 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
 Name: pylsqpack
-Version: 0.3.16
+Version: 0.3.18
 Summary: Python wrapper for the ls-qpack QPACK library
-Home-page: https://github.com/aiortc/pylsqpack
-Author: Jeremy Lainé
-Author-email: [email protected]
-License: BSD
-Description: pylsqpack
-        =========
-        
-        |rtd| |pypi-v| |pypi-pyversions| |pypi-l| |tests|
-        
-        .. |rtd| image:: 
https://readthedocs.org/projects/pylsqpack/badge/?version=latest
-            :target: https://pylsqpack.readthedocs.io/
-        
-        .. |pypi-v| image:: https://img.shields.io/pypi/v/pylsqpack.svg
-            :target: https://pypi.python.org/pypi/pylsqpack
-        
-        .. |pypi-pyversions| image:: 
https://img.shields.io/pypi/pyversions/pylsqpack.svg
-            :target: https://pypi.python.org/pypi/pylsqpack
-        
-        .. |pypi-l| image:: https://img.shields.io/pypi/l/pylsqpack.svg
-            :target: https://pypi.python.org/pypi/pylsqpack
-        
-        .. |tests| image:: 
https://github.com/aiortc/pylsqpack/workflows/tests/badge.svg
-            :target: https://github.com/aiortc/pylsqpack/actions
-        
-        ``pylsqpack`` is a wrapper around the `ls-qpack`_ library. It provides 
Python
-        `Decoder` and `Encoder` objects to read or write HTTP/3 headers 
compressed
-        with QPACK.
-        
-        To learn more about ``pylsqpack`` please `read the documentation`_.
-        
-        .. _ls-qpack: https://github.com/litespeedtech/ls-qpack/
-        .. _read the documentation: https://pylsqpack.readthedocs.io/en/latest/
-        
-Platform: UNKNOWN
+Author-email: Jeremy Lainé <[email protected]>
+License: BSD-3-Clause
+Project-URL: homepage, https://github.com/aiortc/pylsqpack
+Project-URL: documentation, https://pylsqpack.readthedocs.io/
 Classifier: Development Status :: 5 - Production/Stable
 Classifier: Environment :: Web Environment
 Classifier: Intended Audience :: Developers
@@ -43,8 +13,41 @@
 Classifier: Operating System :: OS Independent
 Classifier: Programming Language :: Python
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.7
 Classifier: Programming Language :: Python :: 3.8
 Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
+Classifier: Programming Language :: Python :: 3.12
 Classifier: Topic :: Internet :: WWW/HTTP
+Requires-Python: >=3.8
+Description-Content-Type: text/x-rst
+License-File: LICENSE
+
+pylsqpack
+=========
+
+|rtd| |pypi-v| |pypi-pyversions| |pypi-l| |tests|
+
+.. |rtd| image:: 
https://readthedocs.org/projects/pylsqpack/badge/?version=latest
+    :target: https://pylsqpack.readthedocs.io/
+
+.. |pypi-v| image:: https://img.shields.io/pypi/v/pylsqpack.svg
+    :target: https://pypi.python.org/pypi/pylsqpack
+
+.. |pypi-pyversions| image:: 
https://img.shields.io/pypi/pyversions/pylsqpack.svg
+    :target: https://pypi.python.org/pypi/pylsqpack
+
+.. |pypi-l| image:: https://img.shields.io/pypi/l/pylsqpack.svg
+    :target: https://pypi.python.org/pypi/pylsqpack
+
+.. |tests| image:: 
https://github.com/aiortc/pylsqpack/workflows/tests/badge.svg
+    :target: https://github.com/aiortc/pylsqpack/actions
+
+``pylsqpack`` is a wrapper around the `ls-qpack`_ library. It provides Python
+`Decoder` and `Encoder` objects to read or write HTTP/3 headers compressed
+with QPACK.
+
+To learn more about ``pylsqpack`` please `read the documentation`_.
+
+.. _ls-qpack: https://github.com/litespeedtech/ls-qpack/
+.. _read the documentation: https://pylsqpack.readthedocs.io/en/latest/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylsqpack-0.3.16/pyproject.toml 
new/pylsqpack-0.3.18/pyproject.toml
--- old/pylsqpack-0.3.16/pyproject.toml 1970-01-01 01:00:00.000000000 +0100
+++ new/pylsqpack-0.3.18/pyproject.toml 2023-11-04 20:00:22.000000000 +0100
@@ -0,0 +1,44 @@
+[build-system]
+requires = ["setuptools", "wheel"]
+build-backend = "setuptools.build_meta"
+
+[project]
+name = "pylsqpack"
+description = "Python wrapper for the ls-qpack QPACK library"
+readme = "README.rst"
+requires-python = ">=3.8"
+license = { text = "BSD-3-Clause" }
+authors = [
+    { name = "Jeremy Lainé", email = "[email protected]" },
+]
+classifiers = [
+    "Development Status :: 5 - Production/Stable",
+    "Environment :: Web Environment",
+    "Intended Audience :: Developers",
+    "License :: OSI Approved :: BSD License",
+    "Operating System :: OS Independent",
+    "Programming Language :: Python",
+    "Programming Language :: Python :: 3",
+    "Programming Language :: Python :: 3.8",
+    "Programming Language :: Python :: 3.9",
+    "Programming Language :: Python :: 3.10",
+    "Programming Language :: Python :: 3.11",
+    "Programming Language :: Python :: 3.12",
+    "Topic :: Internet :: WWW/HTTP",
+]
+dynamic = ["version"]
+
+[project.urls]
+homepage = "https://github.com/aiortc/pylsqpack";
+documentation = "https://pylsqpack.readthedocs.io/";
+
+[tool.ruff]
+select = [
+    "E",  # pycodestyle
+    "F",  # Pyflakes
+    "W",  # pycodestyle
+    "I",  # isort
+]
+
+[tool.setuptools.dynamic]
+version = {attr = "pylsqpack.__version__"}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylsqpack-0.3.16/setup.cfg 
new/pylsqpack-0.3.18/setup.cfg
--- old/pylsqpack-0.3.16/setup.cfg      2022-03-30 00:37:10.000000000 +0200
+++ new/pylsqpack-0.3.18/setup.cfg      2023-11-04 20:00:31.000000000 +0100
@@ -1,11 +1,3 @@
-[flake8]
-max-line-length = 150
-
-[isort]
-include_trailing_comma = True
-line_length = 88
-multi_line_output = 3
-
 [egg_info]
 tag_build = 
 tag_date = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylsqpack-0.3.16/setup.py 
new/pylsqpack-0.3.18/setup.py
--- old/pylsqpack-0.3.16/setup.py       2022-03-30 00:37:05.000000000 +0200
+++ new/pylsqpack-0.3.18/setup.py       2023-11-04 20:00:22.000000000 +0100
@@ -2,17 +2,7 @@
 import sys
 
 import setuptools
-
-root_dir = os.path.abspath(os.path.dirname(__file__))
-
-about = {}
-about_file = os.path.join(root_dir, "src", "pylsqpack", "about.py")
-with open(about_file, encoding="utf-8") as fp:
-    exec(fp.read(), about)
-
-readme_file = os.path.join(root_dir, "README.rst")
-with open(readme_file, encoding="utf-8") as f:
-    long_description = f.read()
+from wheel.bdist_wheel import bdist_wheel
 
 extra_compile_args = []
 include_dirs = [
@@ -24,37 +14,25 @@
 else:
     extra_compile_args = ["-std=c99"]
 
+
+class bdist_wheel_abi3(bdist_wheel):
+    def get_tag(self):
+        python, abi, plat = super().get_tag()
+
+        if python.startswith("cp"):
+            return "cp38", "abi3", plat
+
+        return python, abi, plat
+
+
 setuptools.setup(
-    name=about["__title__"],
-    version=about["__version__"],
-    description=about["__summary__"],
-    long_description=long_description,
-    url=about["__uri__"],
-    author=about["__author__"],
-    author_email=about["__email__"],
-    license=about["__license__"],
-    classifiers=[
-        "Development Status :: 5 - Production/Stable",
-        "Environment :: Web Environment",
-        "Intended Audience :: Developers",
-        "License :: OSI Approved :: BSD License",
-        "Operating System :: OS Independent",
-        "Programming Language :: Python",
-        "Programming Language :: Python :: 3",
-        "Programming Language :: Python :: 3.7",
-        "Programming Language :: Python :: 3.8",
-        "Programming Language :: Python :: 3.9",
-        "Programming Language :: Python :: 3.10",
-        "Topic :: Internet :: WWW/HTTP",
-    ],
-    package_dir={"": "src"},
-    package_data={"pylsqpack": ["py.typed", "__init__.pyi"]},
-    packages=["pylsqpack"],
     ext_modules=[
         setuptools.Extension(
             "pylsqpack._binding",
+            define_macros=[("Py_LIMITED_API", "0x03080000")],
             extra_compile_args=extra_compile_args,
             include_dirs=include_dirs,
+            py_limited_api=True,
             sources=[
                 "src/pylsqpack/binding.c",
                 "vendor/ls-qpack/lsqpack.c",
@@ -62,4 +40,5 @@
             ],
         ),
     ],
+    cmdclass={"bdist_wheel": bdist_wheel_abi3},
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylsqpack-0.3.16/src/pylsqpack/__init__.py 
new/pylsqpack-0.3.18/src/pylsqpack/__init__.py
--- old/pylsqpack-0.3.16/src/pylsqpack/__init__.py      2022-03-30 
00:37:05.000000000 +0200
+++ new/pylsqpack-0.3.18/src/pylsqpack/__init__.py      2023-11-04 
20:00:22.000000000 +0100
@@ -8,4 +8,5 @@
     EncoderStreamError,
     StreamBlocked,
 )
-from .about import __version__
+
+__version__ = "0.3.18"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylsqpack-0.3.16/src/pylsqpack/__init__.pyi 
new/pylsqpack-0.3.18/src/pylsqpack/__init__.pyi
--- old/pylsqpack-0.3.16/src/pylsqpack/__init__.pyi     2022-03-30 
00:37:05.000000000 +0200
+++ new/pylsqpack-0.3.18/src/pylsqpack/__init__.pyi     1970-01-01 
01:00:00.000000000 +0100
@@ -1,21 +0,0 @@
-from typing import List, Tuple
-
-Headers = List[Tuple[bytes, bytes]]
-
-class DecompressionFailed(Exception): ...
-class DecoderStreamError(Exception): ...
-class EncoderStreamError(Exception): ...
-class StreamBlocked(Exception): ...
-
-class Decoder:
-    def __init__(self, max_table_capacity: int, blocked_streams: int) -> None: 
...
-    def feed_encoder(self, data: bytes) -> List[int]: ...
-    def feed_header(self, stream_id: int, data: bytes) -> Tuple[bytes, 
Headers]: ...
-    def resume_header(self, stream_id: int) -> Tuple[bytes, Headers]: ...
-
-class Encoder:
-    def apply_settings(
-        self, max_table_capacity: int, blocked_streams: int
-    ) -> bytes: ...
-    def encode(self, stream_id: int, headers: Headers) -> Tuple[bytes, bytes]: 
...
-    def feed_decoder(self, data: bytes) -> None: ...
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylsqpack-0.3.16/src/pylsqpack/about.py 
new/pylsqpack-0.3.18/src/pylsqpack/about.py
--- old/pylsqpack-0.3.16/src/pylsqpack/about.py 2022-03-30 00:37:05.000000000 
+0200
+++ new/pylsqpack-0.3.18/src/pylsqpack/about.py 1970-01-01 01:00:00.000000000 
+0100
@@ -1,7 +0,0 @@
-__author__ = "Jeremy Lainé"
-__email__ = "[email protected]"
-__license__ = "BSD"
-__summary__ = "Python wrapper for the ls-qpack QPACK library"
-__title__ = "pylsqpack"
-__uri__ = "https://github.com/aiortc/pylsqpack";
-__version__ = "0.3.16"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylsqpack-0.3.16/src/pylsqpack/binding.c 
new/pylsqpack-0.3.18/src/pylsqpack/binding.c
--- old/pylsqpack-0.3.16/src/pylsqpack/binding.c        2022-03-30 
00:37:05.000000000 +0200
+++ new/pylsqpack-0.3.18/src/pylsqpack/binding.c        2023-11-04 
20:00:22.000000000 +0100
@@ -12,7 +12,9 @@
 
 static PyObject *DecompressionFailed;
 static PyObject *DecoderStreamError;
+static PyObject *DecoderType;
 static PyObject *EncoderStreamError;
+static PyObject *EncoderType;
 static PyObject *StreamBlocked;
 
 struct header_block {
@@ -63,7 +65,7 @@
         tuple = PyTuple_Pack(2, name, value);
         Py_DECREF(name);
         Py_DECREF(value);
-        PyList_SET_ITEM(list, i, tuple);
+        PyList_SetItem(list, i, tuple);
     }
     return list;
 }
@@ -110,7 +112,10 @@
         header_block_free(hblock);
     }
 
-    Py_TYPE(self)->tp_free((PyObject *) self);
+    PyTypeObject *tp = Py_TYPE(self);
+    freefunc free = PyType_GetSlot(tp, Py_tp_free);
+    free(self);
+    Py_DECREF(tp);
 }
 
 static PyObject*
@@ -208,8 +213,8 @@
 }
 
 PyDoc_STRVAR(Decoder_feed_header__doc__,
-    "feed_header(stream_id: int, data: bytes) -> List[Tuple[bytes, bytes]]\n\n"
-    "Decode a header block and return headers.\n\n"
+    "feed_header(stream_id: int, data: bytes) -> Tuple[bytes, 
List[Tuple[bytes, bytes]]]\n\n"
+    "Decode a header block and return control data and headers.\n\n"
     "If the stream is blocked, :class:`StreamBlocked` is raised.\n\n"
     "If the data cannot be processed, :class:`DecompressionFailed` is 
raised.\n\n"
     ":param stream_id: the ID of the stream\n"
@@ -260,7 +265,7 @@
         PyErr_Format(StreamBlocked, "stream %d is blocked", stream_id);
         return NULL;
     } else if (status != LQRHS_DONE) {
-        PyErr_Format(DecompressionFailed, "lsqpack_dec_header_in for stream %d 
failed (%d)", stream_id, status);
+        PyErr_Format(DecompressionFailed, "lsqpack_dec_header_read for stream 
%d failed (%d)", stream_id, status);
         STAILQ_REMOVE(&self->pending_blocks, hblock, header_block, entries);
         header_block_free(hblock);
         return NULL;
@@ -279,8 +284,8 @@
 }
 
 PyDoc_STRVAR(Decoder_resume_header__doc__,
-    "resume_header(stream_id: int) -> List[Tuple[bytes, bytes]]\n\n"
-    "Continue decoding a header block and return headers.\n\n"
+    "resume_header(stream_id: int) -> Tuple[bytes, List[Tuple[bytes, 
bytes]]]\n\n"
+    "Continue decoding a header block and return control data and headers.\n\n"
     "This method should be called only when :meth:`feed_encoder` indicates "
     "that a stream has become unblocked\n\n"
     ":param stream_id: the ID of the stream\n");
@@ -298,44 +303,21 @@
     ":param max_table_capacity: the maximum size in bytes of the dynamic 
table\n"
     ":param blocked_streams: the maximum number of streams that could be 
blocked\n");
 
-static PyTypeObject DecoderType = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    MODULE_NAME ".Decoder",             /* tp_name */
-    sizeof(DecoderObject),              /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    (destructor)Decoder_dealloc,        /* tp_dealloc */
-    0,                                  /* tp_print */
-    0,                                  /* tp_getattr */
-    0,                                  /* tp_setattr */
-    0,                                  /* tp_reserved */
-    0,                                  /* tp_repr */
-    0,                                  /* tp_as_number */
-    0,                                  /* tp_as_sequence */
-    0,                                  /* tp_as_mapping */
-    0,                                  /* tp_hash  */
-    0,                                  /* tp_call */
-    0,                                  /* tp_str */
-    0,                                  /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT,                 /* tp_flags */
-    Decoder__doc__,                     /* tp_doc */
-    0,                                  /* tp_traverse */
-    0,                                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    0,                                  /* tp_iter */
-    0,                                  /* tp_iternext */
-    Decoder_methods,                    /* tp_methods */
-    0,                                  /* tp_members */
-    0,                                  /* tp_getset */
-    0,                                  /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    (initproc)Decoder_init,             /* tp_init */
-    0,                                  /* tp_alloc */
+
+static PyType_Slot DecoderType_slots[] = {
+    {Py_tp_dealloc, Decoder_dealloc},
+    {Py_tp_methods, Decoder_methods},
+    {Py_tp_doc, Decoder__doc__},
+    {Py_tp_init, Decoder_init},
+    {0, 0},
+};
+
+static PyType_Spec DecoderType_spec = {
+    MODULE_NAME ".Decoder",
+    sizeof(DecoderObject),
+    0,
+    Py_TPFLAGS_DEFAULT,
+    DecoderType_slots
 };
 
 // ENCODER
@@ -359,7 +341,11 @@
 Encoder_dealloc(EncoderObject *self)
 {
     lsqpack_enc_cleanup(&self->enc);
-    Py_TYPE(self)->tp_free((PyObject *) self);
+
+    PyTypeObject *tp = Py_TYPE(self);
+    freefunc free = PyType_GetSlot(tp, Py_tp_free);
+    free(self);
+    Py_DECREF(tp);
 }
 
 static PyObject*
@@ -499,44 +485,20 @@
     "Encoder()\n\n"
     "QPACK encoder.\n");
 
-static PyTypeObject EncoderType = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    MODULE_NAME ".Encoder",             /* tp_name */
-    sizeof(EncoderObject),              /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    (destructor)Encoder_dealloc,        /* tp_dealloc */
-    0,                                  /* tp_print */
-    0,                                  /* tp_getattr */
-    0,                                  /* tp_setattr */
-    0,                                  /* tp_reserved */
-    0,                                  /* tp_repr */
-    0,                                  /* tp_as_number */
-    0,                                  /* tp_as_sequence */
-    0,                                  /* tp_as_mapping */
-    0,                                  /* tp_hash  */
-    0,                                  /* tp_call */
-    0,                                  /* tp_str */
-    0,                                  /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT,                 /* tp_flags */
-    Encoder__doc__,                     /* tp_doc */
-    0,                                  /* tp_traverse */
-    0,                                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    0,                                  /* tp_iter */
-    0,                                  /* tp_iternext */
-    Encoder_methods,                    /* tp_methods */
-    0,                                  /* tp_members */
-    0,                                  /* tp_getset */
-    0,                                  /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    (initproc)Encoder_init,             /* tp_init */
-    0,                                  /* tp_alloc */
+static PyType_Slot EncoderType_slots[] = {
+    {Py_tp_dealloc, Encoder_dealloc},
+    {Py_tp_methods, Encoder_methods},
+    {Py_tp_doc, Encoder__doc__},
+    {Py_tp_init, Encoder_init},
+    {0, 0},
+};
+
+static PyType_Spec EncoderType_spec = {
+    MODULE_NAME ".Encoder",
+    sizeof(EncoderObject),
+    0,
+    Py_TPFLAGS_DEFAULT,
+    EncoderType_slots
 };
 
 // MODULE
@@ -578,17 +540,15 @@
     Py_INCREF(StreamBlocked);
     PyModule_AddObject(m, "StreamBlocked", StreamBlocked);
 
-    DecoderType.tp_new = PyType_GenericNew;
-    if (PyType_Ready(&DecoderType) < 0)
+    DecoderType = PyType_FromSpec(&DecoderType_spec);
+    if (DecoderType == NULL)
         return NULL;
-    Py_INCREF(&DecoderType);
-    PyModule_AddObject(m, "Decoder", (PyObject *)&DecoderType);
+    PyModule_AddObject(m, "Decoder", DecoderType);
 
-    EncoderType.tp_new = PyType_GenericNew;
-    if (PyType_Ready(&EncoderType) < 0)
+    EncoderType = PyType_FromSpec(&EncoderType_spec);
+    if (EncoderType == NULL)
         return NULL;
-    Py_INCREF(&EncoderType);
-    PyModule_AddObject(m, "Encoder", (PyObject *)&EncoderType);
+    PyModule_AddObject(m, "Encoder", EncoderType);
 
     return m;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylsqpack-0.3.16/src/pylsqpack/py.typed 
new/pylsqpack-0.3.18/src/pylsqpack/py.typed
--- old/pylsqpack-0.3.16/src/pylsqpack/py.typed 2022-03-30 00:37:05.000000000 
+0200
+++ new/pylsqpack-0.3.18/src/pylsqpack/py.typed 1970-01-01 01:00:00.000000000 
+0100
@@ -1 +0,0 @@
-Marker
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylsqpack-0.3.16/src/pylsqpack.egg-info/PKG-INFO 
new/pylsqpack-0.3.18/src/pylsqpack.egg-info/PKG-INFO
--- old/pylsqpack-0.3.16/src/pylsqpack.egg-info/PKG-INFO        2022-03-30 
00:37:09.000000000 +0200
+++ new/pylsqpack-0.3.18/src/pylsqpack.egg-info/PKG-INFO        2023-11-04 
20:00:31.000000000 +0100
@@ -1,41 +1,11 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
 Name: pylsqpack
-Version: 0.3.16
+Version: 0.3.18
 Summary: Python wrapper for the ls-qpack QPACK library
-Home-page: https://github.com/aiortc/pylsqpack
-Author: Jeremy Lainé
-Author-email: [email protected]
-License: BSD
-Description: pylsqpack
-        =========
-        
-        |rtd| |pypi-v| |pypi-pyversions| |pypi-l| |tests|
-        
-        .. |rtd| image:: 
https://readthedocs.org/projects/pylsqpack/badge/?version=latest
-            :target: https://pylsqpack.readthedocs.io/
-        
-        .. |pypi-v| image:: https://img.shields.io/pypi/v/pylsqpack.svg
-            :target: https://pypi.python.org/pypi/pylsqpack
-        
-        .. |pypi-pyversions| image:: 
https://img.shields.io/pypi/pyversions/pylsqpack.svg
-            :target: https://pypi.python.org/pypi/pylsqpack
-        
-        .. |pypi-l| image:: https://img.shields.io/pypi/l/pylsqpack.svg
-            :target: https://pypi.python.org/pypi/pylsqpack
-        
-        .. |tests| image:: 
https://github.com/aiortc/pylsqpack/workflows/tests/badge.svg
-            :target: https://github.com/aiortc/pylsqpack/actions
-        
-        ``pylsqpack`` is a wrapper around the `ls-qpack`_ library. It provides 
Python
-        `Decoder` and `Encoder` objects to read or write HTTP/3 headers 
compressed
-        with QPACK.
-        
-        To learn more about ``pylsqpack`` please `read the documentation`_.
-        
-        .. _ls-qpack: https://github.com/litespeedtech/ls-qpack/
-        .. _read the documentation: https://pylsqpack.readthedocs.io/en/latest/
-        
-Platform: UNKNOWN
+Author-email: Jeremy Lainé <[email protected]>
+License: BSD-3-Clause
+Project-URL: homepage, https://github.com/aiortc/pylsqpack
+Project-URL: documentation, https://pylsqpack.readthedocs.io/
 Classifier: Development Status :: 5 - Production/Stable
 Classifier: Environment :: Web Environment
 Classifier: Intended Audience :: Developers
@@ -43,8 +13,41 @@
 Classifier: Operating System :: OS Independent
 Classifier: Programming Language :: Python
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.7
 Classifier: Programming Language :: Python :: 3.8
 Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
+Classifier: Programming Language :: Python :: 3.12
 Classifier: Topic :: Internet :: WWW/HTTP
+Requires-Python: >=3.8
+Description-Content-Type: text/x-rst
+License-File: LICENSE
+
+pylsqpack
+=========
+
+|rtd| |pypi-v| |pypi-pyversions| |pypi-l| |tests|
+
+.. |rtd| image:: 
https://readthedocs.org/projects/pylsqpack/badge/?version=latest
+    :target: https://pylsqpack.readthedocs.io/
+
+.. |pypi-v| image:: https://img.shields.io/pypi/v/pylsqpack.svg
+    :target: https://pypi.python.org/pypi/pylsqpack
+
+.. |pypi-pyversions| image:: 
https://img.shields.io/pypi/pyversions/pylsqpack.svg
+    :target: https://pypi.python.org/pypi/pylsqpack
+
+.. |pypi-l| image:: https://img.shields.io/pypi/l/pylsqpack.svg
+    :target: https://pypi.python.org/pypi/pylsqpack
+
+.. |tests| image:: 
https://github.com/aiortc/pylsqpack/workflows/tests/badge.svg
+    :target: https://github.com/aiortc/pylsqpack/actions
+
+``pylsqpack`` is a wrapper around the `ls-qpack`_ library. It provides Python
+`Decoder` and `Encoder` objects to read or write HTTP/3 headers compressed
+with QPACK.
+
+To learn more about ``pylsqpack`` please `read the documentation`_.
+
+.. _ls-qpack: https://github.com/litespeedtech/ls-qpack/
+.. _read the documentation: https://pylsqpack.readthedocs.io/en/latest/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylsqpack-0.3.16/src/pylsqpack.egg-info/SOURCES.txt 
new/pylsqpack-0.3.18/src/pylsqpack.egg-info/SOURCES.txt
--- old/pylsqpack-0.3.16/src/pylsqpack.egg-info/SOURCES.txt     2022-03-30 
00:37:10.000000000 +0200
+++ new/pylsqpack-0.3.18/src/pylsqpack.egg-info/SOURCES.txt     2023-11-04 
20:00:31.000000000 +0100
@@ -1,16 +1,13 @@
 LICENSE
 MANIFEST.in
 README.rst
-setup.cfg
+pyproject.toml
 setup.py
 docs/Makefile
 docs/conf.py
 docs/index.rst
 src/pylsqpack/__init__.py
-src/pylsqpack/__init__.pyi
-src/pylsqpack/about.py
 src/pylsqpack/binding.c
-src/pylsqpack/py.typed
 src/pylsqpack.egg-info/PKG-INFO
 src/pylsqpack.egg-info/SOURCES.txt
 src/pylsqpack.egg-info/dependency_links.txt

Reply via email to