[Twisted-Python] incompatible change - need revert before release

Adi Roiban adi at roiban.ro
Fri Nov 20 03:47:12 MST 2015


On 20 November 2015 at 12:25, Glyph Lefkowitz <glyph at twistedmatrix.com>
wrote:

>
> On Nov 20, 2015, at 1:42 AM, Adi Roiban <adi at roiban.ro> wrote:
>
>
> On 20 November 2015 at 10:32, Glyph Lefkowitz <glyph at twistedmatrix.com>
> wrote:
>
>> > On Nov 20, 2015, at 12:08 AM, Adi Roiban <adi at roiban.ro> wrote:
>> >
>> > It was released before 15.4
>> >
>> > Twisted Web 15.2.0 (2015-05-18)
>> > ===============================
>> >
>> > Features
>> > --------
>> >  - twisted.web.server.Site accepts requestFactory as constructor
>> >    argument. (#7016)
>> >
>> > ----------
>> >
>> > Not sure if rollback is the right thing to do... but I have no idea how
>> to proceed as any change will back the compatibility.
>> >
>> > I guess that we should just create a normal bug ticket and fix this
>> issue
>>
>> Thanks for finding the changelog entry; sorry for the false alarm.
>>
>> If it's been in a release, then there's probably nothing to do.  It's a
>> shame that this went out, but once a breakage like this has happened we
>> have to live with it because otherwise, as you say, we'd be breaking
>> compatibility for the people that already upgraded.  For those that need to
>> support both versions, keyword arguments are the way to go.
>
>
> Well, in public interfaces we could just stop mixing *args and **kwargs
> with other arguments.
>
> It is more work for maintainers, but as a library user I find it much
> easier to see the exact args in the docs, rather than seeing  *args  /
> **kwargs and then navigating the inheritance path to find out all supported
> arguments.
>
>
> I'm not quite sure what you're referring to in this case; but generally, I
> agree.  If you pass a parameter, you should document it with @param even if
> your arg list says *args / **kwargs.  This is how I tried to document, for
> example, optionsForClientTLS.
>

Instead of

def __init__(self, resource, requestFactory=None, *args, **kwargs):
    http.HTTPFactory.__init__(self, *args, **kwargs)

you can have

def __init__(self, resource, logFile=None, requestFactory=None):
    http.HTTPFactory.__init__(self, logFile=logFile)


Duplicating documentation is ugly... maybe we can "improve" pydoctor to
support something like this. Like @see but instead of creating a link, the
code is duplicated... but maybe a link is enough


def __init__(self, resource, logFile=None, requestFactory=None):
    """"
    Some description.

    @include http.HTTPFactory.__init__.logFile
    """"
    http.HTTPFactory.__init__(self, logFile=logFile)

-- 
Adi Roiban
-------------- next part --------------
An HTML attachment was scrubbed...
URL: </pipermail/twisted-python/attachments/20151120/6a077c7f/attachment-0002.html>


More information about the Twisted-Python mailing list