On Thu, 23 Feb 2012 16:18:19 +0100
brett.cannon <python-checkins@python.org> wrote:
>  def _sanity_check(name, package, level):
>      """Verify arguments are "sane"."""
> +    if not hasattr(name, 'rpartition'):
> +        raise TypeError("module name must be str, not {}".format(type(name)))

Why don't you simply use isinstance()?
(bytes objects also have rpartition())

I think I was on a interface-conformance kick at the time and didn't want to restrict to a specific type over a specific interface. But since subclasses is not exactly complicated I can change this (which will also match potential C code more with a PyUnicode_Check()). 
">

(original) (raw)



On Thu, Feb 23, 2012 at 10:43, Antoine Pitrou <solipsis@pitrou.net> wrote:

On Thu, 23 Feb 2012 16🔞19 +0100
brett.cannon <python-checkins@python.org> wrote:
> def \_sanity\_check(name, package, level):
> """Verify arguments are "sane"."""
> + if not hasattr(name, 'rpartition'):
> + raise TypeError("module name must be str, not {}".format(type(name)))

Why don't you simply use isinstance()?
(bytes objects also have rpartition())

I think I was on a interface-conformance kick at the time and didn't want to restrict to a specific type over a specific interface. But since subclasses is not exactly complicated I can change this (which will also match potential C code more with a PyUnicode\_Check()).