(self, name)
| 404 | return self.map[key] |
| 405 | |
| 406 | def __getattr__(self, name): |
| 407 | if DEBUG_GETATTR: |
| 408 | print("__getattr__(%s) version: %d" % (name, self.build[VERSION_SDK_PROPERTY]), file=sys.stderr) |
| 409 | print("__getattr__: map = %s" % self.map, file=sys.stderr) |
| 410 | |
| 411 | # NOTE: |
| 412 | # I should try to see if 'name' is a defined method |
| 413 | # but it seems that if I call locals() here an infinite loop is entered |
| 414 | |
| 415 | if name in self.map: |
| 416 | r = self.map[name] |
| 417 | elif name + '()' in self.map: |
| 418 | # the method names are stored in the map with their trailing '()' |
| 419 | r = self.map[name + '()'] |
| 420 | elif name in ['getResourceId', 'resource_id', 'id']: |
| 421 | if DEBUG_GETATTR: |
| 422 | print(" __getattr__: getResourceId", file=sys.stderr) |
| 423 | if 'resource-id' in self.map: |
| 424 | r = self.map['resource-id'] |
| 425 | else: |
| 426 | # Default behavior |
| 427 | raise AttributeError(name) |
| 428 | elif name == 'unique_id': |
| 429 | if 'uniqueId' in self.map: |
| 430 | r = self.map['uniqueId'] |
| 431 | elif 'unique-id' in self.map: |
| 432 | r = self.map['unique_id'] |
| 433 | elif 'unique_id' in self.map: |
| 434 | r = self.map['unique_id'] |
| 435 | else: |
| 436 | # Default behavior |
| 437 | raise AttributeError(name) |
| 438 | elif name == 'content_description': |
| 439 | if 'content_description' in self.map: |
| 440 | r = self.map['content_description'] |
| 441 | elif 'content-desc' in self.map: |
| 442 | r = self.map['content-desc'] |
| 443 | else: |
| 444 | # Default behavior |
| 445 | raise AttributeError(name) |
| 446 | elif name.count("_") > 0: |
| 447 | mangledList = self.allPossibleNamesWithColon(name) |
| 448 | mangledName = self.intersection(mangledList, list(self.map.keys())) |
| 449 | if len(mangledName) > 0 and mangledName[0] in self.map: |
| 450 | r = self.map[mangledName[0]] |
| 451 | else: |
| 452 | # Default behavior |
| 453 | raise AttributeError(name) |
| 454 | elif name.startswith('is'): |
| 455 | # try removing 'is' prefix |
| 456 | if DEBUG_GETATTR: |
| 457 | print(" __getattr__: trying without 'is' prefix", file=sys.stderr) |
| 458 | suffix = name[2:].lower() |
| 459 | if suffix in self.map: |
| 460 | r = self.map[suffix] |
| 461 | else: |
| 462 | # Default behavior |
| 463 | raise AttributeError(name) |
no test coverage detected