From 90acc10b41ef8d1b5ff6b8cc05626f6c03803f80 Mon Sep 17 00:00:00 2001 From: conniedonahue Date: Mon, 28 Jul 2025 18:30:48 -0400 Subject: [PATCH] Add isort to ruff check --- pyproject.toml | 3 +++ src/sqlalchemy_oso_cloud/__init__.py | 6 +++--- src/sqlalchemy_oso_cloud/auth.py | 8 +++++--- src/sqlalchemy_oso_cloud/orm.py | 5 +++-- src/sqlalchemy_oso_cloud/oso.py | 16 +++++++++++----- src/sqlalchemy_oso_cloud/query.py | 3 ++- src/sqlalchemy_oso_cloud/select_impl.py | 4 +++- src/sqlalchemy_oso_cloud/session.py | 6 ++++-- tests/conftest.py | 16 ++++++++++------ tests/models.py | 8 +++++--- tests/test_main.py | 12 +++++++----- tests/test_pgvector.py | 8 ++++++-- 12 files changed, 62 insertions(+), 33 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 69e45cf..1cdc078 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,3 +30,6 @@ numpy = [ { version = ">=1.21.0,<2.1.0", python = "<3.10" }, { version = ">=2.1.0,<3.0", python = ">=3.10" }, ] + +[tool.ruff.lint] +extend-select = ["I"] diff --git a/src/sqlalchemy_oso_cloud/__init__.py b/src/sqlalchemy_oso_cloud/__init__.py index f0bda6e..1017fed 100644 --- a/src/sqlalchemy_oso_cloud/__init__.py +++ b/src/sqlalchemy_oso_cloud/__init__.py @@ -15,10 +15,10 @@ See the [README](https://github.com/osohq/sqlalchemy-oso-cloud) for more information. """ from . import orm -from .session import Session +from .auth import _apply_authorization_options, authorized +from .oso import get_oso, init from .query import Query -from .oso import init, get_oso from .select_impl import Select, select -from .auth import authorized, _apply_authorization_options +from .session import Session __all__ = ["orm", "Session", "Query", "init", "get_oso", "Select", "select", "authorized", "_apply_authorization_options"] diff --git a/src/sqlalchemy_oso_cloud/auth.py b/src/sqlalchemy_oso_cloud/auth.py index 9dfd6e7..302b600 100644 --- a/src/sqlalchemy_oso_cloud/auth.py +++ b/src/sqlalchemy_oso_cloud/auth.py @@ -1,7 +1,9 @@ -from sqlalchemy import literal_column, ColumnClause -from sqlalchemy.orm import with_loader_criteria, LoaderCriteriaOption +from typing import TYPE_CHECKING, Callable, List, Optional, Set, Type, Union + from oso_cloud import Value -from typing import List, Set, Type, Callable, Union, Optional, TYPE_CHECKING +from sqlalchemy import ColumnClause, literal_column +from sqlalchemy.orm import LoaderCriteriaOption, with_loader_criteria + from .orm import Resource from .oso import get_oso diff --git a/src/sqlalchemy_oso_cloud/orm.py b/src/sqlalchemy_oso_cloud/orm.py index 3d23361..eb72d1a 100644 --- a/src/sqlalchemy_oso_cloud/orm.py +++ b/src/sqlalchemy_oso_cloud/orm.py @@ -3,10 +3,11 @@ [authorization data](https://www.osohq.com/docs/authorization-data) in your ORM models. """ -from typing import Callable, Optional, Protocol, Any -from typing_extensions import ParamSpec, TypeVar, Concatenate +from typing import Any, Callable, Optional, Protocol from sqlalchemy.orm import MappedColumn, Relationship, mapped_column, relationship +from typing_extensions import Concatenate, ParamSpec, TypeVar + class Resource: """ diff --git a/src/sqlalchemy_oso_cloud/oso.py b/src/sqlalchemy_oso_cloud/oso.py index 6996274..f30f117 100644 --- a/src/sqlalchemy_oso_cloud/oso.py +++ b/src/sqlalchemy_oso_cloud/oso.py @@ -1,15 +1,21 @@ import os -import yaml +from tempfile import NamedTemporaryFile +from typing import Optional, TypedDict, Union -from typing import TypedDict, Optional, Union +import yaml from oso_cloud import Oso from sqlalchemy import select -from sqlalchemy.orm import Mapper, RelationshipProperty, registry, ColumnProperty +from sqlalchemy.orm import ColumnProperty, Mapper, RelationshipProperty, registry from sqlalchemy.sql.elements import NamedColumn from sqlalchemy.sql.sqltypes import Boolean, Integer, String, TypeEngine -from tempfile import NamedTemporaryFile -from .orm import _ATTRIBUTE_INFO_KEY, Resource, _RELATION_INFO_KEY, _REMOTE_RELATION_INFO_KEY +from .orm import ( + _ATTRIBUTE_INFO_KEY, + _RELATION_INFO_KEY, + _REMOTE_RELATION_INFO_KEY, + Resource, +) + class FactConfig(TypedDict): query: str diff --git a/src/sqlalchemy_oso_cloud/query.py b/src/sqlalchemy_oso_cloud/query.py index bf36495..2621ce3 100644 --- a/src/sqlalchemy_oso_cloud/query.py +++ b/src/sqlalchemy_oso_cloud/query.py @@ -1,6 +1,7 @@ +from typing import Optional, Type, TypeVar + import sqlalchemy.orm from oso_cloud import Value -from typing import Type, TypeVar, Optional from .auth import _apply_authorization_options from .oso import get_oso diff --git a/src/sqlalchemy_oso_cloud/select_impl.py b/src/sqlalchemy_oso_cloud/select_impl.py index edd183e..0aa82e8 100644 --- a/src/sqlalchemy_oso_cloud/select_impl.py +++ b/src/sqlalchemy_oso_cloud/select_impl.py @@ -1,6 +1,8 @@ +from typing import TypeVar + import sqlalchemy.sql from oso_cloud import Value -from typing import TypeVar + from .auth import _apply_authorization_options Self = TypeVar("Self", bound="Select") diff --git a/src/sqlalchemy_oso_cloud/session.py b/src/sqlalchemy_oso_cloud/session.py index 6c166f1..464c2ef 100644 --- a/src/sqlalchemy_oso_cloud/session.py +++ b/src/sqlalchemy_oso_cloud/session.py @@ -1,8 +1,10 @@ +from typing import Any, Tuple, Type, TypeVar, Union, overload + import sqlalchemy.orm -from .query import Query from sqlalchemy.engine import Row from sqlalchemy.orm.attributes import InstrumentedAttribute -from typing import Type, TypeVar, overload, Any, Tuple, Union + +from .query import Query T = TypeVar("T") T1 = TypeVar("T1") diff --git a/tests/conftest.py b/tests/conftest.py index 16496ae..2527511 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,16 +1,20 @@ import socket -from testcontainers.core.container import DockerContainer # type: ignore -from testcontainers.postgres import PostgresContainer # type: ignore -from testcontainers.core.waiting_utils import wait_for, wait_container_is_ready # type: ignore + +import pytest +from oso_cloud import Oso, Value from sqlalchemy import Engine, create_engine, text from sqlalchemy.exc import OperationalError -import pytest from sqlalchemy.orm import Session -from oso_cloud import Oso, Value +from testcontainers.core.container import DockerContainer # type: ignore +from testcontainers.core.waiting_utils import ( # type: ignore + wait_container_is_ready, + wait_for, +) +from testcontainers.postgres import PostgresContainer # type: ignore import sqlalchemy_oso_cloud -from .models import Base, Organization, Document +from .models import Base, Document, Organization @pytest.fixture(scope="session") diff --git a/tests/models.py b/tests/models.py index 088bf2b..97a853b 100644 --- a/tests/models.py +++ b/tests/models.py @@ -1,7 +1,9 @@ -from pgvector.sqlalchemy import Vector # type: ignore -from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column +from pgvector.sqlalchemy import Vector # type: ignore from sqlalchemy import ForeignKey -from sqlalchemy_oso_cloud.orm import Resource, relation, attribute, remote_relation +from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column + +from sqlalchemy_oso_cloud.orm import Resource, attribute, relation, remote_relation + class Base(DeclarativeBase): pass diff --git a/tests/test_main.py b/tests/test_main.py index ef8995e..a9e056e 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -1,12 +1,14 @@ +import yaml from oso_cloud import Oso, Value -from sqlalchemy import text, func, select as sqla_select +from sqlalchemy import func, text +from sqlalchemy import select as sqla_select from sqlalchemy.orm import Session, joinedload -from .models import Document, Base, Organization -import yaml - import sqlalchemy_oso_cloud -from sqlalchemy_oso_cloud import select, authorized +from sqlalchemy_oso_cloud import authorized, select + +from .models import Base, Document, Organization + # This is the part our goal is to make nicer def test_manual(oso: Oso, session: Session, alice: Value, bob: Value): diff --git a/tests/test_pgvector.py b/tests/test_pgvector.py index 1c98a7a..f302279 100644 --- a/tests/test_pgvector.py +++ b/tests/test_pgvector.py @@ -4,8 +4,12 @@ import numpy as np import pytest from oso_cloud import Value -from sqlalchemy import select as sqla_select, text -from sqlalchemy_oso_cloud import select, authorized, Session as OsoSession +from sqlalchemy import select as sqla_select +from sqlalchemy import text + +from sqlalchemy_oso_cloud import Session as OsoSession +from sqlalchemy_oso_cloud import authorized, select + from .models import Document, Organization if not hasattr(Document, 'embedding'):