Skip to main content

Accept-Header-Match

test status Documentation Status

A tool to make parsing Accept headers and finding the appropriate mimetype to return easy. Simply pass your accept header and the mimetype your server can return and it will find the best match.

There is both a programmatic interface to this package as well as a command line interface.

Installation

It can easily be installed using pip

pip install mimetype-match

Or if you prefer clone the repo and install it simply run the following from the root directory of the package.

python setup.py develop

Full Documentation

Documentation

Using the command line interface

mimetype-match [accept-header] [server-mimetype1] [server-mimetype2] ...

The first argument should be the comma delimited mimetypes as an appropriately formatted accept header. The additional arguments are the mimetypes from the server that you wish to match. For example you may have an Accept header of the following: text/*;q=0.3, text/html;q=0.7, text/html;level=1, /html;level=2;q=0.4, */*;q=0.5 and the server can serve the following content types: ["text/html", "application/json", "audio/basic"]

In this case we would run the following command:

mimetype-match "text/*;q=0.3, text/html;q=0.7, text/html;level=1, /html;level=2;q=0.4, */*;q=0.5" "text/html" "application/json" "audio/basic"

This command would tell you that “text/html” is the best choice.

Using the package

Using the package programmatically is very similar to the cli.

from mimetype_match import AcceptHeader

available_types = ["text/html", "application/json", "audio/basic"]
accept_header = AcceptHeader("text/*;q=0.3, text/html;q=0.7, text/html;level=1, /html;level=2;q=0.4, */*;q=0.5")
best_match = accept_header.get_best_match(available_types)
# It returns a tuple.  The first object is a MimeType object
# which has the orinal requested type from the client
# The second object is the available type from the
# server that best matches the clients requested types.
print(best_match[0].mimetype)
print(best_match[0].weight)
print(best_match[1])

Versioning

Prior to version 1.0.0 versioning follows sentimental versioning. Releases after 1.0.0 ollow a standard major.minor.patch style.

  • patch: forwards and backwards compatible

  • minor: backwards compatible

  • major: No guarantees

Contributing

Want to help out? We’d love it! Github will be the hub of development for mimetype-matching. If you have any issues, comments, or complaints post them there. Additionally, we are definitely accepting pull requests (hint: we almost always love more tests and documentation). We do have just a few requests:

  • Every method, function, and class should have a thorough docstring

  • There should be at least one unit test for each function and method

  • Keep your pull requests to one issue. (Preferably open an issue on github first for record keeping)

Metadata

Release files for mimetype-match 1.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mimetype-match 1.0.4
File Size Uploaded Provenance Actions
mimetype-match-1.0.4.tar.gz 5.1 kB Without provenance Details for mimetype-match-1.0.4.tar.gz

Release files / mimetype-match-1.0.4.tar.gz

Download URL mimetype-match-1.0.4.tar.gz
Size 5.1 kB
Tags Source
SHA-256 checksum
How to use checksums
d097cc13b0ebcbfa2b335fb9516394d8f13b62e56ce1a88c8f855772b27afc89
BLAKE2b-256 checksum
How to use checksums
21ac7785920928ddc7199758c83ab0286194e917d77db51df1237704f484fd61
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for mimetype-match 1.0.4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page