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
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%deffont "standard" xfont "helvetica-medium-r"
%deffont "thick" xfont "helvetica-bold-r"
%deffont "typewriter" xfont "courier-medium-r"
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% Default settings per each line numbers.
%%
%default 1 area 90 90, leftfill, size 2, fore "gray20", back "white", font "standard", hgap 0
%default 2 size 7, vgap 10, prefix " ", ccolor "blue"
%default 3 size 2, bar "gray70", vgap 10
%default 4 size 5, fore "gray20", vgap 30, prefix " ", font "standard"
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% Default settings that are applied to TAB-indented lines.
%%
%tab 1 size 5, vgap 40, prefix " ", icon box "red" 50
%tab 2 size 4, vgap 40, prefix " ", icon arc "yellow" 50
%tab 3 size 3, vgap 40, prefix " ", icon delta3 "white" 40
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
lxml - a sane Python wrapper for libxml
%center
Martijn Faassen, Infrae
faassen@infrae.com
%page
The C library libxml has huge benefits
Standards-compliant XML support
full-featured
actively maintained by XML exports
fast. fast! FAST!
%page
Features of libxml
Parsing
Tree based (DOM-ish) XML structure
XPath support
XSLT support (libxslt)
Relax NG (schema) support
And more
%page
But libxml already has Python bindings!
very low level and C-ish (not Pythonic)
underdocumented. huge, you get lost in them
works with UTF-8, not native Python unicode
can cause segfaults from Python
have to do manual memory management!
%page
lxml is a new Python binding for libxml
Aims (read: TODOS)
Pythonic API
Documented
Use Python unicode strings in API
Safe (no segfaults)
No manual memory management!
%page
Tradeoffs
Slower because of better wrapping.
But libxml is so fast this likely doesn't matter much.
Not all features of libxml exposed (unless you help)
%page
What is there now - Proof of concept
Automatic destruction of documents (refcounted)
Start of ElementTree style API for tree
%page
Future
Fix bugs, add features
Moving into svn repository on codespeak.net
Help!
|