On Jul 30, 2010, at 12:05 AM, mdipierro wrote:
> You are right but it only breaks backward compatibility in a case
> where things would be misleading. Here are some example:
>
> # old syntax that still works
> URL('a','c','f')
> URL(a='a',c='c',f='f')
> URL(f='f',r=request)
>
> #new syntax that resulted in an error before
> URL('f')
> URL('c','f')
> URL(f='f')
> URL(c='c',f='f')
>
> ## changed of behaviour
> URL('a',r=request)
> was /a/current_controller/current_function
> now
> was /current_app/current_controller/a
>
> I.e. the change of behavior only occurs if the user explicitly
> specifies r and a (without naming a) but not f. I.e. if the user is
> specifying redundant information that may be conflicting (because a
> may differ from r.application). Users should not be doing this anyway.
> I have never seen anybody doing this.
>
> Did I miss something? can you see any other case when the behavior
> would change?
>
> What do other people think?
I'm not looking at the code, but if that's really the only case that breaks, I
agree that it would be very strange for someone to count on it. (I assume that
you didn't intend the second 'was' in the last example.)