Namespaces: memory vs 'pollution'

Rhodri James rhodri at kynesim.co.uk
Tue Jul 23 07:01:15 EDT 2019


On 23/07/2019 03:27, DL Neil wrote:
> On 23/07/19 11:00 AM, Ethan Furman wrote:
>> On 07/20/2019 05:02 PM, DL Neil wrote:
>>
>>> Upon closer inspection, I realised it didn't just fail; it failed 
>>> badly! Some silly, little, boy had imported the PythonEnvironment 
>>> class but failed to ALSO import PythonVersionError. So, the reported 
>>> error was not the expected exception!
>>
>> I don't understand the significance of not importing PythonVersionError:
>>
>> - PythonEnvironment does not need it to be imported
>>
>> - when PythonEnvironment raises PythonVersionError you still get 
>> PythonVersionError
>>
>> - if your code says `except PythonVersionError` and you haven't 
>> imported it you'll get a NameError
>>
>> So, what's the issue?
> 
> 
> Have I correctly understood the question?
> 
> NameError conveys nothing to the user.
> PythonVersionError is more communicative - and speaks volumes to 'us'.
> 
> The mainline code is something like:
> 
>      p = PythonEnvironment()
>      try:
>          p.compatibility( ...spec... )    # eg must be Py3 not 2.n
>      except PythonVersionError:
>          print( more illuminating errmsg )
> 
> If I am 'the user' I'd be quite happy without the try...except; but mere 
> mortals need/deserve something more. Accordingly, the PythonVersionError 
> custom exception/class.

Ah, so you *used* PythonVersionError without importing it.  Sorry, but 
that's on you.

-- 
Rhodri James *-* Kynesim Ltd



More information about the Python-list mailing list