Re: [Python-Dev] (no subject)

2015-02-11 Thread Ian Lee
I split off a separate thread on python-ideas [1] specific to the idea of
introducing + and += operators on a dict.

[1] https://mail.python.org/pipermail/python-ideas/2015-February/031748.html


~ Ian Lee

On Tue, Feb 10, 2015 at 10:35 PM, John Wong gokoproj...@gmail.com wrote:



 On Wed, Feb 11, 2015 at 12:35 AM, Ian Lee ianlee1...@gmail.com wrote:

 +1 for adding + or | operator for merging dicts. To me this operation:

  {'x': 1, 'y': 2} + {'z': 3}
 {'x': 1, 'y': 2, 'z': 3}

 Is very clear.  The only potentially non obvious case I can see then is
 when there are duplicate keys, in which case the syntax could just be
 defined that last setter wins, e.g.:

  {'x': 1, 'y': 2} + {'x': 3}
 {'x': 3, 'y': 2}

 Which is analogous to the example:

 new_dict = dict1.copy()
 new_dict.update(dict2)


 Well looking at just list
 a + b yields new list
 a += b yields modified a
 then there is also .extend in list. etc.

 so do we want to follow list's footstep? I like + because + is more
 natural to read. Maybe this needs to be a separate thread. I am actually
 amazed to remember dict + dict is not possible... there must be a reason
 (performance??) for this...

___
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] (no subject)

2015-02-11 Thread Greg Ewing

John Wong wrote:


I am actually 
amazed to remember dict + dict is not possible... there must be a reason 
(performance??) for this...


I think it's mainly because there is no obviously
correct answer to the question of what to do about
duplicate keys.

--
Greg
___
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] (no subject)

2015-02-11 Thread Georg Brandl
On 02/10/2015 10:33 AM, Paul Moore wrote:
 On 10 February 2015 at 00:29, Neil Girdhar mistersh...@gmail.com wrote:
  function(**kw_arguments, **more_arguments)
 If the key key1 is in both dictionaries, more_arguments wins, right?


 There was some debate and it was decided that duplicate keyword arguments
 would remain an error (for now at least).  If you want to merge the
 dictionaries with overriding, then you can still do:

 function(**{**kw_arguments, **more_arguments})

 because **-unpacking in dicts overrides as you guessed.
 
 Eww. Seriously, function(**{**kw_arguments, **more_arguments}) feels
 more like a Perl executable line noise construct than anything I'd
 ever want to see in Python. And taking something that doesn't work and
 saying you can make it work by wrapping **{...} round it just seems
 wrong.

I don't think people would want to write the above.

I like the sequence and dict flattening part of the PEP, mostly because it
is consistent and should be easy to understand, but the comprehension syntax
enhancements seem to be bad for readability and comprehending what the code
does.

The call syntax part is a mixed bag: on the one hand it is nice to be
consistent with the extended possibilities in literals (flattening),
but on the other hand there would be small but annoying inconsistencies
anyways (e.g. the duplicate kwarg case above).

Georg

___
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] Problem running ./python -m test -v test_whatever

2015-02-11 Thread Brett Cannon
You might want to try asking on python-l...@python.org to get a wider
audience as you might find a fellow AIX user there who can help you out.

On Wed Feb 11 2015 at 12:29:56 AM Dwight dcrs6...@aceweb.com wrote:

  Hi,
 I am primarily a user; but since I can not get a newer version
 of firefox for my system I have begun the very long process of
 trying to build a newer version of firefox for my system.
 I am using an IBM pSeries system running AIX 7.1.
 I am using gcc and IBM ld.
 All the modules I have built are being installed in a directory
 called /opt/alinux.  A lot of linux routines are stored in a directory
 called /opt/freeware and of course IBM has some version of their
 own which are installed in /usr...  Currently there is only one thing
 installed in /usr/local and that is clamscan.
 I have built and installed the tcl.8.6.3, tkl.8.6.3 and python 2.7.9
 into
 /opt/aluinux.
 I am now trying to build and install python 3.4.2.  So far I
 have found a way to compile python successfully.  There are
 only three features missing (_sqlite3, ossaudiodev and spwd).
 The configure command I ran was:
 ./configure --prefix=/opt/alinux --exec-prefix=/opt/alinux
 --enable-shared  --with-system-ffi --enable-ipv6 \
 --with-tcltk-includes='-I/opt/alinux/include'
 --with-tcltk-libs='-L/opt/alinux/lib' | tee MYconfig.log

 After running gmake test I found:
 Ran 509 tests in 47.407s
 FAILED (errors=2, skipped=8)
 Ran 49 tests in 0.065s
 FAILED (failures=2, skipped=1)
 Ran 34 tests in 0.320s
 FAILED (errors=2, skipped=6)
 Ran 80 tests in 1.040s
 FAILED (errors=2, skipped=20)
 Ran 10 tests in 0.366s
 FAILED (failures=1, skipped=2)
 Ran 506 tests in 28.860s
 FAILED (failures=6, errors=5, skipped=83)
 Ran 97 tests in 21.921s
 FAILED (failures=9, skipped=3)
 I then tried to run  ./python -m test -v test_whatever
 and got the following error:
 $ pwd
 /home/surfer/DownLoadLFNs/HTML/NEWS/BuildFirefox/Python-3.4.2
 $ ls -la lib*
 -rw-r--r--1 surfer   Internet   19562608 Feb 10 20:02 libpython3.4m.a
 -rwxr-xr-x1 surfer   Internet   13331408 Feb 10 20:02 libpython3.4m.so
 $ ./python -m test -v test_ssl
 exec(): 0509-036 Cannot load program ./python because of the following
 errors:
 0509-150   Dependent module libpython3.4m.so could not be loaded.
 0509-022 Cannot load module libpython3.4m.so.
 0509-026 System error: A file or directory in the path name does
 not exist.
 I would really appreciate some help in determining what I am doing
 wrong.
 As I said in the beginning I am primarily a user and not a developer.
 I can solve
 some fairly simple problems; but that about it.
 I am guessing that there is some kind of linking problem; but I do not
 know
 how to solve this problem.
 I tried this:
 $
 LDFLAGS=-L/home/surfer/DownLoadLFNs/HTML/NEWS/BuildFirefox/Python-3.4.2

 $ export LDFLAGS
 and got the same results.


  ___
 Python-Dev mailing list
 Python-Dev@python.org
 https://mail.python.org/mailman/listinfo/python-dev
 Unsubscribe: https://mail.python.org/mailman/options/python-dev/
 brett%40python.org

___
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] (no subject)

2015-02-11 Thread John Wong
On Wed, Feb 11, 2015 at 12:35 AM, Ian Lee ianlee1...@gmail.com wrote:

 +1 for adding + or | operator for merging dicts. To me this operation:

  {'x': 1, 'y': 2} + {'z': 3}
 {'x': 1, 'y': 2, 'z': 3}

 Is very clear.  The only potentially non obvious case I can see then is
 when there are duplicate keys, in which case the syntax could just be
 defined that last setter wins, e.g.:

  {'x': 1, 'y': 2} + {'x': 3}
 {'x': 3, 'y': 2}

 Which is analogous to the example:

 new_dict = dict1.copy()
 new_dict.update(dict2)


 Well looking at just list
a + b yields new list
a += b yields modified a
then there is also .extend in list. etc.

so do we want to follow list's footstep? I like + because + is more natural
to read. Maybe this needs to be a separate thread. I am actually amazed to
remember dict + dict is not possible... there must be a reason
(performance??) for this...
___
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] (no subject)

2015-02-11 Thread Greg Ewing

Georg Brandl wrote:

The call syntax part is a mixed bag: on the one hand it is nice to be
consistent with the extended possibilities in literals (flattening),
but on the other hand there would be small but annoying inconsistencies
anyways (e.g. the duplicate kwarg case above).


That inconsistency already exists -- duplicate keys are
allowed in dict literals but not calls:

 {'a':1, 'a':2}
{'a': 2}

--
Greg
___
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] (no subject)

2015-02-11 Thread Antoine Pitrou
On Wed, 11 Feb 2015 18:45:40 +1300
Greg Ewing greg.ew...@canterbury.ac.nz wrote:
 Antoine Pitrou wrote:
 bytearray(ba) + bbc
  
  bytearray(b'abc')
  
 ba + bytearray(bbc)
  
  b'abc'
  
  It's quite convenient.
 
 It's a bit disconcerting that the left operand wins,
 rather than one of them being designated as the
 wider type, as occurs with many other operations on
 mixed types, e.g. int + float.

There is no wider type here. This behaviour is perfectly logical.

 In any case, these seem to be special-case combinations.

No:

 babc + array.array(b, bdef)
b'abcdef'
 bytearray(babc) + array.array(b, bdef)
bytearray(b'abcdef')

Regards

Antoine.


___
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com