Traceback (most recent call last):


 "PATH/.tox/docs/lib/python3.8/site-packages/sphinx/cmd/build.py", line 280, in build_main

app.build(args.force_all, filenames)


 "PATH/.tox/docs/lib/python3.8/site-packages/sphinx/application.py", line 346, in build

self.builder.build_all()


 "PATH/.tox/docs/lib/python3.8/site-packages/sphinx/builders/__init__.py", line 259, in build_all

self.build(None, summary=__('all source files'), method='all')


 "PATH/.tox/docs/lib/python3.8/site-packages/sphinx/builders/__init__.py", line 310, in build

updated_docnames = set(self.read())


 "PATH/.tox/docs/lib/python3.8/site-packages/sphinx/builders/__init__.py", line 417, in read

self._read_serial(docnames)


 "PATH/.tox/docs/lib/python3.8/site-packages/sphinx/builders/__init__.py", line 438, in _read_serial

self.read_doc(docname)


 "PATH/.tox/docs/lib/python3.8/site-packages/sphinx/builders/__init__.py", line 478, in read_doc

doctree = read_doc(self.app, self.env, self.env.doc2path(docname))


 "PATH/.tox/docs/lib/python3.8/site-packages/sphinx/io.py", line 221, in read_doc

pub.publish()


 "PATH/.tox/docs/lib/python3.8/site-packages/docutils/core.py", line 217, in publish

self.document = self.reader.read(self.source, self.parser,


 "PATH/.tox/docs/lib/python3.8/site-packages/sphinx/io.py", line 126, in read

self.parse()


 "PATH/.tox/docs/lib/python3.8/site-packages/docutils/readers/__init__.py", line 77, in parse

self.parser.parse(self.input, document)


 "PATH/.tox/docs/lib/python3.8/site-packages/sphinx/parsers.py", line 104, in parse

self.statemachine.run(inputlines, document, inliner=self.inliner)


 "PATH/.tox/docs/lib/python3.8/site-packages/docutils/parsers/rst/states.py", line 170, in run

results = StateMachineWS.run(self, input_lines, input_offset,


 "PATH/.tox/docs/lib/python3.8/site-packages/docutils/statemachine.py", line 241, in run

context, next_state, result = self.check_line(


 "PATH/.tox/docs/lib/python3.8/site-packages/docutils/statemachine.py", line 459, in check_line

return method(match, context, next_state)


 "PATH/.tox/docs/lib/python3.8/site-packages/docutils/parsers/rst/states.py", line 2769, in underline

self.section(title, source, style, lineno - 1, messages)


 "PATH/.tox/docs/lib/python3.8/site-packages/docutils/parsers/rst/states.py", line 327, in section

self.new_subsection(title, lineno, messages)


 "PATH/.tox/docs/lib/python3.8/site-packages/docutils/parsers/rst/states.py", line 393, in new_subsection

newabsoffset = self.nested_parse(


 "PATH/.tox/docs/lib/python3.8/site-packages/docutils/parsers/rst/states.py", line 281, in nested_parse

state_machine.run(block, input_offset, memo=self.memo,


 "PATH/.tox/docs/lib/python3.8/site-packages/docutils/parsers/rst/states.py", line 196, in run

results = StateMachineWS.run(self, input_lines, input_offset)


 "PATH/.tox/docs/lib/python3.8/site-packages/docutils/statemachine.py", line 241, in run

context, next_state, result = self.check_line(


 "PATH/.tox/docs/lib/python3.8/site-packages/docutils/statemachine.py", line 459, in check_line

return method(match, context, next_state)


 "PATH/.tox/docs/lib/python3.8/site-packages/docutils/parsers/rst/states.py", line 2769, in underline

self.section(title, source, style, lineno - 1, messages)


 "PATH/.tox/docs/lib/python3.8/site-packages/docutils/parsers/rst/states.py", line 327, in section

self.new_subsection(title, lineno, messages)


 "PATH/.tox/docs/lib/python3.8/site-packages/docutils/parsers/rst/states.py", line 393, in new_subsection

newabsoffset = self.nested_parse(


 "PATH/.tox/docs/lib/python3.8/site-packages/docutils/parsers/rst/states.py", line 281, in nested_parse

state_machine.run(block, input_offset, memo=self.memo,


 "PATH/.tox/docs/lib/python3.8/site-packages/docutils/parsers/rst/states.py", line 196, in run

results = StateMachineWS.run(self, input_lines, input_offset)


 "PATH/.tox/docs/lib/python3.8/site-packages/docutils/statemachine.py", line 241, in run

context, next_state, result = self.check_line(


 "PATH/.tox/docs/lib/python3.8/site-packages/docutils/statemachine.py", line 459, in check_line

return method(match, context, next_state)


 "PATH/.tox/docs/lib/python3.8/site-packages/docutils/parsers/rst/states.py", line 2342, in explicit_markup

nodelist, blank_finish = self.explicit_construct(match)


 "PATH/.tox/docs/lib/python3.8/site-packages/docutils/parsers/rst/states.py", line 2354, in explicit_construct

return method(self, expmatch)


 "PATH/.tox/docs/lib/python3.8/site-packages/docutils/parsers/rst/states.py", line 2096, in directive

return self.run_directive(


 "PATH/.tox/docs/lib/python3.8/site-packages/docutils/parsers/rst/states.py", line 2146, in run_directive

result = directive_instance.run()


 "PATH/.tox/docs/lib/python3.8/site-packages/sphinx/ext/autodoc/directive.py", line 146, in run

documenter.generate(more_content=self.content)


 "PATH/.tox/docs/lib/python3.8/site-packages/sphinx/ext/autodoc/__init__.py", line 957, in generate

self.document_members(all_members)


 "PATH/.tox/docs/lib/python3.8/site-packages/sphinx/ext/autodoc/__init__.py", line 838, in document_members

documenter.generate(


 "PATH/.tox/docs/lib/python3.8/site-packages/sphinx/ext/autodoc/__init__.py", line 1679, in generate

return super().generate(more_content=more_content,


 "PATH/.tox/docs/lib/python3.8/site-packages/sphinx/ext/autodoc/__init__.py", line 947, in generate

self.add_directive_header(sig)


 "PATH/.tox/docs/lib/python3.8/site-packages/sphinx/ext/autodoc/__init__.py", line 1579, in add_directive_header

bases = [restify(cls) for cls in self.object.__orig_bases__]


 "PATH/.tox/docs/lib/python3.8/site-packages/sphinx/ext/autodoc/__init__.py", line 1579, in <listcomp>

bases = [restify(cls) for cls in self.object.__orig_bases__]


 "PATH/.tox/docs/lib/python3.8/site-packages/sphinx/util/typing.py", line 103, in restify

return _restify_py37(cls)


 "PATH/.tox/docs/lib/python3.8/site-packages/sphinx/util/typing.py", line 142, in _restify_py37

text += r"\ [%s]" % ", ".join(restify(a) for a in cls.__args__)


 "PATH/.tox/docs/lib/python3.8/site-packages/sphinx/util/typing.py", line 142, in <genexpr>

text += r"\ [%s]" % ", ".join(restify(a) for a in cls.__args__)


 "PATH/.tox/docs/lib/python3.8/site-packages/sphinx/util/typing.py", line 103, in restify

return _restify_py37(cls)


 "PATH/.tox/docs/lib/python3.8/site-packages/sphinx/util/typing.py", line 158, in _restify_py37

return ':obj:`%s.%s`' % (cls.__module__, cls.__name__)
AttributeError: 'ForwardRef' object has no attribute '__name__'

Traceback (most recent call last):


 "/usr/local/src/security_monkey/venv/bin/monkey", line 11, in <module>

load_entry_point('security-monkey', 'console_scripts', 'monkey')()


 "/usr/local/src/security_monkey/security_monkey/manage.py", line 786, in main

manager.run()


 "/usr/local/src/security_monkey/venv/lib/python2.7/site-packages/Flask_Script-0.6.3-py2.7.egg/flask_script/__init__.py", line 397, in run

result = self.handle(sys.argv[0], sys.argv[1:])


 "/usr/local/src/security_monkey/venv/lib/python2.7/site-packages/Flask_Script-0.6.3-py2.7.egg/flask_script/__init__.py", line 376, in handle

return handle(app, *positional_args, **kwargs)


 "/usr/local/src/security_monkey/venv/lib/python2.7/site-packages/Flask_Script-0.6.3-py2.7.egg/flask_script/commands.py", line 145, in handle

return self.run(*args, **kwargs)


 "/usr/local/src/security_monkey/security_monkey/manage.py", line 91, in find_changes

manual_run_change_finder(account_names, monitor_names)


 "/usr/local/src/security_monkey/security_monkey/task_scheduler/tasks.py", line 183, in manual_run_change_finder

find_changes(account, tech)


 "/usr/local/src/security_monkey/security_monkey/task_scheduler/tasks.py", line 216, in find_changes

audit_changes([account_name], [monitor_name], False, debug)


 "/usr/local/src/security_monkey/security_monkey/task_scheduler/tasks.py", line 240, in audit_changes

_audit_changes(account, monitor.auditors, send_report, debug)


 "/usr/local/src/security_monkey/security_monkey/task_scheduler/tasks.py", line 292, in _audit_changes

au.audit_objects()


 "/usr/local/src/security_monkey/security_monkey/auditor.py", line 673, in audit_objects

method(item)


 "/usr/local/src/security_monkey/security_monkey/auditors/gcp/gcs/bucket.py", line 165, in check_default_object_acl

process_issues(self, ok, errors, item)


 "/usr/local/src/security_monkey/security_monkey/auditors/gcp/util.py", line 43, in process_issues

sev = auditor.gcp_config.ISSUE_MAP[issue.code]['score']
AttributeError: 'str' object has no attribute 'code'
