)]}'
{"migrate/changeset/databases/sqlite.py":[{"author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"change_message_id":"34bf8816f1ea85b166e3ab5fc242bd8348fc6d40","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    from UserDict import DictMixin"},{"line_number":10,"context_line":"from copy import copy"},{"line_number":11,"context_line":"import re"},{"line_number":12,"context_line":"import sqlite3"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"from sqlalchemy.databases import sqlite as sa_base"},{"line_number":15,"context_line":"from sqlalchemy.schema import ForeignKeyConstraint"}],"source_content_type":"text/x-python","patch_set":5,"id":"dfd5e7cf_ab84605f","line":12,"updated":"2019-01-09 16:59:13.000000000","message":"nit: can we have the import of sqlite3 within the function, since DB driver imports as a general rule are always not supposed to be module level, since it\u0027s not a given they are available.  for sqlite3, this is usually not the case, but you can have a cPython build that doesn\u0027t have sqlite3 available and there are also alternative interpreters that might not have it either.\n\nalso, this import is likely not needed because the SQLAlchemy dialect has already imported it and already provides for server_version_info.","commit_id":"4a7f9c46cb2b4d500713e099b73b5fe4137158b2"},{"author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"change_message_id":"34bf8816f1ea85b166e3ab5fc242bd8348fc6d40","unresolved":false,"context_lines":[{"line_number":97,"context_line":"            if omit_constraints is None or cons.name not in omit_constraints"},{"line_number":98,"context_line":"        ])"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        tup \u003d sqlite3.sqlite_version_info"},{"line_number":101,"context_line":"        if tup[0] \u003e 3 or (tup[0] \u003d\u003d 3 and tup[1] \u003e\u003d 26):"},{"line_number":102,"context_line":"            self.append(\u0027PRAGMA legacy_alter_table \u003d ON\u0027)"},{"line_number":103,"context_line":"            self.execute()"}],"source_content_type":"text/x-python","patch_set":5,"id":"dfd5e7cf_4b9374a4","line":100,"updated":"2019-01-09 16:59:13.000000000","message":"the tuple comparison is hard to read here, tuples can be compared directly. \n\nalso, sqlite_version_info is available from the SQLAlchemy dialect:  engine.dialect.server_version_info, so, you can jsut say:\n\n   if engine.dialect.server_version_info \u003e\u003d (3, 26):\n        # go","commit_id":"4a7f9c46cb2b4d500713e099b73b5fe4137158b2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ced54699741c1c0eb088c9158491a3f782f33219","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        ])"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        import sqlite3"},{"line_number":100,"context_line":"        if sqlite3.sqlite_version_info \u003e\u003d (3, 26):"},{"line_number":101,"context_line":"            self.append(\u0027PRAGMA legacy_alter_table \u003d ON\u0027)"},{"line_number":102,"context_line":"            self.execute()"},{"line_number":103,"context_line":"        self.append(\u0027ALTER TABLE %s RENAME TO migration_tmp\u0027 % table_name)"}],"source_content_type":"text/x-python","patch_set":7,"id":"bfdaf3ff_e9ca6b6c","line":100,"updated":"2019-01-15 17:43:48.000000000","message":"It would be good to have a (short if possible) comment here about why we need a conditional version check.","commit_id":"4f2075d2bc057f8fcdbad2d4d05a0d18684b1bf8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8966ce7bbde495557cb666d56d7d9124e9aa7bd1","unresolved":false,"context_lines":[{"line_number":104,"context_line":"            self.execute()"},{"line_number":105,"context_line":"        self.append(\u0027ALTER TABLE %s RENAME TO migration_tmp\u0027 % table_name)"},{"line_number":106,"context_line":"        self.execute()"},{"line_number":107,"context_line":"        if self.connection.engine.dialect.server_version_info \u003e\u003d (3, 26):"},{"line_number":108,"context_line":"            self.append(\u0027PRAGMA legacy_alter_table \u003d OFF\u0027)"},{"line_number":109,"context_line":"            self.execute()"},{"line_number":110,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_6fc19be4","line":107,"updated":"2019-01-15 19:30:40.000000000","message":"nit: could store the version info into a local variable to avoid hitting this twice, I don\u0027t know if it\u0027s static in the library code or not. Just a nit though.","commit_id":"d71b1fd3b9efc9d5733e00a98e2c78ff68c8f2dc"}]}
