OILS / mycpp / examples / modules.py View on Github | oilshell.org

81 lines, 44 significant
1#!/usr/bin/env python2
2"""
3modules.py
4
5PYTHONPATH=.:mycpp is required to run this one
6"""
7from __future__ import print_function
8
9import os
10from mylib import log
11
12from testpkg import module1
13from testpkg.module2 import func2
14
15
16def run_tests():
17 # type: () -> None
18 module1.func1()
19 func2()
20
21 dog = Dog('white')
22 dog.Speak()
23
24 cat = module1.Cat()
25 cat.Speak()
26
27 cat2 = Sphinx('brown')
28 cat2.Speak()
29
30 # Test inheritance
31 cat = cat2
32 cat.Speak()
33
34 cat.AbstractMethod()
35
36
37def run_benchmarks():
38 # type: () -> None
39 i = 0
40 n = 2000000
41 result = 0
42 while i < n:
43 result += module1.fortytwo()
44 i = i + 1
45 log('result = %d', result)
46
47
48# This is at the bottom to detect order.
49class Dog(object):
50
51 def __init__(self, color):
52 # type: (str) -> None
53 self.color = color
54
55 def Speak(self):
56 # type: () -> None
57 log('%s dog: meow', self.color)
58
59
60class Sphinx(module1.Cat):
61
62 def __init__(self, color):
63 # type: (str) -> None
64 module1.Cat.__init__(self)
65 self.color = color
66
67 def Speak(self):
68 # type: () -> None
69 log('%s sphinx', self.color)
70
71 def AbstractMethod(self):
72 # type: () -> None
73 log('abstract')
74
75
76if __name__ == '__main__':
77 if os.getenv('BENCHMARK'):
78 log('Benchmarking...')
79 run_benchmarks()
80 else:
81 run_tests()