11.03.2011 09:20, Rüdiger Kessel kirjoitti:
This looks like a perfect pre-processor task to me. Define a macro "EXCEPT(a,b)" that will be converted to "except a,b" or to "except a as b". Defining the macros might be a bit of work, but then you could write one common source where both versions can be derived from. The only disadvantage is that you need to code everything in macros. That is the price of maintaining only one source code base.
No, it isn't. Nobody uses preprocessors for this, unless you count 2to3 as one. The correct way to do it in a way that works for both 2.x and 3.x is:

try:
    ...
except Exception:
    exc = sys.exc_info()[1]
    ....

Preprocessors (other than 2to3) would open a whole new can of worms, which is totally unnecessary here. Trust me -- in all likelihood, I've done a lot more porting than you have :)
This is what I mean with "local" changes. If you can achieve the same thing in 2.x and in 3k by changing segments of a few lines each then you can use a pre-processor. But that would not lead to the need of moving things between modules, doesn't it?

2011/3/10 Alex Grönholm <[email protected] <mailto:[email protected]>>

    11.03.2011 03:32, Rüdiger Kessel kirjoitti:
    I read that one, but I got the impression that changes are all
    local. Why would one want to move things between modules just
    because it uses py3k syntax?
    It looks to me that basically the same structures should work for
    both. Maybe I am missing something fundamental here.
    The syntax changes are fairly radical. For example, how would you
    catch named exceptions (and assign to a variable) in a way that
    works for both 3.x and 2.x? There is an ugly but workable way, but
    I'd just like to check if you've understood the problem.


    2011/3/10 Alex Grönholm <[email protected]
    <mailto:[email protected]>>

        11.03.2011 03:17, Rüdiger Kessel kirjoitti:
        Sorry for being stupid. I did not see Python py3k yet. I saw
        no need. I use Python because it is available everywhere.
        I thought that py3k was just some syntactical different
        dialect. But obviously it is more. Does it have completely
        new data types and does it not support the types from 2.x
        any more?
        This should answer most of your questions:
        http://docs.python.org/release/3.0.1/whatsnew/3.0.html


        Rüdiger

        2011/3/10 Alex Grönholm <[email protected]
        <mailto:[email protected]>>

            10.03.2011 18:27, Tomer Filiba kirjoitti:
            no, it's not really possible, because many types were
            moved between modules, or completely dropped.
            also, the object model has changed a little, and since
            netrefs play with the low-level stuff, they have to be
            adapted.
            all in all, the syntax part is the least of our concerns.
            I've done quite a bit of py3k porting work myself, so
            could you be a little more specific? Maybe I can address
            those concerns.



            -tomer

            An NCO and a Gentleman


            On Thu, Mar 10, 2011 at 00:41, Rüdiger Kessel
            <[email protected]
            <mailto:[email protected]>> wrote:

                Sorry for asking this stupid question, but is there
                any good python preprocessor out there that can
                support the version problem so that the code can
                look nice, but still comes from a common code base?

                Ruediger


                2011/3/9 Jorge Maroto <[email protected]
                <mailto:[email protected]>>

                    On Wed, Mar 9, 2011 at 10:59 PM, Tomer Filiba
                    <[email protected]
                    <mailto:[email protected]>> wrote:
                    > yeah, i had the feeling someone would sneak
                    in redhat and
                    > their nonexistent releases...
                    > you know, being stuck with software from 2004
                    in 2011... how come people PAY
                    > money for that "support"?

                    IMHO they just pay to have someone to put the
                    blame on. :).










Reply via email to