diff --git a/package-lock.json b/package-lock.json index df68a02..c422e90 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,8 +6,8 @@ "": { "name": "@seamapi/python", "devDependencies": { - "@seamapi/nextlove-sdk-generator": "1.11.0", - "@seamapi/types": "1.172.0", + "@seamapi/nextlove-sdk-generator": "1.11.1", + "@seamapi/types": "1.174.1", "del": "^7.1.0", "prettier": "^3.2.5" } @@ -416,11 +416,10 @@ } }, "node_modules/@seamapi/nextlove-sdk-generator": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@seamapi/nextlove-sdk-generator/-/nextlove-sdk-generator-1.11.0.tgz", - "integrity": "sha512-eaBaTri2n961aLr32DU36iM4rMjpBIyikJe5yk1aueol96Ks5tIFtIh+T4XZvEU6IWwSI1aG43MQFeocLKSOXA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@seamapi/nextlove-sdk-generator/-/nextlove-sdk-generator-1.11.1.tgz", + "integrity": "sha512-Na6ZTUMecOBA8UEqWSITiHfI7k+tUadqK3CVaThmqrKZ+OtHsQZS0zbN/oBUWpzY3SmjhQ7woxL8RELafNkOEg==", "dev": true, - "license": "MIT", "dependencies": { "@nodelib/fs.walk": "^2.0.0", "axios": "^1.5.0", @@ -438,11 +437,10 @@ } }, "node_modules/@seamapi/types": { - "version": "1.172.0", - "resolved": "https://registry.npmjs.org/@seamapi/types/-/types-1.172.0.tgz", - "integrity": "sha512-WFP7FtXiI25+XPIZDArF9nLpg3NY3Z7OsTYzgSd7XmJSt8znGw2TzDn4g+upwmSQ46TIczv1DDccHcoAZtQ4Fw==", + "version": "1.174.1", + "resolved": "https://registry.npmjs.org/@seamapi/types/-/types-1.174.1.tgz", + "integrity": "sha512-TOQ89RqpxkcQfUXRVkpR3z6pWHWO+/89szQ2YG1Fk7utjzHaF++BJRKXZU4ovJccX9KdWoYvnCHP/EeU4FO1JA==", "dev": true, - "license": "MIT", "engines": { "node": ">=18.12.0", "npm": ">= 9.0.0" diff --git a/package.json b/package.json index d85a577..d6b4815 100644 --- a/package.json +++ b/package.json @@ -8,8 +8,8 @@ "format": "prettier --write --ignore-path .gitignore ." }, "devDependencies": { - "@seamapi/nextlove-sdk-generator": "1.11.0", - "@seamapi/types": "1.172.0", + "@seamapi/nextlove-sdk-generator": "1.11.1", + "@seamapi/types": "1.174.1", "del": "^7.1.0", "prettier": "^3.2.5" } diff --git a/seam/routes/routes.py b/seam/routes/__init__.py similarity index 97% rename from seam/routes/routes.py rename to seam/routes/__init__.py index 35ba96e..cda43ec 100644 --- a/seam/routes/routes.py +++ b/seam/routes/__init__.py @@ -1,4 +1,4 @@ -from .types import AbstractRoutes +from .models import AbstractRoutes from .access_codes import AccessCodes from .acs import Acs from .action_attempts import ActionAttempts diff --git a/seam/routes/access_codes.py b/seam/routes/access_codes.py index d0f1abb..56a45ad 100644 --- a/seam/routes/access_codes.py +++ b/seam/routes/access_codes.py @@ -1,8 +1,8 @@ -from seam.types import AbstractSeam as Seam -from seam.routes.types import AbstractAccessCodes, AccessCode from typing import Optional, Any, List, Dict, Union -from seam.routes.access_codes_simulate import AccessCodesSimulate -from seam.routes.access_codes_unmanaged import AccessCodesUnmanaged +from ..models import AbstractSeam as Seam +from .models import AbstractAccessCodes, AccessCode +from .access_codes_simulate import AccessCodesSimulate +from .access_codes_unmanaged import AccessCodesUnmanaged class AccessCodes(AbstractAccessCodes): diff --git a/seam/routes/access_codes_simulate.py b/seam/routes/access_codes_simulate.py index 00ecb28..08fe050 100644 --- a/seam/routes/access_codes_simulate.py +++ b/seam/routes/access_codes_simulate.py @@ -1,6 +1,6 @@ -from seam.types import AbstractSeam as Seam -from seam.routes.types import AbstractAccessCodesSimulate, UnmanagedAccessCode from typing import Optional, Any, List, Dict, Union +from ..models import AbstractSeam as Seam +from .models import AbstractAccessCodesSimulate, UnmanagedAccessCode class AccessCodesSimulate(AbstractAccessCodesSimulate): diff --git a/seam/routes/access_codes_unmanaged.py b/seam/routes/access_codes_unmanaged.py index 05243d1..0ec6e56 100644 --- a/seam/routes/access_codes_unmanaged.py +++ b/seam/routes/access_codes_unmanaged.py @@ -1,6 +1,6 @@ -from seam.types import AbstractSeam as Seam -from seam.routes.types import AbstractAccessCodesUnmanaged, UnmanagedAccessCode from typing import Optional, Any, List, Dict, Union +from ..models import AbstractSeam as Seam +from .models import AbstractAccessCodesUnmanaged, UnmanagedAccessCode class AccessCodesUnmanaged(AbstractAccessCodesUnmanaged): diff --git a/seam/routes/acs.py b/seam/routes/acs.py index c99783a..52c878e 100644 --- a/seam/routes/acs.py +++ b/seam/routes/acs.py @@ -1,15 +1,15 @@ -from seam.types import AbstractSeam as Seam -from seam.routes.types import AbstractAcs from typing import Optional, Any, List, Dict, Union -from seam.routes.acs_access_groups import AcsAccessGroups -from seam.routes.acs_credential_pools import AcsCredentialPools -from seam.routes.acs_credential_provisioning_automations import ( +from ..models import AbstractSeam as Seam +from .models import AbstractAcs +from .acs_access_groups import AcsAccessGroups +from .acs_credential_pools import AcsCredentialPools +from .acs_credential_provisioning_automations import ( AcsCredentialProvisioningAutomations, ) -from seam.routes.acs_credentials import AcsCredentials -from seam.routes.acs_entrances import AcsEntrances -from seam.routes.acs_systems import AcsSystems -from seam.routes.acs_users import AcsUsers +from .acs_credentials import AcsCredentials +from .acs_entrances import AcsEntrances +from .acs_systems import AcsSystems +from .acs_users import AcsUsers class Acs(AbstractAcs): diff --git a/seam/routes/acs_access_groups.py b/seam/routes/acs_access_groups.py index 897eb64..404d387 100644 --- a/seam/routes/acs_access_groups.py +++ b/seam/routes/acs_access_groups.py @@ -1,6 +1,6 @@ -from seam.types import AbstractSeam as Seam -from seam.routes.types import AbstractAcsAccessGroups, AcsAccessGroup, AcsUser from typing import Optional, Any, List, Dict, Union +from ..models import AbstractSeam as Seam +from .models import AbstractAcsAccessGroups, AcsAccessGroup, AcsUser class AcsAccessGroups(AbstractAcsAccessGroups): diff --git a/seam/routes/acs_credential_pools.py b/seam/routes/acs_credential_pools.py index c0764b6..4173665 100644 --- a/seam/routes/acs_credential_pools.py +++ b/seam/routes/acs_credential_pools.py @@ -1,6 +1,6 @@ -from seam.types import AbstractSeam as Seam -from seam.routes.types import AbstractAcsCredentialPools, AcsCredentialPool from typing import Optional, Any, List, Dict, Union +from ..models import AbstractSeam as Seam +from .models import AbstractAcsCredentialPools, AcsCredentialPool class AcsCredentialPools(AbstractAcsCredentialPools): diff --git a/seam/routes/acs_credential_provisioning_automations.py b/seam/routes/acs_credential_provisioning_automations.py index df0214c..219803b 100644 --- a/seam/routes/acs_credential_provisioning_automations.py +++ b/seam/routes/acs_credential_provisioning_automations.py @@ -1,9 +1,9 @@ -from seam.types import AbstractSeam as Seam -from seam.routes.types import ( +from typing import Optional, Any, List, Dict, Union +from ..models import AbstractSeam as Seam +from .models import ( AbstractAcsCredentialProvisioningAutomations, AcsCredentialProvisioningAutomation, ) -from typing import Optional, Any, List, Dict, Union class AcsCredentialProvisioningAutomations( diff --git a/seam/routes/acs_credentials.py b/seam/routes/acs_credentials.py index abc9289..f139b73 100644 --- a/seam/routes/acs_credentials.py +++ b/seam/routes/acs_credentials.py @@ -1,6 +1,6 @@ -from seam.types import AbstractSeam as Seam -from seam.routes.types import AbstractAcsCredentials, AcsCredential from typing import Optional, Any, List, Dict, Union +from ..models import AbstractSeam as Seam +from .models import AbstractAcsCredentials, AcsCredential, AcsEntrance class AcsCredentials(AbstractAcsCredentials): @@ -110,6 +110,18 @@ def list( return [AcsCredential.from_dict(item) for item in res["acs_credentials"]] + def list_accessible_entrances(self, *, acs_credential_id: str) -> List[AcsEntrance]: + json_payload = {} + + if acs_credential_id is not None: + json_payload["acs_credential_id"] = acs_credential_id + + res = self.seam.make_request( + "POST", "/acs/credentials/list_accessible_entrances", json=json_payload + ) + + return [AcsEntrance.from_dict(item) for item in res["acs_entrances"]] + def unassign(self, *, acs_credential_id: str, acs_user_id: str) -> None: json_payload = {} diff --git a/seam/routes/acs_entrances.py b/seam/routes/acs_entrances.py index dd976ad..3709a2b 100644 --- a/seam/routes/acs_entrances.py +++ b/seam/routes/acs_entrances.py @@ -1,6 +1,6 @@ -from seam.types import AbstractSeam as Seam -from seam.routes.types import AbstractAcsEntrances, AcsEntrance, AcsCredential from typing import Optional, Any, List, Dict, Union +from ..models import AbstractSeam as Seam +from .models import AbstractAcsEntrances, AcsEntrance, AcsCredential class AcsEntrances(AbstractAcsEntrances): diff --git a/seam/routes/acs_systems.py b/seam/routes/acs_systems.py index 9896ebd..03dca36 100644 --- a/seam/routes/acs_systems.py +++ b/seam/routes/acs_systems.py @@ -1,6 +1,6 @@ -from seam.types import AbstractSeam as Seam -from seam.routes.types import AbstractAcsSystems, AcsSystem from typing import Optional, Any, List, Dict, Union +from ..models import AbstractSeam as Seam +from .models import AbstractAcsSystems, AcsSystem class AcsSystems(AbstractAcsSystems): diff --git a/seam/routes/acs_users.py b/seam/routes/acs_users.py index 01c3ef5..c418265 100644 --- a/seam/routes/acs_users.py +++ b/seam/routes/acs_users.py @@ -1,6 +1,6 @@ -from seam.types import AbstractSeam as Seam -from seam.routes.types import AbstractAcsUsers, AcsUser, AcsEntrance from typing import Optional, Any, List, Dict, Union +from ..models import AbstractSeam as Seam +from .models import AbstractAcsUsers, AcsUser, AcsEntrance class AcsUsers(AbstractAcsUsers): diff --git a/seam/routes/action_attempts.py b/seam/routes/action_attempts.py index a9e110c..88b80fa 100644 --- a/seam/routes/action_attempts.py +++ b/seam/routes/action_attempts.py @@ -1,29 +1,9 @@ -from seam.types import AbstractSeam as Seam -from seam.routes.types import AbstractActionAttempts, ActionAttempt from typing import Optional, Any, List, Dict, Union +from ..models import AbstractSeam as Seam +from .models import AbstractActionAttempts, ActionAttempt import time - - -class SeamActionAttemptError(Exception): - def __init__(self, message: str, action_attempt: ActionAttempt): - super().__init__(message) - self.name = self.__class__.__name__ - self.action_attempt = action_attempt - - -class SeamActionAttemptFailedError(SeamActionAttemptError): - def __init__(self, action_attempt: ActionAttempt): - super().__init__(action_attempt.error.message, action_attempt) - self.name = self.__class__.__name__ - self.code = action_attempt.error.type - - -class SeamActionAttemptTimeoutError(SeamActionAttemptError): - def __init__(self, action_attempt: ActionAttempt, timeout: str): - message = f"Timed out waiting for action attempt after {timeout}s" - super().__init__(message, action_attempt) - self.name = self.__class__.__name__ +from ..exceptions import SeamActionAttemptFailedError, SeamActionAttemptTimeoutError class ActionAttempts(AbstractActionAttempts): @@ -36,7 +16,7 @@ def get( self, *, action_attempt_id: str, - wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None, + wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: json_payload = {} @@ -65,7 +45,7 @@ def poll_until_ready( *, action_attempt_id: str, timeout: Optional[float] = 5.0, - polling_interval: Optional[float] = 0.5, + polling_interval: Optional[float] = 0.5 ) -> ActionAttempt: seam = self.seam time_waiting = 0.0 @@ -95,7 +75,7 @@ def decide_and_wait( self, *, action_attempt: ActionAttempt, - wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None, + wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: wait_decision = ( self.seam.wait_for_action_attempt diff --git a/seam/routes/client_sessions.py b/seam/routes/client_sessions.py index 9b14ad4..7d631a6 100644 --- a/seam/routes/client_sessions.py +++ b/seam/routes/client_sessions.py @@ -1,6 +1,6 @@ -from seam.types import AbstractSeam as Seam -from seam.routes.types import AbstractClientSessions, ClientSession from typing import Optional, Any, List, Dict, Union +from ..models import AbstractSeam as Seam +from .models import AbstractClientSessions, ClientSession class ClientSessions(AbstractClientSessions): diff --git a/seam/routes/connect_webviews.py b/seam/routes/connect_webviews.py index bdc2fd9..fb6fbf2 100644 --- a/seam/routes/connect_webviews.py +++ b/seam/routes/connect_webviews.py @@ -1,6 +1,6 @@ -from seam.types import AbstractSeam as Seam -from seam.routes.types import AbstractConnectWebviews, ConnectWebview from typing import Optional, Any, List, Dict, Union +from ..models import AbstractSeam as Seam +from .models import AbstractConnectWebviews, ConnectWebview class ConnectWebviews(AbstractConnectWebviews): diff --git a/seam/routes/connected_accounts.py b/seam/routes/connected_accounts.py index 2f6bc96..e87b41d 100644 --- a/seam/routes/connected_accounts.py +++ b/seam/routes/connected_accounts.py @@ -1,6 +1,6 @@ -from seam.types import AbstractSeam as Seam -from seam.routes.types import AbstractConnectedAccounts, ConnectedAccount from typing import Optional, Any, List, Dict, Union +from ..models import AbstractSeam as Seam +from .models import AbstractConnectedAccounts, ConnectedAccount class ConnectedAccounts(AbstractConnectedAccounts): diff --git a/seam/routes/devices.py b/seam/routes/devices.py index 98156b8..34731ee 100644 --- a/seam/routes/devices.py +++ b/seam/routes/devices.py @@ -1,8 +1,8 @@ -from seam.types import AbstractSeam as Seam -from seam.routes.types import AbstractDevices, Device, DeviceProvider from typing import Optional, Any, List, Dict, Union -from seam.routes.devices_simulate import DevicesSimulate -from seam.routes.devices_unmanaged import DevicesUnmanaged +from ..models import AbstractSeam as Seam +from .models import AbstractDevices, Device, DeviceProvider +from .devices_simulate import DevicesSimulate +from .devices_unmanaged import DevicesUnmanaged class Devices(AbstractDevices): diff --git a/seam/routes/devices_simulate.py b/seam/routes/devices_simulate.py index 537125a..fb20f0a 100644 --- a/seam/routes/devices_simulate.py +++ b/seam/routes/devices_simulate.py @@ -1,6 +1,6 @@ -from seam.types import AbstractSeam as Seam -from seam.routes.types import AbstractDevicesSimulate from typing import Optional, Any, List, Dict, Union +from ..models import AbstractSeam as Seam +from .models import AbstractDevicesSimulate class DevicesSimulate(AbstractDevicesSimulate): diff --git a/seam/routes/devices_unmanaged.py b/seam/routes/devices_unmanaged.py index f68f940..6e295cb 100644 --- a/seam/routes/devices_unmanaged.py +++ b/seam/routes/devices_unmanaged.py @@ -1,6 +1,6 @@ -from seam.types import AbstractSeam as Seam -from seam.routes.types import AbstractDevicesUnmanaged, UnmanagedDevice from typing import Optional, Any, List, Dict, Union +from ..models import AbstractSeam as Seam +from .models import AbstractDevicesUnmanaged, UnmanagedDevice class DevicesUnmanaged(AbstractDevicesUnmanaged): diff --git a/seam/routes/events.py b/seam/routes/events.py index bc56b8e..377a502 100644 --- a/seam/routes/events.py +++ b/seam/routes/events.py @@ -1,6 +1,6 @@ -from seam.types import AbstractSeam as Seam -from seam.routes.types import AbstractEvents, Event from typing import Optional, Any, List, Dict, Union +from ..models import AbstractSeam as Seam +from .models import AbstractEvents, Event class Events(AbstractEvents): diff --git a/seam/routes/locks.py b/seam/routes/locks.py index afc19a6..6bad53a 100644 --- a/seam/routes/locks.py +++ b/seam/routes/locks.py @@ -1,6 +1,6 @@ -from seam.types import AbstractSeam as Seam -from seam.routes.types import AbstractLocks, Device, ActionAttempt from typing import Optional, Any, List, Dict, Union +from ..models import AbstractSeam as Seam +from .models import AbstractLocks, Device, ActionAttempt class Locks(AbstractLocks): diff --git a/seam/routes/types.py b/seam/routes/models.py similarity index 99% rename from seam/routes/types.py rename to seam/routes/models.py index 5219144..2acee72 100644 --- a/seam/routes/types.py +++ b/seam/routes/models.py @@ -2,7 +2,7 @@ from typing_extensions import Self import abc from dataclasses import dataclass -from seam.routes.utils.deep_attr_dict import DeepAttrDict +from ..utils.deep_attr_dict import DeepAttrDict @dataclass @@ -965,6 +965,10 @@ def list( ) -> List[AcsCredential]: raise NotImplementedError() + @abc.abstractmethod + def list_accessible_entrances(self, *, acs_credential_id: str) -> List[AcsEntrance]: + raise NotImplementedError() + @abc.abstractmethod def unassign(self, *, acs_credential_id: str, acs_user_id: str) -> None: raise NotImplementedError() diff --git a/seam/routes/networks.py b/seam/routes/networks.py index 325e82d..10de1db 100644 --- a/seam/routes/networks.py +++ b/seam/routes/networks.py @@ -1,6 +1,6 @@ -from seam.types import AbstractSeam as Seam -from seam.routes.types import AbstractNetworks, Network from typing import Optional, Any, List, Dict, Union +from ..models import AbstractSeam as Seam +from .models import AbstractNetworks, Network class Networks(AbstractNetworks): diff --git a/seam/routes/noise_sensors.py b/seam/routes/noise_sensors.py index afbd775..fefabef 100644 --- a/seam/routes/noise_sensors.py +++ b/seam/routes/noise_sensors.py @@ -1,8 +1,8 @@ -from seam.types import AbstractSeam as Seam -from seam.routes.types import AbstractNoiseSensors from typing import Optional, Any, List, Dict, Union -from seam.routes.noise_sensors_noise_thresholds import NoiseSensorsNoiseThresholds -from seam.routes.noise_sensors_simulate import NoiseSensorsSimulate +from ..models import AbstractSeam as Seam +from .models import AbstractNoiseSensors +from .noise_sensors_noise_thresholds import NoiseSensorsNoiseThresholds +from .noise_sensors_simulate import NoiseSensorsSimulate class NoiseSensors(AbstractNoiseSensors): diff --git a/seam/routes/noise_sensors_noise_thresholds.py b/seam/routes/noise_sensors_noise_thresholds.py index 09aca91..7edafe3 100644 --- a/seam/routes/noise_sensors_noise_thresholds.py +++ b/seam/routes/noise_sensors_noise_thresholds.py @@ -1,6 +1,6 @@ -from seam.types import AbstractSeam as Seam -from seam.routes.types import AbstractNoiseSensorsNoiseThresholds, NoiseThreshold from typing import Optional, Any, List, Dict, Union +from ..models import AbstractSeam as Seam +from .models import AbstractNoiseSensorsNoiseThresholds, NoiseThreshold class NoiseSensorsNoiseThresholds(AbstractNoiseSensorsNoiseThresholds): diff --git a/seam/routes/noise_sensors_simulate.py b/seam/routes/noise_sensors_simulate.py index 001fcb6..8aa2318 100644 --- a/seam/routes/noise_sensors_simulate.py +++ b/seam/routes/noise_sensors_simulate.py @@ -1,6 +1,6 @@ -from seam.types import AbstractSeam as Seam -from seam.routes.types import AbstractNoiseSensorsSimulate from typing import Optional, Any, List, Dict, Union +from ..models import AbstractSeam as Seam +from .models import AbstractNoiseSensorsSimulate class NoiseSensorsSimulate(AbstractNoiseSensorsSimulate): diff --git a/seam/routes/phones.py b/seam/routes/phones.py index 8350159..b1babe5 100644 --- a/seam/routes/phones.py +++ b/seam/routes/phones.py @@ -1,7 +1,7 @@ -from seam.types import AbstractSeam as Seam -from seam.routes.types import AbstractPhones, Phone from typing import Optional, Any, List, Dict, Union -from seam.routes.phones_simulate import PhonesSimulate +from ..models import AbstractSeam as Seam +from .models import AbstractPhones, Phone +from .phones_simulate import PhonesSimulate class Phones(AbstractPhones): diff --git a/seam/routes/phones_simulate.py b/seam/routes/phones_simulate.py index f302435..f4db7ab 100644 --- a/seam/routes/phones_simulate.py +++ b/seam/routes/phones_simulate.py @@ -1,6 +1,6 @@ -from seam.types import AbstractSeam as Seam -from seam.routes.types import AbstractPhonesSimulate, Phone from typing import Optional, Any, List, Dict, Union +from ..models import AbstractSeam as Seam +from .models import AbstractPhonesSimulate, Phone class PhonesSimulate(AbstractPhonesSimulate): diff --git a/seam/routes/thermostats.py b/seam/routes/thermostats.py index b54fddc..fa29ca7 100644 --- a/seam/routes/thermostats.py +++ b/seam/routes/thermostats.py @@ -1,9 +1,7 @@ -from seam.types import AbstractSeam as Seam -from seam.routes.types import AbstractThermostats, ActionAttempt, Device from typing import Optional, Any, List, Dict, Union -from seam.routes.thermostats_climate_setting_schedules import ( - ThermostatsClimateSettingSchedules, -) +from ..models import AbstractSeam as Seam +from .models import AbstractThermostats, ActionAttempt, Device +from .thermostats_climate_setting_schedules import ThermostatsClimateSettingSchedules class Thermostats(AbstractThermostats): diff --git a/seam/routes/thermostats_climate_setting_schedules.py b/seam/routes/thermostats_climate_setting_schedules.py index 30e6a03..90e3fb0 100644 --- a/seam/routes/thermostats_climate_setting_schedules.py +++ b/seam/routes/thermostats_climate_setting_schedules.py @@ -1,9 +1,6 @@ -from seam.types import AbstractSeam as Seam -from seam.routes.types import ( - AbstractThermostatsClimateSettingSchedules, - ClimateSettingSchedule, -) from typing import Optional, Any, List, Dict, Union +from ..models import AbstractSeam as Seam +from .models import AbstractThermostatsClimateSettingSchedules, ClimateSettingSchedule class ThermostatsClimateSettingSchedules(AbstractThermostatsClimateSettingSchedules): diff --git a/seam/routes/user_identities.py b/seam/routes/user_identities.py index fe186c9..50986dd 100644 --- a/seam/routes/user_identities.py +++ b/seam/routes/user_identities.py @@ -1,15 +1,7 @@ -from seam.types import AbstractSeam as Seam -from seam.routes.types import ( - AbstractUserIdentities, - UserIdentity, - Device, - AcsSystem, - AcsUser, -) from typing import Optional, Any, List, Dict, Union -from seam.routes.user_identities_enrollment_automations import ( - UserIdentitiesEnrollmentAutomations, -) +from ..models import AbstractSeam as Seam +from .models import AbstractUserIdentities, UserIdentity, Device, AcsSystem, AcsUser +from .user_identities_enrollment_automations import UserIdentitiesEnrollmentAutomations class UserIdentities(AbstractUserIdentities): diff --git a/seam/routes/user_identities_enrollment_automations.py b/seam/routes/user_identities_enrollment_automations.py index dce3940..b8ff459 100644 --- a/seam/routes/user_identities_enrollment_automations.py +++ b/seam/routes/user_identities_enrollment_automations.py @@ -1,9 +1,6 @@ -from seam.types import AbstractSeam as Seam -from seam.routes.types import ( - AbstractUserIdentitiesEnrollmentAutomations, - EnrollmentAutomation, -) from typing import Optional, Any, List, Dict, Union +from ..models import AbstractSeam as Seam +from .models import AbstractUserIdentitiesEnrollmentAutomations, EnrollmentAutomation class UserIdentitiesEnrollmentAutomations(AbstractUserIdentitiesEnrollmentAutomations): diff --git a/seam/routes/utils/deep_attr_dict.py b/seam/routes/utils/deep_attr_dict.py deleted file mode 100644 index 341f0a9..0000000 --- a/seam/routes/utils/deep_attr_dict.py +++ /dev/null @@ -1,26 +0,0 @@ -# https://stackoverflow.com/a/3031270/559475 -class DeepAttrDict(dict): - MARKER = object() - - def __init__(self, value=None): - if value is None: - pass - elif isinstance(value, dict): - for key in value: - self.__setitem__(key, value[key]) - else: - raise TypeError("expected dict") - - def __setitem__(self, key, value): - if isinstance(value, dict) and not isinstance(value, DeepAttrDict): - value = DeepAttrDict(value) - super(DeepAttrDict, self).__setitem__(key, value) - - def __getitem__(self, key): - found = self.get(key, DeepAttrDict.MARKER) - if found is DeepAttrDict.MARKER: - found = DeepAttrDict() - super(DeepAttrDict, self).__setitem__(key, found) - return found - - __setattr__, __getattr__ = __setitem__, __getitem__ diff --git a/seam/routes/webhooks.py b/seam/routes/webhooks.py index d764eff..2845885 100644 --- a/seam/routes/webhooks.py +++ b/seam/routes/webhooks.py @@ -1,6 +1,6 @@ -from seam.types import AbstractSeam as Seam -from seam.routes.types import AbstractWebhooks, Webhook from typing import Optional, Any, List, Dict, Union +from ..models import AbstractSeam as Seam +from .models import AbstractWebhooks, Webhook class Webhooks(AbstractWebhooks): diff --git a/seam/routes/workspaces.py b/seam/routes/workspaces.py index 660d94b..850f890 100644 --- a/seam/routes/workspaces.py +++ b/seam/routes/workspaces.py @@ -1,6 +1,6 @@ -from seam.types import AbstractSeam as Seam -from seam.routes.types import AbstractWorkspaces, Workspace, ActionAttempt from typing import Optional, Any, List, Dict, Union +from ..models import AbstractSeam as Seam +from .models import AbstractWorkspaces, Workspace, ActionAttempt class Workspaces(AbstractWorkspaces):