Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 28 additions & 7 deletions docarray/array/document.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,14 @@
from .mixins import AllMixins

if TYPE_CHECKING:
from ..types import (
DocumentArraySourceType,
DocumentArrayLike,
DocumentArraySqlite,
DocumentArrayInMemory,
)
from ..types import DocumentArraySourceType
from .memory import DocumentArrayInMemory
from .sqlite import DocumentArraySqlite
from .pqlite import DocumentArrayPqlite
from .weaviate import DocumentArrayWeaviate
from .storage.sqlite import SqliteConfig
from .storage.pqlite import PqliteConfig
from .storage.weaviate import WeaviateConfig


class DocumentArray(AllMixins, BaseDocumentArray):
Expand All @@ -31,7 +32,27 @@ def __new__(
"""Create a SQLite-powered DocumentArray object."""
...

def __new__(cls, *args, storage: str = 'memory', **kwargs) -> 'DocumentArrayLike':
@overload
def __new__(
cls,
_docs: Optional['DocumentArraySourceType'] = None,
storage: str = 'weaviate',
config: Optional[Union['WeaviateConfig', Dict]] = None,
) -> 'DocumentArrayWeaviate':
"""Create a Weaviate-powered DocumentArray object."""
...

@overload
def __new__(
cls,
_docs: Optional['DocumentArraySourceType'] = None,
storage: str = 'pqlite',
config: Optional[Union['PqliteConfig', Dict]] = None,
) -> 'DocumentArrayPqlite':
"""Create a PQLite-powered DocumentArray object."""
...

def __new__(cls, *args, storage: str = 'memory', **kwargs):
if cls is DocumentArray:
if storage == 'memory':
from .memory import DocumentArrayInMemory
Expand Down
2 changes: 1 addition & 1 deletion docarray/array/storage/memory/seqlike.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ def __bool__(self):
def __repr__(self):
return f'<DocumentArray (length={len(self)}) at {id(self)}>'

def __add__(self, other: Union['Document', Sequence['Document']]):
def __add__(self, other: Union['Document', Iterable['Document']]):
v = type(self)(self)
v.extend(other)
return v
Expand Down
7 changes: 4 additions & 3 deletions docarray/array/storage/pqlite/__init__.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
from .backend import BackendMixin
from abc import ABC

from .backend import BackendMixin, PqliteConfig
from .getsetdel import GetSetDelMixin
from .seqlike import SequenceLikeMixin
from abc import ABC

__all__ = ['StorageMixins']
__all__ = ['StorageMixins', 'PqliteConfig']


class StorageMixins(BackendMixin, GetSetDelMixin, SequenceLikeMixin, ABC):
Expand Down
4 changes: 3 additions & 1 deletion docarray/array/storage/weaviate/__init__.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
from abc import ABC

from .backend import BackendMixin, WeaviateConfig
from .getsetdel import GetSetDelMixin
from .seqlike import SequenceLikeMixin

__all__ = ['StorageMixins', 'WeaviateConfig']


class StorageMixins(BackendMixin, GetSetDelMixin, SequenceLikeMixin):
class StorageMixins(BackendMixin, GetSetDelMixin, SequenceLikeMixin, ABC):
...
6 changes: 3 additions & 3 deletions docarray/array/storage/weaviate/backend.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from dataclasses import dataclass, field
import uuid
import itertools
import uuid
from dataclasses import dataclass, field
from typing import (
Generator,
Iterator,
Expand All @@ -16,8 +16,8 @@
import scipy.sparse
import weaviate

from .... import Document
from ..base.backend import BaseBackendMixin
from .... import Document

if TYPE_CHECKING:
from ....types import (
Expand Down
6 changes: 3 additions & 3 deletions docarray/array/storage/weaviate/getsetdel.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@
)

from ..base.getsetdel import BaseGetSetDelMixin
from .... import Document, DocumentArray
from .... import Document


class GetSetDelMixin(BaseGetSetDelMixin):
"""Provide concrete implmentation for ``__getitem__``, ``__setitem__``,
and ``__delitem__`` for ``DoucmentArrayWeaviate``"""
"""Provide concrete implementation for ``__getitem__``, ``__setitem__``,
and ``__delitem__`` for ``DocumentArrayWeaviate``"""

def _getitem(self, wid: str) -> 'Document':
"""Helper method for getting item with weaviate as storage
Expand Down
2 changes: 1 addition & 1 deletion docarray/array/storage/weaviate/seqlike.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from typing import Iterator, Union, Sequence, Iterable, MutableSequence
from typing import Iterator, Union, Iterable, MutableSequence

from .... import Document

Expand Down
5 changes: 0 additions & 5 deletions docarray/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,3 @@
DocumentArraySingleAttributeType,
DocumentArrayMultipleAttributeType,
]

from .array.sqlite import DocumentArraySqlite
from .array.memory import DocumentArrayInMemory

DocumentArrayLike = Union[DocumentArrayInMemory, DocumentArraySqlite]
Loading