This repository was archived by the owner on Jan 13, 2021. It is now read-only.
  
  
  
  
  
Description
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.