python-rtmbot icon indicating copy to clipboard operation
python-rtmbot copied to clipboard

In the case of an error path, `cls` may be undefined on line 155 of core.py

Open SimplicityGuy opened this issue 8 years ago • 3 comments

  • [X] I've read and understood the Contributing guidelines and have done my best effort to follow them.
  • [X] I've read and agree to the Code of Conduct.
  • [X] I've searched for any related issues and avoided creating a duplicate issue.

Description

When running using Python 3.6, I get the following error:

Traceback (most recent call last):
  File "/usr/local/bin/rtmbot", line 11, in <module>
    load_entry_point('rtmbot==0.4.0', 'console_scripts', 'rtmbot')()
  File "/usr/local/lib/python3.6/site-packages/rtmbot/bin/run_rtmbot.py", line 31, in main
    bot.start()
  File "/usr/local/lib/python3.6/site-packages/rtmbot/core.py", line 99, in start
    self._start()
  File "/usr/local/lib/python3.6/site-packages/rtmbot/core.py", line 74, in _start
    self.load_plugins()
  File "/usr/local/lib/python3.6/site-packages/rtmbot/core.py", line 155, in load_plugins
    plugin_config = self.config.get(cls.__name__, {})
UnboundLocalError: local variable 'cls' referenced before assignment

Reproducible in:

  • [ ] This is reproducible in the sample project. RTMBot version: 0.4.0 Python version: 3.6.0 OS Version: Debian Stretch (running RTMBot in python:3.6 docker container)

Steps to reproduce:

  1. docker run -it python:3.6 bash
  2. pip install rtmbot
  3. add a testing rtmbot.conf file
  4. run rtmbot

Expected result:

I expected that the bot would run. (well, when real bot code was in the container...)

Actual result:

The following error happened:

root@2dc3d0e0a668:/# rtmbot
Traceback (most recent call last):
  File "/usr/local/bin/rtmbot", line 11, in <module>
    load_entry_point('rtmbot==0.4.0', 'console_scripts', 'rtmbot')()
  File "/usr/local/lib/python3.6/site-packages/rtmbot/bin/run_rtmbot.py", line 31, in main
    bot.start()
  File "/usr/local/lib/python3.6/site-packages/rtmbot/core.py", line 99, in start
    self._start()
  File "/usr/local/lib/python3.6/site-packages/rtmbot/core.py", line 74, in _start
    self.load_plugins()
  File "/usr/local/lib/python3.6/site-packages/rtmbot/core.py", line 155, in load_plugins
    plugin_config = self.config.get(cls.__name__, {})
UnboundLocalError: local variable 'cls' referenced before assignment

SimplicityGuy avatar Mar 10 '17 05:03 SimplicityGuy

There is a potential that cls is never defined in this code path. It's not specific to Python 3.6. Changing title.

SimplicityGuy avatar Mar 10 '17 16:03 SimplicityGuy

I have run into this same issue @SimplicityGuy. This only occurs when I try specify a BASE_PATH in the rtmbot.conf file. Do you have this same configuration?

finnito avatar Aug 10 '17 12:08 finnito

I have met the same issue in 0.4.1 Just because I write wrong plugin name in rtmbot.conf

BattleForged avatar Sep 19 '18 07:09 BattleForged