From 335a9f9cf1e2f40679e91cf42cfd0e636885a397 Mon Sep 17 00:00:00 2001 From: Alex Gaynor Date: Fri, 7 Sep 2012 15:06:23 -0400 Subject: [PATCH] Removed many uses of bare "except:", which were either going to a) silence real issues, or b) were impossible to hit. --- django/contrib/localflavor/hr/forms.py | 10 ++++----- django/contrib/localflavor/ro/forms.py | 22 +++++++++---------- django/core/cache/backends/memcached.py | 2 +- django/core/mail/backends/console.py | 2 +- django/db/backends/sqlite3/base.py | 5 +---- django/http/multipartparser.py | 5 ++--- tests/regressiontests/file_uploads/tests.py | 2 +- tests/regressiontests/handlers/tests.py | 4 +--- tests/regressiontests/queries/tests.py | 5 +---- .../transactions_regress/tests.py | 22 ++++++------------- 10 files changed, 31 insertions(+), 48 deletions(-) diff --git a/django/contrib/localflavor/hr/forms.py b/django/contrib/localflavor/hr/forms.py index b935fd8a3a..083b61c49e 100644 --- a/django/contrib/localflavor/hr/forms.py +++ b/django/contrib/localflavor/hr/forms.py @@ -4,6 +4,7 @@ HR-specific Form helpers """ from __future__ import absolute_import, unicode_literals +import datetime import re from django.contrib.localflavor.hr.hr_choices import ( @@ -91,17 +92,16 @@ class HRJMBGField(Field): dd = int(matches.group('dd')) mm = int(matches.group('mm')) yyy = int(matches.group('yyy')) - import datetime try: - datetime.date(yyy,mm,dd) - except: + datetime.date(yyy, mm, dd) + except ValueError: raise ValidationError(self.error_messages['date']) # Validate checksum. k = matches.group('k') checksum = 0 - for i,j in zip(range(7,1,-1),range(6)): - checksum+=i*(int(value[j])+int(value[13-i])) + for i, j in zip(range(7, 1, -1), range(6)): + checksum += i * (int(value[j]) + int(value[13 - i])) m = 11 - checksum % 11 if m == 10: raise ValidationError(self.error_messages['invalid']) diff --git a/django/contrib/localflavor/ro/forms.py b/django/contrib/localflavor/ro/forms.py index bdbed5c476..f6de1534c9 100644 --- a/django/contrib/localflavor/ro/forms.py +++ b/django/contrib/localflavor/ro/forms.py @@ -4,6 +4,8 @@ Romanian specific form helpers. """ from __future__ import absolute_import, unicode_literals +import datetime + from django.contrib.localflavor.ro.ro_counties import COUNTIES_CHOICES from django.core.validators import EMPTY_VALUES from django.forms import ValidationError, Field, RegexField, Select @@ -69,10 +71,9 @@ class ROCNPField(RegexField): if value in EMPTY_VALUES: return '' # check birthdate digits - import datetime try: - datetime.date(int(value[1:3]),int(value[3:5]),int(value[5:7])) - except: + datetime.date(int(value[1:3]), int(value[3:5]), int(value[5:7])) + except ValueError: raise ValidationError(self.error_messages['invalid']) # checksum key = '279146358279' @@ -118,7 +119,7 @@ class ROCountyField(Field): # search for county name normalized_CC = [] for entry in COUNTIES_CHOICES: - normalized_CC.append((entry[0],entry[1].upper())) + normalized_CC.append((entry[0], entry[1].upper())) for entry in normalized_CC: if entry[1] == value: return entry[0] @@ -153,8 +154,8 @@ class ROIBANField(RegexField): value = super(ROIBANField, self).clean(value) if value in EMPTY_VALUES: return '' - value = value.replace('-','') - value = value.replace(' ','') + value = value.replace('-', '') + value = value.replace(' ', '') value = value.upper() if value[0:2] != 'RO': raise ValidationError(self.error_messages['invalid']) @@ -185,10 +186,10 @@ class ROPhoneNumberField(RegexField): value = super(ROPhoneNumberField, self).clean(value) if value in EMPTY_VALUES: return '' - value = value.replace('-','') - value = value.replace('(','') - value = value.replace(')','') - value = value.replace(' ','') + value = value.replace('-', '') + value = value.replace('(', '') + value = value.replace(')', '') + value = value.replace(' ', '') if len(value) != 10: raise ValidationError(self.error_messages['invalid']) return value @@ -202,4 +203,3 @@ class ROPostalCodeField(RegexField): def __init__(self, max_length=6, min_length=6, *args, **kwargs): super(ROPostalCodeField, self).__init__(r'^[0-9][0-8][0-9]{4}$', max_length, min_length, *args, **kwargs) - diff --git a/django/core/cache/backends/memcached.py b/django/core/cache/backends/memcached.py index 426a0a15c0..9bb47c8344 100644 --- a/django/core/cache/backends/memcached.py +++ b/django/core/cache/backends/memcached.py @@ -141,7 +141,7 @@ class CacheClass(BaseMemcachedCache): ) try: import memcache - except: + except ImportError: raise InvalidCacheBackendError( "Memcached cache backend requires either the 'memcache' or 'cmemcache' library" ) diff --git a/django/core/mail/backends/console.py b/django/core/mail/backends/console.py index 0baae0c01e..ea0cb5d9ad 100644 --- a/django/core/mail/backends/console.py +++ b/django/core/mail/backends/console.py @@ -21,7 +21,7 @@ class EmailBackend(BaseEmailBackend): stream_created = self.open() for message in email_messages: self.stream.write('%s\n' % message.message().as_string()) - self.stream.write('-'*79) + self.stream.write('-' * 79) self.stream.write('\n') self.stream.flush() # flush after each message if stream_created: diff --git a/django/db/backends/sqlite3/base.py b/django/db/backends/sqlite3/base.py index 31a16b6a2b..0f0b6b74e3 100644 --- a/django/db/backends/sqlite3/base.py +++ b/django/db/backends/sqlite3/base.py @@ -412,7 +412,4 @@ def _sqlite_format_dtdelta(dt, conn, days, secs, usecs): return str(dt) def _sqlite_regexp(re_pattern, re_string): - try: - return bool(re.search(re_pattern, re_string)) - except: - return False + return bool(re.search(re_pattern, re_string)) diff --git a/django/http/multipartparser.py b/django/http/multipartparser.py index e76a4f4208..40aefd6e9d 100644 --- a/django/http/multipartparser.py +++ b/django/http/multipartparser.py @@ -68,11 +68,10 @@ class MultiPartParser(object): if not boundary or not cgi.valid_boundary(boundary): raise MultiPartParserError('Invalid boundary in multipart: %s' % boundary) - # Content-Length should contain the length of the body we are about # to receive. try: - content_length = int(META.get('HTTP_CONTENT_LENGTH', META.get('CONTENT_LENGTH',0))) + content_length = int(META.get('HTTP_CONTENT_LENGTH', META.get('CONTENT_LENGTH', 0))) except (ValueError, TypeError): content_length = 0 @@ -178,7 +177,7 @@ class MultiPartParser(object): content_type = meta_data.get('content-type', ('',))[0].strip() try: - charset = meta_data.get('content-type', (0,{}))[1].get('charset', None) + charset = meta_data.get('content-type', (0, {}))[1].get('charset', None) except: charset = None diff --git a/tests/regressiontests/file_uploads/tests.py b/tests/regressiontests/file_uploads/tests.py index a545ed649e..f28d658f52 100644 --- a/tests/regressiontests/file_uploads/tests.py +++ b/tests/regressiontests/file_uploads/tests.py @@ -100,7 +100,7 @@ class FileUploadTests(TestCase): try: os.unlink(file1.name) - except: + except OSError: pass self.assertEqual(response.status_code, 200) diff --git a/tests/regressiontests/handlers/tests.py b/tests/regressiontests/handlers/tests.py index ae2062c756..34863b6493 100644 --- a/tests/regressiontests/handlers/tests.py +++ b/tests/regressiontests/handlers/tests.py @@ -17,10 +17,8 @@ class HandlerTests(unittest.TestCase): # Try running the handler, it will fail in load_middleware handler = WSGIHandler() self.assertEqual(handler.initLock.locked(), False) - try: + with self.assertRaises(Exception): handler(None, None) - except: - pass self.assertEqual(handler.initLock.locked(), False) # Reset settings settings.MIDDLEWARE_CLASSES = old_middleware_classes diff --git a/tests/regressiontests/queries/tests.py b/tests/regressiontests/queries/tests.py index 005aa9650b..71ac107486 100644 --- a/tests/regressiontests/queries/tests.py +++ b/tests/regressiontests/queries/tests.py @@ -1677,10 +1677,7 @@ class CloneTests(TestCase): list(n_list) # Use the note queryset in a query, and evalute # that query in a way that involves cloning. - try: - self.assertEqual(ExtraInfo.objects.filter(note__in=n_list)[0].info, 'good') - except: - self.fail('Query should be clonable') + self.assertEqual(ExtraInfo.objects.filter(note__in=n_list)[0].info, 'good') class EmptyQuerySetTests(TestCase): diff --git a/tests/regressiontests/transactions_regress/tests.py b/tests/regressiontests/transactions_regress/tests.py index 90b3df03d4..472e2aafd9 100644 --- a/tests/regressiontests/transactions_regress/tests.py +++ b/tests/regressiontests/transactions_regress/tests.py @@ -1,7 +1,6 @@ from __future__ import absolute_import -from django.core.exceptions import ImproperlyConfigured -from django.db import connection, connections, transaction, DEFAULT_DB_ALIAS +from django.db import connection, connections, transaction, DEFAULT_DB_ALIAS, DatabaseError from django.db.transaction import commit_on_success, commit_manually, TransactionManagementError from django.test import TransactionTestCase, skipUnlessDBFeature from django.test.utils import override_settings @@ -151,21 +150,14 @@ class TestTransactionClosing(TransactionTestCase): # Create a user create_system_user() - try: - # The second call to create_system_user should fail for violating a unique constraint - # (it's trying to re-create the same user) + with self.assertRaises(DatabaseError): + # The second call to create_system_user should fail for violating + # a unique constraint (it's trying to re-create the same user) create_system_user() - except: - pass - else: - raise ImproperlyConfigured('Unique constraint not enforced on django.contrib.auth.models.User') - try: - # Try to read the database. If the last transaction was indeed closed, - # this should cause no problems - _ = User.objects.all()[0] - except: - self.fail("A transaction consisting of a failed operation was not closed.") + # Try to read the database. If the last transaction was indeed closed, + # this should cause no problems + User.objects.all()[0] @override_settings(DEBUG=True) def test_failing_query_transaction_closed_debug(self):