|Version 17 (modified by miha, 3 years ago) (diff)|
Basically, the goals are the beauty of the interface and backwards compatibility. Let's be a bit more specific:
- New structure. Adhere to the pythonic naming; in particular, replace camelCase with underscore_separated methods.
- Backwards compatibility needs to be retained at any cost (old scripts and widgets have to work in their unmodified form). If it would not take too much work empty the old module. If you decide that this would introduce too many bugs leave the old module as it is.
- Everything that was documented prior to 2.5 has to be documented now.
Described on the rst documentation page.
CamelCase to underscore_separated
Names of methods, functions, (object) attributes and keyword attributes of functions should all be underscore_separated. Abbreviations should also be in lower case. For example, we should rename AUCWilcoxon to auc_wilcoxon (and not AUC_wilcoxon).
For now, all C++ code is accessible both with CamelCase and underscore separated (detailed description). Python code should be converted with name deprecation decorators (see the page for an example).
Reference documentation for conversion
Choose a part from the list below.
- Convering to/from Numeric and GSL (Janez)
- Loading and saving data
- Attribute types defined in Python
- Sampling - Orange.data.sample
- Removal of unused attribute values
- Cost matrix
- Symmetric matrices (Miha)
- Probability estimation
- Finding nearest neighbours
- Generating subsets of attributes
- Value transformers
Classification, Regression, Clustering
- Simplify a network
- Classifiers from Attributes
- Classifiers in Python
- Random classifier
- Random numbers
- Subtyping Orange classes in Python
- Extending Orange in C++
Still needs porting
- orngEnviron -> Orange.misc.site (Podobno kot python site module, morda .conf)
- orngDimReduction, orngPCA -> Orange.projection.pca
- orngInteract, orngInteractions
- orngMCPrediction, orngMultiClass, orngMultivariatePrediciton
- orngMySQL, orngSQL -> (Orange.data.io ?)
- orngLinProj (Matija)
- orngLinVis, orngLinVis,
- orngScaleData, orngScaleLinProjData, orngScalePolyvizData, orngScaleScatterPlotData
- orngVisFuncts, orngVizRank
- matutil, fileutil, (widgetParser??)
- orngContingency, orngInteract, orngCRS, orng2Array, orngDimRed
Do forget to update the refactoring rules.
Things to check/fix later
- Floating-point numbers and functions are formatted in a weird fashion when enumerating default function parameter values.
- Base classes are determined inappropriately for our needs: for example, orange.RuleLearner is written (and linked) instead of its alias Orange.classification.rules.RuleLearner (or at least Orange.core.RuleLearner).