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
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.