~openerp-commiter/openobject-addons/trunk-extra-addons

« back to all changes in this revision

Viewing changes to etl/lib/TODO.txt

  • Committer: Launchpad Translations on behalf of openerp-commiter
  • Date: 2012-11-24 07:05:22 UTC
  • mto: This revision was merged to the branch mainline in revision 5825.
  • Revision ID: launchpad_translations_on_behalf_of_openerp-commiter-20121124070522-2i7pnpw5hq4wuz4g
Launchpad automatic translations update.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
Phase I : the framework
2
 
-----------------------
3
 
 
4
 
Develop 4 very robust components:
5
 
        . csv.in, csv.out, sort, logger (send to a connector, not a screen)
6
 
        . subjob and event/trigger system
7
 
 
8
 
Implement 1 input connectors:
9
 
        . Local File
10
 
 
11
 
Implement 2 output connectors:
12
 
        . Local File
13
 
        . Stdout
14
 
 
15
 
Component must be robusts:
16
 
        . manage errors
17
 
        . manage encodings types
18
 
        . send signals
19
 
        . support different formats (separator, delimiters, ...)
20
 
 
21
 
Automatic generation of documentation
22
 
        . On whole sotware
23
 
        . Good display of components
24
 
 
25
 
Manage all internal data as a uniform style:
26
 
        . unicode for strings
27
 
        . date object for datas and datetime
28
 
        . float, ...
29
 
 
30
 
Schema validation on components (optionnal)
31
 
 
32
 
We must be able to save a job in a file
33
 
        if possible, use pickle ?
34
 
    otherwise, we should implement a __rep__ on each component
35
 
 
36
 
We must have a function to instanciate a job from a saved file.
37
 
 
38
 
Components must have basic statistics functions:
39
 
        Records managed by channel
40
 
        Statistics
41
 
        Latest record
42
 
        statistics are sent to a statistic channel at end of processing or at pause
43
 
 
44
 
Do some automated tests in a directory with a Makefile
45
 
* Test1: csv.in -> logger
46
 
* Test2: csv.in -> sort -> logger -> csv.out
47
 
* Test3: 2 subjobs, the second one is triggered after the first one
48
 
 
49
 
* Manage the interfaces of components: input/output channel names.
50
 
  If a transition as a source or destination channel that do not fit
51
 
  with the component, it should raise an exception
52
 
 
53
 
* Implement __str__ on jobs, components and transitions to have a way to print
54
 
  a job on the screen.
55
 
 
56
 
* Integrate profiler in the job code: cProfile
57
 
 
58
 
* Change so that etl.py can be used as a python library or as a standalone executable
59
 
  application by doing a if __name__=="__main__". Write command line arguments:
60
 
    --job=job.pickle (load a job and process it)
61
 
    --profile        Do and print a profiling in the job process
62
 
    --list-components
63
 
    --list-connectors
64
 
    --list transitions
65
 
 
66
 
* do a unittest system and implement unit tests on components file (using if
67
 
   __name__=='__main__'). Example, a unit test of a component should be defined
68
 
   like this (this is just a proposition, may be there are existing test framework
69
 
   or we can do better):
70
 
   if __name__=='__main__':
71
 
       c = sort(...)
72
 
       test = unit_test(c)
73
 
       test.input('main', [{...},{...}])
74
 
       oldt = None
75
 
       for t in test.output('main'):
76
 
          if oldt and oldt['name']>t['name']:
77
 
            raise unit_test('Validation Error')
78
 
          oldt = t
79
 
       return True
80
 
 
81
 
* We need a system to log data opperations and consolidate this logs in the job
82
 
execution.
83
 
 
84
 
* We should implement the job execution functions: run, step(1), pause, stop,
85
 
  restart, ...
86
 
 
87
 
* We should be able to copy() a job (have two instances of the same job)
88
 
 
89
 
* We should be able to desactivate some transitions (status on transitions)
90
 
 
91