[Biopython-dev] [Bug 2967] AbstractCommandline silently accepts invalid parameter options

bugzilla-daemon at portal.open-bio.org bugzilla-daemon at portal.open-bio.org
Wed Dec 9 05:46:11 EST 2009


http://bugzilla.open-bio.org/show_bug.cgi?id=2967





------- Comment #2 from biopython-bugzilla at maubp.freeserve.co.uk  2009-12-09 05:46 EST -------
(In reply to comment #0)
> While investigating Bug 2996 I noticed that AbstractCommandline was silently
> accepting invalid parameter options when passed by setting attributes.  For
> example:
> 
>     cline = Primer3Commandline(bogus=True)
>     cline.sequence = filename
> 
> raises the appropriate ValueError, as the parameter name 'bogus' is being
> compared to the self.parameters list when setting, and is found not to be
> valid.  However, the following code:
> 
>     cline = Primer3Commandline()
>     cline.sequence = filename
>     cline.bogus = True    # Invalid argument not flagged up
>     cline.sequnce = True  # Mistyped argument not flagged up
> 
> 
> silently sets the invalid cline.bogus and cline.sequnce attributes without
> warning.  Parameters set via attribute are not validated with the
> setter/getters defined for the properties in AbstractCommandline.__init__
> This could (did!) lead the user to think that parameters are set when they
> are not, under at least two circumstances:
> 
> 1) Typos in the parameter name
> 2) Using a parameter unsupported by the interface

This is normal Python object behaviour - you can add any "property" like this
at run time,

>>> class Dummy(object) :
...     pass
... 
>>> d = Dummy()
>>> d.name = "Fred"
>>> dir(d)
['__class__', '__delattr__', '__dict__', '__doc__', '__getattribute__',
'__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__',
'__repr__', '__setattr__', '__str__', '__weakref__', 'name']
>>> d.name
'Fred'

We might still be able to block this via __setattr__, this needs some
experimentation.


-- 
Configure bugmail: http://bugzilla.open-bio.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.


More information about the Biopython-dev mailing list