From c553ec02c35638349e3fddf1df478b2cf90d2565 Mon Sep 17 00:00:00 2001 From: James William Pye Date: Sun, 13 Mar 2011 15:54:43 -0700 Subject: [PATCH 01/54] Use assert* per deprecation warnings in python3.2. --- postgresql/test/test_alock.py | 48 +-- postgresql/test/test_bytea_codec.py | 23 +- postgresql/test/test_cluster.py | 2 +- postgresql/test/test_configfile.py | 33 +- postgresql/test/test_connect.py | 84 ++-- postgresql/test/test_copyman.py | 222 +++++----- postgresql/test/test_dbapi20.py | 92 ++--- postgresql/test/test_driver.py | 594 +++++++++++++-------------- postgresql/test/test_exceptions.py | 45 +- postgresql/test/test_installation.py | 30 +- postgresql/test/test_iri.py | 17 +- postgresql/test/test_lib.py | 58 +-- postgresql/test/test_notifyman.py | 40 +- postgresql/test/test_pgpassfile.py | 9 +- postgresql/test/test_protocol.py | 311 +++++++------- postgresql/test/test_python.py | 70 ++-- postgresql/test/test_ssl_connect.py | 28 +- postgresql/test/test_string.py | 46 +-- postgresql/test/test_types.py | 204 ++++----- 19 files changed, 983 insertions(+), 973 deletions(-) diff --git a/postgresql/test/test_alock.py b/postgresql/test/test_alock.py index fcea993b..1a8b95b0 100644 --- a/postgresql/test/test_alock.py +++ b/postgresql/test/test_alock.py @@ -14,7 +14,7 @@ class test_alock(unittest.TestCase): def testALockWait(self): # sadly, this is primarily used to exercise the code paths.. ad = prepare(n_alocks).first - self.failUnlessEqual(ad(), 0) + self.assertEqual(ad(), 0) state = [False, False, False] alt = new() first = alock.ExclusiveLock(db, (0,0)) @@ -37,31 +37,31 @@ def concurrent_lock(): t.start() while not state[0]: time.sleep(0.01) - self.failUnlessEqual(ad(), 2) + self.assertEqual(ad(), 2) state[1] = True with first: - self.failUnlessEqual(ad(), 2) + self.assertEqual(ad(), 2) state[2] = True with second: - self.failUnlessEqual(ad(), 2) + self.assertEqual(ad(), 2) t.join(timeout = 1) @pg_tmp def testALockNoWait(self): alt = new() ad = prepare(n_alocks).first - self.failUnlessEqual(ad(), 0) + self.assertEqual(ad(), 0) with alock.ExclusiveLock(db, (0,0)): l=alock.ExclusiveLock(alt, (0,0)) # should fail to acquire - self.failUnlessEqual(l.acquire(blocking=False), False) + self.assertEqual(l.acquire(blocking=False), False) # no alocks should exist now - self.failUnlessEqual(ad(), 0) + self.assertEqual(ad(), 0) @pg_tmp def testALock(self): ad = prepare(n_alocks).first - self.failUnlessEqual(ad(), 0) + self.assertEqual(ad(), 0) # test a variety.. lockids = [ (1,4), @@ -77,62 +77,62 @@ def testALock(self): sal1 = alock.ShareLock(db, *lockids) with sal1: with xal1, xal2: - self.failUnless(ad() > 0) + self.assertTrue(ad() > 0) for x in lockids: xl = alock.ExclusiveLock(alt, x) - self.failUnlessEqual(xl.acquire(blocking=False), False) + self.assertEqual(xl.acquire(blocking=False), False) # main has exclusives on these, so this should fail. xl = alock.ShareLock(alt, *lockids) - self.failUnlessEqual(xl.acquire(blocking=False), False) + self.assertEqual(xl.acquire(blocking=False), False) for x in lockids: # sal1 still holds xl = alock.ExclusiveLock(alt, x) - self.failUnlessEqual(xl.acquire(blocking=False), False) + self.assertEqual(xl.acquire(blocking=False), False) # sal1 still holds, but we want a share lock too. xl = alock.ShareLock(alt, x) - self.failUnlessEqual(xl.acquire(blocking=False), True) + self.assertEqual(xl.acquire(blocking=False), True) xl.release() # no alocks should exist now - self.failUnlessEqual(ad(), 0) + self.assertEqual(ad(), 0) @pg_tmp def testPartialALock(self): # Validates that release is properly cleaning up ad = prepare(n_alocks).first - self.failUnlessEqual(ad(), 0) + self.assertEqual(ad(), 0) held = (0,-1234) wanted = [0, 324, -1232948, 7, held, 1, (2,4), (834,1)] alt = new() with alock.ExclusiveLock(db, held): l=alock.ExclusiveLock(alt, *wanted) # should fail to acquire, db has held - self.failUnlessEqual(l.acquire(blocking=False), False) + self.assertEqual(l.acquire(blocking=False), False) # No alocks should exist now. # This *MUST* occur prior to alt being closed. # Otherwise, we won't be testing for the recovery # of a failed non-blocking acquire(). - self.failUnlessEqual(ad(), 0) + self.assertEqual(ad(), 0) @pg_tmp def testALockParameterErrors(self): - self.failUnlessRaises(TypeError, alock.ALock) + self.assertRaises(TypeError, alock.ALock) l = alock.ExclusiveLock(db) - self.failUnlessRaises(RuntimeError, l.release) + self.assertRaises(RuntimeError, l.release) @pg_tmp def testALockOnClosed(self): ad = prepare(n_alocks).first - self.failUnlessEqual(ad(), 0) + self.assertEqual(ad(), 0) held = (0,-1234) alt = new() # __exit__ should only touch the count. with alock.ExclusiveLock(alt, held) as l: - self.failUnlessEqual(ad(), 1) - self.failUnlessEqual(l.locked(), True) + self.assertEqual(ad(), 1) + self.assertEqual(l.locked(), True) alt.close() time.sleep(0.005) - self.failUnlessEqual(ad(), 0) - self.failUnlessEqual(l.locked(), False) + self.assertEqual(ad(), 0) + self.assertEqual(l.locked(), False) if __name__ == '__main__': unittest.main() diff --git a/postgresql/test/test_bytea_codec.py b/postgresql/test/test_bytea_codec.py index 46cf0c51..4de01727 100644 --- a/postgresql/test/test_bytea_codec.py +++ b/postgresql/test/test_bytea_codec.py @@ -23,15 +23,15 @@ def testDecoding(self): ) def testEncoding(self): - self.failUnlessEqual('bytea'.encode('bytea'), b'bytea') - self.failUnlessEqual('\\\\'.encode('bytea'), b'\\') - self.failUnlessRaises(ValueError, '\\'.encode, 'bytea') - self.failUnlessRaises(ValueError, 'foo\\'.encode, 'bytea') - self.failUnlessRaises(ValueError, r'foo\0'.encode, 'bytea') - self.failUnlessRaises(ValueError, r'foo\00'.encode, 'bytea') - self.failUnlessRaises(ValueError, r'\f'.encode, 'bytea') - self.failUnlessRaises(ValueError, r'\800'.encode, 'bytea') - self.failUnlessRaises(ValueError, r'\7f0'.encode, 'bytea') + self.assertEqual('bytea'.encode('bytea'), b'bytea') + self.assertEqual('\\\\'.encode('bytea'), b'\\') + self.assertRaises(ValueError, '\\'.encode, 'bytea') + self.assertRaises(ValueError, 'foo\\'.encode, 'bytea') + self.assertRaises(ValueError, r'foo\0'.encode, 'bytea') + self.assertRaises(ValueError, r'foo\00'.encode, 'bytea') + self.assertRaises(ValueError, r'\f'.encode, 'bytea') + self.assertRaises(ValueError, r'\800'.encode, 'bytea') + self.assertRaises(ValueError, r'\7f0'.encode, 'bytea') for x in range(255): seq = ('\\' + oct(x)[2:].lstrip('0').rjust(3, '0')) dx = ord(seq.encode('bytea')) @@ -42,7 +42,4 @@ def testEncoding(self): ) if __name__ == '__main__': - from types import ModuleType - this = ModuleType("this") - this.__dict__.update(globals()) - unittest.main(this) + unittest.main() diff --git a/postgresql/test/test_cluster.py b/postgresql/test/test_cluster.py index 8f815940..29a0ef8a 100644 --- a/postgresql/test/test_cluster.py +++ b/postgresql/test/test_cluster.py @@ -65,7 +65,7 @@ def testSuperPassword(self): database='template1', ) with c: - self.failUnless(c.prepare('select 1').first() == 1) + self.assertEqual(c.prepare('select 1').first(), 1) def testNoParameters(self): 'simple init and drop' diff --git a/postgresql/test/test_configfile.py b/postgresql/test/test_configfile.py index 177650f2..f57a3c0f 100644 --- a/postgresql/test/test_configfile.py +++ b/postgresql/test/test_configfile.py @@ -186,8 +186,8 @@ def testParser(self): def testConfigRead(self): sample = "foo = bar"+os.linesep+"# A comment, yes."+os.linesep+" bar = foo # yet?"+os.linesep d = configfile.read_config(sample.split(os.linesep)) - self.failUnless(d['foo'] == 'bar') - self.failUnless(d['bar'] == 'foo') + self.assertTrue(d['foo'] == 'bar') + self.assertTrue(d['bar'] == 'foo') def testConfigWriteRead(self): strio = StringIO() @@ -202,7 +202,7 @@ def testWinningCases(self): for before, alters, after in winning_cases: befg = (x + os.linesep for x in before.split(os.linesep)) became = ''.join(configfile.alter_config(alters, befg)) - self.failUnless( + self.assertTrue( became.strip() == after, 'On %d, before, %r, did not become after, %r; got %r using %r' %( i, before, after, became, alters @@ -217,9 +217,9 @@ def testSimpleConfigAlter(self): strio.seek(0) lines = configfile.alter_config({'foo' : 'yes', 'bleh' : 'feh'}, strio) d = configfile.read_config(lines) - self.failUnless(d['foo'] == 'yes') - self.failUnless(d['bleh'] == 'feh') - self.failUnless(''.join(lines).count('bleh') == 1) + self.assertTrue(d['foo'] == 'yes') + self.assertTrue(d['bleh'] == 'feh') + self.assertTrue(''.join(lines).count('bleh') == 1) def testAroma(self): lines = configfile.alter_config({ @@ -228,31 +228,28 @@ def testAroma(self): }, (x + os.linesep for x in sample_config_Aroma.split('\n')) ) d = configfile.read_config(lines) - self.failUnless(d['shared_buffers'] == '800') - self.failUnless(d.get('port') is None) + self.assertTrue(d['shared_buffers'] == '800') + self.assertTrue(d.get('port') is None) nlines = configfile.alter_config({'port' : '1'}, lines) d2 = configfile.read_config(nlines) - self.failUnless(d2.get('port') == '1') - self.failUnless( + self.assertTrue(d2.get('port') == '1') + self.assertTrue( nlines[:4] == lines[:4] ) def testSelection(self): # Sanity red = configfile.read_config(['foo = bar'+os.linesep, 'bar = foo']) - self.failUnless(len(red.keys()) == 2) + self.assertTrue(len(red.keys()) == 2) # Test a simple selector red = configfile.read_config(['foo = bar'+os.linesep, 'bar = foo'], selector = lambda x: x == 'bar') rkeys = list(red.keys()) - self.failUnless(len(rkeys) == 1) - self.failUnless(rkeys[0] == 'bar') - self.failUnless(red['bar'] == 'foo') + self.assertTrue(len(rkeys) == 1) + self.assertTrue(rkeys[0] == 'bar') + self.assertTrue(red['bar'] == 'foo') if __name__ == '__main__': - from types import ModuleType - this = ModuleType("this") - this.__dict__.update(globals()) - unittest.main(this) + unittest.main() diff --git a/postgresql/test/test_connect.py b/postgresql/test/test_connect.py index ee4147f6..f3a7ad6f 100644 --- a/postgresql/test/test_connect.py +++ b/postgresql/test/test_connect.py @@ -91,9 +91,9 @@ def test_pg_open_SQL_ASCII(self): 'pq://' + 'md5:' + 'md5_password@' + host + ':' + str(port) \ + '/test?client_encoding=SQL_ASCII' ) as db: - self.failUnlessEqual(db.prepare('select 1')(), [(1,)]) - self.failUnlessEqual(db.settings['client_encoding'], 'SQL_ASCII') - self.failUnless(db.closed) + self.assertEqual(db.prepare('select 1')(), [(1,)]) + self.assertEqual(db.settings['client_encoding'], 'SQL_ASCII') + self.assertTrue(db.closed) def test_pg_open_keywords(self): host, port = self.cluster.address() @@ -105,8 +105,8 @@ def test_pg_open_keywords(self): port = port, database = 'test' ) as db: - self.failUnlessEqual(db.prepare('select 1')(), [(1,)]) - self.failUnless(db.closed) + self.assertEqual(db.prepare('select 1')(), [(1,)]) + self.assertTrue(db.closed) # composite test with pg_open( "pq://md5:md5_password@", @@ -114,7 +114,7 @@ def test_pg_open_keywords(self): port = port, database = 'test' ) as db: - self.failUnlessEqual(db.prepare('select 1')(), [(1,)]) + self.assertEqual(db.prepare('select 1')(), [(1,)]) # override test with pg_open( "pq://md5:foobar@", @@ -123,7 +123,7 @@ def test_pg_open_keywords(self): port = port, database = 'test' ) as db: - self.failUnlessEqual(db.prepare('select 1')(), [(1,)]) + self.assertEqual(db.prepare('select 1')(), [(1,)]) # and, one with some settings with pg_open( "pq://md5:foobar@?search_path=ieeee", @@ -133,8 +133,8 @@ def test_pg_open_keywords(self): database = 'test', settings = {'search_path' : 'public'} ) as db: - self.failUnlessEqual(db.prepare('select 1')(), [(1,)]) - self.failUnlessEqual(db.settings['search_path'], 'public') + self.assertEqual(db.prepare('select 1')(), [(1,)]) + self.assertEqual(db.settings['search_path'], 'public') def test_pg_open(self): # postgresql.open @@ -144,21 +144,21 @@ def test_pg_open(self): 'pq://' + 'md5:' + 'md5_password@' + host + ':' + str(port) \ + '/test' ) as db: - self.failUnlessEqual(db.prepare('select 1')(), [(1,)]) - self.failUnless(db.closed) + self.assertEqual(db.prepare('select 1')(), [(1,)]) + self.assertTrue(db.closed) with pg_open( 'pq://' + 'password:' + 'password_password@' + host + ':' + str(port) \ + '/test' ) as db: - self.failUnlessEqual(db.prepare('select 1')(), [(1,)]) - self.failUnless(db.closed) + self.assertEqual(db.prepare('select 1')(), [(1,)]) + self.assertTrue(db.closed) with pg_open( 'pq://' + 'trusted@' + host + ':' + str(port) + '/test' ) as db: - self.failUnlessEqual(db.prepare('select 1')(), [(1,)]) - self.failUnless(db.closed) + self.assertEqual(db.prepare('select 1')(), [(1,)]) + self.assertTrue(db.closed) # test environment collection pgenv = ('PGUSER', 'PGPORT', 'PGHOST', 'PGSERVICE', 'PGPASSWORD', 'PGDATABASE') @@ -172,9 +172,9 @@ def test_pg_open(self): os.environ['PGDATABASE'] = 'test' # No arguments, the environment provided everything. with pg_open() as db: - self.failUnlessEqual(db.prepare('select 1')(), [(1,)]) - self.failUnlessEqual(db.prepare('select current_user').first(), 'md5') - self.failUnless(db.closed) + self.assertEqual(db.prepare('select 1')(), [(1,)]) + self.assertEqual(db.prepare('select current_user').first(), 'md5') + self.assertTrue(db.closed) finally: i = 0 for x in stored: @@ -202,9 +202,9 @@ def test_pg_open(self): os.environ['PGSERVICE'] = 'myserv' os.environ['PGSYSCONFDIR'] = os.getcwd() with pg_open() as db: - self.failUnlessEqual(db.prepare('select 1')(), [(1,)]) - self.failUnlessEqual(db.prepare('select current_user').first(), 'password') - self.failUnlessEqual(db.settings['search_path'], 'public') + self.assertEqual(db.prepare('select 1')(), [(1,)]) + self.assertEqual(db.prepare('select current_user').first(), 'password') + self.assertEqual(db.settings['search_path'], 'public') finally: if oldservice is None: os.environ.pop('PGSERVICE', None) @@ -227,9 +227,9 @@ def test_dbapi_connect(self): host = host, port = port, **self.params ) - self.failUnlessEqual(MD5.cursor().execute('select 1').fetchone()[0], 1) + self.assertEqual(MD5.cursor().execute('select 1').fetchone()[0], 1) MD5.close() - self.failUnlessRaises(pg_exc.ConnectionDoesNotExistError, + self.assertRaises(pg_exc.ConnectionDoesNotExistError, MD5.cursor().execute, 'select 1' ) @@ -241,9 +241,9 @@ def test_dbapi_connect(self): host = host, port = port, **self.params ) - self.failUnlessEqual(CRYPT.cursor().execute('select 1').fetchone()[0], 1) + self.assertEqual(CRYPT.cursor().execute('select 1').fetchone()[0], 1) CRYPT.close() - self.failUnlessRaises(pg_exc.ConnectionDoesNotExistError, + self.assertRaises(pg_exc.ConnectionDoesNotExistError, CRYPT.cursor().execute, 'select 1' ) @@ -254,9 +254,9 @@ def test_dbapi_connect(self): host = host, port = port, **self.params ) - self.failUnlessEqual(PASSWORD.cursor().execute('select 1').fetchone()[0], 1) + self.assertEqual(PASSWORD.cursor().execute('select 1').fetchone()[0], 1) PASSWORD.close() - self.failUnlessRaises(pg_exc.ConnectionDoesNotExistError, + self.assertRaises(pg_exc.ConnectionDoesNotExistError, PASSWORD.cursor().execute, 'select 1' ) @@ -267,9 +267,9 @@ def test_dbapi_connect(self): host = host, port = port, **self.params ) - self.failUnlessEqual(TRUST.cursor().execute('select 1').fetchone()[0], 1) + self.assertEqual(TRUST.cursor().execute('select 1').fetchone()[0], 1) TRUST.close() - self.failUnlessRaises(pg_exc.ConnectionDoesNotExistError, + self.assertRaises(pg_exc.ConnectionDoesNotExistError, TRUST.cursor().execute, 'select 1' ) @@ -282,7 +282,7 @@ def test_IP4_connect(self): **self.params ) with C() as c: - self.failUnlessEqual(c.prepare('select 1').first(), 1) + self.assertEqual(c.prepare('select 1').first(), 1) if not msw: # win32 binaries don't appear to be built with ipv6 @@ -296,7 +296,7 @@ def test_IP6_connect(self): **self.params ) with C() as c: - self.failUnlessEqual(c.prepare('select 1').first(), 1) + self.assertEqual(c.prepare('select 1').first(), 1) def test_Host_connect(self): C = pg_driver.default.host( @@ -307,7 +307,7 @@ def test_Host_connect(self): **self.params ) with C() as c: - self.failUnlessEqual(c.prepare('select 1').first(), 1) + self.assertEqual(c.prepare('select 1').first(), 1) def test_md5_connect(self): c = self.cluster.connection( @@ -317,7 +317,7 @@ def test_md5_connect(self): **self.params ) with c: - self.failUnlessEqual(c.prepare('select current_user').first(), 'md5') + self.assertEqual(c.prepare('select current_user').first(), 'md5') def test_crypt_connect(self): if self.do_crypt: @@ -328,7 +328,7 @@ def test_crypt_connect(self): **self.params ) with c: - self.failUnlessEqual(c.prepare('select current_user').first(), 'crypt') + self.assertEqual(c.prepare('select current_user').first(), 'crypt') def test_password_connect(self): c = self.cluster.connection( @@ -337,7 +337,7 @@ def test_password_connect(self): database = 'test', ) with c: - self.failUnlessEqual(c.prepare('select current_user').first(), 'password') + self.assertEqual(c.prepare('select current_user').first(), 'password') def test_trusted_connect(self): c = self.cluster.connection( @@ -347,7 +347,7 @@ def test_trusted_connect(self): **self.params ) with c: - self.failUnlessEqual(c.prepare('select current_user').first(), 'trusted') + self.assertEqual(c.prepare('select current_user').first(), 'trusted') def test_Unix_connect(self): if msw: @@ -361,8 +361,8 @@ def test_Unix_connect(self): unix = unix_domain_socket, ) with C() as c: - self.failUnlessEqual(c.prepare('select 1').first(), 1) - self.failUnlessEqual(c.client_address, None) + self.assertEqual(c.prepare('select 1').first(), 1) + self.assertEqual(c.client_address, None) def test_pg_open_unix(self): if msw: @@ -372,11 +372,11 @@ def test_pg_open_unix(self): '.s.PGSQL.' + self.cluster.settings['port'] ) with pg_open(unix = unix_domain_socket, user = 'test') as c: - self.failUnlessEqual(c.prepare('select 1').first(), 1) - self.failUnlessEqual(c.client_address, None) + self.assertEqual(c.prepare('select 1').first(), 1) + self.assertEqual(c.client_address, None) with pg_open('pq://test@[unix:' + unix_domain_socket.replace('/',':') + ']') as c: - self.failUnlessEqual(c.prepare('select 1').first(), 1) - self.failUnlessEqual(c.client_address, None) + self.assertEqual(c.prepare('select 1').first(), 1) + self.assertEqual(c.client_address, None) if __name__ == '__main__': unittest.main() diff --git a/postgresql/test/test_copyman.py b/postgresql/test/test_copyman.py index fd9426cf..d9ad6e7d 100644 --- a/postgresql/test/test_copyman.py +++ b/postgresql/test/test_copyman.py @@ -76,8 +76,8 @@ def testNull(self): sp = copyman.NullProducer() sr = copyman.NullReceiver() copyman.CopyManager(sp, sr).run() - self.failUnlessEqual(sp.total_messages, 0) - self.failUnlessEqual(sp.total_bytes, 0) + self.assertEqual(sp.total_messages, 0) + self.assertEqual(sp.total_bytes, 0) @pg_tmp def testNullProducer(self): @@ -85,10 +85,10 @@ def testNullProducer(self): np = copyman.NullProducer() sr = copyman.StatementReceiver(prepare(dstsql)) copyman.CopyManager(np, sr).run() - self.failUnlessEqual(np.total_messages, 0) - self.failUnlessEqual(np.total_bytes, 0) - self.failUnlessEqual(prepare(dstcount).first(), 0) - self.failUnlessEqual(prepare(grabdst)(), []) + self.assertEqual(np.total_messages, 0) + self.assertEqual(np.total_bytes, 0) + self.assertEqual(prepare(dstcount).first(), 0) + self.assertEqual(prepare(grabdst)(), []) @pg_tmp def testNullReceiver(self): @@ -98,8 +98,8 @@ def testNullReceiver(self): with copyman.CopyManager(sp, sr) as copy: for x in copy: pass - self.failUnlessEqual(sp.total_messages, stdrowcount) - self.failUnlessEqual(sp.total_bytes > 0, True) + self.assertEqual(sp.total_messages, stdrowcount) + self.assertEqual(sp.total_bytes > 0, True) def testIteratorToCall(self): tmp = iter(stditer) @@ -115,10 +115,10 @@ def testIteratorToCall(self): for msg, bytes in copy: recomputed_messages += msg recomputed_bytes += bytes - self.failUnlessEqual(stdrowcount, recomputed_messages) - self.failUnlessEqual(recomputed_bytes, sp.total_bytes) - self.failUnlessEqual(len(dest), stdrowcount) - self.failUnlessEqual(dest, stditer) + self.assertEqual(stdrowcount, recomputed_messages) + self.assertEqual(recomputed_bytes, sp.total_bytes) + self.assertEqual(len(dest), stdrowcount) + self.assertEqual(dest, stditer) @pg_tmp def testDirectStatements(self): @@ -130,8 +130,8 @@ def testDirectStatements(self): with copyman.CopyManager(sp, sr) as copy: for x in copy: pass - self.failUnlessEqual(dst.prepare(dstcount).first(), stdrowcount) - self.failUnlessEqual(dst.prepare(grabdst)(), prepare(grabsrc)()) + self.assertEqual(dst.prepare(dstcount).first(), stdrowcount) + self.assertEqual(dst.prepare(grabdst)(), prepare(grabsrc)()) @pg_tmp def testIteratorProducer(self): @@ -144,10 +144,10 @@ def testIteratorProducer(self): for msg, bytes in copy: recomputed_messages += msg recomputed_bytes += bytes - self.failUnlessEqual(stdrowcount, recomputed_messages) - self.failUnlessEqual(recomputed_bytes, sp.total_bytes) - self.failUnlessEqual(prepare(dstcount).first(), stdrowcount) - self.failUnlessEqual(prepare(grabdst)(), stditer_tuples) + self.assertEqual(stdrowcount, recomputed_messages) + self.assertEqual(recomputed_bytes, sp.total_bytes) + self.assertEqual(prepare(dstcount).first(), stdrowcount) + self.assertEqual(prepare(grabdst)(), stditer_tuples) def multiple_destinations(self, count = 3, binary = False, buffer_size = 129): if binary: @@ -174,10 +174,10 @@ def multiple_destinations(self, count = 3, binary = False, buffer_size = 129): recomputed_bytes += bytes src_snap = prepare(grabsrc)() for x in dests: - self.failUnlessEqual(x.prepare(dstcount).first(), stdrowcount) - self.failUnlessEqual(x.prepare(grabdst)(), src_snap) - self.failUnlessEqual(stdrowcount + count_offset, recomputed_messages) - self.failUnlessEqual(recomputed_bytes, sp.total_bytes) + self.assertEqual(x.prepare(dstcount).first(), stdrowcount) + self.assertEqual(x.prepare(grabdst)(), src_snap) + self.assertEqual(stdrowcount + count_offset, recomputed_messages) + self.assertEqual(recomputed_bytes, sp.total_bytes) @pg_tmp def testMultipleStatements(self): @@ -226,18 +226,18 @@ def hook(msg): if rmessages: # Should get hooked before the COPY is over. seen_in_loop += 1 - self.failUnless(seen_in_loop > 0) - self.failUnlessEqual(dst.prepare(dstcount).first(), stdrowcount) - self.failUnlessEqual(dst.prepare(grabdst)(), prepare(grabsrc)()) + self.assertTrue(seen_in_loop > 0) + self.assertEqual(dst.prepare(dstcount).first(), stdrowcount) + self.assertEqual(dst.prepare(grabdst)(), prepare(grabsrc)()) # The injector adds then everytime the wire data is confiscated # from the protocol connection. notice, warning = rmessages[:2] - self.failUnlessEqual(notice.code, "00000") - self.failUnlessEqual(warning.code, "01X1X1") - self.failUnlessEqual(warning.details['severity'], "WARNING") - self.failUnlessEqual(notice.message, "It's a beautiful day.") - self.failUnlessEqual(warning.message, "FAILURE IS CERTAIN") - self.failUnlessEqual(notice.details['severity'], "NOTICE") + self.assertEqual(notice.code, "00000") + self.assertEqual(warning.code, "01X1X1") + self.assertEqual(warning.details['severity'], "WARNING") + self.assertEqual(notice.message, "It's a beautiful day.") + self.assertEqual(warning.message, "FAILURE IS CERTAIN") + self.assertEqual(notice.details['severity'], "NOTICE") @pg_tmp def testAsyncNotify(self): @@ -255,9 +255,9 @@ def testAsyncNotify(self): for x in copy: r += list(db.iternotifies(0)) # Got the injected NOTIFY's, right? - self.failUnless(r) + self.assertTrue(r) # it may have happened multiple times, so adjust accordingly. - self.failUnlessEqual(r, [('channel', 'payload', 1234)]*len(r)) + self.assertEqual(r, [('channel', 'payload', 1234)]*len(r)) @pg_tmp def testUnfinishedCopy(self): @@ -294,12 +294,12 @@ class ThisError(Exception): raise ThisError() except copyman.CopyFail as cf: # It's a copy failure, but due to ThisError. - self.failUnless(isinstance(cf.__context__, ThisError)) + self.assertTrue(isinstance(cf.__context__, ThisError)) else: self.fail("didn't raise CopyFail") # Connections should be usable. - self.failUnlessEqual(prepare('select 1').first(), 1) - self.failUnlessEqual(dst.prepare('select 1').first(), 1) + self.assertEqual(prepare('select 1').first(), 1) + self.assertEqual(dst.prepare('select 1').first(), 1) @pg_tmp def testRaiseInCopyOnEnter(self): @@ -316,7 +316,7 @@ class ThatError(Exception): raise ThatError() except copyman.CopyFail as cf: # yeah; error on incomplete COPY - self.failUnless(isinstance(cf.__context__, ThatError)) + self.assertTrue(isinstance(cf.__context__, ThatError)) else: self.fail("didn't raise CopyFail") @@ -344,10 +344,10 @@ def testCopyWithFailure(self): except copyman.ReceiverFault as cf: if sr2 not in cf.faults: raise - self.failUnless(done) - self.failUnlessRaises(Exception, dst2.execute, 'select 1') - self.failUnlessEqual(dst.prepare(dstcount).first(), stdrowcount) - self.failUnlessEqual(dst.prepare(grabdst)(), prepare(grabsrc)()) + self.assertTrue(done) + self.assertRaises(Exception, dst2.execute, 'select 1') + self.assertEqual(dst.prepare(dstcount).first(), stdrowcount) + self.assertEqual(dst.prepare(grabdst)(), prepare(grabsrc)()) @pg_tmp def testEmptyRows(self): @@ -363,11 +363,11 @@ def testEmptyRows(self): nmsg, nbytes = x m += nmsg b += nbytes - self.failUnlessEqual(m, 10) - self.failUnlessEqual(prepare("SELECT COUNT(*) FROM emptysource").first(), 10) - self.failUnlessEqual(dst.prepare("SELECT COUNT(*) FROM empty").first(), 10) - self.failUnlessEqual(sr.count(), 10) - self.failUnlessEqual(sp.count(), 10) + self.assertEqual(m, 10) + self.assertEqual(prepare("SELECT COUNT(*) FROM emptysource").first(), 10) + self.assertEqual(dst.prepare("SELECT COUNT(*) FROM empty").first(), 10) + self.assertEqual(sr.count(), 10) + self.assertEqual(sp.count(), 10) @pg_tmp def testCopyOne(self): @@ -378,7 +378,7 @@ def testCopyOne(self): copyman.CallReceiver(b.writelines) ) b.seek(0) - self.failUnlessEqual(b.read(), b'1\n') + self.assertEqual(b.read(), b'1\n') @pg_tmp def testCopyNone(self): @@ -389,7 +389,7 @@ def testCopyNone(self): copyman.CallReceiver(b.writelines) ) b.seek(0) - self.failUnlessEqual(b.read(), b'') + self.assertEqual(b.read(), b'') @pg_tmp def testNoReceivers(self): @@ -410,15 +410,15 @@ def testNoReceivers(self): else: self.fail("failed to detect dead socket") except copyman.ReceiverFault as cf: - self.failUnless(sr1 in cf.faults) + self.assertTrue(sr1 in cf.faults) # Don't reconcile. Let the manager drop the receiver. except copyman.CopyFail: - self.failUnless(not bool(copy.receivers)) + self.assertTrue(not bool(copy.receivers)) # Success. else: self.fail("did not raise expected error") # Let the exception cause a failure. - self.failUnless(done) + self.assertTrue(done) @pg_tmp def testReconciliation(self): @@ -454,19 +454,19 @@ def failed_write(*args): if done is True: self.fail("failed_write was called twice?") done = True - self.failUnlessEqual(len(copy.receivers), 0) + self.assertEqual(len(copy.receivers), 0) copy.reconcile(sr) - self.failUnlessEqual(len(copy.receivers), 1) + self.assertEqual(len(copy.receivers), 1) - self.failUnlessEqual(done, True) + self.assertEqual(done, True) # Connections should be usable. - self.failUnlessEqual(prepare('select 1').first(), 1) - self.failUnlessEqual(dst.prepare('select 1').first(), 1) + self.assertEqual(prepare('select 1').first(), 1) + self.assertEqual(dst.prepare('select 1').first(), 1) # validate completion - self.failUnlessEqual(stdrowcount, recomputed_messages) - self.failUnlessEqual(recomputed_bytes, sp.total_bytes) - self.failUnlessEqual(dst.prepare(dstcount).first(), stdrowcount) + self.assertEqual(stdrowcount, recomputed_messages) + self.assertEqual(recomputed_bytes, sp.total_bytes) + self.assertEqual(dst.prepare(dstcount).first(), stdrowcount) @pg_tmp def testDroppedConnection(self): @@ -499,28 +499,28 @@ def failed_write(*args): # Done with COPY, break out of while copy.receivers. break except copyman.ReceiverFault as cf: - self.failUnless(isinstance(cf.faults[sr2], TheCause)) + self.assertTrue(isinstance(cf.faults[sr2], TheCause)) if done is True: self.fail("failed_write was called twice?") done = True - self.failUnlessEqual(len(copy.receivers), 1) + self.assertEqual(len(copy.receivers), 1) dst2.pq.socket.close() # We don't reconcile, so the manager only has one target now. - self.failUnlessEqual(done, True) + self.assertEqual(done, True) # May not be aligned; really, we're expecting the connection to # have died. - self.failUnlessRaises(Exception, dst2.execute, "SELECT 1") + self.assertTrue(Exception, dst2.execute, "SELECT 1") # Connections should be usable. - self.failUnlessEqual(prepare('select 1').first(), 1) - self.failUnlessEqual(dst.prepare('select 1').first(), 1) + self.assertEqual(prepare('select 1').first(), 1) + self.assertEqual(dst.prepare('select 1').first(), 1) # validate completion - self.failUnlessEqual(stdrowcount, recomputed_messages) - self.failUnlessEqual(recomputed_bytes, sp.total_bytes) - self.failUnlessEqual(dst.prepare(dstcount).first(), stdrowcount) - self.failUnlessEqual(sp.count(), stdrowcount) - self.failUnlessEqual(sp.command(), "COPY") + self.assertEqual(stdrowcount, recomputed_messages) + self.assertEqual(recomputed_bytes, sp.total_bytes) + self.assertEqual(dst.prepare(dstcount).first(), stdrowcount) + self.assertEqual(sp.count(), stdrowcount) + self.assertEqual(sp.command(), "COPY") @pg_tmp def testProducerFailure(self): @@ -538,15 +538,15 @@ def testProducerFailure(self): done = True db.pq.socket.close() except copyman.ProducerFault as pf: - self.failUnless(pf.__context__ is not None) + self.assertTrue(pf.__context__ is not None) self.fail('expected CopyManager to raise CopyFail') except copyman.CopyFail as cf: # Expecting to see CopyFail - self.failUnless(True) - self.failUnless(isinstance(cf.producer_fault, pg_exc.ConnectionFailureError)) - self.failUnless(done) - self.failUnlessRaises(Exception, sqlexec, 'select 1') - self.failUnlessEqual(dst.prepare(dstcount).first(), 0) + self.assertTrue(True) + self.assertTrue(isinstance(cf.producer_fault, pg_exc.ConnectionFailureError)) + self.assertTrue(done) + self.assertRaises(Exception, sqlexec, 'select 1') + self.assertEqual(dst.prepare(dstcount).first(), 0) from ..copyman import WireState @@ -554,66 +554,66 @@ class test_WireState(unittest.TestCase): def testNormal(self): WS=WireState() messages = WS.update(memoryview(b'd\x00\x00\x00\x04')) - self.failUnlessEqual(messages, 1) - self.failUnlessEqual(WS.remaining_bytes, 0) - self.failUnlessEqual(WS.size_fragment, b'') - self.failUnlessEqual(WS.final_view, None) + self.assertEqual(messages, 1) + self.assertEqual(WS.remaining_bytes, 0) + self.assertEqual(WS.size_fragment, b'') + self.assertEqual(WS.final_view, None) def testIncomplete(self): WS=WireState() messages = WS.update(memoryview(b'd\x00\x00\x00\x05')) - self.failUnlessEqual(messages, 0) - self.failUnlessEqual(WS.remaining_bytes, 1) - self.failUnlessEqual(WS.size_fragment, b'') - self.failUnlessEqual(WS.final_view, None) + self.assertEqual(messages, 0) + self.assertEqual(WS.remaining_bytes, 1) + self.assertEqual(WS.size_fragment, b'') + self.assertEqual(WS.final_view, None) messages = WS.update(memoryview(b'x')) - self.failUnlessEqual(messages, 1) - self.failUnlessEqual(WS.remaining_bytes, 0) - self.failUnlessEqual(WS.size_fragment, b'') - self.failUnlessEqual(WS.final_view, None) + self.assertEqual(messages, 1) + self.assertEqual(WS.remaining_bytes, 0) + self.assertEqual(WS.size_fragment, b'') + self.assertEqual(WS.final_view, None) def testIncompleteHeader_0size(self): WS=WireState() messages = WS.update(memoryview(b'd')) - self.failUnlessEqual(messages, 0) - self.failUnlessEqual(WS.remaining_bytes, -1) - self.failUnlessEqual(WS.size_fragment, b'') - self.failUnlessEqual(WS.final_view, None) + self.assertEqual(messages, 0) + self.assertEqual(WS.remaining_bytes, -1) + self.assertEqual(WS.size_fragment, b'') + self.assertEqual(WS.final_view, None) messages = WS.update(b'\x00\x00\x00\x04') - self.failUnlessEqual(messages, 1) + self.assertEqual(messages, 1) def testIncompleteHeader_1size(self): WS=WireState() messages = WS.update(memoryview(b'd\x00')) - self.failUnlessEqual(messages, 0) - self.failUnlessEqual(WS.size_fragment, b'\x00') - self.failUnlessEqual(WS.final_view, None) - self.failUnlessEqual(WS.remaining_bytes, -1) + self.assertEqual(messages, 0) + self.assertEqual(WS.size_fragment, b'\x00') + self.assertEqual(WS.final_view, None) + self.assertEqual(WS.remaining_bytes, -1) messages = WS.update(memoryview(b'\x00\x00\x04')) - self.failUnlessEqual(messages, 1) - self.failUnlessEqual(WS.remaining_bytes, 0) + self.assertEqual(messages, 1) + self.assertEqual(WS.remaining_bytes, 0) def testIncompleteHeader_2size(self): WS=WireState() messages = WS.update(memoryview(b'd\x00\x00')) - self.failUnlessEqual(messages, 0) - self.failUnlessEqual(WS.remaining_bytes, -1) - self.failUnlessEqual(WS.size_fragment, b'\x00\x00') - self.failUnlessEqual(WS.final_view, None) + self.assertEqual(messages, 0) + self.assertEqual(WS.remaining_bytes, -1) + self.assertEqual(WS.size_fragment, b'\x00\x00') + self.assertEqual(WS.final_view, None) messages = WS.update(b'\x00\x04') - self.failUnlessEqual(messages, 1) - self.failUnlessEqual(WS.remaining_bytes, 0) + self.assertEqual(messages, 1) + self.assertEqual(WS.remaining_bytes, 0) def testIncompleteHeader_3size(self): WS=WireState() messages = WS.update(memoryview(b'd\x00\x00\x00')) - self.failUnlessEqual(messages, 0) - self.failUnlessEqual(WS.remaining_bytes, -1) - self.failUnlessEqual(WS.size_fragment, b'\x00\x00\x00') - self.failUnlessEqual(WS.final_view, None) + self.assertEqual(messages, 0) + self.assertEqual(WS.remaining_bytes, -1) + self.assertEqual(WS.size_fragment, b'\x00\x00\x00') + self.assertEqual(WS.final_view, None) messages = WS.update(memoryview(b'\x04')) - self.failUnlessEqual(messages, 1) - self.failUnlessEqual(WS.remaining_bytes, 0) + self.assertEqual(messages, 1) + self.assertEqual(WS.remaining_bytes, 0) if __name__ == '__main__': unittest.main() diff --git a/postgresql/test/test_dbapi20.py b/postgresql/test/test_dbapi20.py index 65a193cc..feba8d58 100644 --- a/postgresql/test/test_dbapi20.py +++ b/postgresql/test/test_dbapi20.py @@ -133,7 +133,7 @@ def test_threadsafety(self): # Must exist threadsafety = self.driver.threadsafety # Must be a valid value - self.failUnless(threadsafety in (0,1,2,3)) + self.assertTrue(threadsafety in (0,1,2,3)) except AttributeError: self.fail("Driver doesn't define threadsafety") @@ -142,7 +142,7 @@ def test_paramstyle(self): # Must exist paramstyle = self.driver.paramstyle # Must be a valid value - self.failUnless(paramstyle in ( + self.assertTrue(paramstyle in ( 'qmark','numeric','named','format','pyformat' )) except AttributeError: @@ -151,13 +151,13 @@ def test_paramstyle(self): def test_Exceptions(self): # Make sure required exceptions exist, and are in the # defined heirarchy. - self.failUnless(issubclass(self.driver.InterfaceError,self.driver.Error)) - self.failUnless(issubclass(self.driver.DatabaseError,self.driver.Error)) - self.failUnless(issubclass(self.driver.OperationalError,self.driver.Error)) - self.failUnless(issubclass(self.driver.IntegrityError,self.driver.Error)) - self.failUnless(issubclass(self.driver.InternalError,self.driver.Error)) - self.failUnless(issubclass(self.driver.ProgrammingError,self.driver.Error)) - self.failUnless(issubclass(self.driver.NotSupportedError,self.driver.Error)) + self.assertTrue(issubclass(self.driver.InterfaceError,self.driver.Error)) + self.assertTrue(issubclass(self.driver.DatabaseError,self.driver.Error)) + self.assertTrue(issubclass(self.driver.OperationalError,self.driver.Error)) + self.assertTrue(issubclass(self.driver.IntegrityError,self.driver.Error)) + self.assertTrue(issubclass(self.driver.InternalError,self.driver.Error)) + self.assertTrue(issubclass(self.driver.ProgrammingError,self.driver.Error)) + self.assertTrue(issubclass(self.driver.NotSupportedError,self.driver.Error)) def test_ExceptionsAsConnectionAttributes(self): # OPTIONAL EXTENSION @@ -169,15 +169,15 @@ def test_ExceptionsAsConnectionAttributes(self): con = self._connect() try: drv = self.driver - self.failUnless(con.Warning is drv.Warning) - self.failUnless(con.Error is drv.Error) - self.failUnless(con.InterfaceError is drv.InterfaceError) - self.failUnless(con.DatabaseError is drv.DatabaseError) - self.failUnless(con.OperationalError is drv.OperationalError) - self.failUnless(con.IntegrityError is drv.IntegrityError) - self.failUnless(con.InternalError is drv.InternalError) - self.failUnless(con.ProgrammingError is drv.ProgrammingError) - self.failUnless(con.NotSupportedError is drv.NotSupportedError) + self.assertTrue(con.Warning is drv.Warning) + self.assertTrue(con.Error is drv.Error) + self.assertTrue(con.InterfaceError is drv.InterfaceError) + self.assertTrue(con.DatabaseError is drv.DatabaseError) + self.assertTrue(con.OperationalError is drv.OperationalError) + self.assertTrue(con.IntegrityError is drv.IntegrityError) + self.assertTrue(con.InternalError is drv.InternalError) + self.assertTrue(con.ProgrammingError is drv.ProgrammingError) + self.assertTrue(con.NotSupportedError is drv.NotSupportedError) finally: con.close() @@ -273,21 +273,21 @@ def test_rowcount(self): cur.execute("insert into %sbooze values ('Victoria Bitter')" % ( self.table_prefix )) - self.failUnlessEqual(cur.rowcount, 1, + self.assertEqual(cur.rowcount, 1, 'cursor.rowcount should == number or rows inserted, or ' 'set to -1 after executing an insert statement' ) cur.execute("insert into %sbooze select 'Victoria Bitter' WHERE FALSE" % ( self.table_prefix )) - self.failUnlessEqual(cur.rowcount, 0) + self.assertEqual(cur.rowcount, 0) cur.execute("insert into %sbooze select 'First' UNION ALL select 'second'" % ( self.table_prefix )) - self.failUnlessEqual(cur.rowcount, 2) + self.assertEqual(cur.rowcount, 2) cur.execute("select name from %sbooze" % self.table_prefix) - self.failUnlessEqual(cur.rowcount, -1, + self.assertEqual(cur.rowcount, -1, 'cursor.rowcount should == number of rows returned, or ' 'set to -1 after executing a select statement' ) @@ -376,7 +376,7 @@ def _paraminsert(self,cur): cur.execute("insert into %sbooze values ('Victoria Bitter')" % ( self.table_prefix )) - self.failUnless(cur.rowcount in (-1,1)) + self.assertTrue(cur.rowcount in (-1,1)) if self.driver.paramstyle == 'qmark': cur.execute( @@ -405,7 +405,7 @@ def _paraminsert(self,cur): ) else: self.fail('Invalid paramstyle') - self.failUnless(cur.rowcount in (-1,1)) + self.assertTrue(cur.rowcount in (-1,1)) cur.execute('select name from %sbooze' % self.table_prefix) res = cur.fetchall() @@ -457,7 +457,7 @@ def test_executemany(self): ) else: self.fail('Unknown paramstyle') - self.failUnless(cur.rowcount in (-1,2), + self.assertTrue(cur.rowcount in (-1,2), 'insert using cursor.executemany set cursor.rowcount to ' 'incorrect value %r' % cur.rowcount ) @@ -499,7 +499,7 @@ def test_fetchone(self): 'cursor.fetchone should return None if a query retrieves ' 'no rows' ) - self.failUnless(cur.rowcount in (-1,0)) + self.assertTrue(cur.rowcount in (-1,0)) # cursor.fetchone should raise an Error if called after # executing a query that cannnot return rows @@ -519,7 +519,7 @@ def test_fetchone(self): self.assertEqual(cur.fetchone(),None, 'cursor.fetchone should return None if no more rows available' ) - self.failUnless(cur.rowcount in (-1,1)) + self.assertTrue(cur.rowcount in (-1,1)) finally: con.close() @@ -575,7 +575,7 @@ def test_fetchmany(self): 'cursor.fetchmany should return an empty sequence after ' 'results are exhausted' ) - self.failUnless(cur.rowcount in (-1,6)) + self.assertTrue(cur.rowcount in (-1,6)) # Same as above, using cursor.arraysize cur.arraysize=4 @@ -588,12 +588,12 @@ def test_fetchmany(self): self.assertEqual(len(r),2) r = cur.fetchmany() # Should be an empty sequence self.assertEqual(len(r),0) - self.failUnless(cur.rowcount in (-1,6)) + self.assertTrue(cur.rowcount in (-1,6)) cur.arraysize=6 cur.execute('select name from %sbooze' % self.table_prefix) rows = cur.fetchmany() # Should get all rows - self.failUnless(cur.rowcount in (-1,6)) + self.assertTrue(cur.rowcount in (-1,6)) self.assertEqual(len(rows),6) self.assertEqual(len(rows),6) rows = [r[0] for r in rows] @@ -610,7 +610,7 @@ def test_fetchmany(self): 'cursor.fetchmany should return an empty sequence if ' 'called after the whole result set has been fetched' ) - self.failUnless(cur.rowcount in (-1,6)) + self.assertTrue(cur.rowcount in (-1,6)) self.executeDDL2(cur) cur.execute('select name from %sbarflys' % self.table_prefix) @@ -619,7 +619,7 @@ def test_fetchmany(self): 'cursor.fetchmany should return an empty sequence if ' 'query retrieved no rows' ) - self.failUnless(cur.rowcount in (-1,0)) + self.assertTrue(cur.rowcount in (-1,0)) finally: con.close() @@ -643,7 +643,7 @@ def test_fetchall(self): cur.execute('select name from %sbooze' % self.table_prefix) rows = cur.fetchall() - self.failUnless(cur.rowcount in (-1,len(self.samples))) + self.assertTrue(cur.rowcount in (-1,len(self.samples))) self.assertEqual(len(rows),len(self.samples), 'cursor.fetchall did not retrieve all rows' ) @@ -659,12 +659,12 @@ def test_fetchall(self): 'cursor.fetchall should return an empty list if called ' 'after the whole result set has been fetched' ) - self.failUnless(cur.rowcount in (-1,len(self.samples))) + self.assertTrue(cur.rowcount in (-1,len(self.samples))) self.executeDDL2(cur) cur.execute('select name from %sbarflys' % self.table_prefix) rows = cur.fetchall() - self.failUnless(cur.rowcount in (-1,0)) + self.assertTrue(cur.rowcount in (-1,0)) self.assertEqual(len(rows),0, 'cursor.fetchall should return an empty list if ' 'a select query returns no rows' @@ -685,7 +685,7 @@ def test_mixedfetch(self): rows23 = cur.fetchmany(2) rows4 = cur.fetchone() rows56 = cur.fetchall() - self.failUnless(cur.rowcount in (-1,6)) + self.assertTrue(cur.rowcount in (-1,6)) self.assertEqual(len(rows23),2, 'fetchmany returned incorrect number of rows' ) @@ -750,7 +750,7 @@ def test_arraysize(self): con = self._connect() try: cur = con.cursor() - self.failUnless(hasattr(cur,'arraysize'), + self.assertTrue(hasattr(cur,'arraysize'), 'cursor.arraysize must be defined' ) finally: @@ -786,11 +786,11 @@ def test_autocommit(self): try: con.autocommit = True # autocommit mode on, commit/abort on inappropriate. - self.failUnlessRaises( + self.assertRaises( con.InterfaceError, con.commit ) - self.failUnlessRaises( + self.assertRaises( con.InterfaceError, con.rollback ) @@ -842,27 +842,27 @@ def test_Binary(self): b = self.driver.Binary(b'') def test_STRING(self): - self.failUnless(hasattr(self.driver,'STRING'), + self.assertTrue(hasattr(self.driver,'STRING'), 'module.STRING must be defined' ) def test_BINARY(self): - self.failUnless(hasattr(self.driver,'BINARY'), + self.assertTrue(hasattr(self.driver,'BINARY'), 'module.BINARY must be defined.' ) def test_NUMBER(self): - self.failUnless(hasattr(self.driver,'NUMBER'), + self.assertTrue(hasattr(self.driver,'NUMBER'), 'module.NUMBER must be defined.' ) def test_DATETIME(self): - self.failUnless(hasattr(self.driver,'DATETIME'), + self.assertTrue(hasattr(self.driver,'DATETIME'), 'module.DATETIME must be defined.' ) def test_ROWID(self): - self.failUnless(hasattr(self.driver,'ROWID'), + self.assertTrue(hasattr(self.driver,'ROWID'), 'module.ROWID must be defined.' ) @@ -871,9 +871,9 @@ def test_placeholder_escape(self): try: c = con.cursor() c.execute("SELECT 100 %% %s", (99,)) - self.failUnlessEqual(1, c.fetchone()[0]) + self.assertEqual(1, c.fetchone()[0]) c.execute("SELECT 100 %% %(foo)s", {'foo': 99}) - self.failUnlessEqual(1, c.fetchone()[0]) + self.assertEqual(1, c.fetchone()[0]) finally: con.close() diff --git a/postgresql/test/test_driver.py b/postgresql/test/test_driver.py index 12d8f704..42fcd726 100644 --- a/postgresql/test/test_driver.py +++ b/postgresql/test/test_driver.py @@ -335,15 +335,15 @@ def raise_exc(l): if l[0] is not None: e, v, tb = rl[0] raise v - self.failUnlessRaises(pg_exc.QueryCanceledError, raise_exc, rl) + self.assertRaises(pg_exc.QueryCanceledError, raise_exc, rl) @pg_tmp def testClones(self): db.execute('create table _can_clone_see_this (i int);') try: with db.clone() as db2: - self.failUnlessEqual(db2.prepare('select 1').first(), 1) - self.failUnlessEqual(db2.prepare( + self.assertEqual(db2.prepare('select 1').first(), 1) + self.assertEqual(db2.prepare( "select count(*) FROM information_schema.tables " \ "where table_name = '_can_clone_see_this'" ).first(), 1 @@ -354,17 +354,17 @@ def testClones(self): # check already open db3 = db.clone() try: - self.failUnlessEqual(db3.prepare('select 1').first(), 1) + self.assertEqual(db3.prepare('select 1').first(), 1) finally: db3.close() ps = db.prepare('select 1') ps2 = ps.clone() - self.failUnlessEqual(ps2.first(), ps.first()) + self.assertEqual(ps2.first(), ps.first()) ps2.close() c = ps.declare() c2 = c.clone() - self.failUnlessEqual(c.read(), c2.read()) + self.assertEqual(c.read(), c2.read()) @pg_tmp def testItsClosed(self): @@ -373,14 +373,14 @@ def testItsClosed(self): c = ps.declare() # c.close() - self.failUnlessRaises(pg_exc.CursorNameError, c.read) - self.failUnlessEqual(ps.first(), 1) + self.assertRaises(pg_exc.CursorNameError, c.read) + self.assertEqual(ps.first(), 1) # ps.close() - self.failUnlessRaises(pg_exc.StatementNameError, ps.first) + self.assertRaises(pg_exc.StatementNameError, ps.first) # db.close() - self.failUnlessRaises( + self.assertRaises( pg_exc.ConnectionDoesNotExistError, db.execute, "foo" ) @@ -403,41 +403,41 @@ def testGarbage(self): # be removed before we can observe the effects __del__ del c gc.collect() - self.failUnless(db.typio.encode(cid) in db.pq.garbage_cursors) + self.assertTrue(db.typio.encode(cid) in db.pq.garbage_cursors) del ci gc.collect() - self.failUnless(db.typio.encode(ci_id) in db.pq.garbage_cursors) + self.assertTrue(db.typio.encode(ci_id) in db.pq.garbage_cursors) del ps gc.collect() - self.failUnless(db.typio.encode(sid) in db.pq.garbage_statements) + self.assertTrue(db.typio.encode(sid) in db.pq.garbage_statements) @pg_tmp def testStatementCall(self): ps = db.prepare("SELECT 1") r = ps() - self.failUnless(isinstance(r, list)) - self.failUnlessEqual(ps(), [(1,)]) + self.assertTrue(isinstance(r, list)) + self.assertEqual(ps(), [(1,)]) ps = db.prepare("SELECT 1, 2") - self.failUnlessEqual(ps(), [(1,2)]) + self.assertEqual(ps(), [(1,2)]) ps = db.prepare("SELECT 1, 2 UNION ALL SELECT 3, 4") - self.failUnlessEqual(ps(), [(1,2),(3,4)]) + self.assertEqual(ps(), [(1,2),(3,4)]) @pg_tmp def testStatementFirstDML(self): cmd = prepare("CREATE TEMP TABLE first (i int)").first() - self.failUnlessEqual(cmd, 'CREATE TABLE') + self.assertEqual(cmd, 'CREATE TABLE') fins = db.prepare("INSERT INTO first VALUES (123)").first fupd = db.prepare("UPDATE first SET i = 321 WHERE i = 123").first fdel = db.prepare("DELETE FROM first").first - self.failUnlessEqual(fins(), 1) - self.failUnlessEqual(fdel(), 1) - self.failUnlessEqual(fins(), 1) - self.failUnlessEqual(fupd(), 1) - self.failUnlessEqual(fins(), 1) - self.failUnlessEqual(fins(), 1) - self.failUnlessEqual(fupd(), 2) - self.failUnlessEqual(fdel(), 3) - self.failUnlessEqual(fdel(), 0) + self.assertEqual(fins(), 1) + self.assertEqual(fdel(), 1) + self.assertEqual(fins(), 1) + self.assertEqual(fupd(), 1) + self.assertEqual(fins(), 1) + self.assertEqual(fins(), 1) + self.assertEqual(fupd(), 2) + self.assertEqual(fdel(), 3) + self.assertEqual(fdel(), 0) @pg_tmp def testStatementRowsPersistence(self): @@ -447,13 +447,13 @@ def testStatementRowsPersistence(self): rows = ps.rows(0, 10000-1) ps(0,1) # validate the first half. - self.failUnlessEqual( + self.assertEqual( list(islice(map(itemgetter(0), rows), 5000)), list(range(5000)) ) ps(0,1) # and the second half. - self.failUnlessEqual( + self.assertEqual( list(map(itemgetter(0), rows)), list(range(5000, 10000)) ) @@ -462,81 +462,81 @@ def testStatementRowsPersistence(self): def testStatementParameters(self): # too few and takes one ps = db.prepare("select $1::integer") - self.failUnlessRaises(TypeError, ps) + self.assertRaises(TypeError, ps) # too many and takes one - self.failUnlessRaises(TypeError, ps, 1, 2) + self.assertRaises(TypeError, ps, 1, 2) # too many and takes none ps = db.prepare("select 1") - self.failUnlessRaises(TypeError, ps, 1) + self.assertRaises(TypeError, ps, 1) # too many and takes some ps = db.prepare("select $1::int, $2::text") - self.failUnlessRaises(TypeError, ps, 1, "foo", "bar") + self.assertRaises(TypeError, ps, 1, "foo", "bar") @pg_tmp def testStatementAndCursorMetadata(self): ps = db.prepare("SELECT $1::integer AS my_int_column") - self.failUnlessEqual(tuple(ps.column_names), ('my_int_column',)) - self.failUnlessEqual(tuple(ps.sql_column_types), ('INTEGER',)) - self.failUnlessEqual(tuple(ps.sql_parameter_types), ('INTEGER',)) - self.failUnlessEqual(tuple(ps.pg_parameter_types), (pg_types.INT4OID,)) - self.failUnlessEqual(tuple(ps.parameter_types), (int,)) - self.failUnlessEqual(tuple(ps.column_types), (int,)) + self.assertEqual(tuple(ps.column_names), ('my_int_column',)) + self.assertEqual(tuple(ps.sql_column_types), ('INTEGER',)) + self.assertEqual(tuple(ps.sql_parameter_types), ('INTEGER',)) + self.assertEqual(tuple(ps.pg_parameter_types), (pg_types.INT4OID,)) + self.assertEqual(tuple(ps.parameter_types), (int,)) + self.assertEqual(tuple(ps.column_types), (int,)) c = ps.declare(15) - self.failUnlessEqual(tuple(c.column_names), ('my_int_column',)) - self.failUnlessEqual(tuple(c.sql_column_types), ('INTEGER',)) - self.failUnlessEqual(tuple(c.column_types), (int,)) + self.assertEqual(tuple(c.column_names), ('my_int_column',)) + self.assertEqual(tuple(c.sql_column_types), ('INTEGER',)) + self.assertEqual(tuple(c.column_types), (int,)) ps = db.prepare("SELECT $1::text AS my_text_column") - self.failUnlessEqual(tuple(ps.column_names), ('my_text_column',)) - self.failUnlessEqual(tuple(ps.sql_column_types), ('pg_catalog.text',)) - self.failUnlessEqual(tuple(ps.sql_parameter_types), ('pg_catalog.text',)) - self.failUnlessEqual(tuple(ps.pg_parameter_types), (pg_types.TEXTOID,)) - self.failUnlessEqual(tuple(ps.column_types), (str,)) - self.failUnlessEqual(tuple(ps.parameter_types), (str,)) + self.assertEqual(tuple(ps.column_names), ('my_text_column',)) + self.assertEqual(tuple(ps.sql_column_types), ('pg_catalog.text',)) + self.assertEqual(tuple(ps.sql_parameter_types), ('pg_catalog.text',)) + self.assertEqual(tuple(ps.pg_parameter_types), (pg_types.TEXTOID,)) + self.assertEqual(tuple(ps.column_types), (str,)) + self.assertEqual(tuple(ps.parameter_types), (str,)) c = ps.declare('textdata') - self.failUnlessEqual(tuple(c.column_names), ('my_text_column',)) - self.failUnlessEqual(tuple(c.sql_column_types), ('pg_catalog.text',)) - self.failUnlessEqual(tuple(c.pg_column_types), (pg_types.TEXTOID,)) - self.failUnlessEqual(tuple(c.column_types), (str,)) + self.assertEqual(tuple(c.column_names), ('my_text_column',)) + self.assertEqual(tuple(c.sql_column_types), ('pg_catalog.text',)) + self.assertEqual(tuple(c.pg_column_types), (pg_types.TEXTOID,)) + self.assertEqual(tuple(c.column_types), (str,)) ps = db.prepare("SELECT $1::text AS my_column1, $2::varchar AS my_column2") - self.failUnlessEqual(tuple(ps.column_names), ('my_column1','my_column2')) - self.failUnlessEqual(tuple(ps.sql_column_types), ('pg_catalog.text', 'CHARACTER VARYING')) - self.failUnlessEqual(tuple(ps.sql_parameter_types), ('pg_catalog.text', 'CHARACTER VARYING')) - self.failUnlessEqual(tuple(ps.pg_parameter_types), (pg_types.TEXTOID, pg_types.VARCHAROID)) - self.failUnlessEqual(tuple(ps.pg_column_types), (pg_types.TEXTOID, pg_types.VARCHAROID)) - self.failUnlessEqual(tuple(ps.parameter_types), (str,str)) - self.failUnlessEqual(tuple(ps.column_types), (str,str)) + self.assertEqual(tuple(ps.column_names), ('my_column1','my_column2')) + self.assertEqual(tuple(ps.sql_column_types), ('pg_catalog.text', 'CHARACTER VARYING')) + self.assertEqual(tuple(ps.sql_parameter_types), ('pg_catalog.text', 'CHARACTER VARYING')) + self.assertEqual(tuple(ps.pg_parameter_types), (pg_types.TEXTOID, pg_types.VARCHAROID)) + self.assertEqual(tuple(ps.pg_column_types), (pg_types.TEXTOID, pg_types.VARCHAROID)) + self.assertEqual(tuple(ps.parameter_types), (str,str)) + self.assertEqual(tuple(ps.column_types), (str,str)) c = ps.declare('textdata', 'varchardata') - self.failUnlessEqual(tuple(c.column_names), ('my_column1','my_column2')) - self.failUnlessEqual(tuple(c.sql_column_types), ('pg_catalog.text', 'CHARACTER VARYING')) - self.failUnlessEqual(tuple(c.pg_column_types), (pg_types.TEXTOID, pg_types.VARCHAROID)) - self.failUnlessEqual(tuple(c.column_types), (str,str)) + self.assertEqual(tuple(c.column_names), ('my_column1','my_column2')) + self.assertEqual(tuple(c.sql_column_types), ('pg_catalog.text', 'CHARACTER VARYING')) + self.assertEqual(tuple(c.pg_column_types), (pg_types.TEXTOID, pg_types.VARCHAROID)) + self.assertEqual(tuple(c.column_types), (str,str)) db.execute("CREATE TYPE public.myudt AS (i int)") myudt_oid = db.prepare("select oid from pg_type WHERE typname='myudt'").first() ps = db.prepare("SELECT $1::text AS my_column1, $2::varchar AS my_column2, $3::public.myudt AS my_column3") - self.failUnlessEqual(tuple(ps.column_names), ('my_column1','my_column2', 'my_column3')) - self.failUnlessEqual(tuple(ps.sql_column_types), ('pg_catalog.text', 'CHARACTER VARYING', 'public.myudt')) - self.failUnlessEqual(tuple(ps.sql_parameter_types), ('pg_catalog.text', 'CHARACTER VARYING', 'public.myudt')) - self.failUnlessEqual(tuple(ps.pg_column_types), ( + self.assertEqual(tuple(ps.column_names), ('my_column1','my_column2', 'my_column3')) + self.assertEqual(tuple(ps.sql_column_types), ('pg_catalog.text', 'CHARACTER VARYING', 'public.myudt')) + self.assertEqual(tuple(ps.sql_parameter_types), ('pg_catalog.text', 'CHARACTER VARYING', 'public.myudt')) + self.assertEqual(tuple(ps.pg_column_types), ( pg_types.TEXTOID, pg_types.VARCHAROID, myudt_oid) ) - self.failUnlessEqual(tuple(ps.pg_parameter_types), ( + self.assertEqual(tuple(ps.pg_parameter_types), ( pg_types.TEXTOID, pg_types.VARCHAROID, myudt_oid) ) - self.failUnlessEqual(tuple(ps.parameter_types), (str,str,tuple)) - self.failUnlessEqual(tuple(ps.column_types), (str,str,tuple)) + self.assertEqual(tuple(ps.parameter_types), (str,str,tuple)) + self.assertEqual(tuple(ps.column_types), (str,str,tuple)) c = ps.declare('textdata', 'varchardata', (123,)) - self.failUnlessEqual(tuple(c.column_names), ('my_column1','my_column2', 'my_column3')) - self.failUnlessEqual(tuple(c.sql_column_types), ('pg_catalog.text', 'CHARACTER VARYING', 'public.myudt')) - self.failUnlessEqual(tuple(c.pg_column_types), ( + self.assertEqual(tuple(c.column_names), ('my_column1','my_column2', 'my_column3')) + self.assertEqual(tuple(c.sql_column_types), ('pg_catalog.text', 'CHARACTER VARYING', 'public.myudt')) + self.assertEqual(tuple(c.pg_column_types), ( pg_types.TEXTOID, pg_types.VARCHAROID, myudt_oid )) - self.failUnlessEqual(tuple(c.column_types), (str,str,tuple)) + self.assertEqual(tuple(c.column_types), (str,str,tuple)) @pg_tmp def testRowInterface(self): @@ -547,22 +547,22 @@ def testRowInterface(self): "'1982-05-18 12:30:00'::timestamp as col3;" ) row = ps.first() - self.failUnlessEqual(tuple(row), data) + self.assertEqual(tuple(row), data) - self.failUnless(1 in row) - self.failUnless('0' in row) - self.failUnless(decimal.Decimal('0.00') in row) - self.failUnless(datetime.datetime(1982,5,18,12,30,0) in row) + self.assertTrue(1 in row) + self.assertTrue('0' in row) + self.assertTrue(decimal.Decimal('0.00') in row) + self.assertTrue(datetime.datetime(1982,5,18,12,30,0) in row) - self.failUnlessEqual( + self.assertEqual( tuple(row.column_names), tuple(['col' + str(i) for i in range(4)]) ) - self.failUnlessEqual( + self.assertEqual( (row["col0"], row["col1"], row["col2"], row["col3"]), (row[0], row[1], row[2], row[3]), ) - self.failUnlessEqual( + self.assertEqual( (row["col0"], row["col1"], row["col2"], row["col3"]), (row[0], row[1], row[2], row[3]), ) @@ -570,47 +570,47 @@ def testRowInterface(self): cnames = list(ps.column_names) cnames.sort() keys.sort() - self.failUnlessEqual(keys, cnames) - self.failUnlessEqual(list(row.values()), list(data)) - self.failUnlessEqual(list(row.items()), list(zip(ps.column_names, data))) + self.assertEqual(keys, cnames) + self.assertEqual(list(row.values()), list(data)) + self.assertEqual(list(row.items()), list(zip(ps.column_names, data))) row_d = dict(row) for x in ps.column_names: - self.failUnlessEqual(row_d[x], row[x]) + self.assertEqual(row_d[x], row[x]) for x in row_d.keys(): - self.failUnlessEqual(row.get(x), row_d[x]) + self.assertEqual(row.get(x), row_d[x]) row_t = tuple(row) - self.failUnlessEqual(row_t, row) + self.assertEqual(row_t, row) # transform crow = row.transform(col0 = str) - self.failUnlessEqual(type(crow[0]), str) + self.assertEqual(type(crow[0]), str) crow = row.transform(str) - self.failUnlessEqual(type(crow[0]), str) + self.assertEqual(type(crow[0]), str) crow = row.transform(str, int) - self.failUnlessEqual(type(crow[0]), str) - self.failUnlessEqual(type(crow[1]), int) + self.assertEqual(type(crow[0]), str) + self.assertEqual(type(crow[1]), int) # None = no transformation crow = row.transform(None, int) - self.failUnlessEqual(type(crow[0]), int) - self.failUnlessEqual(type(crow[1]), int) + self.assertEqual(type(crow[0]), int) + self.assertEqual(type(crow[1]), int) # and a combination crow = row.transform(str, col1 = int, col3 = str) - self.failUnlessEqual(type(crow[0]), str) - self.failUnlessEqual(type(crow[1]), int) - self.failUnlessEqual(type(crow[3]), str) + self.assertEqual(type(crow[0]), str) + self.assertEqual(type(crow[1]), int) + self.assertEqual(type(crow[3]), str) for i in range(4): - self.failUnlessEqual(i, row.index_from_key('col' + str(i))) - self.failUnlessEqual('col' + str(i), row.key_from_index(i)) + self.assertEqual(i, row.index_from_key('col' + str(i))) + self.assertEqual('col' + str(i), row.key_from_index(i)) def column_test(self): g_i = db.prepare('SELECT i FROM generate_series(1,10) as g(i)').column # ignore the second column. g_ii = db.prepare('SELECT i, i+10 as i2 FROM generate_series(1,10) as g(i)').column - self.failUnlessEqual(tuple(g_i()), tuple(g_ii())) - self.failUnlessEqual(tuple(g_i()), (1,2,3,4,5,6,7,8,9,10)) + self.assertEqual(tuple(g_i()), tuple(g_ii())) + self.assertEqual(tuple(g_i()), (1,2,3,4,5,6,7,8,9,10)) @pg_tmp def testColumn(self): @@ -625,26 +625,26 @@ def testColumnInXact(self): def testStatementFromId(self): db.execute("PREPARE foo AS SELECT 1 AS colname;") ps = db.statement_from_id('foo') - self.failUnlessEqual(ps.first(), 1) - self.failUnlessEqual(ps(), [(1,)]) - self.failUnlessEqual(list(ps), [(1,)]) - self.failUnlessEqual(tuple(ps.column_names), ('colname',)) + self.assertEqual(ps.first(), 1) + self.assertEqual(ps(), [(1,)]) + self.assertEqual(list(ps), [(1,)]) + self.assertEqual(tuple(ps.column_names), ('colname',)) @pg_tmp def testCursorFromId(self): db.execute("DECLARE foo CURSOR WITH HOLD FOR SELECT 1") c = db.cursor_from_id('foo') - self.failUnlessEqual(c.read(), [(1,)]) + self.assertEqual(c.read(), [(1,)]) db.execute( "DECLARE bar SCROLL CURSOR WITH HOLD FOR SELECT i FROM generate_series(0, 99) AS g(i)" ) c = db.cursor_from_id('bar') c.seek(50) - self.failUnlessEqual([x for x, in c.read(10)], list(range(50,60))) + self.assertEqual([x for x, in c.read(10)], list(range(50,60))) c.seek(0,2) - self.failUnlessEqual(c.read(), []) + self.assertEqual(c.read(), []) c.seek(0) - self.failUnlessEqual([x for x, in c.read()], list(range(100))) + self.assertEqual([x for x, in c.read()], list(range(100))) @pg_tmp def testCopyToSTDOUT(self): @@ -656,10 +656,10 @@ def testCopyToSTDOUT(self): copy_foo = db.prepare('copy foo to stdout') foo_content = set(copy_foo) expected = set((str(i).encode('ascii') + b'\n' for i in range(500))) - self.failUnlessEqual(expected, foo_content) - self.failUnlessEqual(expected, set(copy_foo())) - self.failUnlessEqual(expected, set(chain.from_iterable(copy_foo.chunks()))) - self.failUnlessEqual(expected, set(copy_foo.rows())) + self.assertEqual(expected, foo_content) + self.assertEqual(expected, set(copy_foo())) + self.assertEqual(expected, set(chain.from_iterable(copy_foo.chunks()))) + self.assertEqual(expected, set(copy_foo.rows())) db.execute("DROP TABLE foo") @pg_tmp @@ -671,7 +671,7 @@ def testCopyFromSTDIN(self): foo_content = list(( x for (x,) in db.prepare('select * from foo order by 1 ASC') )) - self.failUnlessEqual(foo_content, list(range(200))) + self.assertEqual(foo_content, list(range(200))) db.execute("DROP TABLE foo") @pg_tmp @@ -692,7 +692,7 @@ def EvilGenerator(): db._pq_complete() except Exception: pass - self.failUnlessEqual(prepare('select 1').first(), 1) + self.assertEqual(prepare('select 1').first(), 1) @pg_tmp def testLookupProcByName(self): @@ -702,7 +702,7 @@ def testLookupProcByName(self): db.settings['search_path'] = 'public' f = db.proc('foo()') f2 = db.proc('public.foo()') - self.failUnless(f.oid == f2.oid, + self.assertTrue(f.oid == f2.oid, "function lookup incongruence(%r != %r)" %(f, f2) ) @@ -712,7 +712,7 @@ def testLookupProcById(self): "select oid from pg_proc where proname = 'generate_series' limit 1" ).first() gs = db.proc(gsoid) - self.failUnlessEqual(list(gs(1, 100)), list(range(1, 101))) + self.assertEqual(list(gs(1, 100)), list(range(1, 101))) def execute_proc(self): ver = db.proc("version()") @@ -721,22 +721,22 @@ def execute_proc(self): "CREATE OR REPLACE FUNCTION ifoo(int) RETURNS int LANGUAGE SQL AS 'select $1'" ) ifoo = db.proc('ifoo(int)') - self.failUnlessEqual(ifoo(1), 1) - self.failUnlessEqual(ifoo(None), None) + self.assertEqual(ifoo(1), 1) + self.assertEqual(ifoo(None), None) db.execute( "CREATE OR REPLACE FUNCTION ifoo(varchar) RETURNS text LANGUAGE SQL AS 'select $1'" ) ifoo = db.proc('ifoo(varchar)') - self.failUnlessEqual(ifoo('1'), '1') - self.failUnlessEqual(ifoo(None), None) + self.assertEqual(ifoo('1'), '1') + self.assertEqual(ifoo(None), None) db.execute( "CREATE OR REPLACE FUNCTION ifoo(varchar,int) RETURNS text LANGUAGE SQL AS 'select ($1::int + $2)::varchar'" ) ifoo = db.proc('ifoo(varchar,int)') - self.failUnlessEqual(ifoo('1',1), '2') - self.failUnlessEqual(ifoo(None,1), None) - self.failUnlessEqual(ifoo('1',None), None) - self.failUnlessEqual(ifoo('2',2), '4') + self.assertEqual(ifoo('1',1), '2') + self.assertEqual(ifoo(None,1), None) + self.assertEqual(ifoo('1',None), None) + self.assertEqual(ifoo('2',2), '4') @pg_tmp def testProcExecution(self): @@ -755,12 +755,12 @@ def testProcExecutionInSubXact(self): @pg_tmp def testNULL(self): # Directly commpare (SELECT NULL) is None - self.failUnless( + self.assertTrue( db.prepare("SELECT NULL")()[0][0] is None, "SELECT NULL did not return None" ) # Indirectly compare (select NULL) is None - self.failUnless( + self.assertTrue( db.prepare("SELECT $1::text")(None)[0][0] is None, "[SELECT $1::text](None) did not return None" ) @@ -768,11 +768,11 @@ def testNULL(self): @pg_tmp def testBool(self): fst, snd = db.prepare("SELECT true, false").first() - self.failUnless(fst is True) - self.failUnless(snd is False) + self.assertTrue(fst is True) + self.assertTrue(snd is False) def select(self): - #self.failUnlessEqual( + #self.assertEqual( # db.prepare('')().command(), # None, # 'Empty statement has command?' @@ -781,13 +781,13 @@ def select(self): s1 = db.prepare("SELECT 1 as name") p = s1() tup = p[0] - self.failUnless(tup[0] == 1) + self.assertTrue(tup[0] == 1) for tup in s1: - self.failUnlessEqual(tup[0], 1) + self.assertEqual(tup[0], 1) for tup in s1: - self.failUnlessEqual(tup["name"], 1) + self.assertEqual(tup["name"], 1) @pg_tmp def testSelect(self): @@ -801,18 +801,18 @@ def testSelectInXact(self): def cursor_read(self): ps = db.prepare("SELECT i FROM generate_series(0, (2^8)::int - 1) AS g(i)") c = ps.declare() - self.failUnlessEqual(c.read(0), []) - self.failUnlessEqual(c.read(0), []) - self.failUnlessEqual(c.read(1), [(0,)]) - self.failUnlessEqual(c.read(1), [(1,)]) - self.failUnlessEqual(c.read(2), [(2,), (3,)]) - self.failUnlessEqual(c.read(2), [(4,), (5,)]) - self.failUnlessEqual(c.read(3), [(6,), (7,), (8,)]) - self.failUnlessEqual(c.read(4), [(9,), (10,), (11,), (12,)]) - self.failUnlessEqual(c.read(4), [(13,), (14,), (15,), (16,)]) - self.failUnlessEqual(c.read(5), [(17,), (18,), (19,), (20,), (21,)]) - self.failUnlessEqual(c.read(0), []) - self.failUnlessEqual(c.read(6), [(22,),(23,),(24,),(25,),(26,),(27,)]) + self.assertEqual(c.read(0), []) + self.assertEqual(c.read(0), []) + self.assertEqual(c.read(1), [(0,)]) + self.assertEqual(c.read(1), [(1,)]) + self.assertEqual(c.read(2), [(2,), (3,)]) + self.assertEqual(c.read(2), [(4,), (5,)]) + self.assertEqual(c.read(3), [(6,), (7,), (8,)]) + self.assertEqual(c.read(4), [(9,), (10,), (11,), (12,)]) + self.assertEqual(c.read(4), [(13,), (14,), (15,), (16,)]) + self.assertEqual(c.read(5), [(17,), (18,), (19,), (20,), (21,)]) + self.assertEqual(c.read(0), []) + self.assertEqual(c.read(6), [(22,),(23,),(24,),(25,),(26,),(27,)]) r = [-1] i = 4 v = 28 @@ -821,7 +821,7 @@ def cursor_read(self): i = i * 2 r = [x for x, in c.read(i)] top = min(maxv, v + i) - self.failUnlessEqual(r, list(range(v, top))) + self.assertEqual(r, list(range(v, top))) v = top @pg_tmp @@ -832,9 +832,9 @@ def testCursorRead(self): def testCursorIter(self): ps = db.prepare("SELECT i FROM generate_series(0, 10) AS g(i)") c = ps.declare() - self.failUnlessEqual(next(iter(c)), (0,)) - self.failUnlessEqual(next(iter(c)), (1,)) - self.failUnlessEqual(next(iter(c)), (2,)) + self.assertEqual(next(iter(c)), (0,)) + self.assertEqual(next(iter(c)), (1,)) + self.assertEqual(next(iter(c)), (2,)) @pg_tmp def testCursorReadInXact(self): @@ -855,53 +855,53 @@ def testScroll(self, direction = True): if not direction: c.seek(0) - self.failUnlessEqual([x for x, in c.read(10)], list(range(10))) + self.assertEqual([x for x, in c.read(10)], list(range(10))) # bit strange to me, but i've watched the fetch backwards -jwp 2009 - self.failUnlessEqual([x for x, in c.read(10, 'BACKWARD')], list(range(8, -1, -1))) + self.assertEqual([x for x, in c.read(10, 'BACKWARD')], list(range(8, -1, -1))) c.seek(0, 2) - self.failUnlessEqual([x for x, in c.read(10, 'BACKWARD')], list(range(imax, imax-10, -1))) + self.assertEqual([x for x, in c.read(10, 'BACKWARD')], list(range(imax, imax-10, -1))) # move to end c.seek(0, 2) - self.failUnlessEqual([x for x, in c.read(100, 'BACKWARD')], list(range(imax, imax-100, -1))) + self.assertEqual([x for x, in c.read(100, 'BACKWARD')], list(range(imax, imax-100, -1))) # move backwards, relative c.seek(-100, 1) - self.failUnlessEqual([x for x, in c.read(100, 'BACKWARD')], list(range(imax-200, imax-300, -1))) + self.assertEqual([x for x, in c.read(100, 'BACKWARD')], list(range(imax-200, imax-300, -1))) # move abs, again c.seek(14000) - self.failUnlessEqual([x for x, in c.read(100)], list(range(14000, 14100))) + self.assertEqual([x for x, in c.read(100)], list(range(14000, 14100))) # move forwards, relative c.seek(100, 1) - self.failUnlessEqual([x for x, in c.read(100)], list(range(14200, 14300))) + self.assertEqual([x for x, in c.read(100)], list(range(14200, 14300))) # move abs, again c.seek(24000) - self.failUnlessEqual([x for x, in c.read(200)], list(range(24000, 24200))) + self.assertEqual([x for x, in c.read(200)], list(range(24000, 24200))) # move to end and then back some c.seek(20, 2) - self.failUnlessEqual([x for x, in c.read(200, 'BACKWARD')], list(range(imax-20, imax-20-200, -1))) + self.assertEqual([x for x, in c.read(200, 'BACKWARD')], list(range(imax-20, imax-20-200, -1))) c.seek(0, 2) c.seek(-10, 1) r1 = c.read(10) c.seek(10, 2) - self.failUnlessEqual(r1, c.read(10)) + self.assertEqual(r1, c.read(10)) @pg_tmp def testSeek(self): ps = db.prepare("SELECT i FROM generate_series(0, (2^6)::int - 1) AS g(i)") c = ps.declare() - self.failUnlessEqual(c.seek(4, 'FORWARD'), 4) - self.failUnlessEqual([x for x, in c.read(10)], list(range(4, 14))) + self.assertEqual(c.seek(4, 'FORWARD'), 4) + self.assertEqual([x for x, in c.read(10)], list(range(4, 14))) - self.failUnlessEqual(c.seek(2, 'BACKWARD'), 2) - self.failUnlessEqual([x for x, in c.read(10)], list(range(12, 22))) + self.assertEqual(c.seek(2, 'BACKWARD'), 2) + self.assertEqual([x for x, in c.read(10)], list(range(12, 22))) - self.failUnlessEqual(c.seek(-5, 'BACKWARD'), 5) - self.failUnlessEqual([x for x, in c.read(10)], list(range(27, 37))) + self.assertEqual(c.seek(-5, 'BACKWARD'), 5) + self.assertEqual([x for x, in c.read(10)], list(range(27, 37))) - self.failUnlessEqual(c.seek('ALL'), 27) + self.assertEqual(c.seek('ALL'), 27) def testScrollBackwards(self): # testScroll again, but backwards this time. @@ -913,26 +913,26 @@ def testWithHold(self): ps = db.prepare("SELECT 1") c = ps.declare() cid = c.cursor_id - self.failUnlessEqual(c.read()[0][0], 1) + self.assertEqual(c.read()[0][0], 1) # make sure it's not cheating - self.failUnlessEqual(c.cursor_id, cid) + self.assertEqual(c.cursor_id, cid) # check grabs beyond the default chunksize. with db.xact(): ps = db.prepare("SELECT i FROM generate_series(0, 99) as g(i)") c = ps.declare() cid = c.cursor_id - self.failUnlessEqual([x for x, in c.read()], list(range(100))) + self.assertEqual([x for x, in c.read()], list(range(100))) # make sure it's not cheating - self.failUnlessEqual(c.cursor_id, cid) + self.assertEqual(c.cursor_id, cid) def load_rows(self): gs = db.prepare("SELECT i FROM generate_series(1, 10000) AS g(i)") - self.failUnlessEqual( + self.assertEqual( list((x[0] for x in gs.rows())), list(range(1, 10001)) ) # exercise ``for x in chunks: dst.load_rows(x)`` - with db.connector() as db2: + with new() as db2: db2.execute( """ CREATE TABLE chunking AS @@ -946,11 +946,11 @@ def load_rows(self): write(read) del read, write - self.failUnlessEqual( + self.assertEqual( db.prepare('select count(*) FROM chunking').first(), 20000 ) - self.failUnlessEqual( + self.assertEqual( db.prepare('select count(DISTINCT i) FROM chunking').first(), 10000 ) @@ -967,12 +967,12 @@ def testLoadRowsInXact(self): def load_chunks(self): gs = db.prepare("SELECT i FROM generate_series(1, 10000) AS g(i)") - self.failUnlessEqual( + self.assertEqual( list((x[0] for x in chain.from_iterable(gs.chunks()))), list(range(1, 10001)) ) # exercise ``for x in chunks: dst.load_chunks(x)`` - with db.connector() as db2: + with new() as db2: db2.execute( """ CREATE TABLE chunking AS @@ -986,11 +986,11 @@ def load_chunks(self): write(read) del read, write - self.failUnlessEqual( + self.assertEqual( db.prepare('select count(*) FROM chunking').first(), 20000 ) - self.failUnlessEqual( + self.assertEqual( db.prepare('select count(DISTINCT i) FROM chunking').first(), 10000 ) @@ -1012,14 +1012,14 @@ def testSimpleDML(self): mkemp = db.prepare("INSERT INTO emp VALUES ($1, $2)") del_all_emp = db.prepare("DELETE FROM emp") command, count = mkemp('john', 35) - self.failUnlessEqual(command, 'INSERT') - self.failUnlessEqual(count, 1) + self.assertEqual(command, 'INSERT') + self.assertEqual(count, 1) command, count = mkemp('jane', 31) - self.failUnlessEqual(command, 'INSERT') - self.failUnlessEqual(count, 1) + self.assertEqual(command, 'INSERT') + self.assertEqual(count, 1) command, count = del_all_emp() - self.failUnlessEqual(command, 'DELETE') - self.failUnlessEqual(count, 2) + self.assertEqual(command, 'DELETE') + self.assertEqual(count, 2) finally: db.execute("DROP TABLE emp") @@ -1030,22 +1030,22 @@ def dml(self): delete_t = db.prepare("DELETE FROM t WHERE i = $1") delete_all_t = db.prepare("DELETE FROM t") update_t = db.prepare("UPDATE t SET i = $2 WHERE i = $1") - self.failUnlessEqual(insert_t(1)[1], 1) - self.failUnlessEqual(delete_t(1)[1], 1) - self.failUnlessEqual(insert_t(2)[1], 1) - self.failUnlessEqual(insert_t(2)[1], 1) - self.failUnlessEqual(delete_t(2)[1], 2) - - self.failUnlessEqual(insert_t(3)[1], 1) - self.failUnlessEqual(insert_t(3)[1], 1) - self.failUnlessEqual(insert_t(3)[1], 1) - self.failUnlessEqual(delete_all_t()[1], 3) - - self.failUnlessEqual(update_t(1, 2)[1], 0) - self.failUnlessEqual(insert_t(1)[1], 1) - self.failUnlessEqual(update_t(1, 2)[1], 1) - self.failUnlessEqual(delete_t(1)[1], 0) - self.failUnlessEqual(delete_t(2)[1], 1) + self.assertEqual(insert_t(1)[1], 1) + self.assertEqual(delete_t(1)[1], 1) + self.assertEqual(insert_t(2)[1], 1) + self.assertEqual(insert_t(2)[1], 1) + self.assertEqual(delete_t(2)[1], 2) + + self.assertEqual(insert_t(3)[1], 1) + self.assertEqual(insert_t(3)[1], 1) + self.assertEqual(insert_t(3)[1], 1) + self.assertEqual(delete_all_t()[1], 3) + + self.assertEqual(update_t(1, 2)[1], 0) + self.assertEqual(insert_t(1)[1], 1) + self.assertEqual(update_t(1, 2)[1], 1) + self.assertEqual(delete_t(1)[1], 0) + self.assertEqual(delete_t(2)[1], 1) finally: db.execute("DROP TABLE t") @@ -1070,7 +1070,7 @@ def batch_dml(self): ) insert_t.load_rows(mset) content = db.prepare("SELECT * FROM t ORDER BY 1 ASC") - self.failUnlessEqual(mset, tuple(content())) + self.assertEqual(mset, tuple(content())) finally: db.execute("DROP TABLE t") @@ -1094,7 +1094,7 @@ def testTypes(self): rsample = list(pb.rows(sample))[0][0] if isinstance(rsample, pg_types.Array): rsample = rsample.nest() - self.failUnless( + self.assertTrue( rsample == sample, "failed to return %s object data as-is; gave %r, received %r" %( typname, sample, rsample @@ -1123,7 +1123,7 @@ def testDomainSupport(self): rsample = list(pb.rows(sample))[0][0] if isinstance(rsample, pg_types.Array): rsample = rsample.nest() - self.failUnless( + self.assertTrue( rsample == sample, "failed to return %s object data as-is; gave %r, received %r" %( typname, sample, rsample @@ -1147,26 +1147,26 @@ def tostr(x): else: # 3.1 compat tostr = etree.tostring - self.failUnlessEqual(tostr(xml.first(foo)), tostr(foo)) - self.failUnlessEqual(tostr(xml.first(bar)), tostr(bar)) - self.failUnlessEqual(tostr(textxml.first('')), tostr(foo)) - self.failUnlessEqual(tostr(textxml.first('')), tostr(foo)) - self.failUnlessEqual(tostr(xml.first(etree.XML(''))), tostr(foo)) - self.failUnlessEqual(tostr(textxml.first('')), tostr(foo)) + self.assertEqual(tostr(xml.first(foo)), tostr(foo)) + self.assertEqual(tostr(xml.first(bar)), tostr(bar)) + self.assertEqual(tostr(textxml.first('')), tostr(foo)) + self.assertEqual(tostr(textxml.first('')), tostr(foo)) + self.assertEqual(tostr(xml.first(etree.XML(''))), tostr(foo)) + self.assertEqual(tostr(textxml.first('')), tostr(foo)) # test fragments - self.failUnlessEqual( + self.assertEqual( tuple( tostr(x) for x in xml.first('') ), (tostr(foo), tostr(bar)) ) - self.failUnlessEqual( + self.assertEqual( tuple( tostr(x) for x in textxml.first('') ), (tostr(foo), tostr(bar)) ) # mixed text and etree. - self.failUnlessEqual( + self.assertEqual( tuple( tostr(x) for x in xml.first(( '', bar, @@ -1174,7 +1174,7 @@ def tostr(x): ), (tostr(foo), tostr(bar)) ) - self.failUnlessEqual( + self.assertEqual( tuple( tostr(x) for x in xml.first(( '', bar, @@ -1208,21 +1208,21 @@ def testUUID(self): if has_uuid: ps = db.prepare('select $1::uuid').first x = uuid.uuid1() - self.failUnlessEqual(ps(x), x) + self.assertEqual(ps(x), x) def _infinity_test(self, typname, inf, neg): ps = db.prepare('SELECT $1::' + typname).first val = ps('infinity') - self.failUnlessEqual(val, inf) + self.assertEqual(val, inf) val = ps('-infinity') - self.failUnlessEqual(val, neg) + self.assertEqual(val, neg) val = ps(inf) - self.failUnlessEqual(val, inf) + self.assertEqual(val, inf) val = ps(neg) - self.failUnlessEqual(val, neg) + self.assertEqual(val, neg) ps = db.prepare('SELECT $1::' + typname + '::text').first - self.failUnlessEqual(ps('infinity'), 'infinity') - self.failUnlessEqual(ps('-infinity'), '-infinity') + self.assertEqual(ps('infinity'), 'infinity') + self.assertEqual(ps('-infinity'), '-infinity') @pg_tmp def testInfinity_stdlib_datetime(self): @@ -1241,21 +1241,21 @@ def testInfinity_stdlib_date(self): def testTypeIOError(self): original = dict(db.typio._cache) ps = db.prepare('SELECT $1::numeric') - self.failUnlessRaises(pg_exc.ParameterError, ps, 'foo') + self.assertRaises(pg_exc.ParameterError, ps, 'foo') try: db.execute('CREATE type test_tuple_error AS (n numeric);') ps = db.prepare('SELECT $1::test_tuple_error AS the_column') - self.failUnlessRaises(pg_exc.ParameterError, ps, ('foo',)) + self.assertRaises(pg_exc.ParameterError, ps, ('foo',)) try: ps(('foo',)) except pg_exc.ParameterError as err: # 'foo' is not a valid Decimal. # Expecting a double TupleError here, one from the composite pack # and one from the row pack. - self.failUnless(isinstance(err.__context__, pg_exc.CompositeError)) - self.failUnlessEqual(int(err.details['position']), 0) + self.assertTrue(isinstance(err.__context__, pg_exc.CompositeError)) + self.assertEqual(int(err.details['position']), 0) # attribute number that the failure occurred on - self.failUnlessEqual(int(err.__context__.details['position']), 0) + self.assertEqual(int(err.__context__.details['position']), 0) else: self.fail("failed to raise TupleError") @@ -1272,29 +1272,29 @@ def raise_ThisError(arg): db.typio._cache[pg_types.NUMERICOID] = (pack, raise_ThisError, typ) # Now, numeric_unpack will always raise "ThisError". ps = db.prepare('SELECT $1::numeric as col') - self.failUnlessRaises( + self.assertRaises( pg_exc.ColumnError, ps, decimal.Decimal("101") ) try: ps(decimal.Decimal("101")) except pg_exc.ColumnError as err: - self.failUnless(isinstance(err.__context__, ThisError)) + self.assertTrue(isinstance(err.__context__, ThisError)) # might be too inquisitive.... - self.failUnlessEqual(int(err.details['position']), 0) - self.failUnless('NUMERIC' in err.message) - self.failUnless('col' in err.message) + self.assertEqual(int(err.details['position']), 0) + self.assertTrue('NUMERIC' in err.message) + self.assertTrue('col' in err.message) else: self.fail("failed to raise TupleError from reception") ps = db.prepare('SELECT $1::test_tuple_error AS tte') try: ps((decimal.Decimal("101"),)) except pg_exc.ColumnError as err: - self.failUnless(isinstance(err.__context__, pg_exc.CompositeError)) - self.failUnless(isinstance(err.__context__.__context__, ThisError)) + self.assertTrue(isinstance(err.__context__, pg_exc.CompositeError)) + self.assertTrue(isinstance(err.__context__.__context__, ThisError)) # might be too inquisitive.... - self.failUnlessEqual(int(err.details['position']), 0) - self.failUnlessEqual(int(err.__context__.details['position']), 0) - self.failUnless('test_tuple_error' in err.message) + self.assertEqual(int(err.details['position']), 0) + self.assertEqual(int(err.__context__.details['position']), 0) + self.assertTrue('test_tuple_error' in err.message) else: self.fail("failed to raise TupleError from reception") finally: @@ -1359,20 +1359,20 @@ def testTypeMismatchError(self): @pg_tmp def testUndefinedObjectError(self): try: - self.failUnlessRaises( + self.assertRaises( pg_exc.UndefinedObjectError, db.prepare, "CREATE TABLE lksvdnvsdlksnv(i intt___t)" ) except: # newer versions throw the exception on execution - self.failUnlessRaises( + self.assertRaises( pg_exc.UndefinedObjectError, db.prepare("CREATE TABLE lksvdnvsdlksnv(i intt___t)") ) @pg_tmp def testZeroDivisionError(self): - self.failUnlessRaises( + self.assertRaises( pg_exc.ZeroDivisionError, db.prepare("SELECT 1/i FROM (select 0 as i) AS g(i)").first, ) @@ -1384,7 +1384,7 @@ def testTransactionCommit(self): db.prepare("SELECT * FROM withfoo") db.execute("DROP TABLE withfoo") - self.failUnlessRaises( + self.assertRaises( pg_exc.UndefinedTableError, db.execute, "SELECT * FROM withfoo" ) @@ -1399,7 +1399,7 @@ class SomeError(Exception): raise SomeError except SomeError: pass - self.failUnlessRaises( + self.assertRaises( pg_exc.UndefinedTableError, db.execute, "SELECT * FROM withfoo" ) @@ -1504,14 +1504,14 @@ def testPreparedTransactionFailedRecovery(self): @pg_tmp def testSerializeable(self): - with db.connector() as db2: + with new() as db2: db2.execute("create table some_darn_table (i int);") try: with db.xact(isolation = 'serializable'): db.execute('insert into some_darn_table values (123);') # db2 is in autocommit.. db2.execute('insert into some_darn_table values (321);') - self.failIfEqual( + self.assertNotEqual( list(db.prepare('select * from some_darn_table')), list(db2.prepare('select * from some_darn_table')), ) @@ -1525,7 +1525,7 @@ class something(Exception): pass try: with db.xact(mode = 'read only'): - self.failUnlessRaises( + self.assertRaises( pg_exc.ReadOnlyTransactionError, db.execute, "create table ieeee(i int)" @@ -1545,7 +1545,7 @@ def testFailedTransactionBlock(self): pass self.fail("__exit__ didn't identify failed transaction") except pg_exc.InFailedTransactionError as err: - self.failUnlessEqual(err.source, 'CLIENT') + self.assertEqual(err.source, 'CLIENT') @pg_tmp def testFailedSubtransactionBlock(self): @@ -1559,7 +1559,7 @@ def testFailedSubtransactionBlock(self): self.fail("__exit__ didn't identify failed transaction") except pg_exc.InFailedTransactionError as err: # driver should have released/aborted instead - self.failUnlessEqual(err.source, 'CLIENT') + self.assertEqual(err.source, 'CLIENT') @pg_tmp def testSuccessfulSubtransactionBlock(self): @@ -1626,8 +1626,8 @@ def testCloseInSubTransactionBlock(self): def testSettingsCM(self): orig = db.settings['search_path'] with db.settings(search_path='public'): - self.failUnlessEqual(db.settings['search_path'], 'public') - self.failUnlessEqual(db.settings['search_path'], orig) + self.assertEqual(db.settings['search_path'], 'public') + self.assertEqual(db.settings['search_path'], orig) @pg_tmp def testSettingsReset(self): @@ -1636,28 +1636,28 @@ def testSettingsReset(self): cur = db.settings['search_path'] db.settings['search_path'] = 'pg_catalog' del db.settings['search_path'] - self.failUnlessEqual(db.settings['search_path'], cur) + self.assertEqual(db.settings['search_path'], cur) @pg_tmp def testSettingsCount(self): - self.failUnlessEqual( + self.assertEqual( len(db.settings), db.prepare('select count(*) from pg_settings').first() ) @pg_tmp def testSettingsGet(self): - self.failUnlessEqual( + self.assertEqual( db.settings['search_path'], db.settings.get('search_path') ) - self.failUnlessEqual(None, db.settings.get(' $*0293 vksnd')) + self.assertEqual(None, db.settings.get(' $*0293 vksnd')) @pg_tmp def testSettingsGetSet(self): sub = db.settings.getset( ('search_path', 'default_statistics_target') ) - self.failUnlessEqual(db.settings['search_path'], sub['search_path']) - self.failUnlessEqual(db.settings['default_statistics_target'], sub['default_statistics_target']) + self.assertEqual(db.settings['search_path'], sub['search_path']) + self.assertEqual(db.settings['default_statistics_target'], sub['default_statistics_target']) @pg_tmp def testSettings(self): @@ -1665,15 +1665,15 @@ def testSettings(self): d = dict(db.settings.items()) k = list(db.settings.keys()) v = list(db.settings.values()) - self.failUnlessEqual(len(k), len(d)) - self.failUnlessEqual(len(k), len(v)) + self.assertEqual(len(k), len(d)) + self.assertEqual(len(k), len(v)) for x in k: - self.failUnless(d[x] in v) + self.assertTrue(d[x] in v) all = list(db.settings.getset(k).items()) all.sort(key=itemgetter(0)) dall = list(d.items()) dall.sort(key=itemgetter(0)) - self.failUnlessEqual(dall, all) + self.assertEqual(dall, all) @pg_tmp def testDo(self): @@ -1683,19 +1683,19 @@ def testDo(self): if 'plpgsql' not in db.sys.languages(): db.execute("CREATE LANGUAGE plpgsql") db.do('plpgsql', "BEGIN CREATE TEMP TABLE do_tmp_table(i int, t text); END",) - self.failUnlessEqual(len(db.prepare("SELECT * FROM do_tmp_table")()), 0) + self.assertEqual(len(db.prepare("SELECT * FROM do_tmp_table")()), 0) db.do('plpgsql', "BEGIN INSERT INTO do_tmp_table VALUES (100, 'foo'); END") - self.failUnlessEqual(len(db.prepare("SELECT * FROM do_tmp_table")()), 1) + self.assertEqual(len(db.prepare("SELECT * FROM do_tmp_table")()), 1) @pg_tmp def testListeningChannels(self): db.listen('foo', 'bar') - self.failUnlessEqual(set(db.listening_channels()), {'foo','bar'}) + self.assertEqual(set(db.listening_channels()), {'foo','bar'}) db.unlisten('bar') db.listen('foo', 'bar') - self.failUnlessEqual(set(db.listening_channels()), {'foo','bar'}) + self.assertEqual(set(db.listening_channels()), {'foo','bar'}) db.unlisten('foo', 'bar') - self.failUnlessEqual(set(db.listening_channels()), set()) + self.assertEqual(set(db.listening_channels()), set()) @pg_tmp def testNotify(self): @@ -1703,35 +1703,35 @@ def testNotify(self): db.listen('foo', 'bar') db.notify('foo') db.execute('') - self.failUnlessEqual(db._notifies[0].channel, b'foo') - self.failUnlessEqual(db._notifies[0].pid, db.backend_id) - self.failUnlessEqual(db._notifies[0].payload, b'') + self.assertEqual(db._notifies[0].channel, b'foo') + self.assertEqual(db._notifies[0].pid, db.backend_id) + self.assertEqual(db._notifies[0].payload, b'') del db._notifies[0] db.notify('bar') db.execute('') - self.failUnlessEqual(db._notifies[0].channel, b'bar') - self.failUnlessEqual(db._notifies[0].pid, db.backend_id) - self.failUnlessEqual(db._notifies[0].payload, b'') + self.assertEqual(db._notifies[0].channel, b'bar') + self.assertEqual(db._notifies[0].pid, db.backend_id) + self.assertEqual(db._notifies[0].payload, b'') del db._notifies[0] db.unlisten('foo') db.notify('foo') db.execute('') - self.failUnlessEqual(db._notifies, []) + self.assertEqual(db._notifies, []) # Invoke an error to show that listen() is all or none. - self.failUnlessRaises(Exception, db.listen, 'doesntexist', 'x'*64) - self.failUnless('doesntexist' not in db.listening_channels()) + self.assertRaises(Exception, db.listen, 'doesntexist', 'x'*64) + self.assertTrue('doesntexist' not in db.listening_channels()) @pg_tmp def testPayloads(self): if db.version_info[:2] >= (9,0): db.listen('foo') db.notify(foo = 'bar') - self.failUnlessEqual(('foo', 'bar', db.backend_id), list(db.iternotifies(0))[0]) + self.assertEqual(('foo', 'bar', db.backend_id), list(db.iternotifies(0))[0]) db.notify(('foo', 'barred')) - self.failUnlessEqual(('foo', 'barred', db.backend_id), list(db.iternotifies(0))[0]) + self.assertEqual(('foo', 'barred', db.backend_id), list(db.iternotifies(0))[0]) # mixed db.notify(('foo', 'barred'), 'foo', ('foo', 'bleh'), foo = 'kw') - self.failUnlessEqual([ + self.assertEqual([ ('foo', 'barred', db.backend_id), ('foo', '', db.backend_id), ('foo', 'bleh', db.backend_id), @@ -1747,7 +1747,7 @@ def testPayloads(self): rexpect = list(reversed(expect)) db.listen('bar') db.notify(foo = 'meh', bar = 'foo') - self.failUnless(list(db.iternotifies(0)) in [expect, rexpect]) + self.assertTrue(list(db.iternotifies(0)) in [expect, rexpect]) @pg_tmp def testMessageHook(self): @@ -1772,13 +1772,13 @@ def add(x): create() del x.msghook drop() - self.failUnlessEqual(len(notices), len(parts)) + self.assertEqual(len(notices), len(parts)) last = None for x in notices: if last is None: last = x continue - self.failUnless(x.isconsistent(last)) + self.assertTrue(x.isconsistent(last)) last = x @pg_tmp @@ -1787,44 +1787,44 @@ def testRowTypeFactory(self): db.typio.RowTypeFactory = NamedTupleFactory ps = prepare('select 1 as foo, 2 as bar') first_results = ps.first() - self.failUnlessEqual(first_results.foo, 1) - self.failUnlessEqual(first_results.bar, 2) + self.assertEqual(first_results.foo, 1) + self.assertEqual(first_results.bar, 2) call_results = ps()[0] - self.failUnlessEqual(call_results.foo, 1) - self.failUnlessEqual(call_results.bar, 2) + self.assertEqual(call_results.foo, 1) + self.assertEqual(call_results.bar, 2) declare_results = ps.declare().read(1)[0] - self.failUnlessEqual(declare_results.foo, 1) - self.failUnlessEqual(declare_results.bar, 2) + self.assertEqual(declare_results.foo, 1) + self.assertEqual(declare_results.bar, 2) sqlexec('create type rtf AS (foo int, bar int)') ps = prepare('select ROW(1, 2)::rtf') composite_results = ps.first() - self.failUnlessEqual(composite_results.foo, 1) - self.failUnlessEqual(composite_results.bar, 2) + self.assertEqual(composite_results.foo, 1) + self.assertEqual(composite_results.bar, 2) @pg_tmp def testNamedTuples(self): from ..types.namedtuple import namedtuples ps = namedtuples(prepare('select 1 as foo, 2 as bar, $1::text as param')) r = list(ps("hello"))[0] - self.failUnlessEqual(r[0], 1) - self.failUnlessEqual(r.foo, 1) - self.failUnlessEqual(r[1], 2) - self.failUnlessEqual(r.bar, 2) - self.failUnlessEqual(r[2], "hello") - self.failUnlessEqual(r.param, "hello") + self.assertEqual(r[0], 1) + self.assertEqual(r.foo, 1) + self.assertEqual(r[1], 2) + self.assertEqual(r.bar, 2) + self.assertEqual(r[2], "hello") + self.assertEqual(r.param, "hello") @pg_tmp def testBadFD(self): db.pq.socket.close() # bad fd now. - self.failUnlessRaises( + self.assertRaises( pg_exc.ConnectionFailureError, sqlexec, "SELECT 1" ) - self.failUnless(issubclass(pg_exc.ConnectionFailureError, pg_exc.Disconnection)) + self.assertTrue(issubclass(pg_exc.ConnectionFailureError, pg_exc.Disconnection)) @pg_tmp def testAdminTerminated(self): @@ -1833,11 +1833,11 @@ def testAdminTerminated(self): # hoping that this will guarantee that the terminate is complete killer.close() - self.failUnlessRaises( + self.assertRaises( pg_exc.AdminShutdownError, sqlexec, "SELECT 1" ) - self.failUnless(issubclass(pg_exc.AdminShutdownError, pg_exc.Disconnection)) + self.assertTrue(issubclass(pg_exc.AdminShutdownError, pg_exc.Disconnection)) class test_typio(unittest.TestCase): @pg_tmp @@ -1854,8 +1854,8 @@ def testArrayNulls(self): return inta = prepare('select $1::int[]').first texta = prepare('select $1::text[]').first - self.failUnlessEqual(inta([1,2,None]), [1,2,None]) - self.failUnlessEqual(texta(["foo",None,"bar"]), ["foo",None,"bar"]) + self.assertEqual(inta([1,2,None]), [1,2,None]) + self.assertEqual(texta(["foo",None,"bar"]), ["foo",None,"bar"]) if __name__ == '__main__': unittest.main() diff --git a/postgresql/test/test_exceptions.py b/postgresql/test/test_exceptions.py index 280f35fb..7ac56d99 100644 --- a/postgresql/test/test_exceptions.py +++ b/postgresql/test/test_exceptions.py @@ -9,51 +9,48 @@ def test_pg_code_lookup(self): # in 8.4, pg started using the SQL defined error code for limits # Users *will* get whatever code PG sends, but it's important # that they have some way to abstract it. many-to-one map ftw. - self.failUnless( - pg_exc.ErrorLookup('22020') == pg_exc.LimitValueError + self.assertEqual( + pg_exc.ErrorLookup('22020'), pg_exc.LimitValueError ) def test_error_lookup(self): # An error code that doesn't exist yields pg_exc.Error - self.failUnless( - pg_exc.ErrorLookup('00000') == pg_exc.Error + self.assertEqual( + pg_exc.ErrorLookup('00000'), pg_exc.Error ) - self.failUnless( - pg_exc.ErrorLookup('XX000') == pg_exc.InternalError + self.assertEqual( + pg_exc.ErrorLookup('XX000'), pg_exc.InternalError ) # check class fallback - self.failUnless( - pg_exc.ErrorLookup('XX444') == pg_exc.InternalError + self.assertEqual( + pg_exc.ErrorLookup('XX444'), pg_exc.InternalError ) # SEARV is a very large class, so there are many # sub-"codeclass" exceptions used to group the many # SEARV errors. Make sure looking up 42000 actually # gives the SEARVError - self.failUnless( - pg_exc.ErrorLookup('42000') == pg_exc.SEARVError + self.assertEqual( + pg_exc.ErrorLookup('42000'), pg_exc.SEARVError ) - self.failUnless( - pg_exc.ErrorLookup('08P01') == pg_exc.ProtocolError + self.assertEqual( + pg_exc.ErrorLookup('08P01'), pg_exc.ProtocolError ) def test_warning_lookup(self): - self.failUnless( - pg_exc.WarningLookup('01000') == pg_exc.Warning + self.assertEqual( + pg_exc.WarningLookup('01000'), pg_exc.Warning ) - self.failUnless( - pg_exc.WarningLookup('02000') == pg_exc.NoDataWarning + self.assertEqual( + pg_exc.WarningLookup('02000'), pg_exc.NoDataWarning ) - self.failUnless( - pg_exc.WarningLookup('01P01') == pg_exc.DeprecationWarning + self.assertEqual( + pg_exc.WarningLookup('01P01'), pg_exc.DeprecationWarning ) - self.failUnless( - pg_exc.WarningLookup('01888') == pg_exc.Warning + self.assertEqual( + pg_exc.WarningLookup('01888'), pg_exc.Warning ) if __name__ == '__main__': - from types import ModuleType - this = ModuleType("this") - this.__dict__.update(globals()) - unittest.main(this) + unittest.main() diff --git a/postgresql/test/test_installation.py b/postgresql/test/test_installation.py index 61284499..ff92072a 100644 --- a/postgresql/test/test_installation.py +++ b/postgresql/test/test_installation.py @@ -14,38 +14,38 @@ class test_installation(unittest.TestCase): """ def test_parse_configure_options(self): # Check expectations. - self.failUnlessEqual( + self.assertEqual( list(ins.parse_configure_options("")), [], ) - self.failUnlessEqual( + self.assertEqual( list(ins.parse_configure_options(" ")), [], ) - self.failUnlessEqual( + self.assertEqual( list(ins.parse_configure_options("--foo --bar")), [('foo',True),('bar',True)] ) - self.failUnlessEqual( + self.assertEqual( list(ins.parse_configure_options("'--foo' '--bar'")), [('foo',True),('bar',True)] ) - self.failUnlessEqual( + self.assertEqual( list(ins.parse_configure_options("'--foo=A properly isolated string' '--bar'")), [('foo','A properly isolated string'),('bar',True)] ) # hope they don't ever use backslash escapes. # This is pretty dirty, but it doesn't seem well defined anyways. - self.failUnlessEqual( + self.assertEqual( list(ins.parse_configure_options("'--foo=A ''properly'' isolated string' '--bar'")), [('foo',"A 'properly' isolated string"),('bar',True)] ) # handle some simple variations, but it's - self.failUnlessEqual( + self.assertEqual( list(ins.parse_configure_options("'--foo' \"--bar\"")), [('foo',True),('bar',True)] ) # Show the failure. try: - self.failUnlessEqual( + self.assertEqual( list(ins.parse_configure_options("'--foo' \"--bar=/A dir/file\"")), [('foo',True),('bar','/A dir/file')] ) @@ -58,23 +58,23 @@ def test_minimum(self): 'version info' # Installation only "needs" the version information i = ins.Installation({'version' : 'PostgreSQL 2.2.3'}) - self.failUnlessEqual( + self.assertEqual( i.version, 'PostgreSQL 2.2.3' ) - self.failUnlessEqual( + self.assertEqual( i.version_info, (2,2,3,'final',0) ) - self.failUnlessEqual(i.postgres, None) - self.failUnlessEqual(i.postmaster, None) + self.assertEqual(i.postgres, None) + self.assertEqual(i.postmaster, None) def test_exec(self): # check the executable i = ins.pg_config_dictionary( sys.executable, '-m', __package__ + '.support', 'pg_config') # automatically lowers the key - self.failUnlessEqual(i['foo'], 'BaR') - self.failUnlessEqual(i['feh'], 'YEAH') - self.failUnlessEqual(i['version'], 'NAY') + self.assertEqual(i['foo'], 'BaR') + self.assertEqual(i['feh'], 'YEAH') + self.assertEqual(i['version'], 'NAY') if __name__ == '__main__': from types import ModuleType diff --git a/postgresql/test/test_iri.py b/postgresql/test/test_iri.py index 1029a1a6..7792438c 100644 --- a/postgresql/test/test_iri.py +++ b/postgresql/test/test_iri.py @@ -90,7 +90,7 @@ def testPresentPasswordObscure(self): o = 'pq://user:***@host:port/dbname' p = pg_iri.parse(s) ps = pg_iri.serialize(p, obscure_password = True) - self.failUnlessEqual(ps, o) + self.assertEqual(ps, o) def testPresentPasswordObscure(self): "password is *not* present in IRI, and do nothing" @@ -98,11 +98,11 @@ def testPresentPasswordObscure(self): o = 'pq://user@host:port/dbname' p = pg_iri.parse(s) ps = pg_iri.serialize(p, obscure_password = True) - self.failUnlessEqual(ps, o) + self.assertEqual(ps, o) def testValueErrors(self): for x in value_errors: - self.failUnlessRaises(ValueError, + self.assertRaises(ValueError, pg_iri.parse, x ) @@ -112,14 +112,14 @@ def testParseSerialize(self): px = pg_iri.parse(x) spx = pg_iri.serialize(px) pspx = pg_iri.parse(spx) - self.failUnless( + self.assertTrue( pspx == px, "parse-serialize incongruity, %r -> %r -> %r : %r != %r" %( x, px, spx, pspx, px ) ) spspx = pg_iri.serialize(pspx) - self.failUnless( + self.assertTrue( spx == spspx, "parse-serialize incongruity, %r -> %r -> %r -> %r : %r != %r" %( x, px, spx, pspx, spspx, spx @@ -130,7 +130,7 @@ def testSerializeParse(self): for x in sample_structured_parameters: xs = pg_iri.serialize(x) uxs = pg_iri.parse(xs) - self.failUnless( + self.assertTrue( x == uxs, "serialize-parse incongruity, %r -> %r -> %r" %( x, xs, uxs, @@ -138,7 +138,4 @@ def testSerializeParse(self): ) if __name__ == '__main__': - from types import ModuleType - this = ModuleType("this") - this.__dict__.update(globals()) - unittest.main(this) + unittest.main() diff --git a/postgresql/test/test_lib.py b/postgresql/test/test_lib.py index ea9d8a73..67e5f6a2 100644 --- a/postgresql/test/test_lib.py +++ b/postgresql/test/test_lib.py @@ -74,37 +74,37 @@ class test_lib(unittest.TestCase): # in postgresql.test.test_driver; much functionality # depends on the `sys` library. def _testILF(self, lib): - self.failUnless('preface' in lib.preface) + self.assertTrue('preface' in lib.preface) db.execute("CREATE OR REPLACE FUNCTION test_ilf_proc(int) RETURNS int language sql as 'select $1';") db.execute("CREATE OR REPLACE FUNCTION test_ilf_srf_proc(int) RETURNS SETOF int language sql as 'select $1';") b = pg_lib.Binding(db, lib) - self.failUnlessEqual(b.sym_ref(), [(1,)]) - self.failUnlessEqual(b.sym_ref_trail(), []) - self.failUnlessEqual(b.sym(), [(1,)]) - self.failUnlessEqual(b.sym_first(), 1) - self.failUnlessEqual(list(b.sym_rows()), [(1,)]) - self.failUnlessEqual([list(x) for x in b.sym_chunks()], [[(1,)]]) + self.assertEqual(b.sym_ref(), [(1,)]) + self.assertEqual(b.sym_ref_trail(), []) + self.assertEqual(b.sym(), [(1,)]) + self.assertEqual(b.sym_first(), 1) + self.assertEqual(list(b.sym_rows()), [(1,)]) + self.assertEqual([list(x) for x in b.sym_chunks()], [[(1,)]]) c = b.sym_declare() - self.failUnlessEqual(c.read(), [(1,)]) + self.assertEqual(c.read(), [(1,)]) c.seek(0) - self.failUnlessEqual(c.read(), [(1,)]) - self.failUnlessEqual(b.sym_const, 1) - self.failUnlessEqual(b.sym_const_column, [1]) - self.failUnlessEqual(b.sym_const_rows, [(1,)]) - self.failUnlessEqual(b.sym_const_chunks, [[(1,)]]) - self.failUnlessEqual(b.sym_const_ddl, ('CREATE TABLE', None)) - self.failUnlessEqual(b.sym_preload(), 1) + self.assertEqual(c.read(), [(1,)]) + self.assertEqual(b.sym_const, 1) + self.assertEqual(b.sym_const_column, [1]) + self.assertEqual(b.sym_const_rows, [(1,)]) + self.assertEqual(b.sym_const_chunks, [[(1,)]]) + self.assertEqual(b.sym_const_ddl, ('CREATE TABLE', None)) + self.assertEqual(b.sym_preload(), 1) # now stored procs - self.failUnlessEqual(b.sym_proc(2,), 2) - self.failUnlessEqual(list(b.sym_srf_proc(2,)), [2]) - self.failUnlessRaises(AttributeError, getattr, b, 'LIES') + self.assertEqual(b.sym_proc(2,), 2) + self.assertEqual(list(b.sym_srf_proc(2,)), [2]) + self.assertRaises(AttributeError, getattr, b, 'LIES') # reference symbols - self.failUnlessEqual(b.sym_reference()(), [(1,)]) - self.failUnlessEqual(b.sym_reference_params('1::int')(), [(1,)]) - self.failUnlessEqual(b.sym_reference_params("'foo'::text")(), [('foo',)]) - self.failUnlessEqual(b.sym_reference_first()(), 1) - self.failUnlessEqual(b.sym_reference_const(), 1) - self.failUnlessEqual(b.sym_reference_proc()(2,), 2) + self.assertEqual(b.sym_reference()(), [(1,)]) + self.assertEqual(b.sym_reference_params('1::int')(), [(1,)]) + self.assertEqual(b.sym_reference_params("'foo'::text")(), [('foo',)]) + self.assertEqual(b.sym_reference_first()(), 1) + self.assertEqual(b.sym_reference_const(), 1) + self.assertEqual(b.sym_reference_proc()(2,), 2) @pg_tmp def testILF_from_lines(self): @@ -140,7 +140,7 @@ def testLoad(self): pg_sys.libpath.insert(0, os.path.curdir) l = pg_lib.load(frag) b = pg_lib.Binding(db, l) - self.failUnlessEqual(b.foo(), [(1,)]) + self.assertEqual(b.foo(), [(1,)]) finally: os.remove(fn) @@ -151,10 +151,10 @@ def testCategory(self): lib._name = 'name' c = pg_lib.Category(lib) c(db) - self.failUnlessEqual(db.name.sym_first(), 1) + self.assertEqual(db.name.sym_first(), 1) c = pg_lib.Category(renamed = lib) c(db) - self.failUnlessEqual(db.renamed.sym_first(), 1) + self.assertEqual(db.renamed.sym_first(), 1) @pg_tmp def testCategoryAliases(self): @@ -163,8 +163,8 @@ def testCategoryAliases(self): lib._name = 'name' c = pg_lib.Category(lib, renamed = lib) c(db) - self.failUnlessEqual(db.name.sym_first(), 1) - self.failUnlessEqual(db.renamed.sym_first(), 1) + self.assertEqual(db.name.sym_first(), 1) + self.assertEqual(db.renamed.sym_first(), 1) if __name__ == '__main__': unittest.main() diff --git a/postgresql/test/test_notifyman.py b/postgresql/test/test_notifyman.py index 69fd6d9e..67b94c86 100644 --- a/postgresql/test/test_notifyman.py +++ b/postgresql/test/test_notifyman.py @@ -23,14 +23,14 @@ def testNotificationManager(self): for ndb, notifies in nm: for n in notifies: if ndb is db: - self.failUnlessEqual(n[0], 'foo') - self.failUnlessEqual(n[1], '') - self.failUnlessEqual(n[2], alt.backend_id) + self.assertEqual(n[0], 'foo') + self.assertEqual(n[1], '') + self.assertEqual(n[2], alt.backend_id) nm.connections.discard(db) elif ndb is alt: - self.failUnlessEqual(n[0], 'bar') - self.failUnlessEqual(n[1], '') - self.failUnlessEqual(n[2], db.backend_id) + self.assertEqual(n[0], 'bar') + self.assertEqual(n[1], '') + self.assertEqual(n[2], db.backend_id) nm.connections.discard(alt) else: self.fail("unknown connection received notify..") @@ -46,11 +46,11 @@ def testNotificationManagerTimeout(self): db.notify('foo') continue ndb, notifies = event - self.failUnlessEqual(ndb, db) + self.assertEqual(ndb, db) for n in notifies: - self.failUnlessEqual(n[0], 'foo') - self.failUnlessEqual(n[1], '') - self.failUnlessEqual(n[2], db.backend_id) + self.assertEqual(n[0], 'foo') + self.assertEqual(n[1], '') + self.assertEqual(n[2], db.backend_id) count = count + 1 if count > 3: break @@ -62,10 +62,10 @@ def testNotificationManagerZeroTimeout(self): # It checks the wire, but does *not* wait for data. nm = NotificationManager(db, timeout = 0) db.listen('foo') - self.failUnlessEqual(list(nm), []) + self.assertEqual(list(nm), []) db.notify('foo') time.sleep(0.01) - self.failUnlessEqual(list(nm), [('foo','',db.backend_id)]) # bit of a race + self.assertEqual(list(nm), [('foo','',db.backend_id)]) # bit of a race @pg_tmp def test_iternotifies(self): @@ -86,9 +86,9 @@ def get_notices(db, l): while not rl: time.sleep(0.05) channel, payload, pid = rl.pop(0) - self.failUnlessEqual(channel, 'foo') - self.failUnlessEqual(payload, '') - self.failUnlessEqual(pid, db.backend_id) + self.assertEqual(channel, 'foo') + self.assertEqual(payload, '') + self.assertEqual(pid, db.backend_id) db.notify('close') @pg_tmp @@ -97,10 +97,10 @@ def testNotificationManagerZeroTimeout(self): # there are no notifications to emit. # It checks the wire, but does *not* wait for data. db.listen('foo') - self.failUnlessEqual(list(db.iternotifies(0)), []) + self.assertEqual(list(db.iternotifies(0)), []) db.notify('foo') time.sleep(0.01) - self.failUnlessEqual(list(db.iternotifies(0)), [('foo','', db.backend_id)]) # bit of a race + self.assertEqual(list(db.iternotifies(0)), [('foo','', db.backend_id)]) # bit of a race @pg_tmp def testNotificationManagerOnClosed(self): @@ -111,7 +111,7 @@ def testNotificationManagerOnClosed(self): db.notify('foo') for n in db.iternotifies(): db.close() - self.failUnlessEqual(db.closed, True) + self.assertEqual(db.closed, True) del db # closer, after an idle db = new() @@ -130,8 +130,8 @@ def testNotificationManagerOnClosed(self): # hit should get set two times. # once on the first idle, and once on the event # received after the close. - self.failUnlessEqual(db.closed, True) - self.failUnlessEqual(hit, True) + self.assertEqual(db.closed, True) + self.assertEqual(hit, True) if __name__ == '__main__': unittest.main() diff --git a/postgresql/test/test_pgpassfile.py b/postgresql/test/test_pgpassfile.py index 324ce9e9..577c9810 100644 --- a/postgresql/test/test_pgpassfile.py +++ b/postgresql/test/test_pgpassfile.py @@ -52,7 +52,7 @@ def runTest(self): for k, pw in passfile_sample_map.items(): lpw = client_pgpass.lookup_password(sample1, k) - self.failUnless(lpw == pw, + self.assertEqual(lpw, pw, "password lookup incongruity, expecting %r got %r with %r" " in \n%s" %( pw, lpw, k, passfile_sample @@ -61,7 +61,7 @@ def runTest(self): for k, pw in difficult_passfile_sample_map.items(): lpw = client_pgpass.lookup_password(sample2, k) - self.failUnless(lpw == pw, + self.assertEqual(lpw, pw, "password lookup incongruity, expecting %r got %r with %r" " in \n%s" %( pw, lpw, k, difficult_passfile_sample @@ -69,7 +69,4 @@ def runTest(self): ) if __name__ == '__main__': - from types import ModuleType - this = ModuleType("this") - this.__dict__.update(globals()) - unittest.main(this) + unittest.main() diff --git a/postgresql/test/test_protocol.py b/postgresql/test/test_protocol.py index 8ff8fb9d..bd92513f 100644 --- a/postgresql/test/test_protocol.py +++ b/postgresql/test/test_protocol.py @@ -24,51 +24,51 @@ def pairs(*msgseq): packl = long.pack unpackl = long.unpack -class test_buffer(object): +class test_buffer(unittest.TestCase): def setUp(self): self.buffer = pq_buf.pq_message_stream() def testMultiByteMessage(self): b = self.buffer b.write(b's') - self.failUnless(b.next_message() is None) + self.assertTrue(b.next_message() is None) b.write(b'\x00\x00') - self.failUnless(b.next_message() is None) + self.assertTrue(b.next_message() is None) b.write(b'\x00\x10') - self.failUnless(b.next_message() is None) + self.assertTrue(b.next_message() is None) data = b'twelve_chars' b.write(data) - self.failUnless(b.next_message() == (b's', data)) + self.assertEqual(b.next_message(), (b's', data)) def testSingleByteMessage(self): b = self.buffer b.write(b's') - self.failUnless(b.next_message() is None) + self.assertTrue(b.next_message() is None) b.write(b'\x00') - self.failUnless(b.next_message() is None) + self.assertTrue(b.next_message() is None) b.write(b'\x00\x00\x05') - self.failUnless(b.next_message() is None) + self.assertTrue(b.next_message() is None) b.write(b'b') - self.failUnless(b.next_message() == (b's', b'b')) + self.assertEqual(b.next_message(), (b's', b'b')) def testEmptyMessage(self): b = self.buffer b.write(b'x') - self.failUnless(b.next_message() is None) + self.assertTrue(b.next_message() is None) b.write(b'\x00\x00\x00') - self.failUnless(b.next_message() is None) + self.assertTrue(b.next_message() is None) b.write(b'\x04') - self.failUnless(b.next_message() == (b'x', b'')) + self.assertEqual(b.next_message(), (b'x', b'')) def testInvalidLength(self): b = self.buffer b.write(b'y\x00\x00\x00\x03') - self.failUnlessRaises(ValueError, b.next_message,) + self.assertRaises(ValueError, b.next_message,) def testRemainder(self): b = self.buffer b.write(b'r\x00\x00\x00\x05Aremainder') - self.failUnless(b.next_message() == (b'r', b'A')) + self.assertEqual(b.next_message(), (b'r', b'A')) def testLarge(self): b = self.buffer @@ -80,51 +80,53 @@ def testLarge(self): b.write(segment) b.write(segment) msg = b.next_message() - self.failUnless(msg is not None) - self.failUnlessEqual(msg[0], b'X') + self.assertTrue(msg is not None) + self.assertEqual(msg[0], b'X') def test_getvalue(self): # Make sure that getvalue() only applies to messages # that have not been read. b = self.buffer # It should be empty. - self.failUnlessEqual(b.getvalue(), b'') - d = b'F' + packl(27) + self.assertEqual(b.getvalue(), b'') + d = b'F' + packl(28) b.write(d) - self.failUnlessEqual(b.getvalue(), d) - b.write(b'01'*12) - self.failUnlessEqual(b.getvalue(), d + (b'01' * 12)) - b.write(nd) + self.assertEqual(b.getvalue(), d) + d1 = b'01'*12 # 24 + b.write(d1) + self.assertEqual(b.getvalue(), d + d1) + out = b.read()[0] + self.assertEqual(out, (b'F', d1)) nd = b'N' - out = b.read() - self.failUnlessEqual(b.getvalue(), b'N') + b.write(nd) + self.assertEqual(b.getvalue(), nd) b.write(packl(4)) - self.failUnlessEqual(b.read(), [(b'N', b'')]) - self.failUnlessEqual(b.getvalue(), b'') + self.assertEqual(b.read(), [(b'N', b'')]) + self.assertEqual(b.getvalue(), b'') # partial; read one message to exercise # that the appropriate fragment of the first # chunk in the buffer is picked up. first_body = (b'1234' * 3) - first = b'v' + packl(len(first_body) + 4) + first = b'v' + packl(len(first_body) + 4) + first_body second_body = (b'4321' * 5) - second = b'z' + packl(len(second_body) + 4) + second = b'z' + packl(len(second_body) + 4) + second_body b.write(first + second) - self.failUnlessEqual(b.getvalue(), first + second) - self.failUnlessEqual(b.read(1), [(b'v', first_body)]) - self.failUnlessEqual(b.getvalue(), second) - self.failUnlessEqual(b.read(1), [(b'z', second_body)]) + self.assertEqual(b.getvalue(), first + second) + self.assertEqual(b.read(1), [(b'v', first_body)]) + self.assertEqual(b.getvalue(), second) + self.assertEqual(b.read(1), [(b'z', second_body)]) # now, with a third full message in the next chunk third_body = (b'9876' * 10) - third = b'3' + packl(len(third_body) + 4) + third = b'3' + packl(len(third_body) + 4) + third_body b.write(first + second) b.write(third) - self.failUnlessEqual(b.getvalue(), first + second + third) - self.failUnlessEqual(b.read(1), [(b'v', first_body)]) - self.failUnlessEqual(b.getvalue(), second + third) - self.failUnlessEqual(b.read(1), [(b'z', second_body)]) - self.failUnlessEqual(b.getvalue(), third) - self.failUnlessEqual(b.read(1), [(b'3', third_body)]) - self.failUnlessEqual(b.getvalue(), b'') + self.assertEqual(b.getvalue(), first + second + third) + self.assertEqual(b.read(1), [(b'v', first_body)]) + self.assertEqual(b.getvalue(), second + third) + self.assertEqual(b.read(1), [(b'z', second_body)]) + self.assertEqual(b.getvalue(), third) + self.assertEqual(b.read(1), [(b'3', third_body)]) + self.assertEqual(b.getvalue(), b'') ## # element3 tests @@ -230,31 +232,31 @@ def test_cat_messages(self): # The optimized implementation will identify adjacent copy data, and # take a more efficient route; so rigorously test the switch between the # two modes. - self.failUnlessEqual(e3.cat_messages([]), b'') - self.failUnlessEqual(e3.cat_messages([b'foo']), b'd\x00\x00\x00\x07foo') - self.failUnlessEqual(e3.cat_messages([b'foo', b'foo']), 2*b'd\x00\x00\x00\x07foo') + self.assertEqual(e3.cat_messages([]), b'') + self.assertEqual(e3.cat_messages([b'foo']), b'd\x00\x00\x00\x07foo') + self.assertEqual(e3.cat_messages([b'foo', b'foo']), 2*b'd\x00\x00\x00\x07foo') # copy, other, copy - self.failUnlessEqual(e3.cat_messages([b'foo', e3.SynchronizeMessage, b'foo']), + self.assertEqual(e3.cat_messages([b'foo', e3.SynchronizeMessage, b'foo']), b'd\x00\x00\x00\x07foo' + e3.SynchronizeMessage.bytes() + b'd\x00\x00\x00\x07foo') # copy, other, copy*1000 - self.failUnlessEqual(e3.cat_messages(1000*[b'foo', e3.SynchronizeMessage, b'foo']), + self.assertEqual(e3.cat_messages(1000*[b'foo', e3.SynchronizeMessage, b'foo']), 1000*(b'd\x00\x00\x00\x07foo' + e3.SynchronizeMessage.bytes() + b'd\x00\x00\x00\x07foo')) # other, copy, copy*1000 - self.failUnlessEqual(e3.cat_messages(1000*[e3.SynchronizeMessage, b'foo', b'foo']), + self.assertEqual(e3.cat_messages(1000*[e3.SynchronizeMessage, b'foo', b'foo']), 1000*(e3.SynchronizeMessage.bytes() + 2*b'd\x00\x00\x00\x07foo')) pack_head = struct.Struct("!lH").pack # tuple - self.failUnlessEqual(e3.cat_messages([(b'foo',),]), + self.assertEqual(e3.cat_messages([(b'foo',),]), b'D' + pack_head(7 + 4 + 2, 1) + b'\x00\x00\x00\x03foo') # tuple(foo,\N) - self.failUnlessEqual(e3.cat_messages([(b'foo',None,),]), + self.assertEqual(e3.cat_messages([(b'foo',None,),]), b'D' + pack_head(7 + 4 + 4 + 2, 2) + b'\x00\x00\x00\x03foo\xFF\xFF\xFF\xFF') # tuple(foo,\N,bar) - self.failUnlessEqual(e3.cat_messages([(b'foo',None,b'bar'),]), + self.assertEqual(e3.cat_messages([(b'foo',None,b'bar'),]), b'D' + pack_head(7 + 7 + 4 + 4 + 2, 3) + \ b'\x00\x00\x00\x03foo\xFF\xFF\xFF\xFF\x00\x00\x00\x03bar') # too many attributes - self.failUnlessRaises((OverflowError, struct.error), + self.assertRaises((OverflowError, struct.error), e3.cat_messages, [(None,) * 0x10000]) class ThisEx(Exception): @@ -264,55 +266,55 @@ class ThatEx(Exception): class Bad(e3.Message): def serialize(self): raise ThisEx('foo') - self.failUnlessRaises(ThisEx, e3.cat_messages, [Bad()]) + self.assertRaises(ThisEx, e3.cat_messages, [Bad()]) class NoType(e3.Message): def serialize(self): return b'' - self.failUnlessRaises(AttributeError, e3.cat_messages, [NoType()]) + self.assertRaises(AttributeError, e3.cat_messages, [NoType()]) class BadType(e3.Message): type = 123 def serialize(self): return b'' - self.failUnlessRaises((TypeError,struct.error), e3.cat_messages, [BadType()]) + self.assertRaises((TypeError,struct.error), e3.cat_messages, [BadType()]) def testSerializeParseConsistency(self): for msg in message_samples: smsg = msg.serialize() - self.failUnlessEqual(msg, msg.parse(smsg)) + self.assertEqual(msg, msg.parse(smsg)) def testEmptyMessages(self): for x in e3.__dict__.values(): if isinstance(x, e3.EmptyMessage): xtype = type(x) - self.failUnless(x is xtype()) + self.assertTrue(x is xtype()) def testUnknownNoticeFields(self): N = e3.Notice.parse(b'\x00\x00Z\x00Xklsvdnvldsvkndvlsn\x00Pfoobar\x00Mmessage\x00') E = e3.Error.parse(b'Z\x00Xklsvdnvldsvkndvlsn\x00Pfoobar\x00Mmessage\x00\x00') - self.failUnlessEqual(N[b'M'], b'message') - self.failUnlessEqual(E[b'M'], b'message') - self.failUnlessEqual(N[b'P'], b'foobar') - self.failUnlessEqual(E[b'P'], b'foobar') - self.failUnlessEqual(len(N), 4) - self.failUnlessEqual(len(E), 4) + self.assertEqual(N[b'M'], b'message') + self.assertEqual(E[b'M'], b'message') + self.assertEqual(N[b'P'], b'foobar') + self.assertEqual(E[b'P'], b'foobar') + self.assertEqual(len(N), 4) + self.assertEqual(len(E), 4) def testCompleteExtracts(self): x = e3.Complete(b'FOO BAR 1321') - self.failUnlessEqual(x.extract_command(), b'FOO BAR') - self.failUnlessEqual(x.extract_count(), 1321) + self.assertEqual(x.extract_command(), b'FOO BAR') + self.assertEqual(x.extract_count(), 1321) x = e3.Complete(b' CREATE TABLE 13210 ') - self.failUnlessEqual(x.extract_command(), b'CREATE TABLE') - self.failUnlessEqual(x.extract_count(), 13210) + self.assertEqual(x.extract_command(), b'CREATE TABLE') + self.assertEqual(x.extract_count(), 13210) x = e3.Complete(b' CREATE TABLE \t713210 ') - self.failUnlessEqual(x.extract_command(), b'CREATE TABLE') - self.failUnlessEqual(x.extract_count(), 713210) + self.assertEqual(x.extract_command(), b'CREATE TABLE') + self.assertEqual(x.extract_count(), 713210) x = e3.Complete(b' CREATE TABLE 0 \t13210 ') - self.failUnlessEqual(x.extract_command(), b'CREATE TABLE') - self.failUnlessEqual(x.extract_count(), 13210) + self.assertEqual(x.extract_command(), b'CREATE TABLE') + self.assertEqual(x.extract_count(), 13210) x = e3.Complete(b' 0 \t13210 ') - self.failUnlessEqual(x.extract_command(), None) - self.failUnlessEqual(x.extract_count(), 13210) + self.assertEqual(x.extract_command(), None) + self.assertEqual(x.extract_count(), 13210) ## # .protocol.xact3 tests @@ -452,24 +454,24 @@ def testTransactionSamplesAll(self): x = x3.Instruction(xcmd) r = tuple([(y.type, y.serialize()) for y in xres]) x.state[1]() - self.failUnlessEqual(x.messages, ()) + self.assertEqual(x.messages, ()) x.state[1](r) - self.failUnlessEqual(x.state, x3.Complete) + self.assertEqual(x.state, x3.Complete) rec = [] for y in x.completed: for z in y[1]: if type(z) is type(b''): z = e3.CopyData(z) rec.append(z) - self.failUnlessEqual(xres, tuple(rec)) + self.assertEqual(xres, tuple(rec)) def testClosing(self): c = x3.Closing() - self.failUnlessEqual(c.messages, (e3.DisconnectMessage,)) + self.assertEqual(c.messages, (e3.DisconnectMessage,)) c.state[1]() - self.failUnlessEqual(c.fatal, True) - self.failUnlessEqual(c.error_message.__class__, e3.ClientError) - self.failUnlessEqual(c.error_message[b'C'], '08003') + self.assertEqual(c.fatal, True) + self.assertEqual(c.error_message.__class__, e3.ClientError) + self.assertEqual(c.error_message[b'C'], '08003') def testNegotiation(self): # simple successful run @@ -484,8 +486,8 @@ def testNegotiation(self): e3.Ready(b'I'), ) ) - self.failUnlessEqual(n.state, x3.Complete) - self.failUnlessEqual(n.last_ready.xact_state, b'I') + self.assertEqual(n.state, x3.Complete) + self.assertEqual(n.last_ready.xact_state, b'I') # no killinfo.. should cause protocol error... n = x3.Negotiation({}, b'') n.state[1]() @@ -497,9 +499,9 @@ def testNegotiation(self): e3.Ready(b'I'), ) ) - self.failUnlessEqual(n.state, x3.Complete) - self.failUnlessEqual(n.last_ready, None) - self.failUnlessEqual(n.error_message[b'C'], '08P01') + self.assertEqual(n.state, x3.Complete) + self.assertEqual(n.last_ready, None) + self.assertEqual(n.error_message[b'C'], '08P01') # killinfo twice.. must cause protocol error... n = x3.Negotiation({}, b'') n.state[1]() @@ -513,9 +515,9 @@ def testNegotiation(self): e3.Ready(b'I'), ) ) - self.failUnlessEqual(n.state, x3.Complete) - self.failUnlessEqual(n.last_ready, None) - self.failUnlessEqual(n.error_message[b'C'], '08P01') + self.assertEqual(n.state, x3.Complete) + self.assertEqual(n.last_ready, None) + self.assertEqual(n.error_message[b'C'], '08P01') # start with ready message.. n = x3.Negotiation({}, b'') n.state[1]() @@ -527,9 +529,9 @@ def testNegotiation(self): e3.ShowOption(b'name', b'val'), ) ) - self.failUnlessEqual(n.state, x3.Complete) - self.failUnlessEqual(n.last_ready, None) - self.failUnlessEqual(n.error_message[b'C'], '08P01') + self.assertEqual(n.state, x3.Complete) + self.assertEqual(n.last_ready, None) + self.assertEqual(n.error_message[b'C'], '08P01') # unsupported authreq n = x3.Negotiation({}, b'') n.state[1]() @@ -538,9 +540,9 @@ def testNegotiation(self): e3.Authentication(255, b''), ) ) - self.failUnlessEqual(n.state, x3.Complete) - self.failUnlessEqual(n.last_ready, None) - self.failUnlessEqual(n.error_message[b'C'], '--AUT') + self.assertEqual(n.state, x3.Complete) + self.assertEqual(n.last_ready, None) + self.assertEqual(n.error_message[b'C'], '--AUT') def testInstructionAsynchook(self): l = [] @@ -563,8 +565,8 @@ def hook(data): x.state[1](a2l) x.state[1]([(a3.type, a3.serialize()),]) # we only care about validating that l got everything. - self.failUnlessEqual([a1,a2,a3], l) - self.failUnlessEqual(x.state[0], x3.Receiving) + self.assertEqual([a1,a2,a3], l) + self.assertEqual(x.state[0], x3.Receiving) # validate that the asynchook exception is trapped. class Nee(Exception): pass @@ -585,53 +587,63 @@ def exchook(typ, val, tb): # we only care about validating that the exchook got called. x.state[1]([(a1.type, a1.serialize())]) sys.excepthook = seh - self.failUnless(isinstance(v, Nee)) + self.assertTrue(isinstance(v, Nee)) class test_client3(unittest.TestCase): def test_timeout(self): portnum = find_available_port() servsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - servsock.bind(('localhost', portnum)) - pc = c3.Connection( - SocketFactory( - (socket.AF_INET, socket.SOCK_STREAM), - ('localhost', portnum) - ), - {} - ) - pc.connect(timeout = 1) - self.failUnlessEqual(pc.xact.fatal, True) - self.failUnlessEqual(type(pc.xact), x3.Negotiation) - servsock.close() + with servsock: + servsock.bind(('localhost', portnum)) + pc = c3.Connection( + SocketFactory( + (socket.AF_INET, socket.SOCK_STREAM), + ('localhost', portnum) + ), + {} + ) + pc.connect(timeout = 1) + try: + self.assertEqual(pc.xact.fatal, True) + self.assertEqual(pc.xact.__class__, x3.Negotiation) + finally: + if pc.socket is not None: + pc.socket.close() def test_SSL_failure(self): portnum = find_available_port() servsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - servsock.bind(('localhost', portnum)) - pc = c3.Connection( - SocketFactory( - (socket.AF_INET, socket.SOCK_STREAM), - ('localhost', portnum) - ), - {} - ) - exc = None - servsock.listen(1) - def client_thread(): - pc.connect(ssl = True) - client = Thread(target = client_thread) - client.start() - c, addr = servsock.accept() - c.send(b'S') - c.sendall(b'0000000000000000000000') - c.recv(1024) - c.close() - servsock.close() - client.join() - self.failUnlessEqual(pc.xact.fatal, True) - self.failUnlessEqual(pc.xact.__class__, x3.Negotiation) - self.failUnlessEqual(pc.xact.error_message.__class__, e3.ClientError) - self.failUnless(hasattr(pc.xact, 'exception')) + with servsock: + servsock.bind(('localhost', portnum)) + pc = c3.Connection( + SocketFactory( + (socket.AF_INET, socket.SOCK_STREAM), + ('localhost', portnum) + ), + {} + ) + exc = None + servsock.listen(1) + def client_thread(): + pc.connect(ssl = True) + client = Thread(target = client_thread) + try: + client.start() + c, addr = servsock.accept() + with c: + c.send(b'S') + c.sendall(b'0000000000000000000000') + c.recv(1024) + c.close() + client.join() + finally: + if pc.socket is not None: + pc.socket.close() + + self.assertEqual(pc.xact.fatal, True) + self.assertEqual(pc.xact.__class__, x3.Negotiation) + self.assertEqual(pc.xact.error_message.__class__, e3.ClientError) + self.assertTrue(hasattr(pc.xact, 'exception')) def test_bad_negotiation(self): portnum = find_available_port() @@ -649,20 +661,31 @@ def test_bad_negotiation(self): def client_thread(): pc.connect() client = Thread(target = client_thread) - client.start() - c, addr = servsock.accept() - c.recv(1024) - c.close() - time.sleep(0.25) - client.join() - servsock.close() - self.failUnlessEqual(pc.xact.fatal, True) - self.failUnlessEqual(pc.xact.__class__, x3.Negotiation) - self.failUnlessEqual(pc.xact.error_message.__class__, e3.ClientError) - self.failUnlessEqual(pc.xact.error_message[b'C'], '08006') + try: + client.start() + c, addr = servsock.accept() + try: + c.recv(1024) + finally: + c.close() + time.sleep(0.25) + client.join() + servsock.close() + self.assertEqual(pc.xact.fatal, True) + self.assertEqual(pc.xact.__class__, x3.Negotiation) + self.assertEqual(pc.xact.error_message.__class__, e3.ClientError) + self.assertEqual(pc.xact.error_message[b'C'], '08006') + finally: + servsock.close() + if pc.socket is not None: + pc.socket.close() if __name__ == '__main__': from types import ModuleType this = ModuleType("this") this.__dict__.update(globals()) - unittest.main(this) + try: + unittest.main(this) + finally: + import gc + gc.collect() diff --git a/postgresql/test/test_python.py b/postgresql/test/test_python.py index d31a97ca..fdd047fa 100644 --- a/postgresql/test/test_python.py +++ b/postgresql/test/test_python.py @@ -38,28 +38,28 @@ class test_element(unittest.TestCase): def test_primary_factor(self): x = Ele() # no factors - self.failUnlessEqual(element.prime_factor(object()), None) - self.failUnlessEqual(element.prime_factor(x), ('ancestor', None)) + self.assertEqual(element.prime_factor(object()), None) + self.assertEqual(element.prime_factor(x), ('ancestor', None)) y = Ele(x) - self.failUnlessEqual(element.prime_factor(y), ('ancestor', x)) + self.assertEqual(element.prime_factor(y), ('ancestor', x)) def test_primary_factors(self): x = Ele() x.ancestor = x - self.failUnlessRaises( + self.assertRaises( element.RecursiveFactor, list, element.prime_factors(x) ) y = Ele(x) x.ancestor = y - self.failUnlessRaises( + self.assertRaises( element.RecursiveFactor, list, element.prime_factors(y) ) - self.failUnlessRaises( + self.assertRaises( element.RecursiveFactor, list, element.prime_factors(x) ) x.ancestor = None z = Ele(y) - self.failUnlessEqual(list(element.prime_factors(z)), [ + self.assertEqual(list(element.prime_factors(z)), [ ('ancestor', y), ('ancestor', x), ('ancestor', None), @@ -92,18 +92,18 @@ def test_format_element(self): z.second = 'unique4' y.label = 'DIFF' data = element.format_element(z) - self.failUnless(x.first in data) - self.failUnless(y.first in data) - self.failUnless(x.second in data) - self.failUnless(z.second in data) - self.failUnless('DIFF' in data) - self.failUnless('alt1-first' in data) - self.failUnless('alt2-first' in data) - self.failUnless('alt1-second' in data) - self.failUnless('alt2-second' in data) - self.failUnless('alt2-ancestor' in data) + self.assertTrue(x.first in data) + self.assertTrue(y.first in data) + self.assertTrue(x.second in data) + self.assertTrue(z.second in data) + self.assertTrue('DIFF' in data) + self.assertTrue('alt1-first' in data) + self.assertTrue('alt2-first' in data) + self.assertTrue('alt1-second' in data) + self.assertTrue('alt2-second' in data) + self.assertTrue('alt2-ancestor' in data) x.ancestor = z - self.failUnlessRaises(element.RecursiveFactor, element.format_element, z) + self.assertRaises(element.RecursiveFactor, element.format_element, z) class test_itertools(unittest.TestCase): def testInterlace(self): @@ -111,7 +111,7 @@ def testInterlace(self): i2 = range(1, 100, 4) i3 = range(2, 100, 4) i4 = range(3, 100, 4) - self.failUnlessEqual( + self.assertEqual( list(itertools.interlace(i1, i2, i3, i4)), list(range(100)) ) @@ -120,23 +120,23 @@ class test_functools(unittest.TestCase): def testComposition(self): compose = functools.Composition simple = compose((int, str)) - self.failUnlessEqual("100", simple("100")) + self.assertEqual("100", simple("100")) timesfour_fourtimes = compose((methodcaller('__mul__', 4),)*4) - self.failUnlessEqual(4*(4*4*4*4), timesfour_fourtimes(4)) + self.assertEqual(4*(4*4*4*4), timesfour_fourtimes(4)) nothing = compose(()) - self.failUnlessEqual(nothing("100"), "100") - self.failUnlessEqual(nothing(100), 100) - self.failUnlessEqual(nothing(None), None) + self.assertEqual(nothing("100"), "100") + self.assertEqual(nothing(100), 100) + self.assertEqual(nothing(None), None) def testRSetAttr(self): class anob(object): pass ob = anob() - self.failUnlessRaises(AttributeError, getattr, ob, 'foo') + self.assertRaises(AttributeError, getattr, ob, 'foo') rob = functools.rsetattr('foo', 'bar', ob) - self.failUnless(rob is ob) - self.failUnless(rob.foo is ob.foo) - self.failUnless(rob.foo == 'bar') + self.assertTrue(rob is ob) + self.assertTrue(rob.foo is ob.foo) + self.assertTrue(rob.foo == 'bar') class test_socket(unittest.TestCase): def testFindAvailable(self): @@ -148,20 +148,22 @@ def testFindAvailable(self): try: s.connect(('localhost', portnum)) except socket.error as err: - self.failUnlessEqual(err.errno, errno.ECONNREFUSED) + self.assertEqual(err.errno, errno.ECONNREFUSED) else: self.fail("got a connection to an available port: " + str(portnum)) + finally: + s.close() class test_contextlib(unittest.TestCase): def testNoCM(self): with NoCM as foo: pass - self.failUnlessEqual(foo, None) - self.failUnlessEqual(NoCM(), NoCM) + self.assertEqual(foo, None) + self.assertEqual(NoCM(), NoCM) # has no state, may be used repeatedly with NoCM as foo: pass - self.failUnlessEqual(foo, None) + self.assertEqual(foo, None) def join_sized_data(*data, packL = struct.Struct("!L").pack, @@ -181,8 +183,8 @@ def testSizedSplit(self): (b'x', None,None,None, b'yz'), ] packed_sample = [join_sized_data(*x) for x in sample] - self.failUnlessRaises(ValueError, split_sized_data(b'\xFF\xFF\xFF\x01foo').__next__) - self.failUnlessEqual(sample, [tuple(split_sized_data(x)) for x in packed_sample]) + self.assertRaises(ValueError, split_sized_data(b'\xFF\xFF\xFF\x01foo').__next__) + self.assertEqual(sample, [tuple(split_sized_data(x)) for x in packed_sample]) if __name__ == '__main__': from types import ModuleType diff --git a/postgresql/test/test_ssl_connect.py b/postgresql/test/test_ssl_connect.py index a851a93c..5fa03c35 100644 --- a/postgresql/test/test_ssl_connect.py +++ b/postgresql/test/test_ssl_connect.py @@ -165,8 +165,8 @@ def test_ssl_mode_require(self): database = 'test', **params ) as c: - self.failUnlessEqual(c.prepare('select 1').first(), 1) - self.failUnlessEqual(c.security, 'ssl') + self.assertEqual(c.prepare('select 1').first(), 1) + self.assertEqual(c.security, 'ssl') def test_ssl_mode_disable(self): host, port = self.cluster.address() @@ -198,8 +198,8 @@ def test_ssl_mode_disable(self): database = 'test', **params ) as c: - self.failUnlessEqual(c.prepare('select 1').first(), 1) - self.failUnlessEqual(c.security, None) + self.assertEqual(c.prepare('select 1').first(), 1) + self.assertEqual(c.security, None) def test_ssl_mode_prefer(self): host, port = self.cluster.address() @@ -212,8 +212,8 @@ def test_ssl_mode_prefer(self): database = 'test', **params ) as c: - self.failUnlessEqual(c.prepare('select 1').first(), 1) - self.failUnlessEqual(c.security, 'ssl') + self.assertEqual(c.prepare('select 1').first(), 1) + self.assertEqual(c.security, 'ssl') with pg_driver.connect( user = 'test', @@ -222,7 +222,7 @@ def test_ssl_mode_prefer(self): database = 'test', **params ) as c: - self.failUnlessEqual(c.security, 'ssl') + self.assertEqual(c.security, 'ssl') with pg_driver.connect( user = 'nossl', @@ -231,8 +231,8 @@ def test_ssl_mode_prefer(self): database = 'test', **params ) as c: - self.failUnlessEqual(c.prepare('select 1').first(), 1) - self.failUnlessEqual(c.security, None) + self.assertEqual(c.prepare('select 1').first(), 1) + self.assertEqual(c.security, None) def test_ssl_mode_allow(self): host, port = self.cluster.address() @@ -247,8 +247,8 @@ def test_ssl_mode_allow(self): port = port, **params ) as c: - self.failUnlessEqual(c.prepare('select 1').first(), 1) - self.failUnlessEqual(c.security, None) + self.assertEqual(c.prepare('select 1').first(), 1) + self.assertEqual(c.security, None) # test user (host) with pg_driver.connect( @@ -258,7 +258,7 @@ def test_ssl_mode_allow(self): database = 'test', **params ) as c: - self.failUnlessEqual(c.security, None) + self.assertEqual(c.security, None) # sslonly user (hostssl) with pg_driver.connect( @@ -268,8 +268,8 @@ def test_ssl_mode_allow(self): database = 'test', **params ) as c: - self.failUnlessEqual(c.prepare('select 1').first(), 1) - self.failUnlessEqual(c.security, 'ssl') + self.assertEqual(c.prepare('select 1').first(), 1) + self.assertEqual(c.security, 'ssl') if __name__ == '__main__': unittest.main() diff --git a/postgresql/test/test_string.py b/postgresql/test/test_string.py index a6368560..9bad50ce 100644 --- a/postgresql/test/test_string.py +++ b/postgresql/test/test_string.py @@ -183,77 +183,77 @@ class test_strings(unittest.TestCase): def test_split(self): for unsplit, split in split_samples: xsplit = list(pg_str.split(unsplit)) - self.failUnlessEqual(xsplit, split) - self.failUnlessEqual(pg_str.unsplit(xsplit), unsplit) + self.assertEqual(xsplit, split) + self.assertEqual(pg_str.unsplit(xsplit), unsplit) def test_split_sql(self): for unsplit, split in split_sql_samples: xsplit = list(pg_str.split_sql(unsplit)) - self.failUnlessEqual(xsplit, split) - self.failUnlessEqual(';'.join([pg_str.unsplit(x) for x in xsplit]), unsplit) + self.assertEqual(xsplit, split) + self.assertEqual(';'.join([pg_str.unsplit(x) for x in xsplit]), unsplit) def test_qname(self): "indirectly tests split_using" for unsplit, split, norm in split_qname_samples: xsplit = pg_str.split_qname(unsplit) - self.failUnlessEqual(xsplit, split) - self.failUnlessEqual(pg_str.qname(*split), norm) + self.assertEqual(xsplit, split) + self.assertEqual(pg_str.qname(*split), norm) - self.failUnlessRaises( + self.assertRaises( ValueError, pg_str.split_qname, '"foo' ) - self.failUnlessRaises( + self.assertRaises( ValueError, pg_str.split_qname, 'foo"' ) - self.failUnlessRaises( + self.assertRaises( ValueError, pg_str.split_qname, 'bar.foo"' ) - self.failUnlessRaises( + self.assertRaises( ValueError, pg_str.split_qname, 'bar".foo"' ) def test_quotes(self): - self.failUnlessEqual( + self.assertEqual( pg_str.quote_literal("""foo'bar"""), """'foo''bar'""" ) - self.failUnlessEqual( + self.assertEqual( pg_str.quote_literal("""\\foo'bar\\"""), """'\\foo''bar\\'""" ) - self.failUnlessEqual( + self.assertEqual( pg_str.quote_ident("foo"), "foo" ) - self.failUnlessEqual( + self.assertEqual( pg_str.quote_ident("0foo"), '"0foo"' ) - self.failUnlessEqual( + self.assertEqual( pg_str.quote_ident("foo0"), 'foo0' ) - self.failUnlessEqual( + self.assertEqual( pg_str.quote_ident("_"), '_' ) - self.failUnlessEqual( + self.assertEqual( pg_str.quote_ident("_9"), '_9' ) - self.failUnlessEqual( + self.assertEqual( pg_str.quote_ident('''\\foo'bar\\'''), '''"\\foo'bar\\"''' ) - self.failUnlessEqual( + self.assertEqual( pg_str.escape_ident('"'), '""', ) - self.failUnlessEqual( + self.assertEqual( pg_str.escape_ident('""'), '""""', ) @@ -261,7 +261,7 @@ def test_quotes(self): chr(x) for x in range(10000) if chr(x) != '"' ]) - self.failUnlessEqual( + self.assertEqual( pg_str.escape_ident(chars), chars, ) @@ -269,7 +269,7 @@ def test_quotes(self): chr(x) for x in range(10000) if chr(x) != "'" ]) - self.failUnlessEqual( + self.assertEqual( pg_str.escape_literal(chars), chars, ) @@ -277,7 +277,7 @@ def test_quotes(self): chr(x) for x in range(10000) if chr(x) not in "\\'" ]) - self.failUnlessEqual( + self.assertEqual( pg_str.escape_literal(chars), chars, ) diff --git a/postgresql/test/test_types.py b/postgresql/test/test_types.py index c4d096f4..5399a53f 100644 --- a/postgresql/test/test_types.py +++ b/postgresql/test/test_types.py @@ -319,7 +319,7 @@ def testExpectIO(self, samples): for (sample_unpacked, sample_packed) in sample: pack_trial = pack(sample_unpacked) - self.failUnless( + self.assertTrue( pack_trial == sample_packed, "%s sample: unpacked sample, %r, did not match " \ "%r when packed, rather, %r" %( @@ -330,7 +330,7 @@ def testExpectIO(self, samples): sample_unpacked = resolve(sample_unpacked) unpack_trial = resolve(unpack(sample_packed)) - self.failUnless( + self.assertTrue( unpack_trial == sample_unpacked, "%s sample: packed sample, %r, did not match " \ "%r when unpacked, rather, %r" %( @@ -343,13 +343,13 @@ class test_io(unittest.TestCase): def test_process_tuple(self, pt = process_tuple): def funpass(procs, tup, col): pass - self.failUnlessEqual(tuple(pt((),(), funpass)), ()) - self.failUnlessEqual(tuple(pt((int,),("100",), funpass)), (100,)) - self.failUnlessEqual(tuple(pt((int,int),("100","200"), funpass)), (100,200)) - self.failUnlessEqual(tuple(pt((int,int),(None,"200"), funpass)), (None,200)) - self.failUnlessEqual(tuple(pt((int,int,int),(None,None,"200"), funpass)), (None,None,200)) + self.assertEqual(tuple(pt((),(), funpass)), ()) + self.assertEqual(tuple(pt((int,),("100",), funpass)), (100,)) + self.assertEqual(tuple(pt((int,int),("100","200"), funpass)), (100,200)) + self.assertEqual(tuple(pt((int,int),(None,"200"), funpass)), (None,200)) + self.assertEqual(tuple(pt((int,int,int),(None,None,"200"), funpass)), (None,None,200)) # The exception handler must raise. - self.failUnlessRaises(RuntimeError, pt, (int,), ("foo",), funpass) + self.assertRaises(RuntimeError, pt, (int,), ("foo",), funpass) class ThisError(Exception): pass @@ -357,11 +357,11 @@ class ThisError(Exception): def funraise(procs, tup, col): data.append((procs, tup, col)) raise ThisError - self.failUnlessRaises(ThisError, pt, (int,), ("foo",), funraise) - self.failUnlessEqual(data[0], ((int,), ("foo",), 0)) + self.assertRaises(ThisError, pt, (int,), ("foo",), funraise) + self.assertEqual(data[0], ((int,), ("foo",), 0)) del data[0] - self.failUnlessRaises(ThisError, pt, (int,int), ("100","bar"), funraise) - self.failUnlessEqual(data[0], ((int,int), ("100","bar"), 1)) + self.assertRaises(ThisError, pt, (int,int), ("100","bar"), funraise) + self.assertEqual(data[0], ((int,int), ("100","bar"), 1)) def testExpectations(self): 'IO tests where the pre-made expected serialized form is compared' @@ -376,7 +376,7 @@ def testConsistency(self): packed = pack(x) unpacked = resolve(unpack(packed)) x = resolve(x) - self.failUnless(x == unpacked, + self.assertTrue(x == unpacked, "inconsistency with %s, %r -> %r -> %r" %( name, x, packed, unpacked ) @@ -387,9 +387,9 @@ def testConsistency(self): def test_hstore(self): # Can't do some tests with the consistency checks # because we are not using ordered dictionaries. - self.failUnlessRaises((ValueError, struct.error), hstore_unpack, b'\x00\x00\x00\x00foo') - self.failUnlessRaises(ValueError, hstore_unpack, b'\x00\x00\x00\x01') - self.failUnlessRaises(ValueError, hstore_unpack, b'\x00\x00\x00\x02\x00\x00\x00\x01G\x00\x00\x00\x01G') + self.assertRaises((ValueError, struct.error), hstore_unpack, b'\x00\x00\x00\x00foo') + self.assertRaises(ValueError, hstore_unpack, b'\x00\x00\x00\x01') + self.assertRaises(ValueError, hstore_unpack, b'\x00\x00\x00\x02\x00\x00\x00\x01G\x00\x00\x00\x01G') sample = [ ([('foo','bar'),('k',None),('zero','heroes')], b'\x00\x00\x00\x03\x00\x00\x00\x03foo' + \ @@ -403,8 +403,8 @@ def test_hstore(self): ] for x in sample: src, serialized = x - self.failUnlessEqual(hstore_pack(src), serialized) - self.failUnlessEqual(hstore_unpack(serialized), dict(src)) + self.assertEqual(hstore_pack(src), serialized) + self.assertEqual(hstore_unpack(serialized), dict(src)) # Make some slices; used by testSlicing slice_samples = [ @@ -423,34 +423,34 @@ def test_hstore(self): class test_Array(unittest.TestCase): def emptyArray(self, a): - self.failUnlessEqual(len(a), 0) - self.failUnlessEqual(list(a.elements()), []) - self.failUnlessEqual(a.dimensions, ()) - self.failUnlessEqual(a.lowerbounds, ()) - self.failUnlessEqual(a.upperbounds, ()) - self.failUnlessRaises(IndexError, a.__getitem__, 0) + self.assertEqual(len(a), 0) + self.assertEqual(list(a.elements()), []) + self.assertEqual(a.dimensions, ()) + self.assertEqual(a.lowerbounds, ()) + self.assertEqual(a.upperbounds, ()) + self.assertRaises(IndexError, a.__getitem__, 0) def testArrayInstantiation(self): a = Array([]) self.emptyArray(a) # exercise default upper/lower a = Array((1,2,3,)) - self.failUnlessEqual((a[0],a[1],a[2]), (1,2,3,)) + self.assertEqual((a[0],a[1],a[2]), (1,2,3,)) # Python interface, Python semantics. - self.failUnlessRaises(IndexError, a.__getitem__, 3) - self.failUnlessEqual(a.dimensions, (3,)) - self.failUnlessEqual(a.lowerbounds, (1,)) - self.failUnlessEqual(a.upperbounds, (3,)) + self.assertRaises(IndexError, a.__getitem__, 3) + self.assertEqual(a.dimensions, (3,)) + self.assertEqual(a.lowerbounds, (1,)) + self.assertEqual(a.upperbounds, (3,)) def testNestedArrayInstantiation(self): a = Array(([1,2],[3,4])) # Python interface, Python semantics. - self.failUnlessRaises(IndexError, a.__getitem__, 3) - self.failUnlessEqual(a.dimensions, (2,2,)) - self.failUnlessEqual(a.lowerbounds, (1,1)) - self.failUnlessEqual(a.upperbounds, (2,2)) - self.failUnlessEqual(list(a.elements()), [1,2,3,4]) - self.failUnlessEqual(list(a), + self.assertRaises(IndexError, a.__getitem__, 3) + self.assertEqual(a.dimensions, (2,2,)) + self.assertEqual(a.lowerbounds, (1,1)) + self.assertEqual(a.upperbounds, (2,2)) + self.assertEqual(list(a.elements()), [1,2,3,4]) + self.assertEqual(list(a), [ Array([1, 2]), Array([3, 4]), @@ -458,28 +458,28 @@ def testNestedArrayInstantiation(self): ) a = Array(([[1],[2]],[[3],[4]])) - self.failUnlessRaises(IndexError, a.__getitem__, 3) - self.failUnlessEqual(a.dimensions, (2,2,1)) - self.failUnlessEqual(a.lowerbounds, (1,1,1)) - self.failUnlessEqual(a.upperbounds, (2,2,1)) - self.failUnlessEqual(list(a), + self.assertRaises(IndexError, a.__getitem__, 3) + self.assertEqual(a.dimensions, (2,2,1)) + self.assertEqual(a.lowerbounds, (1,1,1)) + self.assertEqual(a.upperbounds, (2,2,1)) + self.assertEqual(list(a), [ Array([[1], [2]]), Array([[3], [4]]), ] ) - self.failUnlessRaises(ValueError, Array, [ + self.assertRaises(ValueError, Array, [ [1], [2,3] ]) - self.failUnlessRaises(ValueError, Array, [ + self.assertRaises(ValueError, Array, [ [1], [] ]) - self.failUnlessRaises(ValueError, Array, [ + self.assertRaises(ValueError, Array, [ [[1]], [[],2] ]) - self.failUnlessRaises(ValueError, Array, [ + self.assertRaises(ValueError, Array, [ [[[[[1,2,3]]]]], [[[[[1,2,3]]]]], [[[[[1,2,3]]]]], @@ -490,13 +490,13 @@ def testSlicing(self): elements = [1,2,3,4,5,6,7,8] d1 = Array([1,2,3,4,5,6,7,8]) for x in slice_samples: - self.failUnlessEqual( + self.assertEqual( d1[x], Array(elements[x]) ) elements = [[1,2],[3,4],[5,6],[7,8]] d2 = Array(elements) for x in slice_samples: - self.failUnlessEqual( + self.assertEqual( d2[x], Array(elements[x]) ) elements = [ @@ -511,7 +511,7 @@ def testSlicing(self): ] d3 = Array(elements) for x in slice_samples: - self.failUnlessEqual( + self.assertEqual( d3[x], Array(elements[x]) ) @@ -521,93 +521,93 @@ def testFromElements(self): # exercise default upper/lower a = Array.from_elements((1,2,3,)) - self.failUnlessEqual((a[0],a[1],a[2]), (1,2,3,)) + self.assertEqual((a[0],a[1],a[2]), (1,2,3,)) # Python interface, Python semantics. - self.failUnlessRaises(IndexError, a.__getitem__, 3) - self.failUnlessEqual(a.dimensions, (3,)) - self.failUnlessEqual(a.lowerbounds, (1,)) - self.failUnlessEqual(a.upperbounds, (3,)) + self.assertRaises(IndexError, a.__getitem__, 3) + self.assertEqual(a.dimensions, (3,)) + self.assertEqual(a.lowerbounds, (1,)) + self.assertEqual(a.upperbounds, (3,)) # exercise default upper/lower a = Array.from_elements([3,2,1], lowerbounds = (2,), upperbounds = (4,)) - self.failUnlessEqual(a.dimensions, (3,)) - self.failUnlessEqual(a.lowerbounds, (2,)) - self.failUnlessEqual(a.upperbounds, (4,)) + self.assertEqual(a.dimensions, (3,)) + self.assertEqual(a.lowerbounds, (2,)) + self.assertEqual(a.upperbounds, (4,)) def testEmptyDimension(self): - self.failUnlessRaises(ValueError, + self.assertRaises(ValueError, Array, [[]] ) - self.failUnlessRaises(ValueError, + self.assertRaises(ValueError, Array, [[2],[]] ) - self.failUnlessRaises(ValueError, + self.assertRaises(ValueError, Array, [[],[],[]] ) - self.failUnlessRaises(ValueError, + self.assertRaises(ValueError, Array, [[2],[3],[]] ) def testExcessive(self): # lowerbounds too high for upperbounds - self.failUnlessRaises(ValueError, + self.assertRaises(ValueError, Array.from_elements, [1], lowerbounds = (2,), upperbounds = (1,) ) def testNegatives(self): a = Array.from_elements([0], lowerbounds = (-1,), upperbounds = (-1,)) - self.failUnlessEqual(a[0], 0) - self.failUnlessEqual(a[-1], 0) + self.assertEqual(a[0], 0) + self.assertEqual(a[-1], 0) # upperbounds at zero a = Array.from_elements([1,2], lowerbounds = (-1,), upperbounds = (0,)) - self.failUnlessEqual(a[0], 1) - self.failUnlessEqual(a[1], 2) - self.failUnlessEqual(a[-2], 1) - self.failUnlessEqual(a[-1], 2) + self.assertEqual(a[0], 1) + self.assertEqual(a[1], 2) + self.assertEqual(a[-2], 1) + self.assertEqual(a[-1], 2) def testGetElement(self): a = Array([1,2,3,4]) - self.failUnlessEqual(a.get_element((0,)), 1) - self.failUnlessEqual(a.get_element((1,)), 2) - self.failUnlessEqual(a.get_element((2,)), 3) - self.failUnlessEqual(a.get_element((3,)), 4) - self.failUnlessEqual(a.get_element((-1,)), 4) - self.failUnlessEqual(a.get_element((-2,)), 3) - self.failUnlessEqual(a.get_element((-3,)), 2) - self.failUnlessEqual(a.get_element((-4,)), 1) - self.failUnlessRaises(IndexError, a.get_element, (4,)) + self.assertEqual(a.get_element((0,)), 1) + self.assertEqual(a.get_element((1,)), 2) + self.assertEqual(a.get_element((2,)), 3) + self.assertEqual(a.get_element((3,)), 4) + self.assertEqual(a.get_element((-1,)), 4) + self.assertEqual(a.get_element((-2,)), 3) + self.assertEqual(a.get_element((-3,)), 2) + self.assertEqual(a.get_element((-4,)), 1) + self.assertRaises(IndexError, a.get_element, (4,)) a = Array([[1,2],[3,4]]) - self.failUnlessEqual(a.get_element((0,0)), 1) - self.failUnlessEqual(a.get_element((0,1,)), 2) - self.failUnlessEqual(a.get_element((1,0,)), 3) - self.failUnlessEqual(a.get_element((1,1,)), 4) - self.failUnlessEqual(a.get_element((-1,-1)), 4) - self.failUnlessEqual(a.get_element((-1,-2,)), 3) - self.failUnlessEqual(a.get_element((-2,-1,)), 2) - self.failUnlessEqual(a.get_element((-2,-2,)), 1) - self.failUnlessRaises(IndexError, a.get_element, (2,0)) - self.failUnlessRaises(IndexError, a.get_element, (1,2)) - self.failUnlessRaises(IndexError, a.get_element, (0,2)) + self.assertEqual(a.get_element((0,0)), 1) + self.assertEqual(a.get_element((0,1,)), 2) + self.assertEqual(a.get_element((1,0,)), 3) + self.assertEqual(a.get_element((1,1,)), 4) + self.assertEqual(a.get_element((-1,-1)), 4) + self.assertEqual(a.get_element((-1,-2,)), 3) + self.assertEqual(a.get_element((-2,-1,)), 2) + self.assertEqual(a.get_element((-2,-2,)), 1) + self.assertRaises(IndexError, a.get_element, (2,0)) + self.assertRaises(IndexError, a.get_element, (1,2)) + self.assertRaises(IndexError, a.get_element, (0,2)) def testSQLGetElement(self): a = Array([1,2,3,4]) - self.failUnlessEqual(a.sql_get_element((1,)), 1) - self.failUnlessEqual(a.sql_get_element((2,)), 2) - self.failUnlessEqual(a.sql_get_element((3,)), 3) - self.failUnlessEqual(a.sql_get_element((4,)), 4) - self.failUnlessEqual(a.sql_get_element((0,)), None) - self.failUnlessEqual(a.sql_get_element((5,)), None) - self.failUnlessEqual(a.sql_get_element((-1,)), None) - self.failUnlessEqual(a.sql_get_element((-2,)), None) - self.failUnlessEqual(a.sql_get_element((-3,)), None) - self.failUnlessEqual(a.sql_get_element((-4,)), None) + self.assertEqual(a.sql_get_element((1,)), 1) + self.assertEqual(a.sql_get_element((2,)), 2) + self.assertEqual(a.sql_get_element((3,)), 3) + self.assertEqual(a.sql_get_element((4,)), 4) + self.assertEqual(a.sql_get_element((0,)), None) + self.assertEqual(a.sql_get_element((5,)), None) + self.assertEqual(a.sql_get_element((-1,)), None) + self.assertEqual(a.sql_get_element((-2,)), None) + self.assertEqual(a.sql_get_element((-3,)), None) + self.assertEqual(a.sql_get_element((-4,)), None) a = Array([[1,2],[3,4]]) - self.failUnlessEqual(a.sql_get_element((1,1)), 1) - self.failUnlessEqual(a.sql_get_element((1,2,)), 2) - self.failUnlessEqual(a.sql_get_element((2,1,)), 3) - self.failUnlessEqual(a.sql_get_element((2,2,)), 4) - self.failUnlessEqual(a.sql_get_element((3,1)), None) - self.failUnlessEqual(a.sql_get_element((1,3)), None) + self.assertEqual(a.sql_get_element((1,1)), 1) + self.assertEqual(a.sql_get_element((1,2,)), 2) + self.assertEqual(a.sql_get_element((2,1,)), 3) + self.assertEqual(a.sql_get_element((2,2,)), 4) + self.assertEqual(a.sql_get_element((3,1)), None) + self.assertEqual(a.sql_get_element((1,3)), None) if __name__ == '__main__': from types import ModuleType From 6ce07c945ea6a8ea571ba19d1b4f90e731fc3c39 Mon Sep 17 00:00:00 2001 From: James William Pye Date: Sat, 9 Apr 2011 10:09:34 -0700 Subject: [PATCH 02/54] Use with blocks to close out the objects. --- postgresql/configfile.py | 29 +++++++++++++++-------------- postgresql/installation.py | 4 +++- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/postgresql/configfile.py b/postgresql/configfile.py index 796d4ffd..4e08c535 100644 --- a/postgresql/configfile.py +++ b/postgresql/configfile.py @@ -245,10 +245,11 @@ def __delitem__(self, k): self._save() def __getitem__(self, k): - return read_config( - self._open(self.path), - selector = k.__eq__ - )[k] + with self._open(self.path) as cfo: + return read_config( + cfo, + selector = k.__eq__ + )[k] def __setitem__(self, k, v): self.update({k : v}) @@ -279,9 +280,8 @@ def __exit__(self, exc, val, tb): return exc is None def get(self, k, alt = None): - return read_config( - self._open(self.path), selector = k.__eq__ - ).get(k, alt) + with self._open(self.path) as cf: + return read_config(cf, selector = k.__eq__).get(k, alt) def keys(self): return read_config(self._open(self.path)).keys() @@ -307,12 +307,13 @@ def getset(self, keys): Returns a dictionary of those keys. """ keys = set(keys) - cfg = read_config( - self._open(self.path), - selector = keys.__contains__ - ) - for x in (keys - set(cfg.keys())): - cfg[x] = None - return cfg + with self._open(self.path) as cfo: + cfg = read_config( + cfo, + selector = keys.__contains__ + ) + for x in (keys - set(cfg.keys())): + cfg[x] = None + return cfg ## # vim: ts=3:sw=3:noet: diff --git a/postgresql/installation.py b/postgresql/installation.py index 224aa89c..d8ed57a6 100644 --- a/postgresql/installation.py +++ b/postgresql/installation.py @@ -31,6 +31,7 @@ def get_command_output(exe, *args): shell = False ) p.stdin.close() + p.stderr.close() while True: try: rv = p.wait() @@ -40,7 +41,8 @@ def get_command_output(exe, *args): raise if rv != 0: return None - return io.TextIOWrapper(p.stdout).read() + with p.stdout, io.TextIOWrapper(p.stdout) as txt: + return txt.read() def pg_config_dictionary(*pg_config_path): """ From 033d0d4bdae915329df83cb3821a09e5e1cbd636 Mon Sep 17 00:00:00 2001 From: Elvis Pranskevichus Date: Tue, 15 Mar 2011 19:07:51 -0400 Subject: [PATCH 03/54] driver: Fix Connection.settings.path property setter Connection.settings.path property setter was broken due to a thinko. --- postgresql/driver/pq3.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/postgresql/driver/pq3.py b/postgresql/driver/pq3.py index 45788fc6..c6b7a9e8 100644 --- a/postgresql/driver/pq3.py +++ b/postgresql/driver/pq3.py @@ -1932,7 +1932,7 @@ def path(): def fget(self): return pg_str.split_ident(self["search_path"]) def fset(self, value): - self.settings['search_path'] = ','.join([ + self['search_path'] = ','.join([ '"%s"' %(x.replace('"', '""'),) for x in value ]) def fdel(self): From 098620b4da60905560011723cdeb71c7e8f8b21f Mon Sep 17 00:00:00 2001 From: Elvis Pranskevichus Date: Tue, 15 Mar 2011 19:05:49 -0400 Subject: [PATCH 04/54] datetime: Fix FixedOffset.tzname() method declaration datetime.tzinfo.tzname() method must accept datetime object as an argument. --- postgresql/python/datetime.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/postgresql/python/datetime.py b/postgresql/python/datetime.py index ead83c36..5844e33f 100644 --- a/postgresql/python/datetime.py +++ b/postgresql/python/datetime.py @@ -22,7 +22,7 @@ def __init__(self, offset_in_seconds, tzname = None): def utcoffset(self, offset_from): return self._td_offset - def tzname(self): + def tzname(self, dt): return self._tzname def dst(self, arg): From 56994173132b7b1303f36c2bddf01f7b951f4a5f Mon Sep 17 00:00:00 2001 From: Elvis Pranskevichus Date: Wed, 16 Mar 2011 09:15:27 -0400 Subject: [PATCH 05/54] Fix test_copyman.testDroppedConnection test --- postgresql/test/test_copyman.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/postgresql/test/test_copyman.py b/postgresql/test/test_copyman.py index d9ad6e7d..95d0b35a 100644 --- a/postgresql/test/test_copyman.py +++ b/postgresql/test/test_copyman.py @@ -510,7 +510,7 @@ def failed_write(*args): self.assertEqual(done, True) # May not be aligned; really, we're expecting the connection to # have died. - self.assertTrue(Exception, dst2.execute, "SELECT 1") + self.assertRaises(Exception, dst2.execute, "SELECT 1") # Connections should be usable. self.assertEqual(prepare('select 1').first(), 1) From 73f95df1a0d5c5159408289c49ddc2dc51f7e70c Mon Sep 17 00:00:00 2001 From: James William Pye Date: Sun, 10 Apr 2011 21:49:14 -0700 Subject: [PATCH 06/54] Close out the socket in client3 in exception cases. --- postgresql/protocol/client3.py | 110 ++++++++++++++++----------------- 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/postgresql/protocol/client3.py b/postgresql/protocol/client3.py index 967d119b..67f34d11 100644 --- a/postgresql/protocol/client3.py +++ b/postgresql/protocol/client3.py @@ -103,9 +103,7 @@ def synchronize(self): self.complete() def interrupt(self, timeout = None): - cq = element.CancelRequest( - self.backend_id, self.key - ).bytes() + cq = element.CancelRequest(self.backend_id, self.key).bytes() s = self.socket_factory(timeout = timeout) try: s.sendall(cq) @@ -128,16 +126,17 @@ def connect(self, ssl = None, timeout = None): if hasattr(self, 'socket'): # If there's a socket attribute it normally means # that the connection has already been connected. - # Successful, or unsuccessful. + # Successfully or not; doesn't matter. return + + # The existence of the socket attribute indicates an attempt was made. + self.socket = None try: self.socket = self.socket_factory(timeout = timeout) except ( self.socket_factory.timeout_exception, self.socket_factory.fatal_exception ) as err: - # The existence of the socket attribute indicates an attempt was made. - self.socket = None self.xact.state = xact.Complete self.xact.fatal = True self.xact.exception = err @@ -156,55 +155,60 @@ def connect(self, ssl = None, timeout = None): )) return - if ssl is not None: - # if ssl is True, ssl is *required* - # if ssl is False, ssl will be tried, but not required - # if ssl is None, no SSL negotiation will happen - self.ssl_negotiation = supported = self.negotiate_ssl() - - # b'S' or b'N' was *not* received. - if supported is None: - # probably not PQv3.. - self.socket.close() - self.xact.fatal = True - self.xact.error_message = not_pq_error - self.xact.state = xact.Complete - return - - # b'N' was received, but ssl is required. - if not supported and ssl is True: - # ssl is required.. - self.socket.close() - self.xact.fatal = True - self.xact.error_message = no_ssl_error - self.xact.state = xact.Complete - return + try: + if ssl is not None: + # if ssl is True, ssl is *required* + # if ssl is False, ssl will be tried, but not required + # if ssl is None, no SSL negotiation will happen + self.ssl_negotiation = supported = self.negotiate_ssl() + + # b'S' or b'N' was *not* received. + if supported is None: + # probably not PQv3.. + self.socket.close() + self.xact.fatal = True + self.xact.error_message = not_pq_error + self.xact.state = xact.Complete + return - if supported: - # Make an SSL connection. - try: - self.socket = self.socket_factory.secure(self.socket) - except Exception as err: - # Any exception marks a failure. + # b'N' was received, but ssl is required. + if not supported and ssl is True: + # ssl is required.. self.socket.close() - self.xact.exception = err self.xact.fatal = True + self.xact.error_message = no_ssl_error self.xact.state = xact.Complete - self.xact.error_message = ssl_failed_error return - # time to negotiate - negxact = self.xact - self.complete() - if negxact.state is xact.Complete and negxact.fatal is None: - self.key = negxact.killinfo.key - self.backend_id = negxact.killinfo.pid - elif not hasattr(self.xact, 'error_message'): - # if it's not complete, something strange happened. - # make sure to clean up... - self.socket.close() - self.xact.fatal = True - self.xact.state = xact.Complete - self.xact.error_message = partial_connection_error + + if supported: + # Make an SSL connection. + try: + self.socket = self.socket_factory.secure(self.socket) + except Exception as err: + # Any exception marks a failure. + self.socket.close() + self.xact.exception = err + self.xact.fatal = True + self.xact.state = xact.Complete + self.xact.error_message = ssl_failed_error + return + # time to negotiate + negxact = self.xact + self.complete() + if negxact.state is xact.Complete and negxact.fatal is None: + self.key = negxact.killinfo.key + self.backend_id = negxact.killinfo.pid + elif not hasattr(self.xact, 'error_message'): + # if it's not complete, something strange happened. + # make sure to clean up... + self.socket.close() + self.xact.fatal = True + self.xact.state = xact.Complete + self.xact.error_message = partial_connection_error + except: + if self.socket is not None: + self.socket.close() + raise def negotiate_ssl(self) -> (bool, None): """ @@ -495,11 +499,7 @@ def __str__(self): + ' -> (' + ssl + ')' \ + os.linesep + excstr.strip() - def __init__(self, - socket_factory, - startup, - password = b'', - ): + def __init__(self, socket_factory, startup, password = b'',): """ Create a connection. From d48b631f395e2a8eb8d54f59fabd74be0ae4a18d Mon Sep 17 00:00:00 2001 From: James William Pye Date: Sun, 10 Apr 2011 21:55:10 -0700 Subject: [PATCH 07/54] Reference new_start, one less lookup. --- postgresql/protocol/pbuffer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/postgresql/protocol/pbuffer.py b/postgresql/protocol/pbuffer.py index 50f552f7..a3014942 100644 --- a/postgresql/protocol/pbuffer.py +++ b/postgresql/protocol/pbuffer.py @@ -145,9 +145,9 @@ def read(self, num = 0xFFFFFFFF, len = len): self._rtruncate(self._start) self._start = 0 - self._strio.seek(self._start) - l = [] new_start = self._start + self._strio.seek(new_start) + l = [] while len(l) < num: msg = self._get_message() if msg is None: From fae5e3b98008631699ed1e9e5e8d8d71d3a1ea99 Mon Sep 17 00:00:00 2001 From: James William Pye Date: Sun, 10 Apr 2011 22:01:54 -0700 Subject: [PATCH 08/54] Close socket in failure cases. --- postgresql/python/socket.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/postgresql/python/socket.py b/postgresql/python/socket.py index 50dde87b..9fa618de 100644 --- a/postgresql/python/socket.py +++ b/postgresql/python/socket.py @@ -62,9 +62,13 @@ def secure(self, socket : socket.socket) -> ssl.SSLSocket: def __call__(self, timeout = None): s = socket.socket(*self.socket_create) - s.settimeout(float(timeout) if timeout is not None else None) - s.connect(self.socket_connect) - s.settimeout(None) + try: + s.settimeout(float(timeout) if timeout is not None else None) + s.connect(self.socket_connect) + s.settimeout(None) + except Exception: + s.close() + raise return s def __init__(self, @@ -102,12 +106,12 @@ def find_available_port( s = socket.socket(address_family, socket.SOCK_STREAM,) try: s.bind(('localhost', port)) + s.close() except socket.error as e: + s.close() if e.errno in (errno.EACCES, errno.EADDRINUSE, errno.EINTR): # try again continue - finally: - s.close() break else: port = None From 845c443a9151c423911244e14a69341eb5f47198 Mon Sep 17 00:00:00 2001 From: James William Pye Date: Sun, 10 Apr 2011 22:12:31 -0700 Subject: [PATCH 09/54] Be more careful about closing file descriptors associated with the process. --- postgresql/cluster.py | 58 +++++++++++++++++++++++++------------------ 1 file changed, 34 insertions(+), 24 deletions(-) diff --git a/postgresql/cluster.py b/postgresql/cluster.py index cf515120..2875a9a5 100644 --- a/postgresql/cluster.py +++ b/postgresql/cluster.py @@ -237,6 +237,7 @@ def init(self, supw_file = () supw_tmp = None + p = None try: if password is not None: # got a superuserpass, store it in a tempfile for initdb @@ -269,34 +270,43 @@ def init(self, except OSError as e: if e.errno != errno.EINTR: raise + finally: + if p.stdout is not None: + p.stdout.close() + + if rc != 0: + # initdb returned non-zero, pickup stderr and attach to exception. + + r = p.stderr.read().strip() + try: + msg = r.decode('utf-8') + except UnicodeDecodeError: + # split up the lines, and use rep. + msg = os.linesep.join([ + repr(x)[2:-1] for x in r.splitlines() + ]) + raise InitDBError( + "initdb exited with non-zero status", + details = { + 'command': cmd, + 'stderr': msg, + 'stdout': msg, + }, + creator = self + ) finally: - # stdlib fail. Make sure the temp gets deleted. - # NamedTemporaryFile has inconsistencies across platforms. :( + if p is not None: + for x in (p.stderr, p.stdin, p.stdout): + if x is not None: + x.close() + if supw_tmp is not None: n = supw_tmp.name supw_tmp.close() + # XXX: win32 compensation. if os.path.exists(n): os.unlink(n) - if rc != 0: - r = p.stderr.read().strip() - try: - msg = r.decode('utf-8') - except UnicodeDecodeError: - # split up the lines, and use rep. - msg = os.linesep.join([ - repr(x)[2:-1] for x in r.splitlines() - ]) - raise InitDBError( - "initdb exited with non-zero status", - details = { - 'command': cmd, - 'stderr': msg, - 'stdout': msg, - }, - creator = self - ) - def drop(self): """ Stop the cluster and remove it from the filesystem @@ -312,9 +322,7 @@ def drop(self): except ClusterTimeoutError: ClusterWarning( 'cluster failed to shutdown after kill', - details = { - 'hint' : 'Shared memory may be leaked.' - }, + details = {'hint' : 'Shared memory may have been leaked.'}, creator = self ).emit() # Really, using rm -rf would be the best, but use this for portability. @@ -633,6 +641,8 @@ def wait_until_stopped(self, # pickup the exit code. if self.daemon_process is not None: self.last_exit_code = self.daemon_process.poll() + else: + self.last_exit_code = pg_kill(self.get_pid_from_file(), 0) if time.time() - start >= timeout: raise ClusterTimeoutError( 'timeout on shutdown', From fddb5c224aca58cb38edf06d1a5fefdb60bfa844 Mon Sep 17 00:00:00 2001 From: James William Pye Date: Mon, 11 Apr 2011 11:03:23 -0700 Subject: [PATCH 10/54] Be sure to close sockets and connections. --- postgresql/temporal.py | 85 +++++++++++++++++++++++++----------------- 1 file changed, 50 insertions(+), 35 deletions(-) diff --git a/postgresql/temporal.py b/postgresql/temporal.py index d2eed459..0c427543 100644 --- a/postgresql/temporal.py +++ b/postgresql/temporal.py @@ -6,6 +6,7 @@ """ import os import atexit +from collections import deque from .cluster import Cluster, ClusterError from . import installation from .python.socket import find_available_port @@ -43,26 +44,28 @@ class Temporal(object): } def __init__(self): - self.builtins_stack = [] + self.builtins_stack = deque() self.sandbox_id = 0 + # identifier for keeping temporary instances unique. self.__class__._local_id_ = self.local_id = (self.__class__._local_id_ + 1) def __call__(self, callable): - def incontext(*args, **kw): + def in_pg_temporal_context(*args, **kw): with self: return callable(*args, **kw) n = getattr(callable, '__name__', None) if n: - incontext.__name__ = n - return incontext + in_pg_temporal_context.__name__ = n + return in_pg_temporal_context def destroy(self): # Don't destroy if it's not the initializing process. if os.getpid() == self._init_pid_: # Kill all the open connections. try: - with self: - db.sys.terminate_backends() + c = cluster.connection(user = 'test', database = 'template1',) + with c: + c.sys.terminate_backends() except Exception: # Doesn't matter much if it fails. pass @@ -71,7 +74,7 @@ def destroy(self): self._init_pid_ = None if cluster is not None: cluster.stop() - cluster.wait_until_stopped(timeout = 10) + cluster.wait_until_stopped(timeout = 5) cluster.drop() def init(self, @@ -101,10 +104,7 @@ def init(self, 'could not find the default pg_config', details = inshint ) - cluster = Cluster( - installation, - self.cluster_path, - ) + cluster = Cluster(installation, self.cluster_path,) # If it exists already, destroy it. if cluster.initialized(): @@ -138,13 +138,12 @@ def init(self, )) # Start it up. - cluster.start(logfile = open(self.logfile, 'w')) + with open(self.logfile, 'w') as lfo: + cluster.start(logfile = lfo) cluster.wait_until_started() # Initialize template1 and the test user database. - c = cluster.connection( - user = 'test', database = 'template1', - ) + c = cluster.connection(user = 'test', database = 'template1',) with c: c.execute('create database test') # It's ready. @@ -152,9 +151,10 @@ def init(self, def push(self): c = self.cluster.connection(user = 'test') + c.connect() extras = [] - def newdb(l = extras, c = c, sbid = 'sandbox' + str(self.sandbox_id + 1)): + def new_pg_tmp_connection(l = extras, c = c, sbid = 'sandbox' + str(self.sandbox_id + 1)): # Used to create a new connection that will be closed # when the context stack is popped along with 'db'. l.append(c.clone()) @@ -171,7 +171,7 @@ def newdb(l = extras, c = c, sbid = 'sandbox' + str(self.sandbox_id + 1)): 'settings' : c.settings, 'proc' : c.proc, 'connector' : c.connector, - 'new' : newdb, + 'new' : new_pg_tmp_connection, } if not self.builtins_stack: # Store any of those set or not set. @@ -186,32 +186,45 @@ def newdb(l = extras, c = c, sbid = 'sandbox' + str(self.sandbox_id + 1)): __builtins__.update(builtins) self.sandbox_id += 1 - def pop(self, - interrupt = False, - drop_schema = 'DROP SCHEMA sandbox{0} CASCADE'.format - ): - builtins, extras = self.builtins_stack.pop(-1) + def pop(self, exc, drop_schema = 'DROP SCHEMA sandbox{0} CASCADE'.format): + builtins, extras = self.builtins_stack.pop() self.sandbox_id -= 1 - # restore + + # restore __builtins__ if len(self.builtins_stack) > 1: __builtins__.update(self.builtins_stack[-1][0]) else: - previous = self.builtins_stack.pop(0) + previous = self.builtins_stack.popleft() for x in self.builtins_keys: if x in previous: __builtins__[x] = previous[x] else: # Wasn't set before. __builtins__.pop(x, None) - if not interrupt: + + # close popped connection, but only if we're not in an interrupt. + # However, temporal will always terminate all backends atexit. + if exc is None or isinstance(exc, Exception): # Interrupt then close. Just in case something is lingering. - for x in [builtins['db']] + list(extras): - if x.closed is False: - x.interrupt() - x.close() - # Interrupted and closed all the other connections. - with builtins['new']() as dropdb: - dropdb.execute(drop_schema(self.sandbox_id+1)) + for xdb in [builtins['db']] + list(extras): + if xdb.closed is False: + # In order for a clean close of the connection, + # interrupt before closing. It is still + # possible for the close to block, but less likely. + xdb.interrupt() + xdb.close() + + # Interrupted and closed all the other connections at this level; + # now remove the sandbox schema. + c = self.cluster.connection(user = 'test') + with c: + # Use a new connection so that the state of + # the context connection will not have to be + # contended with. + c.execute(drop_schema(self.sandbox_id+1)) + else: + # interrupt + pass def __enter__(self): if self.cluster is None: @@ -221,12 +234,14 @@ def __enter__(self): db.connect() db.execute('CREATE SCHEMA sandbox' + str(self.sandbox_id)) db.settings['search_path'] = 'sandbox' + str(self.sandbox_id) + ',' + db.settings['search_path'] - except: - self.pop() + except Exception as e: + # failed to initialize sandbox schema; pop it. + self.pop(e) raise def __exit__(self, exc, val, tb): - self.pop(exc and not issubclass(exc, Exception)) + if self.cluster is not None: + self.pop(val) #: The process' temporary cluster. pg_tmp = Temporal() From 1e7b7558bdb13da7eca18075465c46b0e2f936db Mon Sep 17 00:00:00 2001 From: James William Pye Date: Sat, 10 Sep 2011 10:37:11 -0500 Subject: [PATCH 11/54] Ensure that the socket is closed on connection close. (3.2 ResourceWarning fixes) --- postgresql/driver/pq3.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/postgresql/driver/pq3.py b/postgresql/driver/pq3.py index f3af0e8d..a9440798 100644 --- a/postgresql/driver/pq3.py +++ b/postgresql/driver/pq3.py @@ -2293,19 +2293,19 @@ def cursor_from_id(self, cursor_id : str) -> Cursor: @property def closed(self) -> bool: - if not hasattr(self, 'pq'): + if getattr(self, 'pq', None) is None: return True if hasattr(self.pq, 'socket') and self.pq.xact is not None: return self.pq.xact.fatal is True return False - def close(self): + def close(self, getattr = getattr): if self.closed: return # Write out the disconnect message if the socket is around. # If the connection is known to be lost, don't bother. It will # generate an extra exception. - x = self.pq.xact + x = getattr(self.pq, 'xact', None) if x: # don't raise? self.pq.complete() @@ -2313,6 +2313,7 @@ def close(self): return self.pq.push(xact.Closing()) self.pq.complete() + self.pq.socket.close() @property def state(self) -> str: @@ -2347,13 +2348,22 @@ def connect(self): if self.closed is False: # already connected? just return. return - # It's closed. if hasattr(self, 'pq'): # It's closed, *but* there's a PQ connection.. x = self.pq.xact self.typio.raise_error(x.error_message, cause = getattr(x, 'exception', None), creator = self) + # It's closed. + try: + self._establish() + except Exception: + # Close it up on failure. + self.close() + raise + + def _establish(self): + # guts of connect() self.pq = None # if any exception occurs past this point, the connection # will not be usable. From 550f4b40546fb15d41c1835223ff44711f9790b4 Mon Sep 17 00:00:00 2001 From: James William Pye Date: Sat, 10 Sep 2011 10:44:20 -0500 Subject: [PATCH 12/54] Properly use getset(). getset() will return keys with None iff the setting is unset. --- postgresql/cluster.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/postgresql/cluster.py b/postgresql/cluster.py index 2875a9a5..e76e612e 100644 --- a/postgresql/cluster.py +++ b/postgresql/cluster.py @@ -513,10 +513,10 @@ def address(self): d = self.settings.getset(( 'listen_addresses', 'port', )) - if 'listen_addresses' in d: + if d.get('listen_addresses') is not None: # Prefer localhost over other addresses. # More likely to get a successful connection. - addrs = d.get('listen_addresses', 'localhost').lower().split(',') + addrs = d.get('listen_addresses').lower().split(',') if 'localhost' in addrs or '*' in addrs: host = 'localhost' elif '127.0.0.1' in addrs: From 4ed896803534fcc0c55e99e17dbe7989278cf3af Mon Sep 17 00:00:00 2001 From: James William Pye Date: Sat, 10 Sep 2011 10:45:46 -0500 Subject: [PATCH 13/54] Check for closed connections before select()'ing. --- postgresql/notifyman.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/postgresql/notifyman.py b/postgresql/notifyman.py index 4f6a3df0..b46aa0df 100644 --- a/postgresql/notifyman.py +++ b/postgresql/notifyman.py @@ -71,6 +71,11 @@ def _wait_on_wires(self, time = time, select = select): # Connections already marked as "bad" should not be checked. check = self.connections - self.garbage + for db in check: + if db.closed: + self.connections.remove(db) + self.garbage.add(db) + check = self.connections - self.garbage r, w, x = select(check, (), check, max_duration) # Make sure the connection's _notifies get filled. From 6b2f7655a49c82ad9e5af062663c9cdf9df78714 Mon Sep 17 00:00:00 2001 From: James William Pye Date: Sat, 10 Sep 2011 10:49:04 -0500 Subject: [PATCH 14/54] Add module autodocs. sphinx runs under Python 3 now! --- postgresql/documentation/sphinx/conf.py | 5 ++--- postgresql/documentation/sphinx/index.rst | 1 + postgresql/documentation/sphinx/modules.rst | 21 --------------------- 3 files changed, 3 insertions(+), 24 deletions(-) delete mode 100644 postgresql/documentation/sphinx/modules.rst diff --git a/postgresql/documentation/sphinx/conf.py b/postgresql/documentation/sphinx/conf.py index 3ec7904d..be731f8d 100644 --- a/postgresql/documentation/sphinx/conf.py +++ b/postgresql/documentation/sphinx/conf.py @@ -12,13 +12,12 @@ # serve to show the default value. import sys, os -sys.path.insert(0, '.') sys.dont_write_bytecode = True # If your extensions are in another directory, add it here. If the directory # is relative to the documentation root, use os.path.abspath to make it # absolute, like shown here. -sys.path.insert(0, os.path.abspath('../../')) +sys.path.insert(0, os.path.abspath('../../..')) # General configuration # --------------------- @@ -37,7 +36,7 @@ master_doc = 'index' # General substitutions. -import project +from postgresql import project copyright = '2010, ' + project.author # The default replacements for |version| and |release|, also used in various diff --git a/postgresql/documentation/sphinx/index.rst b/postgresql/documentation/sphinx/index.rst index 2ce60a55..e0b16d73 100644 --- a/postgresql/documentation/sphinx/index.rst +++ b/postgresql/documentation/sphinx/index.rst @@ -32,6 +32,7 @@ Reference :maxdepth: 2 bin + modules Sample Code ----------- diff --git a/postgresql/documentation/sphinx/modules.rst b/postgresql/documentation/sphinx/modules.rst deleted file mode 100644 index 7b919a6e..00000000 --- a/postgresql/documentation/sphinx/modules.rst +++ /dev/null @@ -1,21 +0,0 @@ -Modules -======= - -Modules intended for general use. - -:mod:`postgresql` ------------------ - -.. automodule:: postgresql -.. autodata:: version -.. autodata:: version_info -.. autofunction:: open - - -:mod:`postgresql.string` ------------------------- - -.. automodule:: - postgresql.string - :members: - :show-inheritance: From f170ec514201fc90952e89ca774da18d5a2cf03b Mon Sep 17 00:00:00 2001 From: James William Pye Date: Sun, 11 Sep 2011 10:37:03 -0500 Subject: [PATCH 15/54] Dead code. --- postgresql/python/contextlib.py | 25 ------------------------- postgresql/test/test_python.py | 12 ------------ 2 files changed, 37 deletions(-) delete mode 100644 postgresql/python/contextlib.py diff --git a/postgresql/python/contextlib.py b/postgresql/python/contextlib.py deleted file mode 100644 index d58443e3..00000000 --- a/postgresql/python/contextlib.py +++ /dev/null @@ -1,25 +0,0 @@ -## -# .python.contextlib -## -import sys - -class NoCM(object): - """ - CM that does nothing. Useful for parameterized CMs. - """ - __slots__ = () - - def __new__(typ): - return typ - - @staticmethod - def __enter__(): - pass - - @classmethod - def __context__(typ): - return typ - - @staticmethod - def __exit__(typ, val, tb): - pass diff --git a/postgresql/test/test_python.py b/postgresql/test/test_python.py index fdd047fa..16d66cb7 100644 --- a/postgresql/test/test_python.py +++ b/postgresql/test/test_python.py @@ -11,7 +11,6 @@ from ..python.itertools import interlace from ..python.structlib import split_sized_data -from ..python.contextlib import * from ..python import functools from ..python import itertools from ..python.socket import find_available_port @@ -154,17 +153,6 @@ def testFindAvailable(self): finally: s.close() -class test_contextlib(unittest.TestCase): - def testNoCM(self): - with NoCM as foo: - pass - self.assertEqual(foo, None) - self.assertEqual(NoCM(), NoCM) - # has no state, may be used repeatedly - with NoCM as foo: - pass - self.assertEqual(foo, None) - def join_sized_data(*data, packL = struct.Struct("!L").pack, getlen = lambda x: len(x) if x is not None else 0xFFFFFFFF From b58dfd2de981b82e1bea09530af5d5ee0c0c6cd6 Mon Sep 17 00:00:00 2001 From: James William Pye Date: Wed, 14 Sep 2011 10:28:04 -0500 Subject: [PATCH 16/54] Build out the connection before connecting. --- postgresql/cluster.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/postgresql/cluster.py b/postgresql/cluster.py index e76e612e..5ceb18b3 100644 --- a/postgresql/cluster.py +++ b/postgresql/cluster.py @@ -539,14 +539,14 @@ def ready_for_connections(self): return False e = None host, port = self.address() + connection = self.driver.fit( + user = ' -*- ping -*- ', + host = host, port = port, + database = 'template1', + sslmode = 'disable', + )() try: - self.driver.connect( - user = ' -*- ping -*- ', - host = host or 'localhost', - port = port or 5432, - database = 'template1', - sslmode = 'disable', - ).close() + connection.connect() except pg_exc.ClientCannotConnectError as err: for attempt in err.database.failures: x = attempt.error From e4fc3db6c58d1b03c1d075f539ad16cdd6134910 Mon Sep 17 00:00:00 2001 From: James William Pye Date: Wed, 14 Sep 2011 15:13:59 -0500 Subject: [PATCH 17/54] Fix a resource warning caused by a forgotten socket. The common situation occurred when connecting to 'localhost' where the addrinfo returns IPv6 addresses that aren't fully functional or in use. --- postgresql/driver/pq3.py | 5 ++ postgresql/protocol/client3.py | 91 +++++++++++++++------------------- postgresql/python/socket.py | 2 +- 3 files changed, 47 insertions(+), 51 deletions(-) diff --git a/postgresql/driver/pq3.py b/postgresql/driver/pq3.py index a9440798..8a827cd8 100644 --- a/postgresql/driver/pq3.py +++ b/postgresql/driver/pq3.py @@ -2441,6 +2441,10 @@ def _establish(self): self._receive_async(x) # success! break + elif pq.socket is not None: + # In this case, an application/protocol error occurred. + # Close out the sockets ourselves. + pq.socket.close() if sslmode == 'prefer' and ssl is False and didssl is False: # In this case, the server doesn't support SSL or it's @@ -2640,6 +2644,7 @@ def __init__(self, connector, *args, **kw): self.connector = connector # raw notify messages self._notifies = [] + self.fileno = -1 self.typio = self.connector.driver.typio(self) self.typio.set_encoding('ascii') self.settings = Settings(self) diff --git a/postgresql/protocol/client3.py b/postgresql/protocol/client3.py index 67f34d11..461b66f4 100644 --- a/postgresql/protocol/client3.py +++ b/postgresql/protocol/client3.py @@ -155,60 +155,51 @@ def connect(self, ssl = None, timeout = None): )) return - try: - if ssl is not None: - # if ssl is True, ssl is *required* - # if ssl is False, ssl will be tried, but not required - # if ssl is None, no SSL negotiation will happen - self.ssl_negotiation = supported = self.negotiate_ssl() - - # b'S' or b'N' was *not* received. - if supported is None: - # probably not PQv3.. - self.socket.close() - self.xact.fatal = True - self.xact.error_message = not_pq_error - self.xact.state = xact.Complete - return + if ssl is not None: + # if ssl is True, ssl is *required* + # if ssl is False, ssl will be tried, but not required + # if ssl is None, no SSL negotiation will happen + self.ssl_negotiation = supported = self.negotiate_ssl() + + # b'S' or b'N' was *not* received. + if supported is None: + # probably not PQv3.. + self.xact.fatal = True + self.xact.error_message = not_pq_error + self.xact.state = xact.Complete + return - # b'N' was received, but ssl is required. - if not supported and ssl is True: - # ssl is required.. - self.socket.close() + # b'N' was received, but ssl is required. + if not supported and ssl is True: + # ssl is required.. + self.xact.fatal = True + self.xact.error_message = no_ssl_error + self.xact.state = xact.Complete + return + + if supported: + # Make an SSL connection. + try: + self.socket = self.socket_factory.secure(self.socket) + except Exception as err: + # Any exception marks a failure. + self.xact.exception = err self.xact.fatal = True - self.xact.error_message = no_ssl_error self.xact.state = xact.Complete + self.xact.error_message = ssl_failed_error return - - if supported: - # Make an SSL connection. - try: - self.socket = self.socket_factory.secure(self.socket) - except Exception as err: - # Any exception marks a failure. - self.socket.close() - self.xact.exception = err - self.xact.fatal = True - self.xact.state = xact.Complete - self.xact.error_message = ssl_failed_error - return - # time to negotiate - negxact = self.xact - self.complete() - if negxact.state is xact.Complete and negxact.fatal is None: - self.key = negxact.killinfo.key - self.backend_id = negxact.killinfo.pid - elif not hasattr(self.xact, 'error_message'): - # if it's not complete, something strange happened. - # make sure to clean up... - self.socket.close() - self.xact.fatal = True - self.xact.state = xact.Complete - self.xact.error_message = partial_connection_error - except: - if self.socket is not None: - self.socket.close() - raise + # time to negotiate + negxact = self.xact + self.complete() + if negxact.state is xact.Complete and negxact.fatal is None: + self.key = negxact.killinfo.key + self.backend_id = negxact.killinfo.pid + elif not hasattr(self.xact, 'error_message'): + # if it's not complete, something strange happened. + # make sure to clean up... + self.xact.fatal = True + self.xact.state = xact.Complete + self.xact.error_message = partial_connection_error def negotiate_ssl(self) -> (bool, None): """ diff --git a/postgresql/python/socket.py b/postgresql/python/socket.py index 9fa618de..2479d752 100644 --- a/postgresql/python/socket.py +++ b/postgresql/python/socket.py @@ -66,7 +66,7 @@ def __call__(self, timeout = None): s.settimeout(float(timeout) if timeout is not None else None) s.connect(self.socket_connect) s.settimeout(None) - except Exception: + except: s.close() raise return s From c7edc7442d89f14e2efaf3bce41d1589243aa419 Mon Sep 17 00:00:00 2001 From: James William Pye Date: Wed, 14 Sep 2011 15:16:00 -0500 Subject: [PATCH 18/54] Revert widening the exception class. --- postgresql/python/socket.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/postgresql/python/socket.py b/postgresql/python/socket.py index 2479d752..9fa618de 100644 --- a/postgresql/python/socket.py +++ b/postgresql/python/socket.py @@ -66,7 +66,7 @@ def __call__(self, timeout = None): s.settimeout(float(timeout) if timeout is not None else None) s.connect(self.socket_connect) s.settimeout(None) - except: + except Exception: s.close() raise return s From b5f33a83a44bbb40b933c5594e89c0fea4fc35b1 Mon Sep 17 00:00:00 2001 From: James William Pye Date: Thu, 15 Sep 2011 10:11:21 -0500 Subject: [PATCH 19/54] Unconditionally close the connection. --- postgresql/temporal.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/postgresql/temporal.py b/postgresql/temporal.py index 0c427543..5ac0dd3a 100644 --- a/postgresql/temporal.py +++ b/postgresql/temporal.py @@ -212,7 +212,7 @@ def pop(self, exc, drop_schema = 'DROP SCHEMA sandbox{0} CASCADE'.format): # interrupt before closing. It is still # possible for the close to block, but less likely. xdb.interrupt() - xdb.close() + xdb.close() # Interrupted and closed all the other connections at this level; # now remove the sandbox schema. From 9d88c9398d56e09d6a4f3ba4c023b088f116d373 Mon Sep 17 00:00:00 2001 From: James William Pye Date: Thu, 15 Sep 2011 10:12:30 -0500 Subject: [PATCH 20/54] use with statement --- postgresql/test/test_driver.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/postgresql/test/test_driver.py b/postgresql/test/test_driver.py index 75471561..9fd33270 100644 --- a/postgresql/test/test_driver.py +++ b/postgresql/test/test_driver.py @@ -1730,10 +1730,8 @@ def testBadFD(self): @pg_tmp def testAdminTerminated(self): - killer = new() - killer.sys.terminate_backends() - # hoping that this will guarantee that the terminate is complete - killer.close() + with new() as killer: + killer.sys.terminate_backends() self.assertRaises( pg_exc.AdminShutdownError, From dd7e851cb9c34458fab6ac8f33dd71a84cae639b Mon Sep 17 00:00:00 2001 From: James William Pye Date: Thu, 15 Sep 2011 10:12:37 -0500 Subject: [PATCH 21/54] Rely on the client3.Connection user to close/shutdown the socket. --- postgresql/driver/pq3.py | 12 ++++++------ postgresql/protocol/client3.py | 3 --- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/postgresql/driver/pq3.py b/postgresql/driver/pq3.py index 8a827cd8..289197f3 100644 --- a/postgresql/driver/pq3.py +++ b/postgresql/driver/pq3.py @@ -2300,20 +2300,20 @@ def closed(self) -> bool: return False def close(self, getattr = getattr): - if self.closed: - return # Write out the disconnect message if the socket is around. # If the connection is known to be lost, don't bother. It will # generate an extra exception. x = getattr(self.pq, 'xact', None) if x: - # don't raise? + # complete the existing transaction, if possible. + # XXX: don't raise? self.pq.complete() if self.closed: return - self.pq.push(xact.Closing()) - self.pq.complete() - self.pq.socket.close() + if getattr(self, 'pq', None): + self.pq.push(xact.Closing()) + self.pq.complete() + self.pq.socket.close() @property def state(self) -> str: diff --git a/postgresql/protocol/client3.py b/postgresql/protocol/client3.py index 461b66f4..f0d7d69b 100644 --- a/postgresql/protocol/client3.py +++ b/postgresql/protocol/client3.py @@ -241,7 +241,6 @@ def read_into(self, Complete = xact.Complete): except self.socket_factory.fatal_exception as e: msg = self.socket_factory.fatal_exception_message(e) if msg is not None: - self.socket.close() XACT.state = Complete XACT.fatal = True XACT.exception = e @@ -259,7 +258,6 @@ def read_into(self, Complete = xact.Complete): ## # nothing read from a blocking socket? it's over. if self.read_data == b'': - self.socket.close() XACT.state = Complete XACT.fatal = True XACT.error_message = eof_error @@ -298,7 +296,6 @@ def send_message_data(self): msg = self.socket_factory.fatal_exception_message(e) if msg is not None: # it's fatal. - self.socket.close() self.xact.state = xact.Complete self.xact.fatal = True self.xact.exception = e From 8df25d4e96c227c0ed1721bda0e0894f34469efa Mon Sep 17 00:00:00 2001 From: James William Pye Date: Thu, 15 Sep 2011 19:14:20 -0500 Subject: [PATCH 22/54] Back out test line and style. --- postgresql/test/test_driver.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/postgresql/test/test_driver.py b/postgresql/test/test_driver.py index 9fd33270..66565d80 100644 --- a/postgresql/test/test_driver.py +++ b/postgresql/test/test_driver.py @@ -1720,7 +1720,6 @@ def testNamedTuples(self): @pg_tmp def testBadFD(self): - db.pq.socket.close() # bad fd now. self.assertRaises( pg_exc.ConnectionFailureError, @@ -1735,7 +1734,7 @@ def testAdminTerminated(self): self.assertRaises( pg_exc.AdminShutdownError, - sqlexec, "SELECT 1" + sqlexec, "SELECT 1", ) self.assertTrue(issubclass(pg_exc.AdminShutdownError, pg_exc.Disconnection)) From 27931024dbfb69059e54292df284572402b8dafa Mon Sep 17 00:00:00 2001 From: James William Pye Date: Fri, 16 Sep 2011 11:35:17 -0500 Subject: [PATCH 23/54] Fix close() to always close pq.socket if pq.socket is not None. If there isn't a fatal transaction, be sure push Closing(). --- postgresql/driver/pq3.py | 23 +++++++++++++++++------ postgresql/test/test_driver.py | 1 + 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/postgresql/driver/pq3.py b/postgresql/driver/pq3.py index 289197f3..0d953d35 100644 --- a/postgresql/driver/pq3.py +++ b/postgresql/driver/pq3.py @@ -2303,17 +2303,26 @@ def close(self, getattr = getattr): # Write out the disconnect message if the socket is around. # If the connection is known to be lost, don't bother. It will # generate an extra exception. + if getattr(self, 'pq', None) is None or getattr(self.pq, 'socket', None) is None: + # No action to take. + return + x = getattr(self.pq, 'xact', None) - if x: - # complete the existing transaction, if possible. - # XXX: don't raise? + if x is not None and x.fatal is not True: + # finish the existing pq transaction iff it's not Closing. self.pq.complete() - if self.closed: - return - if getattr(self, 'pq', None): + + if self.pq.xact is None: + # It completed the existing transaction. self.pq.push(xact.Closing()) self.pq.complete() + if self.pq.socket: + self.pq.complete() + + # Close the socket if there is one. + if self.pq.socket: self.pq.socket.close() + self.pq.socket = None @property def state(self) -> str: @@ -2446,6 +2455,8 @@ def _establish(self): # Close out the sockets ourselves. pq.socket.close() + # Identify whether or not we can skip the attempt. + # Whether or not we can skip depends entirely on the SSL parameter. if sslmode == 'prefer' and ssl is False and didssl is False: # In this case, the server doesn't support SSL or it's # turned off. Therefore, the "without_ssl" attempt need diff --git a/postgresql/test/test_driver.py b/postgresql/test/test_driver.py index 66565d80..6efce17e 100644 --- a/postgresql/test/test_driver.py +++ b/postgresql/test/test_driver.py @@ -1720,6 +1720,7 @@ def testNamedTuples(self): @pg_tmp def testBadFD(self): + db.pq.socket.close() # bad fd now. self.assertRaises( pg_exc.ConnectionFailureError, From 0e9705d952564393cbe35513f38da17cbe3d6164 Mon Sep 17 00:00:00 2001 From: James William Pye Date: Mon, 19 Sep 2011 12:36:43 -0500 Subject: [PATCH 24/54] Use assert*. --- postgresql/test/test_optimized.py | 226 +++++++++++++++--------------- 1 file changed, 113 insertions(+), 113 deletions(-) diff --git a/postgresql/test/test_optimized.py b/postgresql/test/test_optimized.py index 72d64839..b2a5d4b1 100644 --- a/postgresql/test/test_optimized.py +++ b/postgresql/test/test_optimized.py @@ -28,36 +28,36 @@ class test_optimized(unittest.TestCase): def test_consume_tuple_messages(self): ctm = optimized.consume_tuple_messages # expecting a tuple of pairs. - self.failUnlessRaises(TypeError, ctm, []) - self.failUnlessEqual(ctm(()), []) + self.assertRaises(TypeError, ctm, []) + self.assertEqual(ctm(()), []) # Make sure that the slicing is working. - self.failUnlessEqual(ctm(tuplemessages), [ + self.assertEqual(ctm(tuplemessages), [ (b'foo', b'bar'), (b'foo', None, b'bar'), ]) # Not really checking consume here, but we are validating that # it's properly propagating exceptions. - self.failUnlessRaises(ValueError, ctm, ((b'D', b'\xff\xff\xff\xfefoo'),)) - self.failUnlessRaises(ValueError, ctm, ((b'D', b'\x00\x00\x00\x04foo'),)) + self.assertRaises(ValueError, ctm, ((b'D', b'\xff\xff\xff\xfefoo'),)) + self.assertRaises(ValueError, ctm, ((b'D', b'\x00\x00\x00\x04foo'),)) def test_parse_tuple_message(self): ptm = optimized.parse_tuple_message - self.failUnlessRaises(TypeError, ptm, "stringzor") - self.failUnlessRaises(TypeError, ptm, 123) - self.failUnlessRaises(ValueError, ptm, b'') - self.failUnlessRaises(ValueError, ptm, b'0') + self.assertRaises(TypeError, ptm, "stringzor") + self.assertRaises(TypeError, ptm, 123) + self.assertRaises(ValueError, ptm, b'') + self.assertRaises(ValueError, ptm, b'0') notenoughdata = struct.pack('!H', 2) - self.failUnlessRaises(ValueError, ptm, notenoughdata) + self.assertRaises(ValueError, ptm, notenoughdata) wraparound = struct.pack('!HL', 2, 10) + (b'0' * 10) + struct.pack('!L', 0xFFFFFFFE) - self.failUnlessRaises(ValueError, ptm, wraparound) + self.assertRaises(ValueError, ptm, wraparound) oneatt_notenough = struct.pack('!HL', 2, 10) + (b'0' * 10) + struct.pack('!L', 15) - self.failUnlessRaises(ValueError, ptm, oneatt_notenough) + self.assertRaises(ValueError, ptm, oneatt_notenough) toomuchdata = struct.pack('!HL', 1, 3) + (b'0' * 10) - self.failUnlessRaises(ValueError, ptm, toomuchdata) + self.assertRaises(ValueError, ptm, toomuchdata) class faketup(tuple): def __new__(subtype, geeze): @@ -66,31 +66,31 @@ def __new__(subtype, geeze): return r zerodata = struct.pack('!H', 0) r = ptm(zerodata) - self.failUnlessRaises(AttributeError, getattr, r, 'foo') - self.failUnlessRaises(AttributeError, setattr, r, 'foo', 'bar') - self.failUnlessEqual(len(r), 0) + self.assertRaises(AttributeError, getattr, r, 'foo') + self.assertRaises(AttributeError, setattr, r, 'foo', 'bar') + self.assertEqual(len(r), 0) def test_process_tuple(self): def funpass(procs, tup, col): pass pt = optimized.process_tuple # tuple() requirements - self.failUnlessRaises(TypeError, pt, "foo", "bar", funpass) - self.failUnlessRaises(TypeError, pt, (), "bar", funpass) - self.failUnlessRaises(TypeError, pt, "foo", (), funpass) - self.failUnlessRaises(TypeError, pt, (), ("foo",), funpass) + self.assertRaises(TypeError, pt, "foo", "bar", funpass) + self.assertRaises(TypeError, pt, (), "bar", funpass) + self.assertRaises(TypeError, pt, "foo", (), funpass) + self.assertRaises(TypeError, pt, (), ("foo",), funpass) def test_pack_tuple_data(self): pit = optimized.pack_tuple_data - self.failUnlessEqual(pit((None,)), b'\xff\xff\xff\xff') - self.failUnlessEqual(pit((None,)*2), b'\xff\xff\xff\xff'*2) - self.failUnlessEqual(pit((None,)*3), b'\xff\xff\xff\xff'*3) - self.failUnlessEqual(pit((None,b'foo')), b'\xff\xff\xff\xff\x00\x00\x00\x03foo') - self.failUnlessEqual(pit((None,b'')), b'\xff\xff\xff\xff\x00\x00\x00\x00') - self.failUnlessEqual(pit((None,b'',b'bar')), b'\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x03bar') - self.failUnlessRaises(TypeError, pit, 1) - self.failUnlessRaises(TypeError, pit, (1,)) - self.failUnlessRaises(TypeError, pit, ("",)) + self.assertEqual(pit((None,)), b'\xff\xff\xff\xff') + self.assertEqual(pit((None,)*2), b'\xff\xff\xff\xff'*2) + self.assertEqual(pit((None,)*3), b'\xff\xff\xff\xff'*3) + self.assertEqual(pit((None,b'foo')), b'\xff\xff\xff\xff\x00\x00\x00\x03foo') + self.assertEqual(pit((None,b'')), b'\xff\xff\xff\xff\x00\x00\x00\x00') + self.assertEqual(pit((None,b'',b'bar')), b'\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x03bar') + self.assertRaises(TypeError, pit, 1) + self.assertRaises(TypeError, pit, (1,)) + self.assertRaises(TypeError, pit, ("",)) def test_int2(self): d = b'\x00\x01' @@ -100,19 +100,19 @@ def test_int2(self): sd = optimized.swap_int2_pack(1) nd = optimized.int2_pack(1) if sys.byteorder == 'little': - self.failUnlessEqual(1, s) - self.failUnlessEqual(256, n) - self.failUnlessEqual(d, sd) - self.failUnlessEqual(rd, nd) + self.assertEqual(1, s) + self.assertEqual(256, n) + self.assertEqual(d, sd) + self.assertEqual(rd, nd) else: - self.failUnlessEqual(1, n) - self.failUnlessEqual(256, s) - self.failUnlessEqual(d, nd) - self.failUnlessEqual(rd, sd) - self.failUnlessRaises(OverflowError, optimized.swap_int2_pack, 2**15) - self.failUnlessRaises(OverflowError, optimized.int2_pack, 2**15) - self.failUnlessRaises(OverflowError, optimized.swap_int2_pack, (-2**15)-1) - self.failUnlessRaises(OverflowError, optimized.int2_pack, (-2**15)-1) + self.assertEqual(1, n) + self.assertEqual(256, s) + self.assertEqual(d, nd) + self.assertEqual(rd, sd) + self.assertRaises(OverflowError, optimized.swap_int2_pack, 2**15) + self.assertRaises(OverflowError, optimized.int2_pack, 2**15) + self.assertRaises(OverflowError, optimized.swap_int2_pack, (-2**15)-1) + self.assertRaises(OverflowError, optimized.int2_pack, (-2**15)-1) def test_int4(self): d = b'\x00\x00\x00\x01' @@ -122,19 +122,19 @@ def test_int4(self): sd = optimized.swap_int4_pack(1) nd = optimized.int4_pack(1) if sys.byteorder == 'little': - self.failUnlessEqual(1, s) - self.failUnlessEqual(16777216, n) - self.failUnlessEqual(d, sd) - self.failUnlessEqual(rd, nd) + self.assertEqual(1, s) + self.assertEqual(16777216, n) + self.assertEqual(d, sd) + self.assertEqual(rd, nd) else: - self.failUnlessEqual(1, n) - self.failUnlessEqual(16777216, s) - self.failUnlessEqual(d, nd) - self.failUnlessEqual(rd, sd) - self.failUnlessRaises(OverflowError, optimized.swap_int4_pack, 2**31) - self.failUnlessRaises(OverflowError, optimized.int4_pack, 2**31) - self.failUnlessRaises(OverflowError, optimized.swap_int4_pack, (-2**31)-1) - self.failUnlessRaises(OverflowError, optimized.int4_pack, (-2**31)-1) + self.assertEqual(1, n) + self.assertEqual(16777216, s) + self.assertEqual(d, nd) + self.assertEqual(rd, sd) + self.assertRaises(OverflowError, optimized.swap_int4_pack, 2**31) + self.assertRaises(OverflowError, optimized.int4_pack, 2**31) + self.assertRaises(OverflowError, optimized.swap_int4_pack, (-2**31)-1) + self.assertRaises(OverflowError, optimized.int4_pack, (-2**31)-1) def test_int8(self): d = b'\x00\x00\x00\x00\x00\x00\x00\x01' @@ -144,21 +144,21 @@ def test_int8(self): sd = optimized.swap_int8_pack(1) nd = optimized.int8_pack(1) if sys.byteorder == 'little': - self.failUnlessEqual(0x1, s) - self.failUnlessEqual(0x100000000000000, n) - self.failUnlessEqual(d, sd) - self.failUnlessEqual(rd, nd) + self.assertEqual(0x1, s) + self.assertEqual(0x100000000000000, n) + self.assertEqual(d, sd) + self.assertEqual(rd, nd) else: - self.failUnlessEqual(0x1, n) - self.failUnlessEqual(0x100000000000000, s) - self.failUnlessEqual(d, nd) - self.failUnlessEqual(rd, sd) - self.failUnlessEqual(optimized.swap_int8_pack(-1), b'\xFF\xFF\xFF\xFF'*2) - self.failUnlessEqual(optimized.int8_pack(-1), b'\xFF\xFF\xFF\xFF'*2) - self.failUnlessRaises(OverflowError, optimized.swap_int8_pack, 2**63) - self.failUnlessRaises(OverflowError, optimized.int8_pack, 2**63) - self.failUnlessRaises(OverflowError, optimized.swap_int8_pack, (-2**63)-1) - self.failUnlessRaises(OverflowError, optimized.int8_pack, (-2**63)-1) + self.assertEqual(0x1, n) + self.assertEqual(0x100000000000000, s) + self.assertEqual(d, nd) + self.assertEqual(rd, sd) + self.assertEqual(optimized.swap_int8_pack(-1), b'\xFF\xFF\xFF\xFF'*2) + self.assertEqual(optimized.int8_pack(-1), b'\xFF\xFF\xFF\xFF'*2) + self.assertRaises(OverflowError, optimized.swap_int8_pack, 2**63) + self.assertRaises(OverflowError, optimized.int8_pack, 2**63) + self.assertRaises(OverflowError, optimized.swap_int8_pack, (-2**63)-1) + self.assertRaises(OverflowError, optimized.int8_pack, (-2**63)-1) # edge I/O int8_max = ((2**63) - 1) int8_min = (-(2**63)) @@ -166,10 +166,10 @@ def test_int8(self): max = optimized.int8_pack(int8_max) swap_min = optimized.swap_int8_pack(int8_min) min = optimized.int8_pack(int8_min) - self.failUnlessEqual(optimized.swap_int8_unpack(swap_max), int8_max) - self.failUnlessEqual(optimized.int8_unpack(max), int8_max) - self.failUnlessEqual(optimized.swap_int8_unpack(swap_min), int8_min) - self.failUnlessEqual(optimized.int8_unpack(min), int8_min) + self.assertEqual(optimized.swap_int8_unpack(swap_max), int8_max) + self.assertEqual(optimized.int8_unpack(max), int8_max) + self.assertEqual(optimized.swap_int8_unpack(swap_min), int8_min) + self.assertEqual(optimized.int8_unpack(min), int8_min) def test_uint2(self): d = b'\x00\x01' @@ -179,21 +179,21 @@ def test_uint2(self): sd = optimized.swap_uint2_pack(1) nd = optimized.uint2_pack(1) if sys.byteorder == 'little': - self.failUnlessEqual(1, s) - self.failUnlessEqual(256, n) - self.failUnlessEqual(d, sd) - self.failUnlessEqual(rd, nd) + self.assertEqual(1, s) + self.assertEqual(256, n) + self.assertEqual(d, sd) + self.assertEqual(rd, nd) else: - self.failUnlessEqual(1, n) - self.failUnlessEqual(256, s) - self.failUnlessEqual(d, nd) - self.failUnlessEqual(rd, sd) - self.failUnlessRaises(OverflowError, optimized.swap_uint2_pack, -1) - self.failUnlessRaises(OverflowError, optimized.uint2_pack, -1) - self.failUnlessRaises(OverflowError, optimized.swap_uint2_pack, 2**16) - self.failUnlessRaises(OverflowError, optimized.uint2_pack, 2**16) - self.failUnlessEqual(optimized.uint2_pack(2**16-1), b'\xFF\xFF') - self.failUnlessEqual(optimized.swap_uint2_pack(2**16-1), b'\xFF\xFF') + self.assertEqual(1, n) + self.assertEqual(256, s) + self.assertEqual(d, nd) + self.assertEqual(rd, sd) + self.assertRaises(OverflowError, optimized.swap_uint2_pack, -1) + self.assertRaises(OverflowError, optimized.uint2_pack, -1) + self.assertRaises(OverflowError, optimized.swap_uint2_pack, 2**16) + self.assertRaises(OverflowError, optimized.uint2_pack, 2**16) + self.assertEqual(optimized.uint2_pack(2**16-1), b'\xFF\xFF') + self.assertEqual(optimized.swap_uint2_pack(2**16-1), b'\xFF\xFF') def test_uint4(self): d = b'\x00\x00\x00\x01' @@ -203,21 +203,21 @@ def test_uint4(self): sd = optimized.swap_uint4_pack(1) nd = optimized.uint4_pack(1) if sys.byteorder == 'little': - self.failUnlessEqual(1, s) - self.failUnlessEqual(16777216, n) - self.failUnlessEqual(d, sd) - self.failUnlessEqual(rd, nd) + self.assertEqual(1, s) + self.assertEqual(16777216, n) + self.assertEqual(d, sd) + self.assertEqual(rd, nd) else: - self.failUnlessEqual(1, n) - self.failUnlessEqual(16777216, s) - self.failUnlessEqual(d, nd) - self.failUnlessEqual(rd, sd) - self.failUnlessRaises(OverflowError, optimized.swap_uint4_pack, -1) - self.failUnlessRaises(OverflowError, optimized.uint4_pack, -1) - self.failUnlessRaises(OverflowError, optimized.swap_uint4_pack, 2**32) - self.failUnlessRaises(OverflowError, optimized.uint4_pack, 2**32) - self.failUnlessEqual(optimized.uint4_pack(2**32-1), b'\xFF\xFF\xFF\xFF') - self.failUnlessEqual(optimized.swap_uint4_pack(2**32-1), b'\xFF\xFF\xFF\xFF') + self.assertEqual(1, n) + self.assertEqual(16777216, s) + self.assertEqual(d, nd) + self.assertEqual(rd, sd) + self.assertRaises(OverflowError, optimized.swap_uint4_pack, -1) + self.assertRaises(OverflowError, optimized.uint4_pack, -1) + self.assertRaises(OverflowError, optimized.swap_uint4_pack, 2**32) + self.assertRaises(OverflowError, optimized.uint4_pack, 2**32) + self.assertEqual(optimized.uint4_pack(2**32-1), b'\xFF\xFF\xFF\xFF') + self.assertEqual(optimized.swap_uint4_pack(2**32-1), b'\xFF\xFF\xFF\xFF') def test_uint8(self): d = b'\x00\x00\x00\x00\x00\x00\x00\x01' @@ -227,21 +227,21 @@ def test_uint8(self): sd = optimized.swap_uint8_pack(1) nd = optimized.uint8_pack(1) if sys.byteorder == 'little': - self.failUnlessEqual(0x1, s) - self.failUnlessEqual(0x100000000000000, n) - self.failUnlessEqual(d, sd) - self.failUnlessEqual(rd, nd) + self.assertEqual(0x1, s) + self.assertEqual(0x100000000000000, n) + self.assertEqual(d, sd) + self.assertEqual(rd, nd) else: - self.failUnlessEqual(0x1, n) - self.failUnlessEqual(0x100000000000000, s) - self.failUnlessEqual(d, nd) - self.failUnlessEqual(rd, sd) - self.failUnlessRaises(OverflowError, optimized.swap_uint8_pack, -1) - self.failUnlessRaises(OverflowError, optimized.uint8_pack, -1) - self.failUnlessRaises(OverflowError, optimized.swap_uint8_pack, 2**64) - self.failUnlessRaises(OverflowError, optimized.uint8_pack, 2**64) - self.failUnlessEqual(optimized.uint8_pack((2**64)-1), b'\xFF\xFF\xFF\xFF'*2) - self.failUnlessEqual(optimized.swap_uint8_pack((2**64)-1), b'\xFF\xFF\xFF\xFF'*2) + self.assertEqual(0x1, n) + self.assertEqual(0x100000000000000, s) + self.assertEqual(d, nd) + self.assertEqual(rd, sd) + self.assertRaises(OverflowError, optimized.swap_uint8_pack, -1) + self.assertRaises(OverflowError, optimized.uint8_pack, -1) + self.assertRaises(OverflowError, optimized.swap_uint8_pack, 2**64) + self.assertRaises(OverflowError, optimized.uint8_pack, 2**64) + self.assertEqual(optimized.uint8_pack((2**64)-1), b'\xFF\xFF\xFF\xFF'*2) + self.assertEqual(optimized.swap_uint8_pack((2**64)-1), b'\xFF\xFF\xFF\xFF'*2) if __name__ == '__main__': from types import ModuleType From 3652cc151af7402a2185e1506b6614cef3f7ba85 Mon Sep 17 00:00:00 2001 From: James William Pye Date: Mon, 19 Sep 2011 12:37:35 -0500 Subject: [PATCH 25/54] Use raise . from cause to communicate the cause of TypeIO errors. Per Elvis' patch. Some additional changes were necessary to optimized's functools, but it ended up simplifying code by the removal of some PyErr_SetContext calls. --- postgresql/driver/pq3.py | 33 +++++++++--------- postgresql/port/optimized/functools.c | 50 +++++++-------------------- postgresql/python/functools.py | 9 +++-- postgresql/test/test_driver.py | 12 +++---- postgresql/test/test_protocol.py | 12 +++---- postgresql/test/test_types.py | 24 ++++++------- 6 files changed, 59 insertions(+), 81 deletions(-) diff --git a/postgresql/driver/pq3.py b/postgresql/driver/pq3.py index 0d953d35..29c7aba8 100644 --- a/postgresql/driver/pq3.py +++ b/postgresql/driver/pq3.py @@ -417,7 +417,7 @@ def record_io_factory(self, funpack = tuple(map(get1, column_io)) row_constructor = self.RowTypeFactory(attribute_map = attmap, composite_relid = composite_relid) - def raise_pack_tuple_error(procs, tup, itemnum): + def raise_pack_tuple_error(cause, procs, tup, itemnum): data = repr(tup[itemnum]) if len(data) > 80: # Be sure not to fill screen with noise. @@ -428,9 +428,9 @@ def raise_pack_tuple_error(procs, tup, itemnum): (b'M', fmt_errmsg('pack', itemnum, attnames[itemnum], typnames[itemnum], composite_name),), (b'W', data,), (b'P', str(itemnum),) - ))) + )), cause = cause) - def raise_unpack_tuple_error(procs, tup, itemnum): + def raise_unpack_tuple_error(cause, procs, tup, itemnum): data = repr(tup[itemnum]) if len(data) > 80: # Be sure not to fill screen with noise. @@ -441,7 +441,7 @@ def raise_unpack_tuple_error(procs, tup, itemnum): (b'M', fmt_errmsg('unpack', itemnum, attnames[itemnum], typnames[itemnum], composite_name),), (b'W', data,), (b'P', str(itemnum),), - ))) + )), cause = cause) def unpack_a_record(data, unpack = io_lib.record_unpack, @@ -731,12 +731,13 @@ def _process_tuple_chunk_Column(self, x, range = range): r = range(len(l)) try: return [unpack(l[i]) for i in r] - except: - try: - i = next(r) - except StopIteration: - i = len(l) - self._raise_column_tuple_error(self._output_io, (l[i],), 0) + except Exception: + cause = sys.exc_info()[1] + try: + i = next(r) + except StopIteration: + i = len(l) + self._raise_column_tuple_error(cause, self._output_io, (l[i],), 0) # Process the element.Tuple message in x for rows() def _process_tuple_chunk_Row(self, x, @@ -752,7 +753,7 @@ def _process_tuple_chunk_Row(self, x, def _process_tuple_chunk(self, x, proc = process_chunk): return proc(self._output_io, x, self._raise_column_tuple_error) - def _raise_column_tuple_error(self, procs, tup, itemnum): + def _raise_column_tuple_error(self, cause, procs, tup, itemnum): 'for column processing' # The element traceback will include the full list of parameters. data = repr(tup[itemnum]) @@ -775,7 +776,7 @@ def _raise_column_tuple_error(self, procs, tup, itemnum): (b'H', "Try casting the column to 'text'."), (b'P', str(itemnum)), )) - self.database.typio.raise_client_error(em, creator = self) + self.database.typio.raise_client_error(em, creator = self, cause = cause) @property def state(self): @@ -1302,7 +1303,7 @@ def _pq_parameters(self, parameters, proc = process_tuple): # process_tuple failed(exception). The parameters could not be packed. # This function is called with the given information in the context # of the original exception(to allow chaining). - def _raise_parameter_tuple_error(self, procs, tup, itemnum): + def _raise_parameter_tuple_error(self, cause, procs, tup, itemnum): # Find the SQL type name. This should *not* hit the server. typ = self.database.typio.sql_type_from_oid( self.pg_parameter_types[itemnum] @@ -1325,11 +1326,11 @@ def _raise_parameter_tuple_error(self, procs, tup, itemnum): (b'H', "Try casting the parameter to 'text', then to the target type."), (b'P', str(itemnum)) )) - self.database.typio.raise_client_error(em, creator = self) + self.database.typio.raise_client_error(em, creator = self, cause = cause) ## # Similar to the parameter variant. - def _raise_column_tuple_error(self, procs, tup, itemnum): + def _raise_column_tuple_error(self, cause, procs, tup, itemnum): # Find the SQL type name. This should *not* hit the server. typ = self.database.typio.sql_type_from_oid( self.pg_column_types[itemnum] @@ -1352,7 +1353,7 @@ def _raise_column_tuple_error(self, procs, tup, itemnum): (b'H', "Try casting the column to 'text'."), (b'P', str(itemnum)), )) - self.database.typio.raise_client_error(em, creator = self) + self.database.typio.raise_client_error(em, creator = self, cause = cause) @property def state(self) -> str: diff --git a/postgresql/port/optimized/functools.c b/postgresql/port/optimized/functools.c index 095a7b0c..45a5d75f 100644 --- a/postgresql/port/optimized/functools.c +++ b/postgresql/port/optimized/functools.c @@ -100,7 +100,6 @@ _process_tuple(PyObject *procs, PyObject *tup, PyObject *fail) * processed and therefore a generalized exception raised in the * context of the original is *very* useful. */ - Py_DECREF(rob); rob = NULL; @@ -109,26 +108,28 @@ _process_tuple(PyObject *procs, PyObject *tup, PyObject *fail) */ if (PyErr_ExceptionMatches(PyExc_Exception)) { - PyObject *failargs, *failedat; - PyObject *exc, *val, *tb; - PyObject *oldexc, *oldval, *oldtb; + PyObject *cause, *failargs, *failedat; + PyObject *exc, *tb; /* Store exception to set context after handler. */ - PyErr_Fetch(&oldexc, &oldval, &oldtb); - PyErr_NormalizeException(&oldexc, &oldval, &oldtb); + PyErr_Fetch(&exc, &cause, &tb); + PyErr_NormalizeException(&exc, &cause, &tb); + Py_XDECREF(exc); + Py_XDECREF(tb); failedat = PyLong_FromSsize_t(i); if (failedat != NULL) { - failargs = PyTuple_New(3); + failargs = PyTuple_New(4); if (failargs != NULL) { - /* args for the exception "handler" */ - PyTuple_SET_ITEM(failargs, 0, procs); + /* args for the exception "generalizer" */ + PyTuple_SET_ITEM(failargs, 0, cause); + PyTuple_SET_ITEM(failargs, 1, procs); Py_INCREF(procs); - PyTuple_SET_ITEM(failargs, 1, tup); + PyTuple_SET_ITEM(failargs, 2, tup); Py_INCREF(tup); - PyTuple_SET_ITEM(failargs, 2, failedat); + PyTuple_SET_ITEM(failargs, 3, failedat); r = PyObject_CallObject(fail, failargs); Py_DECREF(failargs); @@ -145,33 +146,6 @@ _process_tuple(PyObject *procs, PyObject *tup, PyObject *fail) Py_DECREF(failedat); } } - - PyErr_Fetch(&exc, &val, &tb); - PyErr_NormalizeException(&exc, &val, &tb); - - /* - * Reference BaseException here as the condition is merely - * *validating* that SetContext can be used. - */ - if (val != NULL && PyObject_IsInstance(val, PyExc_BaseException)) - { - /* Steals oldval reference */ - PyException_SetContext(val, oldval); - Py_XDECREF(oldexc); - Py_XDECREF(oldtb); - PyErr_Restore(exc, val, tb); - } - else - { - /* - * Fetch & NormalizeException failed somehow. - * Use the old exception... - */ - PyErr_Restore(oldexc, oldval, oldtb); - Py_XDECREF(exc); - Py_XDECREF(val); - Py_XDECREF(tb); - } } /* diff --git a/postgresql/python/functools.py b/postgresql/python/functools.py index 3e432ef5..02cf71f9 100644 --- a/postgresql/python/functools.py +++ b/postgresql/python/functools.py @@ -1,6 +1,7 @@ ## # python.functools ## +import sys from .decorlib import method def rsetattr(attr, val, ob): @@ -33,7 +34,7 @@ def __call__(self, r): # C implementation of the tuple processors. from ..port.optimized import process_tuple, process_chunk except ImportError: - def process_tuple(procs, tup, exception_handler, len = len, tuple = tuple): + def process_tuple(procs, tup, exception_handler, len = len, tuple = tuple, cause = None): """ Call each item in `procs` with the corresponding item in `tup` returning the result as `type`. @@ -57,8 +58,10 @@ def process_tuple(procs, tup, exception_handler, len = len, tuple = tuple): continue r[i] = procs[i](ob) except Exception: - # relying on __context__ - exception_handler(procs, tup, i) + cause = sys.exc_info()[1] + + if cause is not None: + exception_handler(cause, procs, tup, i) raise RuntimeError("process_tuple exception handler failed to raise") return tuple(r) diff --git a/postgresql/test/test_driver.py b/postgresql/test/test_driver.py index 6efce17e..eaac55a0 100644 --- a/postgresql/test/test_driver.py +++ b/postgresql/test/test_driver.py @@ -1252,10 +1252,10 @@ def testTypeIOError(self): # 'foo' is not a valid Decimal. # Expecting a double TupleError here, one from the composite pack # and one from the row pack. - self.assertTrue(isinstance(err.__context__, pg_exc.CompositeError)) + self.assertTrue(isinstance(err.__cause__, pg_exc.CompositeError)) self.assertEqual(int(err.details['position']), 0) # attribute number that the failure occurred on - self.assertEqual(int(err.__context__.details['position']), 0) + self.assertEqual(int(err.__cause__.details['position']), 0) else: self.fail("failed to raise TupleError") @@ -1278,7 +1278,7 @@ def raise_ThisError(arg): try: ps(decimal.Decimal("101")) except pg_exc.ColumnError as err: - self.assertTrue(isinstance(err.__context__, ThisError)) + self.assertTrue(isinstance(err.__cause__, ThisError)) # might be too inquisitive.... self.assertEqual(int(err.details['position']), 0) self.assertTrue('NUMERIC' in err.message) @@ -1289,11 +1289,11 @@ def raise_ThisError(arg): try: ps((decimal.Decimal("101"),)) except pg_exc.ColumnError as err: - self.assertTrue(isinstance(err.__context__, pg_exc.CompositeError)) - self.assertTrue(isinstance(err.__context__.__context__, ThisError)) + self.assertTrue(isinstance(err.__cause__, pg_exc.CompositeError)) + self.assertTrue(isinstance(err.__cause__.__cause__, ThisError)) # might be too inquisitive.... self.assertEqual(int(err.details['position']), 0) - self.assertEqual(int(err.__context__.details['position']), 0) + self.assertEqual(int(err.__cause__.details['position']), 0) self.assertTrue('test_tuple_error' in err.message) else: self.fail("failed to raise TupleError from reception") diff --git a/postgresql/test/test_protocol.py b/postgresql/test/test_protocol.py index bd92513f..1a216477 100644 --- a/postgresql/test/test_protocol.py +++ b/postgresql/test/test_protocol.py @@ -101,7 +101,7 @@ def test_getvalue(self): b.write(nd) self.assertEqual(b.getvalue(), nd) b.write(packl(4)) - self.assertEqual(b.read(), [(b'N', b'')]) + self.assertEqual(list(b.read()), [(b'N', b'')]) self.assertEqual(b.getvalue(), b'') # partial; read one message to exercise # that the appropriate fragment of the first @@ -112,20 +112,20 @@ def test_getvalue(self): second = b'z' + packl(len(second_body) + 4) + second_body b.write(first + second) self.assertEqual(b.getvalue(), first + second) - self.assertEqual(b.read(1), [(b'v', first_body)]) + self.assertEqual(list(b.read(1)), [(b'v', first_body)]) self.assertEqual(b.getvalue(), second) - self.assertEqual(b.read(1), [(b'z', second_body)]) + self.assertEqual(list(b.read(1)), [(b'z', second_body)]) # now, with a third full message in the next chunk third_body = (b'9876' * 10) third = b'3' + packl(len(third_body) + 4) + third_body b.write(first + second) b.write(third) self.assertEqual(b.getvalue(), first + second + third) - self.assertEqual(b.read(1), [(b'v', first_body)]) + self.assertEqual(list(b.read(1)), [(b'v', first_body)]) self.assertEqual(b.getvalue(), second + third) - self.assertEqual(b.read(1), [(b'z', second_body)]) + self.assertEqual(list(b.read(1)), [(b'z', second_body)]) self.assertEqual(b.getvalue(), third) - self.assertEqual(b.read(1), [(b'3', third_body)]) + self.assertEqual(list(b.read(1)), [(b'3', third_body)]) self.assertEqual(b.getvalue(), b'') ## diff --git a/postgresql/test/test_types.py b/postgresql/test/test_types.py index 5399a53f..51f66437 100644 --- a/postgresql/test/test_types.py +++ b/postgresql/test/test_types.py @@ -340,27 +340,27 @@ def testExpectIO(self, samples): ) class test_io(unittest.TestCase): - def test_process_tuple(self, pt = process_tuple): - def funpass(procs, tup, col): + def test_process_tuple(self): + def funpass(cause, procs, tup, col): pass - self.assertEqual(tuple(pt((),(), funpass)), ()) - self.assertEqual(tuple(pt((int,),("100",), funpass)), (100,)) - self.assertEqual(tuple(pt((int,int),("100","200"), funpass)), (100,200)) - self.assertEqual(tuple(pt((int,int),(None,"200"), funpass)), (None,200)) - self.assertEqual(tuple(pt((int,int,int),(None,None,"200"), funpass)), (None,None,200)) + self.assertEqual(tuple(process_tuple((),(), funpass)), ()) + self.assertEqual(tuple(process_tuple((int,),("100",), funpass)), (100,)) + self.assertEqual(tuple(process_tuple((int,int),("100","200"), funpass)), (100,200)) + self.assertEqual(tuple(process_tuple((int,int),(None,"200"), funpass)), (None,200)) + self.assertEqual(tuple(process_tuple((int,int,int),(None,None,"200"), funpass)), (None,None,200)) # The exception handler must raise. - self.assertRaises(RuntimeError, pt, (int,), ("foo",), funpass) + self.assertRaises(RuntimeError, process_tuple, (int,), ("foo",), funpass) class ThisError(Exception): pass data = [] - def funraise(procs, tup, col): + def funraise(cause, procs, tup, col): data.append((procs, tup, col)) - raise ThisError - self.assertRaises(ThisError, pt, (int,), ("foo",), funraise) + raise ThisError from cause + self.assertRaises(ThisError, process_tuple, (int,), ("foo",), funraise) self.assertEqual(data[0], ((int,), ("foo",), 0)) del data[0] - self.assertRaises(ThisError, pt, (int,int), ("100","bar"), funraise) + self.assertRaises(ThisError, process_tuple, (int,int), ("100","bar"), funraise) self.assertEqual(data[0], ((int,int), ("100","bar"), 1)) def testExpectations(self): From cf0294c6aa09230b4b4456839a8493558a0cfb46 Mon Sep 17 00:00:00 2001 From: James William Pye Date: Tue, 20 Sep 2011 19:15:30 -0500 Subject: [PATCH 26/54] sphinx 1.1 supports Python 3 now--well, almost. --- postgresql/documentation/modules.txt | 93 ++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 postgresql/documentation/modules.txt diff --git a/postgresql/documentation/modules.txt b/postgresql/documentation/modules.txt new file mode 100644 index 00000000..133ce779 --- /dev/null +++ b/postgresql/documentation/modules.txt @@ -0,0 +1,93 @@ +Modules +======= + +Modules intended for general use. + +:mod:`postgresql` +----------------- + +.. automodule:: postgresql +.. autodata:: version +.. autodata:: version_info +.. autofunction:: open + + +:mod:`postgresql.sys` +--------------------- + +.. automodule:: + postgresql.sys + :members: + :show-inheritance: + + +:mod:`postgresql.string` +------------------------ + +.. automodule:: + postgresql.string + :members: + :show-inheritance: + + +:mod:`postgresql.exceptions` +---------------------------- + +.. automodule:: + postgresql.exceptions + :members: + :show-inheritance: + + +:mod:`postgresql.temporal` +-------------------------- + +.. automodule:: + postgresql.temporal + :members: + :show-inheritance: + + +:mod:`postgresql.installation` +------------------------------ + +.. automodule:: + postgresql.installation + :members: + :show-inheritance: + + +:mod:`postgresql.cluster` +------------------------- + +.. automodule:: + postgresql.cluster + :members: + :show-inheritance: + + +:mod:`postgresql.copyman` +------------------------- + +.. automodule:: + postgresql.copyman + :members: + :show-inheritance: + + +:mod:`postgresql.alock` +----------------------- + +.. automodule:: + postgresql.alock + :members: + :show-inheritance: + + +:mod:`postgresql.api` +--------------------- + +.. automodule:: + postgresql.api + :members: + :show-inheritance: From c791ae6a1b16128c84c19b506d2de5ebb90da577 Mon Sep 17 00:00:00 2001 From: James William Pye Date: Tue, 20 Sep 2011 19:18:52 -0500 Subject: [PATCH 27/54] Place it into sphinx/ as it's a sphinx only file. --- postgresql/documentation/sphinx/build.sh | 1 + postgresql/documentation/sphinx/modules.rst | 93 +++++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 postgresql/documentation/sphinx/modules.rst diff --git a/postgresql/documentation/sphinx/build.sh b/postgresql/documentation/sphinx/build.sh index 2826aa43..ef482e0b 100755 --- a/postgresql/documentation/sphinx/build.sh +++ b/postgresql/documentation/sphinx/build.sh @@ -2,5 +2,6 @@ mkdir -p ../html/doctrees cp ../*.txt ./ cp index.rst index.txt +cp modules.rst modules.txt sphinx-build -E -b html -d ../html/doctrees . ../html cd ../html && pwd diff --git a/postgresql/documentation/sphinx/modules.rst b/postgresql/documentation/sphinx/modules.rst new file mode 100644 index 00000000..133ce779 --- /dev/null +++ b/postgresql/documentation/sphinx/modules.rst @@ -0,0 +1,93 @@ +Modules +======= + +Modules intended for general use. + +:mod:`postgresql` +----------------- + +.. automodule:: postgresql +.. autodata:: version +.. autodata:: version_info +.. autofunction:: open + + +:mod:`postgresql.sys` +--------------------- + +.. automodule:: + postgresql.sys + :members: + :show-inheritance: + + +:mod:`postgresql.string` +------------------------ + +.. automodule:: + postgresql.string + :members: + :show-inheritance: + + +:mod:`postgresql.exceptions` +---------------------------- + +.. automodule:: + postgresql.exceptions + :members: + :show-inheritance: + + +:mod:`postgresql.temporal` +-------------------------- + +.. automodule:: + postgresql.temporal + :members: + :show-inheritance: + + +:mod:`postgresql.installation` +------------------------------ + +.. automodule:: + postgresql.installation + :members: + :show-inheritance: + + +:mod:`postgresql.cluster` +------------------------- + +.. automodule:: + postgresql.cluster + :members: + :show-inheritance: + + +:mod:`postgresql.copyman` +------------------------- + +.. automodule:: + postgresql.copyman + :members: + :show-inheritance: + + +:mod:`postgresql.alock` +----------------------- + +.. automodule:: + postgresql.alock + :members: + :show-inheritance: + + +:mod:`postgresql.api` +--------------------- + +.. automodule:: + postgresql.api + :members: + :show-inheritance: From 78672256c88ab6117aedc3a039509c312cd83853 Mon Sep 17 00:00:00 2001 From: James William Pye Date: Tue, 20 Sep 2011 19:21:20 -0500 Subject: [PATCH 28/54] Update. --- .../documentation/html/_sources/changes.txt | 3 + .../documentation/html/_sources/copyman.txt | 2 - .../documentation/html/_sources/index.txt | 1 + .../documentation/html/_sources/notifyman.txt | 2 - postgresql/documentation/html/admin.html | 29 +- postgresql/documentation/html/alock.html | 41 +- postgresql/documentation/html/bin.html | 39 +- postgresql/documentation/html/changes.html | 39 +- .../documentation/html/clientparameters.html | 93 +- postgresql/documentation/html/cluster.html | 31 +- postgresql/documentation/html/copyman.html | 55 +- .../documentation/html/doctrees/admin.doctree | Bin 8155 -> 8552 bytes .../documentation/html/doctrees/alock.doctree | Bin 31615 -> 32300 bytes .../documentation/html/doctrees/bin.doctree | Bin 47619 -> 48492 bytes .../html/doctrees/changes.doctree | Bin 19867 -> 20846 bytes .../html/doctrees/clientparameters.doctree | Bin 85653 -> 87651 bytes .../html/doctrees/cluster.doctree | Bin 117655 -> 120446 bytes .../html/doctrees/copyman.doctree | Bin 69169 -> 70101 bytes .../html/doctrees/driver.doctree | Bin 414116 -> 422472 bytes .../html/doctrees/environment.pickle | Bin 62755 -> 97799 bytes .../html/doctrees/gotchas.doctree | Bin 23892 -> 24576 bytes .../documentation/html/doctrees/index.doctree | Bin 9504 -> 9992 bytes .../documentation/html/doctrees/lib.doctree | Bin 101375 -> 103489 bytes .../html/doctrees/notifyman.doctree | Bin 55629 -> 56224 bytes postgresql/documentation/html/driver.html | 179 +-- postgresql/documentation/html/genindex.html | 1142 ++++++++++++++++- postgresql/documentation/html/gotchas.html | 23 +- postgresql/documentation/html/index.html | 36 +- postgresql/documentation/html/lib.html | 41 +- postgresql/documentation/html/notifyman.html | 39 +- 30 files changed, 1521 insertions(+), 274 deletions(-) diff --git a/postgresql/documentation/html/_sources/changes.txt b/postgresql/documentation/html/_sources/changes.txt index 4afe2ee0..4de9a2da 100644 --- a/postgresql/documentation/html/_sources/changes.txt +++ b/postgresql/documentation/html/_sources/changes.txt @@ -1,6 +1,9 @@ Changes ======= +1.0.3 in development +-------------------- + 1.0.2 released on 2010-09-18 ---------------------------- diff --git a/postgresql/documentation/html/_sources/copyman.txt b/postgresql/documentation/html/_sources/copyman.txt index 7fab080b..37304937 100644 --- a/postgresql/documentation/html/_sources/copyman.txt +++ b/postgresql/documentation/html/_sources/copyman.txt @@ -4,8 +4,6 @@ Copy Management *************** -.. warning:: `postgresql.copyman` is a new feature in v1.0. - The `postgresql.copyman` module provides a way to quickly move COPY data coming from one connection to many connections. Alternatively, it can be sourced by arbitrary iterators and target arbitrary callables. diff --git a/postgresql/documentation/html/_sources/index.txt b/postgresql/documentation/html/_sources/index.txt index 2ce60a55..e0b16d73 100644 --- a/postgresql/documentation/html/_sources/index.txt +++ b/postgresql/documentation/html/_sources/index.txt @@ -32,6 +32,7 @@ Reference :maxdepth: 2 bin + modules Sample Code ----------- diff --git a/postgresql/documentation/html/_sources/notifyman.txt b/postgresql/documentation/html/_sources/notifyman.txt index f258adbe..d774ee52 100644 --- a/postgresql/documentation/html/_sources/notifyman.txt +++ b/postgresql/documentation/html/_sources/notifyman.txt @@ -4,8 +4,6 @@ Notification Management *********************** -.. warning:: `postgresql.notifyman` is a new feature in v1.0. - Relevant SQL commands: `NOTIFY `_, `LISTEN `_, `UNLISTEN `_. diff --git a/postgresql/documentation/html/admin.html b/postgresql/documentation/html/admin.html index c1771ebc..2fa7b0ce 100644 --- a/postgresql/documentation/html/admin.html +++ b/postgresql/documentation/html/admin.html @@ -3,17 +3,20 @@ + - Administration — py-postgresql v1.0.2 documentation + Administration — py-postgresql 1.1.0dev documentation + + - + @@ -33,13 +36,16 @@

Navigation

  • index
  • +
  • + modules |
  • next |
  • previous |
  • -
  • py-postgresql v1.0.2 documentation »
  • +
  • py-postgresql 1.1.0dev documentation »
  • @@ -71,18 +77,18 @@

    Installation¶

    These environment variables effect the operation of the package:

    - +
    - +
    PGINSTALLATION
    PGINSTALLATION The path to the pg_config executable of the installation to use by default.
    -
    + @@ -135,19 +141,22 @@

    Navigation

  • index
  • +
  • + modules |
  • next |
  • previous |
  • -
  • py-postgresql v1.0.2 documentation »
  • +
  • py-postgresql 1.1.0dev documentation »
  • \ No newline at end of file diff --git a/postgresql/documentation/html/alock.html b/postgresql/documentation/html/alock.html index 3feed2d9..52632864 100644 --- a/postgresql/documentation/html/alock.html +++ b/postgresql/documentation/html/alock.html @@ -3,17 +3,20 @@ + - Advisory Locks — py-postgresql v1.0.2 documentation + Advisory Locks — py-postgresql 1.1.0dev documentation + + - + @@ -33,13 +36,16 @@

    Navigation

  • index
  • +
  • + modules |
  • next |
  • previous |
  • -
  • py-postgresql v1.0.2 documentation »
  • +
  • py-postgresql 1.1.0dev documentation »
  • @@ -60,16 +66,16 @@

    Navigation

    using table locks may cause interference with other operations that can be safely performed alongside the application-level, exclusive operation.

    Advisory locks can be used by directly executing the stored procedures in the -database or by using the postgresql.alock.ALock subclasses, which +database or by using the postgresql.alock.ALock subclasses, which provides a context manager that uses those stored procedures.

    Currently, only two subclasses exist. Each represents the lock mode supported by PostgreSQL’s advisory locks:

    -
      +
      • postgresql.alock.ShareLock
      • postgresql.alock.ExclusiveLock
      -
    +

    Acquiring ALocks¶

    An ALock instance represents a sequence of advisory locks. A single ALock can @@ -84,7 +90,7 @@

    Acquiring ALocks>>> l.release()

    -

    postgresql.alock.ALock is similar to threading.RLock; in +

    postgresql.alock.ALock is similar to threading.RLock; in order for an ALock to be released, it must be released the number of times it has been acquired. ALocks are associated with and survived by their session. Much like how RLocks are associated with the thread they are acquired in: @@ -108,7 +114,7 @@

    ALocks +
    postgresql.alock.ExclusiveLock(database, *identifiers)
    Instantiate an ALock object representing the identifiers for use with the database. Exclusive locks will conflict with other exclusive locks and share @@ -119,12 +125,12 @@

    ALocks

    ALock Interface Points¶

    -

    Methods and properties available on postgresql.alock.ALock instances:

    +

    Methods and properties available on postgresql.alock.ALock instances:

    -
    +
    alock.acquire(blocking = True)

    Acquire the advisory locks represented by the alock object. If blocking is True, the default, the method will block until locks on all the @@ -144,7 +150,7 @@

    ALock Interface Pointsalock.__exit__(typ, val, tb)
    Alias to release; context manager protocol.

    -
    +

    @@ -201,19 +207,22 @@

    Navigation

  • index
  • +
  • + modules |
  • next |
  • previous |
  • -
  • py-postgresql v1.0.2 documentation »
  • +
  • py-postgresql 1.1.0dev documentation »
  • \ No newline at end of file diff --git a/postgresql/documentation/html/bin.html b/postgresql/documentation/html/bin.html index 4bf5c4f9..2e1860ee 100644 --- a/postgresql/documentation/html/bin.html +++ b/postgresql/documentation/html/bin.html @@ -3,17 +3,20 @@ + - Commands — py-postgresql v1.0.2 documentation + Commands — py-postgresql 1.1.0dev documentation + + - + + @@ -32,10 +36,16 @@

    Navigation

  • index
  • +
  • + modules |
  • +
  • + next |
  • previous |
  • -
  • py-postgresql v1.0.2 documentation »
  • +
  • py-postgresql 1.1.0dev documentation »
  • @@ -55,7 +65,7 @@

    postgresql.bin.pg_python +

    pg_python Usage¶

    Usage: postgresql.bin.pg_python [connection options] [script] ...

    @@ -283,6 +293,9 @@

    Table Of Contents

    Previous topic

    Changes

    +

    Next topic

    +

    Modules

    This Page

  • index
  • +
  • + modules |
  • +
  • + next |
  • previous |
  • -
  • py-postgresql v1.0.2 documentation »
  • +
  • py-postgresql 1.1.0dev documentation »
  • \ No newline at end of file diff --git a/postgresql/documentation/html/changes.html b/postgresql/documentation/html/changes.html index ce0ca938..f84c2fc6 100644 --- a/postgresql/documentation/html/changes.html +++ b/postgresql/documentation/html/changes.html @@ -3,17 +3,20 @@ + - Changes — py-postgresql v1.0.2 documentation + Changes — py-postgresql 1.1.0dev documentation + + - + @@ -33,13 +36,16 @@

    Navigation

  • index
  • +
  • + modules |
  • next |
  • previous |
  • -
  • py-postgresql v1.0.2 documentation »
  • +
  • py-postgresql 1.1.0dev documentation »
  • @@ -50,10 +56,13 @@

    Navigation

    Changes¶

    +
    +

    1.0.3 in development¶

    +

    1.0.2 released on 2010-09-18¶

    -
      +
      • Add support for DOMAINs in registered composites. (Elvis Pranskevichus)
      • Properly raise StopIteration in Cursor.__next__. (Elvis Pranskevichus)
      • Add Cluster Management documentation.
      • @@ -62,24 +71,24 @@

        1.0.2 released on 2010-09-18

        1.0.1 released on 2010-04-24¶

        -
          +
          • Fix unpacking of array NULLs. (Elvis Pranskevichus)
          • Fix .first()’s handling of counts and commands. Bad logic caused zero-counts to return the command tag.
          • Don’t interrupt and close a temporal connection if it’s not open.
          • Use the Driver’s typio attribute for TypeIO overrides. (Elvis Pranskevichus)
          -
        +

    1.0 released on 2010-03-27¶

    -
    @@ -100,7 +106,7 @@

    postgresql.clientparameters.collectcollect will accept:

    -
    +
    +

    If prompt_title is not set to None, it will prompt for the password when instructed to do by the prompt_password key in the parameters:

    When resolution occurs, the prompt_password, prompt_title, and pgpassfile keys are removed from the given parameters dictionary:

    [PGDATA] referenced in the above table is a directory whose path is platform dependent. On most systems, it is "$HOME/.postgresql", but on Windows based systems it is "%APPDATA%\postgresql"

    @@ -266,65 +272,65 @@

    Defaultsenviron_prefix and the keyword that it will be mapped to:

    - +
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
    Environment Variable
    Environment Variable Keyword
    PGUSER
    PGUSER 'user'
    PGDATABASE
    PGDATABASE 'database'
    PGHOST
    PGHOST 'host'
    PGPORT
    PGPORT 'port'
    PGPASSWORD
    PGPASSWORD 'password'
    PGSSLMODE
    PGSSLMODE 'sslmode'
    PGSSLKEY
    PGSSLKEY 'sslkey'
    PGCONNECT_TIMEOUT
    PGCONNECT_TIMEOUT 'connect_timeout'
    PGREALM
    PGREALM 'kerberos4_realm'
    PGKRBSRVNAME
    PGKRBSRVNAME 'kerberos5_service'
    PGPASSFILE
    PGPASSFILE 'pgpassfile'
    PGTZ
    PGTZ 'settings' = {'timezone': }
    PGDATESTYLE
    PGDATESTYLE 'settings' = {'datestyle': }
    PGCLIENTENCODING
    PGCLIENTENCODING 'settings' = {'client_encoding': }
    PGGEQO
    PGGEQO 'settings' = {'geqo': }
    -
    +

    \ No newline at end of file diff --git a/postgresql/documentation/html/cluster.html b/postgresql/documentation/html/cluster.html index 052f3a15..3bb3fc9d 100644 --- a/postgresql/documentation/html/cluster.html +++ b/postgresql/documentation/html/cluster.html @@ -3,17 +3,20 @@ + - Cluster Management — py-postgresql v1.0.2 documentation + Cluster Management — py-postgresql 1.1.0dev documentation + + - + @@ -33,13 +36,16 @@

    Navigation

  • index
  • +
  • + modules |
  • next |
  • previous |
  • -
  • py-postgresql v1.0.2 documentation »
  • +
  • py-postgresql 1.1.0dev documentation »
  • @@ -70,7 +76,7 @@

    Navigation

    Installation Interface Points¶

    -
    +
    Installation(info)

    Instantiate an Installation using the given information. Normally, this information is extracted from a pg_config executable using @@ -142,7 +148,7 @@

    Installation Interface Points @@ -249,7 +255,7 @@

    Controlling ClustersCluster Interface Points¶

    Methods and properties available on postgresql.cluster.Cluster instances:

    -
    +
    Cluster(installation, data_directory)

    Create a postgresql.cluster.Cluster object for the specified postgresql.installation.Installation, and data_directory.

    @@ -375,7 +381,7 @@

    Cluster Interface Points index +
  • + modules |
  • next |
  • previous |
  • -
  • py-postgresql v1.0.2 documentation »
  • +
  • py-postgresql 1.1.0dev documentation »
  • \ No newline at end of file diff --git a/postgresql/documentation/html/copyman.html b/postgresql/documentation/html/copyman.html index c735460b..90d26966 100644 --- a/postgresql/documentation/html/copyman.html +++ b/postgresql/documentation/html/copyman.html @@ -3,17 +3,20 @@ + - Copy Management — py-postgresql v1.0.2 documentation + Copy Management — py-postgresql 1.1.0dev documentation + + - + @@ -33,13 +36,16 @@

    Navigation

  • index
  • +
  • + modules |
  • next |
  • previous |
  • -
  • py-postgresql v1.0.2 documentation »
  • +
  • py-postgresql 1.1.0dev documentation »
  • @@ -50,10 +56,6 @@

    Navigation

    Copy Management¶

    -
    -

    Warning

    -

    postgresql.copyman is a new feature in v1.0.

    -

    The postgresql.copyman module provides a way to quickly move COPY data coming from one connection to many connections. Alternatively, it can be sourced by arbitrary iterators and target arbitrary callables.

    @@ -112,7 +114,7 @@

    Manager Interface Points +

    +
    @@ -193,13 +195,13 @@

    Receiver Faults¶

    The following attributes exist on postgresql.copyman.ReceiverFault instances:

    -
    +
    ReceiverFault.manager
    The subject postgresql.copyman.CopyManager instance.
    ReceiverFault.faults
    A dictionary mapping the Receiver to the exception raised by that Receiver.
    -
    +

    Reconciliation¶

    @@ -247,13 +249,13 @@

    Producer Faults¶

    The following attributes exist on postgresql.copyman.ProducerFault instances:

    -
    +
    ReceiverFault.manager
    The subject postgresql.copyman.CopyManager.
    ReceiverFault.__context__
    The original exception raised by the Producer.
    -
    +
    @@ -268,7 +270,7 @@

    Failures¶

    The following properties exist on postgresql.copyman.CopyFail exceptions:

    -
    +
    CopyFail.manager
    The Manager whose COPY operation failed.
    CopyFail.receiver_faults
    @@ -278,26 +280,26 @@

    CopyFail PropertiesCopyFail.producer_fault
    The exception Raised by the postgresql.copyman.Producer. None if none.

    -
    +

    Producers¶

    The following Producers are available:

    -
    +
    postgresql.copyman.StatementProducer(postgresql.api.Statement)
    Given a Statement producing COPY data, construct a Producer.
    postgresql.copyman.IteratorProducer(collections.Iterator)
    Given an Iterator producing chunks of COPY lines, construct a Producer to manage the data coming from the iterator.
    -
    +

    Receivers¶

    -
    +
    postgresql.copyman.StatementReceiver(postgresql.api.Statement)
    Given a Statement producing COPY data, construct a Producer.
    postgresql.copyman.CallReceiver(callable)
    @@ -305,14 +307,14 @@

    Receivers

    Terminology¶

    The following terms are regularly used to describe the implementation and processes of the postgresql.copyman module:

    -
    +
    Manager
    The object used to manage data coming from a Producer and being given to the Receivers. It also manages the necessary initialization and finalization steps @@ -340,7 +342,7 @@

    Terminology index +
  • + modules |
  • next |
  • previous |
  • -
  • py-postgresql v1.0.2 documentation »
  • +
  • py-postgresql 1.1.0dev documentation »
  • \ No newline at end of file diff --git a/postgresql/documentation/html/doctrees/admin.doctree b/postgresql/documentation/html/doctrees/admin.doctree index 21813ed414fd67c31fee331c43efeca552d90714..fc54f452f825c08c1c194cdd13149d2a9c73b97e 100644 GIT binary patch literal 8552 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 literal 8155 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 diff --git a/postgresql/documentation/html/doctrees/alock.doctree b/postgresql/documentation/html/doctrees/alock.doctree index 48d3c74a997c93d237d000a7498a1dd411de390a..c04bcaf119752e577e7ee20d1967f04ca16792cf 100644 GIT binary patch literal 32300 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 diff --git a/postgresql/documentation/html/doctrees/bin.doctree b/postgresql/documentation/html/doctrees/bin.doctree index 15838a6fa9dc5de96b76ed217dfb791a419a8e65..db16cb6172c64d409db1df3a93f7f0002037cbbf 100644 GIT binary patch literal 48492 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 literal 47619 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�r<8zfWIKB`vXucG(ihU(yuzU?_uuO{v%Qq_U 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 Rg|2eo6EcDOR5k0X|3BgC@@N16 diff --git a/postgresql/documentation/html/doctrees/changes.doctree b/postgresql/documentation/html/doctrees/changes.doctree index 97c278c7100c48cfbdca756a583fd571364546c7..77101468d8d2874fd8272f7e9757f5b5bfd5519d 100644 GIT binary patch literal 20846 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 K&8z-k=6?ZN`@9bT literal 19867 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 JNF@hz{|9!IBW?fy diff --git a/postgresql/documentation/html/doctrees/clientparameters.doctree b/postgresql/documentation/html/doctrees/clientparameters.doctree index ad46cbfdc83d1a28098ca368cf33676075b36d1a..4782a2b7a29b4d25322a3b3b68c1bb96ddaf06a0 100644 GIT binary patch literal 87651 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 diff --git a/postgresql/documentation/html/doctrees/cluster.doctree b/postgresql/documentation/html/doctrees/cluster.doctree index 3db74db52b46bfc49a24d6861242456830f2552b..e4f4a10eea64580ce343bcf237f51ef9c637ff04 100644 GIT binary patch literal 120446 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 VT%=d8OE1O7EM4a6Iyy#H{U5OPP455z literal 117655 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 IwYvQO0bL!luK)l5 literal 414116 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 F{Xc5)AVmNG diff --git a/postgresql/documentation/html/doctrees/environment.pickle b/postgresql/documentation/html/doctrees/environment.pickle index 73034a694691cb8e0144b1b82dc58f15bd6ed2e2..425b9b3c32d5db64966c5bdfdec8f71075457b61 100644 GIT binary patch literal 97799 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 U_y=q?U6>{?+RR7VJhA8h0cm)pEC2ui literal 62755 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 MPOh`lv#ZMf2WrC}a{vGU diff --git a/postgresql/documentation/html/doctrees/gotchas.doctree b/postgresql/documentation/html/doctrees/gotchas.doctree index 6a795a0188eaeccde69e43ba3731f8b185bbcf13..8c37312bfff71ce13879e452512a7ec6d9c10c9b 100644 GIT binary patch literal 24576 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 bE;F*fkVb$Tm<6~+^xya$+uv1weDHq(YE+8% literal 23892 zcmeI4cYIsb*~dd5OBsZ{i<&T;G?Jk}O9N$NNC5*$1cu_;vUF|9ktN-8r8uU&1=`X= zH{FF!x=Z(_rF-wacT4x)yM4dE=iDpFPUwf-@%9hj$2#*_=XuU~&bWMjsoW^FTh&^W zuQ$p;l+n+rpx(-aJFU4QoF9if_Z61Zi&H^srWr)xE^)Y^Z|JCb^X8RmRf>%S^-`l; ztxsg5pw%*1X|!wQ>{yU3)>?rJ%GpxU1>@~nZ6;heICKnE>y1{m6h!N?(?wUO4*wPF z30!t6h@#>|5M`;AZ8aL%t$`bBL_xS{aOgZL8y?x|YKwka*|BQ9=w`A}yV-2G zR<>Ht(nz-Ks?@R;+Vvz4M93{VSDc}3x^qFP;mT3CcyMSD?M^gWrAjdhmkbVVQa3cy zj?@T6o5d)arf{|zWvN8X*1GH%-B(-LasynUC`*AY+38A9r=A$mY(%XI2hVDGk58Bx z96Fk&qn0byCm;@v2F^8HQlZu;mPcG;I_g`KCDDGCD((6f62hf}Lq|||tXSF-)rwIi z3$m_Qg2SFuV}bf?xuDpB(pr^_qFBCcuwB?KYL7*&Y703x>LcY~JPMb`;flhFX3<5# zNXqeW*WqwwVMVD8fk-xLv|T9(cN;8Z%3@VfwZq*93%eKFt;Tqx(Sqt=Bx)61E8OF( zoeGPjCRI4PXB_U;S6Ns%%Iioj)sbAHBe}?QBsUi15*^8Pb!6|#qQX&$hU8KO$svWD z=|?WbHiv%X(2rcIANy1m7tS;7$R*m5^V*S1G$2>4=MZboOT+5-XoqsWc35YrcI;bO zQdpGg#(tGdVWXOmW>~RQGji1^muN-~#mH4#IVnaCLUK}!oD_p<2r1W9j0BZ%|H{(B z5s6ylI%<&=mmcJ#7P*GY*$=N2;Q^Ipg(Er&k?Sgik!A{!OB5p4Rfq%Ig~g>xwN^&R z;X%XUJ?2_~2<=AFnebo?KsFBVi2-oM=|mk?73LKdqBm$rxVkdGurNtKWNtGqXu5X2 ziggGw;h{FB`Xg8BZ@7v6=EQiTT`#+t{^kthxDM#yN`IF@{i!)JnkiSx0@;#g}LD{ zUszOPI7R&G9}bTwEEYd8S5bK6aCq;+&Qj;2hQp&P`xOfde63@K!~0a06x)SeYSnrW z-uJBeG?`e<@Yu@y3QWCU-&}Su{Aw^_Jv==w4v+7vtTL-}Mq+jDUs+wrRt~8gURhIE zU}eJ-D&Tu!Uj-~rs({?d6;L{*0yd{sz~QuZg{~_}ho{f&Z*#B>8$K|rlQZDenQ^#* z&MWHhxb|4FJvO%{!Yxj?VzZJ79{{#z#o^h)_RCnG4OqO$4Ch3>dMS3MRViWtgHkm@ zW1{Rd_C7mREMwc0F;$!~%UG;U%jn_~s^y?q%Z_8+ikS&)v}|SI^4Se_EM6IF+iGMh z)rm@tzZQ*P_pzfbl&wm=Y818Q7_i8dM$`M0?3iOrWunGZfD5WqzFMb|B6hky?hSE- zR4T$90hlEL|s!A8kolVq@2GT0@RL7_76 zU(TfqP@oIra7YRyj-6!+RFR>$C=M?sxiGKG$jVxA?}5g>OT@ilaqmIm-biKdq8K<@ zSy&VgGbs;?eH9Inu{bPA=`>pyoio!Iy;W0u}mNBp#e|NqA{S z8o^=1CNo{dj2nVxOJ$G|KrPrB)UxN9!_GFwCYdHgeTaHZKD?r5u$jqxn5q85rTUMM z>R&0NtF~RB8_mrtMWKe2j+EW3A1{sm;f$%_peMC#ubB zG@LHeaC#DhK_hazHo_;P`A><%r=|nyY8y}$KYpfnnm6x%diyWY+wf@!=IL?x49Wk0 za`>0okMNlqLzsAt$7|#8I>}?l&h1$mjnB5x_#BPK=V~-QPoweq8jaU?M&k=^!MVK< zk-sPoU!0D`YkSAy7WuNf(RRHAWL_GFFB83Yci%7fJWoCA4RQDip>Z=T*vuSuYon?u zHr7A2_vSFL!!BDXHk*NhC+p0C%HM470)nEe&Ezu!ZAZS7_cTY4G*}#~&EP?BhIoLw zwaOaOA`?4o4Szy2sZ&)DU;!s0Z?s3d(exiud|-k~j~X28c)b@Rf7@ z#;Z)LUM;P9jkM~u(yG@<~Jmx z<;FOCtJ>P}XnC7P%S}et+eOzqMAth-*Skd5yER&FkneiWEsU1;g6{j`@cndQv+Ems zN6Y;+TJDIL!w=B>2jlQVqTr6V_Te7Bd?XG(ddqzInE3K>pAug_ExvrF z!Y*;{zOv#sYZ1N!=GtXpK_<*75*Ga{UQ#3DN^sG zCVvH8Hz#BM*Kzn8HGNAn*569Ie`j?6UUdIKbpKIw|4DTJS=xQGM*UwPdB-!>ze2&^ z;_&aO=zrbO@6=!XBX;wcxeAY)jB6Nni;)oj-4bAx{ozem_6U`dQoPo@Ivg|V3lE&5R0in05FWV$ou3(Q3@hG-KbiJNUW4*qEYLp=k6ICOH za4cwVefqYUai^v8ZYK!o(HpHI+eNi>xOTR{aBgKpR<-yJeQY+~*Jd3|%<4-d!Z36(;TT z{D#D)^Uv;XS}?KLN>I+E;$skVrIbl!fW9R8olhrwK!c=h-z`I4o$pqV)tUpZ?qr6)I<#Uy1SK|iCvr?HT&u)S!&+dXK z&mMv(&z?XjPc~Jay_7NV|B#J)Lpa*D4(-j{^;N)Z-v!q8|4UL_H1`L_M;CsK-5l zQjbGZ^;o5hfq#3VSA!urX?K{1-~<1t-{ ztewJutWBfv+G9f!aJpCI4Gcq7!Ft8ykdwu^#^foIt=Z9bYdm-CXxH*vJSz#*u{Bvl zVtygvhqwg@6#(qoAr=xzEBWl1jcF}hlE{7u2ZSeTkm9Q4GBLC}qdc2rSef#5X~1Yq8d*W3Sfih)xg?OgyLs z^jIV{rmaFkD%E{e+_YKPAiGvE%(XOx&hJ(GIe{5xc3$NE(}_Vk0qAV-+oo+s;ZAtWw2_t+ z=wu$z8F_u9V>9fujjpr!YPHUwCStxO@A}ZLxkGS`X&ggvtuh&c_Y!0Xt`lSk<^&mn zd7y@1UpfT)Nzhzz?_{pHy{@_=D1!PQ35eajt^BHgR{ki8R8~)FENs6eMl_h&4wD&o zH2FB(V*s(c4_{5b7J`N!9PYj(Y3g#UWkK8hlmKn(1)=RYL1;T(5Zdk!WHM+SGaqy( zD1BgP7n;;?b0_i}I!*$_?qt4nsAb@!P_P+cVR4F{JH^tdej?TH;6Qb!(ilCT28iA1 zd`0S=(eMCmby%%u;U!9dhr@#K@Iiv`a6}LujskmmSX6p1564J= zhb2Jl%6wBE3W;7G-W#^xb|dWq-~PC@KjGUSx}9xRs6LxhRcm%KX?Cf!t?L!s7L|uv zHOq%vQ%ZnabwRk*5QJMzLAVtHd%5M5J}|U|c00|wh(tKn0>rM(H|3a+>E+mBs->RE zZS}Pj7LVOFUu$Sqi5U`SQ+KHqesEIQVp4M*oO_6BL1S#Cpz)zffX2%Nq49D-XuLuY z8XpGirSaiP_dAz!8h4K%3rep9#O{%NQ%Z$cFQt1zY1eafU9EeRZ{aFy;cDN)&@GmJ zGzDgJ;4xP5u}Q@pbKr5R1qU8)rQpC5lmG{wC+%r4^&ol(C^$6GjoV%j4>uA5j|H;HZKFhj(cG9)^ zN1NQZ=cqJ%f39W0_va}AzCT|OzF#j0-(MgI-(Lvq<@<}2?){@$bT8&N%zgd{Z_G zm0q3QHfz-0y^~A#R*&V|49lB5mP7wijNT3svt{=VL++gka^{EqoY=ifWf9!FEf2xH zM+pe-y@CkteS!$?{elSY1HfLveNgG%4_lM&LnI)z4+CQN5x%L^gha2@RwA|S=Hwss zwLfOHKkjP}?Xcu0$m~$rjZC{wTGdbas@om?ai6vf2>p!eL+ED(A@p;C5c+w+0~M}z zU(mnHEMk3BI?ewgX%@70U*f;mec67mvV*Xv+{S~j?knnG^`ubliA}q&TASebHD!R~ z*9F1x8-n2YO+gU+7Ep_j4tC#G#=z}E<~!6yaNh;Q?q# zjQD0&oykNru(+BI+z`Moaz2@WZ?je{vW!dj*s_~ijV7x#Er9EddahG+oKlWtxNck}5$AU2DCxS5Nr-Cr&XFxIMm{fE>SH{3yhVL(E9{&9j z5W8RT75@?<#IY{_er-j5W1;oadDj~n#GiaYqtN)@?4=&4t?uvx6ZWd?2wMe zc$b}Sg!+}dMNv6ttz$79Y~%zJ#})~C5RMuzvLo6Tuv1$e%Uk+LavXO}K6_e2k|D~) z>QYN<&fr&_MN5+dM)j6!l-sn>jcDm)lu%cgAkl=iD8O1v(0)$d{T70EAkg0#9}wv8 zm5)IGAc#Q!D2PD+B#1!&43t2RO$GWF613$0JeK6Yl7sHAP>4?b4G_D(8@a3gi^=^5 z6rv#-A82hdZ<|N(FLpceWkA`Y*%ZsoCq=GnXUjoEeYh3r^F@ZVgt7CK1a|FmhAzg)$u&6CjUk4q ziuGfrIUzn?)j`MJ9cfH>t5Isy@)WE#Ml-~gt88`J)@Y@{;c_2oPA(DoebA0&^~YD( z(nzAZw9}r_IrU5@+}SzoDI9dLyv_leo^3V@{Wf*>6SRFiJG+)pu(#9}GmbI@#%Cjd z;hzp_H4eHeoJ@Fib~YW!QFO00Y4cvLK-|bAx$w*TvhJDE@nW?m*VV2YMykP?TVdAu z&6y&?*^V9FWN!wRSTH*9$9Gk@bDtvb)*z+XDrmEYwI)1N@LtMC1=k6pf;mA{FfWJ- z_5-DYC#3`E2omIE`Wf=KQS9zW>Y`%z2E^_tYiQN&YUpU{LX{NJZ}z)mtj+r*Z5{w} z|3t~$eN`V@d90O(4fj(5Y*;S{8;%o%4aW<@hWi6$E7hZgfCUGJ_M;#4JiS9UTbJF5 z6oTB70K|p)rWRDlngvb5m{-!wzlGwvQ#{J28p@}6l!yL(&^sNBI&x1P;(#H0MuM!O z$Toi6nJSEsH&_lret;4X@>zli`D{Uie2ySO9t8FZ`CO$Z4zX5q=kXJ9YV$328~LW< z6asS`;`_nE2K;}#0omlK-fUDCJk>-0J>*>gMIDVw4(+%Ljo6`tSlwvl@{_iDxF;)z zlw5LhLCtP*+FApno@{N}nNZdwws(m~sZ~oXPpGL)Q+6b|^_6!Q`F?w*246}Qo@Z^ny8wSs~RhO1sL%pn?6yCkFw5Bx-qMt)5l(wNeSL*yl z8`img^29AbZEO2=v+1agc-a1bdT&+`u%!sE%)9G)g-H^ z4!EB>?;B6Jn@xgClZk^cQyM_R^%#Q zWayjN;8SK&*iqo*8fUM1 zxaW}#+0O^W?s~o;WG6U;qD}1zixTYJ3oMDot_R`&0JVA{_(I!@0I_>9UorbX1oxMK zZbzNc+1X2tl9wfvT!R!?gpd3CGu&p4xbsrI)E|Imfch(+-uJBMyzBbW@>tg{Z~)9+ zQsAzRR{32IiIYr@sHM&(bzD5?As5=?sbAA;Mk*lyv7GVj-*(6s z%Vqx%4Y!;0uFS|b_?mHVq7b9{&4Adwg|8HCcktbw?e0dhlXkf>y{xw(_g3XG*x#lm z3X5o4Q4@C)KP@;(f_pnZc=CcQJICkVp-deU=@G7bXIiMtEvRbUy(?`YYL(r)`5}(K zM-U0TSB00-Vmf1Y?<3`Eo_28WR}qBu0YQZGK^0v{QC=xSXn#(C%Ha{K(n` z&mSuTJbxkxo<9`?&z}jRDnAEGOFJ0;LKy?MAE94TAEo*gAa=jzDYRqa!1_)i^TJw`P>1 zthT`BW(y}kYco3OTg507ZcPu$_N)MUrfHoZF-sQq4E<{-wwe!cD0MUR`HV$5M@M^} zequVw95G2spMN3|gmvcD9|LZ+c~BuaQtbn@tVQUBXR_LyEDS7MP%2UZG^yFufO0!o zTLt#OlpGK%9bMU6zux^0*3Fi^d6wTBN0I#>l#lHHD2VL;B#7+)EQsv?0+j48NwxE@ zB*?Sq9SOP$*4d*DIMT?nENDjrhu|tN_>9 zD&TfjEllbzRs=>YPy&otCeP zo0>}@-IM$yY47yE@;E{8k&g~+ zYv8(reWk2bx~H#X$GI(c6$#r>xZ27dl9aUri{2u1hrc^i6`}DkD+P^*D*+n&1fg+_ zAT+KOgvNUTdud#!^nsz};Au3bZMz&9P?-nBuAgs8rO=u~Wl2=t^_IvTLD%4PB!JWV zd{ZsFJ32p#{yH+klh1u1D_N|KjMW;YEnEqpI8)PO4A=W4xSjx`I!1Rrmf8Ya{u(4Z zms2eF2UEk_&=Y>_;hlr0AxCDNjX8H;k4D!K7naZJ*&V9_sKou$XJN^Q_2Av>?2AwE~#+(F{^)9B?`($Md4BZK|oI*>;^Hf0W zPUD;En7Gz;;HO*ufX^TLt#~N!6>KX7yz|4th##(4)zuS19>uIhK&qvbk#c5^3t~LW z#^n|T^-@QR&u-0VZ?womh3_t<9lCPK> zKGXPu;5H~9!973_fu1FZfX^00kmmp;$WkiEL1hg5|7Ga8(2x3^2Z-JId{Mv2gv-)7 z(?CCGFDf`wSn4omQEJ-DbU@Y3*HPxfd&U&pB1~+*jltXaz1&fhFwu_^YpO*is+FSF$cF zOCRsl(}Zq>WS;Bn(9#J_xKXQCUff$JQPsyP9i~ zRyd&2YBksQ_cQc(`?eai#`AiaveKHW^}A3dmdH>9_8z43J*;R3&F z0ioImfh_GWp@WYj^Qyu@kUG^d2VFH9@jmwb5P&vo?wl6!kbahE<@#1%{|eQ zR}wgVD(+dNoVB>HVz!dHXRF|X!sdb8vFYjlvc@A_&b?Tb=U2<_CHiLt!=hIMUP|KCg#)|= zNDgsDaJW?&NuIrRFQW+KDG`m0lgPcC#9?=Xn%vt)4p(^tCp&|^kR;3Q6=X6#m-2pU zC+(F!ZMm_gW945(>R@}Uu-9C_#yE2=_i9y|XHV_A*YJPrUdy+ya-ct}zdvuu?8n=< z`}(7f`}n=|y?Na80GlDT3%k#H-r9TO*I7fa=UZ8WXJnTA25Xer(;Jn@Z0Svc%%0v1 yOrJ4!Z&Bjmnq1we|Cmg@71%B;N&Qab-bTW(yNR#GX?Y>oy`3MidxuJn<^K=uD@1Dm diff --git a/postgresql/documentation/html/doctrees/index.doctree b/postgresql/documentation/html/doctrees/index.doctree index 33a39e44d896644d6222299a8dc556fc1b5ebb4a..35378d4ef43b9a56ea58f9783dcf55977cb66327 100644 GIT binary patch literal 9992 zcmeHN36vaF)lLF|(Cn*X2oyuW4$SlV9nZO6}em zO#ESA{947giwBGQ11WZ^_0V@Jpk((MEFK6@eWIrx#mR_ZW@z^vEG_}C64er{5!)q$ zjpCu4*eJ(Ikbse>R`UGe*zT9wT=5_ha3%IjRX>j15zyFw$R42ZN<*-AQi`L7fP(`E zi#cF>ekBr@Wb8qM#lrw`8%Z=AMM*76{8F5_lGuYcE-dbgA<7hZu{|WUhvv;~EkIbi%q-N;7Rs^3i!s(4OQkoGk>2{qaMY-IGSOR~NK8~i*P;C0 zSv&N$t*n~rjq4_;jrRsM&mS)&ow|}5ZmQL_C%dj3Eemb;G`k@NJS~Tm0eJAZ1Y2QMR6~1PXnAhWKS_ixW&cz&M0&b z*&eg6+bHf0P#DyFTiCcLTcqWnw%05)Q0&V5e9gj4EGx(Az`YL=O! z&9UY<)OkI(3P5!iyZw z_kxO>_@0wQPEZASG^mX@iSeDy>IhDNc#~nb;>SSAZO#I6>&2T2&W6N^Vaib*A;r
    hr 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 literal 9504 zcmeHN36vaFxgL_t*2zrvC?tVm5~L$DJxL^p1Bnxo0YXA&nG`f)+o|rlGq;lJs=j|! z&7zhPm5~wmUBO*M1Vlsx+;A87759BZ#qGW4+ZW&W->P0_$n%{i>N)Qm&goOP>%af~ z_y6Ai-dk5KsMvlb3LQ7ddA==z48K-|7iQE+n~tjmv09ilyFIHa!s(g_)S_6mXA9kJ zZEYmR1PQMqR7bwB7=Xa4)?8s!Kt^@u3q1hUrUz<%5RMZ@x~eN*=mN0fdm$JEsyiQ< z%Y&#KgiZ(%e6M7Su|Q>Fwb<;fSrmv;RRn=Gj?qhss>kfDLrv zi$|-ad2@voh5nfDhn^pbQV?1cs%3jmGCNrV#}3r;Sgpv)4zs%{{z}46W(88~h zU1rZ*(O1iEv#TNang}n_acu~r9#vG2o^QlJR9K>nIvF-RC01);L$W4QvDcYxW(V|x zCThK0V0NVNQ|FT*QKQInSg4FTt#A;=8w{v2=+pRMZG6m+Je#HmYty0hJv1%09&DO@ zu`XOK8_kRrhUAo^5MDSV zR*%V=U3OGsyg;2zGo{SnS zs?D;?ip)i>;|aB8?*foa!%l6L3nWbXxa@pmAV^%8;cQrRTddB>%5^6QvB%5x@)UWh zJY8-u+w}-_u7uQ2$V$jMBq8E?5`vvCA=7pVNp?gM0?3r@6X$b1ET)hO!zW<16Lz~G zR=XgGWVYL)vK5u*kB6JBak6SMqjp2`kyu^GlHW2vISeN-ETcyLQG||R3)`t!p|Fk6 zH=HWK6OK1-gi;s>w6_fhIYeVtMFc>}97vLE^x(dnu_rVFIBY`qFvSVS7KTnU%L^UL zMTUA4!gDxxnSM$Um=LsD6%=HmfZ4TBRTs4ww!5K}x|of-M;rGNHtt?F?mjl|rEJ_h z8+TFNxclYs|3AeKz|99^b%@=}Mi|j^J8v-<+>HMZt9H{END`D7&S!0?8f4ciK>vK5G&GMk=} z+8vi^cU;cyD6l)OV0S!;-Ek$mqpR+YCuiZ0-2Yj2RfI*J5~~uc{$~t70(nOtnkYJ1 zOO07Mqbyjs9IFbmSq3TR+f3OUdqOKa#>$SfvXYf`SlOcyGvc}A81(GrgljBCY;@&9 zk7}$uFfiMITZU&bZ7iK9iSnZ|2%HB3564Y4a8t1&R_Ec;3KA0v2*wLc7^|qRL^}D& zjcl9=ZJbFq&J-JGnvL^RxyEAqJWY0691lzC@$mGl1vtS{aYJ9?Jv*K54yu4-9^B~f- zv3h=8!Bh%fjT0300#@~fTAmlNJTHa|{Ypqe3`}C?tqD>uu~^2JvWzcd8D9<=^L4#n zQAyUsoMqcd4U`Vgs8@pdt77%)ggMx}2CJVJRm-S+Z1vh%x!!EoE2+B9%;>lYe9xU$ z*Uy@Z#$CUxUN_4;U(ej%z$?%jS->~32yZq!vHp{Tb@MGn_10{@&<=xJcGdCJ4KwO( z`9cTYZJx+U-8iG(o-cF)Q1NTiRm)R1&8TsCTBL z+$g|$p>CT|@5&bzf{yEy)$KFt-Fcl`6&I^P$kRINJS+g}jv4iyWazjbR-_fEJ7?5; zQ)1HcxFox4M%^vU4(Zr7%Ak8@%_WXkaU;}lj*IU171jH*@&gWA!yKkxceJt&HSQzCTu9uWM50rUUpJn%g&-+qYyA zuis{d-(iN|ZH?FONe;{J$La?OA%x`*vyy{RUMH`gl}XI~h(-P}$J|et=1-Z-&m=>WB{Zc+)$Z4WldZ!p-a7mf^mwq<5C5#G{|i(9SEl}N zO#R2ePkJAz~G4<&Fb*=rq0Lk@7S!&GuSRZMrMqQSot^}zQh)&CS9E4q=@gVF< z20++V+(OvZ+(Otj+(Ot#p+#D1P6!2hG{c7r%R#?o4NWXVC!-TmpMoZ)wRol>a+HOG ztr14a3X0dZAz-f4nClbFf`&GPS5rfSgHa%8sD|y!q)+y+M1e5Kdz6wtR;pK6eVbAu zIWZ-$RTkO4U57??9v(3c@4R5&h#{&qBa26g2O1&v3&w#%doJC1=n7-+$QAwEUkWVO zqG zhmAe?!}~S&%XaQFM@Eh8#x4EE#;qxJgDeLd=!cFr5A0^)xnp$XaI1LRTVKusDdX~s zM-FM!M7iz8#x1Ei#zn}qOOsA0Q}s%2I8V^gk$oe(5*FGx7arPwsb<`y%a)lo&TkN& zYm~r;Nx{bTr-cam4eUY<8#^Kt+aAj4kSs5-^j3Rdz;ay!wKA4NY;eaD1G02%x+x%K zHw|TSxtw9tt(xt-#Fw72+ZTQPM&FigoBKC!-VF8TBUzsKUy*iVCoU%IXxp}(nAB(# zSPh2f)cGMqQ>`z;VsB`jwetcEKA{f0Di&<$Cx0r<B>N-D-a766Rg%3Q z*@o4608LCeJnQQ^FTKqgYEbuYPWlUXV~yWGhGUQjr?>rvGiJ0NY6Ljg3LI>m`t@>G z_3a1;#yI)H(ymXttT6M?0w!mdv0dM~`ADu#3~Q|L?4WU+68M_l7#7k9vrNWudB1~G zVH}`YWgn9&)=k5jupHMagQJg0I5}& zi&<+Mx0uDw;TE&iBTNg z3(D=9#g3E(SHyq9AM`{Xj~RbhDh?-6F`#y+>brm(9neG@+bzAN zIjE_@nTNO&&K%_y&OFR5oN00kXI_SuBYt;1;x7k)BYsgT2XS!^&s~8grYGs%bWzRKvycEKP8MKg(a<&=m_^A zWG$v)c7izHYf%}m`dkD6s^CRm5aId=)fL&?xdhBwO-iDUW&2gj@o210A_#37#|zs^ zatqrzjJz1c#Z=98Do#j80h#5p=NO~F%r3VuYn4$ufQl;-@)&qsVrArukJtJ8Bh+#@ zpK*c=)zAwgDKs$=o-oo;Z44+J=y&i7@rU_E3@{h5eQ5&!kFw1Aj0p-1Fmw_C!O~CR z4{I~cEkt}OT25nj2dDAVxE+3|iJlHP{2!x<=^1#|GnYlwnQL~{#iwT`FhurnVGWG^ zKZNX6Km*O=XkvO6o*W5(0{_`SX+#=4&q28wkz^LG&CT=FOhQ1x?`OZ8C!%>rDc=W*xqIhT=|-nF{-`P{o|-cUaK4(J6M z;f0LQjWE%98qkY0^u>5`u9-{f_n>@#MlS&vH=hk%8keT@Qa$Wtc(U}oHHMxq*XUi2 zom`L7EAWmR(w3i>+#xhoi|4MRN2m4X1NhoYkD2}eR@5fF};Ct%@uWfmiRUiS{@7Njp%`#E5Q$Y zbzBv5UgHi6C#du$^ySSZG*-a??0O?|>CJ$dYh@VLu+I;DA2-~N2*+}Kc`C!IJ4kO~ zjBePiBJ`!@TN4hwHBoC`L`JYPAwho%IHt-lm~FIInDx@kXZD&gZ(*^mhK= z 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 Q%JVVLETqET2U;5bA0>&dsQ>@~ literal 101375 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 Btfv3~ diff --git a/postgresql/documentation/html/doctrees/notifyman.doctree b/postgresql/documentation/html/doctrees/notifyman.doctree index 59bf1fc41b37804ddecb39750fda396295d73d76..9b29f200e3e1ebe9d9e678f8fdff80939479a4a7 100644 GIT binary patch literal 56224 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 SA3$?yW`?MXxv?1-YW#nxdH+xV literal 55629 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 + - Driver — py-postgresql v1.0.2 documentation + Driver — py-postgresql 1.1.0dev documentation + + - + @@ -33,13 +36,16 @@

    Navigation

  • index
  • +
  • + modules |
  • next |
  • previous |
  • -
  • py-postgresql v1.0.2 documentation »
  • +
  • py-postgresql 1.1.0dev documentation »
  • @@ -73,18 +79,18 @@

    Navigation

    The following identifiers are regularly used as shorthands for significant interface elements:

    -
    +
    db
    -
    postgresql.api.Connection, a database connection. Connections
    +
    postgresql.api.Connection, a database connection. Connections
    ps
    -
    postgresql.api.Statement, a prepared statement. Prepared Statements
    +
    postgresql.api.Statement, a prepared statement. Prepared Statements
    c
    postgresql.api.Cursor, a cursor; the results of a prepared statement. -Cursors
    +Cursors
    C
    -
    postgresql.api.Connector, a connector. Connectors
    +
    postgresql.api.Connector, a connector. Connectors
    -
    +

    Establishing a Connection¶

    There are many ways to establish a postgresql.api.Connection to a @@ -146,7 +152,7 @@

    postgresql.open

    For a complete list of keywords that postgresql.open can accept, see -Connection Keywords. +Connection Keywords. For more information about the environment variables, see PostgreSQL Environment Variables. For more information about the pgpassfile, see PostgreSQL Password File.

    @@ -173,7 +179,7 @@

    postgresql.driver.connectNote

    connect will not inherit parameters from the environment as libpq-based drivers do.

    -

    See Connection Keywords for a full list of acceptable keyword parameters and +

    See Connection Keywords for a full list of acceptable keyword parameters and their meaning.

    @@ -190,7 +196,7 @@

    ConnectorsConnection Keywords, so that list can be +connection parameters described in Connection Keywords, so that list can be used as a reference to identify the information available on the connector.

    Connectors fit into the category of “connection creation interfaces”, so connector instantiation normally takes the same parameters that the @@ -203,7 +209,7 @@

    Connectors +

    host is the usual connector used to establish a connection:

    >>> C = postgresql.driver.default.host(
     ...  user = 'auser',
    @@ -253,7 +259,7 @@ 

    Connection Keywords +
    user
    The user to connect as.
    password
    @@ -304,7 +310,7 @@

    Connection Keywords @@ -330,24 +336,24 @@

    Database Interface Points +
    Connection.prepare(sql_statement_string)
    Create a postgresql.api.Statement object for querying the database. This provides an “SQL statement template” that can be executed multiple times. -See Prepared Statements for more information.
    +See Prepared Statements for more information.
    Connection.proc(procedure_id)
    Create a postgresql.api.StoredProcedure object referring to a stored procedure on the database. The returned object will provide a collections.Callable interface to the stored procedure on the server. See -Stored Procedures for more information.
    +Stored Procedures for more information.
    Connection.statement_from_id(statement_id)
    Create a postgresql.api.Statement object from an existing statement identifier. This is used in cases where the statement was prepared on the -server. See Prepared Statements for more information.
    +server. See Prepared Statements for more information.
    Connection.cursor_from_id(cursor_id)
    Create a postgresql.api.Cursor object from an existing cursor identifier. This is used in cases where the cursor was declared on the server. See -Cursors for more information.
    +Cursors for more information.
    Connection.do(language, source)
    Execute a DO statement on the server using the specified language. DO statements are available on PostgreSQL 9.0 and greater. @@ -360,11 +366,11 @@

    Database Interface PointsConnection.xact(isolation = None, mode = None)
    The postgresql.api.Transaction constructor for creating transactions. This method creates a transaction reference. The transaction will not be -started until it’s instructed to do so. See Transactions for more +started until it’s instructed to do so. See Transactions for more information.
    Connection.settings
    A property providing a collections.MutableMapping interface to the -database’s SQL settings. See Settings for more information.
    +database’s SQL settings. See Settings for more information.

    Connection.clone()
    Create a new connection object based on the same factors that were used to create db. The new connection returned will already be connected.
    @@ -372,7 +378,7 @@

    Database Interface PointsDatabase Messages section for more information. +Database Messages section for more information.
    Connection.listen(*channels)
    Start listening for asynchronous notifications in the specified channels. Sends a batch of LISTEN statements to the server.
    @@ -414,12 +420,12 @@

    Database Interface PointsNotification Management for details.

    - +

    When a connection is established, certain pieces of information are collected from the backend. The following are the attributes set on the connection object after the connection is made:

    -
    +
    Connection.version
    The version string of the server; the result of SELECT version().
    Connection.version_info
    @@ -440,7 +446,7 @@

    Database Interface Pointsfileno. Under normal circumstances, it will return an int.

    -
    +

    The backend_start, client_address, and client_port are collected from pg_stat_activity. If this information is unavailable, the attributes will be None.

    @@ -490,7 +496,7 @@

    Statement Interface Points +

    In order to provide the appropriate type transformations, the driver must acquire metadata about the statement’s parameters and results. This data is published via the following properties on the statement object:

    -
    +
    Statement.sql_parameter_types
    A sequence of SQL type names specifying the types of the parameters used in the statement.
    @@ -607,7 +613,7 @@

    Statement Interface Pointssql_parameter_types[0] -> '$1'.

    >>> ps = db.prepare("SELECT $1::integer AS intname, $2::varchar AS chardata")
    @@ -655,7 +661,7 @@ 

    Parameterized StatementsType Support.

    +in Type Support.

    This usage of types is not always convenient. Notably, the datetime module does not provide a friendly way for a user to express intervals, dates, or times. There is a likely inclination to forego these parameter type @@ -852,7 +858,7 @@

    Cursor Interface PointsFor cursors that return row data, these interfaces are provided for accessing those results:

    -
    +
    Cursor.read(quantity = None, direction = None)

    This method name is borrowed from file objects, and are semantically similar. However, this being a cursor, rows are returned instead of bytes or @@ -865,7 +871,7 @@

    Cursor Interface Points
    Cursor.seek(position[, whence = 0])
    When the cursor is scrollable, this seek interface can be used to move the -position of the cursor. See Scrollable Cursors for more information.
    +position of the cursor. See Scrollable Cursors for more information.

    next(Cursor)
    This fetches the next row in the cursor object. Cursors support the iterator protocol. While equivalent to cursor.read(1)[0], StopIteration is raised @@ -881,26 +887,26 @@

    Cursor Interface PointsCursor.msghook(msg)
    By default, the msghook attribute does not exist. If set to a callable, any message that occurs during an operation of the cursor will be given to the -callable. See the Database Messages section for more information.
    +callable. See the Database Messages section for more information.

    -
    +

    Cursors have some additional configuration properties that may be modified during the use of the cursor:

    -
    +
    Cursor.direction
    A value of True, the default, will cause read to fetch forwards, whereas a value of False will cause it to fetch backwards. 'BACKWARD' and 'FORWARD' can be used instead of False and True.
    -
    +

    Cursors normally share metadata with the statements that create them, so it is usually unnecessary for referencing the cursor’s column descriptions directly. However, when a cursor is opened from an identifier, the cursor interface must collect the metadata itself. These attributes provide the metadata in absence of a statement object:

    -
    +
    Cursor.sql_column_types
    A sequence of SQL type names specifying the types of the columns produced by the cursor. None if the cursor does not return row-data.
    @@ -916,7 +922,7 @@

    Cursor Interface PointsThe statement that was executed that created the cursor. None if unknown–db.cursor_from_id().

    -
    +

    - +

    The whence keyword argument allows for either numeric and textual specifications.

    Scrolling through employees:

    @@ -1039,7 +1045,7 @@

    Rows¶

    Row Interface Points¶

    Rows implement the collections.Mapping and collections.Sequence interfaces.

    -
    +
    +

    While the mapping interfaces will provide most of the needed information, some additional properties are provided for consistency with statement and cursor objects.

    -
    +
    +

    Row Transformations¶

    @@ -1171,7 +1177,7 @@

    Stored Procedures¶

    It’s more-or-less a function, so there’s only one interface point:

    -
    +

    The specification of any of these transaction properties imply that the transaction is a block. Savepoints do not take configuration, so if a transaction identified as a block is started while another block is running, an exception will be @@ -1305,7 +1311,7 @@

    Transaction Interface Points @@ -1394,7 +1400,7 @@

    Settings Interface Points +
    Connection.settings[k]
    Get the value of a single setting.
    Connection.settings[k] = v
    @@ -1414,7 +1420,7 @@

    Settings Interface Points

    Settings Management¶

    @@ -1457,81 +1463,81 @@

    Type Support -PostgreSQL Types +PostgreSQL Types Python Types SQL Types -postgresql.types.INT2OID +postgresql.types.INT2OID int smallint -postgresql.types.INT4OID +postgresql.types.INT4OID int integer -postgresql.types.INT8OID +postgresql.types.INT8OID int bigint -postgresql.types.FLOAT4OID +postgresql.types.FLOAT4OID float float -postgresql.types.FLOAT8OID +postgresql.types.FLOAT8OID float double -postgresql.types.VARCHAROID +postgresql.types.VARCHAROID str varchar -postgresql.types.BPCHAROID +postgresql.types.BPCHAROID str char -postgresql.types.XMLOID +postgresql.types.XMLOID xml.etree (cElementTree) xml -postgresql.types.DATEOID +postgresql.types.DATEOID datetime.date date -postgresql.types.TIMESTAMPOID +postgresql.types.TIMESTAMPOID datetime.datetime timestamp -postgresql.types.TIMESTAMPTZOID +postgresql.types.TIMESTAMPTZOID datetime.datetime (tzinfo) timestamptz -postgresql.types.TIMEOID +postgresql.types.TIMEOID datetime.time time -postgresql.types.TIMETZOID +postgresql.types.TIMETZOID datetime.time timetz -postgresql.types.INTERVALOID +postgresql.types.INTERVALOID datetime.timedelta interval -postgresql.types.NUMERICOID +postgresql.types.NUMERICOID decimal.Decimal numeric -postgresql.types.BYTEAOID +postgresql.types.BYTEAOID bytes bytea -postgresql.types.TEXTOID +postgresql.types.TEXTOID str text -<contrib_hstore> +<contrib_hstore> dict hstore @@ -1683,7 +1689,7 @@

    Message Metadata +
    Message.message
    The primary message string.
    Message.code
    @@ -1697,7 +1703,7 @@

    Message MetadataA mapping providing extended information about a message. This mapping object can contain the following keys:

    -
    + \ No newline at end of file diff --git a/postgresql/documentation/html/genindex.html b/postgresql/documentation/html/genindex.html index 7296a46b..8a674c0e 100644 --- a/postgresql/documentation/html/genindex.html +++ b/postgresql/documentation/html/genindex.html @@ -1,19 +1,24 @@ + + + - Index — py-postgresql v1.0.2 documentation + Index — py-postgresql 1.1.0dev documentation + + - + @@ -41,11 +49,1120 @@

    Navigation

    -

    Index

    +

    Index

    + +
    + A + | B + | C + | D + | E + | F + | G + | H + | I + | K + | L + | M + | N + | O + | P + | Q + | R + | S + | T + | U + | V + | W + | X + +
    +

    A

    + + + +
    + +
    abort() (postgresql.api.Transaction method) +
    + + +
    acquire() (postgresql.alock.ALock method) +
    + + +
    address() (postgresql.cluster.Cluster method) +
    + +
    + +
    ALock (class in postgresql.alock) +
    + + +
    AuthenticationMethodError +
    + +
    + +

    B

    + + + +
    + +
    backend_id (postgresql.api.Database attribute) +
    + +
    + +
    begin() (postgresql.api.Transaction method) +
    + +
    + +

    C

    + + + +
    + +
    CallReceiver (class in postgresql.copyman) +
    + + +
    CardinalityError +
    + + +
    Category (class in postgresql.api) +
    + + +
    CFError +
    + + +
    chunks() (postgresql.api.Statement method) +
    + + +
    client_address (postgresql.api.Database attribute) +
    + + +
    client_port (postgresql.api.Database attribute) +
    + + +
    ClientCannotConnectError +
    + + +
    clone() (postgresql.api.Connection method) +
    + +
    + +
    (postgresql.api.Cursor method) +
    + + +
    (postgresql.api.Statement method) +
    + +
    + +
    close() (postgresql.api.Connection method) +
    + +
    + +
    (postgresql.api.Statement method) +
    + +
    + +
    closed (postgresql.api.Connection attribute) +
    + + +
    Cluster (class in postgresql.api) +
    + +
    + +
    (class in postgresql.cluster) +
    + +
    + +
    ClusterError +
    + + +
    ClusterInitializationError +
    + + +
    ClusterNotRunningError +
    + + +
    ClusterStartupError +
    + + +
    ClusterTimeoutError +
    + + +
    ClusterWarning (class in postgresql.cluster) +
    + +
    + +
    code (postgresql.api.Message attribute) +
    + + +
    column() (postgresql.api.Statement method) +
    + + +
    column_names (postgresql.api.Statement attribute) +
    + + +
    column_types (postgresql.api.Statement attribute) +
    + + +
    commit() (postgresql.api.Transaction method) +
    + + +
    connect() (postgresql.api.Connection method) +
    + +
    + +
    (postgresql.api.Driver method) +
    + + +
    (postgresql.cluster.Cluster method) +
    + +
    + +
    Connection (class in postgresql.api) +
    + + +
    connection() (postgresql.cluster.Cluster method) +
    + + +
    ConnectionDoesNotExistError +
    + + +
    ConnectionFailureError +
    + + +
    Connector (class in postgresql.api) +
    + + +
    connector (postgresql.api.Connection attribute) +
    + + +
    connector() (postgresql.cluster.Cluster method) +
    + + +
    ConnectTimeoutError +
    + + +
    CopyFail +
    + + +
    CopyManager (class in postgresql.copyman) +
    + + +
    Cursor (class in postgresql.api) +
    + + +
    cursor_from_id() (postgresql.api.Database method) +
    + +
    + +

    D

    + + + +
    + +
    daemon_path (postgresql.cluster.Cluster attribute) +
    + + +
    data_directory (postgresql.api.Cluster attribute) +
    + + +
    Database (class in postgresql.api) +
    + + +
    declare() (postgresql.api.Statement method) +
    + + +
    default() (in module postgresql.installation) +
    + + +
    default_buffer_size (in module postgresql.copyman) +
    + + +
    default_errformat() (in module postgresql.sys) +
    + + +
    default_msghook() (in module postgresql.sys) +
    + + +
    default_pg_config() (in module postgresql.installation) +
    + +
    + +
    details (postgresql.api.Message attribute) +
    + + +
    direction (postgresql.api.Cursor attribute) +
    + + +
    Disconnection +
    + + +
    do() (postgresql.api.Database method) +
    + + +
    DPDSEError +
    + + +
    Driver (class in postgresql.api) +
    + + +
    DriverError +
    + + +
    drop() (postgresql.api.Cluster method) +
    + +
    + +
    (postgresql.cluster.Cluster method) +
    + +
    +
    + +

    E

    + + + +
    + +
    EREError +
    + + +
    ERIEError +
    + + +
    errformat() (in module postgresql.sys) +
    + + +
    Error +
    + + +
    escape_ident() (in module postgresql.string) +
    + +
    + +
    escape_literal() (in module postgresql.string) +
    + + +
    EscapeCharacterError +
    + + +
    Exception +
    + + +
    execute() (postgresql.api.Database method) +
    + +
    + +

    F

    + + + +
    + +
    FeatureError +
    + +
    + +
    first() (postgresql.api.Statement method) +
    + +
    + +

    G

    + + + +
    + +
    get() (postgresql.api.Settings method) +
    + + +
    get_pid_from_file() (postgresql.cluster.Cluster method) +
    + +
    + +
    getset() (postgresql.api.Settings method) +
    + +
    + +

    H

    + + +
    + +
    hba_file (postgresql.cluster.Cluster attribute) +
    + +
    + +

    I

    + + + +
    + +
    ICVError +
    + + +
    IgnoredClientParameterWarning (class in postgresql.exceptions) +
    + + +
    InconsistentCursorIsolationError +
    + + +
    InFailedTransactionError +
    + + +
    init() (postgresql.api.Cluster method) +
    + +
    + +
    (postgresql.cluster.Cluster method) +
    + +
    + +
    InitDBError +
    + + +
    initialized() (postgresql.cluster.Cluster method) +
    + + +
    InsecurityError +
    + +
    + +
    Installation (class in postgresql.api) +
    + +
    + +
    (class in postgresql.installation) +
    + +
    + +
    installation (postgresql.api.Cluster attribute) +
    + + +
    IRError +
    + + +
    isconsistent() (postgresql.api.Message method) +
    + + +
    isolation (postgresql.api.Transaction attribute) +
    + + +
    items() (postgresql.api.Settings method) +
    + + +
    iternotifies() (postgresql.api.Database method) +
    + + +
    ITSError +
    + +
    + +

    K

    + + + +
    + +
    keys() (postgresql.api.Settings method) +
    + +
    + +
    kill() (postgresql.api.Cluster method) +
    + +
    + +
    (postgresql.cluster.Cluster method) +
    + +
    +
    + +

    L

    + + + +
    + +
    listen() (postgresql.api.Database method) +
    + + +
    listening_channels() (postgresql.api.Database method) +
    + + +
    load_chunks() (postgresql.api.Statement method) +
    + +
    + +
    load_rows() (postgresql.api.Statement method) +
    + + +
    LoadError +
    + + +
    locked() (postgresql.alock.ALock method) +
    + +
    + +

    M

    + + + +
    + +
    map_errors_and_warnings() (in module postgresql.exceptions) +
    + + +
    Message (class in postgresql.api) +
    + + +
    message (postgresql.api.Message attribute) +
    + +
    + +
    mode (postgresql.alock.ALock attribute) +
    + +
    + +
    (postgresql.api.Transaction attribute) +
    + +
    + +
    msghook() (in module postgresql.sys) +
    + +
    + +

    N

    + + + +
    + +
    notify() (postgresql.api.Database method) +
    + +
    + +
    NullProducer (class in postgresql.copyman) +
    + +
    + +

    O

    + + + +
    + +
    OIError +
    + + +
    ONIPSError +
    + +
    + +
    open() (in module postgresql) +
    + + +
    OperationError +
    + +
    + +

    P

    + + + +
    + +
    parameter_types (postgresql.api.Statement attribute) +
    + + +
    pg_column_types (postgresql.api.Statement attribute) +
    + + +
    pg_config_dictionary() (in module postgresql.installation) +
    + + +
    pg_parameter_types (postgresql.api.Statement attribute) +
    + + +
    pid (postgresql.cluster.Cluster attribute) +
    + + +
    PLEError +
    + + +
    PLPGSQLError +
    + + +
    PLPGSQLRaiseError +
    + + +
    postgresql (module) +
    + + +
    postgresql.alock (module) +
    + + +
    postgresql.api (module) +
    + +
    + +
    postgresql.cluster (module) +
    + + +
    postgresql.copyman (module) +
    + + +
    postgresql.exceptions (module) +
    + + +
    postgresql.installation (module) +
    + + +
    postgresql.string (module) +
    + + +
    postgresql.sys (module) +
    + + +
    prepare() (postgresql.api.Database method) +
    + + +
    proc() (postgresql.api.Database method) +
    + + +
    ProducerFault +
    + + +
    ProtocolProducer (class in postgresql.copyman) +
    + +
    + +

    Q

    + + + +
    + +
    qname() (in module postgresql.string) +
    + + +
    quote_ident() (in module postgresql.string) +
    + +
    + +
    quote_ident_if_needed() (in module postgresql.string) +
    + + +
    quote_literal() (in module postgresql.string) +
    + +
    + +

    R

    + + + +
    + +
    read() (postgresql.api.Cursor method) +
    + + +
    ReadOnlyTransactionError +
    + + +
    ready_for_connections() (postgresql.cluster.Cluster method) +
    + + +
    ReceiverFault +
    + + +
    reconcile() (postgresql.copyman.CopyManager method) +
    + + +
    recover() (postgresql.copyman.ProtocolProducer method) +
    + + +
    release() (postgresql.alock.ALock method) +
    + + +
    reload() (postgresql.cluster.Cluster method) +
    + +
    + +
    reset() (postgresql.api.Database method) +
    + + +
    reset_errformat() (in module postgresql.sys) +
    + + +
    reset_msghook() (in module postgresql.sys) +
    + + +
    restart() (postgresql.api.Cluster method) +
    + +
    + +
    (postgresql.cluster.Cluster method) +
    + +
    + +
    rollback() (postgresql.api.Transaction method) +
    + + +
    rows() (postgresql.api.Statement method) +
    + + +
    running() (postgresql.cluster.Cluster method) +
    + +
    + +

    S

    + + + +
    + +
    SavepointError +
    + + +
    SchemaAndDataStatementsError +
    + + +
    SEARVError +
    + + +
    seek() (postgresql.api.Cursor method) +
    + + +
    ServerNotReadyError +
    + + +
    Settings (class in postgresql.api) +
    + + +
    settings (postgresql.api.Cluster attribute) +
    + +
    + +
    (postgresql.api.Database attribute) +
    + +
    + +
    shutdown() (postgresql.cluster.Cluster method) +
    + + +
    SIOError +
    + + +
    source (postgresql.api.Message attribute) +
    + + +
    split() (in module postgresql.string) +
    + + +
    split_ident() (in module postgresql.string) +
    + + +
    split_qname() (in module postgresql.string) +
    + + +
    split_sql() (in module postgresql.string) +
    + +
    + +
    split_sql_str() (in module postgresql.string) +
    + + +
    split_using() (in module postgresql.string) +
    + + +
    sql_column_types (postgresql.api.Statement attribute) +
    + + +
    sql_parameter_types (postgresql.api.Statement attribute) +
    + + +
    SREError +
    + + +
    ssl (postgresql.api.Installation attribute) +
    + +
    + +
    (postgresql.installation.Installation attribute) +
    + +
    + +
    start() (postgresql.api.Cluster method) +
    + +
    + +
    (postgresql.api.Transaction method) +
    + + +
    (postgresql.cluster.Cluster method) +
    + +
    + +
    Statement (class in postgresql.api) +
    + + +
    statement_from_id() (postgresql.api.Database method) +
    + + +
    statement_id (postgresql.api.Statement attribute) +
    + + +
    stop() (postgresql.api.Cluster method) +
    + +
    + +
    (postgresql.cluster.Cluster method) +
    + +
    + +
    StoredProcedure (class in postgresql.api) +
    + + +
    string (postgresql.api.Statement attribute) +
    + +
    + +

    T

    + + + +
    + +
    Transaction (class in postgresql.api) +
    + + +
    transfer() (in module postgresql.copyman) +
    + + +
    TRError +
    + +
    + +
    type (postgresql.api.Installation attribute) +
    + + +
    TypeConversionWarning (class in postgresql.exceptions) +
    + + +
    TypeIOError +
    + +
    + +

    U

    + + + +
    + +
    ulong_pack() (in module postgresql.copyman) +
    + + +
    unlisten() (postgresql.api.Database method) +
    + +
    + +
    unsplit() (in module postgresql.string) +
    + + +
    update() (postgresql.api.Settings method) +
    + +
    + +
    (postgresql.copyman.WireState method) +
    + +
    +
    + +

    V

    + + + +
    + +
    values() (postgresql.api.Settings method) +
    + + +
    version (in module postgresql) +
    + +
    + +
    (postgresql.api.Installation attribute) +
    + +
    +
    + +
    version_info (in module postgresql) +
    + +
    + +
    (postgresql.api.Database attribute) +
    + + +
    (postgresql.api.Installation attribute) +
    + +
    +
    + +

    W

    + + + +
    + +
    wait_until_started() (postgresql.api.Cluster method) +
    + +
    + +
    (postgresql.cluster.Cluster method) +
    + +
    + +
    wait_until_stopped() (postgresql.api.Cluster method) +
    + +
    + +
    (postgresql.cluster.Cluster method) +
    + +
    +
    + +
    WireState (class in postgresql.copyman) +
    + +
    + +

    X

    + + +
    + +
    xact (postgresql.api.Database attribute) +
    + +
    -
    - -
    @@ -79,13 +1196,16 @@

    Navigation

  • index
  • -
  • py-postgresql v1.0.2 documentation »
  • +
  • + modules |
  • +
  • py-postgresql 1.1.0dev documentation »
  • \ No newline at end of file diff --git a/postgresql/documentation/html/gotchas.html b/postgresql/documentation/html/gotchas.html index b00d7d42..444a11c9 100644 --- a/postgresql/documentation/html/gotchas.html +++ b/postgresql/documentation/html/gotchas.html @@ -3,17 +3,20 @@ + - Gotchas — py-postgresql v1.0.2 documentation + Gotchas — py-postgresql 1.1.0dev documentation + + - + @@ -33,13 +36,16 @@

    Navigation

  • index
  • +
  • + modules |
  • next |
  • previous |
  • -
  • py-postgresql v1.0.2 documentation »
  • +
  • py-postgresql 1.1.0dev documentation »
  • @@ -184,19 +190,22 @@

    Navigation

  • index
  • +
  • + modules |
  • next |
  • previous |
  • -
  • py-postgresql v1.0.2 documentation »
  • +
  • py-postgresql 1.1.0dev documentation »
  • \ No newline at end of file diff --git a/postgresql/documentation/html/index.html b/postgresql/documentation/html/index.html index b89675be..96ab8e61 100644 --- a/postgresql/documentation/html/index.html +++ b/postgresql/documentation/html/index.html @@ -3,17 +3,20 @@ + - py-postgresql — py-postgresql v1.0.2 documentation + py-postgresql — py-postgresql 1.1.0dev documentation + + - + @@ -32,10 +35,13 @@

    Navigation

  • index
  • +
  • + modules |
  • next |
  • -
  • py-postgresql v1.0.2 documentation »
  • +
  • py-postgresql 1.1.0dev documentation »
  • @@ -126,6 +132,7 @@

    ContentsChanges +
  • Modules +
  • @@ -230,16 +249,19 @@

    Navigation

  • index
  • +
  • + modules |
  • next |
  • -
  • py-postgresql v1.0.2 documentation »
  • +
  • py-postgresql 1.1.0dev documentation »
  • \ No newline at end of file diff --git a/postgresql/documentation/html/lib.html b/postgresql/documentation/html/lib.html index 38cc4914..3d58286e 100644 --- a/postgresql/documentation/html/lib.html +++ b/postgresql/documentation/html/lib.html @@ -3,17 +3,20 @@ + - Categories and Libraries — py-postgresql v1.0.2 documentation + Categories and Libraries — py-postgresql 1.1.0dev documentation + + - + @@ -33,13 +36,16 @@

    Navigation

  • index
  • +
  • + modules |
  • next |
  • previous |
  • -
  • py-postgresql v1.0.2 documentation »
  • +
  • py-postgresql 1.1.0dev documentation »
  • @@ -54,7 +60,7 @@

    Categories and Libraries

    Note

    -

    First-time users are encouraged to read the Audience and Motivation +

    First-time users are encouraged to read the Audience and Motivation section first.

    Libraries are a collection of SQL statements that can be bound to a @@ -105,7 +111,7 @@

    Writing Librariesget_user_info and get_user_info_v2 are identical. Empty components indicate the default effect.

    The second component in the section identifier is the symbol type. All Symbol -types are listed in Symbol Types. This can be +types are listed in Symbol Types. This can be used to specify what the section’s contents are or when to bind the symbol:

    Reference Symbols¶

    @@ -487,7 +493,7 @@

    Audience and MotivationTerminology¶

    The following terms are used throughout this chapter:

    -
    +
    Annotations
    The information of about a Symbol describing what it is and how it should be used.
    @@ -520,7 +526,7 @@

    Terminology index +
  • + modules |
  • next |
  • previous |
  • -
  • py-postgresql v1.0.2 documentation »
  • +
  • py-postgresql 1.1.0dev documentation »
  • \ No newline at end of file diff --git a/postgresql/documentation/html/notifyman.html b/postgresql/documentation/html/notifyman.html index 81c2ba56..1db01ca9 100644 --- a/postgresql/documentation/html/notifyman.html +++ b/postgresql/documentation/html/notifyman.html @@ -3,17 +3,20 @@ + - Notification Management — py-postgresql v1.0.2 documentation + Notification Management — py-postgresql 1.1.0dev documentation + + - + @@ -33,13 +36,16 @@

    Navigation

  • index
  • +
  • + modules |
  • next |
  • previous |
  • -
  • py-postgresql v1.0.2 documentation »
  • +
  • py-postgresql 1.1.0dev documentation »
  • @@ -50,10 +56,6 @@

    Navigation

    Notification Management¶

    -
    -

    Warning

    -

    postgresql.notifyman is a new feature in v1.0.

    -

    Relevant SQL commands: NOTIFY, LISTEN, UNLISTEN.

    @@ -191,18 +193,18 @@

    Notification Managers

    Notification Manager Constructors¶

    -
    +
    NotificationManager(*connections, timeout = None)
    Create a NotificationManager instance that manages the notifications coming from the given set of connections. The timeout keyword is optional and can be configured using the settimeout method as well.
    -
    +

    Notification Manager Interface Points¶

    -
    +
    NotificationManager.__iter__()
    Returns the instance; it is an iterator.
    NotificationManager.__next__()
    @@ -225,7 +227,7 @@

    Notification Manager Interface Pointsconnections set, and placed in garbage.

    -
    +

    Zero Timeout¶

    @@ -252,7 +254,7 @@

    Zero Timeout

    Summary of Characteristics¶

    -
      +
      • The iterator will continue until the connections die.
      • Objects yielded by the iterator are either None, an “idle event”, or an individual notification triple if using db.iternotifies(), or a @@ -269,7 +271,7 @@

        Summary of Characteristicsnm.connections set at any time.

      -
    +

    @@ -330,19 +332,22 @@

    Navigation

  • index
  • +
  • + modules |
  • next |
  • previous |
  • -
  • py-postgresql v1.0.2 documentation »
  • +
  • py-postgresql 1.1.0dev documentation »
  • \ No newline at end of file From 8222fbfd7b2fa2f94ff50c88cd8166aaa554f9d5 Mon Sep 17 00:00:00 2001 From: James William Pye Date: Tue, 20 Sep 2011 20:15:08 -0500 Subject: [PATCH 29/54] Note changes and attribution. --- postgresql/documentation/changes.txt | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/postgresql/documentation/changes.txt b/postgresql/documentation/changes.txt index 4de9a2da..b78c4e29 100644 --- a/postgresql/documentation/changes.txt +++ b/postgresql/documentation/changes.txt @@ -1,8 +1,14 @@ Changes ======= -1.0.3 in development --------------------- +1.0.3 released on 2011-09-24 +---------------------------- + + * Use raise x from y to generalize exceptions. (Elvis Pranskevichus) + * Alter postgresql.string.quote_ident to always quote. (Elvis Pranskevichus) + * Add postgresql.string.quote_ident_if_necessary (Modification of Elvis Pranskevichus' patch) + * Many postgresql.string bug fixes (Elvis Pranskevichus) + * Correct ResourceWarnings improving Python 3.2 support. (jwp) 1.0.2 released on 2010-09-18 ---------------------------- From 570b91dd5e2ab21468cb78ea87a8b1713e2215ac Mon Sep 17 00:00:00 2001 From: Elvis Pranskevichus Date: Wed, 1 Sep 2010 12:25:13 -0400 Subject: [PATCH 30/54] driver: Refactor connectors and reduce code duplication Connectors have some unnecessarily duplicated code. This refactors them a bit while also allowing to specify a custom socket factory. --- postgresql/driver/pq3.py | 92 ++++++++++++++++++++-------------------- 1 file changed, 47 insertions(+), 45 deletions(-) diff --git a/postgresql/driver/pq3.py b/postgresql/driver/pq3.py index 29c7aba8..9fd44a3d 100644 --- a/postgresql/driver/pq3.py +++ b/postgresql/driver/pq3.py @@ -2785,41 +2785,49 @@ def socket_factory_sequence(self): to the target host. """ -class IP4(SocketConnector): - 'Connector for establishing IPv4 connections' - ipv = 4 + def create_socket_factory(self, **params): + return SocketFactory(**params) + +class IPConnector(SocketConnector): def socket_factory_sequence(self): return self._socketcreators - def __init__(self, - host : "IPv4 Address (str)" = None, - port : int = None, - ipv = 4, - **kw - ): + def socket_factory_params(self, host, port, ipv, **kw): if ipv != self.ipv: - raise TypeError("'ipv' keyword must be '4'") + raise TypeError("'ipv' keyword must be '%d'" % self.ipv) if host is None: raise TypeError("'host' is a required keyword and cannot be 'None'") if port is None: raise TypeError("'port' is a required keyword and cannot be 'None'") - self.host = host - self.port = int(port) + + return {'socket_create': (self.address_family, socket.SOCK_STREAM), + 'socket_connect': (host, int(port))} + + def __init__(self, host, port, ipv, **kw): + params = self.socket_factory_params(host, port, ipv, **kw) + self.host, self.port = params['socket_connect'] # constant socket connector - self._socketcreator = SocketFactory( - (socket.AF_INET, socket.SOCK_STREAM), - (self.host, self.port) - ) - self._socketcreators = ( - self._socketcreator, - ) + self._socketcreator = self.create_socket_factory(**params) + self._socketcreators = (self._socketcreator,) super().__init__(**kw) -class IP6(SocketConnector): +class IP4(IPConnector): + 'Connector for establishing IPv4 connections' + ipv = 4 + address_family = socket.AF_INET + + def __init__(self, + host : "IPv4 Address (str)" = None, + port : int = None, + ipv = 4, + **kw + ): + super().__init__(host, port, ipv, **kw) + +class IP6(IPConnector): 'Connector for establishing IPv6 connections' ipv = 6 - def socket_factory_sequence(self): - return self._socketcreators + address_family = socket.AF_INET6 def __init__(self, host : "IPv6 Address (str)" = None, @@ -2827,37 +2835,25 @@ def __init__(self, ipv = 6, **kw ): - if ipv != self.ipv: - raise TypeError("'ipv' keyword must be '6'") - if host is None: - raise TypeError("'host' is a required keyword and cannot be 'None'") - if port is None: - raise TypeError("'port' is a required keyword and cannot be 'None'") - self.host = host - self.port = int(port) - # constant socket connector - self._socketcreator = SocketFactory( - (socket.AF_INET6, socket.SOCK_STREAM), - (self.host, self.port) - ) - self._socketcreators = ( - self._socketcreator, - ) - super().__init__(**kw) + super().__init__(host, port, ipv, **kw) class Unix(SocketConnector): 'Connector for establishing unix domain socket connections' def socket_factory_sequence(self): return self._socketcreators - def __init__(self, unix = None, **kw): + def socket_factory_params(self, unix): if unix is None: raise TypeError("'unix' is a required keyword and cannot be 'None'") - self.unix = unix + + return {'socket_create': (socket.AF_UNIX, socket.SOCK_STREAM), + 'socket_connect': unix} + + def __init__(self, unix = None, **kw): + params = self.socket_factory_params(unix) + self.unix = params['socket_connect'] # constant socket connector - self._socketcreator = SocketFactory( - (socket.AF_UNIX, socket.SOCK_STREAM), self.unix - ) + self._socketcreator = self.create_socket_factory(**params) self._socketcreators = (self._socketcreator,) super().__init__(**kw) @@ -2874,12 +2870,18 @@ def socket_factory_sequence(self): """ return [ # (AF, socktype, proto), (IP, Port) - SocketFactory(x[0:3], x[4][:2], self._socket_secure) + self.create_socket_factory(**(self.socket_factory_params(x[0:3], x[4][:2], + self._socket_secure))) for x in socket.getaddrinfo( self.host, self.port, self._address_family, socket.SOCK_STREAM ) ] + def socket_factory_params(self, socktype, address, sslparams): + return {'socket_create': socktype, + 'socket_connect': address, + 'socket_secure': sslparams} + def __init__(self, host : str = None, port : (str, int) = None, From bc377d14649c1ec59f8b4ca209e195bbc0a1a371 Mon Sep 17 00:00:00 2001 From: James William Pye Date: Sun, 25 Sep 2011 11:28:45 -0500 Subject: [PATCH 31/54] No Rows entry anymore. --- postgresql/api.py | 1 - 1 file changed, 1 deletion(-) diff --git a/postgresql/api.py b/postgresql/api.py index b5392cce..5cfed8c9 100644 --- a/postgresql/api.py +++ b/postgresql/api.py @@ -22,7 +22,6 @@ 'Message', 'Statement', 'Chunks', - 'Rows', 'Cursor', 'Connector', 'Category', From 4915075238deffb460b228067543c377f5164b42 Mon Sep 17 00:00:00 2001 From: James William Pye Date: Sun, 25 Sep 2011 11:32:21 -0500 Subject: [PATCH 32/54] Note revision. --- postgresql/project.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/postgresql/project.py b/postgresql/project.py index d97169e8..7136253f 100644 --- a/postgresql/project.py +++ b/postgresql/project.py @@ -10,7 +10,7 @@ description = 'Driver and tools library for PostgreSQL' # Set this to the target date when approaching a release. -date = None -tags = set(()) -version_info = (1, 1, 0) +date = 'Sat Sep 24 12:00:00 2011' +tags = set(('bugs', 'features',)) +version_info = (1, 0, 3) version = '.'.join(map(str, version_info)) + (date is None and 'dev' or '') From 29e7a11bea0c36c4ce124721815ec66d1de7077a Mon Sep 17 00:00:00 2001 From: James William Pye Date: Sun, 25 Sep 2011 11:33:09 -0500 Subject: [PATCH 33/54] Update documentation. --- .../documentation/html/_sources/changes.txt | 10 +- .../documentation/html/_static/basic.css | 39 +++- .../documentation/html/_static/default.css | 3 +- .../documentation/html/_static/doctools.js | 2 +- .../documentation/html/_static/pygments.css | 123 ++++++------- .../documentation/html/_static/searchtools.js | 169 ++++++++++++------ .../documentation/html/_static/sidebar.js | 8 +- .../documentation/html/_static/underscore.js | 7 + postgresql/documentation/html/admin.html | 4 +- postgresql/documentation/html/alock.html | 4 +- postgresql/documentation/html/bin.html | 4 +- postgresql/documentation/html/changes.html | 19 +- .../documentation/html/clientparameters.html | 4 +- postgresql/documentation/html/cluster.html | 4 +- postgresql/documentation/html/copyman.html | 4 +- .../documentation/html/doctrees/alock.doctree | Bin 32300 -> 32324 bytes .../html/doctrees/changes.doctree | Bin 20846 -> 23084 bytes .../html/doctrees/driver.doctree | Bin 422472 -> 422484 bytes .../html/doctrees/environment.pickle | Bin 97799 -> 99022 bytes .../html/doctrees/gotchas.doctree | Bin 24576 -> 24580 bytes .../documentation/html/doctrees/index.doctree | Bin 9992 -> 10012 bytes postgresql/documentation/html/driver.html | 4 +- postgresql/documentation/html/genindex.html | 20 ++- postgresql/documentation/html/gotchas.html | 4 +- postgresql/documentation/html/index.html | 9 +- postgresql/documentation/html/lib.html | 4 +- postgresql/documentation/html/notifyman.html | 4 +- postgresql/documentation/html/search.html | 23 ++- postgresql/documentation/html/searchindex.js | 2 +- 29 files changed, 307 insertions(+), 167 deletions(-) diff --git a/postgresql/documentation/html/_sources/changes.txt b/postgresql/documentation/html/_sources/changes.txt index 4de9a2da..b78c4e29 100644 --- a/postgresql/documentation/html/_sources/changes.txt +++ b/postgresql/documentation/html/_sources/changes.txt @@ -1,8 +1,14 @@ Changes ======= -1.0.3 in development --------------------- +1.0.3 released on 2011-09-24 +---------------------------- + + * Use raise x from y to generalize exceptions. (Elvis Pranskevichus) + * Alter postgresql.string.quote_ident to always quote. (Elvis Pranskevichus) + * Add postgresql.string.quote_ident_if_necessary (Modification of Elvis Pranskevichus' patch) + * Many postgresql.string bug fixes (Elvis Pranskevichus) + * Correct ResourceWarnings improving Python 3.2 support. (jwp) 1.0.2 released on 2010-09-18 ---------------------------- diff --git a/postgresql/documentation/html/_static/basic.css b/postgresql/documentation/html/_static/basic.css index 69f30d4f..f0379f35 100644 --- a/postgresql/documentation/html/_static/basic.css +++ b/postgresql/documentation/html/_static/basic.css @@ -4,7 +4,7 @@ * * Sphinx stylesheet -- basic theme. * - * :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -79,6 +79,14 @@ div.sphinxsidebar input { font-size: 1em; } +div.sphinxsidebar input[type="text"] { + width: 170px; +} + +div.sphinxsidebar input[type="submit"] { + width: 30px; +} + img { border: 0; } @@ -213,12 +221,29 @@ p.rubric { font-weight: bold; } +img.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + .align-left { text-align: left; } .align-center { - clear: both; text-align: center; } @@ -395,7 +420,7 @@ dl.glossary dt { } .footnote:target { - background-color: #ffa + background-color: #ffa; } .line-block { @@ -422,10 +447,16 @@ dl.glossary dt { font-style: oblique; } +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + /* -- code displays --------------------------------------------------------- */ pre { overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ } td.linenos pre { @@ -506,4 +537,4 @@ span.eqno { #top-link { display: none; } -} +} \ No newline at end of file diff --git a/postgresql/documentation/html/_static/default.css b/postgresql/documentation/html/_static/default.css index b30cb790..21f3f509 100644 --- a/postgresql/documentation/html/_static/default.css +++ b/postgresql/documentation/html/_static/default.css @@ -4,7 +4,7 @@ * * Sphinx stylesheet -- default theme. * - * :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -114,6 +114,7 @@ div.sphinxsidebar input { } + /* -- hyperlink styles ------------------------------------------------------ */ a { diff --git a/postgresql/documentation/html/_static/doctools.js b/postgresql/documentation/html/_static/doctools.js index eeea95ea..8b9bd2c0 100644 --- a/postgresql/documentation/html/_static/doctools.js +++ b/postgresql/documentation/html/_static/doctools.js @@ -4,7 +4,7 @@ * * Sphinx JavaScript utilties for all documentation. * - * :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ diff --git a/postgresql/documentation/html/_static/pygments.css b/postgresql/documentation/html/_static/pygments.css index 1f2d2b61..1a14f2ae 100644 --- a/postgresql/documentation/html/_static/pygments.css +++ b/postgresql/documentation/html/_static/pygments.css @@ -1,61 +1,62 @@ -.hll { background-color: #ffffcc } -.c { color: #408090; font-style: italic } /* Comment */ -.err { border: 1px solid #FF0000 } /* Error */ -.k { color: #007020; font-weight: bold } /* Keyword */ -.o { color: #666666 } /* Operator */ -.cm { color: #408090; font-style: italic } /* Comment.Multiline */ -.cp { color: #007020 } /* Comment.Preproc */ -.c1 { color: #408090; font-style: italic } /* Comment.Single */ -.cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ -.gd { color: #A00000 } /* Generic.Deleted */ -.ge { font-style: italic } /* Generic.Emph */ -.gr { color: #FF0000 } /* Generic.Error */ -.gh { color: #000080; font-weight: bold } /* Generic.Heading */ -.gi { color: #00A000 } /* Generic.Inserted */ -.go { color: #303030 } /* Generic.Output */ -.gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ -.gs { font-weight: bold } /* Generic.Strong */ -.gu { color: #800080; font-weight: bold } /* Generic.Subheading */ -.gt { color: #0040D0 } /* Generic.Traceback */ -.kc { color: #007020; font-weight: bold } /* Keyword.Constant */ -.kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ -.kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ -.kp { color: #007020 } /* Keyword.Pseudo */ -.kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ -.kt { color: #902000 } /* Keyword.Type */ -.m { color: #208050 } /* Literal.Number */ -.s { color: #4070a0 } /* Literal.String */ -.na { color: #4070a0 } /* Name.Attribute */ -.nb { color: #007020 } /* Name.Builtin */ -.nc { color: #0e84b5; font-weight: bold } /* Name.Class */ -.no { color: #60add5 } /* Name.Constant */ -.nd { color: #555555; font-weight: bold } /* Name.Decorator */ -.ni { color: #d55537; font-weight: bold } /* Name.Entity */ -.ne { color: #007020 } /* Name.Exception */ -.nf { color: #06287e } /* Name.Function */ -.nl { color: #002070; font-weight: bold } /* Name.Label */ -.nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ -.nt { color: #062873; font-weight: bold } /* Name.Tag */ -.nv { color: #bb60d5 } /* Name.Variable */ -.ow { color: #007020; font-weight: bold } /* Operator.Word */ -.w { color: #bbbbbb } /* Text.Whitespace */ -.mf { color: #208050 } /* Literal.Number.Float */ -.mh { color: #208050 } /* Literal.Number.Hex */ -.mi { color: #208050 } /* Literal.Number.Integer */ -.mo { color: #208050 } /* Literal.Number.Oct */ -.sb { color: #4070a0 } /* Literal.String.Backtick */ -.sc { color: #4070a0 } /* Literal.String.Char */ -.sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ -.s2 { color: #4070a0 } /* Literal.String.Double */ -.se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ -.sh { color: #4070a0 } /* Literal.String.Heredoc */ -.si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ -.sx { color: #c65d09 } /* Literal.String.Other */ -.sr { color: #235388 } /* Literal.String.Regex */ -.s1 { color: #4070a0 } /* Literal.String.Single */ -.ss { color: #517918 } /* Literal.String.Symbol */ -.bp { color: #007020 } /* Name.Builtin.Pseudo */ -.vc { color: #bb60d5 } /* Name.Variable.Class */ -.vg { color: #bb60d5 } /* Name.Variable.Global */ -.vi { color: #bb60d5 } /* Name.Variable.Instance */ -.il { color: #208050 } /* Literal.Number.Integer.Long */ \ No newline at end of file +.highlight .hll { background-color: #ffffcc } +.highlight { background: #eeffcc; } +.highlight .c { color: #408090; font-style: italic } /* Comment */ +.highlight .err { border: 1px solid #FF0000 } /* Error */ +.highlight .k { color: #007020; font-weight: bold } /* Keyword */ +.highlight .o { color: #666666 } /* Operator */ +.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #007020 } /* Comment.Preproc */ +.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ +.highlight .gd { color: #A00000 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #FF0000 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #303030 } /* Generic.Output */ +.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #0040D0 } /* Generic.Traceback */ +.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #007020 } /* Keyword.Pseudo */ +.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #902000 } /* Keyword.Type */ +.highlight .m { color: #208050 } /* Literal.Number */ +.highlight .s { color: #4070a0 } /* Literal.String */ +.highlight .na { color: #4070a0 } /* Name.Attribute */ +.highlight .nb { color: #007020 } /* Name.Builtin */ +.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ +.highlight .no { color: #60add5 } /* Name.Constant */ +.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */ +.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */ +.highlight .ne { color: #007020 } /* Name.Exception */ +.highlight .nf { color: #06287e } /* Name.Function */ +.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */ +.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ +.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #bb60d5 } /* Name.Variable */ +.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mf { color: #208050 } /* Literal.Number.Float */ +.highlight .mh { color: #208050 } /* Literal.Number.Hex */ +.highlight .mi { color: #208050 } /* Literal.Number.Integer */ +.highlight .mo { color: #208050 } /* Literal.Number.Oct */ +.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */ +.highlight .sc { color: #4070a0 } /* Literal.String.Char */ +.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #4070a0 } /* Literal.String.Double */ +.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ +.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */ +.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ +.highlight .sx { color: #c65d09 } /* Literal.String.Other */ +.highlight .sr { color: #235388 } /* Literal.String.Regex */ +.highlight .s1 { color: #4070a0 } /* Literal.String.Single */ +.highlight .ss { color: #517918 } /* Literal.String.Symbol */ +.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */ +.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */ +.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */ +.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/postgresql/documentation/html/_static/searchtools.js b/postgresql/documentation/html/_static/searchtools.js index 513a7bad..663be4c9 100644 --- a/postgresql/documentation/html/_static/searchtools.js +++ b/postgresql/documentation/html/_static/searchtools.js @@ -1,10 +1,10 @@ /* - * searchtools.js - * ~~~~~~~~~~~~~~ + * searchtools.js_t + * ~~~~~~~~~~~~~~~~ * * Sphinx JavaScript utilties for the full-text search. * - * :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -36,10 +36,11 @@ jQuery.makeSearchSummary = function(text, keywords, hlwords) { return rv; } + /** * Porter Stemmer */ -var PorterStemmer = function() { +var Stemmer = function() { var step2list = { ational: 'ate', @@ -300,20 +301,20 @@ var Search = { }, query : function(query) { - var stopwords = ['and', 'then', 'into', 'it', 'as', 'are', 'in', - 'if', 'for', 'no', 'there', 'their', 'was', 'is', - 'be', 'to', 'that', 'but', 'they', 'not', 'such', - 'with', 'by', 'a', 'on', 'these', 'of', 'will', - 'this', 'near', 'the', 'or', 'at']; - - // stem the searchterms and add them to the correct list - var stemmer = new PorterStemmer(); + var stopwords = ["and","then","into","it","as","are","in","if","for","no","there","their","was","is","be","to","that","but","they","not","such","with","by","a","on","these","of","will","this","near","the","or","at"]; + + // Stem the searchterms and add them to the correct list + var stemmer = new Stemmer(); var searchterms = []; var excluded = []; var hlterms = []; var tmp = query.split(/\s+/); - var object = (tmp.length == 1) ? tmp[0].toLowerCase() : null; + var objectterms = []; for (var i = 0; i < tmp.length; i++) { + if (tmp[i] != "") { + objectterms.push(tmp[i].toLowerCase()); + } + if ($u.indexOf(stopwords, tmp[i]) != -1 || tmp[i].match(/^\d+$/) || tmp[i] == "") { // skip this "word" @@ -344,9 +345,6 @@ var Search = { var filenames = this._index.filenames; var titles = this._index.titles; var terms = this._index.terms; - var objects = this._index.objects; - var objtypes = this._index.objtypes; - var objnames = this._index.objnames; var fileMap = {}; var files = null; // different result priorities @@ -357,40 +355,19 @@ var Search = { $('#search-progress').empty(); // lookup as object - if (object != null) { - for (var prefix in objects) { - for (var name in objects[prefix]) { - var fullname = (prefix ? prefix + '.' : '') + name; - if (fullname.toLowerCase().indexOf(object) > -1) { - match = objects[prefix][name]; - descr = objnames[match[1]] + _(', in ') + titles[match[0]]; - // XXX the generated anchors are not generally correct - // XXX there may be custom prefixes - result = [filenames[match[0]], fullname, '#'+fullname, descr]; - switch (match[2]) { - case 1: objectResults.push(result); break; - case 0: importantResults.push(result); break; - case 2: unimportantResults.push(result); break; - } - } - } - } + for (var i = 0; i < objectterms.length; i++) { + var others = [].concat(objectterms.slice(0,i), + objectterms.slice(i+1, objectterms.length)) + var results = this.performObjectSearch(objectterms[i], others); + // Assume first word is most likely to be the object, + // other words more likely to be in description. + // Therefore put matches for earlier words first. + // (Results are eventually used in reverse order). + objectResults = results[0].concat(objectResults); + importantResults = results[1].concat(importantResults); + unimportantResults = results[2].concat(unimportantResults); } - // sort results descending - objectResults.sort(function(a, b) { - return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0); - }); - - importantResults.sort(function(a, b) { - return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0); - }); - - unimportantResults.sort(function(a, b) { - return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0); - }); - - // perform the search on the required terms for (var i = 0; i < searchterms.length; i++) { var word = searchterms[i]; @@ -456,10 +433,23 @@ var Search = { if (results.length) { var item = results.pop(); var listItem = $('
  • '); - listItem.append($('').attr( - 'href', - item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX + - highlightstring + item[2]).html(item[1])); + if (DOCUMENTATION_OPTIONS.FILE_SUFFIX == '') { + // dirhtml builder + var dirname = item[0] + '/'; + if (dirname.match(/\/index\/$/)) { + dirname = dirname.substring(0, dirname.length-6); + } else if (dirname == 'index/') { + dirname = ''; + } + listItem.append($('').attr('href', + DOCUMENTATION_OPTIONS.URL_ROOT + dirname + + highlightstring + item[2]).html(item[1])); + } else { + // normal html builders + listItem.append($('').attr('href', + item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX + + highlightstring + item[2]).html(item[1])); + } if (item[3]) { listItem.append($(' (' + item[3] + ')')); Search.output.append(listItem); @@ -472,11 +462,11 @@ var Search = { if (data != '') { listItem.append($.makeSearchSummary(data, searchterms, hlterms)); Search.output.append(listItem); - listItem.slideDown(5, function() { - displayNextItem(); - }); } - }); + listItem.slideDown(5, function() { + displayNextItem(); + }); + }, "text"); } else { // no source available, just display title Search.output.append(listItem); @@ -497,9 +487,74 @@ var Search = { } } displayNextItem(); + }, + + performObjectSearch : function(object, otherterms) { + var filenames = this._index.filenames; + var objects = this._index.objects; + var objnames = this._index.objnames; + var titles = this._index.titles; + + var importantResults = []; + var objectResults = []; + var unimportantResults = []; + + for (var prefix in objects) { + for (var name in objects[prefix]) { + var fullname = (prefix ? prefix + '.' : '') + name; + if (fullname.toLowerCase().indexOf(object) > -1) { + var match = objects[prefix][name]; + var objname = objnames[match[1]][2]; + var title = titles[match[0]]; + // If more than one term searched for, we require other words to be + // found in the name/title/description + if (otherterms.length > 0) { + var haystack = (prefix + ' ' + name + ' ' + + objname + ' ' + title).toLowerCase(); + var allfound = true; + for (var i = 0; i < otherterms.length; i++) { + if (haystack.indexOf(otherterms[i]) == -1) { + allfound = false; + break; + } + } + if (!allfound) { + continue; + } + } + var descr = objname + _(', in ') + title; + anchor = match[3]; + if (anchor == '') + anchor = fullname; + else if (anchor == '-') + anchor = objnames[match[1]][1] + '-' + fullname; + result = [filenames[match[0]], fullname, '#'+anchor, descr]; + switch (match[2]) { + case 1: objectResults.push(result); break; + case 0: importantResults.push(result); break; + case 2: unimportantResults.push(result); break; + } + } + } + } + + // sort results descending + objectResults.sort(function(a, b) { + return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0); + }); + + importantResults.sort(function(a, b) { + return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0); + }); + + unimportantResults.sort(function(a, b) { + return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0); + }); + + return [importantResults, objectResults, unimportantResults] } } $(document).ready(function() { Search.init(); -}); +}); \ No newline at end of file diff --git a/postgresql/documentation/html/_static/sidebar.js b/postgresql/documentation/html/_static/sidebar.js index be206ede..a45e1926 100644 --- a/postgresql/documentation/html/_static/sidebar.js +++ b/postgresql/documentation/html/_static/sidebar.js @@ -16,7 +16,7 @@ * Once the browser is closed the cookie is deleted and the position * reset to the default (expanded). * - * :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -29,6 +29,9 @@ $(function() { var sidebar = $('.sphinxsidebar'); var sidebarwrapper = $('.sphinxsidebarwrapper'); + // for some reason, the document has no sidebar; do not run into errors + if (!sidebar.length) return; + // original margin-left of the bodywrapper and width of the sidebar // with the sidebar expanded var bw_margin_expanded = bodywrapper.css('margin-left'); @@ -91,6 +94,7 @@ $(function() { '
    «
    ' ); var sidebarbutton = $('#sidebarbutton'); + light_color = sidebarbutton.css('background-color'); // find the height of the viewport to center the '<<' in the page var viewport_height; if (window.innerHeight) @@ -144,4 +148,4 @@ $(function() { add_sidebar_button(); var sidebarbutton = $('#sidebarbutton'); set_position_from_cookie(); -}); \ No newline at end of file +}); diff --git a/postgresql/documentation/html/_static/underscore.js b/postgresql/documentation/html/_static/underscore.js index 9146e086..5d899143 100644 --- a/postgresql/documentation/html/_static/underscore.js +++ b/postgresql/documentation/html/_static/underscore.js @@ -1,3 +1,10 @@ +// Underscore.js 0.5.5 +// (c) 2009 Jeremy Ashkenas, DocumentCloud Inc. +// Underscore is freely distributable under the terms of the MIT license. +// Portions of Underscore are inspired by or borrowed from Prototype.js, +// Oliver Steele's Functional, and John Resig's Micro-Templating. +// For all details and documentation: +// http://documentcloud.github.com/underscore/ (function(){var j=this,n=j._,i=function(a){this._wrapped=a},m=typeof StopIteration!=="undefined"?StopIteration:"__break__",b=j._=function(a){return new i(a)};if(typeof exports!=="undefined")exports._=b;var k=Array.prototype.slice,o=Array.prototype.unshift,p=Object.prototype.toString,q=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;b.VERSION="0.5.5";b.each=function(a,c,d){try{if(a.forEach)a.forEach(c,d);else if(b.isArray(a)||b.isArguments(a))for(var e=0,f=a.length;eThis Page
    diff --git a/postgresql/documentation/html/alock.html b/postgresql/documentation/html/alock.html index 52632864..46c92693 100644 --- a/postgresql/documentation/html/alock.html +++ b/postgresql/documentation/html/alock.html @@ -187,7 +187,7 @@

    This Page

    diff --git a/postgresql/documentation/html/bin.html b/postgresql/documentation/html/bin.html index 2e1860ee..b335ff32 100644 --- a/postgresql/documentation/html/bin.html +++ b/postgresql/documentation/html/bin.html @@ -304,7 +304,7 @@

    This Page

    diff --git a/postgresql/documentation/html/changes.html b/postgresql/documentation/html/changes.html index f84c2fc6..37221716 100644 --- a/postgresql/documentation/html/changes.html +++ b/postgresql/documentation/html/changes.html @@ -56,8 +56,17 @@

    Navigation

    Changes¶

    -
    -

    1.0.3 in development¶

    +
    +

    1.0.3 released on 2011-09-24¶

    +
    +
      +
    • Use raise x from y to generalize exceptions. (Elvis Pranskevichus)
    • +
    • Alter postgresql.string.quote_ident to always quote. (Elvis Pranskevichus)
    • +
    • Add postgresql.string.quote_ident_if_necessary (Modification of Elvis Pranskevichus’ patch)
    • +
    • Many postgresql.string bug fixes (Elvis Pranskevichus)
    • +
    • Correct ResourceWarnings improving Python 3.2 support. (jwp)
    • +
    +

    1.0.2 released on 2010-09-18¶

    @@ -141,7 +150,7 @@

    1.0 released on 2010-03-27Table Of Contents