@property<EOL><INDENT>def _artifact_base(self):<DEDENT>
if '<STR_LIT>' not in self._memo:<EOL><INDENT>for artifact in self._artifacts:<EOL><INDENT>if self.re_target.search(artifact['<STR_LIT:name>']) is not None:<EOL><INDENT>artifact_base = os.path.splitext(artifact['<STR_LIT:name>'])[<NUM_LIT:0>]<EOL>break<EOL><DEDENT><DEDENT>else:<EOL><INDENT>raise FetcherException('<STR_LIT>')<EOL><DEDENT>self._memo['<STR_LIT>'] = artifact_base<EOL><DEDENT>return self._memo['<STR_LIT>']<EOL>
Build the artifact basename
Builds are base.tar.bz2, info is base.json, shell is base.jsshell.zip...