doordeck-headless-sdk 0.104.0__py3-none-any.whl → 0.105.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -73,7 +73,7 @@ from dataclasses import dataclass, field
73
73
 
74
74
 
75
75
  class SdkException(Exception):
76
- def __init__(self, message: str, exception: Exception = None):
76
+ def __init__(self, message: str, exception: typing.Optional[Exception] = None):
77
77
  super().__init__(message)
78
78
  self.exception = exception
79
79
 
@@ -89,8 +89,8 @@ class MissingAndroidContextException(SdkException):
89
89
 
90
90
 
91
91
  class BatchShareFailedException(SdkException):
92
- def __init__(self, message: str, user_ids: list):
93
- super().__init__(message, user_ids)
92
+ def __init__(self, message: str, user_ids: typing.List[str]):
93
+ super().__init__(message)
94
94
  self.user_ids = user_ids
95
95
 
96
96
 
@@ -254,7 +254,7 @@ class AlpetaController(LockController):
254
254
  username: str
255
255
  password: str
256
256
  doorId: int
257
- baseUrl: str = None
257
+ baseUrl: typing.Optional[str] = None
258
258
 
259
259
  def __post_init__(self):
260
260
  self.type = "alpeta"
@@ -265,7 +265,7 @@ class AmagController(LockController):
265
265
  username: str
266
266
  password: str
267
267
  doorId: int
268
- baseUrl: str = None
268
+ baseUrl: typing.Optional[str] = None
269
269
 
270
270
  def __post_init__(self):
271
271
  self.type = "amag"
@@ -324,7 +324,7 @@ class GallagherController(LockController):
324
324
  type: str = field(init=False)
325
325
  apiKey: str
326
326
  doorId: str
327
- baseUrl: Optional[str] = None
327
+ baseUrl: typing.Optional[str] = None
328
328
 
329
329
  def __post_init__(self):
330
330
  self.type = "gallagher"
@@ -366,10 +366,10 @@ class MitrefinchController(LockController):
366
366
  class PaxtonNet2Controller(LockController):
367
367
  type: str = field(init=False)
368
368
  host: str
369
- username: Optional[str] = None
370
- password: Optional[str] = None
371
369
  address: str
372
370
  output: int
371
+ username: typing.Optional[str] = None
372
+ password: typing.Optional[str] = None
373
373
 
374
374
  def __post_init__(self):
375
375
  self.type = "net2"
@@ -402,7 +402,7 @@ class IntegraV2Controller(LockController):
402
402
  sessionId: str
403
403
  controllerId: int
404
404
  cardholderId: int
405
- pinCode: Optional[int] = None
405
+ pinCode: typing.Optional[int] = None
406
406
 
407
407
  def __post_init__(self):
408
408
  self.type = "integra-v2"
@@ -430,7 +430,7 @@ class TdsiExgardeController(LockController):
430
430
  username: str
431
431
  password: str
432
432
  doorId: int
433
- dbUrl: Optional[str] = None
433
+ dbUrl: typing.Optional[str] = None
434
434
 
435
435
  def __post_init__(self):
436
436
  self.type = "tdsi-exgarde"
@@ -452,7 +452,7 @@ class ZktecoController(LockController):
452
452
  clientSecret: str
453
453
  doorId: str
454
454
  entityType: typing.Literal["DOOR", "FLOOR"]
455
- baseUrl: str = None
455
+ baseUrl: typing.Optional[str] = None
456
456
 
457
457
  def __post_init__(self):
458
458
  self.type = "zkteco-zkbio-cvsecurity"
@@ -602,6 +602,222 @@ class Ed25519Key(AuthKey):
602
602
  self.kty = "OKP"
603
603
 
604
604
 
605
+ class ISecureStorage:
606
+ def set_api_environment(self, api_environment: str) -> None:
607
+ raise NotImplementedError
608
+
609
+ def get_api_environment(self) -> str | None:
610
+ raise NotImplementedError
611
+
612
+ def add_cloud_auth_token(self, token: str) -> None:
613
+ raise NotImplementedError
614
+
615
+ def get_cloud_auth_token(self) -> str | None:
616
+ raise NotImplementedError
617
+
618
+ def add_cloud_refresh_auth_token(self, token: str) -> None:
619
+ raise NotImplementedError
620
+
621
+ def get_cloud_refresh_token(self) -> str | None:
622
+ raise NotImplementedError
623
+
624
+ def set_fusion_host(self, host: str) -> None:
625
+ raise NotImplementedError
626
+
627
+ def get_fusion_host(self) -> str | None:
628
+ raise NotImplementedError
629
+
630
+ def add_fusion_auth_token(self, token: str) -> None:
631
+ raise NotImplementedError
632
+
633
+ def get_fusion_auth_token(self) -> str | None:
634
+ raise NotImplementedError
635
+
636
+ def add_public_key(self, public_key: bytes) -> None:
637
+ raise NotImplementedError
638
+
639
+ def get_public_key(self) -> bytes | None:
640
+ raise NotImplementedError
641
+
642
+ def add_private_key(self, private_key: bytes) -> None:
643
+ raise NotImplementedError
644
+
645
+ def get_private_key(self) -> bytes | None:
646
+ raise NotImplementedError
647
+
648
+ def set_key_pair_verified(self, verified: bool) -> None:
649
+ raise NotImplementedError
650
+
651
+ def get_key_pair_verified(self) -> bool | None:
652
+ raise NotImplementedError
653
+
654
+ def add_user_id(self, user_id: str) -> None:
655
+ raise NotImplementedError
656
+
657
+ def get_user_id(self) -> str | None:
658
+ raise NotImplementedError
659
+
660
+ def set_user_email(self, user_email: str) -> None:
661
+ raise NotImplementedError
662
+
663
+ def get_user_email(self) -> str | None:
664
+ raise NotImplementedError
665
+
666
+ def add_certificate_chain(self, certificate_chain: typing.List[str]) -> None:
667
+ raise NotImplementedError
668
+
669
+ def get_certificate_chain(self) -> typing.List[str]:
670
+ raise NotImplementedError
671
+
672
+ def clear(self) -> None:
673
+ raise NotImplementedError
674
+
675
+ class SecureStorage:
676
+ Implementation: ISecureStorage | None = None
677
+
678
+ static_buffer = ctypes.create_string_buffer(1024 * 10)
679
+
680
+ py_set_data_type = ctypes.CFUNCTYPE(None, ctypes.c_void_p)
681
+ py_get_data_type = ctypes.CFUNCTYPE(ctypes.c_char_p)
682
+
683
+ @staticmethod
684
+ def set_api_environment(result) -> None:
685
+ if SecureStorage.Implementation is not None and result is not None:
686
+ SecureStorage.Implementation.set_api_environment(ctypes.string_at(result).decode())
687
+
688
+ @staticmethod
689
+ def get_api_environment() -> int | None:
690
+ if r := SecureStorage.Implementation and SecureStorage.Implementation.get_api_environment():
691
+ SecureStorage.static_buffer.value = r.encode()
692
+ return ctypes.addressof(SecureStorage.static_buffer)
693
+ return None
694
+
695
+ @staticmethod
696
+ def add_cloud_auth_token(result) -> None:
697
+ if SecureStorage.Implementation is not None and result is not None:
698
+ SecureStorage.Implementation.add_cloud_auth_token(ctypes.string_at(result).decode())
699
+
700
+ @staticmethod
701
+ def get_cloud_auth_token() -> int | None:
702
+ if r := SecureStorage.Implementation and SecureStorage.Implementation.get_cloud_auth_token():
703
+ SecureStorage.static_buffer.value = r.encode()
704
+ return ctypes.addressof(SecureStorage.static_buffer)
705
+ return None
706
+
707
+ @staticmethod
708
+ def add_cloud_refresh_auth_token(result) -> None:
709
+ if SecureStorage.Implementation is not None and result is not None:
710
+ SecureStorage.Implementation.add_cloud_refresh_auth_token(ctypes.string_at(result).decode())
711
+
712
+ @staticmethod
713
+ def get_cloud_refresh_token() -> int | None:
714
+ if r := SecureStorage.Implementation and SecureStorage.Implementation.get_cloud_refresh_token():
715
+ SecureStorage.static_buffer.value = r.encode()
716
+ return ctypes.addressof(SecureStorage.static_buffer)
717
+ return None
718
+
719
+ @staticmethod
720
+ def set_fusion_host(result) -> None:
721
+ if SecureStorage.Implementation is not None and result is not None:
722
+ SecureStorage.Implementation.set_fusion_host(ctypes.string_at(result).decode())
723
+
724
+ @staticmethod
725
+ def get_fusion_host() -> int | None:
726
+ if r := SecureStorage.Implementation and SecureStorage.Implementation.get_fusion_host():
727
+ SecureStorage.static_buffer.value = r.encode()
728
+ return ctypes.addressof(SecureStorage.static_buffer)
729
+ return None
730
+
731
+ @staticmethod
732
+ def add_fusion_auth_token(result) -> None:
733
+ if SecureStorage.Implementation is not None and result is not None:
734
+ SecureStorage.Implementation.add_fusion_auth_token(ctypes.string_at(result).decode())
735
+
736
+ @staticmethod
737
+ def get_fusion_auth_token() -> int | None:
738
+ if r := SecureStorage.Implementation and SecureStorage.Implementation.get_fusion_auth_token():
739
+ SecureStorage.static_buffer.value = r.encode()
740
+ return ctypes.addressof(SecureStorage.static_buffer)
741
+ return None
742
+
743
+ @staticmethod
744
+ def add_public_key(result) -> None:
745
+ if SecureStorage.Implementation is not None and result is not None:
746
+ SecureStorage.Implementation.add_public_key(decode_base64_to_byte_array(ctypes.string_at(result).decode()))
747
+
748
+ @staticmethod
749
+ def get_public_key() -> int | None:
750
+ if r := SecureStorage.Implementation and SecureStorage.Implementation.get_public_key():
751
+ SecureStorage.static_buffer.value = encode_byte_array_to_base64(r).encode()
752
+ return ctypes.addressof(SecureStorage.static_buffer)
753
+ return None
754
+
755
+ @staticmethod
756
+ def add_private_key(result) -> None:
757
+ if SecureStorage.Implementation is not None and result is not None:
758
+ SecureStorage.Implementation.add_private_key(decode_base64_to_byte_array(ctypes.string_at(result).decode()))
759
+
760
+ @staticmethod
761
+ def get_private_key() -> int | None:
762
+ if r := SecureStorage.Implementation and SecureStorage.Implementation.get_private_key():
763
+ SecureStorage.static_buffer.value = encode_byte_array_to_base64(r).encode()
764
+ return ctypes.addressof(SecureStorage.static_buffer)
765
+ return None
766
+
767
+ @staticmethod
768
+ def set_key_pair_verified(result) -> None:
769
+ if SecureStorage.Implementation is not None and result is not None:
770
+ SecureStorage.Implementation.set_key_pair_verified(bool(ctypes.string_at(result).decode()))
771
+
772
+ @staticmethod
773
+ def get_key_pair_verified() -> int | None:
774
+ if r := SecureStorage.Implementation and SecureStorage.Implementation.get_key_pair_verified():
775
+ SecureStorage.static_buffer.value = str(r).encode()
776
+ return ctypes.addressof(SecureStorage.static_buffer)
777
+ return None
778
+
779
+ @staticmethod
780
+ def add_user_id(result) -> None:
781
+ if SecureStorage.Implementation is not None and result is not None:
782
+ SecureStorage.Implementation.add_user_id(ctypes.string_at(result).decode())
783
+
784
+ @staticmethod
785
+ def get_user_id() -> int | None:
786
+ if r := SecureStorage.Implementation and SecureStorage.Implementation.get_user_id():
787
+ SecureStorage.static_buffer.value = r.encode()
788
+ return ctypes.addressof(SecureStorage.static_buffer)
789
+ return None
790
+
791
+ @staticmethod
792
+ def set_user_email(result) -> None:
793
+ if SecureStorage.Implementation is not None and result is not None:
794
+ SecureStorage.Implementation.set_user_email(ctypes.string_at(result).decode())
795
+
796
+ @staticmethod
797
+ def get_user_email() -> int | None:
798
+ if r := SecureStorage.Implementation and SecureStorage.Implementation.get_user_email():
799
+ SecureStorage.static_buffer.value = r.encode()
800
+ return ctypes.addressof(SecureStorage.static_buffer)
801
+ return None
802
+
803
+ @staticmethod
804
+ def add_certificate_chain(result) -> None:
805
+ if SecureStorage.Implementation is not None and result is not None:
806
+ SecureStorage.Implementation.add_certificate_chain(string_to_certificate_chain(ctypes.string_at(result).decode()))
807
+
808
+ @staticmethod
809
+ def get_certificate_chain() -> int | None:
810
+ if r := SecureStorage.Implementation and SecureStorage.Implementation.get_certificate_chain():
811
+ SecureStorage.static_buffer.value = certificate_chain_to_string(r).encode()
812
+ return ctypes.addressof(SecureStorage.static_buffer)
813
+ return None
814
+
815
+ @staticmethod
816
+ def clear() -> None:
817
+ if SecureStorage.Implementation is not None:
818
+ SecureStorage.Implementation.clear()
819
+
820
+
605
821
  class Account(object):
606
822
 
607
823
  def __init__(self, resource):
@@ -627,7 +843,7 @@ class Account(object):
627
843
  [self.resource, json.dumps(data)]
628
844
  )
629
845
 
630
- async def register_ephemeral_key_with_secondary_authentication(self, publicKey: str, method: Optional[typing.Literal["EMAIL", "TELEPHONE", "SMS"]] = None):
846
+ async def register_ephemeral_key_with_secondary_authentication(self, publicKey: str, method: typing.Optional[typing.Literal["EMAIL", "TELEPHONE", "SMS"]] = None):
631
847
  data = {
632
848
  "publicKey": publicKey,
633
849
  "method": method
@@ -637,7 +853,7 @@ class Account(object):
637
853
  [self.resource, json.dumps(data)]
638
854
  )
639
855
 
640
- async def verify_ephemeral_key_registration(self, code: str, privateKey: str = None):
856
+ async def verify_ephemeral_key_registration(self, code: str, privateKey: typing.Optional[str] = None):
641
857
  data = {
642
858
  "code": code,
643
859
  "privateKey": privateKey
@@ -698,7 +914,7 @@ class Accountless(object):
698
914
  [self.resource, json.dumps(data)]
699
915
  )
700
916
 
701
- async def registration(self, email: str, password: str, force: bool = False, displayName: str = None, publicKey: str = None):
917
+ async def registration(self, email: str, password: str, force: bool = False, displayName: typing.Optional[str] = None, publicKey: typing.Optional[str] = None):
702
918
  data = {
703
919
  "email": email,
704
920
  "password": password,
@@ -915,7 +1131,7 @@ class Helper(object):
915
1131
  [self.resource, json.dumps(data)]
916
1132
  )
917
1133
 
918
- async def assisted_register(self, email: str, password: str, force: bool = False, displayName: str = None):
1134
+ async def assisted_register(self, email: str, password: str, force: bool = False, displayName: typing.Optional[str] = None):
919
1135
  data = {
920
1136
  "email": email,
921
1137
  "password": password,
@@ -976,7 +1192,7 @@ class LockOperations(object):
976
1192
  [self.resource, json.dumps(data)]
977
1193
  )
978
1194
 
979
- async def update_lock_name(self, lockId: str, name: str = None):
1195
+ async def update_lock_name(self, lockId: str, name: typing.Optional[str] = None):
980
1196
  data = {
981
1197
  "lockId": lockId,
982
1198
  "name": name
@@ -986,7 +1202,7 @@ class LockOperations(object):
986
1202
  [self.resource, json.dumps(data)]
987
1203
  )
988
1204
 
989
- async def update_lock_favourite(self, lockId: str, favourite: bool = None):
1205
+ async def update_lock_favourite(self, lockId: str, favourite: typing.Optional[bool] = None):
990
1206
  data = {
991
1207
  "lockId": lockId,
992
1208
  "favourite": favourite
@@ -996,7 +1212,7 @@ class LockOperations(object):
996
1212
  [self.resource, json.dumps(data)]
997
1213
  )
998
1214
 
999
- async def update_lock_colour(self, lockId: str, colour: str = None):
1215
+ async def update_lock_colour(self, lockId: str, colour: typing.Optional[str] = None):
1000
1216
  data = {
1001
1217
  "lockId": lockId,
1002
1218
  "colour": colour
@@ -1006,7 +1222,7 @@ class LockOperations(object):
1006
1222
  [self.resource, json.dumps(data)]
1007
1223
  )
1008
1224
 
1009
- async def update_lock_setting_default_name(self, lockId: str, name: str = None):
1225
+ async def update_lock_setting_default_name(self, lockId: str, name: typing.Optional[str] = None):
1010
1226
  data = {
1011
1227
  "lockId": lockId,
1012
1228
  "name": name
@@ -1039,17 +1255,17 @@ class LockOperations(object):
1039
1255
  async def set_lock_setting_time_restrictions(self, lockId: str, times: List[TimeRequirement]):
1040
1256
  data = {
1041
1257
  "lockId": lockId,
1042
- "times": dataclasses.asdict(times)
1258
+ "times": [dataclasses.asdict(t) for t in times]
1043
1259
  }
1044
1260
  return await execute_async(
1045
1261
  _doordeck_headless_sdk.setLockSettingTimeRestrictions,
1046
1262
  [self.resource, json.dumps(data)]
1047
1263
  )
1048
1264
 
1049
- async def update_lock_setting_location_restrictions(self, lockId: str, location: LocationRequirement = None):
1265
+ async def update_lock_setting_location_restrictions(self, lockId: str, location: typing.Optional[LocationRequirement] = None):
1050
1266
  data = {
1051
1267
  "lockId": lockId,
1052
- "location": dataclasses.asdict(location)
1268
+ **({"location": dataclasses.asdict(location)} if location is not None else {})
1053
1269
  }
1054
1270
  return await execute_async(
1055
1271
  _doordeck_headless_sdk.updateLockSettingLocationRestrictions,
@@ -1429,9 +1645,55 @@ class Tiles(object):
1429
1645
 
1430
1646
  class InitializeSdk(object):
1431
1647
 
1432
- def __init__(self, api_environment: typing.Literal["DEV", "STAGING", "PROD"] = "PROD", cloud_auth_token: str = None, cloud_refresh_token: str = None, fusion_host: str = None):
1648
+ def __init__(self, api_environment: typing.Literal["DEV", "STAGING", "PROD"] = "PROD",
1649
+ cloud_auth_token: typing.Optional[str] = None, cloud_refresh_token: typing.Optional[str] = None,
1650
+ fusion_host: typing.Optional[str] = None, secure_storage_impl: typing.Optional[ISecureStorage] = None):
1651
+
1652
+ self.secureStorage = Doordeck_Headless_Sdk_kref_com_doordeck_multiplatform_sdk_storage_SecureStorage()
1653
+ if secure_storage_impl is not None:
1654
+ SecureStorage.Implementation = secure_storage_impl
1655
+
1656
+ setApiEnvironmentCp = ctypes.cast(SecureStorage.py_set_data_type(SecureStorage.set_api_environment), ctypes.c_void_p).value
1657
+ getApiEnvironmentCp = ctypes.cast(SecureStorage.py_get_data_type(SecureStorage.get_api_environment), ctypes.c_void_p).value
1658
+ addCloudAuthTokenCp = ctypes.cast(SecureStorage.py_set_data_type(SecureStorage.add_cloud_auth_token), ctypes.c_void_p).value
1659
+ getCloudAuthTokenCp = ctypes.cast(SecureStorage.py_get_data_type(SecureStorage.get_cloud_auth_token), ctypes.c_void_p).value
1660
+ addCloudRefreshTokenCp = ctypes.cast(SecureStorage.py_set_data_type(SecureStorage.add_cloud_refresh_auth_token), ctypes.c_void_p).value
1661
+ getCloudRefreshTokenCp = ctypes.cast(SecureStorage.py_get_data_type(SecureStorage.get_cloud_refresh_token), ctypes.c_void_p).value
1662
+ setFusionHostCp = ctypes.cast(SecureStorage.py_set_data_type(SecureStorage.set_fusion_host), ctypes.c_void_p).value
1663
+ getFusionHostCp = ctypes.cast(SecureStorage.py_get_data_type(SecureStorage.get_fusion_host), ctypes.c_void_p).value
1664
+ addFusionAuthTokenCp = ctypes.cast(SecureStorage.py_set_data_type(SecureStorage.add_fusion_auth_token), ctypes.c_void_p).value
1665
+ getFusionAuthTokenCp = ctypes.cast(SecureStorage.py_get_data_type(SecureStorage.get_fusion_auth_token), ctypes.c_void_p).value
1666
+ addPublicKeyCp = ctypes.cast(SecureStorage.py_set_data_type(SecureStorage.add_public_key), ctypes.c_void_p).value
1667
+ getPublicKeyCp = ctypes.cast(SecureStorage.py_get_data_type(SecureStorage.get_public_key), ctypes.c_void_p).value
1668
+ addPrivateKeyCp = ctypes.cast(SecureStorage.py_set_data_type(SecureStorage.add_private_key), ctypes.c_void_p).value
1669
+ getPrivateKeyCp = ctypes.cast(SecureStorage.py_get_data_type(SecureStorage.get_private_key), ctypes.c_void_p).value
1670
+ setKeyPairVerifiedCp = ctypes.cast(SecureStorage.py_set_data_type(SecureStorage.set_key_pair_verified), ctypes.c_void_p).value
1671
+ getKeyPairVerifiedCp = ctypes.cast(SecureStorage.py_get_data_type(SecureStorage.get_key_pair_verified), ctypes.c_void_p).value
1672
+ addUserIdCp = ctypes.cast(SecureStorage.py_set_data_type(SecureStorage.add_user_id), ctypes.c_void_p).value
1673
+ getUserIdCp = ctypes.cast(SecureStorage.py_get_data_type(SecureStorage.get_user_id), ctypes.c_void_p).value
1674
+ addUserEmailCp = ctypes.cast(SecureStorage.py_set_data_type(SecureStorage.set_user_email), ctypes.c_void_p).value
1675
+ getUserEmailCp = ctypes.cast(SecureStorage.py_get_data_type(SecureStorage.get_user_email), ctypes.c_void_p).value
1676
+ addCertificateChainCp = ctypes.cast(SecureStorage.py_set_data_type(SecureStorage.add_certificate_chain), ctypes.c_void_p).value
1677
+ getCertificateChainCp = ctypes.cast(SecureStorage.py_get_data_type(SecureStorage.get_certificate_chain), ctypes.c_void_p).value
1678
+ clearCp = ctypes.cast(SecureStorage.py_get_data_type(SecureStorage.clear), ctypes.c_void_p).value
1679
+
1680
+ self.secureStorage = _doordeck_headless_sdk.createMingwSecureStorage(
1681
+ setApiEnvironmentCp, getApiEnvironmentCp,
1682
+ addCloudAuthTokenCp, getCloudAuthTokenCp,
1683
+ addCloudRefreshTokenCp, getCloudRefreshTokenCp,
1684
+ setFusionHostCp, getFusionHostCp,
1685
+ addFusionAuthTokenCp, getFusionAuthTokenCp,
1686
+ addPublicKeyCp, getPublicKeyCp,
1687
+ addPrivateKeyCp, getPrivateKeyCp,
1688
+ setKeyPairVerifiedCp, getKeyPairVerifiedCp,
1689
+ addUserIdCp, getUserIdCp,
1690
+ addUserEmailCp, getUserEmailCp,
1691
+ addCertificateChainCp, getCertificateChainCp,
1692
+ clearCp
1693
+ )
1694
+
1433
1695
  self.sdkApiEnvironment = _doordeck_headless_sdk.getApiEnvironmentByName(Doordeck_Headless_Sdk_kref_com_doordeck_multiplatform_sdk_model_data_ApiEnvironment(), api_environment)
1434
- self.sdkConfig = _doordeck_headless_sdk.buildSdkConfig(self.sdkApiEnvironment, cloud_auth_token, cloud_refresh_token, fusion_host)
1696
+ self.sdkConfig = _doordeck_headless_sdk.buildSdkConfig(self.sdkApiEnvironment, cloud_auth_token, cloud_refresh_token, fusion_host, self.secureStorage)
1435
1697
  self.sdk = initialize(Doordeck_Headless_Sdk_kref_com_doordeck_multiplatform_sdk_KDoordeckFactory(), self.sdkConfig)
1436
1698
  self.accountless = Accountless(accountless(self.sdk))
1437
1699
  self.account = Account(account(self.sdk))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: doordeck_headless_sdk
3
- Version: 0.104.0
3
+ Version: 0.105.0
4
4
  Summary: The official Doordeck SDK for Kotlin Multiplatform
5
5
  Author-email: Doordeck Limited <development@doordeck.com>
6
6
  Project-URL: Homepage, https://www.doordeck.com
@@ -0,0 +1,9 @@
1
+ doordeck_headless_sdk/Doordeck.Headless.Sdk.dll,sha256=uIcSUNnqzyWJYERj-Kek2ZDaUdEXD0DrI4chyLSz100,14162944
2
+ doordeck_headless_sdk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
+ doordeck_headless_sdk/_doordeck_headless_sdk.pyd,sha256=Tq0Kxe5WQcRS8Xx5E_Si5Yv3JUWFFqght0YgMsnuzJ0,16056683
4
+ doordeck_headless_sdk/doordeck_headless_sdk.py,sha256=V4v-MSCqk6UggXpN356WAKN87PYgtibAz70u9RNGdb4,3080443
5
+ doordeck_headless_sdk-0.105.0.dist-info/licenses/LICENSE,sha256=zE1N4JILDTkSIDtdmqdnKKxKEQh_VdqeoAV2230eNOI,10141
6
+ doordeck_headless_sdk-0.105.0.dist-info/METADATA,sha256=H_37aw2H0cB9VscYEblMqLOUAkHeT-baa8BgzP2mic0,3085
7
+ doordeck_headless_sdk-0.105.0.dist-info/WHEEL,sha256=Nw36Djuh_5VDukK0H78QzOX-_FQEo6V37m3nkm96gtU,91
8
+ doordeck_headless_sdk-0.105.0.dist-info/top_level.txt,sha256=VmXlkrtf2J3rayniS9e6Zpu_oYR7p4DmdudxnV0nd_U,22
9
+ doordeck_headless_sdk-0.105.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.4.0)
2
+ Generator: setuptools (80.7.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,9 +0,0 @@
1
- doordeck_headless_sdk/Doordeck.Headless.Sdk.dll,sha256=MVZw-PBd7CWFb7XskyD9reIdn88JzgKYc4-g8Ws1XhA,14162944
2
- doordeck_headless_sdk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- doordeck_headless_sdk/_doordeck_headless_sdk.pyd,sha256=ePRQqYMSWRepc-gS8pgUe41gaeOn66IUb4qGDj_h4DM,16060267
4
- doordeck_headless_sdk/doordeck_headless_sdk.py,sha256=bKnGwKt27cOgRDq71viQmpiqUD1ERwN7jGkGSHJSFCU,3067423
5
- doordeck_headless_sdk-0.104.0.dist-info/licenses/LICENSE,sha256=zE1N4JILDTkSIDtdmqdnKKxKEQh_VdqeoAV2230eNOI,10141
6
- doordeck_headless_sdk-0.104.0.dist-info/METADATA,sha256=-T57EySB61y3r3Qc2gVGyksHxWP5E9UwV6HDO1NVnRk,3085
7
- doordeck_headless_sdk-0.104.0.dist-info/WHEEL,sha256=DnLRTWE75wApRYVsjgc6wsVswC54sMSJhAEd4xhDpBk,91
8
- doordeck_headless_sdk-0.104.0.dist-info/top_level.txt,sha256=VmXlkrtf2J3rayniS9e6Zpu_oYR7p4DmdudxnV0nd_U,22
9
- doordeck_headless_sdk-0.104.0.dist-info/RECORD,,