一个符合RFC1524的带补丁的mailcap模块

mailcap-fix的Python项目详细描述


Latest VersionSupported Python versionsBuild

注释
修复程序现在已合并到Python 3.6.0
此软件包仍作为以前版本的后台端口。

摘要

这个包修补了python标准库的 mailcap按顺序排列的模块 正确处理WindCard条目。

这个bug记录在bug跟踪器上:issue 14977

安装

$ pip install mailcap-fix

示例

考虑一个包含以下两行的mailcap文件

image/*; feh %s
image/jpeg; eog %s

因为image/*条目是首先定义的,所以它应该 搜索匹配项时优先于image/jpeg项。 此行为由RFC 1524定义。 但是,标准库的实现将始终评估 最后是通配符项。

之前

>>>importmailcap>>>d=mailcap.getcaps()>>># Incorrectly returns the second entry>>>mailcap.findmatch(d,'image/jpeg',filename='test.jpg')('eog test.jpg',{'view':'eog %s'})

之后

>>>frommailcap_fiximportmailcap>>>d=mailcap.getcaps()>>># Correctly returns the wildcard entry>>>mailcap.findmatch(d,'image/jpeg',filename='test.jpg')('feh test.jpg',{'view':'feh %s','lineno':0})

工作原理

此修补程序的目标是符合RFCC 1524, 同时保持尽可能多的向后兼容性,而不添加任何“魔法”。

mailcap_fix为mailcap dict中的每个条目添加一个新字段lineno。 然后,在搜索匹配项时,使用此行号按降序对条目进行排序。 为了向后兼容,如果lineno不存在,条目将不会被排序。 因为rfc 1524定义了有效mailcap字段名的白名单,所以添加lineno 不应与任何其他mailcap字段冲突。

基准

python 3.4.0
ubuntu 14.04 LTS 64位
Intel®Core™i5-3210M CPU@2.50GHz×4
8千兆内存

mailcap.get_caps() - per file
mailcapmailcap_fix
mailcap_short.txt0.081881 ms0.084525 ms
mailcap_long.txt17.746289 ms18.407623 ms
mailcap.lookup() - avg function call
mailcapmailcap_fix
mailcap_short.txt0.000996 ms0.003144 ms
mailcap_long.txt0.000798 ms0.002731 ms

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java限制C++代码访问JNI中的某些类   Android上的java DateFormat:不可解析的日期   通过json进行java迭代,并为其他请求调用多个API   Netbeans中的java JavaFX项目引发异常“输入流不能为null”   多线程Java newFixedThreadPool解释   |在java字符串中无法识别。split()方法   Java中的原始包装器类是否被视为引用类型?   Java swing。如何在intellij idea GUI设计工具中重写组件方法   数组乘矩阵   java将30GB的XML文件分割成小块XML   java通过一棵树递归找到一个节点,并返回指向该节点的路径   java如何将可观察的<Observable<List<T>>转换为可观察的<List<T>>   使用java在web服务器上更改php文件中的字符串?   java希望开发像tomcat这样的servlet容器   java希望提高编程的数学技能