Skip to content
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鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use absolute imports #161

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 2 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,8 @@ docstring-quotes = "double"
inline-quotes = "single"

[tool.ruff.lint.isort]
known-first-party = ["apify", "apify_client", "apify_shared"]
known-first-party = ["apify_client", "apify_shared"]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you please remove known-first-party completely and leave there only known-local-folder = ["apify"]?

Suggested change
known-first-party = ["apify_client", "apify_shared"]
known-local-folder = ["apify"]

We agreed with @janbuchar to not to create a new section in our imports, so apify-shared and apify-client will be part of standard 3rd party imports.

known-local-folder = ["apify"]

[tool.ruff.lint.pydocstyle]
convention = "google"
6 changes: 3 additions & 3 deletions src/apify/__init__.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
from importlib import metadata

from .actor import Actor
from .config import Configuration
from .proxy_configuration import ProxyConfiguration, ProxyInfo
from apify.actor import Actor
from apify.config import Configuration
from apify.proxy_configuration import ProxyConfiguration, ProxyInfo

__version__ = metadata.version('apify')

Expand Down
2 changes: 1 addition & 1 deletion src/apify/_crypto.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

from apify_shared.utils import ignore_docs

from .consts import ENCRYPTED_INPUT_VALUE_REGEXP
from apify.consts import ENCRYPTED_INPUT_VALUE_REGEXP

ENCRYPTION_KEY_LENGTH = 32
ENCRYPTION_IV_LENGTH = 16
Expand Down
2 changes: 1 addition & 1 deletion src/apify/_memory_storage/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
from .memory_storage_client import MemoryStorageClient
from apify._memory_storage.memory_storage_client import MemoryStorageClient

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please, let's leave all the __init__.py with relative imports, since they're importing only from their siblings.

Suggested change
from apify._memory_storage.memory_storage_client import MemoryStorageClient
from .memory_storage_client import MemoryStorageClient

__all__ = ['MemoryStorageClient']
2 changes: 1 addition & 1 deletion src/apify/_memory_storage/file_storage_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

from apify_shared.utils import json_dumps

from .._utils import force_remove
from apify._utils import force_remove


async def update_metadata(*, data: dict, entity_directory: str, write_metadata: bool) -> None:
Expand Down
14 changes: 7 additions & 7 deletions src/apify/_memory_storage/memory_storage_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,13 @@
from apify_shared.consts import ApifyEnvVars
from apify_shared.utils import ignore_docs

from .._utils import maybe_parse_bool
from .resource_clients.dataset import DatasetClient
from .resource_clients.dataset_collection import DatasetCollectionClient
from .resource_clients.key_value_store import KeyValueStoreClient
from .resource_clients.key_value_store_collection import KeyValueStoreCollectionClient
from .resource_clients.request_queue import RequestQueueClient
from .resource_clients.request_queue_collection import RequestQueueCollectionClient
from apify._memory_storage.resource_clients.dataset import DatasetClient
from apify._memory_storage.resource_clients.dataset_collection import DatasetCollectionClient
from apify._memory_storage.resource_clients.key_value_store import KeyValueStoreClient
from apify._memory_storage.resource_clients.key_value_store_collection import KeyValueStoreCollectionClient
from apify._memory_storage.resource_clients.request_queue import RequestQueueClient
from apify._memory_storage.resource_clients.request_queue_collection import RequestQueueCollectionClient
from apify._utils import maybe_parse_bool

"""
Memory storage emulates data storages that are available on the Apify platform.
Expand Down
16 changes: 8 additions & 8 deletions src/apify/_memory_storage/resource_clients/__init__.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
from .base_resource_client import BaseResourceClient
from .base_resource_collection_client import BaseResourceCollectionClient
from .dataset import DatasetClient
from .dataset_collection import DatasetCollectionClient
from .key_value_store import KeyValueStoreClient
from .key_value_store_collection import KeyValueStoreCollectionClient
from .request_queue import RequestQueueClient
from .request_queue_collection import RequestQueueCollectionClient
from apify._memory_storage.resource_clients.base_resource_client import BaseResourceClient
from apify._memory_storage.resource_clients.base_resource_collection_client import BaseResourceCollectionClient
from apify._memory_storage.resource_clients.dataset import DatasetClient
from apify._memory_storage.resource_clients.dataset_collection import DatasetCollectionClient
from apify._memory_storage.resource_clients.key_value_store import KeyValueStoreClient
from apify._memory_storage.resource_clients.key_value_store_collection import KeyValueStoreCollectionClient
from apify._memory_storage.resource_clients.request_queue import RequestQueueClient
from apify._memory_storage.resource_clients.request_queue_collection import RequestQueueCollectionClient

__all__ = [
'BaseResourceClient',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
if TYPE_CHECKING:
from typing_extensions import Self

from ..memory_storage_client import MemoryStorageClient
from apify._memory_storage.memory_storage_client import MemoryStorageClient


@ignore_docs
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@
from apify_shared.models import ListPage
from apify_shared.utils import ignore_docs

from ..file_storage_utils import update_metadata
from .base_resource_client import BaseResourceClient
from apify._memory_storage.file_storage_utils import update_metadata
from apify._memory_storage.resource_clients.base_resource_client import BaseResourceClient

if TYPE_CHECKING:
from ..memory_storage_client import MemoryStorageClient
from apify._memory_storage.memory_storage_client import MemoryStorageClient


ResourceClientType = TypeVar('ResourceClientType', bound=BaseResourceClient, contravariant=True) # noqa: PLC0105
Expand Down
12 changes: 6 additions & 6 deletions src/apify/_memory_storage/resource_clients/dataset.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,16 @@
from apify_shared.models import ListPage
from apify_shared.utils import ignore_docs

from ..._crypto import crypto_random_object_id
from ..._utils import force_rename, raise_on_duplicate_storage, raise_on_non_existing_storage
from ...consts import StorageTypes
from ..file_storage_utils import _update_dataset_items, update_metadata
from .base_resource_client import BaseResourceClient
from apify._crypto import crypto_random_object_id
from apify._memory_storage.file_storage_utils import _update_dataset_items, update_metadata
from apify._memory_storage.resource_clients.base_resource_client import BaseResourceClient
from apify._utils import force_rename, raise_on_duplicate_storage, raise_on_non_existing_storage
from apify.consts import StorageTypes

if TYPE_CHECKING:
from apify_shared.types import JSONSerializable

from ..memory_storage_client import MemoryStorageClient
from apify._memory_storage.memory_storage_client import MemoryStorageClient

# This is what API returns in the x-apify-pagination-limit
# header when no limit query parameter is used.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@

from apify_shared.utils import ignore_docs

from .base_resource_collection_client import BaseResourceCollectionClient
from .dataset import DatasetClient
from apify._memory_storage.resource_clients.base_resource_collection_client import BaseResourceCollectionClient
from apify._memory_storage.resource_clients.dataset import DatasetClient

if TYPE_CHECKING:
from apify_shared.models import ListPage
Expand Down
14 changes: 7 additions & 7 deletions src/apify/_memory_storage/resource_clients/key_value_store.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,24 +16,24 @@

from apify_shared.utils import ignore_docs, is_file_or_bytes, json_dumps

from ..._crypto import crypto_random_object_id
from ..._utils import (
from apify._crypto import crypto_random_object_id
from apify._memory_storage.file_storage_utils import update_metadata
from apify._memory_storage.resource_clients.base_resource_client import BaseResourceClient
from apify._utils import (
force_remove,
force_rename,
guess_file_extension,
maybe_parse_body,
raise_on_duplicate_storage,
raise_on_non_existing_storage,
)
from ...consts import DEFAULT_API_PARAM_LIMIT, StorageTypes
from ...log import logger
from ..file_storage_utils import update_metadata
from .base_resource_client import BaseResourceClient
from apify.consts import DEFAULT_API_PARAM_LIMIT, StorageTypes
from apify.log import logger

if TYPE_CHECKING:
from typing_extensions import NotRequired

from ..memory_storage_client import MemoryStorageClient
from apify._memory_storage.memory_storage_client import MemoryStorageClient


class KeyValueStoreRecord(TypedDict):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@

from apify_shared.utils import ignore_docs

from .base_resource_collection_client import BaseResourceCollectionClient
from .key_value_store import KeyValueStoreClient
from apify._memory_storage.resource_clients.base_resource_collection_client import BaseResourceCollectionClient
from apify._memory_storage.resource_clients.key_value_store import KeyValueStoreClient

if TYPE_CHECKING:
from apify_shared.models import ListPage
Expand Down
12 changes: 6 additions & 6 deletions src/apify/_memory_storage/resource_clients/request_queue.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,14 @@

from apify_shared.utils import filter_out_none_values_recursively, ignore_docs, json_dumps

from ..._crypto import crypto_random_object_id
from ..._utils import force_rename, raise_on_duplicate_storage, raise_on_non_existing_storage, unique_key_to_request_id
from ...consts import StorageTypes
from ..file_storage_utils import delete_request, update_metadata, update_request_queue_item
from .base_resource_client import BaseResourceClient
from apify._crypto import crypto_random_object_id
from apify._memory_storage.file_storage_utils import delete_request, update_metadata, update_request_queue_item
from apify._memory_storage.resource_clients.base_resource_client import BaseResourceClient
from apify._utils import force_rename, raise_on_duplicate_storage, raise_on_non_existing_storage, unique_key_to_request_id
from apify.consts import StorageTypes

if TYPE_CHECKING:
from ..memory_storage_client import MemoryStorageClient
from apify._memory_storage.memory_storage_client import MemoryStorageClient


@ignore_docs
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@

from apify_shared.utils import ignore_docs

from .base_resource_collection_client import BaseResourceCollectionClient
from .request_queue import RequestQueueClient
from apify._memory_storage.resource_clients.base_resource_collection_client import BaseResourceCollectionClient
from apify._memory_storage.resource_clients.request_queue import RequestQueueClient

if TYPE_CHECKING:
from apify_shared.models import ListPage
Expand Down
2 changes: 1 addition & 1 deletion src/apify/_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
maybe_extract_enum_member_value,
)

from .consts import REQUEST_ID_LENGTH, StorageTypes
from apify.consts import REQUEST_ID_LENGTH, StorageTypes

T = TypeVar('T')

Expand Down
18 changes: 9 additions & 9 deletions src/apify/actor.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@
from apify_shared.consts import ActorEnvVars, ActorEventTypes, ActorExitCodes, ApifyEnvVars, WebhookEventType
from apify_shared.utils import ignore_docs, maybe_extract_enum_member_value

from ._crypto import decrypt_input_secrets, load_private_key
from ._utils import (
from apify._crypto import decrypt_input_secrets, load_private_key
from apify._utils import (
dualproperty,
fetch_and_parse_env_var,
get_cpu_usage_percent,
Expand All @@ -23,18 +23,18 @@
run_func_at_interval_async,
wrap_internal,
)
from .config import Configuration
from .consts import EVENT_LISTENERS_TIMEOUT_SECS
from .event_manager import EventManager
from .log import logger
from .proxy_configuration import ProxyConfiguration
from .storages import Dataset, KeyValueStore, RequestQueue, StorageClientManager
from apify.config import Configuration
from apify.consts import EVENT_LISTENERS_TIMEOUT_SECS
from apify.event_manager import EventManager
from apify.log import logger
from apify.proxy_configuration import ProxyConfiguration
from apify.storages import Dataset, KeyValueStore, RequestQueue, StorageClientManager

if TYPE_CHECKING:
import logging
from types import TracebackType

from ._memory_storage import MemoryStorageClient
from apify._memory_storage import MemoryStorageClient

T = TypeVar('T')
MainReturnType = TypeVar('MainReturnType')
Expand Down
2 changes: 1 addition & 1 deletion src/apify/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from apify_shared.consts import ActorEnvVars, ApifyEnvVars

from ._utils import fetch_and_parse_env_var
from apify._utils import fetch_and_parse_env_var


class Configuration:
Expand Down
4 changes: 2 additions & 2 deletions src/apify/event_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@

from apify_shared.utils import ignore_docs, maybe_extract_enum_member_value, parse_date_fields

from .log import logger
from apify.log import logger

if TYPE_CHECKING:
from apify_shared.consts import ActorEventTypes

from .config import Configuration
from apify.config import Configuration

ListenerType = Union[Callable[[], None], Callable[[Any], None], Callable[[], Coroutine[Any, Any, None]], Callable[[Any], Coroutine[Any, Any, None]]]

Expand Down
4 changes: 2 additions & 2 deletions src/apify/proxy_configuration.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
from apify_shared.consts import ApifyEnvVars
from apify_shared.utils import ignore_docs

from .config import Configuration
from .log import logger
from apify.config import Configuration
from apify.log import logger

if TYPE_CHECKING:
from typing_extensions import NotRequired
Expand Down
6 changes: 3 additions & 3 deletions src/apify/scrapy/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
from .pipelines import ActorDatasetPushPipeline
from .scheduler import ApifyScheduler
from .utils import get_basic_auth_header, get_running_event_loop_id, open_queue_with_custom_client, to_apify_request, to_scrapy_request
from apify.scrapy.pipelines import ActorDatasetPushPipeline
from apify.scrapy.scheduler import ApifyScheduler
from apify.scrapy.utils import get_basic_auth_header, get_running_event_loop_id, open_queue_with_custom_client, to_apify_request, to_scrapy_request
4 changes: 2 additions & 2 deletions src/apify/scrapy/middlewares/__init__.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
from .apify_proxy import ApifyHttpProxyMiddleware
from .apify_retry import ApifyRetryMiddleware
from apify.scrapy.middlewares.apify_proxy import ApifyHttpProxyMiddleware
from apify.scrapy.middlewares.apify_retry import ApifyRetryMiddleware
6 changes: 3 additions & 3 deletions src/apify/scrapy/middlewares/apify_proxy.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
from scrapy.core.downloader.handlers.http11 import TunnelError
from scrapy.exceptions import NotConfigured

from ...actor import Actor
from ...proxy_configuration import ProxyConfiguration
from ..utils import get_basic_auth_header
from apify.actor import Actor
from apify.proxy_configuration import ProxyConfiguration
from apify.scrapy.utils import get_basic_auth_header

if TYPE_CHECKING:
from scrapy import Request, Spider
Expand Down
6 changes: 3 additions & 3 deletions src/apify/scrapy/middlewares/apify_retry.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,14 @@
'To use this module, you need to install the "scrapy" extra. Run "pip install apify[scrapy]".',
) from exc

from ...actor import Actor
from ..utils import nested_event_loop, open_queue_with_custom_client, to_apify_request
from apify.actor import Actor
from apify.scrapy.utils import nested_event_loop, open_queue_with_custom_client, to_apify_request

if TYPE_CHECKING:
from scrapy import Spider
from scrapy.http import Request, Response

from ...storages import RequestQueue
from apify.storages import RequestQueue


class ApifyRetryMiddleware(RetryMiddleware):
Expand Down
2 changes: 1 addition & 1 deletion src/apify/scrapy/pipelines.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
'To use this module, you need to install the "scrapy" extra. Run "pip install apify[scrapy]".',
) from exc

from ..actor import Actor
from apify.actor import Actor


class ActorDatasetPushPipeline:
Expand Down
8 changes: 4 additions & 4 deletions src/apify/scrapy/scheduler.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@
'To use this module, you need to install the "scrapy" extra. Run "pip install apify[scrapy]".',
) from exc

from .._crypto import crypto_random_object_id
from ..actor import Actor
from ..storages import RequestQueue
from .utils import nested_event_loop, open_queue_with_custom_client, to_apify_request, to_scrapy_request
from apify._crypto import crypto_random_object_id
from apify.actor import Actor
from apify.scrapy.utils import nested_event_loop, open_queue_with_custom_client, to_apify_request, to_scrapy_request
from apify.storages import RequestQueue


class ApifyScheduler(BaseScheduler):
Expand Down
6 changes: 3 additions & 3 deletions src/apify/scrapy/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@
'To use this module, you need to install the "scrapy" extra. Run "pip install apify[scrapy]".',
) from exc

from .._crypto import crypto_random_object_id
from ..actor import Actor
from ..storages import RequestQueue, StorageClientManager
from apify._crypto import crypto_random_object_id
from apify.actor import Actor
from apify.storages import RequestQueue, StorageClientManager

nested_event_loop: asyncio.AbstractEventLoop = asyncio.new_event_loop()

Expand Down
8 changes: 4 additions & 4 deletions src/apify/storages/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from .dataset import Dataset
from .key_value_store import KeyValueStore
from .request_queue import RequestQueue
from .storage_client_manager import StorageClientManager
from apify.storages.dataset import Dataset
from apify.storages.key_value_store import KeyValueStore
from apify.storages.request_queue import RequestQueue
from apify.storages.storage_client_manager import StorageClientManager

__all__ = [
'Dataset',
Expand Down