Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_dicts_are_converted_to_tables():
t = item({"foo": {"bar": "baz"}})
assert (
t.as_string()
== """[foo]
bar = "baz"
def test_strings_behave_like_strs():
i = item("foo")
assert i == "foo"
assert i.as_string() == '"foo"'
i += " bar"
assert i == "foo bar"
assert i.as_string() == '"foo bar"'
i += " é"
assert i == "foo bar é"
assert i.as_string() == '"foo bar é"'
doc = parse('str = "foo" # Comment')
doc["str"] += " bar"
assert doc.as_string() == 'str = "foo bar" # Comment'
def test_array_behaves_like_a_list():
a = item([1, 2])
assert a == [1, 2]
assert a.as_string() == "[1, 2]"
a += [3, 4]
assert a == [1, 2, 3, 4]
assert a.as_string() == "[1, 2, 3, 4]"
del a[2]
assert a == [1, 2, 4]
assert a.as_string() == "[1, 2, 4]"
del a[-1]
assert a == [1, 2]
assert a.as_string() == "[1, 2]"
n = item(12)
s = pickle.dumps(n)
assert pickle.loads(s).as_string() == "12"
n = item(12.34)
s = pickle.dumps(n)
assert pickle.loads(s).as_string() == "12.34"
n = item(True)
s = pickle.dumps(n)
assert pickle.loads(s).as_string() == "true"
n = item(datetime(2018, 10, 11, 12, 34, 56, 123456))
s = pickle.dumps(n)
assert pickle.loads(s).as_string() == "2018-10-11T12:34:56.123456"
n = item(date(2018, 10, 11))
s = pickle.dumps(n)
assert pickle.loads(s).as_string() == "2018-10-11"
n = item(time(12, 34, 56, 123456))
s = pickle.dumps(n)
assert pickle.loads(s).as_string() == "12:34:56.123456"
n = item([1, 2, 3])
def dict_path_exit(path, key, old_parent, new_parent, new_items):
ret = new_parent
if isinstance(new_parent, (Mapping, dict)):
vals = dict(new_items)
try:
new_parent.update(new_items)
except AttributeError:
# Handle toml containers specifically
try:
new_parent.update(vals)
# Now use default fallback if needed
except AttributeError:
ret = new_parent.__class__(vals)
elif isinstance(new_parent, tomlkit.items.Array):
vals = tomlkit.items.item([v for i, v in new_items])
try:
new_parent._value.extend(vals._value)
except AttributeError:
ret = tomlkit.items.item(vals)
elif isinstance(new_parent, (Sequence, list)):
vals = [v for i, v in new_items]
try:
new_parent.extend(vals)
except AttributeError:
ret = new_parent.__class__(vals) # tuples
elif isinstance(new_parent, (Set, set)):
vals = [v for i, v in new_items]
try:
new_parent.update(vals)
except AttributeError:
ret = new_parent.__class__(vals) # frozensets
def integer(raw): # type: (str) -> Integer
return item(int(raw))
def boolean(raw): # type: (str) -> Bool
return item(raw == "true")
vals = dict(new_items)
try:
new_parent.update(new_items)
except AttributeError:
# Handle toml containers specifically
try:
new_parent.update(vals)
# Now use default fallback if needed
except AttributeError:
ret = new_parent.__class__(vals)
elif isinstance(new_parent, tomlkit.items.Array):
vals = tomlkit.items.item([v for i, v in new_items])
try:
new_parent._value.extend(vals._value)
except AttributeError:
ret = tomlkit.items.item(vals)
elif isinstance(new_parent, (Sequence, list)):
vals = [v for i, v in new_items]
try:
new_parent.extend(vals)
except AttributeError:
ret = new_parent.__class__(vals) # tuples
elif isinstance(new_parent, (Set, set)):
vals = [v for i, v in new_items]
try:
new_parent.update(vals)
except AttributeError:
ret = new_parent.__class__(vals) # frozensets
else:
raise RuntimeError("unexpected iterable type: %r" % type(new_parent))
return ret
def float_(raw): # type: (str) -> Float
return item(float(raw))