| 5551 | return sorted(set(dir(cls._member_type_)) | interesting) |
| 5552 | |
| 5553 | def member_dir(member): |
| 5554 | if member.__class__._member_type_ is object: |
| 5555 | allowed = set(['__class__', '__doc__', '__eq__', '__hash__', '__module__', 'name', 'value']) |
| 5556 | else: |
| 5557 | allowed = set(dir(member)) |
| 5558 | for cls in member.__class__.mro(): |
| 5559 | for name, obj in cls.__dict__.items(): |
| 5560 | if name[0] == '_': |
| 5561 | continue |
| 5562 | if isinstance(obj, enum.property): |
| 5563 | if obj.fget is not None or name not in member._member_map_: |
| 5564 | allowed.add(name) |
| 5565 | else: |
| 5566 | allowed.discard(name) |
| 5567 | elif name not in member._member_map_: |
| 5568 | allowed.add(name) |
| 5569 | return sorted(allowed) |
| 5570 | |
| 5571 | |
| 5572 | if __name__ == '__main__': |