[Python-checkins] cpython: Fix sdist to always include setup.cfg (#11092), to comply with the spec

eric.araujo python-checkins at python.org
Tue Jun 7 17:32:03 CEST 2011


http://hg.python.org/cpython/rev/5940d2d82dee
changeset:   70706:5940d2d82dee
user:        Éric Araujo <merwok at netwok.org>
date:        Mon Jun 06 21:55:43 2011 +0200
summary:
  Fix sdist to always include setup.cfg (#11092), to comply with the spec

files:
  Lib/packaging/command/sdist.py            |  21 ++++++----
  Lib/packaging/tests/test_command_sdist.py |  13 ++++--
  Lib/packaging/tests/test_create.py        |  17 +++++---
  3 files changed, 32 insertions(+), 19 deletions(-)


diff --git a/Lib/packaging/command/sdist.py b/Lib/packaging/command/sdist.py
--- a/Lib/packaging/command/sdist.py
+++ b/Lib/packaging/command/sdist.py
@@ -201,15 +201,20 @@
         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)
diff --git a/Lib/packaging/tests/test_command_sdist.py b/Lib/packaging/tests/test_command_sdist.py
--- a/Lib/packaging/tests/test_command_sdist.py
+++ b/Lib/packaging/tests/test_command_sdist.py
@@ -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 @@
         # 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 @@
             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 @@
         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 @@
         # 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)
diff --git a/Lib/packaging/tests/test_create.py b/Lib/packaging/tests/test_create.py
--- a/Lib/packaging/tests/test_create.py
+++ b/Lib/packaging/tests/test_create.py
@@ -66,10 +66,15 @@
         # 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 @@
                          ['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'),

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list