Mercurial > genshi > mirror
annotate examples/basic/run.py @ 912:c74a141a48ff experimental-py3k
py3k branch: add 2to3 build infrastructure to setup.py (this pulls the tests into the source distribution so that tests can be run after building with 2to3)
author | hodgestar |
---|---|
date | Sun, 24 Oct 2010 21:09:36 +0000 |
parents | 84168828b074 |
children |
rev | line source |
---|---|
3 | 1 #!/usr/bin/python |
2 # -*- coding: utf-8 -*- | |
3 | |
4 import os | |
5 import sys | |
73 | 6 import time |
3 | 7 |
230 | 8 from genshi.template import TemplateLoader |
3 | 9 |
10 def test(): | |
11 base_path = os.path.dirname(os.path.abspath(__file__)) | |
21
b4d17897d053
* Include paths are now interpreted relative to the path of the including template. Closes #3.
cmlenz
parents:
17
diff
changeset
|
12 loader = TemplateLoader([base_path], auto_reload=True) |
3 | 13 |
73 | 14 start = time.clock() |
3 | 15 tmpl = loader.load('test.html') |
73 | 16 print ' --> parse stage: %.4f ms' % ((time.clock() - start) * 1000) |
3 | 17 |
17
74cc70129d04
Refactoring to address #6: all match templates are now processed by a single filter, which means that match templates added by included templates are properly applied. A side effect of this refactoring is that `Context` objects may not be reused across multiple template processing runs.
cmlenz
parents:
3
diff
changeset
|
18 data = dict(hello='<world>', skin='default', hey='ZYX', bozz=None, |
74cc70129d04
Refactoring to address #6: all match templates are now processed by a single filter, which means that match templates added by included templates are properly applied. A side effect of this refactoring is that `Context` objects may not be reused across multiple template processing runs.
cmlenz
parents:
3
diff
changeset
|
19 items=['Number %d' % num for num in range(1, 15)], |
74cc70129d04
Refactoring to address #6: all match templates are now processed by a single filter, which means that match templates added by included templates are properly applied. A side effect of this refactoring is that `Context` objects may not be reused across multiple template processing runs.
cmlenz
parents:
3
diff
changeset
|
20 prefix='#') |
3 | 21 |
149
537f819c547b
`Template.generate()` now accepts the context data as keyword arguments, so that you don't have to import the `Context` class every time you want to pass data into a template.
cmlenz
parents:
73
diff
changeset
|
22 print tmpl.generate(**data).render(method='html') |
3 | 23 |
24 times = [] | |
73 | 25 for i in range(1000): |
26 start = time.clock() | |
149
537f819c547b
`Template.generate()` now accepts the context data as keyword arguments, so that you don't have to import the `Context` class every time you want to pass data into a template.
cmlenz
parents:
73
diff
changeset
|
27 list(tmpl.generate(**data)) |
73 | 28 times.append(time.clock() - start) |
3 | 29 sys.stdout.write('.') |
30 sys.stdout.flush() | |
31 print | |
32 | |
73 | 33 print ' --> render stage: %s ms (average)' % ( |
34 (sum(times) / len(times) * 1000)) | |
3 | 35 |
36 if __name__ == '__main__': | |
37 if '-p' in sys.argv: | |
38 import hotshot, hotshot.stats | |
39 prof = hotshot.Profile("template.prof") | |
40 benchtime = prof.runcall(test) | |
41 stats = hotshot.stats.load("template.prof") | |
42 stats.strip_dirs() | |
43 stats.sort_stats('time', 'calls') | |
44 stats.print_stats() | |
45 else: | |
46 test() |