def __init__(self, filename):<EOL>
wheel_info = self.wheel_file_re.match(filename)<EOL>if not wheel_info:<EOL><INDENT>raise InvalidWheelFilename(<EOL>"<STR_LIT>" % filename<EOL>)<EOL><DEDENT>self.filename = filename<EOL>self.name = wheel_info.group('<STR_LIT:name>').replace('<STR_LIT:_>', '<STR_LIT:->')<EOL>self.version = wheel_info.group('<STR_LIT>').replace('<STR_LIT:_>', '<STR_LIT:->')<EOL>self.build_tag = wheel_info.group('<STR_LIT>')<EOL>self.pyversions = wheel_info.group('<STR_LIT>').split('<STR_LIT:.>')<EOL>self.abis = wheel_info.group('<STR_LIT>').split('<STR_LIT:.>')<EOL>self.plats = wheel_info.group('<STR_LIT>').split('<STR_LIT:.>')<EOL>self.file_tags = {<EOL>(x, y, z) for x in self.pyversions<EOL>for y in self.abis for z in self.plats<EOL>}<EOL>
:raises InvalidWheelFilename: when the filename is invalid for a wheel