Example #1
0
    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.')
Example #2
0
    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.')
Example #3
0
 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'])
Example #4
0
 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"])
Example #5
0
    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'])
Example #6
0
    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'])
Example #7
0
    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()
Example #8
0
 def test_set_allfiles(self):
     file_list = FileList()
     files = ['a', 'b', 'c']
     file_list.set_allfiles(files)
     self.assertEqual(file_list.allfiles, files)
Example #9
0
    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()
Example #10
0
 def test_set_allfiles(self):
     file_list = FileList()
     files = ['a', 'b', 'c']
     file_list.set_allfiles(files)
     self.assertEqual(file_list.allfiles, files)
Example #11
0
 def test_set_allfiles(self):
     file_list = FileList()
     files = ["a", "b", "c"]
     file_list.set_allfiles(files)
     self.assertEqual(file_list.allfiles, files)
Example #12
0
    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)