"""empty message

Revision ID: 2018_04_20_data_src_refactor
Revises: 2018_04_11_add_sandbox_topic
Create Date: 2018-04-20 13:03:32.478880

"""
from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
from sqlalchemy.dialects.postgresql import ARRAY

revision = '2018_04_20_data_src_refactor'
down_revision = '2018_04_11_add_sandbox_topic'
branch_labels = None
depends_on = None


def upgrade():
    # ### commands auto generated by Alembic - please adjust! ###

    type_of_data_types = sa.Enum('ADMINISTRATIVE', 'SURVEY', name='type_of_data_types')
    op.add_column('page', sa.Column('secondary_source_1_type_of_data', ARRAY(type_of_data_types), nullable=True))
    op.add_column('page', sa.Column('suppression_and_disclosure', sa.TEXT(), nullable=True))
    op.add_column('page', sa.Column('note_on_corrections_or_updates', sa.TEXT(), nullable=True))
    op.add_column('page', sa.Column('secondary_source_1_note_on_corrections_or_updates', sa.TEXT(), nullable=True))
    op.add_column('page', sa.Column('secondary_source_1_data_source_purpose', sa.TEXT(), nullable=True))

    op.get_bind()

    op.execute('''
        UPDATE page SET suppression_and_disclosure = suppression_rules 
        WHERE disclosure_control is null;
    ''')

    op.execute('''
           UPDATE page SET suppression_and_disclosure = disclosure_control 
           WHERE suppression_rules is null;
       ''')

    op.execute('''
        UPDATE page SET suppression_and_disclosure = trim(suppression_rules  || '  ' ||  disclosure_control)
        WHERE suppression_rules is not null
        AND  disclosure_control is not null;
    ''')

    op.drop_constraint('organisation_secondary_source_2_fkey', 'page', type_='foreignkey')
    op.drop_constraint('frequency_secondary_source_2_fkey', 'page', type_='foreignkey')
    op.drop_constraint('secondary_source_2_type_of_statistic_fkey', 'page', type_='foreignkey')
    op.drop_column('page', 'secondary_source_1_date_next_update')
    op.drop_column('page', 'secondary_source_1_date_updated')
    op.drop_column('page', 'secondary_source_1_suppression_rules')
    op.drop_column('page', 'secondary_source_1_disclosure_control')
    op.drop_column('page', 'secondary_source_2_frequency')
    op.drop_column('page', 'secondary_source_2_contact_2_name')
    op.drop_column('page', 'secondary_source_2_contact_2_phone')
    op.drop_column('page', 'secondary_source_2_url')
    op.drop_column('page', 'secondary_source_2_date_next_update')
    op.drop_column('page', 'secondary_source_2_contact_1_name')
    op.drop_column('page', 'last_update_date')
    op.drop_column('page', 'secondary_source_2_contact_1_phone')
    op.drop_column('page', 'secondary_source_2_publisher_text')
    op.drop_column('page', 'secondary_source_2_disclosure_control')
    op.drop_column('page', 'secondary_source_2_type_of_statistic_id')
    op.drop_column('page', 'secondary_source_2_suppression_rules')
    op.drop_column('page', 'secondary_source_2_frequency_other')
    op.drop_column('page', 'secondary_source_2_publisher_id')
    op.drop_column('page', 'secondary_source_2_title')
    op.drop_column('page', 'secondary_source_2_date')
    op.drop_column('page', 'next_update_date')
    op.drop_column('page', 'secondary_source_2_date_updated')
    op.drop_column('page', 'secondary_source_2_statistic_type')
    op.drop_column('page', 'secondary_source_2_frequency_id')
    op.drop_column('page', 'secondary_source_2_contact_2_email')
    op.drop_column('page', 'secondary_source_2_contact_1_email')
    # ### end Alembic commands ###


def downgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    op.add_column('page', sa.Column('secondary_source_2_contact_1_email', sa.TEXT(), autoincrement=False, nullable=True))
    op.add_column('page', sa.Column('secondary_source_2_contact_2_email', sa.TEXT(), autoincrement=False, nullable=True))
    op.add_column('page', sa.Column('secondary_source_2_frequency_id', sa.INTEGER(), autoincrement=False, nullable=True))
    op.add_column('page', sa.Column('secondary_source_2_statistic_type', sa.TEXT(), autoincrement=False, nullable=True))
    op.add_column('page', sa.Column('secondary_source_2_date_updated', sa.TEXT(), autoincrement=False, nullable=True))
    op.add_column('page', sa.Column('secondary_source_2_date', sa.TEXT(), autoincrement=False, nullable=True))
    op.add_column('page', sa.Column('secondary_source_2_title', sa.TEXT(), autoincrement=False, nullable=True))
    op.add_column('page', sa.Column('secondary_source_2_publisher_id', sa.VARCHAR(length=255), autoincrement=False, nullable=True))
    op.add_column('page', sa.Column('secondary_source_2_frequency_other', sa.VARCHAR(length=255), autoincrement=False, nullable=True))
    op.add_column('page', sa.Column('secondary_source_2_suppression_rules', sa.TEXT(), autoincrement=False, nullable=True))
    op.add_column('page', sa.Column('secondary_source_2_type_of_statistic_id', sa.INTEGER(), autoincrement=False, nullable=True))
    op.add_column('page', sa.Column('secondary_source_2_disclosure_control', sa.TEXT(), autoincrement=False, nullable=True))
    op.add_column('page', sa.Column('secondary_source_2_publisher_text', sa.TEXT(), autoincrement=False, nullable=True))
    op.add_column('page', sa.Column('secondary_source_2_contact_1_phone', sa.TEXT(), autoincrement=False, nullable=True))
    op.add_column('page', sa.Column('secondary_source_2_contact_1_name', sa.TEXT(), autoincrement=False, nullable=True))
    op.add_column('page', sa.Column('secondary_source_2_date_next_update', sa.TEXT(), autoincrement=False, nullable=True))
    op.add_column('page', sa.Column('secondary_source_2_url', sa.TEXT(), autoincrement=False, nullable=True))
    op.add_column('page', sa.Column('secondary_source_2_contact_2_phone', sa.TEXT(), autoincrement=False, nullable=True))
    op.add_column('page', sa.Column('secondary_source_2_contact_2_name', sa.TEXT(), autoincrement=False, nullable=True))
    op.add_column('page', sa.Column('secondary_source_2_frequency', sa.TEXT(), autoincrement=False, nullable=True))
    op.add_column('page', sa.Column('last_update_date', sa.VARCHAR(length=255), autoincrement=False, nullable=True))
    op.add_column('page', sa.Column('next_update_date', sa.VARCHAR(length=255), autoincrement=False, nullable=True))
    op.add_column('page', sa.Column('secondary_source_1_date_next_update', sa.TEXT(), autoincrement=False, nullable=True))
    op.add_column('page', sa.Column('secondary_source_1_date_updated', sa.TEXT(), autoincrement=False, nullable=True))
    op.add_column('page', sa.Column('secondary_source_1_disclosure_control', sa.TEXT(), autoincrement=False, nullable=True))
    op.add_column('page', sa.Column('secondary_source_1_suppression_rules', sa.TEXT(), autoincrement=False, nullable=True))

    op.create_foreign_key('secondary_source_2_type_of_statistic_fkey', 'page', 'type_of_statistic', ['secondary_source_2_type_of_statistic_id'], ['id'])
    op.create_foreign_key('frequency_secondary_source_2_fkey', 'page', 'frequency_of_release', ['secondary_source_2_frequency_id'], ['id'])
    op.create_foreign_key('organisation_secondary_source_2_fkey', 'page', 'organisation', ['secondary_source_2_publisher_id'], ['id'])

    op.drop_column('page', 'secondary_source_1_type_of_data')
    op.drop_column('page', 'suppression_and_disclosure')
    op.drop_column('page', 'note_on_corrections_or_updates')
    op.drop_column('page', 'secondary_source_1_note_on_corrections_or_updates')
    op.drop_column('page', 'secondary_source_1_data_source_purpose')

    # ### end Alembic commands ###

[((24, 25, 24, 87), 'sqlalchemy.Enum', 'sa.Enum', (), '', True, 'import sqlalchemy as sa\n'), ((31, 4, 31, 17), 'alembic.op.get_bind', 'op.get_bind', ({}, {}), '()', False, 'from alembic import op\n'), ((33, 4, 36, 8), 'alembic.op.execute', 'op.execute', ({(33, 15, 36, 7): '"""\n        UPDATE page SET suppression_and_disclosure = suppression_rules \n        WHERE disclosure_control is null;\n    """'}, {}), '(\n    """\n        UPDATE page SET suppression_and_disclosure = suppression_rules \n        WHERE disclosure_control is null;\n    """\n    )', False, 'from alembic import op\n'), ((38, 4, 41, 11), 'alembic.op.execute', 'op.execute', ({(38, 15, 41, 10): '"""\n           UPDATE page SET suppression_and_disclosure = disclosure_control \n           WHERE suppression_rules is null;\n       """'}, {}), '(\n    """\n           UPDATE page SET suppression_and_disclosure = disclosure_control \n           WHERE suppression_rules is null;\n       """\n    )', False, 'from alembic import op\n'), ((43, 4, 47, 8), 'alembic.op.execute', 'op.execute', ({(43, 15, 47, 7): '"""\n        UPDATE page SET suppression_and_disclosure = trim(suppression_rules  || \'  \' ||  disclosure_control)\n        WHERE suppression_rules is not null\n        AND  disclosure_control is not null;\n    """'}, {}), '(\n    """\n        UPDATE page SET suppression_and_disclosure = trim(suppression_rules  || \'  \' ||  disclosure_control)\n        WHERE suppression_rules is not null\n        AND  disclosure_control is not null;\n    """\n    )', False, 'from alembic import op\n'), ((49, 4, 49, 90), 'alembic.op.drop_constraint', 'op.drop_constraint', (), '', False, 'from alembic import op\n'), ((50, 4, 50, 87), 'alembic.op.drop_constraint', 'op.drop_constraint', (), '', False, 'from alembic import op\n'), ((51, 4, 51, 95), 'alembic.op.drop_constraint', 'op.drop_constraint', (), '', False, 'from alembic import op\n'), ((52, 4, 52, 65), 'alembic.op.drop_column', 'op.drop_column', ({(52, 19, 52, 25): '"""page"""', (52, 27, 52, 64): '"""secondary_source_1_date_next_update"""'}, {}), "('page', 'secondary_source_1_date_next_update')", False, 'from alembic import op\n'), ((53, 4, 53, 61), 'alembic.op.drop_column', 'op.drop_column', ({(53, 19, 53, 25): '"""page"""', (53, 27, 53, 60): '"""secondary_source_1_date_updated"""'}, {}), "('page', 'secondary_source_1_date_updated')", False, 'from alembic import op\n'), ((54, 4, 54, 66), 'alembic.op.drop_column', 'op.drop_column', ({(54, 19, 54, 25): '"""page"""', (54, 27, 54, 65): '"""secondary_source_1_suppression_rules"""'}, {}), "('page', 'secondary_source_1_suppression_rules')", False, 'from alembic import op\n'), ((55, 4, 55, 67), 'alembic.op.drop_column', 'op.drop_column', ({(55, 19, 55, 25): '"""page"""', (55, 27, 55, 66): '"""secondary_source_1_disclosure_control"""'}, {}), "('page', 'secondary_source_1_disclosure_control')", False, 'from alembic import op\n'), ((56, 4, 56, 58), 'alembic.op.drop_column', 'op.drop_column', ({(56, 19, 56, 25): '"""page"""', (56, 27, 56, 57): '"""secondary_source_2_frequency"""'}, {}), "('page', 'secondary_source_2_frequency')", False, 'from alembic import op\n'), ((57, 4, 57, 63), 'alembic.op.drop_column', 'op.drop_column', ({(57, 19, 57, 25): '"""page"""', (57, 27, 57, 62): '"""secondary_source_2_contact_2_name"""'}, {}), "('page', 'secondary_source_2_contact_2_name')", False, 'from alembic import op\n'), ((58, 4, 58, 64), 'alembic.op.drop_column', 'op.drop_column', ({(58, 19, 58, 25): '"""page"""', (58, 27, 58, 63): '"""secondary_source_2_contact_2_phone"""'}, {}), "('page', 'secondary_source_2_contact_2_phone')", False, 'from alembic import op\n'), ((59, 4, 59, 52), 'alembic.op.drop_column', 'op.drop_column', ({(59, 19, 59, 25): '"""page"""', (59, 27, 59, 51): '"""secondary_source_2_url"""'}, {}), "('page', 'secondary_source_2_url')", False, 'from alembic import op\n'), ((60, 4, 60, 65), 'alembic.op.drop_column', 'op.drop_column', ({(60, 19, 60, 25): '"""page"""', (60, 27, 60, 64): '"""secondary_source_2_date_next_update"""'}, {}), "('page', 'secondary_source_2_date_next_update')", False, 'from alembic import op\n'), ((61, 4, 61, 63), 'alembic.op.drop_column', 'op.drop_column', ({(61, 19, 61, 25): '"""page"""', (61, 27, 61, 62): '"""secondary_source_2_contact_1_name"""'}, {}), "('page', 'secondary_source_2_contact_1_name')", False, 'from alembic import op\n'), ((62, 4, 62, 46), 'alembic.op.drop_column', 'op.drop_column', ({(62, 19, 62, 25): '"""page"""', (62, 27, 62, 45): '"""last_update_date"""'}, {}), "('page', 'last_update_date')", False, 'from alembic import op\n'), ((63, 4, 63, 64), 'alembic.op.drop_column', 'op.drop_column', ({(63, 19, 63, 25): '"""page"""', (63, 27, 63, 63): '"""secondary_source_2_contact_1_phone"""'}, {}), "('page', 'secondary_source_2_contact_1_phone')", False, 'from alembic import op\n'), ((64, 4, 64, 63), 'alembic.op.drop_column', 'op.drop_column', ({(64, 19, 64, 25): '"""page"""', (64, 27, 64, 62): '"""secondary_source_2_publisher_text"""'}, {}), "('page', 'secondary_source_2_publisher_text')", False, 'from alembic import op\n'), ((65, 4, 65, 67), 'alembic.op.drop_column', 'op.drop_column', ({(65, 19, 65, 25): '"""page"""', (65, 27, 65, 66): '"""secondary_source_2_disclosure_control"""'}, {}), "('page', 'secondary_source_2_disclosure_control')", False, 'from alembic import op\n'), ((66, 4, 66, 69), 'alembic.op.drop_column', 'op.drop_column', ({(66, 19, 66, 25): '"""page"""', (66, 27, 66, 68): '"""secondary_source_2_type_of_statistic_id"""'}, {}), "('page', 'secondary_source_2_type_of_statistic_id')", False, 'from alembic import op\n'), ((67, 4, 67, 66), 'alembic.op.drop_column', 'op.drop_column', ({(67, 19, 67, 25): '"""page"""', (67, 27, 67, 65): '"""secondary_source_2_suppression_rules"""'}, {}), "('page', 'secondary_source_2_suppression_rules')", False, 'from alembic import op\n'), ((68, 4, 68, 64), 'alembic.op.drop_column', 'op.drop_column', ({(68, 19, 68, 25): '"""page"""', (68, 27, 68, 63): '"""secondary_source_2_frequency_other"""'}, {}), "('page', 'secondary_source_2_frequency_other')", False, 'from alembic import op\n'), ((69, 4, 69, 61), 'alembic.op.drop_column', 'op.drop_column', ({(69, 19, 69, 25): '"""page"""', (69, 27, 69, 60): '"""secondary_source_2_publisher_id"""'}, {}), "('page', 'secondary_source_2_publisher_id')", False, 'from alembic import op\n'), ((70, 4, 70, 54), 'alembic.op.drop_column', 'op.drop_column', ({(70, 19, 70, 25): '"""page"""', (70, 27, 70, 53): '"""secondary_source_2_title"""'}, {}), "('page', 'secondary_source_2_title')", False, 'from alembic import op\n'), ((71, 4, 71, 53), 'alembic.op.drop_column', 'op.drop_column', ({(71, 19, 71, 25): '"""page"""', (71, 27, 71, 52): '"""secondary_source_2_date"""'}, {}), "('page', 'secondary_source_2_date')", False, 'from alembic import op\n'), ((72, 4, 72, 46), 'alembic.op.drop_column', 'op.drop_column', ({(72, 19, 72, 25): '"""page"""', (72, 27, 72, 45): '"""next_update_date"""'}, {}), "('page', 'next_update_date')", False, 'from alembic import op\n'), ((73, 4, 73, 61), 'alembic.op.drop_column', 'op.drop_column', ({(73, 19, 73, 25): '"""page"""', (73, 27, 73, 60): '"""secondary_source_2_date_updated"""'}, {}), "('page', 'secondary_source_2_date_updated')", False, 'from alembic import op\n'), ((74, 4, 74, 63), 'alembic.op.drop_column', 'op.drop_column', ({(74, 19, 74, 25): '"""page"""', (74, 27, 74, 62): '"""secondary_source_2_statistic_type"""'}, {}), "('page', 'secondary_source_2_statistic_type')", False, 'from alembic import op\n'), ((75, 4, 75, 61), 'alembic.op.drop_column', 'op.drop_column', ({(75, 19, 75, 25): '"""page"""', (75, 27, 75, 60): '"""secondary_source_2_frequency_id"""'}, {}), "('page', 'secondary_source_2_frequency_id')", False, 'from alembic import op\n'), ((76, 4, 76, 64), 'alembic.op.drop_column', 'op.drop_column', ({(76, 19, 76, 25): '"""page"""', (76, 27, 76, 63): '"""secondary_source_2_contact_2_email"""'}, {}), "('page', 'secondary_source_2_contact_2_email')", False, 'from alembic import op\n'), ((77, 4, 77, 64), 'alembic.op.drop_column', 'op.drop_column', ({(77, 19, 77, 25): '"""page"""', (77, 27, 77, 63): '"""secondary_source_2_contact_1_email"""'}, {}), "('page', 'secondary_source_2_contact_1_email')", False, 'from alembic import op\n'), ((110, 4, 110, 152), 'alembic.op.create_foreign_key', 'op.create_foreign_key', ({(110, 26, 110, 69): '"""secondary_source_2_type_of_statistic_fkey"""', (110, 71, 110, 77): '"""page"""', (110, 79, 110, 98): '"""type_of_statistic"""', (110, 100, 110, 143): "['secondary_source_2_type_of_statistic_id']", (110, 145, 110, 151): "['id']"}, {}), "('secondary_source_2_type_of_statistic_fkey', 'page',\n    'type_of_statistic', ['secondary_source_2_type_of_statistic_id'], ['id'])", False, 'from alembic import op\n'), ((111, 4, 111, 139), 'alembic.op.create_foreign_key', 'op.create_foreign_key', ({(111, 26, 111, 61): '"""frequency_secondary_source_2_fkey"""', (111, 63, 111, 69): '"""page"""', (111, 71, 111, 93): '"""frequency_of_release"""', (111, 95, 111, 130): "['secondary_source_2_frequency_id']", (111, 132, 111, 138): "['id']"}, {}), "('frequency_secondary_source_2_fkey', 'page',\n    'frequency_of_release', ['secondary_source_2_frequency_id'], ['id'])", False, 'from alembic import op\n'), ((112, 4, 112, 134), 'alembic.op.create_foreign_key', 'op.create_foreign_key', ({(112, 26, 112, 64): '"""organisation_secondary_source_2_fkey"""', (112, 66, 112, 72): '"""page"""', (112, 74, 112, 88): '"""organisation"""', (112, 90, 112, 125): "['secondary_source_2_publisher_id']", (112, 127, 112, 133): "['id']"}, {}), "('organisation_secondary_source_2_fkey', 'page',\n    'organisation', ['secondary_source_2_publisher_id'], ['id'])", False, 'from alembic import op\n'), ((114, 4, 114, 61), 'alembic.op.drop_column', 'op.drop_column', ({(114, 19, 114, 25): '"""page"""', (114, 27, 114, 60): '"""secondary_source_1_type_of_data"""'}, {}), "('page', 'secondary_source_1_type_of_data')", False, 'from alembic import op\n'), ((115, 4, 115, 56), 'alembic.op.drop_column', 'op.drop_column', ({(115, 19, 115, 25): '"""page"""', (115, 27, 115, 55): '"""suppression_and_disclosure"""'}, {}), "('page', 'suppression_and_disclosure')", False, 'from alembic import op\n'), ((116, 4, 116, 60), 'alembic.op.drop_column', 'op.drop_column', ({(116, 19, 116, 25): '"""page"""', (116, 27, 116, 59): '"""note_on_corrections_or_updates"""'}, {}), "('page', 'note_on_corrections_or_updates')", False, 'from alembic import op\n'), ((117, 4, 117, 79), 'alembic.op.drop_column', 'op.drop_column', ({(117, 19, 117, 25): '"""page"""', (117, 27, 117, 78): '"""secondary_source_1_note_on_corrections_or_updates"""'}, {}), "('page', 'secondary_source_1_note_on_corrections_or_updates')", False, 'from alembic import op\n'), ((118, 4, 118, 68), 'alembic.op.drop_column', 'op.drop_column', ({(118, 19, 118, 25): '"""page"""', (118, 27, 118, 67): '"""secondary_source_1_data_source_purpose"""'}, {}), "('page', 'secondary_source_1_data_source_purpose')", False, 'from alembic import op\n'), ((25, 71, 25, 96), 'sqlalchemy.dialects.postgresql.ARRAY', 'ARRAY', ({(25, 77, 25, 95): 'type_of_data_types'}, {}), '(type_of_data_types)', False, 'from sqlalchemy.dialects.postgresql import ARRAY\n'), ((26, 66, 26, 75), 'sqlalchemy.TEXT', 'sa.TEXT', ({}, {}), '()', True, 'import sqlalchemy as sa\n'), ((27, 70, 27, 79), 'sqlalchemy.TEXT', 'sa.TEXT', ({}, {}), '()', True, 'import sqlalchemy as sa\n'), ((28, 89, 28, 98), 'sqlalchemy.TEXT', 'sa.TEXT', ({}, {}), '()', True, 'import sqlalchemy as sa\n'), ((29, 78, 29, 87), 'sqlalchemy.TEXT', 'sa.TEXT', ({}, {}), '()', True, 'import sqlalchemy as sa\n'), ((83, 74, 83, 83), 'sqlalchemy.TEXT', 'sa.TEXT', ({}, {}), '()', True, 'import sqlalchemy as sa\n'), ((84, 74, 84, 83), 'sqlalchemy.TEXT', 'sa.TEXT', ({}, {}), '()', True, 'import sqlalchemy as sa\n'), ((85, 71, 85, 83), 'sqlalchemy.INTEGER', 'sa.INTEGER', ({}, {}), '()', True, 'import sqlalchemy as sa\n'), ((86, 73, 86, 82), 'sqlalchemy.TEXT', 'sa.TEXT', ({}, {}), '()', True, 'import sqlalchemy as sa\n'), ((87, 71, 87, 80), 'sqlalchemy.TEXT', 'sa.TEXT', ({}, {}), '()', True, 'import sqlalchemy as sa\n'), ((88, 63, 88, 72), 'sqlalchemy.TEXT', 'sa.TEXT', ({}, {}), '()', True, 'import sqlalchemy as sa\n'), ((89, 64, 89, 73), 'sqlalchemy.TEXT', 'sa.TEXT', ({}, {}), '()', True, 'import sqlalchemy as sa\n'), ((90, 71, 90, 93), 'sqlalchemy.VARCHAR', 'sa.VARCHAR', (), '', True, 'import sqlalchemy as sa\n'), ((91, 74, 91, 96), 'sqlalchemy.VARCHAR', 'sa.VARCHAR', (), '', True, 'import sqlalchemy as sa\n'), ((92, 76, 92, 85), 'sqlalchemy.TEXT', 'sa.TEXT', ({}, {}), '()', True, 'import sqlalchemy as sa\n'), ((93, 79, 93, 91), 'sqlalchemy.INTEGER', 'sa.INTEGER', ({}, {}), '()', True, 'import sqlalchemy as sa\n'), ((94, 77, 94, 86), 'sqlalchemy.TEXT', 'sa.TEXT', ({}, {}), '()', True, 'import sqlalchemy as sa\n'), ((95, 73, 95, 82), 'sqlalchemy.TEXT', 'sa.TEXT', ({}, {}), '()', True, 'import sqlalchemy as sa\n'), ((96, 74, 96, 83), 'sqlalchemy.TEXT', 'sa.TEXT', ({}, {}), '()', True, 'import sqlalchemy as sa\n'), ((97, 73, 97, 82), 'sqlalchemy.TEXT', 'sa.TEXT', ({}, {}), '()', True, 'import sqlalchemy as sa\n'), ((98, 75, 98, 84), 'sqlalchemy.TEXT', 'sa.TEXT', ({}, {}), '()', True, 'import sqlalchemy as sa\n'), ((99, 62, 99, 71), 'sqlalchemy.TEXT', 'sa.TEXT', ({}, {}), '()', True, 'import sqlalchemy as sa\n'), ((100, 74, 100, 83), 'sqlalchemy.TEXT', 'sa.TEXT', ({}, {}), '()', True, 'import sqlalchemy as sa\n'), ((101, 73, 101, 82), 'sqlalchemy.TEXT', 'sa.TEXT', ({}, {}), '()', True, 'import sqlalchemy as sa\n'), ((102, 68, 102, 77), 'sqlalchemy.TEXT', 'sa.TEXT', ({}, {}), '()', True, 'import sqlalchemy as sa\n'), ((103, 56, 103, 78), 'sqlalchemy.VARCHAR', 'sa.VARCHAR', (), '', True, 'import sqlalchemy as sa\n'), ((104, 56, 104, 78), 'sqlalchemy.VARCHAR', 'sa.VARCHAR', (), '', True, 'import sqlalchemy as sa\n'), ((105, 75, 105, 84), 'sqlalchemy.TEXT', 'sa.TEXT', ({}, {}), '()', True, 'import sqlalchemy as sa\n'), ((106, 71, 106, 80), 'sqlalchemy.TEXT', 'sa.TEXT', ({}, {}), '()', True, 'import sqlalchemy as sa\n'), ((107, 77, 107, 86), 'sqlalchemy.TEXT', 'sa.TEXT', ({}, {}), '()', True, 'import sqlalchemy as sa\n'), ((108, 76, 108, 85), 'sqlalchemy.TEXT', 'sa.TEXT', ({}, {}), '()', True, 'import sqlalchemy as sa\n')]