Only import type hint packages for type checking. Avoids circular imports

Use annotations from the __future__ package to avoid having to quote
type hints. This import will not be required after Python 3.11
This commit is contained in:
Debanjum Singh Solanky
2023-01-09 18:37:50 -03:00
parent e5254a8e56
commit db7483329c
2 changed files with 20 additions and 15 deletions

View File

@@ -1,15 +1,19 @@
# System Packages # System Packages
from __future__ import annotations # to avoid quoting type hints
from enum import Enum from enum import Enum
from dataclasses import dataclass from dataclasses import dataclass
from pathlib import Path from pathlib import Path
from typing import TYPE_CHECKING
# External Packages # External Packages
import torch import torch
# Internal Packages # Internal Packages
from src.utils.rawconfig import ConversationProcessorConfig, Entry if TYPE_CHECKING:
from src.search_filter.base_filter import BaseFilter from sentence_transformers import CrossEncoder
from src.utils.models import BaseEncoder from src.search_filter.base_filter import BaseFilter
from src.utils.models import BaseEncoder
from src.utils.rawconfig import ConversationProcessorConfig, Entry
class SearchType(str, Enum): class SearchType(str, Enum):
@@ -25,7 +29,7 @@ class ProcessorType(str, Enum):
class TextSearchModel(): class TextSearchModel():
def __init__(self, entries: list[Entry], corpus_embeddings: torch.Tensor, bi_encoder: BaseEncoder, cross_encoder, filters: list[BaseFilter], top_k): def __init__(self, entries: list[Entry], corpus_embeddings: torch.Tensor, bi_encoder: BaseEncoder, cross_encoder: CrossEncoder, filters: list[BaseFilter], top_k):
self.entries = entries self.entries = entries
self.corpus_embeddings = corpus_embeddings self.corpus_embeddings = corpus_embeddings
self.bi_encoder = bi_encoder self.bi_encoder = bi_encoder

View File

@@ -1,17 +1,18 @@
# Standard Packages # Standard Packages
from pathlib import Path from __future__ import annotations # to avoid quoting type hints
from importlib import import_module
import sys
from os.path import join
from collections import OrderedDict
from typing import Optional, Union
import logging import logging
import sys
from collections import OrderedDict
from importlib import import_module
from os.path import join
from pathlib import Path
from typing import Optional, Union, TYPE_CHECKING
# External Packages if TYPE_CHECKING:
from sentence_transformers import CrossEncoder # External Packages
from sentence_transformers import CrossEncoder
# Internal Packages # Internal Packages
from src.utils.models import BaseEncoder from src.utils.models import BaseEncoder
def is_none_or_empty(item): def is_none_or_empty(item):