DSPython  00.03.03 — 25 juin 2012
 Tout Classes Espaces de nommage Fichiers Fonctions Variables Pages
debug.py
Aller à la documentation de ce fichier.
1 #!/usr/bin/env python
2 # -*- coding: latin-1 -*-
3 ##\package DSPython.debug Déboggage
4 
5 ##\file
6 # Déboggage
7 
8 # (c) Olivier Pirson --- DragonSoft
9 # http://www.opimedia.be/DS/
10 # Débuté le 22 août 2006
11 ####################################
12 from __future__ import print_function
13 
14 ## Date du dernier changement pour ce module
15 VERSION = 'debug --- 2010 March 16'
16 
17 import collections, inspect, sys
18 
19 
20 
21 # ############
22 # Constantes #
23 ##############
24 ## Niveau des assertions : ne faire que ce qui est le plus rapide
25 ASSERT_QUICK = -1
26 
27 ## Niveau des assertions : normal
28 ASSERT_NORMAL = 0
29 
30 ## Niveau des assertions : faire aussi ce qui est plus lent
31 ASSERT_FAT = 1
32 
33 
34 
35 # ##########
36 # Variable #
37 ############
38 ## Niveau (plus ou moins lourd) des assertions à vérifier
39 assertspeed = ASSERT_NORMAL
40 
41 
42 
43 # ###########
44 # Fonctions #
45 #############
46 ## Renvoie assertspeed sous forme d'un string
48  """Renvoie assertspeed sous forme d'un string
49 
50  O() = 1"""
51  return ('ASSERT_QUICK', 'ASSERT_NORMAL', 'ASSERT_FAT')[assertspeed - ASSERT_QUICK]
52 
53 
54 ## Renvoie un tuple des types de collections ABC supporté par item
56  """Renvoie un tuple des types de collections ABC supportées par item
57 
58  Result: tuple de string
59 
60  O() = ..."""
61  s = []
62  for t in ('Container', 'Hashable', 'Iterable', 'Iterator', 'Sized', 'Callable',
63  'Sequence', 'MutableSequence', 'Set', 'MutableSet', 'Mapping', 'MutableMapping',
64  'MappingView', 'KeysView', 'ItemsView', 'ValuesView'):
65  if inspect.isclass(item):
66  if issubclass(item, eval('collections.' + t)):
67  s.append(t)
68  else:
69  if isinstance(item, eval('collections.' + t)):
70  s.append(t)
71  return tuple(s)
72 
73 
74 ## Envoie sur la sortie des standards le message de début de test
75 def test_begin(version, debug, header='', args=sys.argv[1:]):
76  """Envoie sur la sortie des standards le message de début de test
77 
78  Pre: version: string
79  debug == True
80  header: string
81  args: liste de string"""
82  global assertspeed
83 
84  ASSERT_OPTS = {'--quick': ASSERT_QUICK,
85  '--normal': ASSERT_NORMAL,
86  '--fat': ASSERT_FAT}
87 
88  print('*** {0}{1} --- __debug__ == {2}'.format(header, version, debug))
89  sys.stdout.flush()
90  for arg in args:
91  try:
92  assertspeed = ASSERT_OPTS[arg]
93  except KeyError:
94  pass
95  print("*** args: '{0}'".format("' '".join(args)) if args
96  else '*** args:', end=' ')
97  print('--- assertspeed == ASSERT_{0}'
98  .format(dict(zip(ASSERT_OPTS.values(), ASSERT_OPTS.keys()))[assertspeed][2:].upper()))
99  sys.stdout.flush()
100 
101  assert debug
102 
103 
104 ## Envoie sur la sortie des standards le message de fin de test
105 def test_end():
106  """Envoie sur la sortie des standards le message de fin de test"""
107  print('--- ok ---')
108  sys.stdout.flush()
109 
110 
111 
112 # ######\cond MAINTEST
113 # Main #
114 ########
115 if __name__ == '__main__':
116  def main_test():
117  """Test du module"""
118  test_begin(VERSION, __debug__)
119 
120  print('assertspeed_str() ==', end=' '); sys.stdout.flush()
121  print(assertspeed_str(), end=' ')
122  print('ok'); sys.stdout.flush()
123  test_end()
124 
125  main_test()
126 ##\endcond MAINTEST