def get_file_list(self): self._get_file_list() manifest_filelist = self.filelist source_filelist = FileList() allfiles = self.filelist.allfiles if allfiles: source_filelist.set_allfiles(allfiles) else: source_filelist.findall() source_filelist.extend(source_filelist.allfiles) # Check for template (usually "MANIFEST.in") if os.path.isfile(self.template): template = TextFile(self.template, strip_comments=1, skip_blanks=1, join_lines=1, lstrip_ws=1, rstrip_ws=1, collapse_join=1) while 1: line = template.readline() if line is None: # end of file break try: source_filelist.process_template_line(line) except DistutilsTemplateError: # Already been warned by "real" filelist pass if self.prune: try: self.filelist = source_filelist self.prune_file_list() finally: self.filelist = manifest_filelist source_filelist.sort() source_filelist.remove_duplicates() # Ensure file paths are formatted the same # This removes any dot-slashes and converts all slashes to # OS-specific separators. manifest = set(map(os.path.normpath, manifest_filelist.files)) missing = False for filename in imap(os.path.normpath, source_filelist.files): if filename not in manifest: self.warn('missing from source distribution: %s' % filename) missing = True if missing: raw_input('WARNING: Not all source files in distribution! ' ' Press <Enter> to continue.')
def test_include_pattern(self): file_list = FileList() file_list.set_allfiles([]) self.assertFalse(file_list.include_pattern('*.py')) file_list = FileList() file_list.set_allfiles(['a.py', 'b.txt']) self.assertTrue(file_list.include_pattern('*.py')) file_list = FileList() self.assertIsNone(file_list.allfiles) file_list.set_allfiles(['a.py', 'b.txt']) file_list.include_pattern('*') self.assertEqual(file_list.allfiles, ['a.py', 'b.txt'])
def test_include_pattern(self): file_list = FileList() file_list.set_allfiles([]) self.assertFalse(file_list.include_pattern("*.py")) file_list = FileList() file_list.set_allfiles(["a.py", "b.txt"]) self.assertTrue(file_list.include_pattern("*.py")) file_list = FileList() self.assertIsNone(file_list.allfiles) file_list.set_allfiles(["a.py", "b.txt"]) file_list.include_pattern("*") self.assertEqual(file_list.allfiles, ["a.py", "b.txt"])
def test_include_pattern(self): # return False if no match file_list = FileList() file_list.set_allfiles([]) self.assertFalse(file_list.include_pattern('*.py')) # return True if files match file_list = FileList() file_list.set_allfiles(['a.py', 'b.txt']) self.assertTrue(file_list.include_pattern('*.py')) # test * matches all files file_list = FileList() self.assertIsNone(file_list.allfiles) file_list.set_allfiles(['a.py', 'b.txt']) file_list.include_pattern('*') self.assertEqual(file_list.allfiles, ['a.py', 'b.txt'])
def test_process_template(self): l = make_local_path # invalid lines file_list = FileList() for action in ('include', 'exclude', 'global-include', 'global-exclude', 'recursive-include', 'recursive-exclude', 'graft', 'prune', 'blarg'): self.assertRaises(DistutilsTemplateError, file_list.process_template_line, action) # include file_list = FileList() file_list.set_allfiles(['a.py', 'b.txt', l('d/c.py')]) file_list.process_template_line('include *.py') self.assertEqual(file_list.files, ['a.py']) self.assertNoWarnings() file_list.process_template_line('include *.rb') self.assertEqual(file_list.files, ['a.py']) self.assertWarnings() # exclude file_list = FileList() file_list.files = ['a.py', 'b.txt', l('d/c.py')] file_list.process_template_line('exclude *.py') self.assertEqual(file_list.files, ['b.txt', l('d/c.py')]) self.assertNoWarnings() file_list.process_template_line('exclude *.rb') self.assertEqual(file_list.files, ['b.txt', l('d/c.py')]) self.assertWarnings() # global-include file_list = FileList() file_list.set_allfiles(['a.py', 'b.txt', l('d/c.py')]) file_list.process_template_line('global-include *.py') self.assertEqual(file_list.files, ['a.py', l('d/c.py')]) self.assertNoWarnings() file_list.process_template_line('global-include *.rb') self.assertEqual(file_list.files, ['a.py', l('d/c.py')]) self.assertWarnings() # global-exclude file_list = FileList() file_list.files = ['a.py', 'b.txt', l('d/c.py')] file_list.process_template_line('global-exclude *.py') self.assertEqual(file_list.files, ['b.txt']) self.assertNoWarnings() file_list.process_template_line('global-exclude *.rb') self.assertEqual(file_list.files, ['b.txt']) self.assertWarnings() # recursive-include file_list = FileList() file_list.set_allfiles( ['a.py', l('d/b.py'), l('d/c.txt'), l('d/d/e.py')]) file_list.process_template_line('recursive-include d *.py') self.assertEqual(file_list.files, [l('d/b.py'), l('d/d/e.py')]) self.assertNoWarnings() file_list.process_template_line('recursive-include e *.py') self.assertEqual(file_list.files, [l('d/b.py'), l('d/d/e.py')]) self.assertWarnings() # recursive-exclude file_list = FileList() file_list.files = ['a.py', l('d/b.py'), l('d/c.txt'), l('d/d/e.py')] file_list.process_template_line('recursive-exclude d *.py') self.assertEqual(file_list.files, ['a.py', l('d/c.txt')]) self.assertNoWarnings() file_list.process_template_line('recursive-exclude e *.py') self.assertEqual(file_list.files, ['a.py', l('d/c.txt')]) self.assertWarnings() # graft file_list = FileList() file_list.set_allfiles( ['a.py', l('d/b.py'), l('d/d/e.py'), l('f/f.py')]) file_list.process_template_line('graft d') self.assertEqual(file_list.files, [l('d/b.py'), l('d/d/e.py')]) self.assertNoWarnings() file_list.process_template_line('graft e') self.assertEqual(file_list.files, [l('d/b.py'), l('d/d/e.py')]) self.assertWarnings() # prune file_list = FileList() file_list.files = ['a.py', l('d/b.py'), l('d/d/e.py'), l('f/f.py')] file_list.process_template_line('prune d') self.assertEqual(file_list.files, ['a.py', l('f/f.py')]) self.assertNoWarnings() file_list.process_template_line('prune e') self.assertEqual(file_list.files, ['a.py', l('f/f.py')]) self.assertWarnings()
def test_set_allfiles(self): file_list = FileList() files = ['a', 'b', 'c'] file_list.set_allfiles(files) self.assertEqual(file_list.allfiles, files)
def test_process_template(self): l = make_local_path # invalid lines file_list = FileList() for action in ('include', 'exclude', 'global-include', 'global-exclude', 'recursive-include', 'recursive-exclude', 'graft', 'prune', 'blarg'): self.assertRaises(DistutilsTemplateError, file_list.process_template_line, action) # include file_list = FileList() file_list.set_allfiles(['a.py', 'b.txt', l('d/c.py')]) file_list.process_template_line('include *.py') self.assertEqual(file_list.files, ['a.py']) self.assertNoWarnings() file_list.process_template_line('include *.rb') self.assertEqual(file_list.files, ['a.py']) self.assertWarnings() # exclude file_list = FileList() file_list.files = ['a.py', 'b.txt', l('d/c.py')] file_list.process_template_line('exclude *.py') self.assertEqual(file_list.files, ['b.txt', l('d/c.py')]) self.assertNoWarnings() file_list.process_template_line('exclude *.rb') self.assertEqual(file_list.files, ['b.txt', l('d/c.py')]) self.assertWarnings() # global-include file_list = FileList() file_list.set_allfiles(['a.py', 'b.txt', l('d/c.py')]) file_list.process_template_line('global-include *.py') self.assertEqual(file_list.files, ['a.py', l('d/c.py')]) self.assertNoWarnings() file_list.process_template_line('global-include *.rb') self.assertEqual(file_list.files, ['a.py', l('d/c.py')]) self.assertWarnings() # global-exclude file_list = FileList() file_list.files = ['a.py', 'b.txt', l('d/c.py')] file_list.process_template_line('global-exclude *.py') self.assertEqual(file_list.files, ['b.txt']) self.assertNoWarnings() file_list.process_template_line('global-exclude *.rb') self.assertEqual(file_list.files, ['b.txt']) self.assertWarnings() # recursive-include file_list = FileList() file_list.set_allfiles(['a.py', l('d/b.py'), l('d/c.txt'), l('d/d/e.py')]) file_list.process_template_line('recursive-include d *.py') self.assertEqual(file_list.files, [l('d/b.py'), l('d/d/e.py')]) self.assertNoWarnings() file_list.process_template_line('recursive-include e *.py') self.assertEqual(file_list.files, [l('d/b.py'), l('d/d/e.py')]) self.assertWarnings() # recursive-exclude file_list = FileList() file_list.files = ['a.py', l('d/b.py'), l('d/c.txt'), l('d/d/e.py')] file_list.process_template_line('recursive-exclude d *.py') self.assertEqual(file_list.files, ['a.py', l('d/c.txt')]) self.assertNoWarnings() file_list.process_template_line('recursive-exclude e *.py') self.assertEqual(file_list.files, ['a.py', l('d/c.txt')]) self.assertWarnings() # graft file_list = FileList() file_list.set_allfiles(['a.py', l('d/b.py'), l('d/d/e.py'), l('f/f.py')]) file_list.process_template_line('graft d') self.assertEqual(file_list.files, [l('d/b.py'), l('d/d/e.py')]) self.assertNoWarnings() file_list.process_template_line('graft e') self.assertEqual(file_list.files, [l('d/b.py'), l('d/d/e.py')]) self.assertWarnings() # prune file_list = FileList() file_list.files = ['a.py', l('d/b.py'), l('d/d/e.py'), l('f/f.py')] file_list.process_template_line('prune d') self.assertEqual(file_list.files, ['a.py', l('f/f.py')]) self.assertNoWarnings() file_list.process_template_line('prune e') self.assertEqual(file_list.files, ['a.py', l('f/f.py')]) self.assertWarnings()
def test_set_allfiles(self): file_list = FileList() files = ["a", "b", "c"] file_list.set_allfiles(files) self.assertEqual(file_list.allfiles, files)
def test_process_template(self): l = make_local_path file_list = FileList() for action in ( "include", "exclude", "global-include", "global-exclude", "recursive-include", "recursive-exclude", "graft", "prune", "blarg", ): self.assertRaises(DistutilsTemplateError, file_list.process_template_line, action) file_list = FileList() file_list.set_allfiles(["a.py", "b.txt", l("d/c.py")]) file_list.process_template_line("include *.py") self.assertEqual(file_list.files, ["a.py"]) self.assertNoWarnings() file_list.process_template_line("include *.rb") self.assertEqual(file_list.files, ["a.py"]) self.assertWarnings() file_list = FileList() file_list.files = ["a.py", "b.txt", l("d/c.py")] file_list.process_template_line("exclude *.py") self.assertEqual(file_list.files, ["b.txt", l("d/c.py")]) self.assertNoWarnings() file_list.process_template_line("exclude *.rb") self.assertEqual(file_list.files, ["b.txt", l("d/c.py")]) self.assertWarnings() file_list = FileList() file_list.set_allfiles(["a.py", "b.txt", l("d/c.py")]) file_list.process_template_line("global-include *.py") self.assertEqual(file_list.files, ["a.py", l("d/c.py")]) self.assertNoWarnings() file_list.process_template_line("global-include *.rb") self.assertEqual(file_list.files, ["a.py", l("d/c.py")]) self.assertWarnings() file_list = FileList() file_list.files = ["a.py", "b.txt", l("d/c.py")] file_list.process_template_line("global-exclude *.py") self.assertEqual(file_list.files, ["b.txt"]) self.assertNoWarnings() file_list.process_template_line("global-exclude *.rb") self.assertEqual(file_list.files, ["b.txt"]) self.assertWarnings() file_list = FileList() file_list.set_allfiles(["a.py", l("d/b.py"), l("d/c.txt"), l("d/d/e.py")]) file_list.process_template_line("recursive-include d *.py") self.assertEqual(file_list.files, [l("d/b.py"), l("d/d/e.py")]) self.assertNoWarnings() file_list.process_template_line("recursive-include e *.py") self.assertEqual(file_list.files, [l("d/b.py"), l("d/d/e.py")]) self.assertWarnings() file_list = FileList() file_list.files = ["a.py", l("d/b.py"), l("d/c.txt"), l("d/d/e.py")] file_list.process_template_line("recursive-exclude d *.py") self.assertEqual(file_list.files, ["a.py", l("d/c.txt")]) self.assertNoWarnings() file_list.process_template_line("recursive-exclude e *.py") self.assertEqual(file_list.files, ["a.py", l("d/c.txt")]) self.assertWarnings() file_list = FileList() file_list.set_allfiles(["a.py", l("d/b.py"), l("d/d/e.py"), l("f/f.py")]) file_list.process_template_line("graft d") self.assertEqual(file_list.files, [l("d/b.py"), l("d/d/e.py")]) self.assertNoWarnings() file_list.process_template_line("graft e") self.assertEqual(file_list.files, [l("d/b.py"), l("d/d/e.py")]) self.assertWarnings() file_list = FileList() file_list.files = ["a.py", l("d/b.py"), l("d/d/e.py"), l("f/f.py")] file_list.process_template_line("prune d") self.assertEqual(file_list.files, ["a.py", l("f/f.py")]) self.assertNoWarnings() file_list.process_template_line("prune e") self.assertEqual(file_list.files, ["a.py", l("f/f.py")]) self.assertWarnings()
else: path, file = os.path.split(filename) ##print ">> path=%s file=%s" % (path, file) if not path: path = os.curdir if options.recursive: ##print ">> findall" filelist.findall(path) # replace 'file.ext' to './file.ext' # we will matching with '*/wildcard.ext' for i in range(len(filelist.allfiles)): __file = filelist.allfiles[i] if not os.path.isabs(__file): # if not full path, windows or unixx filelist.allfiles[i] = '.' + os.sep + __file else: ##print ">> list", list_files(path) filelist.set_allfiles(list_files(path)) ##print ">> all files", filelist.allfiles ##print ">> pattern", file filelist.include_pattern(file, anchor=0) ##print ">> final list", filelist.files for file in filelist.files: pass_file(file, eater) # write the output if options.outfile == '-': fp = sys.stdout closep = 0 else: if options.outpath: options.outfile = os.path.join(options.outpath, options.outfile)