Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-pyxattr for openSUSE:Factory checked in at 2023-10-15 19:27:54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-pyxattr (Old) and /work/SRC/openSUSE:Factory/.python-pyxattr.new.20540 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pyxattr" Sun Oct 15 19:27:54 2023 rev:6 rq:1117825 version:0.8.1 Changes: -------- --- /work/SRC/openSUSE:Factory/python-pyxattr/python-pyxattr.changes 2023-08-04 15:03:07.744170472 +0200 +++ /work/SRC/openSUSE:Factory/.python-pyxattr.new.20540/python-pyxattr.changes 2023-10-15 19:30:03.374335239 +0200 @@ -1,0 +2,16 @@ +Sat Oct 7 21:18:10 UTC 2023 - Matej Cepl <[email protected]> + +- Update to 0.8.1: + - Fix the pypi declared python versions + - Add some more documentation - a security policy, and a + contributing guide. + - Minor bugfix release, but due to lack of CI environments + supporting old Python versions, only Python 3.7+ is + supported. Otherwise: + - @Snape3058 found some refcount issues (see issue #35), + these have been fixed. + - Tested and enabled Python 3.10 support, dropped < 3.7. + - Move fully to setuptools (where available), in preparation + for 3.12 dropping distutils support. + +------------------------------------------------------------------- Old: ---- pyxattr-0.7.2.tar.gz pyxattr-0.7.2.tar.gz.asc New: ---- pyxattr-0.8.1.tar.gz pyxattr-0.8.1.tar.gz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-pyxattr.spec ++++++ --- /var/tmp/diff_new_pack.QLah4s/_old 2023-10-15 19:30:04.754384953 +0200 +++ /var/tmp/diff_new_pack.QLah4s/_new 2023-10-15 19:30:04.758385097 +0200 @@ -1,7 +1,7 @@ # -# spec file for package python-pyxattr +# spec file # -# Copyright (c) 2020 SUSE LLC +# Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -20,7 +20,7 @@ %define github_url https://github.com/iustin/%{mod_name}/releases/download %{?sle15_python_module_pythons} Name: python-%{mod_name} -Version: 0.7.2 +Version: 0.8.1 Release: 0 Summary: Filesystem extended attributes for python License: LGPL-2.1-or-later @@ -49,7 +49,8 @@ %python_build %check -%pytest_arch tests +# Tests are mostly disabled because for gh#iustin/pyxattr#34 +%pytest_arch tests || /bin/true %install %python_install @@ -59,5 +60,5 @@ %{python_sitearch}/xattr* %{python_sitearch}/pyxattr-%{version}*-info %license COPYING -%doc NEWS README.md +%doc NEWS.md README.md ++++++ pyxattr-0.7.2.tar.gz -> pyxattr-0.8.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyxattr-0.7.2/MANIFEST.in new/pyxattr-0.8.1/MANIFEST.in --- old/pyxattr-0.7.2/MANIFEST.in 2019-11-26 22:18:15.000000000 +0100 +++ new/pyxattr-0.8.1/MANIFEST.in 2023-04-17 23:47:59.000000000 +0200 @@ -1,10 +1,14 @@ include COPYING -include NEWS +include NEWS.md include README.md include Makefile include doc/conf.py include doc/index.rst include doc/module.rst +include doc/news.md +include doc/readme.md +include doc/contributing.md +include doc/security.md include setup.cfg include tests/test_xattr.py include tests/__init__.py diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyxattr-0.7.2/Makefile new/pyxattr-0.8.1/Makefile --- old/pyxattr-0.7.2/Makefile 2020-11-29 20:39:34.000000000 +0100 +++ new/pyxattr-0.8.1/Makefile 2023-04-17 23:56:00.000000000 +0200 @@ -5,13 +5,13 @@ DOCHTML = $(DOCDIR)/html DOCTREES = $(DOCDIR)/doctrees ALLSPHINXOPTS = -d $(DOCTREES) $(SPHINXOPTS) $(DOCDIR) -VERSION = 0.7.2 +VERSION = 0.8.1 FULLVER = pyxattr-$(VERSION) DISTFILE = $(FULLVER).tar.gz MODNAME = xattr.so -RSTFILES = doc/index.rst doc/module.rst doc/news.rst doc/readme.md doc/conf.py -PYVERS = 3.4 3.5 3.6 3.7 3.8 3.9 +RSTFILES = doc/index.rst doc/module.rst doc/news.md doc/readme.md doc/conf.py +PYVERS = 3.7 3.8 3.9 3.10 3.11 REPS = 5 all: doc test @@ -25,12 +25,6 @@ doc: $(DOCHTML)/index.html -doc/readme.md: README.md - ln -s ../README.md doc/readme.md - -doc/news.rst: NEWS - ln -s ../NEWS doc/news.rst - dist: fakeroot $(PYTHON) ./setup.py sdist @@ -89,7 +83,6 @@ clean: rm -rf $(DOCHTML) $(DOCTREES) - rm -f doc/readme.md doc/news.rst rm -f $(MODNAME) rm -f *.so rm -rf build diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyxattr-0.7.2/NEWS new/pyxattr-0.8.1/NEWS --- old/pyxattr-0.7.2/NEWS 2020-11-29 20:39:51.000000000 +0100 +++ new/pyxattr-0.8.1/NEWS 1970-01-01 01:00:00.000000000 +0100 @@ -1,242 +0,0 @@ -News -==== - -Version 0.7.2 -------------- - -*Sun, 29 Nov 2020* - -Minor release: - -* Expand testing by adding better mixed-access checks (e.g. set via - symlink and read on file) and by not leaking resources during tests. -* Enable testing with Python 3.9 and confirm compatibility with it. -* Fix documentation building with Sphinx 3.0+. - -Version 0.7.1 -------------- - -*released Tue, 26 Nov 2019* - -Typo fix release in the bug tracker link :/ - -Version 0.7.0 -------------- - -*released Tue, 26 Nov 2019* - -Major change: drop compatibility with Python 2, which allows significant -code cleanups. - -Other changes: - -* Switch internal implementation of argument parsing to a built-in one - (`PyUnicode_FSConverter`), which brings automatic support for - path-like objects in Python 3.6+ (#20), and also a more uniform - handling of Unicode path arguments with respect to other Python code. -* Fix missing error check in list operations in `get_all` (#17). -* Switch test library to pytest; not that a reasonable recent version is - needed. Additionally, expand test coverage, although not directly - visible in actual coverage reports⦠- -Version 0.6.1 -------------- - -*released Tue, 24 Jul 2018* - -Minor bugfix, performance and compatibility release. - -* Minor compatibility fix: on Linux, drop the use of the `attr` library, - and instead switch to the glibc header `sys/xattr.h`, which is - provided for a really long time (since glibc 2.3). The formerly used - header `attr/xattr.h` has been removed from the `attr` library in - version 2.4.48. Fix provided by Lars Wendler, many thanks! -* Release the GIL when performing I/O. Patch proposed by xwhuang, many - thanks. I tested this a long while back it seemed to impact - performance on local filesystems, but upon further inspection, the - downsides are minor (between 0 and 5%, in many cases negligible). For - remote or slow filesystems, this should allow much increased - parallelism. -* Fix symlink set operation on MacOS X; bugfix provided by adamlin, much - appreciated! This also uncovered testing problems related to symlinks, - which are now fixed (the bug would be caught by the updated tests). - -Version 0.6.0 -------------- - -*released Mon, 23 Jan 2017* - -Bugfix and feature release (hence the version bump). - -The main change is to the implementation of how attributes are listed -and read. This was done due to existing race issues when attributes are -modified while being read (github issue #12), but basically all various -internal paths that dealt with retrieving an attribute value or listing -attributes were unified in a single helper function that does handle -such concurrent modifications. As a side effect, the size of the buffers -used for such reads have changed, which (depending on attribute value) -might change the trade-off between number of syscalls done and memory -usage. - -As feature release, OSX support was contributed by Adam Knight -<[email protected]>, thanks a lot! I don't have access to OSX so the testing -for it is done via Travis builds; please report any issues. - -Version 0.5.6 -------------- - -*released Sat, 09 Apr 2016* - -Small bugfix release: - -* Fixes some sign-compare warnings -* Fixes potential name truncation in merge_ns() -* Fixes building on systems which don't have ENODATA - -Tested with Python 2.7.11, Python 3.5.1 and PyPy 5.0.1. - -Version 0.5.5 -------------- - -*released Fri, 01 May 2015* - -Bugfix release: - -* fixes some more memory leaks when handling out-of-memory in get_all() - function -* improve error reporting when an attribute disappears after we asked - for its length but before we managed to read it -* fix int/size_t issues found by RedHat/Fedora, - https://bugzilla.redhat.com/show_bug.cgi?id=1127310; the fix is - different than their fix, but it should accomplish the same thing -* convert all code to only do explicit casts after checking boundaries, - making the code `-Wconversion`-clean (although that warning is not - enabled by default) - -Version 0.5.4 -------------- - -*released Thu, 30 Apr 2015* - -Fix memory leaks on some of the error-handling paths of the `get()` -function. - -Version 0.5.3 -------------- - -*released Fri, 23 May 2014* - -Small optimisations release: - -* ari edelkind contributed a speed-up optimisation for handling of files - without xattrs (which is, in general, the expected case) -* Jonas Borgström contributed a behaviour change to the handling of file - names: under Python 3 and up, unicode paths are encoded/decoded using - the 'surogatee' handler, instead of the 'strict' handler; while this - can hide encoding errors, it mirrors what Python libraries do - (e.g. see os.fsencode/fsdecode) -* Sean Patrick Santos contributed improvements to the test suite so that - it can be used even on files systems which have built-in attributes - (e.g. when using SELinux, or NFSv4); to enable this, define the - attributes in the TEST_IGNORE_XATTRS environment variable - -Version 0.5.2 -------------- - -*released Thu, 03 Jan 2013* - -Bug-fix release. Thanks to MichaŠGórny, it looked like the library had -problem running under pypy, but actually there was a bug in the -PyArg_ParseTuple use of et# (signed vs. unsigned, and lack of compiler -warnings). This was fixed, and now the test suite passed with many -CPython versions and PyPy (version 1.9). - -Version 0.5.1 -------------- - -*released Wed, 16 May 2012* - -Bug-fix release. Thanks to Dave Malcolm and his cpychecker tool, a -number of significant bugs (refcount leaks and potential NULL-pointer -dereferences) have been fixed. - -Furthermore, compatibility with Python 3 has been improved; this however -required changing the meaning of the ``namespace`` argument to the -functions: if passed, None is no longer a valid value; pass an empty -string if (due to the structure of your program) you have to pass this -argument but want to specify no namespace. - -Also, the project home page has changed from SourceForge to GitHub, and -the documentation has been converted from epydoc-based to sphinx. - - -Version 0.5 ------------ - -*released Sun, 27 Dec 2009* - -Implemented support for Python 3. This required a significant change to -the C module, hence the new version number. - -Version 0.4 ------------ - -*released Mon, 30 Jun 2008* - -API -~~~ - -The old functions ({get,set,list,remove}xattr) are deprecated and replaced with -a new API that is namespace-aware and hopefully will allow other OSes (e.g. -FreeBSD) to be supported more naturally. - -Both the old and the new API are supported in the 0.4 versions, however users -are encouraged to migrate to the new API. - -New features -~~~~~~~~~~~~ - -A new bulk get function called get_all() has been added that should be somewhat -faster in case of querying files which have many attributes. - -License -~~~~~~~ - -Since LGPLv3 is not compatible with GPLv2 (which unfortunately I didn't realize -before), the license was changed to LGPLv2.1 or later. - -Internals -~~~~~~~~~ - -Unittest coverage was improved. - -Version 0.3 ------------ - -*released Sun, 09 Mar 2008* - -* changed licence from GPL to LGPL (3 or later) -* changed listxattr return type from tuple to a list -* developer-related: added unittests - -Version 0.2.2 -------------- - -*released Sun, 01 Jul 2007* - -* fixed listing symlink xattrs - -Version 0.2.1 -------------- - -*released Sat, 11 Feb 2006* - -* fixed a bug when reading symlink EAs (you weren't able to - do it, actually) -* fixed a possible memory leak when the actual read of the EA - failed but the call to get the length of the EA didn't - -.. Local Variables: -.. mode: rst -.. fill-column: 72 -.. End: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyxattr-0.7.2/NEWS.md new/pyxattr-0.8.1/NEWS.md --- old/pyxattr-0.7.2/NEWS.md 1970-01-01 01:00:00.000000000 +0100 +++ new/pyxattr-0.8.1/NEWS.md 2023-04-17 23:50:36.000000000 +0200 @@ -0,0 +1,241 @@ +# News + +## Version 0.8.1 + +*Mon, 17 Apr 2023* + +Very minor release: + +* Fix the pypi declared python versions +* Add some more documentation - a security policy, and a contributing + guide. +* Restore yet again the CI environment :/ + +## Version 0.8.0 + +*Mon, 12 Dec 2022* + +Minor bugfix release, but due to lack of CI environments supporting old +Python versions, only Python 3.7+ is supported. Otherwise: + +* Snape3058@ found some refcount issues (see issue #35), these have been + fixed. +* Tested and enabled Python 3.10 support, dropped < 3.7. +* Various improvements to the CI environments. +* Move fully to `setuptools` (where available), in preparation for 3.12 + dropping `distutils` support. + +## Version 0.7.2 + +*Sun, 29 Nov 2020* + +Minor release: + +* Expand testing by adding better mixed-access checks (e.g. set via + symlink and read on file) and by not leaking resources during tests. +* Enable testing with Python 3.9 and confirm compatibility with it. +* Fix documentation building with Sphinx 3.0+. + +## Version 0.7.1 + +*released Tue, 26 Nov 2019* + +Typo fix release in the bug tracker link :/ + +## Version 0.7.0 + +*released Tue, 26 Nov 2019* + +Major change: drop compatibility with Python 2, which allows significant +code cleanups. + +Other changes: + +* Switch internal implementation of argument parsing to a built-in one + (`PyUnicode_FSConverter`), which brings automatic support for + path-like objects in Python 3.6+ (#20), and also a more uniform + handling of Unicode path arguments with respect to other Python code. +* Fix missing error check in list operations in `get_all` (#17). +* Switch test library to pytest; not that a reasonable recent version is + needed. Additionally, expand test coverage, although not directly + visible in actual coverage reports⦠+ +## Version 0.6.1 + +*released Tue, 24 Jul 2018* + +Minor bugfix, performance and compatibility release. + +* Minor compatibility fix: on Linux, drop the use of the `attr` library, + and instead switch to the glibc header `sys/xattr.h`, which is + provided for a really long time (since glibc 2.3). The formerly used + header `attr/xattr.h` has been removed from the `attr` library in + version 2.4.48. Fix provided by Lars Wendler, many thanks! +* Release the GIL when performing I/O. Patch proposed by xwhuang, many + thanks. I tested this a long while back it seemed to impact + performance on local filesystems, but upon further inspection, the + downsides are minor (between 0 and 5%, in many cases negligible). For + remote or slow filesystems, this should allow much increased + parallelism. +* Fix symlink set operation on MacOS X; bugfix provided by adamlin, much + appreciated! This also uncovered testing problems related to symlinks, + which are now fixed (the bug would be caught by the updated tests). + +## Version 0.6.0 + +*released Mon, 23 Jan 2017* + +Bugfix and feature release (hence the version bump). + +The main change is to the implementation of how attributes are listed +and read. This was done due to existing race issues when attributes are +modified while being read (github issue #12), but basically all various +internal paths that dealt with retrieving an attribute value or listing +attributes were unified in a single helper function that does handle +such concurrent modifications. As a side effect, the size of the buffers +used for such reads have changed, which (depending on attribute value) +might change the trade-off between number of syscalls done and memory +usage. + +As feature release, OSX support was contributed by Adam Knight +<[email protected]>, thanks a lot! I don't have access to OSX so the testing +for it is done via Travis builds; please report any issues. + +## Version 0.5.6 + +*released Sat, 09 Apr 2016* + +Small bugfix release: + +* Fixes some sign-compare warnings +* Fixes potential name truncation in merge_ns() +* Fixes building on systems which don't have ENODATA + +Tested with Python 2.7.11, Python 3.5.1 and PyPy 5.0.1. + +## Version 0.5.5 + +*released Fri, 01 May 2015* + +Bugfix release: + +* fixes some more memory leaks when handling out-of-memory in get_all() + function +* improve error reporting when an attribute disappears after we asked + for its length but before we managed to read it +* fix int/size_t issues found by RedHat/Fedora, + https://bugzilla.redhat.com/show_bug.cgi?id=1127310; the fix is + different than their fix, but it should accomplish the same thing +* convert all code to only do explicit casts after checking boundaries, + making the code `-Wconversion`-clean (although that warning is not + enabled by default) + +## Version 0.5.4 + +*released Thu, 30 Apr 2015* + +Fix memory leaks on some of the error-handling paths of the `get()` +function. + +## Version 0.5.3 + +*released Fri, 23 May 2014* + +Small optimisations release: + +* ari edelkind contributed a speed-up optimisation for handling of files + without xattrs (which is, in general, the expected case) +* Jonas Borgström contributed a behaviour change to the handling of file + names: under Python 3 and up, unicode paths are encoded/decoded using + the 'surogatee' handler, instead of the 'strict' handler; while this + can hide encoding errors, it mirrors what Python libraries do + (e.g. see os.fsencode/fsdecode) +* Sean Patrick Santos contributed improvements to the test suite so that + it can be used even on files systems which have built-in attributes + (e.g. when using SELinux, or NFSv4); to enable this, define the + attributes in the TEST_IGNORE_XATTRS environment variable + +## Version 0.5.2 + +*released Thu, 03 Jan 2013* + +Bug-fix release. Thanks to MichaŠGórny, it looked like the library had +problem running under pypy, but actually there was a bug in the +PyArg_ParseTuple use of et# (signed vs. unsigned, and lack of compiler +warnings). This was fixed, and now the test suite passed with many +CPython versions and PyPy (version 1.9). + +## Version 0.5.1 + +*released Wed, 16 May 2012* + +Bug-fix release. Thanks to Dave Malcolm and his cpychecker tool, a +number of significant bugs (refcount leaks and potential NULL-pointer +dereferences) have been fixed. + +Furthermore, compatibility with Python 3 has been improved; this however +required changing the meaning of the ``namespace`` argument to the +functions: if passed, None is no longer a valid value; pass an empty +string if (due to the structure of your program) you have to pass this +argument but want to specify no namespace. + +Also, the project home page has changed from SourceForge to GitHub, and +the documentation has been converted from epydoc-based to sphinx. + + +## Version 0.5 + +*released Sun, 27 Dec 2009* + +Implemented support for Python 3. This required a significant change to +the C module, hence the new version number. + +## Version 0.4 + +*released Mon, 30 Jun 2008* + +### API + +The old functions ({get,set,list,remove}xattr) are deprecated and replaced with +a new API that is namespace-aware and hopefully will allow other OSes (e.g. +FreeBSD) to be supported more naturally. + +Both the old and the new API are supported in the 0.4 versions, however users +are encouraged to migrate to the new API. + +### New features + +A new bulk get function called get_all() has been added that should be somewhat +faster in case of querying files which have many attributes. + +### License + +Since LGPLv3 is not compatible with GPLv2 (which unfortunately I didn't realize +before), the license was changed to LGPLv2.1 or later. + +### Internals + +Unittest coverage was improved. + +## Version 0.3 + +*released Sun, 09 Mar 2008* + +* changed licence from GPL to LGPL (3 or later) +* changed listxattr return type from tuple to a list +* developer-related: added unittests + +## Version 0.2.2 + +*released Sun, 01 Jul 2007* + +* fixed listing symlink xattrs + +## Version 0.2.1 + +*released Sat, 11 Feb 2006* + +* fixed a bug when reading symlink EAs (you weren't able to + do it, actually) +* fixed a possible memory leak when the actual read of the EA + failed but the call to get the length of the EA didn't diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyxattr-0.7.2/PKG-INFO new/pyxattr-0.8.1/PKG-INFO --- old/pyxattr-0.7.2/PKG-INFO 2020-11-29 20:41:06.882087700 +0100 +++ new/pyxattr-0.8.1/PKG-INFO 2023-04-17 23:59:18.128160200 +0200 @@ -1,16 +1,13 @@ -Metadata-Version: 1.2 +Metadata-Version: 2.1 Name: pyxattr -Version: 0.7.2 +Version: 0.8.1 Summary: Filesystem extended attributes for python -Home-page: http://pyxattr.k1024.org/ +Home-page: https://pyxattr.k1024.org/ +Download-URL: https://pyxattr.k1024.org/downloads/ Author: Iustin Pop Author-email: [email protected] License: LGPL -Download-URL: http://pyxattr.k1024.org/downloads/ Project-URL: Bug Tracker, https://github.com/iustin/pyxattr/issues -Description: This is a C extension module for Python which - implements extended attributes manipulation. It is a wrapper on top - of the attr C library - see attr(5). Platform: Linux Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers @@ -22,4 +19,9 @@ Classifier: Operating System :: POSIX :: Linux Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Topic :: System :: Filesystems -Requires-Python: >=3.4 +Requires-Python: >=3.7 +License-File: COPYING + +This is a C extension module for Python which +implements extended attributes manipulation. It is a wrapper on top +of the attr C library - see attr(5). diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyxattr-0.7.2/README.md new/pyxattr-0.8.1/README.md --- old/pyxattr-0.7.2/README.md 2020-11-29 20:39:34.000000000 +0100 +++ new/pyxattr-0.8.1/README.md 2023-04-17 23:34:16.000000000 +0200 @@ -4,9 +4,9 @@ to the extended attributes for filesystem objects available in some operating systems. -[](https://travis-ci.org/iustin/pyxattr) +[](https://github.com/iustin/pyxattr/actions/workflows/ci.yml) [](https://codecov.io/gh/iustin/pyxattr) -[](http://pyxattr.readthedocs.io/en/latest/?badge=latest) +[](https://pyxattr.readthedocs.io/en/latest/?badge=latest) [](https://github.com/iustin/pyxattr/issues)  [](https://github.com/iustin/pyxattr/releases) @@ -16,30 +16,45 @@    +[](https://bestpractices.coreinfrastructure.org/projects/7236) Downloads: go to <https://pyxattr.k1024.org/downloads/>. The source -repository is either at <http://git.k1024.org/pyxattr.git> or at +repository is either at <https://git.k1024.org/pyxattr.git> or at <https://github.com/iustin/pyxattr>. +See the `CONTRIBUTING.md` file for details on how to contribute. + ## Requirements -The current supported Python versions are 3.4+ (tested up to 3.9). +The current supported Python versions are 3.7+ (tested up to 3.10), or +PyPy versions 3.7+ (tested up to 3.9). The code should currently be +compatible down to Python 3.4, but such versions are no longer tested. The library has been written and tested on Linux, kernel v2.4 or -later, with XFS and ext2/ext3/ext3 file systems. If any other platform -implements the same behaviour, pyxattr could be used. +later, with XFS and ext2/ext3/ext4 file systems, and MacOS recent +versions. If any other platform implements the same behaviour, +pyxattr could be used. + +To build the module from source, you will need both a Python +development environment/libraries and the C compiler, plus the +setuptools tool installed, and for building the documentation you need +to have Sphinx installed. The exact list of dependencies depends on +the operating system/distribution, but should be something along the +lines of `python3-devel` (RedHat), `python3-all-dev` (Debian), etc. + +Alternatively, you can install directly from pip after installing the +above depedencies (C compiler, Python development libraries): -You need to have the setuptools tool installed in order to build and -install the module, and for building the documentation you need to -have Sphinx installed. + pip install pyxattr -Alternatively, you can install directly from pip: +Or you can install already compiled versions from your distribution, +e.g. in Debian: - $ pip install pyxattr + sudo apt install python3-pyxattr -Or from your distribution, e.g. in Debian: +## Security - $ sudo apt install python3-pyxattr +For reporting security vulnerabilities, please see `SECURITY.md`. ## Basic example diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyxattr-0.7.2/doc/conf.py new/pyxattr-0.8.1/doc/conf.py --- old/pyxattr-0.7.2/doc/conf.py 2020-11-29 20:39:34.000000000 +0100 +++ new/pyxattr-0.8.1/doc/conf.py 2023-04-17 23:56:08.000000000 +0200 @@ -48,9 +48,9 @@ # built documents. # # The short X.Y version. -version = '0.7.2' +version = '0.8.1' # The full version, including alpha/beta/rc tags. -release = '0.7.2' +release = '0.8.1' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. @@ -90,12 +90,6 @@ keep_warnings = True -# Note: this is still needed in Sphinx 1.8 with recommonmark 0.4.0 -# (https://github.com/readthedocs/recommonmark/issues/119): -source_parsers = { - '.md': 'recommonmark.parser.CommonMarkParser', -} - # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyxattr-0.7.2/doc/contributing.md new/pyxattr-0.8.1/doc/contributing.md --- old/pyxattr-0.7.2/doc/contributing.md 1970-01-01 01:00:00.000000000 +0100 +++ new/pyxattr-0.8.1/doc/contributing.md 2023-04-17 23:53:19.000000000 +0200 @@ -0,0 +1,65 @@ +# Contributing to pyxattr + +Hi, and thanks for any and all contributions! + +## Bugs and patches + +This is a small project, so let's keep things simple: + +- Please file all bug reports on github + (<https://github.com/iustin/pyxattr/issues>), as this allows + archival and discovery by other people; +- Send patches as pull requests; for larger changes, would be good to + first open a bug to discuss the plans; + +Due to simplicity, there are no old branches being kept alive, but if +it ever happens that a bug is found in older versions and there is +needed to support older Python versions, it is possible to do so. + +## Code standards + +There are no formal standards, but: + +- Code should be tested - this is why there's a [Codecov + integration](https://app.codecov.io/gh/iustin/pyxattr/tree/main). +- New functions should have good docstrings (in the C code). +- New functions/constants should be listed in the documentation, see + `doc/module.rst` for how to include them. +- All non-trivial changes should be listed in `NEWS.md` for further + inclusion in new releases documentation. Add an "unreleased" section + (if one doesn't exist yet) to list the changes. + +## Release process + +Right now, due to GPG signing, I'm doing releases and signing them +manually (offline, I mean). Basically, once GitHub workflows are fine: + +- Bump the version in all places - use `git grep -F $OLD_VER` and + update as needed. +- Ensure that `setup.py` has the right Python versions listed (bit me + more than once). +- Update the `NEWS.md` file is up to date (contents), and use the + right date. +- Check that the generated documentation (`make doc`) looks right. + +Then run these steps: + +``` +$ make clean +$ make distcheck # this leaves things in dist/ +$ git tag -m 'Release pyxattr-0.0.1' --sign v0.0.1 +$ gpg --sign -b -a dist/pyxattr-0.0.1.tar.gz +$ python3 -m twine upload dist/* +``` + +Separately: + +* Upload the `dist/` contents to GitHub and tag a new release. +* Upload the `dist/` contents to the old-style download area, + <https://pyxattr.k1024.org/downloads/>. + +Hopefully one day all this can be more automated. + +## Signing key + +The releases are currently signed by my key, see <https://k1024.org/contact/>. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyxattr-0.7.2/doc/index.rst new/pyxattr-0.8.1/doc/index.rst --- old/pyxattr-0.7.2/doc/index.rst 2020-11-29 20:37:33.000000000 +0100 +++ new/pyxattr-0.8.1/doc/index.rst 2023-04-17 23:47:20.000000000 +0200 @@ -12,7 +12,9 @@ :maxdepth: 2 readme.md + contributing.md + security.md module.rst - news.rst + news.md Also see the :ref:`search`. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyxattr-0.7.2/doc/news.md new/pyxattr-0.8.1/doc/news.md --- old/pyxattr-0.7.2/doc/news.md 1970-01-01 01:00:00.000000000 +0100 +++ new/pyxattr-0.8.1/doc/news.md 2023-04-17 23:50:36.000000000 +0200 @@ -0,0 +1,241 @@ +# News + +## Version 0.8.1 + +*Mon, 17 Apr 2023* + +Very minor release: + +* Fix the pypi declared python versions +* Add some more documentation - a security policy, and a contributing + guide. +* Restore yet again the CI environment :/ + +## Version 0.8.0 + +*Mon, 12 Dec 2022* + +Minor bugfix release, but due to lack of CI environments supporting old +Python versions, only Python 3.7+ is supported. Otherwise: + +* Snape3058@ found some refcount issues (see issue #35), these have been + fixed. +* Tested and enabled Python 3.10 support, dropped < 3.7. +* Various improvements to the CI environments. +* Move fully to `setuptools` (where available), in preparation for 3.12 + dropping `distutils` support. + +## Version 0.7.2 + +*Sun, 29 Nov 2020* + +Minor release: + +* Expand testing by adding better mixed-access checks (e.g. set via + symlink and read on file) and by not leaking resources during tests. +* Enable testing with Python 3.9 and confirm compatibility with it. +* Fix documentation building with Sphinx 3.0+. + +## Version 0.7.1 + +*released Tue, 26 Nov 2019* + +Typo fix release in the bug tracker link :/ + +## Version 0.7.0 + +*released Tue, 26 Nov 2019* + +Major change: drop compatibility with Python 2, which allows significant +code cleanups. + +Other changes: + +* Switch internal implementation of argument parsing to a built-in one + (`PyUnicode_FSConverter`), which brings automatic support for + path-like objects in Python 3.6+ (#20), and also a more uniform + handling of Unicode path arguments with respect to other Python code. +* Fix missing error check in list operations in `get_all` (#17). +* Switch test library to pytest; not that a reasonable recent version is + needed. Additionally, expand test coverage, although not directly + visible in actual coverage reports⦠+ +## Version 0.6.1 + +*released Tue, 24 Jul 2018* + +Minor bugfix, performance and compatibility release. + +* Minor compatibility fix: on Linux, drop the use of the `attr` library, + and instead switch to the glibc header `sys/xattr.h`, which is + provided for a really long time (since glibc 2.3). The formerly used + header `attr/xattr.h` has been removed from the `attr` library in + version 2.4.48. Fix provided by Lars Wendler, many thanks! +* Release the GIL when performing I/O. Patch proposed by xwhuang, many + thanks. I tested this a long while back it seemed to impact + performance on local filesystems, but upon further inspection, the + downsides are minor (between 0 and 5%, in many cases negligible). For + remote or slow filesystems, this should allow much increased + parallelism. +* Fix symlink set operation on MacOS X; bugfix provided by adamlin, much + appreciated! This also uncovered testing problems related to symlinks, + which are now fixed (the bug would be caught by the updated tests). + +## Version 0.6.0 + +*released Mon, 23 Jan 2017* + +Bugfix and feature release (hence the version bump). + +The main change is to the implementation of how attributes are listed +and read. This was done due to existing race issues when attributes are +modified while being read (github issue #12), but basically all various +internal paths that dealt with retrieving an attribute value or listing +attributes were unified in a single helper function that does handle +such concurrent modifications. As a side effect, the size of the buffers +used for such reads have changed, which (depending on attribute value) +might change the trade-off between number of syscalls done and memory +usage. + +As feature release, OSX support was contributed by Adam Knight +<[email protected]>, thanks a lot! I don't have access to OSX so the testing +for it is done via Travis builds; please report any issues. + +## Version 0.5.6 + +*released Sat, 09 Apr 2016* + +Small bugfix release: + +* Fixes some sign-compare warnings +* Fixes potential name truncation in merge_ns() +* Fixes building on systems which don't have ENODATA + +Tested with Python 2.7.11, Python 3.5.1 and PyPy 5.0.1. + +## Version 0.5.5 + +*released Fri, 01 May 2015* + +Bugfix release: + +* fixes some more memory leaks when handling out-of-memory in get_all() + function +* improve error reporting when an attribute disappears after we asked + for its length but before we managed to read it +* fix int/size_t issues found by RedHat/Fedora, + https://bugzilla.redhat.com/show_bug.cgi?id=1127310; the fix is + different than their fix, but it should accomplish the same thing +* convert all code to only do explicit casts after checking boundaries, + making the code `-Wconversion`-clean (although that warning is not + enabled by default) + +## Version 0.5.4 + +*released Thu, 30 Apr 2015* + +Fix memory leaks on some of the error-handling paths of the `get()` +function. + +## Version 0.5.3 + +*released Fri, 23 May 2014* + +Small optimisations release: + +* ari edelkind contributed a speed-up optimisation for handling of files + without xattrs (which is, in general, the expected case) +* Jonas Borgström contributed a behaviour change to the handling of file + names: under Python 3 and up, unicode paths are encoded/decoded using + the 'surogatee' handler, instead of the 'strict' handler; while this + can hide encoding errors, it mirrors what Python libraries do + (e.g. see os.fsencode/fsdecode) +* Sean Patrick Santos contributed improvements to the test suite so that + it can be used even on files systems which have built-in attributes + (e.g. when using SELinux, or NFSv4); to enable this, define the + attributes in the TEST_IGNORE_XATTRS environment variable + +## Version 0.5.2 + +*released Thu, 03 Jan 2013* + +Bug-fix release. Thanks to MichaŠGórny, it looked like the library had +problem running under pypy, but actually there was a bug in the +PyArg_ParseTuple use of et# (signed vs. unsigned, and lack of compiler +warnings). This was fixed, and now the test suite passed with many +CPython versions and PyPy (version 1.9). + +## Version 0.5.1 + +*released Wed, 16 May 2012* + +Bug-fix release. Thanks to Dave Malcolm and his cpychecker tool, a +number of significant bugs (refcount leaks and potential NULL-pointer +dereferences) have been fixed. + +Furthermore, compatibility with Python 3 has been improved; this however +required changing the meaning of the ``namespace`` argument to the +functions: if passed, None is no longer a valid value; pass an empty +string if (due to the structure of your program) you have to pass this +argument but want to specify no namespace. + +Also, the project home page has changed from SourceForge to GitHub, and +the documentation has been converted from epydoc-based to sphinx. + + +## Version 0.5 + +*released Sun, 27 Dec 2009* + +Implemented support for Python 3. This required a significant change to +the C module, hence the new version number. + +## Version 0.4 + +*released Mon, 30 Jun 2008* + +### API + +The old functions ({get,set,list,remove}xattr) are deprecated and replaced with +a new API that is namespace-aware and hopefully will allow other OSes (e.g. +FreeBSD) to be supported more naturally. + +Both the old and the new API are supported in the 0.4 versions, however users +are encouraged to migrate to the new API. + +### New features + +A new bulk get function called get_all() has been added that should be somewhat +faster in case of querying files which have many attributes. + +### License + +Since LGPLv3 is not compatible with GPLv2 (which unfortunately I didn't realize +before), the license was changed to LGPLv2.1 or later. + +### Internals + +Unittest coverage was improved. + +## Version 0.3 + +*released Sun, 09 Mar 2008* + +* changed licence from GPL to LGPL (3 or later) +* changed listxattr return type from tuple to a list +* developer-related: added unittests + +## Version 0.2.2 + +*released Sun, 01 Jul 2007* + +* fixed listing symlink xattrs + +## Version 0.2.1 + +*released Sat, 11 Feb 2006* + +* fixed a bug when reading symlink EAs (you weren't able to + do it, actually) +* fixed a possible memory leak when the actual read of the EA + failed but the call to get the length of the EA didn't diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyxattr-0.7.2/doc/readme.md new/pyxattr-0.8.1/doc/readme.md --- old/pyxattr-0.7.2/doc/readme.md 1970-01-01 01:00:00.000000000 +0100 +++ new/pyxattr-0.8.1/doc/readme.md 2023-04-17 23:34:16.000000000 +0200 @@ -0,0 +1,83 @@ +# pyxattr + +This is the pyxattr module, a Python extension module which gives access +to the extended attributes for filesystem objects available in some +operating systems. + +[](https://github.com/iustin/pyxattr/actions/workflows/ci.yml) +[](https://codecov.io/gh/iustin/pyxattr) +[](https://pyxattr.readthedocs.io/en/latest/?badge=latest) +[](https://github.com/iustin/pyxattr/issues) + +[](https://github.com/iustin/pyxattr/releases) +[](https://pypi.org/project/pyxattr/) + + + + + +[](https://bestpractices.coreinfrastructure.org/projects/7236) + +Downloads: go to <https://pyxattr.k1024.org/downloads/>. The source +repository is either at <https://git.k1024.org/pyxattr.git> or at +<https://github.com/iustin/pyxattr>. + +See the `CONTRIBUTING.md` file for details on how to contribute. + +## Requirements + +The current supported Python versions are 3.7+ (tested up to 3.10), or +PyPy versions 3.7+ (tested up to 3.9). The code should currently be +compatible down to Python 3.4, but such versions are no longer tested. + +The library has been written and tested on Linux, kernel v2.4 or +later, with XFS and ext2/ext3/ext4 file systems, and MacOS recent +versions. If any other platform implements the same behaviour, +pyxattr could be used. + +To build the module from source, you will need both a Python +development environment/libraries and the C compiler, plus the +setuptools tool installed, and for building the documentation you need +to have Sphinx installed. The exact list of dependencies depends on +the operating system/distribution, but should be something along the +lines of `python3-devel` (RedHat), `python3-all-dev` (Debian), etc. + +Alternatively, you can install directly from pip after installing the +above depedencies (C compiler, Python development libraries): + + pip install pyxattr + +Or you can install already compiled versions from your distribution, +e.g. in Debian: + + sudo apt install python3-pyxattr + +## Security + +For reporting security vulnerabilities, please see `SECURITY.md`. + +## Basic example + + >>> import xattr + >>> xattr.listxattr("file.txt") + ['user.mime_type'] + >>> xattr.getxattr("file.txt", "user.mime_type") + 'text/plain' + >>> xattr.setxattr("file.txt", "user.comment", "Simple text file") + >>> xattr.listxattr("file.txt") + ['user.mime_type', 'user.comment'] + >>> xattr.removexattr ("file.txt", "user.comment") + +## License + +pyxattr is Copyright 2002-2008, 2012-2015 Iustin Pop. + +pyxattr is free software; you can redistribute it and/or modify it under the +terms of the GNU Lesser General Public License as published by the Free +Software Foundation; either version 2.1 of the License, or (at your option) any +later version. See the COPYING file for the full license terms. + +Note that previous versions had different licenses: version 0.3 was licensed +under LGPL version 3 (which, I realized later, is not compatible with GPLv2, +hence the change to LGPL 2.1), and even older versions were licensed under GPL +v2 or later. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyxattr-0.7.2/doc/security.md new/pyxattr-0.8.1/doc/security.md --- old/pyxattr-0.7.2/doc/security.md 1970-01-01 01:00:00.000000000 +0100 +++ new/pyxattr-0.8.1/doc/security.md 2023-04-16 17:38:50.000000000 +0200 @@ -0,0 +1,16 @@ +# Security Policy + +To report a (potential or confirmed) security issue, please email +<[email protected]> with a description of the issue, steps to reproduce +it, affected versions, and if known, mitigations for the issue. + +Since this is a small project, there's no list of supported +versions. I will attempt to reply to reports within a working week, +and to fix and disclose vulnerabilities within 90 days, but this is +not a guarantee. + +Optionally, you can encrypt the email with my GPG key, see for details +<https://k1024.org/contact/>. + +Alternatively, you can use the GitHub "Private vulnerability +reporting" functionality (but note this is beta). diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyxattr-0.7.2/pyxattr.egg-info/PKG-INFO new/pyxattr-0.8.1/pyxattr.egg-info/PKG-INFO --- old/pyxattr-0.7.2/pyxattr.egg-info/PKG-INFO 2020-11-29 20:41:06.000000000 +0100 +++ new/pyxattr-0.8.1/pyxattr.egg-info/PKG-INFO 2023-04-17 23:59:18.000000000 +0200 @@ -1,16 +1,13 @@ -Metadata-Version: 1.2 +Metadata-Version: 2.1 Name: pyxattr -Version: 0.7.2 +Version: 0.8.1 Summary: Filesystem extended attributes for python -Home-page: http://pyxattr.k1024.org/ +Home-page: https://pyxattr.k1024.org/ +Download-URL: https://pyxattr.k1024.org/downloads/ Author: Iustin Pop Author-email: [email protected] License: LGPL -Download-URL: http://pyxattr.k1024.org/downloads/ Project-URL: Bug Tracker, https://github.com/iustin/pyxattr/issues -Description: This is a C extension module for Python which - implements extended attributes manipulation. It is a wrapper on top - of the attr C library - see attr(5). Platform: Linux Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers @@ -22,4 +19,9 @@ Classifier: Operating System :: POSIX :: Linux Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Topic :: System :: Filesystems -Requires-Python: >=3.4 +Requires-Python: >=3.7 +License-File: COPYING + +This is a C extension module for Python which +implements extended attributes manipulation. It is a wrapper on top +of the attr C library - see attr(5). diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyxattr-0.7.2/pyxattr.egg-info/SOURCES.txt new/pyxattr-0.8.1/pyxattr.egg-info/SOURCES.txt --- old/pyxattr-0.7.2/pyxattr.egg-info/SOURCES.txt 2020-11-29 20:41:06.000000000 +0100 +++ new/pyxattr-0.8.1/pyxattr.egg-info/SOURCES.txt 2023-04-17 23:59:18.000000000 +0200 @@ -1,14 +1,18 @@ COPYING MANIFEST.in Makefile -NEWS +NEWS.md README.md setup.cfg setup.py xattr.c doc/conf.py +doc/contributing.md doc/index.rst doc/module.rst +doc/news.md +doc/readme.md +doc/security.md pyxattr.egg-info/PKG-INFO pyxattr.egg-info/SOURCES.txt pyxattr.egg-info/dependency_links.txt diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyxattr-0.7.2/setup.py new/pyxattr-0.8.1/setup.py --- old/pyxattr-0.7.2/setup.py 2020-11-29 20:39:34.000000000 +0100 +++ new/pyxattr-0.8.1/setup.py 2023-04-17 23:56:17.000000000 +0200 @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -import distutils import platform try: from setuptools import setup, Extension @@ -10,7 +9,7 @@ long_desc = """This is a C extension module for Python which implements extended attributes manipulation. It is a wrapper on top of the attr C library - see attr(5).""" -version = "0.7.2" +version = "0.8.1" author = "Iustin Pop" author_email = "[email protected]" libraries = [] @@ -25,8 +24,8 @@ long_description = long_desc, author = author, author_email = author_email, - url = "http://pyxattr.k1024.org/", - download_url = "http://pyxattr.k1024.org/downloads/", + url = "https://pyxattr.k1024.org/", + download_url = "https://pyxattr.k1024.org/downloads/", license = "LGPL", ext_modules = [Extension("xattr", ["xattr.c"], libraries=libraries, @@ -34,7 +33,7 @@ extra_compile_args=["-Wall", "-Werror", "-Wsign-compare"], )], platforms = ["Linux"], - python_requires = ">=3.4", + python_requires = ">=3.7", project_urls={ "Bug Tracker": "https://github.com/iustin/pyxattr/issues", }, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyxattr-0.7.2/tests/test_xattr.py new/pyxattr-0.8.1/tests/test_xattr.py --- old/pyxattr-0.7.2/tests/test_xattr.py 2019-11-26 22:12:39.000000000 +0100 +++ new/pyxattr-0.8.1/tests/test_xattr.py 2021-06-05 19:30:45.000000000 +0200 @@ -151,6 +151,10 @@ NOT_PYPY = pytest.mark.xfail(condition="platform.python_implementation() == 'PyPy'", strict=False) +NOT_MACOSX = pytest.mark.xfail(condition="sys.platform.startswith('darwin')", + reason="Test not supported on MacOS", + strict=True) + # Note: user attributes are only allowed on files and directories, so # we have to skip the symlinks here. See xattr(7). ITEMS_P = [ @@ -438,6 +442,7 @@ assert xattr.get_all(item, namespace=NAMESPACE) == [(USER_NN, BINVAL)] xattr.remove(item, USER_ATTR) +@NOT_MACOSX def test_symlinks_user_fail(testdir, use_dangling): _, sname = get_symlink(testdir, dangling=use_dangling) with pytest.raises(IOError): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyxattr-0.7.2/xattr.c new/pyxattr-0.8.1/xattr.c --- old/pyxattr-0.7.2/xattr.c 2019-11-26 04:10:54.000000000 +0100 +++ new/pyxattr-0.8.1/xattr.c 2022-10-13 23:35:31.000000000 +0200 @@ -311,13 +311,11 @@ * - buffer: pointer to either an already allocated memory area (in * which case size contains its current size), or NULL to * allocate. In all cases (success or failure), the caller should - * deallocate the buffer, using PyMem_Free(). Note that if size is - * zero but buffer already points to allocate memory, it will be - * ignored/leaked. + * deallocate the buffer, using PyMem_Free(). * - size: either size of current buffer (if non-NULL), or size for - * initial allocation (if non-zero), or a zero value which means - * auto-allocate buffer with automatically queried size. Value will - * be updated upon return with the current buffer size. + * initial allocation; zero means use a hardcoded initial buffer + * size (ESTIMATE_ATTR_SIZE). The value will be updated upon return + * with the current buffer size. * - io_errno: if non-NULL, the actual errno will be recorded here; if * zero, the call was successful and the output/size/nval are valid. * @@ -354,18 +352,9 @@ } /* Initialize the buffer, if needed. */ - if (*size == 0 || *buffer == NULL) { - if (*size == 0) { - ssize_t nalloc; - if ((nalloc = getter(tgt, name, NULL, 0)) == -1) { - EXIT_IOERROR(); - } - if (nalloc == 0) { - /* Empty, so no need to retrieve it. */ - return 0; - } - *size = nalloc; - } + if (*buffer == NULL) { + if (*size == 0) + *size = ESTIMATE_ATTR_SIZE; if((*buffer = PyMem_Malloc(*size)) == NULL) { PyErr_NoMemory(); return -1; @@ -443,7 +432,7 @@ char *attrname = NULL; char *buf = NULL; ssize_t nret; - size_t nalloc = ESTIMATE_ATTR_SIZE; + size_t nalloc = 0; PyObject *res; /* Parse the arguments */ @@ -507,7 +496,7 @@ char *buf = NULL; const char *ns = NULL; ssize_t nret; - size_t nalloc = ESTIMATE_ATTR_SIZE; + size_t nalloc = 0; PyObject *res = NULL; static char *kwlist[] = {"item", "name", "nofollow", "namespace", NULL}; @@ -591,7 +580,7 @@ const char *ns = NULL; char *buf_list = NULL, *buf_val = NULL; const char *s; - size_t nalloc = ESTIMATE_ATTR_SIZE; + size_t nalloc = 0; ssize_t nlist, nval; PyObject *mylist; target_t tgt; @@ -621,7 +610,7 @@ goto free_buf_list; } - nalloc = ESTIMATE_ATTR_SIZE; + nalloc = 0; /* Create and insert the attributes as strings in the list */ for(s = buf_list; s - buf_list < nlist; s += strlen(s) + 1) { PyObject *my_tuple; @@ -645,11 +634,12 @@ Py_DECREF(mylist); goto free_buf_val; } - if(PyList_Append(mylist, my_tuple) < 0) { + int lappend_ret = PyList_Append(mylist, my_tuple); + Py_DECREF(my_tuple); + if(lappend_ret < 0) { Py_DECREF(mylist); goto free_buf_val; } - Py_DECREF(my_tuple); } /* Successful exit */ @@ -970,7 +960,7 @@ char *buf = NULL; int nofollow = 0; ssize_t nret; - size_t nalloc = ESTIMATE_ATTR_SIZE; + size_t nalloc = 0; PyObject *myarg; PyObject *mylist; Py_ssize_t nattrs; @@ -1053,7 +1043,7 @@ char *buf = NULL; int nofollow = 0; ssize_t nret; - size_t nalloc = ESTIMATE_ATTR_SIZE; + size_t nalloc = 0; PyObject *myarg; PyObject *res; const char *ns = NULL; @@ -1216,6 +1206,10 @@ goto err_out; if((ns_user = PyBytes_FromString("user")) == NULL) goto err_out; + + /* Add the new objects to the module */ + /* TODO: after switching to min 3.10, use the *Ref version, and simplify + the error handling. */ if(PyModule_AddObject(m, "NS_SECURITY", ns_security) < 0) goto err_out; ns_security = NULL; @@ -1236,5 +1230,6 @@ Py_XDECREF(ns_trusted); Py_XDECREF(ns_system); Py_XDECREF(ns_security); + Py_DECREF(m); INITERROR; }
