refactor: ruff autofixes

This commit is contained in:
Mark Paronyan committed 2026-09-27 15:55:10 +03:00
1 parent 2ac637c662
commit a0450b6bce
455 files changed
+12322 -14762

No files matched your search

@@ -5,13 +5,14 @@ Revises: 98083573d011
Create Date: 2026-03-03
"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy import inspect
# revision identifiers, used by Alembic.
revision = '20260303_create_llm_model_configs'
down_revision = '98083573d011'
revision = "20260303_create_llm_model_configs"
down_revision = "98083573d011"
branch_labels = None
depends_on = None
@@ -25,43 +26,44 @@ def upgrade() -> None:
# Check if table already exists (idempotent for databases created from code)
tables = inspector.get_table_names()
if 'llm_model_configs' in tables:
if "llm_model_configs" in tables:
# Table already exists from Base.metadata.create_all, skip creation
return
# Create llm_model_configs table with cross-database compatible types
op.create_table(
'llm_model_configs',
sa.Column('config_id', sa.String(32), primary_key=True),
sa.Column('name', sa.String(100), nullable=False),
sa.Column('model_type', sa.String(50), nullable=False),
sa.Column('config', sa.JSON(), nullable=False),
sa.Column('user_id', sa.String(32), sa.ForeignKey('users.user_id', ondelete='CASCADE'), nullable=True),
sa.Column('group_id', sa.String(32), sa.ForeignKey('user_groups.user_group_id', ondelete='CASCADE'), nullable=True),
sa.Column('is_default', sa.Boolean(), default=False, nullable=False),
sa.Column('version', sa.Integer(), nullable=False, server_default='0'),
sa.Column('created_at', sa.DateTime(), nullable=True),
sa.Column('updated_at', sa.DateTime(), nullable=True),
"llm_model_configs",
sa.Column("config_id", sa.String(32), primary_key=True),
sa.Column("name", sa.String(100), nullable=False),
sa.Column("model_type", sa.String(50), nullable=False),
sa.Column("config", sa.JSON(), nullable=False),
sa.Column("user_id", sa.String(32), sa.ForeignKey("users.user_id", ondelete="CASCADE"), nullable=True),
sa.Column(
"group_id", sa.String(32), sa.ForeignKey("user_groups.user_group_id", ondelete="CASCADE"), nullable=True
),
sa.Column("is_default", sa.Boolean(), default=False, nullable=False),
sa.Column("version", sa.Integer(), nullable=False, server_default="0"),
sa.Column("created_at", sa.DateTime(), nullable=True),
sa.Column("updated_at", sa.DateTime(), nullable=True),
sa.CheckConstraint(
"(user_id IS NOT NULL AND group_id IS NULL) OR "
"(user_id IS NULL AND group_id IS NOT NULL)",
name='single_owner_check'
"(user_id IS NOT NULL AND group_id IS NULL) OR (user_id IS NULL AND group_id IS NOT NULL)",
name="single_owner_check",
),
sa.CheckConstraint(
"model_type IN ('text', 'vision', 'stt', 'tts', 'multimodal', 'embedding', 'reranking', 'other')",
name='valid_model_type_check'
name="valid_model_type_check",
),
)
# Create indexes for efficient queries
op.create_index('idx_llm_model_configs_user_id', 'llm_model_configs', ['user_id'])
op.create_index('idx_llm_model_configs_group_id', 'llm_model_configs', ['group_id'])
op.create_index('idx_llm_model_configs_model_type', 'llm_model_configs', ['model_type'])
op.create_index("idx_llm_model_configs_user_id", "llm_model_configs", ["user_id"])
op.create_index("idx_llm_model_configs_group_id", "llm_model_configs", ["group_id"])
op.create_index("idx_llm_model_configs_model_type", "llm_model_configs", ["model_type"])
# PostgreSQL-specific indexes
if dialect_name == 'postgresql':
if dialect_name == "postgresql":
# GIN index for JSONB config column
op.create_index('idx_llm_model_configs_config', 'llm_model_configs', ['config'], postgresql_using='gin')
op.create_index("idx_llm_model_configs_config", "llm_model_configs", ["config"], postgresql_using="gin")
# Partial unique indexes for default configs
op.execute("""
@@ -82,14 +84,14 @@ def downgrade() -> None:
dialect_name = conn.dialect.name
# Drop indexes
op.drop_index('idx_llm_model_configs_model_type', table_name='llm_model_configs')
op.drop_index('idx_llm_model_configs_group_id', table_name='llm_model_configs')
op.drop_index('idx_llm_model_configs_user_id', table_name='llm_model_configs')
op.drop_index("idx_llm_model_configs_model_type", table_name="llm_model_configs")
op.drop_index("idx_llm_model_configs_group_id", table_name="llm_model_configs")
op.drop_index("idx_llm_model_configs_user_id", table_name="llm_model_configs")
if dialect_name == 'postgresql':
op.drop_index('idx_llm_model_configs_config', table_name='llm_model_configs')
op.drop_index('unique_user_default', table_name='llm_model_configs')
op.drop_index('unique_group_default', table_name='llm_model_configs')
if dialect_name == "postgresql":
op.drop_index("idx_llm_model_configs_config", table_name="llm_model_configs")
op.drop_index("unique_user_default", table_name="llm_model_configs")
op.drop_index("unique_group_default", table_name="llm_model_configs")
# Drop table
op.drop_table('llm_model_configs')
op.drop_table("llm_model_configs")
@@ -1,16 +1,17 @@
"""init
Revision ID: 7ceeddd9c9a8
Revises:
Revises:
Create Date: 2023-01-11 08:55:25.116126
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '7ceeddd9c9a8'
revision = "7ceeddd9c9a8"
down_revision = None
branch_labels = None
depends_on = None
@@ -5,22 +5,23 @@ Revises: f0b0de2a9
Create Date: 2026-08-14 10:00:00.000000
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '8f2a1c4e9d3b'
down_revision = 'f0b0de2a9'
revision = "8f2a1c4e9d3b"
down_revision = "f0b0de2a9"
branch_labels = None
depends_on = None
def upgrade() -> None:
op.add_column('docker_templates', sa.Column('extra_configs', sa.JSON()))
op.add_column("docker_templates", sa.Column("extra_configs", sa.JSON()))
def downgrade() -> None:
op.drop_column('docker_templates', 'extra_configs')
op.drop_column("docker_templates", "extra_configs")
@@ -5,22 +5,23 @@ Revises: 9a5292aa4389
Create Date: 2026-02-23 18:23:59.857607
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '98083573d011'
down_revision = '9a5292aa4389'
revision = "98083573d011"
down_revision = "9a5292aa4389"
branch_labels = None
depends_on = None
def upgrade() -> None:
op.add_column('templates', sa.Column('tags', sa.String()))
op.add_column("templates", sa.Column("tags", sa.String()))
def downgrade() -> None:
op.drop_column('templates', 'tags')
op.drop_column("templates", "tags")
@@ -5,23 +5,23 @@ Revises: 7ceeddd9c9a8
Create Date: 2024-09-18 17:52:53.429522
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '9a5292aa4389'
down_revision = '7ceeddd9c9a8'
revision = "9a5292aa4389"
down_revision = "7ceeddd9c9a8"
branch_labels = None
depends_on = None
def upgrade() -> None:
op.add_column('docker_templates', sa.Column('mac_address', sa.String()))
op.add_column("docker_templates", sa.Column("mac_address", sa.String()))
def downgrade() -> None:
op.drop_column('docker_templates', 'mac_address')
op.drop_column("docker_templates", "mac_address")
@@ -5,33 +5,34 @@ Revises: aff810fc119a
Create Date: 2026-05-26
"""
from alembic import op
import sqlalchemy as sa
from uuid import uuid4
# revision identifiers, used by Alembic.
revision = 'a8829e6c069b'
down_revision = 'aff810fc119a'
revision = "a8829e6c069b"
down_revision = "aff810fc119a"
branch_labels = None
depends_on = None
privileges_table = sa.table(
'privileges',
sa.column('privilege_id', sa.String),
sa.column('name', sa.String),
sa.column('description', sa.String),
"privileges",
sa.column("privilege_id", sa.String),
sa.column("name", sa.String),
sa.column("description", sa.String),
)
roles_table = sa.table(
'roles',
sa.column('role_id', sa.String),
sa.column('name', sa.String),
"roles",
sa.column("role_id", sa.String),
sa.column("name", sa.String),
)
privilege_role_map = sa.table(
'privilege_role_map',
sa.column('privilege_id', sa.String),
sa.column('role_id', sa.String),
"privilege_role_map",
sa.column("privilege_id", sa.String),
sa.column("role_id", sa.String),
)
@@ -48,9 +49,7 @@ def upgrade() -> None:
privilege_ids = {}
for priv in new_privileges:
result = conn.execute(
sa.select(privileges_table.c.privilege_id).where(
privileges_table.c.name == priv["name"]
)
sa.select(privileges_table.c.privilege_id).where(privileges_table.c.name == priv["name"])
).fetchone()
if result:
@@ -67,9 +66,7 @@ def upgrade() -> None:
privilege_ids[priv["name"]] = priv_id
# Add LLMConfig.Audit and LLMConfig.Modify to the User role
user_role = conn.execute(
sa.select(roles_table.c.role_id).where(roles_table.c.name == "User")
).fetchone()
user_role = conn.execute(sa.select(roles_table.c.role_id).where(roles_table.c.name == "User")).fetchone()
if user_role:
user_role_id = user_role[0]
@@ -85,17 +82,13 @@ def upgrade() -> None:
def downgrade() -> None:
conn = op.get_bind()
user_role = conn.execute(
sa.select(roles_table.c.role_id).where(roles_table.c.name == "User")
).fetchone()
user_role = conn.execute(sa.select(roles_table.c.role_id).where(roles_table.c.name == "User")).fetchone()
if user_role:
user_role_id = user_role[0]
for priv_name in ("LLMConfig.Audit", "LLMConfig.Modify"):
priv = conn.execute(
sa.select(privileges_table.c.privilege_id).where(
privileges_table.c.name == priv_name
)
sa.select(privileges_table.c.privilege_id).where(privileges_table.c.name == priv_name)
).fetchone()
if priv:
conn.execute(
@@ -106,8 +99,4 @@ def downgrade() -> None:
)
for priv_name in ("LLMConfig.Allocate", "LLMConfig.Audit", "LLMConfig.Modify"):
conn.execute(
privileges_table.delete().where(
privileges_table.c.name == priv_name
)
)
conn.execute(privileges_table.delete().where(privileges_table.c.name == priv_name))
@@ -5,20 +5,22 @@ Revises: ec4b7b198555
Create Date: 2026-04-06 19:49:12.155446
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = 'aff810fc119a'
down_revision = 'ec4b7b198555'
revision = "aff810fc119a"
down_revision = "ec4b7b198555"
branch_labels = None
depends_on = None
def upgrade() -> None:
op.add_column('users', sa.Column('token_version', sa.Integer(), nullable=False, server_default='0'))
op.add_column("users", sa.Column("token_version", sa.Integer(), nullable=False, server_default="0"))
def downgrade() -> None:
op.drop_column('users', 'token_version')
op.drop_column("users", "token_version")
@@ -5,22 +5,23 @@ Revises: 8f2a1c4e9d3b
Create Date: 2026-08-16 10:00:00.000000
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = 'b3c7e2a91d4f'
down_revision = '8f2a1c4e9d3b'
revision = "b3c7e2a91d4f"
down_revision = "8f2a1c4e9d3b"
branch_labels = None
depends_on = None
def upgrade() -> None:
op.add_column('templates', sa.Column('netmiko_device_type', sa.String()))
op.add_column("templates", sa.Column("netmiko_device_type", sa.String()))
def downgrade() -> None:
op.drop_column('templates', 'netmiko_device_type')
op.drop_column("templates", "netmiko_device_type")
@@ -5,22 +5,23 @@ Revises: b3c7e2a91d4f
Create Date: 2026-08-16 12:00:00.000000
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = 'c7e4a9f1d2b6'
down_revision = 'b3c7e2a91d4f'
revision = "c7e4a9f1d2b6"
down_revision = "b3c7e2a91d4f"
branch_labels = None
depends_on = None
def upgrade() -> None:
op.add_column('templates', sa.Column('appliance_metadata', sa.JSON()))
op.add_column("templates", sa.Column("appliance_metadata", sa.JSON()))
def downgrade() -> None:
op.drop_column('templates', 'appliance_metadata')
op.drop_column("templates", "appliance_metadata")
@@ -5,12 +5,13 @@ Revises: 20260303_create_llm_model_configs
Create Date: 2026-04-03 19:51:06.173013
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = 'ec4b7b198555'
down_revision = '20260303_create_llm_model_configs'
revision = "ec4b7b198555"
down_revision = "20260303_create_llm_model_configs"
branch_labels = None
depends_on = None
@@ -33,13 +34,13 @@ def convert_pickle_to_json(conn, table_name: str, column_name: str) -> None:
json_data = json.dumps(data)
conn.execute(
sa.text(f"UPDATE {table_name} SET {column_name} = :data WHERE template_id = :template_id"),
{"data": json_data, "template_id": row.template_id}
{"data": json_data, "template_id": row.template_id},
)
else:
# Set NULL if there is no data to be converted
conn.execute(
sa.text(f"UPDATE {table_name} SET {column_name} = NULL WHERE template_id = :template_id"),
{"template_id": row.template_id}
{"template_id": row.template_id},
)
@@ -61,13 +62,13 @@ def convert_json_to_pickle(conn, table_name: str, column_name: str) -> None:
pickle_data = pickle.dumps(data)
conn.execute(
sa.text(f"UPDATE {table_name} SET {column_name} = :data WHERE template_id = :template_id"),
{"data": pickle_data, "template_id": row.template_id}
{"data": pickle_data, "template_id": row.template_id},
)
else:
# Set NULL if there is no data to be converted
conn.execute(
sa.text(f"UPDATE {table_name} SET {column_name} = NULL WHERE template_id = :template_id"),
{"template_id": row.template_id}
{"template_id": row.template_id},
)
@@ -86,21 +87,22 @@ def upgrade() -> None:
convert_pickle_to_json(conn, "virtualbox_templates", "custom_adapters")
convert_pickle_to_json(conn, "vmware_templates", "custom_adapters")
with op.batch_alter_table('cloud_templates') as batch_op:
batch_op.alter_column('ports_mapping', type_=sa.JSON())
with op.batch_alter_table('docker_templates') as batch_op:
batch_op.alter_column('extra_volumes', type_=sa.JSON())
batch_op.alter_column('custom_adapters', type_=sa.JSON())
with op.batch_alter_table('ethernet_hub_templates') as batch_op:
batch_op.alter_column('ports_mapping', type_=sa.JSON())
with op.batch_alter_table('ethernet_switch_templates') as batch_op:
batch_op.alter_column('ports_mapping', type_=sa.JSON())
with op.batch_alter_table('qemu_templates') as batch_op:
batch_op.alter_column('custom_adapters', type_=sa.JSON())
with op.batch_alter_table('virtualbox_templates') as batch_op:
batch_op.alter_column('custom_adapters', type_=sa.JSON())
with op.batch_alter_table('vmware_templates') as batch_op:
batch_op.alter_column('custom_adapters', type_=sa.JSON())
with op.batch_alter_table("cloud_templates") as batch_op:
batch_op.alter_column("ports_mapping", type_=sa.JSON())
with op.batch_alter_table("docker_templates") as batch_op:
batch_op.alter_column("extra_volumes", type_=sa.JSON())
batch_op.alter_column("custom_adapters", type_=sa.JSON())
with op.batch_alter_table("ethernet_hub_templates") as batch_op:
batch_op.alter_column("ports_mapping", type_=sa.JSON())
with op.batch_alter_table("ethernet_switch_templates") as batch_op:
batch_op.alter_column("ports_mapping", type_=sa.JSON())
with op.batch_alter_table("qemu_templates") as batch_op:
batch_op.alter_column("custom_adapters", type_=sa.JSON())
with op.batch_alter_table("virtualbox_templates") as batch_op:
batch_op.alter_column("custom_adapters", type_=sa.JSON())
with op.batch_alter_table("vmware_templates") as batch_op:
batch_op.alter_column("custom_adapters", type_=sa.JSON())
def downgrade() -> None:
@@ -117,18 +119,18 @@ def downgrade() -> None:
convert_json_to_pickle(conn, "virtualbox_templates", "custom_adapters")
convert_json_to_pickle(conn, "vmware_templates", "custom_adapters")
with op.batch_alter_table('cloud_templates') as batch_op:
batch_op.alter_column('ports_mapping', type_=sa.PickleType())
with op.batch_alter_table('docker_templates') as batch_op:
batch_op.alter_column('extra_volumes', type_=sa.PickleType())
batch_op.alter_column('custom_adapters', type_=sa.PickleType())
with op.batch_alter_table('ethernet_hub_templates') as batch_op:
batch_op.alter_column('ports_mapping', type_=sa.PickleType())
with op.batch_alter_table('ethernet_switch_templates') as batch_op:
batch_op.alter_column('ports_mapping', type_=sa.PickleType())
with op.batch_alter_table('qemu_templates') as batch_op:
batch_op.alter_column('custom_adapters', type_=sa.PickleType())
with op.batch_alter_table('virtualbox_templates') as batch_op:
batch_op.alter_column('custom_adapters', type_=sa.PickleType())
with op.batch_alter_table('vmware_templates') as batch_op:
batch_op.alter_column('custom_adapters', type_=sa.PickleType())
with op.batch_alter_table("cloud_templates") as batch_op:
batch_op.alter_column("ports_mapping", type_=sa.PickleType())
with op.batch_alter_table("docker_templates") as batch_op:
batch_op.alter_column("extra_volumes", type_=sa.PickleType())
batch_op.alter_column("custom_adapters", type_=sa.PickleType())
with op.batch_alter_table("ethernet_hub_templates") as batch_op:
batch_op.alter_column("ports_mapping", type_=sa.PickleType())
with op.batch_alter_table("ethernet_switch_templates") as batch_op:
batch_op.alter_column("ports_mapping", type_=sa.PickleType())
with op.batch_alter_table("qemu_templates") as batch_op:
batch_op.alter_column("custom_adapters", type_=sa.PickleType())
with op.batch_alter_table("virtualbox_templates") as batch_op:
batch_op.alter_column("custom_adapters", type_=sa.PickleType())
with op.batch_alter_table("vmware_templates") as batch_op:
batch_op.alter_column("custom_adapters", type_=sa.PickleType())
@@ -5,13 +5,14 @@ Revises: a8829e6c069b
Create Date: 2026-06-11 10:00:00.000000
"""
from alembic import op
import sqlalchemy as sa
import gns3server.db.models.base as models
# revision identifiers, used by Alembic.
revision = 'f0b0de2a9'
down_revision = 'a8829e6c069b'
revision = "f0b0de2a9"
down_revision = "a8829e6c069b"
branch_labels = None
depends_on = None
@@ -19,25 +20,25 @@ depends_on = None
def upgrade() -> None:
op.create_table(
'api_keys',
sa.Column('api_key_id', models.GUID(), nullable=False),
sa.Column('user_id', models.GUID(), nullable=False),
sa.Column('name', sa.String(128), nullable=False),
sa.Column('key_hash', sa.String(128), nullable=False),
sa.Column('key_prefix', sa.String(8), nullable=False),
sa.Column('last_used_at', sa.DateTime(), nullable=True),
sa.Column('created_at', sa.DateTime(), server_default=sa.func.current_timestamp(), nullable=False),
sa.Column('updated_at', sa.DateTime(), server_default=sa.func.current_timestamp(), nullable=False),
sa.Column('revoked', sa.Boolean(), default=False, nullable=False),
sa.ForeignKeyConstraint(['user_id'], ['users.user_id'], ondelete='CASCADE'),
sa.PrimaryKeyConstraint('api_key_id'),
"api_keys",
sa.Column("api_key_id", models.GUID(), nullable=False),
sa.Column("user_id", models.GUID(), nullable=False),
sa.Column("name", sa.String(128), nullable=False),
sa.Column("key_hash", sa.String(128), nullable=False),
sa.Column("key_prefix", sa.String(8), nullable=False),
sa.Column("last_used_at", sa.DateTime(), nullable=True),
sa.Column("created_at", sa.DateTime(), server_default=sa.func.current_timestamp(), nullable=False),
sa.Column("updated_at", sa.DateTime(), server_default=sa.func.current_timestamp(), nullable=False),
sa.Column("revoked", sa.Boolean(), default=False, nullable=False),
sa.ForeignKeyConstraint(["user_id"], ["users.user_id"], ondelete="CASCADE"),
sa.PrimaryKeyConstraint("api_key_id"),
)
op.create_index('ix_api_keys_user_id', 'api_keys', ['user_id'])
op.create_index('ix_api_keys_key_hash', 'api_keys', ['key_hash'])
op.create_index("ix_api_keys_user_id", "api_keys", ["user_id"])
op.create_index("ix_api_keys_key_hash", "api_keys", ["key_hash"])
def downgrade() -> None:
op.drop_index('ix_api_keys_key_hash', table_name='api_keys')
op.drop_index('ix_api_keys_user_id', table_name='api_keys')
op.drop_table('api_keys')
op.drop_index("ix_api_keys_key_hash", table_name="api_keys")
op.drop_index("ix_api_keys_user_id", table_name="api_keys")
op.drop_table("api_keys")