Skip to content

Commit 8e48fac

Browse files
Sync monorepo state at "Update Python SDK with new methods for Transformer" (#119)
Syncing from userclouds/userclouds@8fdf4f1deeea7d0d10f5f80e674fdaee08d9344f
1 parent c0a844a commit 8e48fac

File tree

5 files changed

+95
-26
lines changed

5 files changed

+95
-26
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Changelog
22

3+
## 1.10.0 - TBD
4+
5+
- Add version to Transformer model, add client methods GetTransformer and UpdateTransformer, and fix a bug in GetAccessPolicy and GetAccessPolicyTemplate
6+
37
## 1.9.2 - 06-05-2024
48

59
- Fix missing parameter in \_post_async for AsyncClient

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
certifi==2024.7.4
22
cffi==1.15.1
33
charset-normalizer==2.1.1
4-
cryptography==42.0.4
4+
cryptography==43.0.1
55
idna==3.7
66
iso8601==1.1.0
77
pycparser==2.21

src/usercloudssdk/asyncclient.py

Lines changed: 41 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -587,16 +587,21 @@ async def ListAccessPolicyTemplatesAsync(
587587
return templates
588588

589589
async def GetAccessPolicyTemplateAsync(self, rid: ResourceID):
590-
if rid.id is not None:
590+
if hasattr(rid, "id"):
591591
resp_json = await self._get_async(
592592
f"/tokenizer/policies/accesstemplate/{rid.id}"
593593
)
594-
elif rid.name is not None:
594+
return AccessPolicyTemplate.from_json(resp_json)
595+
elif hasattr(rid, "name"):
595596
resp_json = await self._get_async(
596-
f"/tokenizer/policies/accesstemplate?name={rid.name}"
597+
f"/tokenizer/policies/accesstemplate?template_name={rid.name}"
597598
)
598-
599-
return AccessPolicyTemplate.from_json(resp_json)
599+
if len(resp_json["data"]) == 1:
600+
return AccessPolicyTemplate.from_json(resp_json["data"][0])
601+
raise UserCloudsSDKError(
602+
f"Access Policy Template with name {rid.name} not found", 404
603+
)
604+
raise UserCloudsSDKError("Invalid ResourceID", 400)
600605

601606
async def UpdateAccessPolicyTemplateAsync(
602607
self, access_policy_template: AccessPolicyTemplate
@@ -659,14 +664,19 @@ async def ListAccessPoliciesAsync(
659664
return policies
660665

661666
async def GetAccessPolicyAsync(self, rid: ResourceID):
662-
if rid.id is not None:
667+
if hasattr(rid, "id"):
663668
resp_json = await self._get_async(f"/tokenizer/policies/access/{rid.id}")
664-
elif rid.name is not None:
669+
return AccessPolicy.from_json(resp_json)
670+
elif hasattr(rid, "name"):
665671
resp_json = await self._get_async(
666-
f"/tokenizer/policies/access?name={rid.name}"
672+
f"/tokenizer/policies/access?policy_name={rid.name}"
667673
)
668-
669-
return AccessPolicy.from_json(resp_json)
674+
if len(resp_json["data"]) == 1:
675+
return AccessPolicy.from_json(resp_json["data"][0])
676+
raise UserCloudsSDKError(
677+
f"Access Policy with name {rid.name} not found", 404
678+
)
679+
raise UserCloudsSDKError("Invalid ResourceID", 400)
670680

671681
async def UpdateAccessPolicyAsync(self, access_policy: AccessPolicy):
672682
resp_json = await self._put_async(
@@ -698,6 +708,21 @@ async def CreateTransformerAsync(
698708
return transformer
699709
raise err
700710

711+
async def GetTransformerAsync(self, rid: ResourceID):
712+
if hasattr(rid, "id"):
713+
resp_json = await self._get_async(
714+
f"/tokenizer/policies/transformation/{rid.id}"
715+
)
716+
return Transformer.from_json(resp_json)
717+
elif hasattr(rid, "name"):
718+
resp_json = await self._get_async(
719+
f"/tokenizer/policies/transformation?transformer_name={rid.name}"
720+
)
721+
if len(resp_json["data"]) == 1:
722+
return Transformer.from_json(resp_json["data"][0])
723+
raise UserCloudsSDKError(f"Transformer with name {rid.name} not found", 404)
724+
raise UserCloudsSDKError("Invalid ResourceID", 400)
725+
701726
async def ListTransformersAsync(
702727
self,
703728
limit: int = 0,
@@ -727,7 +752,12 @@ async def ListTransformersAsync(
727752
transformers = [Transformer.from_json(tf) for tf in resp_json["data"]]
728753
return transformers
729754

730-
# Note: Transformers are immutable, so no Update method is provided.
755+
async def UpdateTransformerAsync(self, transformer: Transformer):
756+
resp_json = await self._put_async(
757+
f"/tokenizer/policies/transformation/{transformer.id}",
758+
json_data={"transformer": transformer.__dict__},
759+
)
760+
return Transformer.from_json(resp_json)
731761

732762
async def DeleteTransformerAsync(self, id: uuid.UUID):
733763
return await self._delete_async(f"/tokenizer/policies/transformation/{id}")

src/usercloudssdk/client.py

Lines changed: 41 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -572,12 +572,19 @@ def ListAccessPolicyTemplates(
572572
return templates
573573

574574
def GetAccessPolicyTemplate(self, rid: ResourceID):
575-
if rid.id is not None:
575+
if hasattr(rid, "id"):
576576
resp_json = self._get(f"/tokenizer/policies/accesstemplate/{rid.id}")
577-
elif rid.name is not None:
578-
resp_json = self._get(f"/tokenizer/policies/accesstemplate?name={rid.name}")
579-
580-
return AccessPolicyTemplate.from_json(resp_json)
577+
return AccessPolicyTemplate.from_json(resp_json)
578+
elif hasattr(rid, "name"):
579+
resp_json = self._get(
580+
f"/tokenizer/policies/accesstemplate?template_name={rid.name}"
581+
)
582+
if len(resp_json["data"]) == 1:
583+
return AccessPolicyTemplate.from_json(resp_json["data"][0])
584+
raise UserCloudsSDKError(
585+
f"Access Policy Template with name {rid.name} not found", 404
586+
)
587+
raise UserCloudsSDKError("Invalid ResourceID", 400)
581588

582589
def UpdateAccessPolicyTemplate(self, access_policy_template: AccessPolicyTemplate):
583590
resp_json = self._put(
@@ -638,12 +645,17 @@ def ListAccessPolicies(
638645
return policies
639646

640647
def GetAccessPolicy(self, rid: ResourceID):
641-
if rid.id is not None:
648+
if hasattr(rid, "id"):
642649
resp_json = self._get(f"/tokenizer/policies/access/{rid.id}")
643-
elif rid.name is not None:
644-
resp_json = self._get(f"/tokenizer/policies/access?name={rid.name}")
645-
646-
return AccessPolicy.from_json(resp_json)
650+
return AccessPolicy.from_json(resp_json)
651+
elif hasattr(rid, "name"):
652+
resp_json = self._get(f"/tokenizer/policies/access?policy_name={rid.name}")
653+
if len(resp_json["data"]) == 1:
654+
return AccessPolicy.from_json(resp_json["data"][0])
655+
raise UserCloudsSDKError(
656+
f"Access Policy with name {rid.name} not found", 404
657+
)
658+
raise UserCloudsSDKError("Invalid ResourceID", 400)
647659

648660
def UpdateAccessPolicy(self, access_policy: AccessPolicy):
649661
resp_json = self._put(
@@ -673,6 +685,19 @@ def CreateTransformer(self, transformer: Transformer, if_not_exists: bool = Fals
673685
return transformer
674686
raise err
675687

688+
def GetTransformer(self, rid: ResourceID):
689+
if hasattr(rid, "id"):
690+
resp_json = self._get(f"/tokenizer/policies/transformation/{rid.id}")
691+
return Transformer.from_json(resp_json)
692+
elif hasattr(rid, "name"):
693+
resp_json = self._get(
694+
f"/tokenizer/policies/transformation?transformer_name={rid.name}"
695+
)
696+
if len(resp_json["data"]) == 1:
697+
return Transformer.from_json(resp_json["data"][0])
698+
raise UserCloudsSDKError(f"Transformer with name {rid.name} not found", 404)
699+
raise UserCloudsSDKError("Invalid ResourceID", 400)
700+
676701
def ListTransformers(
677702
self,
678703
limit: int = 0,
@@ -700,7 +725,12 @@ def ListTransformers(
700725
transformers = [Transformer.from_json(tf) for tf in resp_json["data"]]
701726
return transformers
702727

703-
# Note: Transformers are immutable, so no Update method is provided.
728+
def UpdateTransformer(self, transformer: Transformer):
729+
resp_json = self._put(
730+
f"/tokenizer/policies/transformation/{transformer.id}",
731+
json_data={"transformer": transformer.__dict__},
732+
)
733+
return Transformer.from_json(resp_json)
704734

705735
def DeleteTransformer(self, id: uuid.UUID):
706736
return self._delete(f"/tokenizer/policies/transformation/{id}")

src/usercloudssdk/models.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,9 +106,9 @@ def from_json(cls, json_data: dict) -> UserSelectorConfig:
106106

107107
class ResourceID:
108108
def __init__(self, id="", name="") -> None:
109-
if id != "":
109+
if id:
110110
setattr(self, "id", id)
111-
if name != "":
111+
if name:
112112
setattr(self, "name", name)
113113

114114
def __repr__(self) -> str:
@@ -841,6 +841,7 @@ class Transformer:
841841
transform_type: TransformType
842842
function: str
843843
parameters: str
844+
version: int
844845

845846
def __init__(
846847
self,
@@ -856,6 +857,7 @@ def __init__(
856857
parameters: str = "",
857858
input_type_constraints: ColumnConstraints | None = None,
858859
output_type_constraints: ColumnConstraints | None = None,
860+
version: int = 0,
859861
) -> None:
860862
self.id = id
861863
self.name = name
@@ -887,9 +889,10 @@ def __init__(
887889
)
888890
else:
889891
self.output_type_constraints = output_type_constraints
892+
self.version = version
890893

891894
def __repr__(self) -> str:
892-
return f"Transformer(id={self.id}, name={self.name}))"
895+
return f"Transformer(id={self.id}, name={self.name}, input_data_type={self.input_data_type}, input_type={self.input_type}, input_type_constraints={self.input_type_constraints}, output_data_type={self.output_data_type}, output_type={self.output_type}, output_type_constraints={self.output_type_constraints}, reuse_existing_token={self.reuse_existing_token}, transform_type={self.transform_type}, function={self.function}, parameters={self.parameters}, version={self.version})"
893896

894897
def __str__(self) -> str:
895898
return f"Transformer {self.name} - {self.id}"
@@ -909,6 +912,7 @@ def to_json(self) -> str:
909912
"transform_type": self.transform_type.value,
910913
"function": self.function,
911914
"parameters": self.parameters,
915+
"version": self.version,
912916
},
913917
)
914918

@@ -935,6 +939,7 @@ def from_json(cls, json_data: dict) -> Transformer:
935939
transform_type=TransformType(json_data["transform_type"]),
936940
function=json_data["function"],
937941
parameters=json_data["parameters"],
942+
version=json_data["version"],
938943
)
939944

940945

0 commit comments

Comments
 (0)