[Python-Dev] Changing the Division Operator -- PEP 238, rev 1.12

Michael Hudson mwh@python.net
08 Aug 2001 05:13:37 -0400


Michael Hudson <mwh@python.net> writes:

> Here's a fairly short pre-PEP on the issue.  If I haven't made any
> gross editorial blunders, can Barry give it a number and check the
> sucker in?

And here's a diff between what I posted and what I now have:

*** micro-pep1	Wed Aug  8 05:00:36 2001
--- micro-pep	Wed Aug  8 05:08:16 2001
***************
*** 1,13 ****
  PEP: XXXX
  Title: Supporting __future__ statements in simulated shells
! Version: $Version:$
  Author: Michael Hudson <mwh@python.net>
  Status: Draft
  Type: Standards Track
  Requires: 0236
  Created: 30-Jul-2001
  Python-Version: 2.2
! Post-History: 
  
  Abstract
  
--- 1,13 ----
  PEP: XXXX
  Title: Supporting __future__ statements in simulated shells
! Version: 2
  Author: Michael Hudson <mwh@python.net>
  Status: Draft
  Type: Standards Track
  Requires: 0236
  Created: 30-Jul-2001
  Python-Version: 2.2
! Post-History: 30-Jul-2001
  
  Abstract
  
***************
*** 24,39 ****
  Specification
  
      I propose adding a fourth, optional, "flags" argument to the
!     builtin "compile" function.  If this argument is omitted, there
!     will be no change in behaviour from that of Python 2.1.
  
      If it is present it is expected to be an integer, representing
      various possible compile time options as a bitfield.  The
      bitfields will have the same values as the PyCF_* flags #defined
!     in Include/pythonrun.h (at the time of writing there are only two
!     - PyCF_NESTED_SCOPES and PyCF_GENERATORS).  These are currently
!     not exposed to Python, so I propose adding them to codeop.py
!     (because it's already here, basically).
  
      XXX Should the supplied flags be or-ed with the flags of the
      calling frame, or do we override them?  I'm for the former,
--- 24,39 ----
  Specification
  
      I propose adding a fourth, optional, "flags" argument to the
!     builtin "compile" function.  If this argument is omitted,
!     there will be no change in behaviour from that of Python 2.1.
  
      If it is present it is expected to be an integer, representing
      various possible compile time options as a bitfield.  The
      bitfields will have the same values as the PyCF_* flags #defined
!     in Include/pythonrun.h (at the time of writing there are three -
!     PyCF_NESTED_SCOPES, PyCF_GENERATORS and PyCF_DIVISION).  These are
!     currently not exposed to Python, so I propose adding them to
!     codeop.py (because it's already here, basically).
  
      XXX Should the supplied flags be or-ed with the flags of the
      calling frame, or do we override them?  I'm for the former,
***************
*** 77,87 ****
      statement is added.  Such events will hopefully be very rare, so
      such a burden is unlikely to cause significant pain.
  
  Implementation
  
!     None yet; none of the above should be at all hard.  If this draft
!     is well received, I'll upload a patch to sf "soon" and point to it
!     here.
  
  Copyright
  
--- 77,107 ----
      statement is added.  Such events will hopefully be very rare, so
      such a burden is unlikely to cause significant pain.
  
+ Issues
+ 
+     Paul Prescod has reasonably complained about the choice of a
+     bitfield as the fourth argument to compile(), claiming it is
+     obscure and unpythonic.
+ 
+     There is also the thought of Jython compatibility; because Jython
+     has the ability to access any Java object without the PyObject
+     cruft needed in CPython, Jython already has a Python-visible
+     CompilerFlags object which has a boolean attribute
+     "compiler_flags", and will presumably have one fairly soon called
+     "generators".  This would be doable in CPython, but it would
+     require more hacking of deep magical bits of the interpreter and
+     require bumping the PYTHON_API_VERSION (OTOH, the division patch
+     just went in, so there can't be a freeze on the C API just
+     yet...).
+ 
  Implementation
  
!     I've uploaded a preliminary implementation as:
! 
!         http://sourceforge.net/tracker/?func=detail&atid=305470&aid=449043&group_id=5470
! 
!     I need to add docs and possibly implment a friendlier interface to
!     compile().
  
  Copyright
  

Basically I want to know if I have licence to go mucking around in the
PyEval_ interface and objects, doing things like making
PyCompilerFlags a PyObject and changing it's fields.

Cheers,
M.

-- 
59. In English every word can be verbed. Would that it were so in
    our programming languages.
  -- Alan Perlis, http://www.cs.yale.edu/homes/perlis-alan/quotes.html