Skip to content

Commit

Permalink
ADCM-6266: Rework public imports (#74)
Browse files Browse the repository at this point in the history
  • Loading branch information
Starovoitov authored Jan 16, 2025
1 parent f771476 commit f93d032
Show file tree
Hide file tree
Showing 56 changed files with 289 additions and 259 deletions.
10 changes: 7 additions & 3 deletions adcm_aio_client/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,12 @@
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from adcm_aio_client._filters import Filter
from adcm_aio_client._session import ADCMSession
from adcm_aio_client._types import Credentials

__all__ = ["ADCMSession"]
__all__ = [
"ADCMSession",
"Credentials",
"Filter",
]
12 changes: 8 additions & 4 deletions adcm_aio_client/core/filters.py → adcm_aio_client/_filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,13 @@
from collections import deque
from collections.abc import Generator, Iterable
from dataclasses import dataclass
from typing import Self
from typing import TYPE_CHECKING, Self

from adcm_aio_client.core.errors import InvalidFilterError
from adcm_aio_client.core.objects._base import InteractiveObject
from adcm_aio_client.core.types import QueryParameters
from adcm_aio_client._types import QueryParameters
from adcm_aio_client.errors import InvalidFilterError

if TYPE_CHECKING:
from adcm_aio_client.objects._base import InteractiveObject

# Filters
EQUAL_OPERATIONS = frozenset(("eq", "ieq"))
Expand Down Expand Up @@ -115,6 +117,8 @@ def _attribute_name_to_camel_case(self: Self, name: str) -> str:
return f"{first}{''.join(map(str.capitalize, rest))}"

def _simplify_value(self: Self, value: FilterValue) -> SimplifiedValue:
from adcm_aio_client.objects._base import InteractiveObject

if isinstance(value, str | int):
return value

Expand Down
8 changes: 4 additions & 4 deletions adcm_aio_client/_session.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
import httpx
import adcm_version

from adcm_aio_client.core.client import ADCMClient
from adcm_aio_client.core.errors import ClientInitError, NotSupportedVersionError
from adcm_aio_client.core.requesters import BundleRetriever, DefaultRequester
from adcm_aio_client.core.types import Cert, ConnectionSecurity, Credentials, RequestPolicy, RetryPolicy, SessionInfo
from adcm_aio_client._types import Cert, ConnectionSecurity, Credentials, RequestPolicy, RetryPolicy, SessionInfo
from adcm_aio_client.client import ADCMClient
from adcm_aio_client.errors import ClientInitError, NotSupportedVersionError
from adcm_aio_client.requesters import BundleRetriever, DefaultRequester

MIN_ADCM_VERSION = "2.5.0"

Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from collections.abc import Awaitable, Iterable
import asyncio

from adcm_aio_client.core.types import RequesterResponse
from adcm_aio_client._types import RequesterResponse


async def safe_gather(coros: Iterable[Awaitable[RequesterResponse]], msg: str) -> ExceptionGroup | None:
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,16 @@

from asyncstdlib import cached_property as async_cached_property

from adcm_aio_client.core.config._objects import ActionConfig
from adcm_aio_client.core.config.types import ActionConfigData, ConfigSchema
from adcm_aio_client.core.errors import HostNotInClusterError, NoConfigInActionError, NoMappingInActionError
from adcm_aio_client.core.filters import FilterByDisplayName, FilterByName, Filtering
from adcm_aio_client.core.mapping import ActionMapping
from adcm_aio_client.core.objects._accessors import NonPaginatedChildAccessor
from adcm_aio_client.core.objects._base import InteractiveChildObject, InteractiveObject
from adcm_aio_client._filters import FilterByDisplayName, FilterByName, Filtering
from adcm_aio_client.config._objects import ActionConfig
from adcm_aio_client.config._types import ActionConfigData, ConfigSchema
from adcm_aio_client.errors import HostNotInClusterError, NoConfigInActionError, NoMappingInActionError
from adcm_aio_client.mapping._objects import ActionMapping
from adcm_aio_client.objects._accessors import NonPaginatedChildAccessor
from adcm_aio_client.objects._base import InteractiveChildObject, InteractiveObject

if TYPE_CHECKING:
from adcm_aio_client.core.objects.cm import Bundle, Cluster, Job
from adcm_aio_client.objects import Bundle, Cluster, Job


class _GenericAction(InteractiveChildObject):
Expand Down Expand Up @@ -144,7 +144,7 @@ async def run(self: Self) -> Job:

response = await self._requester.post(*self.get_own_path(), "run", data=payload)

from adcm_aio_client.core.objects.cm import Job
from adcm_aio_client.objects import Job

return Job(requester=self._requester, data=response.as_dict())

Expand All @@ -163,7 +163,7 @@ async def bundle(self: Self) -> Bundle:

bundle_id = self._data["bundle"]["id"]

from adcm_aio_client.core.objects.cm import Bundle
from adcm_aio_client.objects import Bundle

return await Bundle.with_id(requester=self._requester, object_id=bundle_id)

Expand All @@ -175,7 +175,7 @@ async def run(self: Self) -> Job | None:
if response.get_status_code() == 204:
return None

from adcm_aio_client.core.objects.cm import Job
from adcm_aio_client.objects import Job

return Job(requester=self._requester, data=response.as_dict())

Expand All @@ -186,7 +186,7 @@ class UpgradeNode[Parent: InteractiveObject](NonPaginatedChildAccessor[Parent, U


async def detect_cluster(owner: InteractiveObject) -> Cluster:
from adcm_aio_client.core.objects.cm import ActionHostGroup, Cluster, Component, Host, Service
from adcm_aio_client.objects import ActionHostGroup, Cluster, Component, Host, Service

if isinstance(owner, ActionHostGroup):
return await detect_cluster(owner._parent)
Expand Down
5 changes: 3 additions & 2 deletions adcm_aio_client/core/client.py → adcm_aio_client/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,9 @@
from functools import cached_property
from typing import Self

from adcm_aio_client.core.objects.cm import ADCM, BundlesNode, ClustersNode, HostProvidersNode, HostsNode, JobsNode
from adcm_aio_client.core.requesters import BundleRetrieverInterface, Requester
from adcm_aio_client.objects import ADCM
from adcm_aio_client.objects._cm import BundlesNode, ClustersNode, HostProvidersNode, HostsNode, JobsNode
from adcm_aio_client.requesters import BundleRetrieverInterface, Requester

MIN_ADCM_VERSION = "2.5.0"

Expand Down
Original file line number Diff line number Diff line change
@@ -1,25 +1,21 @@
from adcm_aio_client.core.config._objects import (
ActionConfig,
ActivatableParameterGroup,
ActivatableParameterGroupHG,
ConfigHistoryNode,
HostGroupConfig,
ObjectConfig,
Parameter,
ParameterGroup,
ParameterGroupHG,
ParameterHG,
)
from adcm_aio_client.config._refresh import apply_local_changes, apply_remote_changes

__all__ = [
"ConfigHistoryNode",
"ObjectConfig",
"ActionConfig",
"HostGroupConfig",
"Parameter",
"ParameterHG",
"ParameterGroup",
"ParameterGroupHG",
"ActivatableParameterGroup",
"ActivatableParameterGroupHG",
"apply_local_changes",
"apply_remote_changes",
]

from adcm_aio_client.config._objects import (
ActivatableParameterGroup,
ActivatableParameterGroupHG,
Parameter,
ParameterGroup,
ParameterGroupHG,
ParameterHG,
)
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,10 @@
import json
import asyncio

from adcm_aio_client.core.config._operations import find_config_difference
from adcm_aio_client.core.config.refresh import apply_local_changes
from adcm_aio_client.core.config.types import (
from adcm_aio_client._types import AwareOfOwnPath, WithRequesterProperty
from adcm_aio_client.config import apply_local_changes
from adcm_aio_client.config._operations import find_config_difference
from adcm_aio_client.config._types import (
ActionConfigData,
AnyParameterName,
ConfigData,
Expand All @@ -18,8 +19,7 @@
LevelNames,
LocalConfigs,
)
from adcm_aio_client.core.errors import ConfigComparisonError, ConfigNoParameterError, RequesterError
from adcm_aio_client.core.types import AwareOfOwnPath, WithRequesterProperty
from adcm_aio_client.errors import ConfigComparisonError, ConfigNoParameterError, RequesterError


class ConfigOwner(WithRequesterProperty, AwareOfOwnPath, Protocol): ...
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from adcm_aio_client.core.config.types import (
from adcm_aio_client.config._types import (
ConfigSchema,
FullConfigDifference,
GenericConfigData,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from adcm_aio_client.core.config._operations import find_config_difference
from adcm_aio_client.core.config.types import ConfigData, ConfigSchema, LocalConfigs
from adcm_aio_client.config._operations import find_config_difference
from adcm_aio_client.config._types import ConfigData, ConfigSchema, LocalConfigs


def apply_local_changes(local: LocalConfigs, remote: ConfigData, schema: ConfigSchema) -> ConfigData:
Expand Down
File renamed without changes.
11 changes: 0 additions & 11 deletions adcm_aio_client/core/__init__.py

This file was deleted.

3 changes: 0 additions & 3 deletions adcm_aio_client/core/actions/__init__.py

This file was deleted.

4 changes: 0 additions & 4 deletions adcm_aio_client/core/host_groups/__init__.py

This file was deleted.

3 changes: 0 additions & 3 deletions adcm_aio_client/core/mapping/__init__.py

This file was deleted.

File renamed without changes.
Empty file.
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
from functools import cached_property
from typing import TYPE_CHECKING, Self, Union

from adcm_aio_client.core.filters import FilterByName, Filtering
from adcm_aio_client.core.host_groups._common import HostGroupNode, HostsInHostGroupNode
from adcm_aio_client.core.objects._base import InteractiveChildObject
from adcm_aio_client.core.objects._common import Deletable, WithActions
from adcm_aio_client.core.types import AwareOfOwnPath, WithProtectedRequester
from adcm_aio_client._filters import FilterByName, Filtering
from adcm_aio_client._types import AwareOfOwnPath, WithProtectedRequester
from adcm_aio_client.host_groups._common import HostGroupNode, HostsInHostGroupNode
from adcm_aio_client.objects._base import InteractiveChildObject
from adcm_aio_client.objects._common import Deletable, WithActions

if TYPE_CHECKING:
from adcm_aio_client.core.objects.cm import Cluster, Component, Service
from adcm_aio_client.objects import Cluster, Component, Service


class ActionHostGroup(InteractiveChildObject, WithActions, Deletable):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,23 @@
import asyncio
import builtins

from adcm_aio_client.core.filters import Filter, FilterValue
from adcm_aio_client.core.objects._accessors import (
from adcm_aio_client import Filter
from adcm_aio_client._filters import FilterValue
from adcm_aio_client._types import Endpoint, HostID, QueryParameters, Requester, RequesterResponse
from adcm_aio_client._utils import safe_gather
from adcm_aio_client.objects._accessors import (
DefaultQueryParams as AccessorFilter,
)
from adcm_aio_client.core.objects._accessors import (
from adcm_aio_client.objects._accessors import (
NonPaginatedAccessor,
PaginatedChildAccessor,
filters_to_inline,
)
from adcm_aio_client.core.types import Endpoint, HostID, QueryParameters, Requester, RequesterResponse
from adcm_aio_client.core.utils import safe_gather

if TYPE_CHECKING:
from adcm_aio_client.core.host_groups.action_group import ActionHostGroup
from adcm_aio_client.core.host_groups.config_group import ConfigHostGroup
from adcm_aio_client.core.objects.cm import Cluster, Component, Host, HostProvider, Service
from adcm_aio_client.host_groups._action_group import ActionHostGroup
from adcm_aio_client.host_groups._config_group import ConfigHostGroup
from adcm_aio_client.objects import Cluster, Component, Host, HostProvider, Service


class HostsInHostGroupNode(NonPaginatedAccessor["Host"]):
Expand All @@ -29,7 +30,8 @@ class HostsInHostGroupNode(NonPaginatedAccessor["Host"]):
def __new__(cls: type[Self], path: Endpoint, requester: Requester, accessor_filter: AccessorFilter = None) -> Self:
_ = path, requester, accessor_filter
if not hasattr(cls, "class_type"):
from adcm_aio_client.core.objects.cm import Host, HostsAccessor
from adcm_aio_client.objects import Host
from adcm_aio_client.objects._cm import HostsAccessor

cls.class_type = Host
cls.filtering = HostsAccessor.filtering
Expand Down Expand Up @@ -94,7 +96,7 @@ async def _remove_hosts_from_group(self: Self, ids: Iterable[HostID]) -> None:
async def _retrieve_host_ids(
self: Self, host: Union["Host", Iterable["Host"], Filter], sources: Iterable[Endpoint]
) -> builtins.set[HostID]:
from adcm_aio_client.core.objects.cm import Host
from adcm_aio_client.objects import Host

if isinstance(host, Host):
return {host.id}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
from functools import cached_property
from typing import TYPE_CHECKING, Self, Union

from adcm_aio_client.core.filters import FilterByName, Filtering
from adcm_aio_client.core.host_groups._common import HostGroupNode, HostsInHostGroupNode
from adcm_aio_client.core.objects._base import InteractiveChildObject
from adcm_aio_client.core.objects._common import Deletable, WithConfigOfHostGroup
from adcm_aio_client.core.types import AwareOfOwnPath, WithProtectedRequester
from adcm_aio_client._filters import FilterByName, Filtering
from adcm_aio_client._types import AwareOfOwnPath, WithProtectedRequester
from adcm_aio_client.host_groups._common import HostGroupNode, HostsInHostGroupNode
from adcm_aio_client.objects._base import InteractiveChildObject
from adcm_aio_client.objects._common import Deletable, WithConfigOfHostGroup

if TYPE_CHECKING:
from adcm_aio_client.core.objects.cm import Cluster, Component, Service
from adcm_aio_client.objects import Cluster, Component, Service


class ConfigHostGroup(InteractiveChildObject, Deletable, WithConfigOfHostGroup):
Expand Down
3 changes: 3 additions & 0 deletions adcm_aio_client/mapping/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from adcm_aio_client.mapping._refresh import apply_local_changes, apply_remote_changes

__all__ = ["apply_local_changes", "apply_remote_changes"]
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,16 @@
from typing import TYPE_CHECKING, Any, Self
import asyncio

from adcm_aio_client.core.filters import Filter, FilterByDisplayName, FilterByName, FilterByStatus, Filtering
from adcm_aio_client.core.mapping.refresh import apply_local_changes, apply_remote_changes
from adcm_aio_client.core.mapping.types import LocalMappings, MappingEntry, MappingPair, MappingRefreshStrategy
from adcm_aio_client.core.objects._accessors import NonPaginatedAccessor, filters_to_inline
from adcm_aio_client.core.types import ComponentID, HostID, Requester
from adcm_aio_client import Filter
from adcm_aio_client._filters import FilterByDisplayName, FilterByName, FilterByStatus, Filtering
from adcm_aio_client._types import ComponentID, HostID, Requester
from adcm_aio_client.mapping import apply_local_changes, apply_remote_changes
from adcm_aio_client.mapping._types import LocalMappings, MappingEntry, MappingPair, MappingRefreshStrategy
from adcm_aio_client.objects._accessors import NonPaginatedAccessor, filters_to_inline

if TYPE_CHECKING:
from adcm_aio_client.core.objects.cm import Cluster, Component, Host, HostsAccessor, Service
from adcm_aio_client.objects import Cluster, Component, Host, Service
from adcm_aio_client.objects._cm import HostsAccessor


class ComponentsMappingNode(NonPaginatedAccessor["Component"]):
Expand All @@ -23,7 +25,7 @@ def __new__(cls: type[Self], cluster: Cluster, requester: Requester) -> Self:
_ = cluster, requester

if not hasattr(cls, "class_type"):
from adcm_aio_client.core.objects.cm import Component
from adcm_aio_client.objects import Component

cls.class_type = Component

Expand All @@ -35,7 +37,7 @@ def __init__(self: Self, cluster: Cluster, requester: Requester) -> None:
self._cluster = cluster

def _create_object(self: Self, data: dict[str, Any]) -> Component:
from adcm_aio_client.core.objects.cm import Service
from adcm_aio_client.objects import Service

# service data here should be enough,
# when not, we should use lazy objects
Expand Down Expand Up @@ -103,7 +105,7 @@ def components(self: Self) -> ComponentsMappingNode:

@cached_property
def hosts(self: Self) -> HostsAccessor:
from adcm_aio_client.core.objects.cm import HostsAccessor
from adcm_aio_client.objects._cm import HostsAccessor

cluster_hosts_path = (*self._cluster.get_own_path(), "hosts")

Expand All @@ -112,7 +114,7 @@ def hosts(self: Self) -> HostsAccessor:
async def _resolve_components_and_hosts(
self: Self, component: Component | Iterable[Component], host: Host | Iterable[Host] | Filter
) -> tuple[Iterable[Component], Iterable[Host]]:
from adcm_aio_client.core.objects.cm import Component, Host
from adcm_aio_client.objects import Component, Host

if isinstance(component, Component):
component = (component,)
Expand Down
Loading

0 comments on commit f93d032

Please sign in to comment.