[Python-ideas] Allow filtered dir built in

Steve Barnes gadgetsteve at live.co.uk
Thu Jun 14 09:32:28 EDT 2018

On 14/06/2018 13:33, Steven D'Aprano wrote:
> On Thu, Jun 14, 2018 at 09:27:05AM +0000, Steve Barnes wrote:
> [...]
>> What I would like to suggest is extending the dir built-in to allow an
>> optional filter parameter that takes fnmatch type wild card as an
>> optional filter. Then I could use:
>>   >>> dir(mpmath, "*sin*")
>> To narrow down the candidates.
> I have exactly that in my Python startup file. It monkey-patches the
> builtin dir with a custom wrapper function that has signature:
>      edir( [object, [glob='',]] *, meta=False, dunder=True, private=True)
> For the glob, I support the following metacharacters:
> - Reverse matching: if the glob begins with '!' or '!=', the
>    sense of the match is reversed to "don't match".
> - Case-sensitive matching: if the glob begins with '=' or '!=',
>    perform a case-sensitive match. Otherwise filters are case-
>    insensitive by default.
> - Wildcards: '?' to match a single character, '*' to match
>    zero or more characters.
> - Character sets: e.g. '[abc]' to match any of 'a', 'b', 'c',
>    or '[!abc]' to match any character except 'a', 'b', 'c'.
> If the glob argument contains no metacharacters apart from the ! and =
> flags, a straight substring match is performed. So there's no need to
> match on a glob "*foo*", I can just use "foo".
> If there is interest in this, I will clean it up for public consumption,
> and publish it somewhere as a third-party module, and for consideration
> for the stdlib.
Obviously, I personally would be interested (probably goes without saying).
Steve (Gadget) Barnes
Any opinions in this message are my personal opinions and do not reflect 
those of my employer.

This email has been checked for viruses by AVG.

More information about the Python-ideas mailing list