"""
The SQLAlchemy table objects for the CodaLab bundle system tables.
"""
# TODO: Replace String and Text columns with Unicode and UnicodeText as appropriate
# This way, SQLAlchemy will automatically perform conversions to and from UTF-8
# encoding, or use appropriate database engine-specific data types for Unicode
# data. Currently, only worksheet.title uses the Unicode column type.
from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint
from sqlalchemy.types import (
    BigInteger,
    Boolean,
    DateTime,
    Enum,
    Float,
    Integer,
    LargeBinary,
    String,
    Text,
    Unicode,
)
from sqlalchemy.sql.schema import ForeignKeyConstraint

db_metadata = MetaData()

bundle = Table(
    'bundle',
    db_metadata,
    Column(
        'id',
        BigInteger().with_variant(Integer, "sqlite"),
        primary_key=True,
        nullable=False,
        autoincrement=True,
    ),
    Column('uuid', String(63), nullable=False),
    Column('bundle_type', String(63), nullable=False),
    # The command will be NULL except for run bundles.
    Column('command', Text, nullable=True),
    # The data_hash will be NULL if the bundle's value is still being computed.
    Column('data_hash', String(63), nullable=True),
    Column('state', String(63), nullable=False),
    Column('owner_id', String(255), nullable=True),
    Column('is_anonymous', Boolean, nullable=False, default=False),
    UniqueConstraint('uuid', name='uix_1'),
    Index('bundle_data_hash_index', 'data_hash'),
    Index('state_index', 'state'),  # Needed for the bundle manager.
)

# Includes things like name, description, etc.
bundle_metadata = Table(
    'bundle_metadata',
    db_metadata,
    Column(
        'id',
        BigInteger().with_variant(Integer, "sqlite"),
        primary_key=True,
        nullable=False,
        autoincrement=True,
    ),
    Column('bundle_uuid', String(63), ForeignKey(bundle.c.uuid), nullable=False),
    Column('metadata_key', String(63), nullable=False),
    Column('metadata_value', Text, nullable=False),
    Index('metadata_kv_index', 'metadata_key', 'metadata_value', mysql_length=63),
)

# For each child_uuid, we have: key = child_path, target = (parent_uuid, parent_path)
bundle_dependency = Table(
    'bundle_dependency',
    db_metadata,
    Column(
        'id',
        BigInteger().with_variant(Integer, "sqlite"),
        primary_key=True,
        nullable=False,
        autoincrement=True,
    ),
    Column('child_uuid', String(63), ForeignKey(bundle.c.uuid), nullable=False),
    Column('child_path', Text, nullable=False),
    # Deliberately omit ForeignKey(bundle.c.uuid), because bundles can have
    # dependencies to bundles not (yet) in the system.
    Column('parent_uuid', String(63), nullable=False),
    Column('parent_path', Text, nullable=False),
)

# The worksheet table does not have many columns now, but it will eventually
# include columns for owner, group, permissions, etc.
worksheet = Table(
    'worksheet',
    db_metadata,
    Column(
        'id',
        BigInteger().with_variant(Integer, "sqlite"),
        primary_key=True,
        nullable=False,
        autoincrement=True,
    ),
    Column('uuid', String(63), nullable=False),
    Column('name', String(255), nullable=False),
    Column('owner_id', String(255), nullable=True),
    Column(
        'title', Unicode(255), nullable=True
    ),  # Short human-readable description of the worksheet
    Column(
        'frozen', DateTime, nullable=True
    ),  # When the worksheet was frozen (forever immutable) if it is.
    Column('is_anonymous', Boolean, nullable=False, default=False),
    Column(
        'date_created', DateTime
    ),  # When the worksheet was created; Set to null if the worksheet created before v0.5.31; Set to current timestamp by default
    Column(
        'date_last_modified', DateTime
    ),  # When the worksheet was last modified; Set to null if the worksheet created before v0.5.31; Set to current_timestamp by default
    UniqueConstraint('uuid', name='uix_1'),
    Index('worksheet_name_index', 'name'),
    Index('worksheet_owner_index', 'owner_id'),
)

worksheet_item = Table(
    'worksheet_item',
    db_metadata,
    Column(
        'id',
        BigInteger().with_variant(Integer, "sqlite"),
        primary_key=True,
        nullable=False,
        autoincrement=True,
    ),
    Column('worksheet_uuid', String(63), ForeignKey(worksheet.c.uuid), nullable=False),
    # A worksheet item is either:
    # - type = bundle (bundle_uuid != null)
    # - type = worksheet (subworksheet_uuid != null)
    # - type = markup (value != null)
    # - type = directive (value != null)
    # Deliberately omit ForeignKey(bundle.c.uuid), because worksheets can contain
    # bundles and worksheets not (yet) in the system.
    Column('bundle_uuid', String(63), nullable=True),
    Column('subworksheet_uuid', String(63), nullable=True),
    Column('value', Text, nullable=False),  # TODO: make this nullable
    Column('type', String(20), nullable=False),
    Column('sort_key', Integer, nullable=True),
    Index('worksheet_item_worksheet_uuid_index', 'worksheet_uuid'),
    Index('worksheet_item_bundle_uuid_index', 'bundle_uuid'),
    Index('worksheet_item_subworksheet_uuid_index', 'subworksheet_uuid'),
)

# Worksheet tags
worksheet_tag = Table(
    'worksheet_tag',
    db_metadata,
    Column(
        'id',
        BigInteger().with_variant(Integer, "sqlite"),
        primary_key=True,
        nullable=False,
        autoincrement=True,
    ),
    Column('worksheet_uuid', String(63), ForeignKey(worksheet.c.uuid), nullable=False),
    Column('tag', String(63), nullable=False),
    Index('worksheet_tag_worksheet_uuid_index', 'worksheet_uuid'),
    Index('worksheet_tag_tag_index', 'tag'),
)

group = Table(
    'group',
    db_metadata,
    Column(
        'id',
        BigInteger().with_variant(Integer, "sqlite"),
        primary_key=True,
        nullable=False,
        autoincrement=True,
    ),
    Column('uuid', String(63), nullable=False),
    Column('name', String(255), nullable=False),
    Column('user_defined', Boolean),
    Column('owner_id', String(255), nullable=True),
    UniqueConstraint('uuid', name='uix_1'),
    Index('group_name_index', 'name'),
    Index('group_owner_id_index', 'owner_id'),
)

user_group = Table(
    'user_group',
    db_metadata,
    Column(
        'id',
        BigInteger().with_variant(Integer, "sqlite"),
        primary_key=True,
        nullable=False,
        autoincrement=True,
    ),
    Column('group_uuid', String(63), ForeignKey(group.c.uuid), nullable=False),
    Column('user_id', String(63), ForeignKey("user.user_id"), nullable=False),
    # Whether a user is able to modify this group.
    Column('is_admin', Boolean),
    Index('group_uuid_index', 'group_uuid'),
    Index('user_id_index', 'user_id'),
)

# Permissions for bundles
group_bundle_permission = Table(
    'group_bundle_permission',
    db_metadata,
    Column(
        'id',
        BigInteger().with_variant(Integer, "sqlite"),
        primary_key=True,
        nullable=False,
        autoincrement=True,
    ),
    Column('group_uuid', String(63), ForeignKey(group.c.uuid), nullable=False),
    # Reference to a bundle
    Column('object_uuid', String(63), ForeignKey(bundle.c.uuid), nullable=False),
    # Permissions encoded as integer (see below)
    Column('permission', Integer, nullable=False),
)

# Permissions for worksheets
group_object_permission = Table(
    'group_object_permission',
    db_metadata,
    Column(
        'id',
        BigInteger().with_variant(Integer, "sqlite"),
        primary_key=True,
        nullable=False,
        autoincrement=True,
    ),
    Column('group_uuid', String(63), ForeignKey(group.c.uuid), nullable=False),
    # Reference to a worksheet object
    Column('object_uuid', String(63), ForeignKey(worksheet.c.uuid), nullable=False),
    # Permissions encoded as integer (see below)
    Column('permission', Integer, nullable=False),
)

# A permission value is one of the following: none (0), read (1), or all (2).
GROUP_OBJECT_PERMISSION_NONE = 0x00
GROUP_OBJECT_PERMISSION_READ = 0x01
GROUP_OBJECT_PERMISSION_ALL = 0x02

# A notifications value is one of the following:
NOTIFICATIONS_NONE = 0x00  # Receive no notifications
NOTIFICATIONS_IMPORTANT = 0x01  # Receive only important notifications
NOTIFICATIONS_GENERAL = 0x02  # Receive general notifications (new features)

# Store information about users.
user = Table(
    'user',
    db_metadata,
    Column(
        'id',
        BigInteger().with_variant(Integer, "sqlite"),
        primary_key=True,
        nullable=False,
        autoincrement=True,
    ),
    # Basic information
    Column('user_id', String(63), nullable=False),
    Column('user_name', String(63), nullable=False, unique=True),
    Column(
        'email', String(254), nullable=False, unique=True
    ),  # Length of 254 to be compliant with RFC3696/5321
    Column(
        'notifications', Integer, nullable=False, default=NOTIFICATIONS_GENERAL
    ),  # Which emails user wants to receive
    Column('last_login', DateTime),  # Null if user has never logged in
    Column(
        'is_active', Boolean, nullable=False, default=True
    ),  # Set to False instead of deleting users to maintain foreign key integrity
    Column('first_name', String(30, convert_unicode=True)),
    Column('last_name', String(30, convert_unicode=True)),
    Column('date_joined', DateTime, nullable=False),
    Column('has_access', Boolean, default=False, nullable=True),
    Column('is_verified', Boolean, nullable=False, default=False),
    Column('is_superuser', Boolean, nullable=False, default=False),
    Column('password', String(128), nullable=False),
    # Additional information
    Column('affiliation', String(255, convert_unicode=True), nullable=True),
    Column('url', String(255, convert_unicode=True), nullable=True),
    # Quotas
    Column('time_quota', Float, nullable=False),  # Number of seconds allowed
    Column('parallel_run_quota', Integer, nullable=False),  # Number of parallel jobs allowed
    Column('time_used', Float, nullable=False),  # Number of seconds already used
    Column('disk_quota', Float, nullable=False),  # Number of bytes allowed
    Column('disk_used', Float, nullable=False),  # Number of bytes already used
    Index('user_user_id_index', 'user_id'),
    Index('user_user_name_index', 'user_name'),
    UniqueConstraint('user_id', name='uix_1'),
)

# Stores (email) verification keys
user_verification = Table(
    'user_verification',
    db_metadata,
    Column(
        'id',
        BigInteger().with_variant(Integer, "sqlite"),
        primary_key=True,
        nullable=False,
        autoincrement=True,
    ),
    Column('user_id', String(63), ForeignKey(user.c.user_id), nullable=False),
    Column('date_created', DateTime, nullable=False),
    Column('date_sent', DateTime, nullable=True),
    Column('key', String(64), nullable=False),
)

# Stores password reset codes
user_reset_code = Table(
    'user_reset_code',
    db_metadata,
    Column(
        'id',
        BigInteger().with_variant(Integer, "sqlite"),
        primary_key=True,
        nullable=False,
        autoincrement=True,
    ),
    Column('user_id', String(63), ForeignKey(user.c.user_id), nullable=False),
    Column('date_created', DateTime, nullable=False),
    Column('code', String(64), nullable=False),
)

# OAuth2 Tables

oauth2_client = Table(
    'oauth2_client',
    db_metadata,
    Column(
        'id',
        BigInteger().with_variant(Integer, "sqlite"),
        primary_key=True,
        nullable=False,
        autoincrement=True,
    ),
    Column('client_id', String(63), nullable=False),
    Column('name', String(63), nullable=True),
    Column('secret', String(255), nullable=True),
    Column('user_id', String(63), ForeignKey(user.c.user_id), nullable=True),
    Column(
        'grant_type',
        Enum("authorization_code", "password", "client_credentials", "refresh_token"),
        nullable=False,
    ),
    Column('response_type', Enum("code", "token"), nullable=False),
    Column('scopes', Text, nullable=False),  # comma-separated list of allowed scopes
    Column('redirect_uris', Text, nullable=False),  # comma-separated list of allowed redirect URIs
    UniqueConstraint('client_id', name='uix_1'),
)

oauth2_token = Table(
    'oauth2_token',
    db_metadata,
    Column(
        'id',
        BigInteger().with_variant(Integer, "sqlite"),
        primary_key=True,
        nullable=False,
        autoincrement=True,
    ),
    Column('client_id', String(63), ForeignKey(oauth2_client.c.client_id), nullable=False),
    Column('user_id', String(63), ForeignKey(user.c.user_id), nullable=False),
    Column('scopes', Text, nullable=False),
    Column('access_token', String(255), unique=True),
    Column('refresh_token', String(255), unique=True),
    Column('expires', DateTime, nullable=False),
)

oauth2_auth_code = Table(
    'oauth2_auth_code',
    db_metadata,
    Column(
        'id',
        BigInteger().with_variant(Integer, "sqlite"),
        primary_key=True,
        nullable=False,
        autoincrement=True,
    ),
    Column('client_id', String(63), ForeignKey(oauth2_client.c.client_id), nullable=False),
    Column('user_id', String(63), ForeignKey(user.c.user_id), nullable=False),
    Column('scopes', Text, nullable=False),
    Column('code', String(100), nullable=False),
    Column('expires', DateTime, nullable=False),
    Column('redirect_uri', String(255), nullable=False),
)

# Store information about users' questions or feedback.
chat = Table(
    'chat',
    db_metadata,
    Column(
        'id',
        BigInteger().with_variant(Integer, "sqlite"),
        primary_key=True,
        nullable=False,
        autoincrement=True,
    ),  # Primary key
    Column('time', DateTime, nullable=False),  # When did the user send this query?
    Column('sender_user_id', String(63), nullable=True),  # Who sent it?
    Column('recipient_user_id', String(63), nullable=True),  # Who received it?
    Column('message', Text, nullable=False),  # What's the content of the chat?
    Column(
        'worksheet_uuid', String(63), nullable=True
    ),  # What is the id of the worksheet that the sender is on?
    Column(
        'bundle_uuid', String(63), nullable=True
    ),  # What is the id of the bundle that the sender is on?
)

# Store information about workers.
worker = Table(
    'worker',
    db_metadata,
    Column('user_id', String(63), ForeignKey(user.c.user_id), primary_key=True, nullable=False),
    Column('worker_id', String(127), primary_key=True, nullable=False),
    Column('group_uuid', String(63), ForeignKey(group.c.uuid), nullable=True),
    Column('tag', Text, nullable=True),  # Tag that allows for scheduling runs on specific workers.
    Column('cpus', Integer, nullable=False),  # Number of CPUs on worker.
    Column('gpus', Integer, nullable=False),  # Number of GPUs on worker.
    Column('memory_bytes', BigInteger, nullable=False),  # Total memory of worker.
    Column('free_disk_bytes', BigInteger, nullable=True),  # Available disk space on worker.
    Column(
        'checkin_time', DateTime, nullable=False
    ),  # When the worker last checked in with the bundle service.
    Column('socket_id', Integer, nullable=False),  # Socket ID worker listens for messages on.
    Column(
        'shared_file_system', Boolean, nullable=False
    ),  # Whether the worker and the server have a shared filesystem.
    Column(
        'tag_exclusive', Boolean, nullable=False
    ),  # Whether worker runs bundles if and only if they match tags.
    Column(
        'exit_after_num_runs', Integer, nullable=False
    ),  # Number of jobs allowed to run on worker.
    Column('is_terminating', Boolean, nullable=False),
)

# Store information about all sockets currently allocated to each worker.
worker_socket = Table(
    'worker_socket',
    db_metadata,
    Column('user_id', String(63), ForeignKey(user.c.user_id), nullable=False),
    Column('worker_id', String(127), nullable=False),
    # No foreign key constraint on the worker table so that we can create a socket
    # for the worker before adding the worker to the worker table.
    Column('socket_id', Integer, primary_key=True, nullable=False),
)

# Store information about the bundles currently running on each worker.
worker_run = Table(
    'worker_run',
    db_metadata,
    Column('user_id', String(63), ForeignKey(user.c.user_id), nullable=False),
    Column('worker_id', String(127), nullable=False),
    ForeignKeyConstraint(['user_id', 'worker_id'], ['worker.user_id', 'worker.worker_id']),
    Column('run_uuid', String(63), ForeignKey(bundle.c.uuid), nullable=False),
    Index('uuid_index', 'run_uuid'),
)

# Store information about the dependencies available on each worker.
worker_dependency = Table(
    'worker_dependency',
    db_metadata,
    Column('user_id', String(63), ForeignKey(user.c.user_id), primary_key=True, nullable=False),
    Column('worker_id', String(127), primary_key=True, nullable=False),
    ForeignKeyConstraint(['user_id', 'worker_id'], ['worker.user_id', 'worker.worker_id']),
    # Serialized list of dependencies for the user/worker combination.
    # See WorkerModel for the serialization method.
    Column('dependencies', LargeBinary, nullable=False),
)

[(23, 'sqlalchemy.MetaData', 'MetaData', ([], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (38, 'sqlalchemy.Column', 'Column', (['"""command"""', 'Text'], {'nullable': '(True)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (43, 'sqlalchemy.Column', 'Column', (['"""is_anonymous"""', 'Boolean'], {'nullable': '(False)', 'default': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (44, 'sqlalchemy.UniqueConstraint', 'UniqueConstraint', (['"""uuid"""'], {'name': '"""uix_1"""'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (45, 'sqlalchemy.Index', 'Index', (['"""bundle_data_hash_index"""', '"""data_hash"""'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (46, 'sqlalchemy.Index', 'Index', (['"""state_index"""', '"""state"""'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (62, 'sqlalchemy.Column', 'Column', (['"""metadata_value"""', 'Text'], {'nullable': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (63, 'sqlalchemy.Index', 'Index', (['"""metadata_kv_index"""', '"""metadata_key"""', '"""metadata_value"""'], {'mysql_length': '(63)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (78, 'sqlalchemy.Column', 'Column', (['"""child_path"""', 'Text'], {'nullable': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (82, 'sqlalchemy.Column', 'Column', (['"""parent_path"""', 'Text'], {'nullable': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (103, 'sqlalchemy.Column', 'Column', (['"""frozen"""', 'DateTime'], {'nullable': '(True)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (106, 'sqlalchemy.Column', 'Column', (['"""is_anonymous"""', 'Boolean'], {'nullable': '(False)', 'default': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (107, 'sqlalchemy.Column', 'Column', (['"""date_created"""', 'DateTime'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (110, 'sqlalchemy.Column', 'Column', (['"""date_last_modified"""', 'DateTime'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (113, 'sqlalchemy.UniqueConstraint', 'UniqueConstraint', (['"""uuid"""'], {'name': '"""uix_1"""'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (114, 'sqlalchemy.Index', 'Index', (['"""worksheet_name_index"""', '"""name"""'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (115, 'sqlalchemy.Index', 'Index', (['"""worksheet_owner_index"""', '"""owner_id"""'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (138, 'sqlalchemy.Column', 'Column', (['"""value"""', 'Text'], {'nullable': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (140, 'sqlalchemy.Column', 'Column', (['"""sort_key"""', 'Integer'], {'nullable': '(True)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (141, 'sqlalchemy.Index', 'Index', (['"""worksheet_item_worksheet_uuid_index"""', '"""worksheet_uuid"""'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (142, 'sqlalchemy.Index', 'Index', (['"""worksheet_item_bundle_uuid_index"""', '"""bundle_uuid"""'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (143, 'sqlalchemy.Index', 'Index', (['"""worksheet_item_subworksheet_uuid_index"""', '"""subworksheet_uuid"""'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (159, 'sqlalchemy.Index', 'Index', (['"""worksheet_tag_worksheet_uuid_index"""', '"""worksheet_uuid"""'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (160, 'sqlalchemy.Index', 'Index', (['"""worksheet_tag_tag_index"""', '"""tag"""'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (175, 'sqlalchemy.Column', 'Column', (['"""user_defined"""', 'Boolean'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (177, 'sqlalchemy.UniqueConstraint', 'UniqueConstraint', (['"""uuid"""'], {'name': '"""uix_1"""'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (178, 'sqlalchemy.Index', 'Index', (['"""group_name_index"""', '"""name"""'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (179, 'sqlalchemy.Index', 'Index', (['"""group_owner_id_index"""', '"""owner_id"""'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (195, 'sqlalchemy.Column', 'Column', (['"""is_admin"""', 'Boolean'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (196, 'sqlalchemy.Index', 'Index', (['"""group_uuid_index"""', '"""group_uuid"""'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (197, 'sqlalchemy.Index', 'Index', (['"""user_id_index"""', '"""user_id"""'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (215, 'sqlalchemy.Column', 'Column', (['"""permission"""', 'Integer'], {'nullable': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (233, 'sqlalchemy.Column', 'Column', (['"""permission"""', 'Integer'], {'nullable': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (263, 'sqlalchemy.Column', 'Column', (['"""notifications"""', 'Integer'], {'nullable': '(False)', 'default': 'NOTIFICATIONS_GENERAL'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (266, 'sqlalchemy.Column', 'Column', (['"""last_login"""', 'DateTime'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (267, 'sqlalchemy.Column', 'Column', (['"""is_active"""', 'Boolean'], {'nullable': '(False)', 'default': '(True)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (272, 'sqlalchemy.Column', 'Column', (['"""date_joined"""', 'DateTime'], {'nullable': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (273, 'sqlalchemy.Column', 'Column', (['"""has_access"""', 'Boolean'], {'default': '(False)', 'nullable': '(True)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (274, 'sqlalchemy.Column', 'Column', (['"""is_verified"""', 'Boolean'], {'nullable': '(False)', 'default': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (275, 'sqlalchemy.Column', 'Column', (['"""is_superuser"""', 'Boolean'], {'nullable': '(False)', 'default': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (281, 'sqlalchemy.Column', 'Column', (['"""time_quota"""', 'Float'], {'nullable': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (282, 'sqlalchemy.Column', 'Column', (['"""parallel_run_quota"""', 'Integer'], {'nullable': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (283, 'sqlalchemy.Column', 'Column', (['"""time_used"""', 'Float'], {'nullable': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (284, 'sqlalchemy.Column', 'Column', (['"""disk_quota"""', 'Float'], {'nullable': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (285, 'sqlalchemy.Column', 'Column', (['"""disk_used"""', 'Float'], {'nullable': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (286, 'sqlalchemy.Index', 'Index', (['"""user_user_id_index"""', '"""user_id"""'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (287, 'sqlalchemy.Index', 'Index', (['"""user_user_name_index"""', '"""user_name"""'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (288, 'sqlalchemy.UniqueConstraint', 'UniqueConstraint', (['"""user_id"""'], {'name': '"""uix_1"""'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (303, 'sqlalchemy.Column', 'Column', (['"""date_created"""', 'DateTime'], {'nullable': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (304, 'sqlalchemy.Column', 'Column', (['"""date_sent"""', 'DateTime'], {'nullable': '(True)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (320, 'sqlalchemy.Column', 'Column', (['"""date_created"""', 'DateTime'], {'nullable': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (346, 'sqlalchemy.Column', 'Column', (['"""scopes"""', 'Text'], {'nullable': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (347, 'sqlalchemy.Column', 'Column', (['"""redirect_uris"""', 'Text'], {'nullable': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (348, 'sqlalchemy.UniqueConstraint', 'UniqueConstraint', (['"""client_id"""'], {'name': '"""uix_1"""'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (363, 'sqlalchemy.Column', 'Column', (['"""scopes"""', 'Text'], {'nullable': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (366, 'sqlalchemy.Column', 'Column', (['"""expires"""', 'DateTime'], {'nullable': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (381, 'sqlalchemy.Column', 'Column', (['"""scopes"""', 'Text'], {'nullable': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (383, 'sqlalchemy.Column', 'Column', (['"""expires"""', 'DateTime'], {'nullable': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (398, 'sqlalchemy.Column', 'Column', (['"""time"""', 'DateTime'], {'nullable': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (401, 'sqlalchemy.Column', 'Column', (['"""message"""', 'Text'], {'nullable': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (417, 'sqlalchemy.Column', 'Column', (['"""tag"""', 'Text'], {'nullable': '(True)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (418, 'sqlalchemy.Column', 'Column', (['"""cpus"""', 'Integer'], {'nullable': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (419, 'sqlalchemy.Column', 'Column', (['"""gpus"""', 'Integer'], {'nullable': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (420, 'sqlalchemy.Column', 'Column', (['"""memory_bytes"""', 'BigInteger'], {'nullable': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (421, 'sqlalchemy.Column', 'Column', (['"""free_disk_bytes"""', 'BigInteger'], {'nullable': '(True)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (422, 'sqlalchemy.Column', 'Column', (['"""checkin_time"""', 'DateTime'], {'nullable': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (425, 'sqlalchemy.Column', 'Column', (['"""socket_id"""', 'Integer'], {'nullable': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (426, 'sqlalchemy.Column', 'Column', (['"""shared_file_system"""', 'Boolean'], {'nullable': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (429, 'sqlalchemy.Column', 'Column', (['"""tag_exclusive"""', 'Boolean'], {'nullable': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (432, 'sqlalchemy.Column', 'Column', (['"""exit_after_num_runs"""', 'Integer'], {'nullable': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (435, 'sqlalchemy.Column', 'Column', (['"""is_terminating"""', 'Boolean'], {'nullable': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (446, 'sqlalchemy.Column', 'Column', (['"""socket_id"""', 'Integer'], {'primary_key': '(True)', 'nullable': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (455, 'sqlalchemy.sql.schema.ForeignKeyConstraint', 'ForeignKeyConstraint', (["['user_id', 'worker_id']", "['worker.user_id', 'worker.worker_id']"], {}), False, 'from sqlalchemy.sql.schema import ForeignKeyConstraint\n'), (457, 'sqlalchemy.Index', 'Index', (['"""uuid_index"""', '"""run_uuid"""'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (466, 'sqlalchemy.sql.schema.ForeignKeyConstraint', 'ForeignKeyConstraint', (["['user_id', 'worker_id']", "['worker.user_id', 'worker.worker_id']"], {}), False, 'from sqlalchemy.sql.schema import ForeignKeyConstraint\n'), (469, 'sqlalchemy.Column', 'Column', (['"""dependencies"""', 'LargeBinary'], {'nullable': '(False)'}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (35, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (36, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (40, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (41, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (42, 'sqlalchemy.types.String', 'String', (['(255)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (60, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (60, 'sqlalchemy.ForeignKey', 'ForeignKey', (['bundle.c.uuid'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (61, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (77, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (77, 'sqlalchemy.ForeignKey', 'ForeignKey', (['bundle.c.uuid'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (81, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (97, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (98, 'sqlalchemy.types.String', 'String', (['(255)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (99, 'sqlalchemy.types.String', 'String', (['(255)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (101, 'sqlalchemy.types.Unicode', 'Unicode', (['(255)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (128, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (128, 'sqlalchemy.ForeignKey', 'ForeignKey', (['worksheet.c.uuid'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (136, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (137, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (139, 'sqlalchemy.types.String', 'String', (['(20)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (157, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (157, 'sqlalchemy.ForeignKey', 'ForeignKey', (['worksheet.c.uuid'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (158, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (173, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (174, 'sqlalchemy.types.String', 'String', (['(255)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (176, 'sqlalchemy.types.String', 'String', (['(255)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (192, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (192, 'sqlalchemy.ForeignKey', 'ForeignKey', (['group.c.uuid'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (193, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (193, 'sqlalchemy.ForeignKey', 'ForeignKey', (['"""user.user_id"""'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (211, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (211, 'sqlalchemy.ForeignKey', 'ForeignKey', (['group.c.uuid'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (213, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (213, 'sqlalchemy.ForeignKey', 'ForeignKey', (['bundle.c.uuid'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (229, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (229, 'sqlalchemy.ForeignKey', 'ForeignKey', (['group.c.uuid'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (231, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (231, 'sqlalchemy.ForeignKey', 'ForeignKey', (['worksheet.c.uuid'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (258, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (259, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (261, 'sqlalchemy.types.String', 'String', (['(254)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (270, 'sqlalchemy.types.String', 'String', (['(30)'], {'convert_unicode': '(True)'}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (271, 'sqlalchemy.types.String', 'String', (['(30)'], {'convert_unicode': '(True)'}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (276, 'sqlalchemy.types.String', 'String', (['(128)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (278, 'sqlalchemy.types.String', 'String', (['(255)'], {'convert_unicode': '(True)'}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (279, 'sqlalchemy.types.String', 'String', (['(255)'], {'convert_unicode': '(True)'}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (302, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (302, 'sqlalchemy.ForeignKey', 'ForeignKey', (['user.c.user_id'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (305, 'sqlalchemy.types.String', 'String', (['(64)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (319, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (319, 'sqlalchemy.ForeignKey', 'ForeignKey', (['user.c.user_id'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (321, 'sqlalchemy.types.String', 'String', (['(64)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (336, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (337, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (338, 'sqlalchemy.types.String', 'String', (['(255)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (339, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (339, 'sqlalchemy.ForeignKey', 'ForeignKey', (['user.c.user_id'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (342, 'sqlalchemy.types.Enum', 'Enum', (['"""authorization_code"""', '"""password"""', '"""client_credentials"""', '"""refresh_token"""'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (345, 'sqlalchemy.types.Enum', 'Enum', (['"""code"""', '"""token"""'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (361, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (361, 'sqlalchemy.ForeignKey', 'ForeignKey', (['oauth2_client.c.client_id'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (362, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (362, 'sqlalchemy.ForeignKey', 'ForeignKey', (['user.c.user_id'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (364, 'sqlalchemy.types.String', 'String', (['(255)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (365, 'sqlalchemy.types.String', 'String', (['(255)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (379, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (379, 'sqlalchemy.ForeignKey', 'ForeignKey', (['oauth2_client.c.client_id'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (380, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (380, 'sqlalchemy.ForeignKey', 'ForeignKey', (['user.c.user_id'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (382, 'sqlalchemy.types.String', 'String', (['(100)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (384, 'sqlalchemy.types.String', 'String', (['(255)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (399, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (400, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (403, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (406, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (414, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (414, 'sqlalchemy.ForeignKey', 'ForeignKey', (['user.c.user_id'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (415, 'sqlalchemy.types.String', 'String', (['(127)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (416, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (416, 'sqlalchemy.ForeignKey', 'ForeignKey', (['group.c.uuid'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (442, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (442, 'sqlalchemy.ForeignKey', 'ForeignKey', (['user.c.user_id'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (443, 'sqlalchemy.types.String', 'String', (['(127)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (453, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (453, 'sqlalchemy.ForeignKey', 'ForeignKey', (['user.c.user_id'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (454, 'sqlalchemy.types.String', 'String', (['(127)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (456, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (456, 'sqlalchemy.ForeignKey', 'ForeignKey', (['bundle.c.uuid'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (464, 'sqlalchemy.types.String', 'String', (['(63)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (464, 'sqlalchemy.ForeignKey', 'ForeignKey', (['user.c.user_id'], {}), False, 'from sqlalchemy import Column, ForeignKey, Index, MetaData, Table, UniqueConstraint\n'), (465, 'sqlalchemy.types.String', 'String', (['(127)'], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (30, 'sqlalchemy.types.BigInteger', 'BigInteger', ([], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (55, 'sqlalchemy.types.BigInteger', 'BigInteger', ([], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (72, 'sqlalchemy.types.BigInteger', 'BigInteger', ([], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (92, 'sqlalchemy.types.BigInteger', 'BigInteger', ([], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (123, 'sqlalchemy.types.BigInteger', 'BigInteger', ([], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (152, 'sqlalchemy.types.BigInteger', 'BigInteger', ([], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (168, 'sqlalchemy.types.BigInteger', 'BigInteger', ([], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (187, 'sqlalchemy.types.BigInteger', 'BigInteger', ([], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (206, 'sqlalchemy.types.BigInteger', 'BigInteger', ([], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (224, 'sqlalchemy.types.BigInteger', 'BigInteger', ([], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (252, 'sqlalchemy.types.BigInteger', 'BigInteger', ([], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (297, 'sqlalchemy.types.BigInteger', 'BigInteger', ([], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (314, 'sqlalchemy.types.BigInteger', 'BigInteger', ([], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (331, 'sqlalchemy.types.BigInteger', 'BigInteger', ([], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (356, 'sqlalchemy.types.BigInteger', 'BigInteger', ([], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (374, 'sqlalchemy.types.BigInteger', 'BigInteger', ([], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n'), (393, 'sqlalchemy.types.BigInteger', 'BigInteger', ([], {}), False, 'from sqlalchemy.types import BigInteger, Boolean, DateTime, Enum, Float, Integer, LargeBinary, String, Text, Unicode\n')]