items = ['a', 'b', 'c']
result = '-'.join(*[items])
assert result == 'a-b-c', f'join with *args: {result}'
parts = ['hello', 'world']
result = ' '.join(*[parts])
assert result == 'hello world', f'join with *args list: {result}'
result = '-'.join(*[[]])
assert result == '', f'join with empty *args: {result}'
empty = []
result = '-'.join(*[empty])
assert result == '', f'join with empty list via *args: {result}'
values = ('x', 'y', 'z')
result = '|'.join(*[list(values)])
assert result == 'x|y|z', f'join with tuple *args: {result}'
s = 'hello world'
args = ('o', 'O')
result = s.replace(*args)
assert result == 'hellO wOrld', f'replace with *args: {result}'
count_args = ('l',)
result = s.count(*count_args)
assert result == 3, f'count with *args: {result}'
my_list = [1, 2, 3]
append_args = [4]
my_list.append(*append_args)
assert my_list == [1, 2, 3, 4], f'append with *args: {my_list}'
my_list = [1, 2, 3]
extend_args = [[4, 5]]
my_list.extend(*extend_args)
assert my_list == [1, 2, 3, 4, 5], f'extend with *args: {my_list}'
my_list = [1, 2, 3]
insert_args = (1, 'x')
my_list.insert(*insert_args)
assert my_list == [1, 'x', 2, 3], f'insert with *args: {my_list}'
d = {'a': 1, 'b': 2}
get_args = ('a',)
result = d.get(*get_args)
assert result == 1, f'dict.get with *args: {result}'
get_args_default = ('missing', 'default')
result = d.get(*get_args_default)
assert result == 'default', f'dict.get with *args and default: {result}'
my_list = [1, 2, 3]
extra_args = ('y',)
my_list.insert(0, *extra_args)
assert my_list == ['y', 1, 2, 3], f'insert with pos and *args: {my_list}'
d = {'a': 1}
args = ('b', 2)
result = d.setdefault(*args)
assert result == 2, f'setdefault with *args: {result}'
assert d == {'a': 1, 'b': 2}, f'dict after setdefault: {d}'
d = {'a': 1, 'b': 2}
pop_args = ('a',)
result = d.pop(*pop_args)
assert result == 1, f'pop with *args: {result}'
assert d == {'b': 2}, f'dict after pop: {d}'
pop_args_default = ('missing', 'default')
result = d.pop(*pop_args_default)
assert result == 'default', f'pop with *args and default: {result}'
s = 'a,b,c,d'
split_args = (',',)
result = s.split(*split_args)
assert result == ['a', 'b', 'c', 'd'], f'split with *args: {result}'
split_args_maxsplit = (',', 2)
result = s.split(*split_args_maxsplit)
assert result == ['a', 'b', 'c,d'], f'split with *args maxsplit: {result}'
s = 'hello'
startswith_args = (('hel', 'hey'),)
result = s.startswith(*startswith_args)
assert result == True, f'startswith with *args tuple: {result}'
endswith_args = ('lo',)
result = s.endswith(*endswith_args)
assert result == True, f'endswith with *args: {result}'
my_list = [1, 2, 3, 2, 4]
index_args = (2,)
result = my_list.index(*index_args)
assert result == 1, f'index with *args: {result}'
index_args_start = (2, 2)
result = my_list.index(*index_args_start)
assert result == 3, f'index with *args and start: {result}'
s = 'hello hello'
find_args = ('hello',)
result = s.find(*find_args)
assert result == 0, f'find with *args: {result}'
find_args_start = ('hello', 1)
result = s.find(*find_args_start)
assert result == 6, f'find with *args and start: {result}'
d = {'a': 1}
opts = {'b': 2, 'c': 3}
d.update(**opts)
assert d == {'a': 1, 'b': 2, 'c': 3}, f'update with **kwargs: {d}'
d = {'a': 1}
empty_opts = {}
d.update(**empty_opts)
assert d == {'a': 1}, f'update with empty **kwargs: {d}'
d = {}
str_opts = {'key1': 'value1', 'key2': 'value2'}
d.update(**str_opts)
assert d == {'key1': 'value1', 'key2': 'value2'}, f'update with string **kwargs: {d}'
d = {}
list_val = [1, 2, 3]
dict_val = {'nested': True}
heap_opts = {'list': list_val, 'dict': dict_val}
d.update(**heap_opts)
assert d['list'] == [1, 2, 3], f'update with list value: {d}'
assert d['dict'] == {'nested': True}, f'update with dict value: {d}'
d = {'a': 1}
opts1 = {'b': 2}
opts2 = {'c': 3}
d.update(**opts1)
d.update(**opts2)
assert d == {'a': 1, 'b': 2, 'c': 3}, f'multiple updates with **kwargs: {d}'
d = {'a': 1, 'b': 2}
override_opts = {'b': 'new', 'c': 3}
d.update(**override_opts)
assert d == {'a': 1, 'b': 'new', 'c': 3}, f'update overwriting with **kwargs: {d}'
d = {'a': 1}
pos_update = {'b': 2}
kw_update = {'c': 3}
d.update(pos_update, **kw_update)
assert d == {'a': 1, 'b': 2, 'c': 3}, f'update with pos and **kwargs: {d}'
d = {'a': 1}
args_tuple = ({'x': 10},)
d.update(*args_tuple)
assert d == {'a': 1, 'x': 10}, f'update with *args tuple: {d}'
d = {}
pos_dict = {'a': 1}
kw_opts = {'b': 2}
d.update(*[pos_dict], **kw_opts)
assert d == {'a': 1, 'b': 2}, f'update with *args and **kwargs: {d}'
d = {}
extra_opts = {'c': 3}
d.update(a=1, b=2, **extra_opts)
assert d == {'a': 1, 'b': 2, 'c': 3}, f'update with regular kwargs and **kwargs: {d}'
d = {}
d.update(x=10, y=20)
assert d == {'x': 10, 'y': 20}, f'update with regular kwargs only: {d}'
d = {'existing': 0}
pos_update = {'a': 1}
extra = {'d': 4}
d.update(pos_update, b=2, c=3, **extra)
assert d == {'existing': 0, 'a': 1, 'b': 2, 'c': 3, 'd': 4}, f'update with pos, kwargs, **kwargs: {d}'
d = {}
empty_extra = {}
d.update(x=1, **empty_extra)
assert d == {'x': 1}, f'update with kwargs and empty **kwargs: {d}'
d = {}
extra = {'b': 'from_dict'}
d.update(a='original', **extra)
assert d == {'a': 'original', 'b': 'from_dict'}, f'update with different kwargs: {d}'
d = {}
d.update(**{'a': 1}, **{'b': 2})
assert d == {'a': 1, 'b': 2}, f'update with multiple **kwargs: {d}'
d = {'x': 0}
d.update(**{'a': 1}, **{'b': 2}, **{'c': 3})
assert d == {'x': 0, 'a': 1, 'b': 2, 'c': 3}, f'update with three **kwargs: {d}'
d = {}
d.update(a=1, **{'b': 2}, **{'c': 3})
assert d == {'a': 1, 'b': 2, 'c': 3}, f'update named + multiple **kwargs: {d}'
my_list = [2, 3]
my_list.insert(*[0], 1)
assert my_list == [1, 2, 3]
my_list2 = ['a', 'b', 'c', 'd']
my_list2.insert(*[1], 'x')
assert my_list2 == ['a', 'x', 'b', 'c', 'd']
d = {}
d.update(*[{}], **{'a': 1}, **{'b': 2})
assert d == {'a': 1, 'b': 2}