diff --git a/alembic/versions/04425ce3d4d5_add_jobs_table.py b/alembic/versions/04425ce3d4d5_add_jobs_table.py index ac221f5..81117d3 100644 --- a/alembic/versions/04425ce3d4d5_add_jobs_table.py +++ b/alembic/versions/04425ce3d4d5_add_jobs_table.py @@ -5,16 +5,17 @@ Revises: a3f7c19b2d40 Create Date: 2026-08-05 15:21:09.527442 """ -from typing import Sequence, Union +from collections.abc import Sequence + +import sqlalchemy as sa from alembic import op -import sqlalchemy as sa # revision identifiers, used by Alembic. revision: str = "04425ce3d4d5" -down_revision: Union[str, None] = "a3f7c19b2d40" -branch_labels: Union[str, Sequence[str], None] = None -depends_on: Union[str, Sequence[str], None] = None +down_revision: str | None = "a3f7c19b2d40" +branch_labels: str | Sequence[str] | None = None +depends_on: str | Sequence[str] | None = None def upgrade() -> None: diff --git a/alembic/versions/0c3d1a5cff1f_add_part_colours.py b/alembic/versions/0c3d1a5cff1f_add_part_colours.py index 2a137d3..7446098 100644 --- a/alembic/versions/0c3d1a5cff1f_add_part_colours.py +++ b/alembic/versions/0c3d1a5cff1f_add_part_colours.py @@ -5,16 +5,17 @@ Revises: 5b6a7817b408 Create Date: 2026-07-02 12:22:24.106795 """ -from typing import Sequence, Union +from collections.abc import Sequence + +import sqlalchemy as sa from alembic import op -import sqlalchemy as sa # revision identifiers, used by Alembic. revision: str = "0c3d1a5cff1f" -down_revision: Union[str, None] = "5b6a7817b408" -branch_labels: Union[str, Sequence[str], None] = None -depends_on: Union[str, Sequence[str], None] = None +down_revision: str | None = "5b6a7817b408" +branch_labels: str | Sequence[str] | None = None +depends_on: str | Sequence[str] | None = None def upgrade() -> None: diff --git a/alembic/versions/1b99be8a9b1e_add_fits_tables.py b/alembic/versions/1b99be8a9b1e_add_fits_tables.py index b65e432..6b5519e 100644 --- a/alembic/versions/1b99be8a9b1e_add_fits_tables.py +++ b/alembic/versions/1b99be8a9b1e_add_fits_tables.py @@ -5,16 +5,17 @@ Revises: adf4a5b9493e Create Date: 2026-07-14 15:00:00.000000 """ -from typing import Sequence, Union +from collections.abc import Sequence + +import sqlalchemy as sa from alembic import op -import sqlalchemy as sa # revision identifiers, used by Alembic. revision: str = "1b99be8a9b1e" -down_revision: Union[str, None] = "adf4a5b9493e" -branch_labels: Union[str, Sequence[str], None] = None -depends_on: Union[str, Sequence[str], None] = None +down_revision: str | None = "adf4a5b9493e" +branch_labels: str | Sequence[str] | None = None +depends_on: str | Sequence[str] | None = None def upgrade() -> None: diff --git a/alembic/versions/235d823a56ee_drop_objective_thread_pitch_from_scope_.py b/alembic/versions/235d823a56ee_drop_objective_thread_pitch_from_scope_.py index bdb3578..1327bff 100644 --- a/alembic/versions/235d823a56ee_drop_objective_thread_pitch_from_scope_.py +++ b/alembic/versions/235d823a56ee_drop_objective_thread_pitch_from_scope_.py @@ -5,16 +5,17 @@ Revises: 04425ce3d4d5 Create Date: 2026-08-17 15:18:26.763831 """ -from typing import Sequence, Union +from collections.abc import Sequence + +import sqlalchemy as sa from alembic import op -import sqlalchemy as sa # revision identifiers, used by Alembic. revision: str = "235d823a56ee" -down_revision: Union[str, None] = "04425ce3d4d5" -branch_labels: Union[str, Sequence[str], None] = None -depends_on: Union[str, Sequence[str], None] = None +down_revision: str | None = "04425ce3d4d5" +branch_labels: str | Sequence[str] | None = None +depends_on: str | Sequence[str] | None = None def upgrade() -> None: diff --git a/alembic/versions/5b6a7817b408_add_static_connections.py b/alembic/versions/5b6a7817b408_add_static_connections.py index 64fbaf4..81df45d 100644 --- a/alembic/versions/5b6a7817b408_add_static_connections.py +++ b/alembic/versions/5b6a7817b408_add_static_connections.py @@ -5,16 +5,17 @@ Revises: 7be5ef599d3f Create Date: 2026-07-02 11:57:13.095417 """ -from typing import Sequence, Union +from collections.abc import Sequence + +import sqlalchemy as sa from alembic import op -import sqlalchemy as sa # revision identifiers, used by Alembic. revision: str = "5b6a7817b408" -down_revision: Union[str, None] = "7be5ef599d3f" -branch_labels: Union[str, Sequence[str], None] = None -depends_on: Union[str, Sequence[str], None] = None +down_revision: str | None = "7be5ef599d3f" +branch_labels: str | Sequence[str] | None = None +depends_on: str | Sequence[str] | None = None def upgrade() -> None: diff --git a/alembic/versions/627d4460a94f_add_iso_threads_table.py b/alembic/versions/627d4460a94f_add_iso_threads_table.py index 77c9bbe..c2c276b 100644 --- a/alembic/versions/627d4460a94f_add_iso_threads_table.py +++ b/alembic/versions/627d4460a94f_add_iso_threads_table.py @@ -6,16 +6,15 @@ Create Date: 2026-06-24 21:50:05.340235 """ from collections.abc import Sequence -from typing import Union import sqlalchemy as sa from alembic import op revision: str = "627d4460a94f" -down_revision: Union[str, None] = "0001_initial" -branch_labels: Union[str, Sequence[str], None] = None -depends_on: Union[str, Sequence[str], None] = None +down_revision: str | None = "0001_initial" +branch_labels: str | Sequence[str] | None = None +depends_on: str | Sequence[str] | None = None def upgrade() -> None: diff --git a/alembic/versions/70e48bda8829_add_attachment_point_names.py b/alembic/versions/70e48bda8829_add_attachment_point_names.py index fac5e12..f52c35e 100644 --- a/alembic/versions/70e48bda8829_add_attachment_point_names.py +++ b/alembic/versions/70e48bda8829_add_attachment_point_names.py @@ -5,16 +5,17 @@ Revises: c7882cedc9ae Create Date: 2026-07-02 13:54:58.335394 """ -from typing import Sequence, Union +from collections.abc import Sequence + +import sqlalchemy as sa from alembic import op -import sqlalchemy as sa # revision identifiers, used by Alembic. revision: str = "70e48bda8829" -down_revision: Union[str, None] = "c7882cedc9ae" -branch_labels: Union[str, Sequence[str], None] = None -depends_on: Union[str, Sequence[str], None] = None +down_revision: str | None = "c7882cedc9ae" +branch_labels: str | Sequence[str] | None = None +depends_on: str | Sequence[str] | None = None def upgrade() -> None: diff --git a/alembic/versions/7be5ef599d3f_add_imported_parts_tables.py b/alembic/versions/7be5ef599d3f_add_imported_parts_tables.py index 6b81f02..7a16559 100644 --- a/alembic/versions/7be5ef599d3f_add_imported_parts_tables.py +++ b/alembic/versions/7be5ef599d3f_add_imported_parts_tables.py @@ -5,16 +5,17 @@ Revises: b60d0aa3ceda Create Date: 2026-06-25 15:29:20.685050 """ -from typing import Sequence, Union +from collections.abc import Sequence + +import sqlalchemy as sa from alembic import op -import sqlalchemy as sa # revision identifiers, used by Alembic. revision: str = "7be5ef599d3f" -down_revision: Union[str, None] = "b60d0aa3ceda" -branch_labels: Union[str, Sequence[str], None] = None -depends_on: Union[str, Sequence[str], None] = None +down_revision: str | None = "b60d0aa3ceda" +branch_labels: str | Sequence[str] | None = None +depends_on: str | Sequence[str] | None = None def upgrade() -> None: diff --git a/alembic/versions/8012c00b0c04_add_augmented_part_notes_table.py b/alembic/versions/8012c00b0c04_add_augmented_part_notes_table.py index 5e8764a..b666ccc 100644 --- a/alembic/versions/8012c00b0c04_add_augmented_part_notes_table.py +++ b/alembic/versions/8012c00b0c04_add_augmented_part_notes_table.py @@ -5,16 +5,17 @@ Revises: d1e2f3a4b5c6 Create Date: 2026-07-31 09:07:06.137175 """ -from typing import Sequence, Union +from collections.abc import Sequence + +import sqlalchemy as sa from alembic import op -import sqlalchemy as sa # revision identifiers, used by Alembic. revision: str = "8012c00b0c04" -down_revision: Union[str, None] = "d1e2f3a4b5c6" -branch_labels: Union[str, Sequence[str], None] = None -depends_on: Union[str, Sequence[str], None] = None +down_revision: str | None = "d1e2f3a4b5c6" +branch_labels: str | Sequence[str] | None = None +depends_on: str | Sequence[str] | None = None def upgrade() -> None: diff --git a/alembic/versions/8bc411b5814e_add_augmented_parts.py b/alembic/versions/8bc411b5814e_add_augmented_parts.py index 89f9c97..46e30db 100644 --- a/alembic/versions/8bc411b5814e_add_augmented_parts.py +++ b/alembic/versions/8bc411b5814e_add_augmented_parts.py @@ -5,16 +5,17 @@ Revises: 0c3d1a5cff1f Create Date: 2026-07-02 12:37:59.457033 """ -from typing import Sequence, Union +from collections.abc import Sequence + +import sqlalchemy as sa from alembic import op -import sqlalchemy as sa # revision identifiers, used by Alembic. revision: str = "8bc411b5814e" -down_revision: Union[str, None] = "0c3d1a5cff1f" -branch_labels: Union[str, Sequence[str], None] = None -depends_on: Union[str, Sequence[str], None] = None +down_revision: str | None = "0c3d1a5cff1f" +branch_labels: str | Sequence[str] | None = None +depends_on: str | Sequence[str] | None = None def upgrade() -> None: diff --git a/alembic/versions/a192abbf4091_add_manufacturers_table.py b/alembic/versions/a192abbf4091_add_manufacturers_table.py index f4687e0..9d933f2 100644 --- a/alembic/versions/a192abbf4091_add_manufacturers_table.py +++ b/alembic/versions/a192abbf4091_add_manufacturers_table.py @@ -5,16 +5,17 @@ Revises: 627d4460a94f Create Date: 2026-06-25 10:32:11.398529 """ -from typing import Sequence, Union +from collections.abc import Sequence + +import sqlalchemy as sa from alembic import op -import sqlalchemy as sa # revision identifiers, used by Alembic. revision: str = "a192abbf4091" -down_revision: Union[str, None] = "627d4460a94f" -branch_labels: Union[str, Sequence[str], None] = None -depends_on: Union[str, Sequence[str], None] = None +down_revision: str | None = "627d4460a94f" +branch_labels: str | Sequence[str] | None = None +depends_on: str | Sequence[str] | None = None def upgrade() -> None: diff --git a/alembic/versions/a3f7c19b2d40_add_objective_lens_diameter_to_scope_infos.py b/alembic/versions/a3f7c19b2d40_add_objective_lens_diameter_to_scope_infos.py index e40f380..50cd102 100644 --- a/alembic/versions/a3f7c19b2d40_add_objective_lens_diameter_to_scope_infos.py +++ b/alembic/versions/a3f7c19b2d40_add_objective_lens_diameter_to_scope_infos.py @@ -5,16 +5,17 @@ Revises: 8012c00b0c04 Create Date: 2026-08-04 00:00:00.000000 """ -from typing import Sequence, Union +from collections.abc import Sequence + +import sqlalchemy as sa from alembic import op -import sqlalchemy as sa # revision identifiers, used by Alembic. revision: str = "a3f7c19b2d40" -down_revision: Union[str, None] = "8012c00b0c04" -branch_labels: Union[str, Sequence[str], None] = None -depends_on: Union[str, Sequence[str], None] = None +down_revision: str | None = "8012c00b0c04" +branch_labels: str | Sequence[str] | None = None +depends_on: str | Sequence[str] | None = None def upgrade() -> None: diff --git a/alembic/versions/a52e7ca7a925_add_scope_models_table.py b/alembic/versions/a52e7ca7a925_add_scope_models_table.py index 984a273..0fd1189 100644 --- a/alembic/versions/a52e7ca7a925_add_scope_models_table.py +++ b/alembic/versions/a52e7ca7a925_add_scope_models_table.py @@ -5,16 +5,17 @@ Revises: a192abbf4091 Create Date: 2026-06-25 10:35:40.227253 """ -from typing import Sequence, Union +from collections.abc import Sequence + +import sqlalchemy as sa from alembic import op -import sqlalchemy as sa # revision identifiers, used by Alembic. revision: str = "a52e7ca7a925" -down_revision: Union[str, None] = "a192abbf4091" -branch_labels: Union[str, Sequence[str], None] = None -depends_on: Union[str, Sequence[str], None] = None +down_revision: str | None = "a192abbf4091" +branch_labels: str | Sequence[str] | None = None +depends_on: str | Sequence[str] | None = None def upgrade() -> None: diff --git a/alembic/versions/adf4a5b9493e_add_attachment_points.py b/alembic/versions/adf4a5b9493e_add_attachment_points.py index 9680927..9a92df8 100644 --- a/alembic/versions/adf4a5b9493e_add_attachment_points.py +++ b/alembic/versions/adf4a5b9493e_add_attachment_points.py @@ -5,16 +5,17 @@ Revises: 70e48bda8829 Create Date: 2026-07-02 14:03:23.561253 """ -from typing import Sequence, Union +from collections.abc import Sequence + +import sqlalchemy as sa from alembic import op -import sqlalchemy as sa # revision identifiers, used by Alembic. revision: str = "adf4a5b9493e" -down_revision: Union[str, None] = "70e48bda8829" -branch_labels: Union[str, Sequence[str], None] = None -depends_on: Union[str, Sequence[str], None] = None +down_revision: str | None = "70e48bda8829" +branch_labels: str | Sequence[str] | None = None +depends_on: str | Sequence[str] | None = None def upgrade() -> None: diff --git a/alembic/versions/b60d0aa3ceda_add_sub_part_types_table.py b/alembic/versions/b60d0aa3ceda_add_sub_part_types_table.py index ff8315d..9930841 100644 --- a/alembic/versions/b60d0aa3ceda_add_sub_part_types_table.py +++ b/alembic/versions/b60d0aa3ceda_add_sub_part_types_table.py @@ -5,16 +5,17 @@ Revises: fd5379986da4 Create Date: 2026-06-25 11:29:20.420056 """ -from typing import Sequence, Union +from collections.abc import Sequence + +import sqlalchemy as sa from alembic import op -import sqlalchemy as sa # revision identifiers, used by Alembic. revision: str = "b60d0aa3ceda" -down_revision: Union[str, None] = "fd5379986da4" -branch_labels: Union[str, Sequence[str], None] = None -depends_on: Union[str, Sequence[str], None] = None +down_revision: str | None = "fd5379986da4" +branch_labels: str | Sequence[str] | None = None +depends_on: str | Sequence[str] | None = None def upgrade() -> None: diff --git a/alembic/versions/bfbce324cd5f_add_augmented_part_imported_parts.py b/alembic/versions/bfbce324cd5f_add_augmented_part_imported_parts.py index 57e34ef..55bba29 100644 --- a/alembic/versions/bfbce324cd5f_add_augmented_part_imported_parts.py +++ b/alembic/versions/bfbce324cd5f_add_augmented_part_imported_parts.py @@ -5,16 +5,17 @@ Revises: 8bc411b5814e Create Date: 2026-07-02 12:46:27.493942 """ -from typing import Sequence, Union +from collections.abc import Sequence + +import sqlalchemy as sa from alembic import op -import sqlalchemy as sa # revision identifiers, used by Alembic. revision: str = "bfbce324cd5f" -down_revision: Union[str, None] = "8bc411b5814e" -branch_labels: Union[str, Sequence[str], None] = None -depends_on: Union[str, Sequence[str], None] = None +down_revision: str | None = "8bc411b5814e" +branch_labels: str | Sequence[str] | None = None +depends_on: str | Sequence[str] | None = None def upgrade() -> None: diff --git a/alembic/versions/c7882cedc9ae_add_clamp_connections.py b/alembic/versions/c7882cedc9ae_add_clamp_connections.py index 54dba3e..cc3798b 100644 --- a/alembic/versions/c7882cedc9ae_add_clamp_connections.py +++ b/alembic/versions/c7882cedc9ae_add_clamp_connections.py @@ -5,16 +5,17 @@ Revises: bfbce324cd5f Create Date: 2026-07-02 13:31:57.064381 """ -from typing import Sequence, Union +from collections.abc import Sequence + +import sqlalchemy as sa from alembic import op -import sqlalchemy as sa # revision identifiers, used by Alembic. revision: str = "c7882cedc9ae" -down_revision: Union[str, None] = "bfbce324cd5f" -branch_labels: Union[str, Sequence[str], None] = None -depends_on: Union[str, Sequence[str], None] = None +down_revision: str | None = "bfbce324cd5f" +branch_labels: str | Sequence[str] | None = None +depends_on: str | Sequence[str] | None = None def upgrade() -> None: diff --git a/alembic/versions/d1e2f3a4b5c6_add_scope_infos_table.py b/alembic/versions/d1e2f3a4b5c6_add_scope_infos_table.py index b0f4e61..bce0165 100644 --- a/alembic/versions/d1e2f3a4b5c6_add_scope_infos_table.py +++ b/alembic/versions/d1e2f3a4b5c6_add_scope_infos_table.py @@ -5,16 +5,17 @@ Revises: c9f1a2b3d4e5 Create Date: 2026-07-16 20:00:00.000000 """ -from typing import Sequence, Union +from collections.abc import Sequence + +import sqlalchemy as sa from alembic import op -import sqlalchemy as sa # revision identifiers, used by Alembic. revision: str = "d1e2f3a4b5c6" -down_revision: Union[str, None] = "c9f1a2b3d4e5" -branch_labels: Union[str, Sequence[str], None] = None -depends_on: Union[str, Sequence[str], None] = None +down_revision: str | None = "c9f1a2b3d4e5" +branch_labels: str | Sequence[str] | None = None +depends_on: str | Sequence[str] | None = None def upgrade() -> None: diff --git a/alembic/versions/e23aa8dd2536_add_part_types_table.py b/alembic/versions/e23aa8dd2536_add_part_types_table.py index dfe9198..0846d2e 100644 --- a/alembic/versions/e23aa8dd2536_add_part_types_table.py +++ b/alembic/versions/e23aa8dd2536_add_part_types_table.py @@ -5,16 +5,17 @@ Revises: a52e7ca7a925 Create Date: 2026-06-25 10:49:56.463466 """ -from typing import Sequence, Union +from collections.abc import Sequence + +import sqlalchemy as sa from alembic import op -import sqlalchemy as sa # revision identifiers, used by Alembic. revision: str = "e23aa8dd2536" -down_revision: Union[str, None] = "a52e7ca7a925" -branch_labels: Union[str, Sequence[str], None] = None -depends_on: Union[str, Sequence[str], None] = None +down_revision: str | None = "a52e7ca7a925" +branch_labels: str | Sequence[str] | None = None +depends_on: str | Sequence[str] | None = None def upgrade() -> None: diff --git a/alembic/versions/fd5379986da4_add_audit_logs_table.py b/alembic/versions/fd5379986da4_add_audit_logs_table.py index 39affea..cb05908 100644 --- a/alembic/versions/fd5379986da4_add_audit_logs_table.py +++ b/alembic/versions/fd5379986da4_add_audit_logs_table.py @@ -5,16 +5,17 @@ Revises: e23aa8dd2536 Create Date: 2026-06-25 11:06:13.028067 """ -from typing import Sequence, Union +from collections.abc import Sequence + +import sqlalchemy as sa from alembic import op -import sqlalchemy as sa # revision identifiers, used by Alembic. revision: str = "fd5379986da4" -down_revision: Union[str, None] = "e23aa8dd2536" -branch_labels: Union[str, Sequence[str], None] = None -depends_on: Union[str, Sequence[str], None] = None +down_revision: str | None = "e23aa8dd2536" +branch_labels: str | Sequence[str] | None = None +depends_on: str | Sequence[str] | None = None def upgrade() -> None: diff --git a/app/models/__init__.py b/app/models/__init__.py index 223c6a9..e7cebe3 100644 --- a/app/models/__init__.py +++ b/app/models/__init__.py @@ -19,12 +19,12 @@ from app.models.manufacturer import Manufacturer from app.models.part_colour import PartColour from app.models.part_type import PartType from app.models.permission import Permission +from app.models.refresh_token import RefreshToken +from app.models.role import Role from app.models.scope_info import ScopeInfo from app.models.scope_model import ScopeModel from app.models.static_connection import StaticConnection from app.models.sub_part_type import SubPartType -from app.models.refresh_token import RefreshToken -from app.models.role import Role from app.models.unc_thread import UncThread from app.models.user import User diff --git a/app/models/fit.py b/app/models/fit.py index ff37d9e..6ed0d80 100644 --- a/app/models/fit.py +++ b/app/models/fit.py @@ -7,7 +7,7 @@ from sqlalchemy.orm import Mapped, mapped_column, relationship from app.core.database import Base -class FitLabel(str, enum.Enum): +class FitLabel(enum.StrEnum): POSSIBLE = "possible" EXACT = "exact" NONE = "none" diff --git a/app/models/unc_thread.py b/app/models/unc_thread.py index 8591d90..d849a72 100644 --- a/app/models/unc_thread.py +++ b/app/models/unc_thread.py @@ -6,7 +6,7 @@ from sqlalchemy.orm import Mapped, mapped_column from app.core.database import Base -class UncSeries(str, enum.Enum): +class UncSeries(enum.StrEnum): UNC = "UNC" UNF = "UNF" UNEF = "UNEF" diff --git a/app/services/ldap.py b/app/services/ldap.py index 8654bae..979d4cb 100644 --- a/app/services/ldap.py +++ b/app/services/ldap.py @@ -7,7 +7,6 @@ successful profile is provisioned locally on first sign-in. """ import logging - from dataclasses import dataclass from fastapi.concurrency import run_in_threadpool @@ -43,7 +42,7 @@ def _bind_and_fetch(username: str, password: str) -> LdapIdentity | None: ) try: conn = ldap3.Connection(server, user=user_dn, password=password, auto_bind=True) - except LDAPException as e: + except LDAPException: logging.exception("Failed to log into LDAP for user %s", user_dn) # Wrong credentials, unreachable server, or a refused bind. return None diff --git a/tests/test_scope_import.py b/tests/test_scope_import.py index 919e291..fc74f7a 100644 --- a/tests/test_scope_import.py +++ b/tests/test_scope_import.py @@ -1,6 +1,6 @@ import io -import pytest +import pytest from openpyxl import Workbook from app.crud import attachment_point as attachment_point_crud