On 05/05/2015 04:30 PM, Lukas Slebodnik wrote:
On (05/05/15 15:24), Michal Židek wrote:
> On 05/04/2015 02:13 PM, Nikolai Kondrashov wrote:
>> On 04/29/2015 05:58 PM, Michal Židek wrote:
>>> On 04/29/2015 12:23 PM, Nikolai Kondrashov wrote:
>>>> On 04/28/2015 05:49 PM, Michal Židek wrote:
>>>>> On 04/27/2015 05:56 PM, Nikolai Kondrashov wrote:
>>>>>>> On 04/24/2015 01:44 PM, Nikolai Kondrashov wrote:
>>>> I understand your motivation to keep the interface accessible and
>>>> safe, and
>>>> I'm willing to implement it your way, if this message doesn't
change
>>>> your
>>>> mind.
>>>>
>>>> May I suggest another solution, which might make it more palatable? What
>>>> if we
>>>> replace lists/tuples with functions or class constructors, which would
>>>> annotate what's happening?
>>>>
>>>> So, instead of writing this rather unusual, but illustrative example:
>>>>
>>>> pattern = (
>>>> {name='group1', gid=1001, mem=['userA',
'userB', 'userC']},
>>>> {name='group2', gid=1002, mem=('userX',
'userY')},
>>>> )
>>>> ent.group_assert(pattern)
>>>>
>>>> You would write something like this:
>>>>
>>>> pattern = ent.some(
>>>> {name='group1', gid=1001, mem=ent.all('userA',
'userB',
>>>> 'userC')},
>>>> {name='group2', gid=1002, mem=ent.some('userX',
'userY')}
>>>> )
>>>> ent.group_assert(pattern)
>>>>
>>>> Theoretically, we can also make a distinction of matching some/all of
>>>> dictionary members, but I don't see that as useful ATM.
>>>
>>> This does not look bad to me. Please add example of usage to
>>> the docstring of the "all" and "some" functions. So that
>>> it is clear where and how the functions are to be used.
>>> Also add reference to these functions to the diff function,
>>> so that they are linked both ways (something along the
>>> line "use this and that to create the list or tuple
>>> and do not craft it manually"... of course better
>>> wording is advised :) )
>>>
>>> Also I would rename the "some" to "contains" and
"all"
>>> to "contains_only". The "some" word misleads the reader
>>> a little in the way that "some of the listed
>>> users must match, but not all", which is not the case.
>>> The "all" can mislead the reader in the way "all these
>>> members must match, but we do not care if there are some
>>> others", which is also not how it works.
>>
>> Alright. Do you mind if I replace "contains" with the shorter
"has"?
>> I.e. make that "has" and "has_only"?
>>
>
> "has" and "has_only" is also good IMO.
>
I prefer longer version.
So we can read test as a novel without looking into function
and we will exactly know what it does.
Since Michal seems OK with either and I don't care much, I'll use the longer
version.
Nick