summaryrefslogtreecommitdiff
path: root/todo1.0
blob: 593185bc35d3f75f520f4f5666ed4af570491a9c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
Atom stanza? Should stanzas for plugins go in sleekxmpp.stanza or sleekxmpp.plugins.stanza?

sleekxmpp.stanza __all__ out of date?

stanza.error could be cleaned up, use _delSubText, etc

stanza.htmlim could use _delSubText, etc. Why not msg['html']['body'] instead of msg['html']['html']?

Unify timeout values - maybe xmlstream.stanzabase.TIMEOUT?

Need to use registerStanzaPlugin in rootstanza instead of the manual steps

Is exceptions.XMPPError raised anywhere? grep says no, is it still needed?

Extra tostring method in xmlstream. Maybe modify the tostring/ packages to accept a stream and top namespace instead of assuming a stanza object? Change ElementBase __str__ to pass its stream object to new function instead of extending ToString.

Move tostring and tostring26 to be a single package with import switch in a __init__.py that selects appropriate file to import.

Remove thread remains from handler classes.

Clarify what is meant by 'instream' for a handler.

Allow for XPath matching to use basic [@att="value"] filter. <- eek? Alternative is to use xml mask, but those are longer. 

ElementBase sub_items not subitem?

Only import cElementTree in stanzabase, everything else reference that. Would make using lxml instead of cElementTree easier if needed.

*XMPP needs to use JID class instead of lots of fields.

BaseXMPP set_jid, makeIqQuery, getjidresource, getjidbare not needed

Is BaseXMPP.send used anywhere?

Make top level examples folder, put example.py, component_example.py there. Maybe even the disco browser too.

__getitem__ should be in BaseXMPP. get too, or remove it?

xmlstreammod in ComponentXMPP can be removed, just use XMLStream.

Why CamelCase and underscore_names? Document semantics.

Make the common classes available using __init__.py

Need to unit test stanzabase/elementbase. Heavily.

conn_tests and sleekxmpp/tests and sleekxmpp/xmlstresm/test.* -> convert to either unit tests, or at least put in same place

Update setup.py - github url, version #

scheduler needs unit tests

__init__.py stream:features handler should use new state machine



-- PEP8 - all files

Need to use spaces

Docstrings are lacking. Need to document attributes and return values.

Organize imports

Use absolute, not relative imports

Fix one-liner if statements

Line length limit of 79 characters



-- Plugins

--- xep_0004

Need more unit tests

--- xep_0009

Need stanza objects

Need unit tests

--- xep_0045

Need to use stanza objects

A few TODO comments for checking roles and using defaults

Need unit tests

--- xep_0050

Need unit tests

Need stanza objects - use new xep_0004

--- xep_0060

Need unit tests

Need to use existing stanza objects

--- xep_0078

Is it useful still?

Need stanza objects/unit tests

--- xep_0086

Is there a way to automate setting error codes?

Seems like this should be part of the error stanza by default

Use stanza objects

--- xep_0092

Stanza objects

Unit tests

--- xep_0199

Stanza objects

Unit tests

Clean commented code

Use the new scheduler



-- Documentation

Document the Zen/Tao/Whatever of SleekXMPP to explain design goals and decisions

Write architecture description 

XMPP:TDG needs to be rewritten.

Need to update docs that reference old JID attributes of sleekxmpp objects

Page describing new JID class

Message page needs updating

Iq page needs to be written

Make guides to go with example.py and component_example.py

Page on xmlstream.matchers

Page on xmlstream.handlers, especially waiters

Page on using xmlstream.scheduler