From b1a56051bda80f75313833c2436ce6bfc333eb7a Mon Sep 17 00:00:00 2001 From: Toshio Kuratomi Date: Wed, 13 Jan 2016 20:50:19 -0800 Subject: [PATCH] Prevent traceback. https://github.com/ansible/ansible/issues/13743#issuecomment-171520585 In some circumstance, the file fails to open. When that occurs, we can't try to close it in the finally clause. Using a context manager is the cleanest way to change the code to account for that case. --- lib/ansible/galaxy/role.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/lib/ansible/galaxy/role.py b/lib/ansible/galaxy/role.py index 36b1e0fbbb..700664c4cd 100644 --- a/lib/ansible/galaxy/role.py +++ b/lib/ansible/galaxy/role.py @@ -130,13 +130,11 @@ class GalaxyRole(object): install_date=datetime.datetime.utcnow().strftime("%c"), ) info_path = os.path.join(self.path, self.META_INSTALL) - try: - f = open(info_path, 'w+') - self._install_info = yaml.safe_dump(info, f) - except: - return False - finally: - f.close() + with open(info_path, 'w+') as f: + try: + self._install_info = yaml.safe_dump(info, f) + except: + return False return True