annotate pylearn/shared/layers/util.py @ 1496:93b8373c6735

Prefix loggers with 'pylearn.' to ensure there is no conflict when using Pylearn code within another library
author Olivier Delalleau <delallea@iro>
date Mon, 22 Aug 2011 11:28:48 -0400
parents bf2f71084d59
children
rev   line source
834
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
1 """A few little internal functions"""
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
2 import logging
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
3
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
4 def update_locals(obj, dct):
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
5 if 'self' in dct:
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
6 del dct['self']
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
7 obj.__dict__.update(dct)
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
8
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
9 def LogFn(f):
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
10 def rval(*args):
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
11 f(' '.join(str(a) for a in args))
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
12 return staticmethod(rval)
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
13
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
14 def add_logging(cls, name=None, level=None):
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
15 """ Add logging functions to a class: self._debug, self._info, self._warn, self._warning,
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
16 self._error.
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
17
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
18 All of these functions has the same signature. They accept a variable number of positional
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
19 arguments, and print them all casted to string (and concatenated with a ' '.)
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
20
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
21 :type name: str
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
22 :param name: the name of the logger.
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
23
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
24 :type level: None, str, type(logging.INFO)
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
25 :param level: a logging level (e.g. logging.INFO), or the name of a logging level (e.g
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
26 'INFO'). If level is None, then this function doesn't set the logging level.
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
27
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
28 """
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
29 if name is None:
1496
93b8373c6735 Prefix loggers with 'pylearn.' to ensure there is no conflict when using Pylearn code within another library
Olivier Delalleau <delallea@iro>
parents: 860
diff changeset
30 name = "pylearn.shared.layers.%s" % cls.__name__
834
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
31 cls._logger = logging.getLogger(name)
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
32 if level:
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
33 try:
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
34 level = getattr(logging, level)
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
35 except:
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
36 pass
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
37 cls._logger.setLevel(level)
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
38
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
39 cls._debug = LogFn(cls._logger.debug)
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
40 cls._info = LogFn(cls._logger.info)
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
41 cls._warn = cls._warning = LogFn(cls._logger.warn)
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
42 cls._error = LogFn(cls._logger.error)
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
43 cls._critical = LogFn(cls._logger.critical)
580087712f69 added shared.layers
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff changeset
44 cls._fatal = LogFn(cls._logger.fatal)