Skip to content

Commit 40124bc

Browse files
authored
Merge pull request #148 from controlm/Convert-Numeric-Str-Fields-to-Int
Added conversion for str fields to int when deserializing json
2 parents f6fa0b0 + b8f0aa4 commit 40124bc

File tree

2 files changed

+21
-12
lines changed

2 files changed

+21
-12
lines changed

src/aapi/job.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ class Units(enum.Enum):
6161
Hours = "Hours"
6262
Days = "Days"
6363

64-
times: str = attrs.field(kw_only=True, default=None, metadata={
64+
times: int = attrs.field(kw_only=True, default=None, metadata={
6565
'_aapi_repr_': 'Times'})
6666
every: int = attrs.field(kw_only=True, default=None, metadata={
6767
'_aapi_repr_': 'Every'})
@@ -87,7 +87,7 @@ class Units(enum.Enum):
8787
Hours = "Hours"
8888
Days = "Days"
8989

90-
times: str = attrs.field(kw_only=True, default=None, metadata={
90+
times: int = attrs.field(kw_only=True, default=None, metadata={
9191
'_aapi_repr_': 'Times'})
9292
every: str = attrs.field(kw_only=True, default=None, metadata={
9393
'_aapi_repr_': 'Every'})
@@ -105,7 +105,7 @@ class From(enum.Enum):
105105
End = "End"
106106
Target = "Target"
107107

108-
times: str = attrs.field(kw_only=True, default=None, metadata={
108+
times: int = attrs.field(kw_only=True, default=None, metadata={
109109
'_aapi_repr_': 'Times'})
110110
intervals: typing.List[str] = attrs.field(
111111
kw_only=True, default=None, metadata={'_aapi_repr_': 'Intervals'})
@@ -115,7 +115,7 @@ class From(enum.Enum):
115115
@attrs.define
116116
class RerunSpecificTimes(AAPIObject):
117117

118-
times: str = attrs.field(kw_only=True, default=None, metadata={
118+
times: int = attrs.field(kw_only=True, default=None, metadata={
119119
'_aapi_repr_': 'Times'})
120120
at: typing.List[str] = attrs.field(
121121
kw_only=True, default=None, metadata={'_aapi_repr_': 'At'})
@@ -369,7 +369,7 @@ class JobFileWatcher(Job):
369369
'_aapi_repr_': 'Type', '_type_aapi_': 'Job:FileWatcher'})
370370
object_name: str = attrs.field(metadata={'_aapi_name_': True})
371371
path: str = attrs.field(metadata={'_aapi_repr_': 'Path'})
372-
search_interval: str = attrs.field(kw_only=True, default=None, metadata={
372+
search_interval: int = attrs.field(kw_only=True, default=None, metadata={
373373
'_aapi_repr_': 'SearchInterval'})
374374
time_limit: str = attrs.field(kw_only=True, default=None, metadata={
375375
'_aapi_repr_': 'TimeLimit'})
@@ -736,7 +736,7 @@ class JobFileTransfer(Job):
736736
'_aapi_repr_': 'EndJobNOTOK'})
737737
rerun_from_point_of_failure: bool = attrs.field(
738738
kw_only=True, default=None, metadata={'_aapi_repr_': 'RerunFromPointOfFailure'})
739-
number_of_retries: str = attrs.field(kw_only=True, default=None, metadata={
739+
number_of_retries: int = attrs.field(kw_only=True, default=None, metadata={
740740
'_aapi_repr_': 'NumberOfRetries'})
741741

742742

@@ -920,7 +920,7 @@ class JobHadoopHDFSFileWatcher(JobHadoop):
920920
object_name: str = attrs.field(metadata={'_aapi_name_': True})
921921
hdfs_file_path: str = attrs.field(kw_only=True, default=None, metadata={
922922
'_aapi_repr_': 'HdfsFilePath'})
923-
min_detected_size: str = attrs.field(kw_only=True, default=None, metadata={
923+
min_detected_size: int = attrs.field(kw_only=True, default=None, metadata={
924924
'_aapi_repr_': 'MinDetecedSize'})
925925
max_wait_time: str = attrs.field(kw_only=True, default=None, metadata={
926926
'_aapi_repr_': 'MaxWaitTime'})
@@ -1329,7 +1329,7 @@ class Action(enum.Enum):
13291329
'_aapi_repr_': 'Action'})
13301330
device: str = attrs.field(kw_only=True, default=None, metadata={
13311331
'_aapi_repr_': 'Device'})
1332-
batch_time_limit: str = attrs.field(kw_only=True, default=None, metadata={
1332+
batch_time_limit: int = attrs.field(kw_only=True, default=None, metadata={
13331333
'_aapi_repr_': 'BatchTimeLimit '})
13341334
command: str = attrs.field(kw_only=True, default=None, metadata={
13351335
'_aapi_repr_': 'command '})
@@ -2408,7 +2408,7 @@ class JobVMwareConfigurationReconfigureVirtualMachine(JobVMwareConfiguration):
24082408
_type: str = attrs.field(init=False, default='Job:VMware:Configuration:ReconfigureVirtualMachine', metadata={
24092409
'_aapi_repr_': 'Type', '_type_aapi_': 'Job:VMware:Configuration:ReconfigureVirtualMachine'})
24102410
object_name: str = attrs.field(metadata={'_aapi_name_': True})
2411-
number_of_cpus: str = attrs.field(
2411+
number_of_cpus: int = attrs.field(
24122412
metadata={'_aapi_repr_': 'NumberOfCPUs'})
24132413

24142414

@@ -2450,7 +2450,7 @@ class RequestType(enum.Enum):
24502450
'_aapi_repr_': 'OverrideUrlEndpoint'})
24512451
override_content_type: str = attrs.field(kw_only=True, default=None, metadata={
24522452
'_aapi_repr_': 'OverrideContentType'})
2453-
http_connection_timeout: str = attrs.field(kw_only=True, default=None, metadata={
2453+
http_connection_timeout: int = attrs.field(kw_only=True, default=None, metadata={
24542454
'_aapi_repr_': 'HttpConnectionTimeout'})
24552455
preemptive_http_authentication: str = attrs.field(
24562456
kw_only=True, default=None, metadata={'_aapi_repr_': 'PreemptiveHttpAuthentication'})

src/aapi/utils/converter/registry.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,18 @@ def hook(data, _):
5353
kwargs[field_name] = structured_list
5454
else:
5555
kwargs[field_name] = value # fallback for plain lists
56-
5756
else:
58-
kwargs[field_name] = value # assign simple fields as-is
57+
# Add type conversion for simple fields
58+
if field_type == int and isinstance(value, str) and value.isdigit():
59+
kwargs[field_name] = int(value)
60+
elif field_type == float and isinstance(value, str):
61+
try:
62+
kwargs[field_name] = float(value)
63+
except ValueError:
64+
kwargs[field_name] = value
65+
66+
else:
67+
kwargs[field_name] = value # assign simple fields as-is
5968

6069
except Exception:
6170
kwargs[field_name] = value # fallback on failure to deserialize

0 commit comments

Comments
 (0)