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

Samuele Pedroni Samuele Pedroni <pedroni@inf.ethz.ch>
Mon, 30 Jul 2001 21:59:35 +0200 (MET DST)


...
> > > 
> > > Does codeop currently work in Jython?  The solution should continue to
> > > work in Jython then. 
> > We have our interface compatible version of codeop that works.
> 
> Would implementing the new interfaces I sketched out for codeop.py be
> possible in Jython?  That's the bit I care about, not so much the
> interface to __builtin__.compile.
Yes, it's of possible.


> > > Does Jython support the same flag bit values as
> > > CPython?  If not, Paul Prescod's suggestion to use keyword arguments
> > > becomes very relevant.
> > we support a subset of the co_flags, CO_NESTED e.g. is there with the same
> > value.
> > 
> > But the embedding API is very different, my implementation of nested
> > scopes does not define any Py_CF... flags, we have an internal CompilerFlags
> > object but is more similar to PyFutureFeatures ...
> 
> Is this object exposed to Python code at all?
Not publicily, but in Jython the separating line is a bit different,
because public java classes are always accessible from jython,
even most of the internals. That does not mean and every use of that
is welcome and supported.

>  One approach would be
> PyObject-izing PyFutureFlags and making *that* the fourth argument to
> compile...
> 
> class Compiler:
>     def __init__(self):
>         self.ff = ff.new() # or whatever
>     def __call__(self, source, filename, start_symbol):
>         code = compile(source, filename, start_symbol, self.ff)
>         self.ff.merge(code.co_flags)
>         return code
I see, "internally" we already have a compiler_flags function
that do the same of:
>         code = compile(source, filename, start_symbol, self.ff)
>         self.ff.merge(code.co_flags)

where self.ff is a CompuilerFlags object.

I can re-arrange things for any interface, I was only trying to explain
our approach and situation and a possible way to avoid duplicating some
internal code in Python.

Samuele.