diff -r 19c74cadea95 Lib/datetime.py --- a/Lib/datetime.py Wed Sep 19 08:25:01 2012 +0300 +++ b/Lib/datetime.py Thu Sep 20 10:51:21 2012 -0400 @@ -1854,6 +1854,8 @@ return (self._offset, self._name) def __eq__(self, other): + if type(other) != timezone: + return False return self._offset == other._offset def __hash__(self): diff -r 19c74cadea95 Lib/test/datetimetester.py --- a/Lib/test/datetimetester.py Wed Sep 19 08:25:01 2012 +0300 +++ b/Lib/test/datetimetester.py Thu Sep 20 10:51:21 2012 -0400 @@ -235,6 +235,8 @@ self.assertEqual(timezone(-5 * HOUR), timezone(-5 * HOUR, 'EST')) with self.assertRaises(TypeError): timezone(ZERO) < timezone(ZERO) self.assertIn(timezone(ZERO), {timezone(ZERO)}) + self.assertTrue(timezone(ZERO) != None) + self.assertFalse(timezone(ZERO) == None) def test_aware_datetime(self): # test that timezone instances can be used by datetime diff -r 19c74cadea95 Modules/_datetimemodule.c --- a/Modules/_datetimemodule.c Wed Sep 19 08:25:01 2012 +0300 +++ b/Modules/_datetimemodule.c Thu Sep 20 10:51:21 2012 -0400 @@ -3215,6 +3215,12 @@ { if (op != Py_EQ && op != Py_NE) Py_RETURN_NOTIMPLEMENTED; + if (Py_TYPE(other) != &PyDateTime_TimeZoneType) { + if (op == Py_EQ) + Py_RETURN_FALSE; + else + Py_RETURN_TRUE; + } return delta_richcompare(self->offset, other->offset, op); }