summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MANIFEST.in2
-rw-r--r--README.md31
-rw-r--r--README.rst65
-rw-r--r--mimeparse.py20
-rwxr-xr-xsetup.py22
5 files changed, 83 insertions, 57 deletions
diff --git a/MANIFEST.in b/MANIFEST.in
index 564b03b..d071265 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1 +1 @@
-include README.md LICENSE mimeparse_test.py testdata.json
+include README.rst LICENSE mimeparse_test.py testdata.json
diff --git a/README.md b/README.md
deleted file mode 100644
index 5a58486..0000000
--- a/README.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# 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 5.3.2 of
-the HTTP 1.1 Semantics and Content specification [RFC 7231] for a complete
-explanation.
-
- https://tools.ietf.org/html/rfc7231#section-5.3.2
-
-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 --git a/README.rst b/README.rst
new file mode 100644
index 0000000..f1f8c81
--- /dev/null
+++ b/README.rst
@@ -0,0 +1,65 @@
+.. image:: https://travis-ci.org/dbtsai/python-mimeparse.svg?branch=master
+ :target: 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
+5.3.2 of the HTTP 1.1 Semantics and Content specification [RFC 7231] for
+a complete explanation: https://tools.ietf.org/html/rfc7231#section-5.3.2
+
+Installation
+============
+
+Use **pip**:
+
+.. code-block:: sh
+
+ $ pip install python-mimeparse
+
+It supports Python 2.7 - 3.5 and PyPy.
+
+Functions
+=========
+
+``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
+=======
+
+Run the tests by typing: ``python mimeparse_test.py``. The tests require Python 2.6.
+
+To make sure that the package works in all the supported environments, you can
+run **tox** tests:
+
+.. code-block:: sh
+
+ $ pip install tox
+ $ tox
+
+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.
diff --git a/mimeparse.py b/mimeparse.py
index 955ad24..5eb4326 100644
--- a/mimeparse.py
+++ b/mimeparse.py
@@ -1,23 +1,3 @@
-"""MIME-Type Parser
-
-This module provides basic functions for handling mime-types. It can handle
-matching mime-types against a list of media-ranges. See section 5.3.2 of the
-HTTP 1.1 Semantics and Content specification [RFC 7231] for a complete
-explanation.
-
- https://tools.ietf.org/html/rfc7231#section-5.3.2
-
-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.
-"""
import cgi
from functools import reduce
diff --git a/setup.py b/setup.py
index 35f6355..4d395ea 100755
--- a/setup.py
+++ b/setup.py
@@ -2,25 +2,37 @@
import os
import codecs
-import mimeparse
+import re
from setuptools import setup
+def get_version(filename):
+ """
+ Return package version as listed in `__version__` in 'filename'.
+ """
+ with open(filename) as fp:
+ contents = fp.read()
+ return re.search("__version__ = ['\"]([^'\"]+)['\"]", contents).group(1)
+
+version = get_version('mimeparse.py')
+
+
def read(fname):
path = os.path.join(os.path.dirname(__file__), fname)
- return codecs.open(path, encoding='utf-8').read()
+ with codecs.open(path, encoding='utf-8') as fp:
+ return fp.read()
setup(
name="python-mimeparse",
py_modules=["mimeparse"],
- version=mimeparse.__version__,
+ version=version,
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="dbtsai@dbtsai.com",
url="https://github.com/dbtsai/python-mimeparse",
download_url=("https://github.com/dbtsai/python-mimeparse/tarball/" +
- mimeparse.__version__),
+ version),
keywords=["mime-type"],
classifiers=[
"Programming Language :: Python",
@@ -32,5 +44,5 @@ setup(
"Topic :: Internet :: WWW/HTTP",
"Topic :: Software Development :: Libraries :: Python Modules",
],
- long_description=read('README.md')
+ long_description=read('README.rst')
)