Skip to content
Open
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
2 changes: 1 addition & 1 deletion .bumpversion.cfg
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[bumpversion]
current_version = 0.5.0
current_version = 0.6.0
commit = False
tag = False

Expand Down
2 changes: 1 addition & 1 deletion Pipfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ name = "pypi"

[packages]
requests = ">=2.27.0,<2.33.0"
pydantic = ">=1.9.0,<2.0"
pydantic = ">=2.0,<3.0"
urllib3 = ">=1.26.0,<1.27"

[dev-packages]
Expand Down
1,876 changes: 864 additions & 1,012 deletions Pipfile.lock

Large diffs are not rendered by default.

1,001 changes: 511 additions & 490 deletions emnify/modules/api/models.py

Large diffs are not rendered by default.

12 changes: 8 additions & 4 deletions emnify/modules/device/manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ def __init__(self, client):
def device_model(self):
return device_models.Device

@property
def get_sim_device_model(self):
return device_models.SimDevice

@property
def list_sms_model(self):
return device_models.ListSms
Expand Down Expand Up @@ -103,7 +107,7 @@ def send_sms(
return device_call_managers.SendSmsToDevice().call_api(
client=self.client,
path_params={"endpoint_id": device_id},
data=sms.dict(exclude_none=True),
data=sms.model_dump(exclude_none=True),
)

def update_device(
Expand All @@ -118,7 +122,7 @@ def update_device(
"""
return device_call_managers.UpdateDevice().call_api(
client=self.client,
data=device.dict(exclude_none=True),
data=device.model_dump(exclude_none=True),
path_params={"endpoint_id": device_id},
)

Expand Down Expand Up @@ -355,7 +359,7 @@ def create_device(self, device: device_models.Device) -> bool:
"Argument must contain filled Device model"
)
return device_call_managers.CreateDevice().call_api(
client=self.client, data=device.dict(exclude_none=True)
client=self.client, data=device.model_dump(exclude_none=True)
)

def retrieve_device(self, device_id: int) -> device_models.RetrieveDevice:
Expand Down Expand Up @@ -426,7 +430,7 @@ def __transform_all_devices_filter_params(
) -> dict:
query_filter = {}
if filter_model:
filter_dict = filter_model.dict(exclude_none=True)
filter_dict = filter_model.model_dump(exclude_none=True)
query_filter["q"] = ",".join(
[f"{key}:{filter_dict[key]}" for key in filter_dict]
)
Expand Down
23 changes: 12 additions & 11 deletions emnify/modules/device/models.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import datetime
from pydantic import BaseModel, validator
from pydantic import ConfigDict, RootModel, BaseModel, field_validator, ValidationInfo
from typing import Optional, List, Dict, Any
from emnify.modules.sim.models import SimList
from emnify.modules.api import models as generated_models
Expand All @@ -26,13 +26,13 @@ class CreateDevice(Device):
Custom class for validation of Device on creation
"""

@validator("status")
@field_validator("status")
@classmethod
def validate_status(cls, field_value, values, field, config):
def validate_status(cls, field_value, info: ValidationInfo):
if (
values.get("sim")
and getattr(values["sim"], "status")
and values["sim"].status.id == 1
info.data.get("sim")
and getattr(info.data["sim"], "status", None)
and info.data["sim"].status.id == 1
):
return field_value
if field_value.id == 0:
Expand Down Expand Up @@ -101,8 +101,11 @@ class FilterDeviceModel(BaseModel):
sim_status: Optional[int] = None


class ListQFilterDeviceListModel(BaseModel):
__root__: List[FilterDeviceModel]
class ListQFilterDeviceListModel(RootModel[List[FilterDeviceModel]]):
"""
Root model for list of FilterDeviceModel
"""
pass


class GetDeviceFilterSet(BaseModel):
Expand All @@ -112,9 +115,7 @@ class GetDeviceFilterSet(BaseModel):

sort: Optional[DeviceSortModel] = None
q: Optional[ListQFilterDeviceListModel] = None

class Config:
use_enum_values = True
model_config = ConfigDict(use_enum_values=True)


class DeviceEvent(generated_models.Event):
Expand Down
8 changes: 6 additions & 2 deletions emnify/modules/sim/manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@ def get_sim_update_model(self):
def get_sim_filter_model(self):
return sim_models.SimFilter

@property
def get_sim_status_model(self):
return sim_models.SimStatus

@property
def get_sim_sort_enum(self):
return emnify_const.SimSort
Expand Down Expand Up @@ -99,7 +103,7 @@ def update_sim(self, sim_id: int, sim: sim_models.SimUpdate) -> bool:
"""
return SimUpdateApi().call_api(
client=self.client,
data=sim.dict(exclude_none=True),
data=sim.model_dump(exclude_none=True),
path_params={"sim": sim_id},
)

Expand Down Expand Up @@ -139,7 +143,7 @@ def __transform_sim_filter_params(
) -> dict:
query_filter = {}
if filter_model:
filter_dict = filter_model.dict(exclude_none=True)
filter_dict = filter_model.model_dump(exclude_none=True)
query_filter["q"] = ",".join(
[f"{key}:{filter_dict[key]}" for key in filter_dict]
)
Expand Down
2 changes: 1 addition & 1 deletion emnify/modules/sim/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ class SimList(RetrieveSIMlistresponse):
"""

status: SimStatus = None
device: typing.Optional[SimDevice] = Field(alias="endpoint")
device: typing.Optional[SimDevice] = Field(None, alias="endpoint")


class SimUpdate(BaseModel):
Expand Down
4 changes: 2 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import os

NAME = os.getenv("PYPI_PACKAGE_NAME") or "emnify-sdk"
VERSION = "0.5.0"
VERSION = "0.6.0"
# To install the library, run the following
#
# python -m build --sdist --wheel
Expand All @@ -14,7 +14,7 @@
REQUIRES = [
"requests>=2.27.0,<2.33.0",
"urllib3>=1.21.1,<1.27",
"pydantic>=1.9.0,<2.0.0",
"pydantic>=1.9.0,<3.0.0",
]
if __name__ == "__main__":
with open("README.md", "r", encoding="utf-8") as fh:
Expand Down
2 changes: 1 addition & 1 deletion tests/test_emnify.py
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ def test_create_device_with_sim(self):
id=devices[0].service_profile.id
)
sim_status = emnify.devices.status_model(id=1, description="Activated")
sim = emnify.sim.get_sim_list_model(id=sims[0].id, status=sim_status)
sim = emnify.devices.get_sim_device_model(id=sims[0].id, status=sim_status)
device = emnify.devices.device_create_model(
name=name,
tariff_profile=tariff_profile,
Expand Down