api/play_on: module names can contain `.` now
This snippet can help us:
class Phantom(object):
def __init__(self, parent, prefix):
self.prefix = prefix
self.parent = parent
def __getattr__(self, name):
return Phantom(self.parent, f"{self.prefix}.{name}")
def __call__(self, *args, **kwds):
self.parent.tasks.append({self.prefix: kwds})
class Play:
def __init__(self):
self.tasks = []
def __getattr__(self, name: str):
return Phantom(self, name)
p = Play()
p.b.c.d(key="1")
p.community.general.docker_container(name="plop", image="ubuntu")
print(p.tasks)
# [{'b.c.d': {'key': '1'}}, {'community.general.docker_container': {'name': 'plop', 'image': 'ubuntu'}}]