Thank you Thomas for concisely and fairly reporting your experience, and based on that suggesting a way to improve Python. Thank you for taking the time to do this.
Here's a typo that caused a bug (which inconvenienced the original poster):
context.miunimum_version = ssl.TLSVersion.TLSv1_3
context.minimum_version = ssl.TLSVersion.TLSv1_3
Here's the fix the original poster suggested:
I'd like invalid attribute assignment to be prevented at runtime
This can already be done, if type(context) is defined using __slots__. However, a search in the docs for slots is not so helpful. https://docs.python.org/3/search.html?q=slots
Some of the better search results (for the question asked) seem to be:
https://docs.python.org/3/reference/datamodel.html?highlight=slots#object.__... https://docs.python.org/3/reference/datamodel.html?highlight=slots https://docs.python.org/3/howto/descriptor.html?highlight=slots
I see two ideas here. One idea is to improve the documentation for __slots__, and perhaps provide tools that make it easier to create a class that uses slots.
Here's a challenge. Find a page in docs.python.org that describes clearly, with helpful examples, when and how to use __slots__.
The second idea, which the OP asks for, is a change to type(context) in the standard library ssl module. Here note:
https://docs.python.org/3/library/ssl.html Warning Don’t use this module without reading the Security considerations. Doing so may lead to a false sense of security, as the default settings of the ssl module are not necessarily appropriate for your application.
Given that context is important for security, perhaps it's worthwhile closing the door to spelling errors creating security holes.