Hello community,

here is the log from the commit of package python-python-mimeparse for 
openSUSE:Factory checked in at 2016-12-08 00:30:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-python-mimeparse (Old)
 and      /work/SRC/openSUSE:Factory/.python-python-mimeparse.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-python-mimeparse"

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-python-mimeparse/python-python-mimeparse.changes
  2013-05-02 11:42:20.000000000 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-python-mimeparse.new/python-python-mimeparse.changes
     2016-12-08 00:30:14.000000000 +0100
@@ -1,0 +2,5 @@
+Tue Nov 15 12:45:22 UTC 2016 - dmuel...@suse.com
+
+- update to 1.5.2
+
+-------------------------------------------------------------------

Old:
----
  python-mimeparse-0.1.4.tar.gz

New:
----
  python-mimeparse-1.5.2.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-python-mimeparse.spec ++++++
--- /var/tmp/diff_new_pack.u5XtqI/_old  2016-12-08 00:30:15.000000000 +0100
+++ /var/tmp/diff_new_pack.u5XtqI/_new  2016-12-08 00:30:15.000000000 +0100
@@ -1,7 +1,7 @@
 #
-# spec file for package python-mimeparse
+# spec file for package python-python-mimeparse
 #
-# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -15,16 +15,18 @@
 # Please submit bugfixes or comments via http://bugs.opensuse.org/
 #
 
+
 Name:           python-python-mimeparse
-Version:        0.1.4
+Version:        1.5.2
 Release:        0
 Url:            http://code.google.com/p/mimeparse/
 Summary:        Basic functions for parsing and matching mime-type names
 License:        MIT
 Group:          Development/Languages/Python
-Source:         
https://pypi.python.org/packages/source/p/python-mimeparse/python-mimeparse-%{version}.tar.gz
+Source:         
https://pypi.io/packages/source/p/python-mimeparse/python-mimeparse-%{version}.tar.gz
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 BuildRequires:  python-devel
+BuildRequires:  python-setuptools
 Provides:       python-mimeparse = 0.1.4
 Obsoletes:      python-mimeparse < 0.1.4
 %if 0%{?suse_version} && 0%{?suse_version} <= 1110
@@ -52,7 +54,7 @@
 
 %files
 %defattr(-,root,root,-)
-%doc LICENSE README
+%doc LICENSE README.md
 %{python_sitelib}/*
 
 %changelog

++++++ python-mimeparse-0.1.4.tar.gz -> python-mimeparse-1.5.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-mimeparse-0.1.4/MANIFEST.in 
new/python-mimeparse-1.5.2/MANIFEST.in
--- old/python-mimeparse-0.1.4/MANIFEST.in      1970-01-01 01:00:00.000000000 
+0100
+++ new/python-mimeparse-1.5.2/MANIFEST.in      2016-04-26 18:54:58.000000000 
+0200
@@ -0,0 +1 @@
+include README.md LICENSE mimeparse_test.py testdata.json
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-mimeparse-0.1.4/PKG-INFO 
new/python-mimeparse-1.5.2/PKG-INFO
--- old/python-mimeparse-0.1.4/PKG-INFO 2012-08-23 22:29:29.000000000 +0200
+++ new/python-mimeparse-1.5.2/PKG-INFO 2016-04-26 19:55:46.000000000 +0200
@@ -1,13 +1,14 @@
 Metadata-Version: 1.1
 Name: python-mimeparse
-Version: 0.1.4
+Version: 1.5.2
 Summary: A module provides basic functions for parsing mime-type names and 
matching them against a list of media-ranges.
 Home-page: https://github.com/dbtsai/python-mimeparse
-Author: David Tsai
+Author: DB Tsai
 Author-email: dbt...@dbtsai.com
 License: UNKNOWN
-Download-URL: 
http://pypi.python.org/packages/source/p/python-mimeparse/python-mimeparse-0.1.4.tar.gz
-Description: 
+Download-URL: 
http://pypi.python.org/packages/source/p/python-mimeparse/python-mimeparse-1.5.2.tar.gz
+Description: # Travis CI Build Status [![Build 
Status](https://travis-ci.org/dbtsai/python-mimeparse.svg?branch=master)](https://travis-ci.org/dbtsai/python-mimeparse)
+        
         This module provides basic functions for handling mime-types. It can 
handle
         matching mime-types against a list of media-ranges. See section 14.1 of
         the HTTP specification [RFC 2616] for a complete explanation.
@@ -21,6 +22,22 @@
             - quality_parsed():    Just like quality() except the second 
parameter must be pre-parsed.
             - best_match():        Choose the mime-type with the highest 
quality ("q") from a list of candidates.
         
+        Testing
+        =======
+        The format of the JSON test data file is as follows:
+        A top-level JSON object which has a key for each of the functions to 
be tested. The value corresponding to that key is a list of tests. Each test 
contains: the argument or arguments to the function being tested, the expected 
results and an optional description.
+        
+        Python
+        ======
+        The Python tests require Python 2.6.
+        
+        Run the tests by typing:
+        python mimeparse_test.py
+        
+        To make sure that the package works in all the supported environments, 
you can run tox tests:
+        pip install tox
+        tox
+        
 Keywords: mime-type
 Platform: UNKNOWN
 Classifier: Programming Language :: Python
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-mimeparse-0.1.4/README 
new/python-mimeparse-1.5.2/README
--- old/python-mimeparse-0.1.4/README   2012-08-23 05:38:20.000000000 +0200
+++ new/python-mimeparse-1.5.2/README   1970-01-01 01:00:00.000000000 +0100
@@ -1,19 +0,0 @@
-This module provides basic functions for parsing mime-type names and matching 
them against a list of media-ranges.
-
-See section 14.1 of RFC 2616 (the HTTP specification) for a complete 
explanation.
-
-Testing
-=======
-The format of the JSON test data file is as follows:
-A top-level JSON object which has a key for each of the functions to be 
tested. The value corresponding to that key is a list of tests. Each test 
contains: the argument or arguments to the function being tested, the expected 
results and an optional description.
-
-
-Python
-======
-The Python tests require either Python 2.6 or the installation of the 
SimpleJSON library.
-
-Installing SimpleJson can be done by:
-sudo easy_install simplejson
-
-Run the tests by typing:
-python mimeparse_test.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-mimeparse-0.1.4/README.md 
new/python-mimeparse-1.5.2/README.md
--- old/python-mimeparse-0.1.4/README.md        1970-01-01 01:00:00.000000000 
+0100
+++ new/python-mimeparse-1.5.2/README.md        2016-04-26 18:54:58.000000000 
+0200
@@ -0,0 +1,30 @@
+# Travis CI Build Status [![Build 
Status](https://travis-ci.org/dbtsai/python-mimeparse.svg?branch=master)](https://travis-ci.org/dbtsai/python-mimeparse)
+
+This module provides basic functions for handling mime-types. It can handle
+matching mime-types against a list of media-ranges. See section 14.1 of
+the HTTP specification [RFC 2616] for a complete explanation.
+
+   http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1
+
+Contents:
+    - parse_mime_type():   Parses a mime-type into its component parts.
+    - parse_media_range(): Media-ranges are mime-types with wild-cards and a 
"q" quality parameter.
+    - quality():           Determines the quality ("q") of a mime-type when 
compared against a list of media-ranges.
+    - quality_parsed():    Just like quality() except the second parameter 
must be pre-parsed.
+    - best_match():        Choose the mime-type with the highest quality ("q") 
from a list of candidates.
+
+Testing
+=======
+The format of the JSON test data file is as follows:
+A top-level JSON object which has a key for each of the functions to be 
tested. The value corresponding to that key is a list of tests. Each test 
contains: the argument or arguments to the function being tested, the expected 
results and an optional description.
+
+Python
+======
+The Python tests require Python 2.6.
+
+Run the tests by typing:
+python mimeparse_test.py
+
+To make sure that the package works in all the supported environments, you can 
run tox tests:
+pip install tox
+tox
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-mimeparse-0.1.4/mimeparse.py 
new/python-mimeparse-1.5.2/mimeparse.py
--- old/python-mimeparse-0.1.4/mimeparse.py     2012-08-23 22:19:36.000000000 
+0200
+++ new/python-mimeparse-1.5.2/mimeparse.py     2016-04-26 18:55:28.000000000 
+0200
@@ -19,13 +19,17 @@
 """
 from functools import reduce
 
-__version__ = '0.1.4'
+__version__ = '1.5.2'
 __author__ = 'Joe Gregorio'
 __email__ = 'j...@bitworking.org'
 __license__ = 'MIT License'
 __credits__ = ''
 
 
+class MimeTypeParseException(ValueError):
+    pass
+
+
 def parse_mime_type(mime_type):
     """Parses a mime-type into its component parts.
 
@@ -45,7 +49,12 @@
     # single '*'. Turn it into a legal wildcard.
     if full_type == '*':
         full_type = '*/*'
-    (type, subtype) = full_type.split('/')
+
+    type_parts = full_type.split('/') if '/' in full_type else None
+    if not type_parts or len(type_parts) > 2:
+        raise MimeTypeParseException("Can't parse type 
\"{}\"".format(full_type))
+
+    (type, subtype) = type_parts
 
     return (type.strip(), subtype.strip(), params)
 
@@ -65,15 +74,14 @@
     necessary.
     """
     (type, subtype, params) = parse_mime_type(range)
-    if not 'q' in params or not params['q'] or \
-            not float(params['q']) or float(params['q']) > 1\
-            or float(params['q']) < 0:
+    if 'q' not in params or not params['q'] or \
+            float(params['q']) > 1 or float(params['q']) < 0:
         params['q'] = '1'
 
     return (type, subtype, params)
 
 
-def fitness_and_quality_parsed(mime_type, parsed_ranges):
+def quality_and_fitness_parsed(mime_type, parsed_ranges):
     """Find the best match for a mime-type amongst parsed media-ranges.
 
     Find the best match for a given mime-type against a list of media_ranges
@@ -95,7 +103,7 @@
                          target_subtype == '*')
         if type_match and subtype_match:
             param_matches = reduce(lambda x, y: x + y, [1 for (key, value) in
-                                   list(target_params.items()) if key != 'q' 
and
+                                   target_params.items() if key != 'q' and
                                    key in params and value == params[key]], 0)
             fitness = (type == target_type) and 100 or 0
             fitness += (subtype == target_subtype) and 10 or 0
@@ -104,7 +112,7 @@
                 best_fitness = fitness
                 best_fit_q = params['q']
 
-    return best_fitness, float(best_fit_q)
+    return float(best_fit_q), best_fitness
 
 
 def quality_parsed(mime_type, parsed_ranges):
@@ -113,10 +121,10 @@
     Find the best match for a given mime-type against a list of media_ranges
     that have already been parsed by parse_media_range(). Returns the 'q'
     quality parameter of the best match, 0 if no match was found. This function
-    bahaves the same as quality() except that 'parsed_ranges' must be a list of
+    behaves the same as quality() except that 'parsed_ranges' must be a list of
     parsed media ranges. """
 
-    return fitness_and_quality_parsed(mime_type, parsed_ranges)[1]
+    return quality_and_fitness_parsed(mime_type, parsed_ranges)[0]
 
 
 def quality(mime_type, ranges):
@@ -154,12 +162,12 @@
     weighted_matches = []
     pos = 0
     for mime_type in supported:
-        weighted_matches.append((fitness_and_quality_parsed(mime_type,
+        weighted_matches.append((quality_and_fitness_parsed(mime_type,
                                  parsed_header), pos, mime_type))
         pos += 1
     weighted_matches.sort()
 
-    return weighted_matches[-1][0][1] and weighted_matches[-1][2] or ''
+    return weighted_matches[-1][0][0] and weighted_matches[-1][2] or ''
 
 
 def _filter_blank(i):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-mimeparse-0.1.4/mimeparse_test.py 
new/python-mimeparse-1.5.2/mimeparse_test.py
--- old/python-mimeparse-0.1.4/mimeparse_test.py        2012-08-23 
05:38:20.000000000 +0200
+++ new/python-mimeparse-1.5.2/mimeparse_test.py        2016-04-26 
18:54:58.000000000 +0200
@@ -5,68 +5,68 @@
 This module loads a json file and converts the tests specified therein to a set
 of PyUnitTestCases. Then it uses PyUnit to run them and report their status.
 """
-__version__ = "0.1"
-__author__ = 'Ade Oshineye'
-__email__ = "a...@oshineye.com"
-__credits__ = ""
-
 import json
 import mimeparse
 import unittest
-from functools import partial
-
-
-def test_parse_media_range(args, expected):
-    expected = tuple(expected)
-    result = mimeparse.parse_media_range(args)
-    message = "Expected: '%s' but got %s" % (expected, result)
-    assert expected == result, message
-
-
-def test_quality(args, expected):
-    result = mimeparse.quality(args[0], args[1])
-    message = "Expected: '%s' but got %s" % (expected, result)
-    assert expected == result, message
 
 
-def test_best_match(args, expected):
-    result = mimeparse.best_match(args[0], args[1])
-    message = "Expected: '%s' but got %s" % (expected, result)
-    assert expected == result, message
-
-
-def test_parse_mime_type(args, expected):
-    expected = tuple(expected)
-    result = mimeparse.parse_mime_type(args)
-    message = "Expected: '%s' but got %s" % (expected, result)
-    assert expected == result, message
-
-
-def add_tests(suite, json_object, func_name, test_func):
-    test_data = json_object[func_name]
-    for test_datum in test_data:
-        args, expected = test_datum[0], test_datum[1]
-        desc = "%s(%s) with expected result: %s" % (func_name, str(args),
-                                                    str(expected))
-        if len(test_datum) == 3:
-            desc = test_datum[2] + " : " + desc
-        func = partial(test_func, *(args, expected))
-        testcase = unittest.FunctionTestCase(func, description=desc)
-        suite.addTest(testcase)
-
+__version__ = "0.1"
+__author__ = 'Ade Oshineye'
+__email__ = "a...@oshineye.com"
+__credits__ = ""
 
-def run_tests():
-    json_object = json.load(open("testdata.json"))
 
-    suite = unittest.TestSuite()
-    add_tests(suite, json_object, "parse_media_range", test_parse_media_range)
-    add_tests(suite, json_object, "quality", test_quality)
-    add_tests(suite, json_object, "best_match", test_best_match)
-    add_tests(suite, json_object, "parse_mime_type", test_parse_mime_type)
+class MimeParseTestCase(unittest.TestCase):
 
-    test_runner = unittest.TextTestRunner(verbosity=1)
-    test_runner.run(suite)
+    def setUp(self):
+        super(MimeParseTestCase, self).setUp()
+        with open("testdata.json") as f:
+            self.test_data = json.load(f)
+
+    def _test_parse_media_range(self, args, expected):
+        expected = tuple(expected)
+        result = mimeparse.parse_media_range(args)
+        message = "Expected: '%s' but got %s" % (expected, result)
+        self.assertEqual(expected, result, message)
+
+    def _test_quality(self, args, expected):
+        result = mimeparse.quality(args[0], args[1])
+        message = "Expected: '%s' but got %s" % (expected, result)
+        self.assertEqual(expected, result, message)
+
+    def _test_best_match(self, args, expected, description):
+        if expected is None:
+            self.assertRaises(mimeparse.MimeTypeParseException, 
mimeparse.best_match, args[0], args[1])
+        else:
+            result = mimeparse.best_match(args[0], args[1])
+            message = "Expected: '%s' but got %s. Description for this test: 
%s" % (expected, result, description)
+            self.assertEqual(expected, result, message)
+
+    def _test_parse_mime_type(self, args, expected):
+        if expected is None:
+            self.assertRaises(mimeparse.MimeTypeParseException, 
mimeparse.parse_mime_type, args)
+        else:
+            expected = tuple(expected)
+            result = mimeparse.parse_mime_type(args)
+            message = "Expected: '%s' but got %s" % (expected, result)
+            self.assertEqual(expected, result, message)
+
+    def test_parse_media_range(self):
+        for args, expected in self.test_data['parse_media_range']:
+            self._test_parse_media_range(args, expected)
+
+    def test_quality(self):
+        for args, expected in self.test_data['quality']:
+            self._test_quality(args, expected)
+
+    def test_best_match(self):
+        for args, expected, description in self.test_data['best_match']:
+            self._test_best_match(args, expected, description)
+
+    def test_parse_mime_type(self):
+        for args, expected in self.test_data['parse_mime_type']:
+            self._test_parse_mime_type(args, expected)
 
 
-if __name__ == "__main__":
-    run_tests()
+if __name__ == '__main__':
+    unittest.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-mimeparse-0.1.4/python_mimeparse.egg-info/PKG-INFO 
new/python-mimeparse-1.5.2/python_mimeparse.egg-info/PKG-INFO
--- old/python-mimeparse-0.1.4/python_mimeparse.egg-info/PKG-INFO       
1970-01-01 01:00:00.000000000 +0100
+++ new/python-mimeparse-1.5.2/python_mimeparse.egg-info/PKG-INFO       
2016-04-26 19:55:46.000000000 +0200
@@ -0,0 +1,50 @@
+Metadata-Version: 1.1
+Name: python-mimeparse
+Version: 1.5.2
+Summary: A module provides basic functions for parsing mime-type names and 
matching them against a list of media-ranges.
+Home-page: https://github.com/dbtsai/python-mimeparse
+Author: DB Tsai
+Author-email: dbt...@dbtsai.com
+License: UNKNOWN
+Download-URL: 
http://pypi.python.org/packages/source/p/python-mimeparse/python-mimeparse-1.5.2.tar.gz
+Description: # Travis CI Build Status [![Build 
Status](https://travis-ci.org/dbtsai/python-mimeparse.svg?branch=master)](https://travis-ci.org/dbtsai/python-mimeparse)
+        
+        This module provides basic functions for handling mime-types. It can 
handle
+        matching mime-types against a list of media-ranges. See section 14.1 of
+        the HTTP specification [RFC 2616] for a complete explanation.
+        
+           http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1
+        
+        Contents:
+            - parse_mime_type():   Parses a mime-type into its component parts.
+            - parse_media_range(): Media-ranges are mime-types with wild-cards 
and a "q" quality parameter.
+            - quality():           Determines the quality ("q") of a mime-type 
when compared against a list of media-ranges.
+            - quality_parsed():    Just like quality() except the second 
parameter must be pre-parsed.
+            - best_match():        Choose the mime-type with the highest 
quality ("q") from a list of candidates.
+        
+        Testing
+        =======
+        The format of the JSON test data file is as follows:
+        A top-level JSON object which has a key for each of the functions to 
be tested. The value corresponding to that key is a list of tests. Each test 
contains: the argument or arguments to the function being tested, the expected 
results and an optional description.
+        
+        Python
+        ======
+        The Python tests require Python 2.6.
+        
+        Run the tests by typing:
+        python mimeparse_test.py
+        
+        To make sure that the package works in all the supported environments, 
you can run tox tests:
+        pip install tox
+        tox
+        
+Keywords: mime-type
+Platform: UNKNOWN
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 3
+Classifier: License :: OSI Approved :: MIT License
+Classifier: Operating System :: OS Independent
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Intended Audience :: Developers
+Classifier: Topic :: Internet :: WWW/HTTP
+Classifier: Topic :: Software Development :: Libraries :: Python Modules
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-mimeparse-0.1.4/python_mimeparse.egg-info/SOURCES.txt 
new/python-mimeparse-1.5.2/python_mimeparse.egg-info/SOURCES.txt
--- old/python-mimeparse-0.1.4/python_mimeparse.egg-info/SOURCES.txt    
1970-01-01 01:00:00.000000000 +0100
+++ new/python-mimeparse-1.5.2/python_mimeparse.egg-info/SOURCES.txt    
2016-04-26 19:55:46.000000000 +0200
@@ -0,0 +1,11 @@
+LICENSE
+MANIFEST.in
+README.md
+mimeparse.py
+mimeparse_test.py
+setup.py
+testdata.json
+python_mimeparse.egg-info/PKG-INFO
+python_mimeparse.egg-info/SOURCES.txt
+python_mimeparse.egg-info/dependency_links.txt
+python_mimeparse.egg-info/top_level.txt
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-mimeparse-0.1.4/python_mimeparse.egg-info/dependency_links.txt 
new/python-mimeparse-1.5.2/python_mimeparse.egg-info/dependency_links.txt
--- old/python-mimeparse-0.1.4/python_mimeparse.egg-info/dependency_links.txt   
1970-01-01 01:00:00.000000000 +0100
+++ new/python-mimeparse-1.5.2/python_mimeparse.egg-info/dependency_links.txt   
2016-04-26 19:55:46.000000000 +0200
@@ -0,0 +1 @@
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-mimeparse-0.1.4/python_mimeparse.egg-info/top_level.txt 
new/python-mimeparse-1.5.2/python_mimeparse.egg-info/top_level.txt
--- old/python-mimeparse-0.1.4/python_mimeparse.egg-info/top_level.txt  
1970-01-01 01:00:00.000000000 +0100
+++ new/python-mimeparse-1.5.2/python_mimeparse.egg-info/top_level.txt  
2016-04-26 19:55:46.000000000 +0200
@@ -0,0 +1 @@
+mimeparse
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-mimeparse-0.1.4/setup.cfg 
new/python-mimeparse-1.5.2/setup.cfg
--- old/python-mimeparse-0.1.4/setup.cfg        2012-08-23 07:15:20.000000000 
+0200
+++ new/python-mimeparse-1.5.2/setup.cfg        2016-04-26 19:55:46.000000000 
+0200
@@ -1,2 +1,5 @@
-[easy_install]
+[egg_info]
+tag_build = 
+tag_date = 0
+tag_svn_revision = 0
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-mimeparse-0.1.4/setup.py 
new/python-mimeparse-1.5.2/setup.py
--- old/python-mimeparse-0.1.4/setup.py 2012-08-23 22:28:43.000000000 +0200
+++ new/python-mimeparse-1.5.2/setup.py 2016-04-26 18:54:58.000000000 +0200
@@ -1,17 +1,26 @@
 #!/usr/bin/env python
 
-from distutils.core import setup
+import os
+import codecs
 import mimeparse
+from setuptools import setup
+
+
+def read(fname):
+    path = os.path.join(os.path.dirname(__file__), fname)
+    return codecs.open(path, encoding='utf-8').read()
 
 setup(
     name="python-mimeparse",
     py_modules=["mimeparse"],
     version=mimeparse.__version__,
-    description="A module provides basic functions for parsing mime-type names 
and matching them against a list of media-ranges.",
-    author="David Tsai",
+    description=("A module provides basic functions for parsing mime-type "
+                 "names and matching them against a list of media-ranges."),
+    author="DB Tsai",
     author_email="dbt...@dbtsai.com",
     url="https://github.com/dbtsai/python-mimeparse";,
-    
download_url="http://pypi.python.org/packages/source/p/python-mimeparse/python-mimeparse-0.1.4.tar.gz";,
+    download_url=("http://pypi.python.org/packages/source/p/python-mimeparse/";
+                  "python-mimeparse-" + mimeparse.__version__ + ".tar.gz"),
     keywords=["mime-type"],
     classifiers=[
         "Programming Language :: Python",
@@ -23,18 +32,5 @@
         "Topic :: Internet :: WWW/HTTP",
         "Topic :: Software Development :: Libraries :: Python Modules",
     ],
-    long_description="""
-This module provides basic functions for handling mime-types. It can handle
-matching mime-types against a list of media-ranges. See section 14.1 of
-the HTTP specification [RFC 2616] for a complete explanation.
-
-   http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1
-
-Contents:
-    - parse_mime_type():   Parses a mime-type into its component parts.
-    - parse_media_range(): Media-ranges are mime-types with wild-cards and a 
"q" quality parameter.
-    - quality():           Determines the quality ("q") of a mime-type when 
compared against a list of media-ranges.
-    - quality_parsed():    Just like quality() except the second parameter 
must be pre-parsed.
-    - best_match():        Choose the mime-type with the highest quality ("q") 
from a list of candidates.
-"""
+    long_description=read('README.md')
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-mimeparse-0.1.4/testdata.json 
new/python-mimeparse-1.5.2/testdata.json
--- old/python-mimeparse-0.1.4/testdata.json    2012-08-23 05:38:20.000000000 
+0200
+++ new/python-mimeparse-1.5.2/testdata.json    2016-04-26 18:54:58.000000000 
+0200
@@ -1,42 +1,47 @@
 {
 "parse_media_range": [
-                    ["application/xml;q=1", ["application", "xml", {"q": 
"1"}]],
-                    ["application/xml", ["application", "xml", {"q": "1"}]],
-                    ["application/xml;q=",["application", "xml", {"q": "1"}]],
-                    ["application/xml ;q=",["application", "xml", {"q": "1"}]],
-                    ["application/xml ; q=1;b=other",["application", "xml", 
{"q": "1", "b":"other"}]],
-                    ["application/xml ; q=2;b=other",["application", "xml", 
{"q": "1", "b":"other"}]],
-                    [" *; q=.2",["*", "*", {"q": ".2"}]]
+    ["application/xml;q=1", ["application", "xml", {"q": "1"}]],
+    ["application/xml", ["application", "xml", {"q": "1"}]],
+    ["application/xml;q=",["application", "xml", {"q": "1"}]],
+    ["application/xml ;q=",["application", "xml", {"q": "1"}]],
+    ["application/xml ; q=1;b=other",["application", "xml", {"q": "1", 
"b":"other"}]],
+    ["application/xml ; q=2;b=other",["application", "xml", {"q": "1", 
"b":"other"}]],
+    ["application/xml ; q=0",["application", "xml", {"q": "0"}]],
+    [" *; q=.2",["*", "*", {"q": ".2"}]]
 ],
 
 "quality": [
-            [["text/html;level=1", "text/*;q=0.3, text/html;q=0.7, 
text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5"], 1],
-            [["text/html", "text/*;q=0.3, text/html;q=0.7, text/html;level=1, 
text/html;level=2;q=0.4, */*;q=0.5"], 0.7],
-            [["text/plain", "text/*;q=0.3, text/html;q=0.7, text/html;level=1, 
text/html;level=2;q=0.4, */*;q=0.5"], 0.3],
-            [["image/jpeg", "text/*;q=0.3, text/html;q=0.7, text/html;level=1, 
text/html;level=2;q=0.4, */*;q=0.5"], 0.5],
-            [["text/html;level=2", "text/*;q=0.3, text/html;q=0.7, 
text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5"], 0.4],
-            [["text/html;level=3", "text/*;q=0.3, text/html;q=0.7, 
text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5"], 0.7],
-                       [["text/plain", "text/html, image/gif, image/jpeg, *; 
q=.2, */*; q=.2"], 0.2]
+    [["text/html;level=1", "text/*;q=0.3, text/html;q=0.7, text/html;level=1, 
text/html;level=2;q=0.4, */*;q=0.5"], 1],
+    [["text/html", "text/*;q=0.3, text/html;q=0.7, text/html;level=1, 
text/html;level=2;q=0.4, */*;q=0.5"], 0.7],
+    [["text/plain", "text/*;q=0.3, text/html;q=0.7, text/html;level=1, 
text/html;level=2;q=0.4, */*;q=0.5"], 0.3],
+    [["image/jpeg", "text/*;q=0.3, text/html;q=0.7, text/html;level=1, 
text/html;level=2;q=0.4, */*;q=0.5"], 0.5],
+    [["text/html;level=2", "text/*;q=0.3, text/html;q=0.7, text/html;level=1, 
text/html;level=2;q=0.4, */*;q=0.5"], 0.4],
+    [["text/html;level=3", "text/*;q=0.3, text/html;q=0.7, text/html;level=1, 
text/html;level=2;q=0.4, */*;q=0.5"], 0.7],
+    [["text/plain", "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"], 
0.2]
 ],
 
 "best_match": [
-             [[["application/xbel+xml", "application/xml"], 
"application/xbel+xml"], "application/xbel+xml", "direct match"],
-             [[["application/xbel+xml", "application/xml"], 
"application/xbel+xml; q=1"], "application/xbel+xml", "direct match with a q 
parameter"],
-             [[["application/xbel+xml", "application/xml"], "application/xml; 
q=1"], "application/xml", "direct match of our second choice with a q 
parameter"],
-             [[["application/xbel+xml", "application/xml"], "application/*; 
q=1"], "application/xml", "match using a subtype wildcard"],
-             [[["application/xbel+xml", "application/xml"], "*/*", 
"application/xml"], "application/xml", "match using a type wildcard"],
-             [[["application/xbel+xml", "text/xml"], "text/*;q=0.5,*/*; 
q=0.1"], "text/xml", "match using a type versus a lower weighted subtype"],
-             [[["application/xbel+xml", "text/xml"], 
"text/html,application/atom+xml; q=0.9"], "", "fail to match anything"],
-             [[["application/json", "text/html"], "application/json, 
text/javascript, */*"], "application/json", "common AJAX scenario"],
-             [[["application/json", "text/html"], "application/json, 
text/html;q=0.9"], "application/json", "verify fitness ordering"],
-             [[["image/*", "application/xml"], "image/png"], "image/*", "match 
using a type wildcard"],
-             [[["image/*", "application/xml"], "image/*"], "image/*", "match 
using a wildcard for both requested and supported"],
-        [[["text/html", "application/rdf+xml"], "text/html, 
application/rdf+xml"], "application/rdf+xml", "match should use highest order 
of supported when there is a tie"],
-        [[["application/rdf+xml", "text/html"], "text/html, 
application/rdf+xml"], "text/html", "match should use highest order of 
supported when there is a tie"]
+    [[["application/xbel+xml", "application/xml"], "application/xbel+xml"], 
"application/xbel+xml", "direct match"],
+    [[["application/xbel+xml", "application/xml"], "application/xbel+xml; 
q=1"], "application/xbel+xml", "direct match with a q parameter"],
+    [[["application/xbel+xml", "application/xml"], "application/xml; q=1"], 
"application/xml", "direct match of our second choice with a q parameter"],
+    [[["application/xbel+xml", "application/xml"], "application/*; q=1"], 
"application/xml", "match using a subtype wildcard"],
+    [[["application/xbel+xml", "application/xml"], "*/*", "application/xml"], 
"application/xml", "match using a type wildcard"],
+    [[["application/xbel+xml", "text/xml"], "text/*;q=0.5,*/*; q=0.1"], 
"text/xml", "match using a type versus a lower weighted subtype"],
+    [[["application/xbel+xml", "text/xml"], "text/html,application/atom+xml; 
q=0.9"], "", "fail to match anything"],
+    [[["application/json", "text/html"], "application/json, text/javascript, 
*/*"], "application/json", "common AJAX scenario"],
+    [[["application/json", "text/html"], "application/json, text/html;q=0.9"], 
"application/json", "verify fitness ordering"],
+    [[["image/*", "application/xml"], "image/png"], "image/*", "match using a 
type wildcard"],
+    [[["image/*", "application/xml"], "image/*"], "image/*", "match using a 
wildcard for both requested and supported"],
+    [[["image/jpeg", "text/plain"], "text/*;q=0.3, text/html;q=0.7, 
text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5"], "image/jpeg", "media 
type with highest associated quality factor should win, not necessarily most 
specific"],
+    [[["text/html", "application/rdf+xml"], "text/html, application/rdf+xml"], 
"application/rdf+xml", "match should use highest order of supported when there 
is a tie"],
+    [[["application/rdf+xml", "text/html"], "text/html, application/rdf+xml"], 
"text/html", "match should use highest order of supported when there is a tie"],
+    [[["application/json", "text/html"], "text"], null, "match should use the 
default if an invalid Accept header is passed"]
 ],
 
 "parse_mime_type": [
-                  ["application/xhtml;q=0.5", ["application", "xhtml", {"q": 
"0.5"}]],
-                  ["application/xhtml;q=0.5;ver=1.2", ["application", "xhtml", 
{"q": "0.5", "ver": "1.2"}]]
+    ["application/xhtml;q=0.5", ["application", "xhtml", {"q": "0.5"}]],
+    ["application/xhtml;q=0.5;ver=1.2", ["application", "xhtml", {"q": "0.5", 
"ver": "1.2"}]],
+    ["text", null],
+    ["text/something/invalid", null]
 ]
 }


Reply via email to