forked from pool/python-pyxdg
- add resource_leak.patch - Fix several ResourceWarnings: unclosed file
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-pyxdg?expand=0&rev=16
This commit is contained in:
@@ -1,3 +1,8 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Apr 24 13:12:09 UTC 2019 - Ondřej Súkup <mimi.vx@gmail.com>
|
||||||
|
|
||||||
|
- add resource_leak.patch - Fix several ResourceWarnings: unclosed file
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Dec 4 12:53:24 UTC 2018 - Matej Cepl <mcepl@suse.com>
|
Tue Dec 4 12:53:24 UTC 2018 - Matej Cepl <mcepl@suse.com>
|
||||||
|
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# spec file for package python-pyxdg
|
# spec file for package python-pyxdg
|
||||||
#
|
#
|
||||||
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
|
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
|
||||||
#
|
#
|
||||||
# All modifications and additions to the file contributed by third parties
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
@@ -26,6 +26,7 @@ License: LGPL-2.1-only
|
|||||||
Group: Development/Languages/Python
|
Group: Development/Languages/Python
|
||||||
URL: http://freedesktop.org/wiki/Software/pyxdg
|
URL: http://freedesktop.org/wiki/Software/pyxdg
|
||||||
Source: https://files.pythonhosted.org/packages/source/p/pyxdg/pyxdg-%{version}.tar.gz
|
Source: https://files.pythonhosted.org/packages/source/p/pyxdg/pyxdg-%{version}.tar.gz
|
||||||
|
Patch0: resource_leak.patch
|
||||||
BuildRequires: %{python_module nose}
|
BuildRequires: %{python_module nose}
|
||||||
BuildRequires: hicolor-icon-theme
|
BuildRequires: hicolor-icon-theme
|
||||||
BuildRequires: python-rpm-macros
|
BuildRequires: python-rpm-macros
|
||||||
@@ -52,6 +53,7 @@ PyXDG is a python library to access freedesktop.org standards. Currently support
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q -n pyxdg-%{version}
|
%setup -q -n pyxdg-%{version}
|
||||||
|
%patch0 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%python_build
|
%python_build
|
||||||
|
174
resource_leak.patch
Normal file
174
resource_leak.patch
Normal file
@@ -0,0 +1,174 @@
|
|||||||
|
From 73476af1eecb8e29f2a461e003a2d8a735d22306 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Micka=C3=ABl=20Schoentgen?= <contact@tiger-222.fr>
|
||||||
|
Date: Sun, 9 Dec 2018 17:31:24 +0100
|
||||||
|
Subject: Fix several ResourceWarnings: unclosed file
|
||||||
|
|
||||||
|
---
|
||||||
|
xdg/IniFile.py | 61 +++++++++++++++++++++++++++---------------------------
|
||||||
|
xdg/Mime.py | 9 +++++---
|
||||||
|
xdg/RecentFiles.py | 43 +++++++++++++++++++-------------------
|
||||||
|
3 files changed, 57 insertions(+), 56 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/xdg/IniFile.py b/xdg/IniFile.py
|
||||||
|
index 718589f..84be614 100644
|
||||||
|
--- a/xdg/IniFile.py
|
||||||
|
+++ b/xdg/IniFile.py
|
||||||
|
@@ -56,38 +56,37 @@ class IniFile:
|
||||||
|
return
|
||||||
|
|
||||||
|
# parse file
|
||||||
|
- for line in fd:
|
||||||
|
- line = line.strip()
|
||||||
|
- # empty line
|
||||||
|
- if not line:
|
||||||
|
- continue
|
||||||
|
- # comment
|
||||||
|
- elif line[0] == '#':
|
||||||
|
- continue
|
||||||
|
- # new group
|
||||||
|
- elif line[0] == '[':
|
||||||
|
- currentGroup = line.lstrip("[").rstrip("]")
|
||||||
|
- if debug and self.hasGroup(currentGroup):
|
||||||
|
- raise DuplicateGroupError(currentGroup, filename)
|
||||||
|
- else:
|
||||||
|
- content[currentGroup] = {}
|
||||||
|
- # key
|
||||||
|
- else:
|
||||||
|
- try:
|
||||||
|
- key, value = line.split("=", 1)
|
||||||
|
- except ValueError:
|
||||||
|
- raise ParsingError("Invalid line: " + line, filename)
|
||||||
|
-
|
||||||
|
- key = key.strip() # Spaces before/after '=' should be ignored
|
||||||
|
- try:
|
||||||
|
- if debug and self.hasKey(key, currentGroup):
|
||||||
|
- raise DuplicateKeyError(key, currentGroup, filename)
|
||||||
|
+ with fd:
|
||||||
|
+ for line in fd:
|
||||||
|
+ line = line.strip()
|
||||||
|
+ # empty line
|
||||||
|
+ if not line:
|
||||||
|
+ continue
|
||||||
|
+ # comment
|
||||||
|
+ elif line[0] == '#':
|
||||||
|
+ continue
|
||||||
|
+ # new group
|
||||||
|
+ elif line[0] == '[':
|
||||||
|
+ currentGroup = line.lstrip("[").rstrip("]")
|
||||||
|
+ if debug and self.hasGroup(currentGroup):
|
||||||
|
+ raise DuplicateGroupError(currentGroup, filename)
|
||||||
|
else:
|
||||||
|
- content[currentGroup][key] = value.strip()
|
||||||
|
- except (IndexError, UnboundLocalError):
|
||||||
|
- raise ParsingError("Parsing error on key, group missing", filename)
|
||||||
|
-
|
||||||
|
- fd.close()
|
||||||
|
+ content[currentGroup] = {}
|
||||||
|
+ # key
|
||||||
|
+ else:
|
||||||
|
+ try:
|
||||||
|
+ key, value = line.split("=", 1)
|
||||||
|
+ except ValueError:
|
||||||
|
+ raise ParsingError("Invalid line: " + line, filename)
|
||||||
|
+
|
||||||
|
+ key = key.strip() # Spaces before/after '=' should be ignored
|
||||||
|
+ try:
|
||||||
|
+ if debug and self.hasKey(key, currentGroup):
|
||||||
|
+ raise DuplicateKeyError(key, currentGroup, filename)
|
||||||
|
+ else:
|
||||||
|
+ content[currentGroup][key] = value.strip()
|
||||||
|
+ except (IndexError, UnboundLocalError):
|
||||||
|
+ raise ParsingError("Parsing error on key, group missing", filename)
|
||||||
|
|
||||||
|
self.filename = filename
|
||||||
|
self.tainted = False
|
||||||
|
diff --git a/xdg/Mime.py b/xdg/Mime.py
|
||||||
|
index 3bff8b2..886cb42 100644
|
||||||
|
--- a/xdg/Mime.py
|
||||||
|
+++ b/xdg/Mime.py
|
||||||
|
@@ -749,14 +749,16 @@ def install_mime_info(application, package_file):
|
||||||
|
file with the same name (if the contents are different)"""
|
||||||
|
application += '.xml'
|
||||||
|
|
||||||
|
- new_data = open(package_file).read()
|
||||||
|
+ with open(package_file) as f:
|
||||||
|
+ new_data = f.read()
|
||||||
|
|
||||||
|
# See if the file is already installed
|
||||||
|
package_dir = os.path.join('mime', 'packages')
|
||||||
|
resource = os.path.join(package_dir, application)
|
||||||
|
for x in BaseDirectory.load_data_paths(resource):
|
||||||
|
try:
|
||||||
|
- old_data = open(x).read()
|
||||||
|
+ with open(x) as f:
|
||||||
|
+ old_data = f.read()
|
||||||
|
except:
|
||||||
|
continue
|
||||||
|
if old_data == new_data:
|
||||||
|
@@ -770,7 +772,8 @@ def install_mime_info(application, package_file):
|
||||||
|
new_file = os.path.join(BaseDirectory.save_data_path(package_dir), application)
|
||||||
|
|
||||||
|
# Write the file...
|
||||||
|
- open(new_file, 'w').write(new_data)
|
||||||
|
+ with open(new_file, 'w') as f:
|
||||||
|
+ f.write(new_data)
|
||||||
|
|
||||||
|
# Update the database...
|
||||||
|
command = 'update-mime-database'
|
||||||
|
diff --git a/xdg/RecentFiles.py b/xdg/RecentFiles.py
|
||||||
|
index 3038b57..7ee7ee5 100644
|
||||||
|
--- a/xdg/RecentFiles.py
|
||||||
|
+++ b/xdg/RecentFiles.py
|
||||||
|
@@ -71,28 +71,27 @@ class RecentFiles:
|
||||||
|
elif not filename:
|
||||||
|
filename = self.filename
|
||||||
|
|
||||||
|
- f = open(filename, "w")
|
||||||
|
- fcntl.lockf(f, fcntl.LOCK_EX)
|
||||||
|
- f.write('<?xml version="1.0"?>\n')
|
||||||
|
- f.write("<RecentFiles>\n")
|
||||||
|
-
|
||||||
|
- for r in self.RecentFiles:
|
||||||
|
- f.write(" <RecentItem>\n")
|
||||||
|
- f.write(" <URI>%s</URI>\n" % xml.sax.saxutils.escape(r.URI))
|
||||||
|
- f.write(" <Mime-Type>%s</Mime-Type>\n" % r.MimeType)
|
||||||
|
- f.write(" <Timestamp>%s</Timestamp>\n" % r.Timestamp)
|
||||||
|
- if r.Private == True:
|
||||||
|
- f.write(" <Private/>\n")
|
||||||
|
- if len(r.Groups) > 0:
|
||||||
|
- f.write(" <Groups>\n")
|
||||||
|
- for group in r.Groups:
|
||||||
|
- f.write(" <Group>%s</Group>\n" % group)
|
||||||
|
- f.write(" </Groups>\n")
|
||||||
|
- f.write(" </RecentItem>\n")
|
||||||
|
-
|
||||||
|
- f.write("</RecentFiles>\n")
|
||||||
|
- fcntl.lockf(f, fcntl.LOCK_UN)
|
||||||
|
- f.close()
|
||||||
|
+ with open(filename, "w") as f:
|
||||||
|
+ fcntl.lockf(f, fcntl.LOCK_EX)
|
||||||
|
+ f.write('<?xml version="1.0"?>\n')
|
||||||
|
+ f.write("<RecentFiles>\n")
|
||||||
|
+
|
||||||
|
+ for r in self.RecentFiles:
|
||||||
|
+ f.write(" <RecentItem>\n")
|
||||||
|
+ f.write(" <URI>%s</URI>\n" % xml.sax.saxutils.escape(r.URI))
|
||||||
|
+ f.write(" <Mime-Type>%s</Mime-Type>\n" % r.MimeType)
|
||||||
|
+ f.write(" <Timestamp>%s</Timestamp>\n" % r.Timestamp)
|
||||||
|
+ if r.Private == True:
|
||||||
|
+ f.write(" <Private/>\n")
|
||||||
|
+ if len(r.Groups) > 0:
|
||||||
|
+ f.write(" <Groups>\n")
|
||||||
|
+ for group in r.Groups:
|
||||||
|
+ f.write(" <Group>%s</Group>\n" % group)
|
||||||
|
+ f.write(" </Groups>\n")
|
||||||
|
+ f.write(" </RecentItem>\n")
|
||||||
|
+
|
||||||
|
+ f.write("</RecentFiles>\n")
|
||||||
|
+ fcntl.lockf(f, fcntl.LOCK_UN)
|
||||||
|
|
||||||
|
def getFiles(self, mimetypes=None, groups=None, limit=0):
|
||||||
|
"""Get a list of recently used files.
|
||||||
|
--
|
||||||
|
cgit v1.1
|
||||||
|
|
Reference in New Issue
Block a user