Skip to main content

Type-safe MIME type enumeration for Python

Project description

mime-enum

Release Build status codecov License

A type-safe Python library for working with MIME types and file extensions.

The mime-enum package provides a comprehensive enumeration of MIME types with their associated file extensions. It offers a clean, type-safe API for parsing MIME type strings, looking up MIME types by file extension, and working with file paths.

Installation

Install using pip:

pip install mime-enum

Or using uv:

uv add mime-enum

Quick Start

The mime-enum library provides three key capabilities: type-safe MIME type access, flexible string parsing, and file extension lookups.

Type-Safe MIME Types

Access MIME types as strongly-typed enum values with full IDE support:

from mime_enum import MimeType

# Enum values work as strings with autocompletion and type checking
json_mime = MimeType.APPLICATION_JSON
print(json_mime)  # "application/json"
print(json_mime.extensions)  # ("json",)

Convenient Aliases

For commonly used MIME types with verbose names, convenient aliases are provided:

# Microsoft Office formats - use short aliases instead of verbose names
docx = MimeType.APPLICATION_DOCX  # vs APPLICATION_VND_OPENXMLFORMATS_OFFICEDOCUMENT_WORDPROCESSINGML_DOCUMENT
xlsx = MimeType.APPLICATION_XLSX  # vs APPLICATION_VND_OPENXMLFORMATS_OFFICEDOCUMENT_SPREADSHEETML_SHEET
pptx = MimeType.APPLICATION_PPTX  # vs APPLICATION_VND_OPENXMLFORMATS_OFFICEDOCUMENT_PRESENTATIONML_PRESENTATION

# String representation shows the full MIME type
print(docx)  # "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
print(xlsx)  # "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
print(pptx)  # "application/vnd.openxmlformats-officedocument.presentationml.presentation"

# All aliases point to the same enum instances
assert MimeType.APPLICATION_DOCX is MimeType.APPLICATION_VND_OPENXMLFORMATS_OFFICEDOCUMENT_WORDPROCESSINGML_DOCUMENT

# Available aliases: DOCX, XLSX, PPTX, DOTX, XLTX, POTX, PPSX, SLDX

Flexible String Parsing

Parse real-world MIME type strings with automatic parameter stripping and alias normalization:

from mime_enum import parse, try_parse

# Strips parameters automatically
mime_type = parse("application/json; charset=utf-8")
print(mime_type)  # MimeType.APPLICATION_JSON

# Normalizes common aliases to canonical forms
canonical = parse("text/json")  # → MimeType.APPLICATION_JSON
canonical = parse("application/javascript")  # → MimeType.TEXT_JAVASCRIPT

# Safe parsing returns None instead of raising exceptions
unknown = try_parse("application/unknown")
print(unknown)  # None

File Extension Lookups

Detect MIME types from file extensions and paths:

from mime_enum import from_extension, from_path

# Look up by extension (with or without dot, case-insensitive)
pdf_mime = from_extension(".pdf")  # MimeType.APPLICATION_PDF
json_mime = from_extension("JSON")  # MimeType.APPLICATION_JSON

# Detect from complete file paths
mime_type = from_path("/path/to/document.pdf")  # MimeType.APPLICATION_PDF

Note: These functions only examine file extensions, not actual file content. For content-based detection, consider python-magic or filetype packages.

For detailed usage examples, see the Usage Guide.

For complete API documentation, see the API Reference.

Acknowledgments

This project uses the mimeData.json file from mimetype-io by Patrick McCallum.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mime_enum-0.0.3.tar.gz (125.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mime_enum-0.0.3-py3-none-any.whl (31.2 kB view details)

Uploaded Python 3

File details

Details for the file mime_enum-0.0.3.tar.gz.

File metadata

  • Download URL: mime_enum-0.0.3.tar.gz
  • Upload date:
  • Size: 125.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.14

File hashes

Hashes for mime_enum-0.0.3.tar.gz
Algorithm Hash digest
SHA256 9ba84c74a2edc8d62ac4ac9ab57d18050b6c4620fb9d22b0908a32a10d7fb83a
MD5 8e6e3a6c71f2b3fab9e4685a02d5f5d4
BLAKE2b-256 1bb98c2e4f48c201143fa6a4fe5c4dd5c588c9ad151a667b8905598c9ffe9488

See more details on using hashes here.

File details

Details for the file mime_enum-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: mime_enum-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 31.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.14

File hashes

Hashes for mime_enum-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 c90186c60ac56aeaaf33dd12f0bfb212881925e30546d787affacf6dbb7f6ef1
MD5 7e0b8aa18be30fba008edcaae488a49f
BLAKE2b-256 f909d26ec82740540c40edc097703f241d96bcad8c9925ed5188eec8b88e5bd2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page