[Twisted-Python] Twisted 17.5.0rc2 RC Announcement

Jean-Paul Calderone exarkun at twistedmatrix.com
Fri May 26 05:38:55 MDT 2017


On Fri, May 26, 2017 at 2:35 AM, Amber Brown <hawkowl at atleastfornow.net>
wrote:

> Hi everyone,
>
> Fresh from PyCon US, comes a 17.5 prerelease. Fancy things in this release:
>
> - twisted.python.url has been spun out into the new 'hyperlink' package;
> importing twisted.python.url is now a compatibility alias
> - Support for OpenSSL 1.1.0.
> - Fixes around the reactor DNS resolver changes in 17.1, solving all known
> regressions
> - Deferred.asFuture and Deferred.fromFuture, to allow you to map asyncio
> Futures to Twisted Deferreds and vice versa, for use the with Python 3+
> asyncioreactor in Twisted
> - Support for TLS 1.3 ciphersuites, in advance of a released OpenSSL to
> enable the protocol
> - Further Python 3 support in twisted.web, initial support in
> twisted.mail.smtp
>
> Please see the NEWS.rst file and download the tarball at
> https://twistedmatrix.com/Releases/rc/17.5.0rc2/ . (rc1 fell to metadata
> mishaps!)
>
> Let me know if you notice anything out of the ordinary. If there's no
> problems, it'll release in the next week or so.
>
>
Thanks to all who contributed to this (and previous) efforts.

Some of the txkube problems have been resolved but either not entirely or
some new ones have been introduced.  Attached is a log of the failures from
the unit test suite.  I haven't investigated these new errors in depth yet
so I won't say whether these are txkube's fault or Twisted's fault... but
at least *something* is at fault.

Jean-Paul
-------------- next part --------------
An HTML attachment was scrubbed...
URL: </pipermail/twisted-python/attachments/20170526/7156818d/attachment-0002.html>
-------------- next part --------------
[ERROR]
Traceback (most recent call last):
Failure: testtools.testresult.real._StringException: Traceback (most recent call last):
  File "/tmp/txkube-twisted-17.5.0rc2/local/lib/python2.7/site-packages/txkube/test/test_authentication.py", line 124, in test_bearer_token_authorization
    request_bytes = self._authorized_request(token=token, headers=None)
  File "/tmp/txkube-twisted-17.5.0rc2/local/lib/python2.7/site-packages/txkube/test/test_authentication.py", line 108, in _authorized_request
    [(host, port, factory, _, _)] = reactor.tcpClients
ValueError: need more than 0 values to unpack


txkube.test.test_authentication.AuthenticateWithServiceAccountTests.test_bearer_token_authorization
===============================================================================
[ERROR]
Traceback (most recent call last):
Failure: testtools.testresult.real._StringException: Traceback (most recent call last):
  File "/tmp/txkube-twisted-17.5.0rc2/local/lib/python2.7/site-packages/txkube/test/test_authentication.py", line 140, in test_other_headers_preserved
    request_bytes = self._authorized_request(token=token, headers=headers)
  File "/tmp/txkube-twisted-17.5.0rc2/local/lib/python2.7/site-packages/txkube/test/test_authentication.py", line 108, in _authorized_request
    [(host, port, factory, _, _)] = reactor.tcpClients
ValueError: need more than 0 values to unpack


txkube.test.test_authentication.AuthenticateWithServiceAccountTests.test_other_headers_preserved
===============================================================================
[ERROR]
Traceback (most recent call last):
Failure: testtools.testresult.real._StringException: eliot-log: {{{
2ad4f697-40a8-4bbe-bcf1-e54383e849ac
└── network-client:delete at 1/started
    ├── kind: Namespace
    ├── name: e
    ├── namespace: None
    ├── timestamp: 1495798510.55902
    ├── network-client:request at 2,1/started
    │   ├── method: DELETE
    │   ├── timestamp: 1495798510.559532
    │   ├── url: https://kubernetes.example.invalid./api/v1/namespaces/e
    │   └── network-client:request at 2,2/succeeded
    │       └── timestamp: 1495798510.564767
    └── network-client:delete at 3/failed
        ├── exception: txkube._exception.KubernetesError
        ├── reason: <KubernetesError: code = 404; status = v1.Status(status=u'Failure', code=404, reason=u'NotFound', details=v1.StatusDetails(kind=u'namespaces', group=None, name=u'e', retryAfterSeconds=None, causes=V1.statuscausePVector([])), message=u'namespaces "e" not found', metadata=v1.ListMeta(selfLink=None, resourceVersion=None))>
        └── timestamp: 1495798510.565738

ffd04195-0b06-44db-9dc3-bc6f99ae5326
└── poll:start at 1/started
    ├── obj
    │   ├── apiVersion: v1
    │   ├── kind: Namespace
    │   └── metadata
    │       ├── annotations
    │       ├── finalizers: []
    │       ├── labels
    │       │   ├── c: x
    │       │   └── v8: k
    │       ├── name: e
    │       └── ownerReferences: []
    ├── timestamp: 1495798510.566214
    ├── <UNNAMED TASK>
    │   ├── poll_iteration: None
    │   └── timestamp: 1495798510.566402
    ├── network-client:get at 3,1/started
    │   ├── kind: Namespace
    │   ├── name: e
    │   ├── namespace: None
    │   ├── timestamp: 1495798510.566587
    │   ├── network-client:request at 3,2,1/started
    │   │   ├── method: GET
    │   │   ├── timestamp: 1495798510.566854
    │   │   ├── url: https://kubernetes.example.invalid./api/v1/namespaces/e
    │   │   └── network-client:request at 3,2,2/succeeded
    │   │       └── timestamp: 1495798510.570049
    │   └── network-client:get at 3,3/failed
    │       ├── exception: txkube._exception.KubernetesError
    │       ├── reason: <KubernetesError: code = 404; status = v1.Status(status=u'Failure', code=404, reason=u'NotFound', details=v1.StatusDetails(kind=u'namespaces', group=None, name=u'e', retryAfterSeconds=None, causes=V1.statuscausePVector([])), message=u'namespaces "e" not found', metadata=v1.ListMeta(selfLink=None, resourceVersion=None))>
    │       └── timestamp: 1495798510.571157
    └── poll:start at 4/succeeded
        └── timestamp: 1495798510.571529

3fd46547-0772-441e-9896-6a52f1f8500b
└── network-client:create at 1/started
    ├── timestamp: 1495798510.571942
    ├── <UNNAMED TASK>
    │   ├── submitted_object
    │   │   ├── apiVersion: v1
    │   │   ├── kind: Namespace
    │   │   └── metadata
    │   │       ├── annotations
    │   │       ├── finalizers: []
    │   │       ├── labels
    │   │       │   ├── c: x
    │   │       │   └── v8: k
    │   │       ├── name: e
    │   │       └── ownerReferences: []
    │   └── timestamp: 1495798510.572287
    ├── network-client:request at 3,1/started
    │   ├── method: POST
    │   ├── timestamp: 1495798510.572626
    │   ├── url: https://kubernetes.example.invalid./api/v1/namespaces
    │   ├── memory:create at 3,2,1/started
    │   │   ├── kind: namespaces
    │   │   ├── timestamp: 1495798510.574204
    │   │   └── memory:create at 3,2,2/succeeded
    │   │       └── timestamp: 1495798510.57565
    │   └── network-client:request at 3,3/succeeded
    │       └── timestamp: 1495798510.5765
    └── network-client:create at 4/succeeded
        ├── response_object
        │   ├── apiVersion: v1
        │   ├── kind: Namespace
        │   └── metadata
        │       ├── annotations
        │       ├── finalizers: []
        │       ├── labels
        │       │   ├── c: x
        │       │   └── v8: k
        │       ├── name: e
        │       └── ownerReferences: []
        └── timestamp: 1495798510.577317

681b6079-8efe-4f84-8e65-1d7813672458
└── network-client:create at 1/started
    ├── timestamp: 1495798510.628154
    ├── <UNNAMED TASK>
    │   ├── submitted_object
    │   │   ├── apiVersion: v1
    │   │   ├── data: None
    │   │   ├── kind: ConfigMap
    │   │   └── metadata
    │   │       ├── annotations
    │   │       ├── finalizers: []
    │   │       ├── labels
    │   │       │   ├── axvp7ist: a
    │   │       │   ├── az8dkywg/l: p
    │   │       │   ├── d74gcupm1vlm/xk5: e
    │   │       │   ├── g-u: dg
    │   │       │   ├── hs0dvu: do
    │   │       │   ├── r: y1
    │   │       │   ├── r2.pa.th.i/rnli: h
    │   │       │   ├── sr: fzaa52b
    │   │       │   ├── w: zr8
    │   │       │   └── y: h
    │   │       ├── name: d
    │   │       ├── namespace: e
    │   │       └── ownerReferences: []
    │   └── timestamp: 1495798510.62869
    ├── network-client:request at 3,1/started
    │   ├── method: POST
    │   ├── timestamp: 1495798510.629161
    │   ├── url: https://kubernetes.example.invalid./api/v1/namespaces/e/configmaps
    │   ├── memory:create at 3,2,1/started
    │   │   ├── kind: configmaps
    │   │   ├── timestamp: 1495798510.631462
    │   │   └── memory:create at 3,2,2/succeeded
    │   │       └── timestamp: 1495798510.633133
    │   └── network-client:request at 3,3/succeeded
    │       └── timestamp: 1495798510.634102
    └── network-client:create at 4/succeeded
        ├── response_object
        │   ├── apiVersion: v1
        │   ├── data: None
        │   ├── kind: ConfigMap
        │   └── metadata
        │       ├── annotations
        │       ├── finalizers: []
        │       ├── labels
        │       │   ├── axvp7ist: a
        │       │   ├── az8dkywg/l: p
        │       │   ├── d74gcupm1vlm/xk5: e
        │       │   ├── g-u: dg
        │       │   ├── hs0dvu: do
        │       │   ├── r: y1
        │       │   ├── r2.pa.th.i/rnli: h
        │       │   ├── sr: fzaa52b
        │       │   ├── w: zr8
        │       │   └── y: h
        │       ├── name: d
        │       ├── namespace: e
        │       └── ownerReferences: []
        └── timestamp: 1495798510.635196

c49ed305-030b-48c0-88fa-3d8f49f7609c
└── network-client:list at 1/started
    ├── apiVersion: v1
    ├── kind: ConfigMap
    ├── timestamp: 1495798510.635709
    ├── network-client:request at 2,1/started
    │   ├── method: GET
    │   ├── timestamp: 1495798510.636105
    │   ├── url: https://kubernetes.example.invalid./api/v1/configmaps
    │   ├── memory:list at 2,2,1/started
    │   │   ├── kind: configmaps
    │   │   ├── timestamp: 1495798510.637864
    │   │   └── memory:list at 2,2,2/succeeded
    │   │       └── timestamp: 1495798510.638355
    │   └── network-client:request at 2,3/succeeded
    │       └── timestamp: 1495798510.639244
    └── network-client:list at 3/succeeded
        └── timestamp: 1495798510.640504

637a1c25-b51a-4adf-a793-3ecacaa0a1ed
└── network-client:delete at 1/started
    ├── kind: Namespace
    ├── name: e
    ├── namespace: None
    ├── timestamp: 1495798510.64151
    ├── network-client:request at 2,1/started
    │   ├── method: DELETE
    │   ├── timestamp: 1495798510.642039
    │   ├── url: https://kubernetes.example.invalid./api/v1/namespaces/e
    │   └── network-client:request at 2,2/succeeded
    │       └── timestamp: 1495798510.645008
    └── network-client:delete at 3/succeeded
        └── timestamp: 1495798510.645366

fca69971-893b-4b04-9c33-e33a6f7008b0
└── poll:start at 1/started
    ├── obj
    │   ├── apiVersion: v1
    │   ├── kind: Namespace
    │   └── metadata
    │       ├── annotations
    │       ├── finalizers: []
    │       ├── labels
    │       │   ├── c: x
    │       │   └── v8: k
    │       ├── name: e
    │       └── ownerReferences: []
    ├── timestamp: 1495798510.645802
    ├── <UNNAMED TASK>
    │   ├── poll_iteration: None
    │   └── timestamp: 1495798510.646016
    ├── network-client:get at 3,1/started
    │   ├── kind: Namespace
    │   ├── name: e
    │   ├── namespace: None
    │   ├── timestamp: 1495798510.646276
    │   ├── network-client:request at 3,2,1/started
    │   │   ├── method: GET
    │   │   ├── timestamp: 1495798510.646669
    │   │   ├── url: https://kubernetes.example.invalid./api/v1/namespaces/e
    │   │   └── network-client:request at 3,2,2/succeeded
    │   │       └── timestamp: 1495798510.649995
    │   └── network-client:get at 3,3/failed
    │       ├── exception: txkube._exception.KubernetesError
    │       ├── reason: <KubernetesError: code = 404; status = v1.Status(status=u'Failure', code=404, reason=u'NotFound', details=v1.StatusDetails(kind=u'namespaces', group=None, name=u'e', retryAfterSeconds=None, causes=V1.statuscausePVector([])), message=u'namespaces "e" not found', metadata=v1.ListMeta(selfLink=None, resourceVersion=None))>
    │       └── timestamp: 1495798510.651176
    └── poll:start at 4/succeeded
        └── timestamp: 1495798510.651542
}}}

logged-error: {{{
Traceback (most recent call last):
  File "/tmp/txkube-twisted-17.5.0rc2/local/lib/python2.7/site-packages/twisted/python/threadpool.py", line 250, in inContext
    result = inContext.theWork()
  File "/tmp/txkube-twisted-17.5.0rc2/local/lib/python2.7/site-packages/twisted/python/threadpool.py", line 266, in <lambda>
    inContext.theWork = lambda: context.call(ctx, func, *args, **kw)
  File "/tmp/txkube-twisted-17.5.0rc2/local/lib/python2.7/site-packages/twisted/python/context.py", line 122, in callWithContext
    return self.currentContext().callWithContext(ctx, func, *args, **kw)
  File "/tmp/txkube-twisted-17.5.0rc2/local/lib/python2.7/site-packages/twisted/python/context.py", line 85, in callWithContext
    return func(*args,**kw)
socket.gaierror: [Errno -2] Name or service not known
}}}

logged-error-1: {{{
Traceback (most recent call last):
  File "/tmp/txkube-twisted-17.5.0rc2/local/lib/python2.7/site-packages/twisted/python/threadpool.py", line 250, in inContext
    result = inContext.theWork()
  File "/tmp/txkube-twisted-17.5.0rc2/local/lib/python2.7/site-packages/twisted/python/threadpool.py", line 266, in <lambda>
    inContext.theWork = lambda: context.call(ctx, func, *args, **kw)
  File "/tmp/txkube-twisted-17.5.0rc2/local/lib/python2.7/site-packages/twisted/python/context.py", line 122, in callWithContext
    return self.currentContext().callWithContext(ctx, func, *args, **kw)
  File "/tmp/txkube-twisted-17.5.0rc2/local/lib/python2.7/site-packages/twisted/python/context.py", line 85, in callWithContext
    return func(*args,**kw)
socket.gaierror: [Errno -2] Name or service not known
}}}

twisted-log: {{{
2017-05-26 07:35:10-0400 [-] while looking up example.invalid. with <bound method HostnameEndpoint._fallbackNameResolution of <twisted.internet.endpoints.HostnameEndpoint object at 0x7f1c3d205c10>>
        Traceback (most recent call last):
          File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
            self.run()
          File "/usr/lib/python2.7/threading.py", line 754, in run
            self.__target(*self.__args, **self.__kwargs)
          File "/tmp/txkube-twisted-17.5.0rc2/local/lib/python2.7/site-packages/twisted/_threads/_threadworker.py", line 46, in work
            task()
          File "/tmp/txkube-twisted-17.5.0rc2/local/lib/python2.7/site-packages/twisted/_threads/_team.py", line 190, in doWork
            task()
        --- <exception caught here> ---
          File "/tmp/txkube-twisted-17.5.0rc2/local/lib/python2.7/site-packages/twisted/python/threadpool.py", line 250, in inContext
            result = inContext.theWork()
          File "/tmp/txkube-twisted-17.5.0rc2/local/lib/python2.7/site-packages/twisted/python/threadpool.py", line 266, in <lambda>
            inContext.theWork = lambda: context.call(ctx, func, *args, **kw)
          File "/tmp/txkube-twisted-17.5.0rc2/local/lib/python2.7/site-packages/twisted/python/context.py", line 122, in callWithContext
            return self.currentContext().callWithContext(ctx, func, *args, **kw)
          File "/tmp/txkube-twisted-17.5.0rc2/local/lib/python2.7/site-packages/twisted/python/context.py", line 85, in callWithContext
            return func(*args,**kw)
        socket.gaierror: [Errno -2] Name or service not known

2017-05-26 07:35:10-0400 [-] while looking up example.invalid. with <bound method HostnameEndpoint._fallbackNameResolution of <twisted.internet.endpoints.HostnameEndpoint object at 0x7f1c3d243890>>
        Traceback (most recent call last):
          File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
            self.run()
          File "/usr/lib/python2.7/threading.py", line 754, in run
            self.__target(*self.__args, **self.__kwargs)
          File "/tmp/txkube-twisted-17.5.0rc2/local/lib/python2.7/site-packages/twisted/_threads/_threadworker.py", line 46, in work
            task()
          File "/tmp/txkube-twisted-17.5.0rc2/local/lib/python2.7/site-packages/twisted/_threads/_team.py", line 190, in doWork
            task()
        --- <exception caught here> ---
          File "/tmp/txkube-twisted-17.5.0rc2/local/lib/python2.7/site-packages/twisted/python/threadpool.py", line 250, in inContext
            result = inContext.theWork()
          File "/tmp/txkube-twisted-17.5.0rc2/local/lib/python2.7/site-packages/twisted/python/threadpool.py", line 266, in <lambda>
            inContext.theWork = lambda: context.call(ctx, func, *args, **kw)
          File "/tmp/txkube-twisted-17.5.0rc2/local/lib/python2.7/site-packages/twisted/python/context.py", line 122, in callWithContext
            return self.currentContext().callWithContext(ctx, func, *args, **kw)
          File "/tmp/txkube-twisted-17.5.0rc2/local/lib/python2.7/site-packages/twisted/python/context.py", line 85, in callWithContext
            return func(*args,**kw)
        socket.gaierror: [Errno -2] Name or service not known

2017-05-26 07:35:10-0400 [-] Main loop terminated.
}}}

unhandled-error-in-deferred: {{{
Traceback (most recent call last):
  File "/tmp/txkube-twisted-17.5.0rc2/local/lib/python2.7/site-packages/twisted/internet/defer.py", line 653, in _runCallbacks
    current.result = callback(current.result, *args, **kw)
  File "/tmp/txkube-twisted-17.5.0rc2/local/lib/python2.7/site-packages/twisted/internet/endpoints.py", line 954, in startConnectionAttempts
    "no results for hostname lookup: {}".format(self._hostStr)
twisted.internet.error.DNSLookupError: DNS lookup failed: no results for hostname lookup: example.invalid..
}}}

unhandled-error-in-deferred-1: {{{
Traceback (most recent call last):
  File "/tmp/txkube-twisted-17.5.0rc2/local/lib/python2.7/site-packages/twisted/internet/defer.py", line 653, in _runCallbacks
    current.result = callback(current.result, *args, **kw)
  File "/tmp/txkube-twisted-17.5.0rc2/local/lib/python2.7/site-packages/twisted/internet/endpoints.py", line 954, in startConnectionAttempts
    "no results for hostname lookup: {}".format(self._hostStr)
twisted.internet.error.DNSLookupError: DNS lookup failed: no results for hostname lookup: example.invalid..
}}}


txkube.test.test_memory.KubernetesClientIntegrationTests.test_configmap
===============================================================================
[ERROR]
Traceback (most recent call last):
  File "/tmp/txkube-twisted-17.5.0rc2/local/lib/python2.7/site-packages/twisted/internet/endpoints.py", line 992, in startConnectionAttempts
    iterateEndpoint.start(self._attemptDelay)
  File "/tmp/txkube-twisted-17.5.0rc2/local/lib/python2.7/site-packages/twisted/internet/task.py", line 190, in start
    self.starttime = self.clock.seconds()
exceptions.AttributeError: 'Redirectable' object has no attribute 'seconds'

txkube.test.test_network.NetworkKubernetesFromContextTests.test_client_chain_certificate
===============================================================================
[ERROR]
Traceback (most recent call last):
  File "/tmp/txkube-twisted-17.5.0rc2/local/lib/python2.7/site-packages/twisted/internet/endpoints.py", line 992, in startConnectionAttempts
    iterateEndpoint.start(self._attemptDelay)
  File "/tmp/txkube-twisted-17.5.0rc2/local/lib/python2.7/site-packages/twisted/internet/task.py", line 190, in start
    self.starttime = self.clock.seconds()
exceptions.AttributeError: 'MemoryReactor' object has no attribute 'seconds'

<not in test>
-------------------------------------------------------------------------------
Ran 141 tests in 15.685s


More information about the Twisted-Python mailing list