[Python-apps-commits] r5415 - in packages/ibid/trunk/debian (3 files)

stefanor-guest at users.alioth.debian.org stefanor-guest at users.alioth.debian.org
Thu Jun 17 09:48:52 UTC 2010


    Date: Thursday, June 17, 2010 @ 09:48:50
  Author: stefanor-guest
Revision: 5415

Apply sqlalchemy-0.6-support.patch, allowing Debian to transition to SQLAlchemy 0.6 (Closes: #584761)

Added:
  packages/ibid/trunk/debian/patches/sqlalchemy-0.6-support.patch
Modified:
  packages/ibid/trunk/debian/changelog
  packages/ibid/trunk/debian/patches/series

Modified: packages/ibid/trunk/debian/changelog
===================================================================
--- packages/ibid/trunk/debian/changelog	2010-06-16 08:21:23 UTC (rev 5414)
+++ packages/ibid/trunk/debian/changelog	2010-06-17 09:48:50 UTC (rev 5415)
@@ -2,6 +2,8 @@
 
   * Don't leak uid and umask into source tarball.
   * Suggest nmap.
+  * Apply sqlalchemy-0.6-support.patch, allowing Debian to transition to
+    SQLAlchemy 0.6 (Closes: #584761)
 
  -- Stefano Rivera <stefano at rivera.za.net>  Fri, 12 Mar 2010 20:00:58 +0200
 

Modified: packages/ibid/trunk/debian/patches/series
===================================================================
--- packages/ibid/trunk/debian/patches/series	2010-06-16 08:21:23 UTC (rev 5414)
+++ packages/ibid/trunk/debian/patches/series	2010-06-17 09:48:50 UTC (rev 5415)
@@ -1,3 +1,4 @@
+sqlalchemy-0.6-support.patch
 tac-not-needed.diff
 docs.diff
 separate-data.diff

Added: packages/ibid/trunk/debian/patches/sqlalchemy-0.6-support.patch
===================================================================
--- packages/ibid/trunk/debian/patches/sqlalchemy-0.6-support.patch	                        (rev 0)
+++ packages/ibid/trunk/debian/patches/sqlalchemy-0.6-support.patch	2010-06-17 09:48:50 UTC (rev 5415)
@@ -0,0 +1,440 @@
+Description: Ibid 0.1.0 only supports SQLAlchemy 0.4 an 0.5, but Debian now
+ ships 0.6. This is a preliminary version of the upstream patch, bumping
+ supported versions to 0.5 and 0.6 (0.4 and 0.6 have mutually incompatible APIs)
+Origin: https://code.launchpad.net/~stefanor/ibid/sqlalchemy-0.6/+merge/27737
+Bug-Debian: http://bugs.debian.org/584761
+Last-Update: 2010-06-17
+--- a/ibid/core.py
++++ b/ibid/core.py
+@@ -329,28 +329,33 @@
+         else:
+             if uri.startswith(u'mysql://'):
+                 if u'?' not in uri:
+-                    uri += u'?charset=utf8'
+-                else:
+-                    params = parse_qs(uri.split(u'?', 1)[1])
+-                    if u'charset' not in params:
+-                        uri += u'&charset=utf8'
++                    uri += u'?'
++                params = parse_qs(uri.split(u'?', 1)[1])
++                if u'charset' not in params:
++                    uri += u'&charset=utf8'
++                if u'sql_mode' not in params:
++                    uri += u'&sql_mode=ANSI_QUOTES'
++                # As recommended by SQLAlchemy due to a memory leak:
++                # http://www.sqlalchemy.org/trac/wiki/DatabaseNotes
++                if u'use_unicode' not in params:
++                    uri += u'&use_unicode=0'
+ 
+             engine = create_engine(uri, encoding='utf-8',
+-                convert_unicode=True, assert_unicode=True, echo=echo)
++                convert_unicode=True, assert_unicode=True, echo=echo,
++                # For MySQL which closes 8hr old connections:
++                pool_recycle=3600)
+ 
+             if uri.startswith('mysql://'):
+                 class MySQLModeListener(object):
+                     def connect(self, dbapi_con, con_record):
+-                        dbapi_con.set_sql_mode("ANSI")
+                         mysql_engine = ibid.config.get('mysql_engine', 'InnoDB')
+                         c = dbapi_con.cursor()
+-                        c.execute("SET storage_engine=%s;" % mysql_engine)
+-                        c.execute("SET time_zone='+0:00';")
++                        c.execute("SET SESSION storage_engine=%s;"
++                                  % mysql_engine)
++                        c.execute("SET SESSION time_zone='+0:00';")
+                         c.close()
+                 engine.pool.add_listener(MySQLModeListener())
+ 
+-                engine.dialect.use_ansiquotes = True
+-
+             elif uri.startswith('postgres://'):
+                 class PGSQLModeListener(object):
+                     def connect(self, dbapi_con, con_record):
+--- a/ibid/db/__init__.py
++++ b/ibid/db/__init__.py
+@@ -19,7 +19,4 @@
+ from ibid.db.versioned_schema import VersionedSchema, SchemaVersionException, \
+                                      schema_version_check, upgrade_schemas
+ 
+-# We use SQLAlchemy 0.4 compatible .save_or_update() functions
+-_warnings.filterwarnings('ignore', 'Use session.add\(\)', SADeprecationWarning)
+-
+ # vi: set et sta sw=4 ts=4:
+--- a/ibid/db/versioned_schema.py
++++ b/ibid/db/versioned_schema.py
+@@ -4,8 +4,8 @@
+ import logging
+ import re
+ 
+-from sqlalchemy import Column, Index, UniqueConstraint, MetaData, \
+-                       __version__ as _sqlalchemy_version
++from sqlalchemy import Column, Index, CheckConstraint, UniqueConstraint, \
++                       MetaData, __version__ as _sqlalchemy_version
+ from sqlalchemy.exceptions import InvalidRequestError, OperationalError, \
+                                   ProgrammingError, InternalError
+ if _sqlalchemy_version < '0.5':
+@@ -78,7 +78,7 @@
+                 self._create_table()
+ 
+                 schema = Schema(unicode(self.table.name), self.version)
+-                session.save_or_update(schema)
++                session.add(schema)
+                 return
+             Schema.__table__ = self._get_reflected_model()
+ 
+@@ -92,7 +92,7 @@
+                 self._create_table()
+ 
+                 schema = Schema(unicode(self.table.name), self.version)
+-                session.save_or_update(schema)
++                session.add(schema)
+ 
+             elif self.version > schema.version:
+                 for version in range(schema.version + 1, self.version + 1):
+@@ -104,7 +104,7 @@
+                     getattr(self, 'upgrade_%i_to_%i' % (version - 1, version))()
+ 
+                     schema.version = version
+-                    session.save_or_update(schema)
++                    session.add(schema)
+ 
+                     self.upgrade_reflected_model = \
+                             MetaData(session.bind, reflect=True)
+@@ -176,6 +176,8 @@
+                     ('constraints', old_constraints),
+                     ('indexes', old_indexes)):
+                 for constraint in old_list:
++                    if isinstance(constraint, CheckConstraint):
++                        continue
+                     if any(True for column in constraint.columns
+                             if isinstance(column.type, IbidUnicodeText)):
+                         indices.append((
+--- a/ibid/plugins/codecontest.py
++++ b/ibid/plugins/codecontest.py
+@@ -239,7 +239,7 @@
+             usaco_account[0].value = usaco_user
+         else:
+             account.attributes.append(Attribute('usaco_account', usaco_user))
+-        event.session.save_or_update(account)
++        event.session.add(account)
+         event.session.commit()
+ 
+         event.addresponse(u'Done')
+--- a/ibid/plugins/factoid.py
++++ b/ibid/plugins/factoid.py
+@@ -84,7 +84,7 @@
+                     .params(pattern='%\\_\\%%', escape='\\') \
+                     .all():
+                 row.wild = True
+-                self.upgrade_session.save_or_update(row)
++                self.upgrade_session.add(row)
+         def upgrade_7_to_8(self):
+             self.drop_index(self.table.c._name)
+             self.alter_column(Column('name',
+@@ -367,7 +367,7 @@
+ 
+             name = FactoidName(unicode(target), event.identity)
+             factoid.names.append(name)
+-            event.session.save_or_update(factoid)
++            event.session.add(factoid)
+             event.session.commit()
+             event.addresponse(True)
+             log.info(u"Added name '%s' to factoid %s (%s) by %s/%s (%s)",
+@@ -552,7 +552,7 @@
+             factoid = Factoid()
+             fname = FactoidName(unicode(name), event.identity)
+             factoid.names.append(fname)
+-            event.session.save_or_update(factoid)
++            event.session.add(factoid)
+             event.session.flush()
+             log.info(u"Creating factoid %s with name '%s' by %s", factoid.id, fname.name, event.identity)
+ 
+@@ -560,7 +560,7 @@
+             value = '%s %s' % (verb, value)
+         fvalue = FactoidValue(unicode(value), event.identity)
+         factoid.values.append(fvalue)
+-        event.session.save_or_update(factoid)
++        event.session.add(factoid)
+         event.session.commit()
+         self.last_set_factoid=factoid.names[0].name
+         log.info(u"Added value '%s' to factoid %s (%s) by %s/%s (%s)",
+@@ -614,7 +614,7 @@
+ 
+             oldvalue = factoid[2].value
+             factoid[2].value += suffix
+-            event.session.save_or_update(factoid[2])
++            event.session.add(factoid[2])
+             event.session.commit()
+ 
+             log.info(u"Appended '%s' to value %s of factoid %s (%s) by %s/%s (%s)",
+@@ -707,7 +707,7 @@
+                     event.addresponse(u"That operation makes no sense. Try something like y/abcdef/ABCDEF/")
+                     return
+ 
+-            event.session.save_or_update(factoid[2])
++            event.session.add(factoid[2])
+             event.session.commit()
+ 
+             log.info(u"Applying '%s' to value %s of factoid %s (%s) by %s/%s (%s)",
+--- a/ibid/plugins/feeds.py
++++ b/ibid/plugins/feeds.py
+@@ -142,7 +142,7 @@
+             return
+ 
+         feed = Feed(unicode(name), unicode(url), event.identity)
+-        event.session.save(feed)
++        event.session.add(feed)
+         event.session.commit()
+         event.addresponse(True)
+         log.info(u"Added feed '%s' by %s/%s (%s): %s (Found %s entries)",
+--- a/ibid/plugins/identity.py
++++ b/ibid/plugins/identity.py
+@@ -54,7 +54,7 @@
+             return
+ 
+         account = Account(username)
+-        event.session.save_or_update(account)
++        event.session.add(account)
+         event.session.commit()
+         log.info(u"Created account %s (%s) by %s/%s (%s)",
+                 account.id, account.username, event.account, event.identity, event.sender['connection'])
+@@ -64,14 +64,14 @@
+                     .filter_by(identity=username, source=event.source).first()
+             if identity:
+                 identity.account_id = account.id
+-                event.session.save_or_update(identity)
++                event.session.add(identity)
+                 event.session.commit()
+                 log.info(u"Attached identity %s (%s on %s) to account %s (%s)",
+                         identity.id, identity.identity, identity.source, account.id, account.username)
+         else:
+             identity = event.session.query(Identity).get(event.identity)
+             identity.account_id = account.id
+-            event.session.save_or_update(identity)
++            event.session.add(identity)
+             event.session.commit()
+             log.info(u"Attached identity %s (%s on %s) to account %s (%s)",
+                     identity.id, identity.identity, identity.source, account.id, account.username)
+@@ -132,7 +132,7 @@
+         oldname = account.username
+         account.username = newname
+ 
+-        event.session.save_or_update(account)
++        event.session.add(account)
+         event.session.commit()
+         identify_cache.clear()
+ 
+@@ -182,12 +182,12 @@
+                         return
+ 
+                     account = Account(username)
+-                    event.session.save_or_update(account)
++                    event.session.add(account)
+ 
+                     currentidentity = event.session.query(Identity) \
+                             .get(event.identity)
+                     currentidentity.account_id = account.id
+-                    event.session.save_or_update(currentidentity)
++                    event.session.add(currentidentity)
+ 
+                     identify_cache.clear()
+ 
+@@ -249,7 +249,7 @@
+             if not ident:
+                 ident = Identity(source, identity)
+             ident.account_id = account.id
+-            event.session.save_or_update(ident)
++            event.session.add(ident)
+             event.session.commit()
+ 
+             identify_cache.clear()
+@@ -275,7 +275,7 @@
+             if not identity:
+                 identity = Identity(source, user)
+             identity.account_id = account_id
+-            event.session.save_or_update(identity)
++            event.session.add(identity)
+             identify_cache.clear()
+ 
+             del self.tokens[token]
+@@ -307,7 +307,7 @@
+             event.addresponse(u"I don't know about that identity")
+         else:
+             identity.account_id = None
+-            event.session.save_or_update(identity)
++            event.session.add(identity)
+             event.session.commit()
+ 
+             identify_cache.clear()
+@@ -343,7 +343,7 @@
+                 return
+ 
+         account.attributes.append(Attribute(name, value))
+-        event.session.save_or_update(account)
++        event.session.add(account)
+         event.session.commit()
+ 
+         event.addresponse(True)
+@@ -466,7 +466,7 @@
+                     .first()
+             if not identity:
+                 identity = Identity(event.source, event.sender['id'])
+-                event.session.save_or_update(identity)
++                event.session.add(identity)
+                 try:
+                     event.session.commit()
+                     log.info(u'Created identity %s for %s on %s', identity.id, identity.identity, identity.source)
+@@ -545,7 +545,7 @@
+             credential = password
+ 
+         credential = Credential(method, credential, source, account.id)
+-        event.session.save_or_update(credential)
++        event.session.add(credential)
+         event.session.commit()
+         log.info(u"Added %s credential %s for account %s (%s) on %s by account %s",
+                 method, credential.credential, account.id, account.username, source, event.account)
+@@ -600,7 +600,7 @@
+                 return
+ 
+             permission.value = value
+-            event.session.save_or_update(permission)
++            event.session.add(permission)
+ 
+         event.session.commit()
+         ibid.auth.drop_caches()
+--- a/ibid/plugins/karma.py
++++ b/ibid/plugins/karma.py
+@@ -112,7 +112,7 @@
+ 
+             event.session.delete(karma)
+         else:
+-            event.session.save_or_update(karma)
++            event.session.add(karma)
+         event.session.commit()
+ 
+         log.info(u"%s karma for '%s' by %s/%s (%s) because: %s",
+--- a/ibid/plugins/memo.py
++++ b/ibid/plugins/memo.py
+@@ -114,7 +114,7 @@
+                 event.addresponse(u'I am not connected to %s', source)
+                 return
+             to = Identity(source, who)
+-            event.session.save(to)
++            event.session.add(to)
+             event.session.commit()
+ 
+             log.info(u"Created identity %s for %s on %s", to.id, to.identity,
+@@ -129,7 +129,7 @@
+ 
+         memo = Memo(event.identity, to.id, memo,
+                     how.lower() in (u'pm', u'privmsg', u'msg'))
+-        event.session.save_or_update(memo)
++        event.session.add(memo)
+ 
+         event.session.commit()
+         log.info(u"Stored memo %s for %s (%s) from %s (%s): %s",
+@@ -280,7 +280,7 @@
+                 })
+ 
+             memo.delivered = True
+-            event.session.save_or_update(memo)
++            event.session.add(memo)
+             event.session.commit()
+             log.info(u"Delivered memo %s to %s (%s)",
+                     memo.id, event.identity, event.sender['connection'])
+--- a/ibid/plugins/seen.py
++++ b/ibid/plugins/seen.py
+@@ -86,7 +86,7 @@
+         sighting.time = event.time
+         sighting.count = sighting.count + 1
+ 
+-        event.session.save_or_update(sighting)
++        event.session.add(sighting)
+         try:
+             event.session.commit()
+         except IntegrityError:
+--- a/ibid/plugins/urlgrab.py
++++ b/ibid/plugins/urlgrab.py
+@@ -76,7 +76,7 @@
+                 url = 'http://%s' % url
+ 
+         u = URL(url, event.channel, event.identity)
+-        event.session.save_or_update(u)
++        event.session.add(u)
+ 
+         if self.service and self.username:
+             self._post_url(event, url)
+--- a/scripts/ibid-factpack
++++ b/scripts/ibid-factpack
+@@ -85,7 +85,7 @@
+     exit(5)
+ 
+ factpack = Factpack(name)
+-session.save(factpack)
++session.add(factpack)
+ session.flush()
+ 
+ existing = []
+@@ -102,7 +102,7 @@
+         fvalue = FactoidValue(unicode(value), None, factpack=factpack.id)
+         factoid.values.append(fvalue)
+     if len(factoid.names) > 0:
+-        session.save(factoid)
++        session.add(factoid)
+ 
+ if existing and not options.skip:
+     print >> stderr, u'The following factoids already exist in the database. ' \
+--- a/scripts/ibid-knab-import
++++ b/scripts/ibid-knab-import
+@@ -124,7 +124,7 @@
+     if not identity:
+         identity = Identity(source, user)
+         identity.created = created
+-        session.save(identity)
++        session.add(identity)
+         session.flush()
+     elif identity.created > created:
+         identity.created = created
+@@ -181,7 +181,7 @@
+         fvalue.time = kfactoid.utc_time
+ 
+         factoid.values.append(fvalue)
+-        ibid.save_or_update(factoid)
++        ibid.add(factoid)
+ 
+     ibid.commit()
+ 
+@@ -291,7 +291,7 @@
+         config.merge(FileConfig('local.ini'))
+ 
+     ibidengine = create_engine(config.databases['ibid'], encoding='utf-8')
+-    IbidSession = sessionmaker(bind=ibidengine, transactional=False)
++    IbidSession = sessionmaker(bind=ibidengine, autocommit=True)
+     ibid = IbidSession()
+ 
+     import_factoids(knab, ibid, source)
+--- a/scripts/ibid-plugin
++++ b/scripts/ibid-plugin
+@@ -98,7 +98,7 @@
+ identity = session.query(Identity).filter_by(identity=username, source=u'test_source').first()
+ if not identity:
+     identity = Identity(u'test_source',username)
+-    session.save(identity)
++    session.add(identity)
+     session.commit()
+     identity = session.query(Identity).filter_by(identity=username).first()
+ identity_id = identity.id
+--- a/scripts/ibid-setup
++++ b/scripts/ibid-setup
+@@ -160,8 +160,8 @@
+ credential = Credential(u'password', hash(unicode(pass1)))
+ account.credentials.append(credential)
+ 
+-session.save_or_update(account)
+-session.save_or_update(identity)
++session.add(account)
++session.add(identity)
+ session.commit()
+ session.close()
+ 




More information about the Python-apps-commits mailing list