Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-15-SP2:Update
python-pyxdg
resource_leak.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File resource_leak.patch of Package python-pyxdg
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
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor