Version 5 (modified by marko, 4 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.


 EtherPad page


Classification methods (learners) are objects named with method followed by Learner:


Things to check/fix later

Aliases in C code to make

  • 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).

Refactoring tool

In orange directory there is a script

  • Use it like this (this will output a diff of proposed changes):
  • To overwrite the (a backup will be saved in use:
    python -w
  • To use an aggressive name changer add the '-a' flag (will fix names in the global and local scope, e.g. it will replace ExampleTable (without the orange. prefix) with and import the appropriate package (
    python -w -a
  • To write the changed script to a new file use '-o' argument
    python -w -o
  • For help type:
    python --help

Adding mapped names and modules

Currently there are only a few MAPPING definitions in the both fixers available. Add all changed names and moved modules to the appropriate file:

  • Add other mapped names to orange/fixer/ in the MAPPING global variable (For instance .. "orange.ExampleTable":"", ...)
  • Add mapped modules to orange/fixer/ in the MAPPING global variable (For instance ... "orngSVM": Orange.classification.svm", ...)

Still needs porting

  • orngIO
  • orngOutliers
  • orngCA
  • orngCI
  • orngEnviron -> (Podobno kot python site module, morda .conf)
  • orngAddOns ->
  • orngDimReduction, orngPCA -> Orange.projection.pca
  • orngInteract, orngInteractions
  • orngMCPrediction, orngMultiClass, orngMultivariatePrediciton
  • orngMySQL, orngSQL -> ( ?)
  • orngPade
  • orngProjectionPursuit
  • orngLinVis, orngLinVis,
  • orngScaleData, orngScaleLinProjData, orngScalePolyvizData, orngScaleScatterPlotData
  • orngVisFuncts, orngVizRank
  • orngMosaic
  • matutil, fileutil, (widgetParser??)
  • updateOrange
  • orngContingency, orngInteract, orngCRS, orng2Array, orngDimRed

Things that would be nice

  • replace all function constructors remaining with class itself (implementing the new method)