[Checkins] SVN: Sandbox/nadako/z3c.sharedmimeinfo/trunk/ Don't register "global" mime info utility, use it directly instead.
Dan Korostelev
nadako at gmail.com
Tue Sep 8 13:18:30 EDT 2009
Log message for revision 103652:
Don't register "global" mime info utility, use it directly instead.
Add a TODO note about info data pluggability.
Changed:
A Sandbox/nadako/z3c.sharedmimeinfo/trunk/TODO.txt
U Sandbox/nadako/z3c.sharedmimeinfo/trunk/src/z3c/sharedmimeinfo/README.txt
U Sandbox/nadako/z3c.sharedmimeinfo/trunk/src/z3c/sharedmimeinfo/__init__.py
U Sandbox/nadako/z3c.sharedmimeinfo/trunk/src/z3c/sharedmimeinfo/configure.zcml
U Sandbox/nadako/z3c.sharedmimeinfo/trunk/src/z3c/sharedmimeinfo/tests/test_doc.py
U Sandbox/nadako/z3c.sharedmimeinfo/trunk/src/z3c/sharedmimeinfo/utility.py
-=-
Added: Sandbox/nadako/z3c.sharedmimeinfo/trunk/TODO.txt
===================================================================
--- Sandbox/nadako/z3c.sharedmimeinfo/trunk/TODO.txt (rev 0)
+++ Sandbox/nadako/z3c.sharedmimeinfo/trunk/TODO.txt 2009-09-08 17:18:29 UTC (rev 103652)
@@ -0,0 +1,2 @@
+- Think about MIME info data path pluggability, so for instance one could
+ install shared-mime-info as a python egg and use it with z3c.sharedmimeinfo.
Modified: Sandbox/nadako/z3c.sharedmimeinfo/trunk/src/z3c/sharedmimeinfo/README.txt
===================================================================
--- Sandbox/nadako/z3c.sharedmimeinfo/trunk/src/z3c/sharedmimeinfo/README.txt 2009-09-08 17:06:03 UTC (rev 103651)
+++ Sandbox/nadako/z3c.sharedmimeinfo/trunk/src/z3c/sharedmimeinfo/README.txt 2009-09-08 17:18:29 UTC (rev 103652)
@@ -24,14 +24,13 @@
MIME type detection utility
---------------------------
-The core of this package is the global IMIMETypesUtility component::
+The core of this package is the IMIMETypesUtility component::
- >>> from zope.component import getUtility
>>> from zope.interface.verify import verifyObject
>>> from z3c.sharedmimeinfo.interfaces import IMIMETypesUtility
+ >>> from z3c.sharedmimeinfo.utility import mimeTypesUtility
- >>> util = getUtility(IMIMETypesUtility)
- >>> verifyObject(IMIMETypesUtility, util)
+ >>> verifyObject(IMIMETypesUtility, mimeTypesUtility)
True
It has three methods for getting mime type. Those three methods are
@@ -45,7 +44,7 @@
The simpliest method is ``getTypeByFileName`` that looks up the type by
filename::
- >>> mt = util.getTypeByFileName('example.doc')
+ >>> mt = mimeTypesUtility.getTypeByFileName('example.doc')
The mime type is the object implementing IMIMEType interface::
@@ -76,21 +75,21 @@
Shared-Mime-Info is nice, it can even detect mime type for file names like
``Makefile``::
- >>> print util.getTypeByFileName('Makefile')
+ >>> print mimeTypesUtility.getTypeByFileName('Makefile')
text/x-makefile
Also, it know the difference in extension letter case. For example the ``.C``
should be detected as C++ file, when ``.c`` is plain C file::
- >>> print util.getTypeByFileName('hello.C')
+ >>> print mimeTypesUtility.getTypeByFileName('hello.C')
text/x-c++src
- >>> print util.getTypeByFileName('main.c')
+ >>> print mimeTypesUtility.getTypeByFileName('main.c')
text/x-csrc
The method returns ``None`` if it can determine type from file name::
- >>> print util.getTypeByFileName('somefilename')
+ >>> print mimeTypesUtility.getTypeByFileName('somefilename')
None
Detection by contents
@@ -107,25 +106,25 @@
... return open(os.path.join(SAMPLE_DATA_DIR, 'sample.' + extension))
>>> fdoc = openSample('doc')
- >>> print util.getTypeByContents(fdoc)
+ >>> print mimeTypesUtility.getTypeByContents(fdoc)
application/msword
>>> fhtml = openSample('html')
- >>> print util.getTypeByContents(fhtml)
+ >>> print mimeTypesUtility.getTypeByContents(fhtml)
text/html
>>> fpdf = openSample('pdf')
- >>> print util.getTypeByContents(fpdf)
+ >>> print mimeTypesUtility.getTypeByContents(fpdf)
application/pdf
>>> fpng = openSample('png')
- >>> print util.getTypeByContents(fpng)
+ >>> print mimeTypesUtility.getTypeByContents(fpng)
image/png
If we pass the file without any magic bytes, it will return ``None``::
>>> funknown = openSample('unknown')
- >>> print util.getTypeByContents(funknown)
+ >>> print mimeTypesUtility.getTypeByContents(funknown)
None
Detection by both file name and contents
@@ -140,26 +139,26 @@
It needs at least one argument, so you can't call it with no arguments::
- >>> util.getType()
+ >>> mimeTypesUtility.getType()
Traceback (most recent call last):
...
TypeError: Either filename or file should be provided or both of them
- >>> print util.getType(filename='wrong.doc')
+ >>> print mimeTypesUtility.getType(filename='wrong.doc')
application/msword
- >>> print util.getType(file=fpng)
+ >>> print mimeTypesUtility.getType(file=fpng)
image/png
If type cannot be detected, it WILL return either ``text/plain`` or
``application/octet-stream`` mime type. It will try to guess is it text
or binary by checking first 32 bytes::
- >>> print util.getType(filename='somefile', file=funknown)
+ >>> print mimeTypesUtility.getType(filename='somefile', file=funknown)
text/plain
>>> funknownbinary = openSample('binary')
- >>> print util.getType(filename='somefile2', file=funknownbinary)
+ >>> print mimeTypesUtility.getType(filename='somefile2', file=funknownbinary)
application/octet-stream
Let's close files, because we won't need them anymore::
@@ -175,7 +174,7 @@
Let's get some mime type to play with::
- >>> mt = util.getTypeByFileName('example.png')
+ >>> mt = mimeTypesUtility.getTypeByFileName('example.png')
By default, mimetype title message id is its media/subtype form::
@@ -216,7 +215,7 @@
image/png
>>> funknownbinary = openSample('binary')
- >>> print util.getType(filename='somefile2.txt', file=funknownbinary)
+ >>> print mimeTypesUtility.getType(filename='somefile2.txt', file=funknownbinary)
text/plain
>>> del fpng, funknownbinary
Modified: Sandbox/nadako/z3c.sharedmimeinfo/trunk/src/z3c/sharedmimeinfo/__init__.py
===================================================================
--- Sandbox/nadako/z3c.sharedmimeinfo/trunk/src/z3c/sharedmimeinfo/__init__.py 2009-09-08 17:06:03 UTC (rev 103651)
+++ Sandbox/nadako/z3c.sharedmimeinfo/trunk/src/z3c/sharedmimeinfo/__init__.py 2009-09-08 17:18:29 UTC (rev 103652)
@@ -14,7 +14,4 @@
"""
$Id$
"""
-from z3c.sharedmimeinfo.utility import globalMIMETypesUtility
-
-def getType(filename=None, file=None):
- return globalMIMETypesUtility.getType(filename, file)
+from z3c.sharedmimeinfo.utility import getType
Modified: Sandbox/nadako/z3c.sharedmimeinfo/trunk/src/z3c/sharedmimeinfo/configure.zcml
===================================================================
--- Sandbox/nadako/z3c.sharedmimeinfo/trunk/src/z3c/sharedmimeinfo/configure.zcml 2009-09-08 17:06:03 UTC (rev 103651)
+++ Sandbox/nadako/z3c.sharedmimeinfo/trunk/src/z3c/sharedmimeinfo/configure.zcml 2009-09-08 17:18:29 UTC (rev 103652)
@@ -1,7 +1,5 @@
<configure xmlns="http://namespaces.zope.org/zope">
- <utility component=".utility.globalMIMETypesUtility" />
-
<utility
component=".mimetype.mimeTypesTranslationDomain"
name="shared-mime-info"
Modified: Sandbox/nadako/z3c.sharedmimeinfo/trunk/src/z3c/sharedmimeinfo/tests/test_doc.py
===================================================================
--- Sandbox/nadako/z3c.sharedmimeinfo/trunk/src/z3c/sharedmimeinfo/tests/test_doc.py 2009-09-08 17:06:03 UTC (rev 103651)
+++ Sandbox/nadako/z3c.sharedmimeinfo/trunk/src/z3c/sharedmimeinfo/tests/test_doc.py 2009-09-08 17:18:29 UTC (rev 103652)
@@ -21,12 +21,10 @@
from zope.testing import doctest
from zope.component import provideUtility
-from z3c.sharedmimeinfo.utility import globalMIMETypesUtility
from z3c.sharedmimeinfo.mimetype import mimeTypesTranslationDomain
def setUp(test):
- provideUtility(globalMIMETypesUtility)
provideUtility(mimeTypesTranslationDomain, name='shared-mime-info')
test.globs['SAMPLE_DATA_DIR'] = os.path.join(os.path.dirname(__file__), 'sample_data')
Modified: Sandbox/nadako/z3c.sharedmimeinfo/trunk/src/z3c/sharedmimeinfo/utility.py
===================================================================
--- Sandbox/nadako/z3c.sharedmimeinfo/trunk/src/z3c/sharedmimeinfo/utility.py 2009-09-08 17:06:03 UTC (rev 103651)
+++ Sandbox/nadako/z3c.sharedmimeinfo/trunk/src/z3c/sharedmimeinfo/utility.py 2009-09-08 17:18:29 UTC (rev 103652)
@@ -141,4 +141,5 @@
return type
-globalMIMETypesUtility = MIMETypesUtility()
+mimeTypesUtility = MIMETypesUtility()
+getType = mimeTypesUtility.getType
More information about the checkins
mailing list