Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Basic functions for handling mime-types in python

branch: master

Fixed Wrong ordering of candidates

See #3

mimeparse.best_match(["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")

Expected: 'image/jpeg'
Instead: 'text/plain'
latest commit 2d600d3fc4
DB Tsai authored
Octocat-spinner-32 .gitignore
Octocat-spinner-32 .travis.yml
Octocat-spinner-32 LICENSE
Octocat-spinner-32 MANIFEST.in
Octocat-spinner-32 PKG-INFO
Octocat-spinner-32 README
Octocat-spinner-32 __init__.py
Octocat-spinner-32 mimeparse.py
Octocat-spinner-32 mimeparse_test.py
Octocat-spinner-32 setup.py
Octocat-spinner-32 testdata.json
Octocat-spinner-32 tox.ini
README
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
Something went wrong with that request. Please try again.