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
|
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 #
-- 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
-- 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
|