[chirp_devel] [csv] Friendlier defaults for missing cToneFreq/rToneFreq columns in csv import - Fixes #1577
chirp.cordless at xoxy.net
Sun Apr 27 19:32:46 PDT 2014
I don't mind changing it if I understand what to change it to.
The current code was Tom's suggestion after I made the comment
> I'd actually felt a little guilty about iterating the header line
> for every line in the file, but didn't see a way to factor that
> without creating globals, which I didn't think would be wanted.
I've said before I'm a bit of a newbie to both OOP and Python.
The concepts of both on-the-fly addition of data items to an
object, and conditionals on their existence (vice value) are
new to me, and I just took it as the way it should be done.
I think you're saying that on-the-fly addition of data items
to an object is not preferred style?
I do see that it could be initialized in the constructor (if that's
the right term in Python) and so still not be a global, which is what
I think you're saying.
By "when we start the load" do you mean in this clause in load():
if lineno == 1:
header = line
# add my test for rToneFreq/cToneFreq headers here
continue
Would initializing my booleans to None in __init__ possibly end up
raising an exception in some subclass with its own __init__() but not
its own _clean_tmode()? Is that even asking a reasonable question?
If not, ignore the next question.
Since my code doesn't do anything unless one is True and the
other False, if I set them both in load(), would initializing them
False in __init__() be more robust?
-dan
On Apr 27, 2014, at 6:23 PM, Dan Smith - dsmith at danplanet.com wrote:
> I don't mean to nitpick, and I know I've ignored this for too long
> anyway. However, I don't really like this:
>
>> + def _clean_tmode(self, headers, line, mem):
>> + """ If there is exactly one of [rToneFreq, cToneFreq] columns in the
>> + csv file, use it for both rtone & ctone. Makes TSQL use friendlier."""
>> +
>> + if not hasattr(self, "_file_has_rTone"):
>> + self._file_has_rTone = "rToneFreq" in headers
>> + if not hasattr(self, "_file_has_cTone"):
>> + self._file_has_cTone = "cToneFreq" in headers
>
> ...because it modifies self in the middle of a method. Would you mind if
> we set those in __init__, perhaps just to None, and then set them
> True/False when we start the load?
>
> If you don't want to spin it again, I'll just apply as-is and chalk it
> up to OCD, but I really think it'd be nicer.
>
> --Dan
More information about the chirp_devel
mailing list