[Python-checkins] distutils2: sending to PyPI various metadata versions in the register command

tarek.ziade python-checkins at python.org
Wed Mar 17 05:13:02 CET 2010


tarek.ziade pushed 342424580a5f to distutils2:

http://hg.python.org/distutils2/rev/342424580a5f
changeset:   82:342424580a5f
tag:         tip
user:        Tarek Ziade <tarek at ziade.org>
date:        Wed Mar 17 00:12:54 2010 -0400
summary:     sending to PyPI various metadata versions in the register command
files:       src/distutils2/command/register.py, src/distutils2/tests/test_register.py

diff --git a/src/distutils2/command/register.py b/src/distutils2/command/register.py
--- a/src/distutils2/command/register.py
+++ b/src/distutils2/command/register.py
@@ -227,8 +227,7 @@
         meta = self.distribution.metadata
         data = {
             ':action': action,
-            # XXX implement 1.1
-            'metadata_version' : '1.0',
+            'metadata_version' : meta.version,
             'name': meta['Name'],
             'version': meta['Version'],
             'summary': meta['Summary'],
@@ -241,12 +240,21 @@
             'platform': meta['Platform'],
             'classifier': meta['Classifier'],
             'download_url': meta['Download-URL'],
-            #'provides': meta['Provides'],
-            #'requires': meta['Requires'],
-            #'obsoletes': meta['Obsoletes'],
         }
-        #if data['provides'] or data['requires'] or data['obsoletes']:
-        #    data['metadata_version'] = '1.1'
+
+        if meta.version == '1.2':
+            data['requires_dist'] = meta['Requires-Dist']
+            data['requires_python'] = meta['Requires-Python']
+            data['requires_external'] = meta['Requires-External']
+            data['provides_dist'] = meta['Provides-Dist']
+            data['obsoletes_dist'] = meta['Obsoletes-Dist']
+            data['project_url'] = meta['Project-Url']
+
+        elif meta.version == '1.1':
+            data['provides'] = meta['Provides']
+            data['requires'] = meta['Requires']
+            data['obsoletes'] = meta['Obsoletes']
+
         return data
 
     def post_to_server(self, data, auth=None):
@@ -263,8 +271,9 @@
         body = StringIO.StringIO()
         for key, value in data.items():
             # handle multiple entries for the same name
-            if type(value) not in (type([]), type( () )):
+            if not isinstance(value, (tuple, list)):
                 value = [value]
+
             for value in value:
                 body.write(sep_boundary)
                 body.write('\nContent-Disposition: form-data; name="%s"'%key)
diff --git a/src/distutils2/tests/test_register.py b/src/distutils2/tests/test_register.py
--- a/src/distutils2/tests/test_register.py
+++ b/src/distutils2/tests/test_register.py
@@ -240,6 +240,14 @@
         finally:
             del register_module.raw_input
 
+    def test_register_pep345(self):
+        cmd = self._get_cmd({})
+        cmd.ensure_finalized()
+        cmd.distribution.metadata['Requires-Dist'] = ['lxml']
+        data = cmd.build_post_data('submit')
+        self.assertEquals(data['metadata_version'], '1.2')
+        self.assertEquals(data['requires_dist'], ['lxml'])
+
 def test_suite():
     return unittest2.makeSuite(RegisterTestCase)
 

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


More information about the Python-checkins mailing list