summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Chainz <me@adamj.eu>2016-09-28 21:12:32 +0100
committerStefan Wójcik <wojcikstefan@gmail.com>2016-09-28 16:12:32 -0400
commit7799be4a1cd2d68f70293a515bba1392b989531b (patch)
tree05aedb0ac342c0d36e4ff2aeec9154d3b7086970
parent9e6ee2f9f0977a3375e65b417543c50450a1db1b (diff)
downloadpython-mimeparse-7799be4a1cd2d68f70293a515bba1392b989531b.tar.gz
setup.py + README tidying (#22)
* Convert `README.md` to `README.rst` since rst is all that PyPI supports * Tidy up README so all functions are explained with their own headers * Use context managers for opening files in `setup.py` * Don't import the code in `setup.py`, which doesn't work on some platforms before it's installed. Instead use parsing of the file to find the version.
-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')
)