> On July 14, 2016, 12:38 p.m., Ajay Yadava wrote:
> > contrib/clients/python/README.md, line 15
> > <https://reviews.apache.org/r/49154/diff/6/?file=1443729#file1443729line15>
> >
> >     With all the special methods defined it makes the code unintuitive. You 
> > don't know whether to treat 'queries' as a method or as a datastructure.
> >     
> >     It will be nice to change to something like below:
> >     
> >     client.get_queries() :returns a list of queries
> >     client.get_query() : returns details using query handle.
> >     
> >     Explicit functions corresponding to various rest endpoints will ensure 
> > more readability and intuitive client api.

Valid points, but I wanted to design it a little differently. Will try to 
explain my thought process in this comment:

1. What you're suggesting would blow up soon since there will be one method for 
each REST endpoint. And I didn't want to have all those methods in one client 
instance.
2. Going by that, I decided to have one client for each grouping of endpoints. 
So `LensClient` as a top-level class doesn't have much functionality, the 
sub-clients it has are the points of interaction. 
3. So the user will be interacting with `client.queryClient`, 
`client.metadataClient`, `client.logClient`, ...
4. I considered the following options for the syntax of getquery:
    4.1. `client.query_client.get_query(handle)`: too much use of `query`
    4.2. `client.get_query(handle)`: Because of the first point.
    4.3. `client.query_client.get(handle)`: A better version of 4.1, but the 
final function name is just `get`, which doesn't look nice. The answer to get 
`what` is only getting conveyed by the `query_client` part in the code.
    4.4. Improving 4.3 further, `client.queries.get(handle)` looks much better 
because `queries` is a better answer to `what` than `query_client`. 
    4.5. Built-in collection classes(e.g. dict), and other classes that behave 
like collections(e.g. MailBox) implement a function `get(x, default=None)` and 
accompany that with `__getitem__`. So I finally decided on using `__getitem__`. 
`get(x, default)` wouldn't make sense in our case, since a query is either 
there, or it's not there. No point of defaults. 
5. The above is supported when thinking about similar syntax for other clients, 
e.g. `client.metadata.cubes[name]`, or `client.logs[handle]`. 

So `client.queries` is indended to be an object, which can behave as a 
collection just to make the resulting code look more aligned with the inherent 
language syntax and features. 

So after deciding name for the sub-clients, For search I picked from 
`client.queries.search` and `client.search_queries`, settling in between at 
`client.queries`, since it's phonetically closer to `client.search_queries`, 
and syntactically concise.


- Rajat


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/49154/#review142196
-----------------------------------------------------------


On July 14, 2016, 11:22 a.m., Rajat Khandelwal wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/49154/
> -----------------------------------------------------------
> 
> (Updated July 14, 2016, 11:22 a.m.)
> 
> 
> Review request for lens.
> 
> 
> Bugs: LENS-1202
>     https://issues.apache.org/jira/browse/LENS-1202
> 
> 
> Repository: lens
> 
> 
> Description
> -------
> 
> 
> Diffs
> -----
> 
>   contrib/clients/python/README.md 00525fffe0c84421ca60cdb23bc9ed7f42963736 
>   contrib/clients/python/lens/client/main.py 
> dc604979415160ae17c9fcdcef3f258d5e38af38 
>   contrib/clients/python/lens/client/models.py 
> 7451fe92b29531f2bdb9219239c6f2b597fe7aac 
>   contrib/clients/python/lens/client/query.py 
> 88ce719890e8bf1c08410284583db14bb23c568c 
>   contrib/clients/python/lens/client/session.py PRE-CREATION 
>   contrib/clients/python/test/test_lensclient.py 
> d49c55bdca924eabd0b61f540372db4c3f3e695e 
> 
> Diff: https://reviews.apache.org/r/49154/diff/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Rajat Khandelwal
> 
>

Reply via email to