The PEP 308 vote is summarized at:
http://tinyurl.com/763f
Here are some of the highlights:
* 518 votes were received. Of these, 82 used a RejectAll
ballot and 436 used the original ballot.
* 363 had a preferred syntax they found acceptable while
155 found no acceptable syntax.
* For the second ranked syntax, the ratio dropped to
286:231 in favor of a change. This means that 77
people found only one syntax to be acceptable.
* For the third ranked syntax, the ratio dropped to
202:312. This indicates that over half of the voters
would prefer no change if they can't have one of
their first two choices.
* The highest ranked constructs were:
235 for (if C: x else: y)
206 for C ? x : y
* The 235 breaks down to 177 accepting and 58 rejecting.
If the RejectAll votes are attributed entirely to that
syntax, the ratio becomes 177 favoring to 140 opposing.
* The individual votes were highly expressive and are
worth reviewing:
http://tinyurl.com/75z2http://tinyurl.com/75z3
* The write-in votes had more accepts than rejects but
had no clustering of syntax preferences.
* The downfall of all voting systems is not in the data
collection, rather it is in the way the rankings are
combined. I avoid this issue by not declaring a
winner. Instead, Guido is being given a straight
tally and a copy of all of the individual votes.
This works especially well because his vote outweighs
all of the others.
* Though the results lean towards accepting the PEP as
proposed, it is not decisive. Some of the no-change
votes included strong pleas. This will certainly be
a consideration.
* There were three or four ballots received after this
summary was prepared but before it was posted. I'll
include them for Guido in a separate email. Please
stop sending in new votes.
Raymond Hettinger
The PEP 308 vote is summarized at:
http://tinyurl.com/763f
Here are some of the highlights:
* 518 votes were received. Of these, 82 used a RejectAll
ballot and 436 used the original ballot.
* 363 had a preferred syntax they found acceptable while
155 found no acceptable syntax.
* For the second ranked syntax, the ratio dropped to
286:231 in favor of a change. This means that 77
people found only one syntax to be acceptable.
* For the third ranked syntax, the ratio dropped to
202:312. This indicates that over half of the voters
would prefer no change if they can't have one of
their first two choices.
* The highest ranked constructs were:
235 for (if C: x else: y)
206 for C ? x : y
* The 235 breaks down to 177 accepting and 58 rejecting.
If the RejectAll votes are attributed entirely to that
syntax, the ratio becomes 177 favoring to 140 opposing.
* The individual votes were highly expressive and are
worth reviewing:
http://tinyurl.com/75z2http://tinyurl.com/75z3
* The write-in votes had more accepts than rejects but
had no clustering of syntax preferences.
* The downfall of all voting systems is not in the data
collection, rather it is in the way the rankings are
combined. I avoid this issue by not declaring a
winner. Instead, Guido is being given a straight
tally and a copy of all of the individual votes.
This works especially well because his vote outweighs
all of the others.
* Though the results leans toward accepting the PEP as
proposed, it is not decisive. Some of the no-change
votes included strong pleas. This will certainly be
a consideration.
* There were three or four ballots received after this
summary was prepared but before it was posted. I'll
include them for Guido in a separate email. Please
stop sending in new votes.
This is to announce the next PyGTA (Toronto and area
Python/Zope User Group) meeting, which will be held
Tuesday, March 25, 2003. (Apologies for making this
so close to PyCon DC 2003 (http://www.python.org/pycon/)
but it was again the only day free.)
The location is the same as the last few times, but back
in room 23 again instead of the auditorium.
Further details will as usual be posted to our wiki
page at http://web.engcorp.com/pygta/wiki/NextMeeting .
-Peter and Ian, meeting organizers
New News:
=== ====
I have updated the version of Python to 2.2.2-7. The tarballs should be
available on a Cygwin mirror near you shortly.
On Thu, Mar 06, 2003 at 05:18:07PM -0500, Jason Tishler wrote:
> Otherwise, this package should be identical to the previous one.
I knew when I wrote the above I would regret it. :,)
The only purpose of this release is to fix a build issue that prevented
the _tkinter module from being included in the python-2.2.2-6 package.
I apologize for any inconvenience.
Old News:
=== ====
Python is an interpreted, interactive, object-oriented programming
language. If interested, see the Python web site for more details:
http://www.python.org/
Please read the README file:
/usr/doc/Cygwin/python-2.2.2.README
since it covers requirements, installation, known issues, etc.
To update your installation, click on the "Install Cygwin now" link on
the http://cygwin.com/ web page. This downloads setup.exe to your
system. Then, run setup and answer all of the questions.
Note that we have recently stopped downloads from sources.redhat.com
(aka cygwin.com) due to bandwidth limitations. This means that you will
need to find a mirror which has this update.
In the US,
ftp://mirrors.rcn.net/mirrors/sources.redhat.com/cygwin/
is a reliable high bandwidth connection.
In Germany,
ftp://ftp.uni-erlangen.de/pub/pc/gnuwin32/cygwin/mirrors/cygnus/
is usually pretty good.
In the UK,
http://programming.ccp14.ac.uk/ftp-mirror/programming/cygwin/pub/cygwin/
is usually up-to-date within 48 hours.
If one of the above doesn't have the latest version of this package
then you can either wait for the site to be updated or find another
mirror.
The setup.exe program will figure out what needs to be updated on your
system and will install newer packages automatically.
If you have questions or comments, please send them to the Cygwin
mailing list at: cygwin(a)cygwin.com . I would appreciate if you would
use this mailing list rather than emailing me directly. This includes
ideas and comments about the setup utility or Cygwin in general.
If you want to make a point or ask a question, the Cygwin mailing list
is the appropriate place.
*** CYGWIN-ANNOUNCE UNSUBSCRIBE INFO ***
If you want to unsubscribe from the cygwin-announce mailing list, look
at the "List-Unsubscribe: " tag in the email header of this message.
Send email to the address specified there. It will be in the format:
cygwin-announce-unsubscribe-you=yourdomain.com(a)cygwin.com
Jason
--
PGP/GPG Key: http://www.tishler.net/jason/pubkey.asc or key servers
Fingerprint: 7A73 1405 7F2B E669 C19D 8784 1AFD E4CC ECF4 8EF6
PXTL is a specification for a templating format mixing XML-based markup
languages with Python code. It is especially suitable for use in a web
application's page output stage.
*Another* web templating system? Yes, I'm afraid so. PXTL does have a few
features which are (as far as I know) unique, though:
- it's a pure-XML format, which should make syntax and nesting errors
very easy to debug (especially with a syntax-colouring, well-formedness
checking text editor);
- output can automatically be translated into legacy (non-XML) HTML or
non-tag-based formats;
- a number of XML processing instructions for including content in
various common escaping formats;
- elements from a separate namespace for flow-control (if, for, def, etc.),
to allow a Python code hierarchy and XML markup hierarchy to be mixed
cleanly.
I'm pleased to announce the second draft of the PXTL specification, and I'd
appreciate any feedback on it from web and XML authors (in particular those
familiar with XHTML) either by mail or to c.l.py.
http://www.doxdesk.com/pxtl/
A reference implementation will be made available (under some manner of
open-source licence) some time in the next few months, taking into account
any comments received.
cheers,
--
Andrew Clover
mailto:and@doxdesk.com
http://www.doxdesk.com/
I have just released 0.1.2 of CUTE. The CUTE User-friendly Text Editor is a
scintilla and QT based code editor, which can be extented using the python
scripting language. In addition CUTE has a command box for vi-like commands.
It is available for X11/Linux and should be portable to other platforms.
In addition CUTE has a command box for vi-like commands.
The project page of CUTE is http://cute.sourceforge.net.
It has also a page at sourceforge.net: http://sourceforge.net/projects/cute
This message is to remind you that TOMORROW (Saturday) is the last day
to vote in the complementary, UNOFFICIAL vote on adding a ternary
operator to Python (PEP-308). Response has been good so far, but the
more people that participate, the more useful the results will be.
Please participate if you have the time.
A copy of the ballot, and instructions on how to vote are included
below, in case you missed the first announcement.
More information about this additional vote, and why it was organized
will be found here:
http://mail.python.org/pipermail/python-list/2003-March/151680.html
*****
IMPORTANT NOTE:
This is NOT a ballot for the "official" PEP-308 vote being run by
Raymond Hettinger. It is for a different vote that is intended to
COMPLEMENT the results of the official vote, by using a different type
of ballot, and a different method of tallying the results (Condorcet's
Method), for those who may be interested. If enough people choose to
participate, it will provide a high-quality source of additional
information about the preferences of the Python community regarding the
ternary operator.
This vote is NOT intended to compete with, or substitute for the
official vote. Please participate in both votes if you have the time,
but BE SURE to vote in the official one if you care about the outcome of
PEP-308. See the explanations in my posting to comp.lang.python two
days ago for more information about the reasons for this supplemental
vote on PEP-308 ("ANNOUNCE: Complementary VOTE re: PEP 308 Ternary
Proposal", Sun, 02 Mar 2003 17:44:33 -0600).
NOMINATIONS
The two-day nomination period for additional syntax proposals has now
ENDED. No additional nominations were received, so the ballot is as
follows:
BALLOT
----------
XX NO TERNARY
XX t if C else f
XX if C then t else f
XX (if C: t else: f)
XX if C: t else: f
XX C ? t : f
XX C ? t ! f
XX cond(C, t, f)
XX C ?? t || f
XX C then t else f
XX t when C else f
XX C ? t else f
XX C -> t else f
XX C -> (t, f)
XX [t if C else f]
XX ifelse C: t else f
XX select C: t else f
XX when C: t else f
XX case C: t else f
XX <if C then t else f>
XX C and t else f
----------
HOW TO VOTE
Voting is a simple matter of RANKING the alternatives of interest by
replacing the 'XX' that precedes each option with a 2-digit number. For
example, you would use '01' for your FAVOURITE (highest-ranked) option,
and greater numbers (02, 03,...) for lower-ranked alternatives.
You may RE-ORDER the options on the ballot. It is often easier when
there are many options to reorder them manually from best to worst, and
then assign rankings. Note though, that you must STILL assign a rank
number to each option, since it is always the NUMBER that determines the
rank, not the ordering.
You may assign the SAME RANK to multiple options if you consider them to
be equally good/bad. Doing this is equivalent to abstaining from
participation in any decision between these equally-ranked alternatives.
To simplify voting, you may TRUNCATE your ballot by leaving certain
options UNRANKED (for any options you consider to be so bad and
unwinnable as to not be worth considering). If you wish to do this,
either:
a) leave 'XX' in front of the unwanted option(s) in your submitted
ballot, rather than replacing it with a rank number, or
b) delete the line(s) of the ballot that contain the unwanted options.
You can also use a combination of both methods. In either case, these
truncated options will be interpreted the same as if they had been
ranked EQUALLY, and LOWER than all explicitly ranked alternatives.
While truncation and equal rankings provide convenience, ranking many
options (even those you dislike) is a good idea. See the STRATEGY TIPS
section (below) for reasons why.
Note that the status quo option of "NO TERNARY" simply appears as one of
the available options, and every other proposed syntax appears as a
separate option on the ballot. By placing "NO TERNARY" somewhere within
the middle of your ranking, you can express the desire to have a ternary
operator added to Python only if certain forms of syntax are used, and
reject alternatives that you dislike (while still expressing preferences
among these bad alternatives, in case one or more of them proves to be
winnable). The status quo option can of course also be ranked first or
last, if you feel either that (a) no ternary is acceptable in any form,
or alternately, (b) should be added to the language at any cost.
A sample completed ballot might look like:
----------
02 (if C: t else: f)
01 t if C else f
02 NO TERNARY
XX if C then t else f
03 if C: t else: f
----------
Here, the voter's favourite option is "t if C else f". The 4th option
is unranked, and could have instead been deleted to indicate the same
thing. Surrounding lines of hyphens marking the beginning and end of
the ballot are appreciated for clarity, but not required.
SUBMITTING YOUR BALLOT
You may vote by submitting your email ballot to:
------------------
pepvote(a)canada.com
------------------
Your final vote must be received within 96 HOURS (4 days, approx.
Wed-Sat) of the time this message first appears on comp.lang.python
and/or comp.lang.python.announce for it to be counted in the final
result.
A CONFIRMATION message will be returned for each ballot that is
received, identifying any problems. Unconfirmed ballots will not appear
in the results, so if you don't receive a reply within a few hours, you
may wish to send your ballot again (I'm confirming votes manually, so
the response will not be immediate).
If you decide to CHANGE YOUR VOTE, just send a revised ballot containing
your new preferences. The last confirmed ballot for each email address
will be the one that appears in the final results.
RESULTS
Results will be published on Sunday, March 9th, but NOT before the
voting period of the "official" vote has ended (Noon, EST). Published
results will be sent to comp.lang.python and comp.lang.python.announce.
Results will include (among other things) a list containing each voter's
NAME, EMAIL ADDRESS (munged), and COMPLETED BALLOT to allow for
independent verification. Therefore, if you do not want any or all of
this information about you made public, DO NOT VOTE! Please refer to
the previous message announcing this vote for details about what types
of information will appear in the results.
STRATEGY TIPS
You may be unfamiliar with CONDORCET'S METHOD, the system of voting used
here (unless you happen to be a member of the Debian Project :-).
Although completing a ranked ballot is technically very easy, if you
wish to know how to maximise the chances of getting the outcome you
want, you should read following information before completing your
ballot:
*****
1. Condorcet's method of counting ranked ballots is very different from
other systems (STV/AV/IRV, Borda, etc.) that also use a ranked ballot.
Therefore, it is a bad idea to attempt to vote strategically based on
what you know (or think you know) about how those systems work. The
best strategies for one method of voting will usually fail very badly
when applied in another, even if the form of the ballot is similar.
2. You should NOT assume that ranking any UNACCEPTABLE options will harm
the chances of electing your PREFERRED option(s). Condorcet's method is
a system of pairwise voting, where the overall result is determined by
finding the majority winners of a series of two-way races between every
possible pair of alternatives. Not ranking (truncating) some options,
or assigning the same rank to a group of options is therefore equivalent
to ABSTAINING from participation in any decision between those
equally-ranked alternatives. Therefore, if the final choice in the
election is between two options, both of which you dislike -- but not
EQUALLY -- you may later regret not having participated in that
decision.
3. You should also NOT vote for what you believe to be an acceptable,
popular choice (the "lesser evil" compromise) ahead of your true
favourite(s), in the belief that this will somehow help to prevent the
election of a popular, disliked alternative (the "greater evil"). This
type of strategy is often necessary in plurality ("first-past-the-post")
voting, but is ineffective and unnecessary with Condorcet's method.
Condorcet's method finds the best compromise automatically, if one is
needed, so doing this will simply harm the chances of electing your true
favourite. See http://www.electionmethods.org/Condorcet.htm for a
detailed explanation of this.
*******************************************************
With CONDORCET'S METHOD, you will maximise the power and effectiveness
of your ballot by providing a COMPLETE and SINCERE expression of your
true preferences. You should only rank options equally if you genuinely
consider them to be equally good (or bad).
*******************************************************
--
Norman Petry
I am happy to announce the initial public release of MyHDL, a
Python package for using Python as a hardware description language.
This may be of interest to:
- Pythoneers interested in applications of Python generators
- hardware designers interested in the wonders of Python
You can find it at http://jandecaluwe.com/Tools/MyHDL/Overview.html.
Release notes:
MyHDL 0.1
---------
MyHDL is a Python package for using Python as a hardware description
language. Popular hardware description languages, like Verilog and
VHDL, are compiled languages. MyHDL with Python can be viewed as a
"scripting language" counterpart of such languages. However, Python is
more accurately described as a very high level language (VHLL). MyHDL
users have access to the amazing power and elegance of Python for their
modeling work.
The key idea behind MyHDL is to use Python generators to model the
concurrency required in hardware descriptions. As generators are a
recent Python feature, MyHDL requires Python 2.2.2 or higher.
MyHDL 0.1 is the initial public release of the package. It can be used
to experiment with high level modeling, and with verification
techniques such as unit testing. But the primary goal is to generate
interest and to solicit feedback.
In a future release, MyHDL will hopefully be coupled to hardware
simulators for languages such as Verilog and VHDL. That would turn
Python into a powerful hardware verification language.
--
Jan Decaluwe - Resources bvba
Losbergenlaan 16, B-3010 Leuven, Belgium
mailto:jan@jandecaluwe.com
http://jandecaluwe.com