On 01/23/2017 05:59 PM, Nathaniel Smith wrote:
On Sun, Jan 22, 2017 at 4:01 AM, Cory Benfield wrote:
On 20 Jan 2017, at 23:00, Nathaniel Smith wrote:

- given that for next protocol negotiation we have to accept arbitrary
bytestrings and the primary value of the NextProtocol class is to
protect against typos, I wonder if it would simplify things slightly
to make the attributes of this class just *be* bytestrings. I.e. what
you have now but without the inheritance from enum.

While we *could*, I don’t think the value-add of doing this is very high.
 Basically the only thing it simplifies is the type declaration, and I
 don’t know that it’s worth doing that. ;)

Well, and the code that receives the values, which currently has to
handle both enums and bytestrings. Agreed it's not a big deal, it just
seems like the value the enum is adding is all negative.

Enum can be mixed with other types:

--- 8< ----------------------------------------
from enum import Enum

class NextProtocol(bytes, Enum):
    H2 = b'h2'
    H2C = b'h2c'
    HTTP1 = b'http/1.1'
    WEBRTC = b'webrtc'
    C_WEBRTC = b'c-webrtc'
    FTP = b'ftp'
    STUN = b'stun.nat-discovery'
    TURN = b'stun.turn'

print(NextProtocol.STUN)
# NextProtocol.STUN

print(isinstance(NextProtocol.STUN, bytes))
# True

--- 8< ----------------------------------------

--
~Ethan~
_______________________________________________
Security-SIG mailing list
Security-SIG@python.org
https://mail.python.org/mailman/listinfo/security-sig

Reply via email to