Documenting it for those poor souls who are still stuck with hyper under Python2.7.
Passing a Unicode object (not an "str") in Python2.7 to a hyper.tls.init_context as a cert argument raises an exception IOError: [Errno 21] Is a directory.
This happens because "basestring" is erroneously set to (str, str) here:
|
if cert is not None: |
|
try: |
|
basestring |
|
except NameError: |
|
basestring = (str, bytes) |
Note that because of the assignment to the basestring on line 127, an attempt to dereference the object before will always raise NameError, because the interpreter will consider basestring as a local variable. The behavior is explained in the Python FAQ, and the solution is to declare basestring as global explicitly.