MCPcopy Create free account
hub / github.com/RT-Thread/env-windows / _getmember

Method _getmember

tools/python-3.11.9-amd64/Lib/tarfile.py:2648–2686  ·  view source on GitHub ↗

Find an archive member by name from bottom to top. If tarinfo is given, it is used as the starting point.

(self, name, tarinfo=None, normalize=False)

Source from the content-addressed store, hash-verified

2646 # Little helper methods:
2647
2648 def _getmember(self, name, tarinfo=None, normalize=False):
2649 """Find an archive member by name from bottom to top.
2650 If tarinfo is given, it is used as the starting point.
2651 """
2652 # Ensure that all members have been loaded.
2653 members = self.getmembers()
2654
2655 # Limit the member search list up to tarinfo.
2656 skipping = False
2657 if tarinfo is not None:
2658 try:
2659 index = members.index(tarinfo)
2660 except ValueError:
2661 # The given starting point might be a (modified) copy.
2662 # We'll later skip members until we find an equivalent.
2663 skipping = True
2664 else:
2665 # Happy fast path
2666 members = members[:index]
2667
2668 if normalize:
2669 name = os.path.normpath(name)
2670
2671 for member in reversed(members):
2672 if skipping:
2673 if tarinfo.offset == member.offset:
2674 skipping = False
2675 continue
2676 if normalize:
2677 member_name = os.path.normpath(member.name)
2678 else:
2679 member_name = member.name
2680
2681 if name == member_name:
2682 return member
2683
2684 if skipping:
2685 # Starting point was not found
2686 raise ValueError(tarinfo)
2687
2688 def _load(self):
2689 """Read through the entire archive file and look for readable

Callers 3

getmemberMethod · 0.95
_find_link_targetMethod · 0.95
_resolve_tar_file_or_dirFunction · 0.80

Calls 2

getmembersMethod · 0.95
indexMethod · 0.45

Tested by

no test coverage detected