Re: SCons.Util.Flatten does not support Python3's dictionary view objects
Bill Deegan <[email protected]>
| Newsgroups | gmane.comp.programming.tools.scons.user |
|---|---|
| Message-ID | <CAEyG4CFBdJwNn0JLEV1dK7rjuN9bCkTAWO=i6o7qjmVuL=tfCg@mail.gmail.com> |
I'd suggest you change to sort the values before adding to depends? The order of dependencies changing can cause a rebuild. I've reproduced the issue. Please file an issue on github. Likely we'll get a fix fairly soon. in the interim. env.Depends(myprog, list(resources.values())) might work to get you going? On Wed, Oct 17, 2018 at 10:21 AM Mike Haboustak <[email protected]> wrote: > 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 > _______________________________________________ Scons-users mailing list [email protected] https://pairlist4.pair.net/mailman/listinfo/scons-users