MCPcopy Index your code
hub / github.com/python/cpython / _getmember

Method _getmember

Lib/tarfile.py:2909–2947  ·  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

2907 # Little helper methods:
2908
2909 def _getmember(self, name, tarinfo=None, normalize=False):
2910 """Find an archive member by name from bottom to top.
2911 If tarinfo is given, it is used as the starting point.
2912 """
2913 # Ensure that all members have been loaded.
2914 members = self.getmembers()
2915
2916 # Limit the member search list up to tarinfo.
2917 skipping = False
2918 if tarinfo is not None:
2919 try:
2920 index = members.index(tarinfo)
2921 except ValueError:
2922 # The given starting point might be a (modified) copy.
2923 # We'll later skip members until we find an equivalent.
2924 skipping = True
2925 else:
2926 # Happy fast path
2927 members = members[:index]
2928
2929 if normalize:
2930 name = os.path.normpath(name)
2931
2932 for member in reversed(members):
2933 if skipping:
2934 if tarinfo.offset == member.offset:
2935 skipping = False
2936 continue
2937 if normalize:
2938 member_name = os.path.normpath(member.name)
2939 else:
2940 member_name = member.name
2941
2942 if name == member_name:
2943 return member
2944
2945 if skipping:
2946 # Starting point was not found
2947 raise ValueError(tarinfo)
2948
2949 def _load(self):
2950 """Read through the entire archive file and look for readable

Callers 2

getmemberMethod · 0.95
_find_link_targetMethod · 0.95

Calls 2

getmembersMethod · 0.95
indexMethod · 0.45

Tested by

no test coverage detected