[Mailman-Developers] [CLI Project] Added Backup and Restore Tool
Stephen J. Turnbull
stephen at xemacs.org
Thu Aug 7 08:30:17 CEST 2014
Rajeev S writes:
> I feel that it will make the code cluttered. Since the CLI code
> is independent of the rest of mailman client, won't it be
> better to maintain the CLI code in a separate folder, as it is now?
Of course. I didn't explain myself well. What you have now is
mailman/ -+- client/ -+- _client.py
+- docs/
+- tests/
+- cli/ -+- client.py
+- core/
+- docs/
+- lib/
+- tests/
and what I would like to see is something like
mailman/ -+- client/ -+- _client.py
| +- docs/
| +- tests/
+- cli/ -+- client.py
+- core/
+- docs/
+- lib/
+- tests/
It's only one level higher, but it makes the relationship
(mailman.client provides services to mailman.cli) clearer, and
emphasizes the user app (cli).
> > Is there any code outside of this directory that is yours?
>
> I have made modifications to setup.py, other than that, no.
OK, that's great!
> > It's not clear to me why you define a separate main() function in
> > this script -- it doesn't make sense to import it as a module.
>
> I was not quite familiar with using the python setuptools and I
> assumed that such a format was necessary to specify module entry
> points in setup.py. I have now removed the main function from
> mmclient.py
OK. It's up to you (and maybe Barry has a stylistic opinion on it).
> Yikes! Sorry about that. Fixed at least ten [typos] :)
And I thought I was being a cranky old man. Glad we caught those. :-)
> > In lib/utils.py class Filter, what are the class attributes for? They
> > are not used or useful.
>
> The Filter class is used to filter out objects [...]
>
> All the class attributes are being used in the process described above.
I don't see where. In Filter, you have:
class Filter():
key = None
value = None
operator = None
data_set = []
utils = Utils()
def __init__(self, key, value, operator, data):
self.key = key
self.value = value
self.operator = operator
self.data_set = data
So as soon as you instance a Filter, __init__() creates instance
attributes which shadow the class attributes (except utils). I don't
see any references to Filter.<attr> or to super(), so I don't see how
you can be using the class attributes.
> Now that the connection part is managed by a single function
> (Utils.connect), I will move the connection checking part to that
> function.
OK.
> Those lists were not stored into variables until some revisions back. I got
> a random thought that it is a bad practice , and replaced that code with
> a variable assignment. It was then when my PEP8 checker returned an error
> stating the presence of an unused variable, which I solved by deleting the
> assigned variable!
;-)
> I will look into the possibility of refactoring in those parts, I
> have some plans in mind. Hope that those work!
That would be very cool! As I say, I'm not confident that it's worth
the work, so be careful about wasting your time just because *I* said
it. (It's not a waste of time if you do it because you think it's an
interesting problem.)
> All the mentioned changes (except the tests) would be completed at
> the latest, by 9th Aug 2014, Saturday. (r 70) Planning to spend the
> weekend on writing new unit tests. (r 71)
Sounds good!
More information about the Mailman-Developers
mailing list