Skip to content

Optimized import paths #331

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Sep 9, 2024
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
10 changes: 5 additions & 5 deletions paperqa/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from .docs import Answer, Docs, print_callback
from .llms import (
from paperqa.docs import Answer, Docs, print_callback
from paperqa.llms import (
EmbeddingModel,
HybridEmbeddingModel,
LangchainVectorStore,
Expand All @@ -11,9 +11,9 @@
SparseEmbeddingModel,
embedding_model_factory,
)
from .settings import Settings, get_settings
from .types import Context, Doc, DocDetails, Text
from .version import __version__
from paperqa.settings import Settings, get_settings
from paperqa.types import Context, Doc, DocDetails, Text
from paperqa.version import __version__

__all__ = [
"Answer",
Expand Down
6 changes: 3 additions & 3 deletions paperqa/agents/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@

from pydantic_settings import CliSettingsSource

from .. import __version__
from ..settings import Settings
from ..utils import get_loop, pqa_directory, setup_default_logs
from paperqa.settings import Settings
from paperqa.utils import get_loop, pqa_directory, setup_default_logs
from paperqa.version import __version__

try:
from rich.console import Console
Expand Down
7 changes: 3 additions & 4 deletions paperqa/agents/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,9 @@

from rich.table import Table

from .. import (
Docs,
)
from ..llms import LiteLLMModel
from paperqa.docs import Docs
from paperqa.llms import LiteLLMModel

from .models import AnswerResponse

logger = logging.getLogger(__name__)
Expand Down
7 changes: 4 additions & 3 deletions paperqa/agents/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,10 @@
from langchain_openai import ChatOpenAI
from rich.console import Console

from ..docs import Docs
from ..types import Answer
from ..utils import pqa_directory
from paperqa.docs import Docs
from paperqa.types import Answer
from paperqa.utils import pqa_directory

from .helpers import litellm_get_search_query, table_formatter
from .models import (
AgentCallback,
Expand Down
7 changes: 3 additions & 4 deletions paperqa/agents/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,9 @@
from typing_extensions import Protocol

from paperqa.llms import LiteLLMModel

from .. import Answer
from ..settings import Settings
from ..version import __version__
from paperqa.settings import Settings
from paperqa.types import Answer
from paperqa.version import __version__

logger = logging.getLogger(__name__)

Expand Down
9 changes: 5 additions & 4 deletions paperqa/agents/search.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,11 @@
wait_random_exponential,
)

from ..docs import Docs
from ..settings import MaybeSettings, Settings, get_settings
from ..types import DocDetails
from ..utils import hexdigest, pqa_directory
from paperqa.docs import Docs
from paperqa.settings import MaybeSettings, Settings, get_settings
from paperqa.types import DocDetails
from paperqa.utils import hexdigest, pqa_directory

from .models import SupportsPickle

logger = logging.getLogger(__name__)
Expand Down
13 changes: 8 additions & 5 deletions paperqa/agents/tools.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
from __future__ import annotations

import inspect
import logging
import re
import sys
from typing import ClassVar
from langchain_core.callbacks import BaseCallbackHandler

from langchain.tools import BaseTool
from paperqa import Answer, Docs
from langchain_core.callbacks import BaseCallbackHandler
from pydantic import BaseModel, ConfigDict, Field

# ruff: noqa: I001
Expand All @@ -16,11 +16,14 @@
Field as FieldV1,
)

from paperqa.docs import Docs
from paperqa.llms import EmbeddingModel, LiteLLMModel
from paperqa.settings import Settings
from paperqa.types import Answer

from .helpers import get_year
from .search import get_directory_index
from .models import QueryRequest, SimpleProfiler
from ..settings import Settings
from ..llms import EmbeddingModel, LiteLLMModel
from .search import get_directory_index

logger = logging.getLogger(__name__)

Expand Down
5 changes: 3 additions & 2 deletions paperqa/clients/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@
import aiohttp
from pydantic import BaseModel, ConfigDict

from ..types import Doc, DocDetails
from ..utils import gather_with_concurrency
from paperqa.types import Doc, DocDetails
from paperqa.utils import gather_with_concurrency

from .client_models import MetadataPostProcessor, MetadataProvider
from .crossref import CrossrefProvider
from .journal_quality import JournalQualityPostProcessor
Expand Down
4 changes: 2 additions & 2 deletions paperqa/clients/client_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@
model_validator,
)

from paperqa.clients.exceptions import DOINotFoundError
from paperqa.types import DocDetails

from ..types import DocDetails
from .exceptions import DOINotFoundError

logger = logging.getLogger(__name__)

Expand Down
7 changes: 4 additions & 3 deletions paperqa/clients/crossref.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,17 @@

import aiohttp

from ..clients.exceptions import DOINotFoundError
from ..types import CITATION_FALLBACK_DATA, DocDetails
from ..utils import (
from paperqa.types import CITATION_FALLBACK_DATA, DocDetails
from paperqa.utils import (
bibtex_field_extract,
create_bibtex_key,
remove_substrings,
strings_similarity,
union_collections_to_ordered_list,
)

from .client_models import DOIOrTitleBasedProvider, DOIQuery, TitleAuthorQuery
from .exceptions import DOINotFoundError

logger = logging.getLogger(__name__)

Expand Down
3 changes: 2 additions & 1 deletion paperqa/clients/journal_quality.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@

from pydantic import ValidationError

from ..types import DocDetails
from paperqa.types import DocDetails

from .client_models import JournalQuery, MetadataPostProcessor

logger = logging.getLogger(__name__)
Expand Down
5 changes: 3 additions & 2 deletions paperqa/clients/semantic_scholar.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,14 @@

import aiohttp

from ..types import DocDetails
from ..utils import (
from paperqa.types import DocDetails
from paperqa.utils import (
_get_with_retrying,
clean_upbibtex,
strings_similarity,
union_collections_to_ordered_list,
)

from .client_models import DOIOrTitleBasedProvider, DOIQuery, TitleAuthorQuery
from .crossref import doi_to_bibtex
from .exceptions import DOINotFoundError
Expand Down
8 changes: 3 additions & 5 deletions paperqa/clients/unpaywall.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,9 @@
import aiohttp
from pydantic import BaseModel, ConfigDict, ValidationError

from ..types import DocDetails
from ..utils import (
_get_with_retrying,
strings_similarity,
)
from paperqa.types import DocDetails
from paperqa.utils import _get_with_retrying, strings_similarity

from .client_models import DOIOrTitleBasedProvider, DOIQuery, TitleAuthorQuery
from .exceptions import DOINotFoundError

Expand Down
14 changes: 9 additions & 5 deletions paperqa/contrib/zotero.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# This file gets PDF files from the user's Zotero library
"""This module gets PDF files from the user's Zotero library."""

import logging
import os
from pathlib import Path
Expand All @@ -8,10 +9,13 @@

try:
from pyzotero import zotero
except ImportError:
raise ImportError("Please install pyzotero: `pip install pyzotero`") # noqa: B904
from ..paths import PAPERQA_DIR
from ..utils import StrPath, count_pdf_pages
except ImportError as e:
raise ImportError(
"zotero requires the 'zotero' extra for 'pyzotero'. Please:"
" `pip install aviary[zotero]`."
) from e
from paperqa.paths import PAPERQA_DIR
from paperqa.utils import StrPath, count_pdf_pages


class ZoteroPaper(BaseModel):
Expand Down
6 changes: 3 additions & 3 deletions paperqa/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
from collections.abc import Callable
from typing import Any

from .llms import Chain
from .types import Context, LLMResult, Text
from .utils import extract_score, strip_citations
from paperqa.llms import Chain
from paperqa.types import Context, LLMResult, Text
from paperqa.utils import extract_score, strip_citations


def llm_parse_json(text: str) -> dict:
Expand Down
21 changes: 8 additions & 13 deletions paperqa/docs.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,18 +20,13 @@
field_validator,
)

from .clients import DEFAULT_CLIENTS, DocMetadataClient
from .core import llm_parse_json, map_fxn_summary
from .llms import (
EmbeddingModel,
LLMModel,
NumpyVectorStore,
VectorStore,
)
from .paths import PAPERQA_DIR
from .readers import read_doc
from .settings import MaybeSettings, get_settings
from .types import (
from paperqa.clients import DEFAULT_CLIENTS, DocMetadataClient
from paperqa.core import llm_parse_json, map_fxn_summary
from paperqa.llms import EmbeddingModel, LLMModel, NumpyVectorStore, VectorStore
from paperqa.paths import PAPERQA_DIR
from paperqa.readers import read_doc
from paperqa.settings import MaybeSettings, get_settings
from paperqa.types import (
Answer,
Doc,
DocDetails,
Expand All @@ -40,7 +35,7 @@
Text,
set_llm_answer_ids,
)
from .utils import (
from paperqa.utils import (
gather_with_concurrency,
get_loop,
maybe_is_html,
Expand Down
6 changes: 3 additions & 3 deletions paperqa/llms.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@
from litellm import Router, aembedding, token_counter
from pydantic import BaseModel, ConfigDict, Field, model_validator

from .prompts import default_system_prompt
from .types import Doc, Embeddable, LLMResult, Text
from .utils import is_coroutine_callable
from paperqa.prompts import default_system_prompt
from paperqa.types import Doc, Embeddable, LLMResult, Text
from paperqa.utils import is_coroutine_callable

Chain = Callable[
[dict, list[Callable[[str], None]] | None, str | None],
Expand Down
4 changes: 2 additions & 2 deletions paperqa/readers.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
import html2text
import tiktoken

from .types import ChunkMetadata, Doc, ParsedMetadata, ParsedText, Text
from .version import __version__ as pqa_version
from paperqa.types import ChunkMetadata, Doc, ParsedMetadata, ParsedText, Text
from paperqa.version import __version__ as pqa_version


def parse_pdf_fitz_to_pages(path: Path) -> ParsedText:
Expand Down
12 changes: 6 additions & 6 deletions paperqa/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@
from pydantic import BaseModel, ConfigDict, Field, computed_field, field_validator
from pydantic_settings import BaseSettings, CliSettingsSource, SettingsConfigDict

from .llms import EmbeddingModel, LiteLLMModel, embedding_model_factory
from .prompts import (
from paperqa.llms import EmbeddingModel, LiteLLMModel, embedding_model_factory
from paperqa.prompts import (
citation_prompt,
default_system_prompt,
qa_prompt,
Expand All @@ -24,8 +24,8 @@
summary_json_system_prompt,
summary_prompt,
)
from .utils import hexdigest, pqa_directory
from .version import __version__
from paperqa.utils import hexdigest, pqa_directory
from paperqa.version import __version__


class AnswerSettings(BaseModel):
Expand Down Expand Up @@ -232,7 +232,7 @@ def check_pre(cls, v: str | None) -> str | None:
def check_post(cls, v: str | None) -> str | None:
if v is not None:
# kind of a hack to get list of attributes in answer
from .types import Answer
from paperqa.types import Answer

attrs = set(Answer.model_fields.keys())
if not set(get_formatted_variables(v)).issubset(attrs):
Expand Down Expand Up @@ -311,7 +311,7 @@ def validate_tool_names(cls, v: set[str] | None) -> set[str] | None:
if v is None:
return None
# imported here to avoid circular imports
from .agents.main import GenerateAnswerTool
from paperqa.agents.main import GenerateAnswerTool

answer_tool_name = GenerateAnswerTool.__fields__["name"].default
if answer_tool_name not in v:
Expand Down
4 changes: 2 additions & 2 deletions paperqa/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,13 @@
model_validator,
)

from .utils import (
from paperqa.utils import (
create_bibtex_key,
encode_id,
format_bibtex,
get_citenames,
)
from .version import __version__ as pqa_version
from paperqa.version import __version__ as pqa_version

# Just for clarity
# also in case one day we want to narrow
Expand Down
4 changes: 3 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,9 @@ typing = [
"types-requests",
"types-setuptools",
]
zotero = [
"pyzotero",
]

[project.scripts]
pqa = "paperqa.agents:main"
Expand Down Expand Up @@ -336,7 +339,6 @@ ignore = [
"TCH003",
"TD002", # Don't care for TODO author
"TD003", # Don't care for TODO links
"TID252", # Allow relative imports for packaging
"TRY003", # Overly pedantic
]
preview = true
Expand Down
Loading
Loading