From ddedc1ee92efe73e7d11f455bd8ee9cec122ca4a Mon Sep 17 00:00:00 2001 From: Konstantin Gukov Date: Tue, 23 Feb 2016 23:40:23 +0500 Subject: [PATCH] Fixed too broad exception clauses in the project --- mongoengine/base/fields.py | 16 ++++++++-------- mongoengine/document.py | 2 +- mongoengine/fields.py | 16 ++++++++-------- mongoengine/queryset/base.py | 2 +- mongoengine/queryset/transform.py | 10 +++++++--- setup.py | 9 +++++---- tests/document/inheritance.py | 2 +- 7 files changed, 31 insertions(+), 26 deletions(-) diff --git a/mongoengine/base/fields.py b/mongoengine/base/fields.py index be50ac40..a803657d 100644 --- a/mongoengine/base/fields.py +++ b/mongoengine/base/fields.py @@ -133,7 +133,7 @@ class BaseField(object): if (self.name not in instance._data or instance._data[self.name] != value): instance._mark_as_changed(self.name) - except: + except Exception: # Values cant be compared eg: naive and tz datetimes # So mark it as changed instance._mark_as_changed(self.name) @@ -440,7 +440,7 @@ class ObjectIdField(BaseField): try: if not isinstance(value, ObjectId): value = ObjectId(value) - except: + except Exception: pass return value @@ -459,7 +459,7 @@ class ObjectIdField(BaseField): def validate(self, value): try: ObjectId(unicode(value)) - except: + except Exception: self.error('Invalid Object ID') @@ -511,7 +511,7 @@ class GeoJsonBaseField(BaseField): # Quick and dirty validator try: value[0][0][0] - except: + except (TypeError, IndexError): return "Invalid Polygon must contain at least one valid linestring" errors = [] @@ -535,7 +535,7 @@ class GeoJsonBaseField(BaseField): # Quick and dirty validator try: value[0][0] - except: + except (TypeError, IndexError): return "Invalid LineString must contain at least one valid point" errors = [] @@ -566,7 +566,7 @@ class GeoJsonBaseField(BaseField): # Quick and dirty validator try: value[0][0] - except: + except (TypeError, IndexError): return "Invalid MultiPoint must contain at least one valid point" errors = [] @@ -585,7 +585,7 @@ class GeoJsonBaseField(BaseField): # Quick and dirty validator try: value[0][0][0] - except: + except (TypeError, IndexError): return "Invalid MultiLineString must contain at least one valid linestring" errors = [] @@ -607,7 +607,7 @@ class GeoJsonBaseField(BaseField): # Quick and dirty validator try: value[0][0][0][0] - except: + except (TypeError, IndexError): return "Invalid MultiPolygon must contain at least one valid Polygon" errors = [] diff --git a/mongoengine/document.py b/mongoengine/document.py index 52353523..2fac15b0 100644 --- a/mongoengine/document.py +++ b/mongoengine/document.py @@ -981,7 +981,7 @@ class MapReduceDocument(object): if not isinstance(self.key, id_field_type): try: self.key = id_field_type(self.key) - except: + except Exception: raise Exception("Could not cast key as %s" % id_field_type.__name__) diff --git a/mongoengine/fields.py b/mongoengine/fields.py index e5e25457..b57f93b6 100644 --- a/mongoengine/fields.py +++ b/mongoengine/fields.py @@ -65,7 +65,7 @@ class StringField(BaseField): return value try: value = value.decode('utf-8') - except: + except Exception: pass return value @@ -194,7 +194,7 @@ class IntField(BaseField): def validate(self, value): try: value = int(value) - except: + except Exception: self.error('%s could not be converted to int' % value) if self.min_value is not None and value < self.min_value: @@ -228,7 +228,7 @@ class LongField(BaseField): def validate(self, value): try: value = long(value) - except: + except Exception: self.error('%s could not be converted to long' % value) if self.min_value is not None and value < self.min_value: @@ -508,7 +508,7 @@ class ComplexDateTimeField(StringField): original_value = value try: return self._convert_from_string(value) - except: + except Exception: return original_value def to_mongo(self, value, **kwargs): @@ -1370,7 +1370,7 @@ class GridFSProxy(object): if self.gridout is None: self.gridout = self.fs.get(self.grid_id) return self.gridout - except: + except Exception: # File has been deleted return None @@ -1408,7 +1408,7 @@ class GridFSProxy(object): else: try: return gridout.read(size) - except: + except Exception: return "" def delete(self): @@ -1473,7 +1473,7 @@ class FileField(BaseField): if grid_file: try: grid_file.delete() - except: + except Exception: pass # Create a new proxy object as we don't already have one @@ -1841,7 +1841,7 @@ class UUIDField(BaseField): if not isinstance(value, basestring): value = unicode(value) return uuid.UUID(value) - except: + except Exception: return original_value return value diff --git a/mongoengine/queryset/base.py b/mongoengine/queryset/base.py index f301e160..4bc63597 100644 --- a/mongoengine/queryset/base.py +++ b/mongoengine/queryset/base.py @@ -1705,7 +1705,7 @@ class BaseQuerySet(object): key = key.replace('__', '.') try: key = self._document._translate_field_name(key) - except: + except Exception: pass key_list.append((key, direction)) diff --git a/mongoengine/queryset/transform.py b/mongoengine/queryset/transform.py index 1f18c429..13302afa 100644 --- a/mongoengine/queryset/transform.py +++ b/mongoengine/queryset/transform.py @@ -364,20 +364,24 @@ def _infer_geometry(value): "type and coordinates keys") elif isinstance(value, (list, set)): # TODO: shouldn't we test value[0][0][0][0] to see if it is MultiPolygon? + # TODO: should both TypeError and IndexError be alike interpreted? + try: value[0][0][0] return {"$geometry": {"type": "Polygon", "coordinates": value}} - except: + except (TypeError, IndexError): pass + try: value[0][0] return {"$geometry": {"type": "LineString", "coordinates": value}} - except: + except (TypeError, IndexError): pass + try: value[0] return {"$geometry": {"type": "Point", "coordinates": value}} - except: + except (TypeError, IndexError): pass raise InvalidQueryError("Invalid $geometry data. Can be either a dictionary " diff --git a/setup.py b/setup.py index 7384e04d..6aa924c8 100644 --- a/setup.py +++ b/setup.py @@ -10,11 +10,12 @@ except ImportError: DESCRIPTION = 'MongoEngine is a Python Object-Document ' + \ 'Mapper for working with MongoDB.' -LONG_DESCRIPTION = None + try: - LONG_DESCRIPTION = open('README.rst').read() -except: - pass + with open('README.rst') as fin: + LONG_DESCRIPTION = fin.read() +except Exception: + LONG_DESCRIPTION = None def get_version(version_tuple): diff --git a/tests/document/inheritance.py b/tests/document/inheritance.py index 7673a103..957938be 100644 --- a/tests/document/inheritance.py +++ b/tests/document/inheritance.py @@ -411,7 +411,7 @@ class InheritanceTest(unittest.TestCase): try: class MyDocument(DateCreatedDocument, DateUpdatedDocument): pass - except: + except Exception: self.assertTrue(False, "Couldn't create MyDocument class") def test_abstract_documents(self):