mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	Fix sdist to always include setup.cfg (#11092), to comply with the spec
This commit is contained in:
		
							parent
							
								
									078368fe4d
								
							
						
					
					
						commit
						7373fccd50
					
				
					 3 changed files with 32 additions and 19 deletions
				
			
		| 
						 | 
				
			
			@ -201,15 +201,20 @@ def get_file_list(self):
 | 
			
		|||
        self.filelist.write(self.manifest)
 | 
			
		||||
 | 
			
		||||
    def add_defaults(self):
 | 
			
		||||
        """Add all the default files to self.filelist:
 | 
			
		||||
          - all pure Python modules mentioned in setup script
 | 
			
		||||
          - all files pointed by package_data (build_py)
 | 
			
		||||
          - all files defined in data_files.
 | 
			
		||||
          - all files defined as scripts.
 | 
			
		||||
          - all C sources listed as part of extensions or C libraries
 | 
			
		||||
            in the setup script (doesn't catch C headers!)
 | 
			
		||||
        Everything is optional.
 | 
			
		||||
        """Add all default files to self.filelist.
 | 
			
		||||
 | 
			
		||||
        In addition to the setup.cfg file, this will include all files returned
 | 
			
		||||
        by the get_source_files of every registered command.  This will find
 | 
			
		||||
        Python modules and packages, data files listed in package_data_,
 | 
			
		||||
        data_files and extra_files, scripts, C sources of extension modules or
 | 
			
		||||
        C libraries (headers are missing).
 | 
			
		||||
        """
 | 
			
		||||
        if os.path.exists('setup.cfg'):
 | 
			
		||||
            self.filelist.append('setup.cfg')
 | 
			
		||||
        else:
 | 
			
		||||
            logger.warning("%s: standard 'setup.cfg' file not found",
 | 
			
		||||
                           self.get_command_name())
 | 
			
		||||
 | 
			
		||||
        for cmd_name in get_command_names():
 | 
			
		||||
            try:
 | 
			
		||||
                cmd_obj = self.get_finalized_command(cmd_name)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -34,6 +34,7 @@
 | 
			
		|||
MANIFEST = """\
 | 
			
		||||
# file GENERATED by packaging, do NOT edit
 | 
			
		||||
inroot.txt
 | 
			
		||||
setup.cfg
 | 
			
		||||
data%(sep)sdata.dt
 | 
			
		||||
scripts%(sep)sscript.py
 | 
			
		||||
some%(sep)sfile.txt
 | 
			
		||||
| 
						 | 
				
			
			@ -173,6 +174,7 @@ def test_add_defaults(self):
 | 
			
		|||
        # in package_data
 | 
			
		||||
        dist.package_data = {'': ['*.cfg', '*.dat'],
 | 
			
		||||
                             'somecode': ['*.txt']}
 | 
			
		||||
        self.write_file((self.tmp_dir, 'setup.cfg'), '#')
 | 
			
		||||
        self.write_file((self.tmp_dir, 'somecode', 'doc.txt'), '#')
 | 
			
		||||
        self.write_file((self.tmp_dir, 'somecode', 'doc.dat'), '#')
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -212,8 +214,8 @@ def test_add_defaults(self):
 | 
			
		|||
            content = zip_file.namelist()
 | 
			
		||||
 | 
			
		||||
        # Making sure everything was added. This includes 8 code and data
 | 
			
		||||
        # files in addition to PKG-INFO.
 | 
			
		||||
        self.assertEqual(len(content), 9)
 | 
			
		||||
        # files in addition to PKG-INFO and setup.cfg
 | 
			
		||||
        self.assertEqual(len(content), 10)
 | 
			
		||||
 | 
			
		||||
        # Checking the MANIFEST
 | 
			
		||||
        with open(join(self.tmp_dir, 'MANIFEST')) as fp:
 | 
			
		||||
| 
						 | 
				
			
			@ -230,7 +232,7 @@ def test_metadata_check_option(self):
 | 
			
		|||
        cmd.ensure_finalized()
 | 
			
		||||
        cmd.run()
 | 
			
		||||
        warnings = self.get_logs(logging.WARN)
 | 
			
		||||
        self.assertEqual(len(warnings), 3)
 | 
			
		||||
        self.assertEqual(len(warnings), 4)
 | 
			
		||||
 | 
			
		||||
        # trying with a complete set of metadata
 | 
			
		||||
        self.loghandler.flush()
 | 
			
		||||
| 
						 | 
				
			
			@ -242,8 +244,9 @@ def test_metadata_check_option(self):
 | 
			
		|||
        # removing manifest generated warnings
 | 
			
		||||
        warnings = [warn for warn in warnings if
 | 
			
		||||
                    not warn.endswith('-- skipping')]
 | 
			
		||||
        # the remaining warning is about the use of the default file list
 | 
			
		||||
        self.assertEqual(len(warnings), 1)
 | 
			
		||||
        # the remaining warnings are about the use of the default file list and
 | 
			
		||||
        # the absence of setup.cfg
 | 
			
		||||
        self.assertEqual(len(warnings), 2)
 | 
			
		||||
 | 
			
		||||
    def test_show_formats(self):
 | 
			
		||||
        __, stdout = captured_stdout(show_formats)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -66,10 +66,15 @@ def test_find_files(self):
 | 
			
		|||
        # building the structure
 | 
			
		||||
        tempdir = self.wdir
 | 
			
		||||
        dirs = ['pkg1', 'data', 'pkg2', 'pkg2/sub']
 | 
			
		||||
        files = ['README', 'setup.cfg', 'foo.py',
 | 
			
		||||
                 'pkg1/__init__.py', 'pkg1/bar.py',
 | 
			
		||||
                 'data/data1', 'pkg2/__init__.py',
 | 
			
		||||
                 'pkg2/sub/__init__.py']
 | 
			
		||||
        files = [
 | 
			
		||||
            'README',
 | 
			
		||||
            'data/data1',
 | 
			
		||||
            'foo.py',
 | 
			
		||||
            'pkg1/__init__.py',
 | 
			
		||||
            'pkg1/bar.py',
 | 
			
		||||
            'pkg2/__init__.py',
 | 
			
		||||
            'pkg2/sub/__init__.py',
 | 
			
		||||
        ]
 | 
			
		||||
 | 
			
		||||
        for dir_ in dirs:
 | 
			
		||||
            os.mkdir(os.path.join(tempdir, dir_))
 | 
			
		||||
| 
						 | 
				
			
			@ -86,8 +91,8 @@ def test_find_files(self):
 | 
			
		|||
                         ['pkg1', 'pkg2', 'pkg2.sub'])
 | 
			
		||||
        self.assertEqual(mainprogram.data['modules'], ['foo'])
 | 
			
		||||
        data_fn = os.path.join('data', 'data1')
 | 
			
		||||
        self.assertEqual(set(mainprogram.data['extra_files']),
 | 
			
		||||
                         set(['setup.cfg', 'README', data_fn]))
 | 
			
		||||
        self.assertEqual(mainprogram.data['extra_files'],
 | 
			
		||||
                         ['README', data_fn])
 | 
			
		||||
 | 
			
		||||
    def test_convert_setup_py_to_cfg(self):
 | 
			
		||||
        self.write_file((self.wdir, 'setup.py'),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue