pythonpython-3.xloggingerror-loggingpsychopy

PsychoPy: Runtime error while logging a message ("TypeError: '<' not supported between instances of 'str' and 'int'")


I get a syntax error in PsychoPy’s PTB logging code. My code:

from psychopy import logging
log = logging.LogFile("WS_Dev.log", level = logging.DEBUG, filemode = "w")
logging.log(logging.DEBUG, "in getArguments()")

and the error message:

File "./myProject.py", line 119, in getArguments
    logging.log(logging.DEBUG, "in getArguments()")
  File "./myProject-env/lib/python3.8/site-packages/psychopy/logging.py", line 410, in log
    root.log(msg, level=level, t=t, obj=obj)
  File "./myProject-env/lib/python3.8/site-packages/psychopy/logging.py", line 282, in log
    if level < self.lowestTarget:
TypeError: '<' not supported between instances of 'str' and 'int'

While I could get into PsychoPy's source code and fix this myself, I don't want to modify public domain open-source software.
(1) Has anybody else seen this, or got a workaround? I can't believe PsychoPy shipped with such a glaring bug. Yet I see no mention of it in either the PsychoPy forum or stack overflow. (2) How can I file a bug report against PsychoPy, other than posting this question in the PsychoPy forum?

macOS 12.2.1 (Monterey), 2017 MacBook Pro, PsychoPy 2021.2.3, psychtoolbox 3.0.18.2, Python 3.8


Solution

  • If you look at the documentation for logging.log...

    >>> from psychopy import logging
    >>> help(logging.log)
    
    Help on function log in module psychopy.logging:
    
    log(msg, level, t=None, obj=None)
        Log a message
    
        usage::
            log(level, msg, t=t, obj=obj)
    
        Log the msg, at a  given level on the root logger
    

    ...it looks like the usage:: documentation has the first two parameters backwards. According to the function signature, you should be calling:

    logging.log("in getArguments()", logging.DEBUG)
    

    And that seems to work without errors when I test it.

    This seems like a good opportunity for making a documentation pull request against the project.