Skip to content

Commit 9c204c0

Browse files
author
Juan Tirado
committed
Parse assume directives.
1 parent bd9490d commit 9c204c0

1 file changed

Lines changed: 26 additions & 8 deletions

File tree

juju/client/facade.py

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,13 @@
77
import re
88
import textwrap
99
import typing
10-
import typing_inspect
1110
from collections import defaultdict
1211
from glob import glob
1312
from pathlib import Path
1413
from typing import Any, Mapping, Sequence, TypeVar
1514

15+
import typing_inspect
16+
1617
from . import codegen
1718

1819
_marker = object()
@@ -664,14 +665,31 @@ def from_json(cls, data):
664665
data = json.loads(data)
665666
except json.JSONDecodeError:
666667
raise
667-
d = {}
668-
for k, v in (data or {}).items():
669-
d[cls._toPy.get(k, k)] = v
670-
671-
try:
668+
if isinstance(data, dict):
669+
d = {}
670+
for k, v in (data or {}).items():
671+
d[cls._toPy.get(k, k)] = v
672+
try:
673+
return cls(**d)
674+
except TypeError:
675+
raise
676+
if isinstance(data, list):
677+
# WARNING: not tested with any-all
678+
# check: https://juju.is/docs/sdk/assumes
679+
# assumes are in the form of a list
680+
d = {}
681+
for entry in data:
682+
if '>' or '>=' in entry:
683+
# something like juju >= 2.9.31
684+
i = entry.index('>')
685+
key = entry[:i].strip()
686+
value = entry[i:].strip()
687+
d[key] = value
688+
else:
689+
# something like k8s-api
690+
d[entry]=''
672691
return cls(**d)
673-
except TypeError:
674-
raise
692+
return None
675693

676694
def serialize(self):
677695
d = {}

0 commit comments

Comments
 (0)