| 608 | |
| 609 | |
| 610 | class WorkerInfo(object): |
| 611 | __initialized = False |
| 612 | |
| 613 | def __init__(self, **kwargs): |
| 614 | for k, v in kwargs.items(): |
| 615 | setattr(self, k, v) |
| 616 | self.__keys = tuple(kwargs.keys()) |
| 617 | self.__initialized = True |
| 618 | |
| 619 | def __setattr__(self, key, val): |
| 620 | if self.__initialized: |
| 621 | raise RuntimeError( |
| 622 | "Cannot assign attributes to {} objects".format(self.__class__.__name__) |
| 623 | ) |
| 624 | return super(WorkerInfo, self).__setattr__(key, val) |
| 625 | |
| 626 | def __repr__(self): |
| 627 | items = [] |
| 628 | for k in self.__keys: |
| 629 | items.append("{}={}".format(k, getattr(self, k))) |
| 630 | return "{}({})".format(self.__class__.__name__, ", ".join(items)) |
| 631 | |
| 632 | |
| 633 | def get_worker_info(): |