root/Cheetah/Utils/Misc.py

Revision f17b49bd2a9cb5c693518283252cdbca4d04136b, 2.7 kB (checked in by Jason Michalski <armooo@armooo.net>, 2 years ago)

Lets try the import again

  • Property mode set to 100644
Line 
1 #!/usr/bin/env python
2 # $Id: Misc.py,v 1.8 2005/11/02 22:26:08 tavis_rudd Exp $
3 """Miscellaneous functions/objects used by Cheetah but also useful standalone.
4
5 Meta-Data
6 ================================================================================
7 Author: Mike Orr <iron@mso.oz.net>
8 License: This software is released for unlimited distribution under the
9          terms of the MIT license.  See the LICENSE file.
10 Version: $Revision: 1.8 $
11 Start Date: 2001/11/07
12 Last Revision Date: $Date: 2005/11/02 22:26:08 $
13 """ 
14 __author__ = "Mike Orr <iron@mso.oz.net>"
15 __revision__ = "$Revision: 1.8 $"[11:-2]
16
17 import os          # Used in mkdirsWithPyInitFile.
18 import types       # Used in useOrRaise.
19 import sys         # Used in die.
20
21 ##################################################
22 ## MISCELLANEOUS FUNCTIONS
23
24 def die(reason):
25     sys.stderr.write(reason + '\n')
26     sys.exit(1)
27
28 def useOrRaise(thing, errmsg=''):
29     """Raise 'thing' if it's a subclass of Exception.  Otherwise return it.
30
31     Called by: Cheetah.Servlet.cgiImport()
32     """
33     if type(thing) == types.ClassType and issubclass(thing, Exception):
34         raise thing(errmsg)
35     return thing
36
37
38 def checkKeywords(dic, legalKeywords, what='argument'):
39     """Verify no illegal keyword arguments were passed to a function.
40
41     in : dic, dictionary (**kw in the calling routine).
42          legalKeywords, list of strings, the keywords that are allowed.
43          what, string, suffix for error message (see function source).
44     out: None.
45     exc: TypeError if 'dic' contains a key not in 'legalKeywords'.
46     called by: Cheetah.Template.__init__()
47     """
48     # XXX legalKeywords could be a set when sets get added to Python.
49     for k in dic.keys(): # Can be dic.iterkeys() if Python >= 2.2.
50         if k not in legalKeywords:
51             raise TypeError("'%s' is not a valid %s" % (k, what))
52
53
54 def removeFromList(list_, *elements):
55     """Save as list_.remove(each element) but don't raise an error if
56        element is missing.  Modifies 'list_' in place!  Returns None.
57     """
58     for elm in elements:
59         try:
60             list_.remove(elm)
61         except ValueError:
62             pass
63
64
65 def mkdirsWithPyInitFiles(path):
66     """Same as os.makedirs (mkdir 'path' and all missing parent directories)
67        but also puts a Python '__init__.py' file in every directory it
68        creates.  Does nothing (without creating an '__init__.py' file) if the
69        directory already exists. 
70     """
71     dir, fil = os.path.split(path)
72     if dir and not os.path.exists(dir):
73         mkdirsWithPyInitFiles(dir)
74     if not os.path.exists(path):
75         os.mkdir(path)
76         init = os.path.join(path, "__init__.py")
77         f = open(init, 'w') # Open and close to produce empty file.
78         f.close()
79
80
81
82 # vim: shiftwidth=4 tabstop=4 expandtab
83
Note: See TracBrowser for help on using the browser.