Python module usage
Added by Ugur Cayoglu about 8 years ago
Hi there,
I wrote a small python module for easier handling of cdo operations and
I would like to hear from the community what they think about it.
You can find the repository at [0]. The basic idea is to use
it like method chaining in javascript [1].
[0] https://github.com/ucyo/cdochain
[1] https://schier.co/blog/2013/11/14/method-chaining-in-javascript.html
Thanks and I hope it helps during daily work.
CU
UC
Replies (2)
RE: Python module usage - Added by Ralf Mueller about 8 years ago
Hi!
Method chaining is pretty normal, when it comes to OO languages like ruby, python, C++ or so. I could have implemented this in the cdo-bindings (no matter if its ruby or python) by returning the object (self) at the end of each operator call. In that case you get chaining for free.
There are reasons, why I didn't
- User should have most easy access to output files (so I used this as the default return value)
- Operator chains have to be called at once to get the internal parallelism of CDO running - otherwise is is creating additional temporal files. Here the built-in chaining (above) would not work. You seem to be aware of this (https://github.com/ucyo/cdochain/blob/master/cdochain/chaining.py#L70), but TBH I did not fully understand yet, if it's doing the right thing. I will take a closer look and add some tests to see what it really does.
Syntactically the chain looks brilliant!
thx for the effort
ralf
RE: Python module usage - Added by Ugur Cayoglu about 8 years ago
Hi Ralf,
thank you for your feedback!
I don't know about Ruby, but in Python - just returning 'self' - won't work. The reason for this is explained in [0].
[0] http://derrickgilland.com/posts/introduction-to-generative-classes-in-python/
The final 'execute' command is creating the appropriate one liner and sends the command to cdo.Cdo()
I didn't refactor the code yet, but will be doing that soon