SCons.Util.Flatten does not support Python3's dictionary view objects

Mike Haboustak <[email protected]>
Newsgroups gmane.comp.programming.tools.scons.user
Message-ID <CAMGCZSnUN3JsGUoMDTbm70HoASFc5HULBi1o6-qRA+uH1+sgUw@mail.gmail.com>
I've been testing SCons with Python3 and have run into some trouble
using the Depends builder. My dependency sources are the values of a
dictionary and I'm passing the result of dict.values() to Depends.

resources = {
    'icon': 'resources/icon.png',
    'splash': 'resources/splash.png',
}
env.Depends(myprog, resources.values())

When run under Python3, SCons fails to build with the following traceback:
AttributeError: 'dict_values' object has no attribute 'get_state':
  File "/usr/local/lib/scons/SCons/Script/Main.py", line 1361:
    _exec_main(parser, values)
  File "/usr/local/lib/scons/SCons/Script/Main.py", line 1324:
    _main(parser)
  File "/usr/local/lib/scons/SCons/Script/Main.py", line 1103:
    nodes = _build_targets(fs, options, targets, target_top)
  File "/usr/local/lib/scons/SCons/Script/Main.py", line 1298:
    jobs.run(postfunc = jobs_postfunc)
  File "/usr/local/lib/scons/SCons/Job.py", line 111:
    self.job.start()
  File "/usr/local/lib/scons/SCons/Job.py", line 193:
    task = self.taskmaster.next_task()
  File "/usr/local/lib/scons/SCons/Taskmaster.py", line 960:
    node = self._find_next_ready_node()
  File "/usr/local/lib/scons/SCons/Taskmaster.py", line 851:
    childstate = child.get_state()


In python 3, dict.values() returns a dictionary view object:
https://docs.python.org/3/library/stdtypes.html#dictionary-view-objects

The problem starts with a lack of support for these dictionary views
in SCons.Util.Flatten:
items = {"a":1, "b":2, "c":3}
args = SCons.Util.Flatten(items.values())
print(args)

result: [dict_values([2, 1, 3])]

Thanks,
Mike Haboustak
_______________________________________________
Scons-users mailing list
[email protected]
https://pairlist4.pair.net/mailman/listinfo/scons-users
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.