OSDN Git Service

Remove pdb
[karesansui/karesansui.git] / karesansui / lib / dict_op.py
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 #
4 # This file is part of Karesansui Core.
5 #
6 # Copyright (C) 2009-2010 HDE, Inc.
7 #
8 # This program is free software; you can redistribute it and/or
9 # modify it under the terms of the GNU Lesser General Public
10 # License as published by the Free Software Foundation; either
11 # version 2.1 of the License, or (at your option) any later version.
12 #
13
14 import os
15 import re
16 import sys
17
18 from karesansui.lib.utils import preprint_r
19
20 """
21 try:
22     import odict
23     Dict = odict.odict()
24 except:
25     Dict = {}
26 """
27
28 class DictOp:
29
30     def __init__(self):
31
32         self.ModuleNames = []
33         self.ConfigArray = {}
34         self.set_order_key()
35
36     def set_order_key(self, string="@ORDERS"):
37         self.orders_key = string
38
39     def preprint_r(self, module, key=None ,indent=2,depth=None):
40         import pprint
41         pp = pprint.PrettyPrinter(indent=indent,depth=depth)
42         if key is None:
43             pp.pprint(self.getconf(module))
44         else:
45             pp.pprint(self.get(module,key))
46
47     def addconf(self, module, conf_array={}):
48         self.ModuleNames.append(module)
49         self.ConfigArray[module] = conf_array
50         return True
51
52     def getconf(self, module):
53         try:
54             return self.ConfigArray[module]
55         except:
56             return {}
57
58     def set(self, module, key, value, is_cdp=False, multiple_file=False):
59         return self._set(module,key,value,action='set',is_cdp=is_cdp,multiple_file=multiple_file)
60
61     def add(self, module, key, value, is_cdp=False, multiple_file=False):
62         return self._set(module,key,value,action='add',is_cdp=is_cdp,multiple_file=multiple_file)
63
64     def _set(self, module, key, value, action='set', is_cdp=False, multiple_file=False):
65
66         try:
67             self.ConfigArray[module]
68         except:
69             return False
70
71         conf = self.ConfigArray[module]
72
73         if type(key) == list:
74             pass
75         elif type(key) == str:
76             key = [key]
77         else:
78             return False
79
80         new_key = []
81         for _k in key:
82             new_key.append(_k.replace("'","\\'"))
83
84         if is_cdp is False:
85             eval_str  = "conf"
86             cnt = 0
87             for _k in key:
88                 _k = _k.replace("'","\\'")
89                 eval_str  = "%s['%s']" % (eval_str,_k,)
90                 try:
91                     exec("%s" % (eval_str,))
92                     try:
93                         exec("%s['action'] = '%s'" % (eval_str,str(action)))
94                     except:
95                         pass
96                 except:
97                     val_str = "{'value':{},'action':action,'comment':False}"
98                     exec("%s = %s" % (eval_str,val_str))
99
100                 eval_str  = "%s['value']" % (eval_str,)
101                 try:
102                     exec("%s" % (eval_str,))
103                 except:
104                     val_str = "{}"
105                     exec("%s = %s" % (eval_str,val_str))
106
107             eval_str       = "conf['%s']" % "']['value']['".join(new_key)
108             eval_str_value = "%s['value']" % eval_str
109
110             #print "%s = value" % (eval_str_value,)
111             exec("%s = value" % (eval_str_value,))
112
113             self.ConfigArray[module] = conf
114
115         else:
116             k_len = len(new_key)
117             is_dict = True
118             eval_str_value  = "conf"
119
120             if multiple_file is True:
121                 file_name = new_key.pop(0)
122                 eval_str         = eval_str_value + "['%s']" % file_name
123                 eval_str_value  += "['%s']['value']" % file_name
124                 try:
125                     exec("%s" % (eval_str_value,))
126                 except:
127                     try:
128                         exec("%s" % (eval_str,))
129                     except:
130                         val_str = "{}"
131                         exec("%s = %s" % (eval_str,val_str))
132                     val_str = "{}"
133                     exec("%s = %s" % (eval_str_value,val_str))
134
135             cnt = 0
136             for _k in new_key:
137                 eval_str_value  += "['%s']" % _k
138                 try:
139                     exec("%s" % (eval_str_value,))
140                 except:
141                     val_str = "{}"
142                     exec("%s = %s" % (eval_str_value,val_str))
143
144                 eval_str_value_base  = eval_str_value
145                 eval_str_value  += "['value']"
146                 try:
147                     exec("%s" % (eval_str_value,))
148                 except:
149                     if is_dict is False:
150                         val_str = "{'value':[{},[[],None]],'action':action,'comment':False}"
151                     else:
152                         val_str = "{'value':{},'action':action,'comment':False}"
153                     exec("%s = %s" % (eval_str_value_base,val_str))
154
155                 if is_dict is False:
156                     eval_str_value  += "[0]"
157                     if cnt == k_len:
158                         exec("%s = value" % (eval_str_value,))
159
160                 is_dict = not is_dict
161                 cnt = cnt + 1
162
163             exec("%s = value" % (eval_str_value,))
164             self.ConfigArray[module] = conf
165
166         return True
167
168     def unset(self, module, key, is_cdp=False, multiple_file=False):
169         retval = False
170
171         try:
172             self.ConfigArray[module]
173         except:
174             return False
175
176         conf = self.ConfigArray[module]
177
178         if type(key) == list:
179             pass
180         elif type(key) == str:
181             key = [key]
182         else:
183             return retval
184
185         new_key = []
186         for _k in key:
187             new_key.append(_k.replace("'","\\'"))
188
189         if is_cdp is False:
190             eval_str       = "conf['%s']" % "']['value']['".join(new_key)
191
192             try:
193                 exec("del %s" % (eval_str,))
194                 return True
195             except:
196                 return retval
197
198         else:
199             is_dict = True
200             eval_str  = "conf"
201
202             if multiple_file is True:
203                 eval_str  += "['%s']['value']" % new_key.pop(0)
204
205             k_len = len(new_key)
206
207             cnt = 0
208             for _k in new_key:
209                 cnt = cnt + 1
210                 eval_str  += "['%s']" % _k
211                 if cnt == k_len:
212                     break
213                 eval_str  += "['value']"
214                 if is_dict is False:
215                     eval_str  += "[0]"
216                 is_dict = not is_dict
217
218             try:
219                 exec("del %s" % (eval_str,))
220                 return True
221             except:
222                 return retval
223
224
225     def get(self, module, key, with_attr=False, is_cdp=False, multiple_file=False):
226         retval = False
227
228         try:
229             self.ConfigArray[module]
230         except:
231             return retval
232
233         conf = self.ConfigArray[module]
234
235         if type(key) == list:
236             pass
237         elif type(key) == str:
238             key = [key]
239         else:
240             return retval
241
242         new_key = []
243         for _k in key:
244             new_key.append(_k.replace("'","\\'"))
245
246         if is_cdp is False:
247             eval_str       = "conf['%s']" % "']['value']['".join(new_key)
248             if with_attr is True:
249                 eval_str_value = "%s" % eval_str
250             else:
251                 eval_str_value = "%s['value']" % eval_str
252
253             try:
254                 exec("retval = %s" % (eval_str_value,))
255                 return retval
256             except:
257                 return retval
258
259         else:
260             cnt = 0
261             k_len = len(new_key)
262             is_dict = True
263             eval_str_value  = "conf"
264
265             if multiple_file is True:
266                 eval_str_value  += "['%s']['value']" % new_key.pop(0)
267
268             for _k in new_key:
269                 eval_str_value  += "['%s']" % _k
270                 cnt = cnt + 1
271                 if cnt < k_len:
272                     eval_str_value  += "['value']"
273                 elif cnt == k_len:
274                     if with_attr is False:
275                         eval_str_value  += "['value']"
276                 if is_dict is False:
277                     eval_str_value  += "[0]"
278                 is_dict = not is_dict
279
280             try:
281                 exec("retval = %s" % (eval_str_value,))
282                 return retval
283             except:
284                 return retval
285
286
287     def delete(self, module, key, is_cdp=False, multiple_file=False):
288         retval = False
289
290         try:
291             self.ConfigArray[module]
292         except:
293             return retval
294
295         conf = self.ConfigArray[module]
296
297         if type(key) == list:
298             pass
299         elif type(key) == str:
300             key = [key]
301         else:
302             return retval
303
304         new_key = []
305         for _k in key:
306             new_key.append(_k.replace("'","\\'"))
307
308         if is_cdp is False:
309             eval_str       = "conf['%s']" % "']['value']['".join(new_key)
310             eval_str_value = "%s['value']" % eval_str
311
312             try:
313                 exec("%s" % (eval_str,))
314                 eval_str_action = "%s['action']" % eval_str
315                 exec("%s = 'delete'" % (eval_str_action,))
316             except:
317                 pass
318
319             self.ConfigArray[module] = conf
320
321         else:
322             is_dict = True
323             eval_str  = "conf"
324
325             if multiple_file is True:
326                 eval_str  += "['%s']['value']" % new_key.pop(0)
327
328             k_len = len(new_key)
329             cnt = 0
330             for _k in new_key:
331                 cnt = cnt + 1
332                 eval_str  += "['%s']" % _k
333                 if cnt == k_len:
334                     break
335                 eval_str  += "['value']"
336                 if is_dict is False:
337                     eval_str  += "[0]"
338                 is_dict = not is_dict
339
340             try:
341                 exec("%s" % (eval_str,))
342                 eval_str_action = "%s['action']" % eval_str
343                 exec("%s = 'delete'" % (eval_str_action,))
344             except:
345                 pass
346
347             self.ConfigArray[module] = conf
348
349         return True
350
351     def comment(self, module,   key, recursive=False, is_cdp=False, multiple_file=False):
352         return self._comment(module,key,flag=True, recursive=recursive,is_cdp=is_cdp,multiple_file=multiple_file)
353
354     def uncomment(self, module, key, recursive=False, is_cdp=False, multiple_file=False):
355         return self._comment(module,key,flag=False,recursive=recursive,is_cdp=is_cdp,multiple_file=multiple_file)
356
357     def _comment(self, module, key, flag=True, recursive=False, is_cdp=False, multiple_file=False):
358         retval = False
359
360         try:
361             self.ConfigArray[module]
362         except:
363             return retval
364
365         conf = self.ConfigArray[module]
366
367         if type(key) == list:
368             pass
369         elif type(key) == str:
370             key = [key]
371         else:
372             return retval
373
374         new_key = []
375         for _k in key:
376             new_key.append(_k.replace("'","\\'"))
377
378         if is_cdp is False:
379             eval_str       = "conf['%s']" % "']['value']['".join(new_key)
380             eval_str_value = "%s['value']" % eval_str
381
382             try:
383                 exec("%s" % (eval_str,))
384                 eval_str_comment = "%s['comment']" % eval_str
385                 exec("%s = flag" % (eval_str_comment,))
386             except:
387                 pass
388
389             self.ConfigArray[module] = conf
390
391         else:
392             is_dict = True
393             eval_str  = "conf"
394
395             if multiple_file is True:
396                 eval_str  += "['%s']['value']" % new_key.pop(0)
397
398             k_len = len(new_key)
399             cnt = 0
400             for _k in new_key:
401                 cnt = cnt + 1
402                 eval_str  += "['%s']" % _k
403                 if cnt == k_len:
404                     break
405                 eval_str  += "['value']"
406                 if is_dict is False:
407                     eval_str  += "[0]"
408                 is_dict = not is_dict
409
410             try:
411                 exec("%s" % (eval_str,))
412                 eval_str_comment = "%s['comment']" % eval_str
413                 exec("%s = %s" % (eval_str_comment,str(flag),))
414
415                 if recursive is True:
416                     eval_str_value = "%s['value']" % eval_str
417                     exec("_value = %s" % (eval_str_value,))
418                     if type(_value) == list:
419                         for _value2 in _value:
420                             if type(_value2) == dict:
421                                 for _k2,_v2 in _value2.iteritems():
422                                     r_key = key + [_k2]
423                                     self._comment(module, r_key, flag, recursive, is_cdp, multiple_file)
424                     elif type(_value) == dict:
425                         for _k2,_v2 in _value.iteritems():
426                             r_key = key + [_k2]
427                             self._comment(module, r_key, flag, recursive, is_cdp, multiple_file)
428
429             except:
430                 pass
431
432             self.ConfigArray[module] = conf
433
434         return True
435
436     def forceset(self, module, key, value, is_cdp=False, multiple_file=False):
437         retval1 = self._set(module,key,value,action='set',is_cdp=is_cdp,multiple_file=multiple_file)
438         retval2 = self._comment(module,key,value,flag=False)
439         return retval1 & retval2
440
441     def query(self, module, key, regex=".*"):
442         retval = self.get(module,key)
443         if type(retval) is dict:
444             new_retval = []
445             for _k,_v in retval.iteritems():
446                 new_retval.append(_k)
447             retval = new_retval
448
449         if type(retval) is str:
450             retval = [retval]
451
452         if type(retval) is list:
453             new_retval = []
454             for _k in retval:
455                 if re.search(r"%s" % regex, _k):
456                     new_retval.append(_k)
457             retval = new_retval
458
459         return retval
460
461     def action(self, module, key, is_cdp=False, multiple_file=False):
462         retval = False
463
464         try:
465             self.ConfigArray[module]
466         except:
467             return retval
468
469         conf = self.ConfigArray[module]
470
471         if type(key) == list:
472             pass
473         elif type(key) == str:
474             key = [key]
475         else:
476             return retval
477
478         new_key = []
479         for _k in key:
480             new_key.append(_k.replace("'","\\'"))
481
482         if is_cdp is False:
483             eval_str       = "conf['%s']" % "']['value']['".join(new_key)
484             eval_str_action = "%s['action']" % eval_str
485
486             try:
487                 exec("retval = %s" % (eval_str_action,))
488                 return retval
489             except:
490                 return retval
491
492         else:
493             is_dict = True
494             eval_str  = "conf"
495
496             if multiple_file is True:
497                 eval_str  += "['%s']['value']" % new_key.pop(0)
498
499             k_len = len(new_key)
500             cnt = 0
501             for _k in new_key:
502                 cnt = cnt + 1
503                 eval_str  += "['%s']" % _k
504                 if cnt == k_len:
505                     break
506                 eval_str  += "['value']"
507                 if is_dict is False:
508                     eval_str  += "[0]"
509                 is_dict = not is_dict
510
511             try:
512                 exec("%s" % (eval_str,))
513                 eval_str_action = "%s['action']" % eval_str
514                 exec("retval = %s" % (eval_str_action,))
515                 return retval
516             except:
517                 return retval
518
519
520     def iscomment(self, module, key, is_cdp=False, multiple_file=False):
521         retval = False
522
523         try:
524             self.ConfigArray[module]
525         except:
526             return retval
527
528         conf = self.ConfigArray[module]
529
530         if type(key) == list:
531             pass
532         elif type(key) == str:
533             key = [key]
534         else:
535             return retval
536
537         new_key = []
538         for _k in key:
539             new_key.append(_k.replace("'","\\'"))
540
541         if is_cdp is False:
542             eval_str       = "conf['%s']" % "']['value']['".join(new_key)
543             eval_str_comment = "%s['comment']" % eval_str
544
545             try:
546                 exec("retval = %s" % (eval_str_comment,))
547                 return retval
548             except:
549                 return retval
550
551         else:
552             is_dict = True
553             eval_str  = "conf"
554
555             if multiple_file is True:
556                 eval_str  += "['%s']['value']" % new_key.pop(0)
557
558             k_len = len(new_key)
559             cnt = 0
560             for _k in new_key:
561                 cnt = cnt + 1
562                 eval_str  += "['%s']" % _k
563                 if cnt == k_len:
564                     break
565                 eval_str  += "['value']"
566                 if is_dict is False:
567                     eval_str  += "[0]"
568                 is_dict = not is_dict
569
570             try:
571                 exec("%s" % (eval_str,))
572                 eval_str_comment = "%s['comment']" % eval_str
573                 exec("retval = %s" % (eval_str_comment,))
574                 return retval
575             except:
576                 return retval
577
578
579     def isset(self, module, key, is_cdp=False, multiple_file=False):
580         retval = False
581
582         if is_cdp is False:
583             if self.get(module,key) is not False:
584                 retval = True
585         else:
586             if self.get(module, key, is_cdp=True, multiple_file=multiple_file) is not False:
587                 retval = True
588
589         return retval
590
591     def order(self, module, key, is_parent_parser=False):
592         retval = False
593
594         search_key = []
595         if type(key) == list:
596             if is_parent_parser is True:
597                 _sk = key.pop(0)
598                 search_key.append(_sk)
599         elif type(key) == str:
600             key = [key]
601
602         search_key.append(self.orders_key)
603
604         try:
605             orders = self.get(module, search_key)
606             if key in orders:
607                 return orders.index(key)
608         except:
609             pass
610
611         return retval
612
613     def insert_order(self, module, key, num=None, is_parent_parser=False):
614         retval = False
615
616         search_key = []
617         if type(key) == list:
618             if is_parent_parser is True:
619                 _sk = key.pop(0)
620                 search_key.append(_sk)
621         elif type(key) == str:
622             key = [key]
623
624         search_key.append(self.orders_key)
625
626         try:
627             orders = self.get(module, search_key)
628             if key in orders:
629                 return orders.index(key)
630             else:
631                 if num is None:
632                     num = len(orders)
633                 orders.insert(num,key)
634                 self.set(module, search_key, orders)
635                 retval = num
636         except:
637             self.set(module, search_key, [key])
638             retval = 0
639             pass
640
641         return retval
642
643     def change_order(self, module, key, num=None, is_parent_parser=False):
644         self.delete_order(module, key, is_parent_parser=is_parent_parser)
645         return self.insert_order(module, key, num, is_parent_parser=is_parent_parser)
646
647     def append_order(self, module, key, is_parent_parser=False):
648         return self.insert_order(module, key, num=None, is_parent_parser=is_parent_parser)
649
650     def delete_order(self, module, key, is_parent_parser=False):
651         retval = False
652
653         search_key = []
654         if type(key) == list:
655             if is_parent_parser is True:
656                 _sk = key.pop(0)
657                 search_key.append(_sk)
658         elif type(key) == str:
659             key = [key]
660
661         search_key.append(self.orders_key)
662
663         try:
664             orders = self.get(module, search_key)
665             if key in orders:
666                 num = orders.index(key)
667                 orders.pop(num)
668                 self.set(module, search_key, orders)
669                 retval = num
670         except:
671             pass
672
673         return retval
674
675     def cdp_isset(self, module, key, force=False, multiple_file=False):
676         retval = False
677
678         isCommentDeal = False
679         try:
680             base_parser_name = self.ConfigArray[module]['@BASE_PARSER']['value']
681             if base_parser_name == "commentDealParser" or base_parser_name == "xmlLikeConfParser":
682                 isCommentDeal = True
683         except:
684             pass
685
686         if isCommentDeal is False and force is False:
687             return retval
688
689         retval = self.isset(module,key,is_cdp=True,multiple_file=multiple_file)
690
691         return retval
692
693     def cdp_get(self, module, key, force=False, multiple_file=False):
694         retval = False
695
696         isCommentDeal = False
697         try:
698             base_parser_name = self.ConfigArray[module]['@BASE_PARSER']['value']
699             if base_parser_name == "commentDealParser" or base_parser_name == "xmlLikeConfParser":
700                 isCommentDeal = True
701         except:
702             pass
703
704         if isCommentDeal is False and force is False:
705             return retval
706
707         ret = self.get(module, key, is_cdp=True, multiple_file=multiple_file)
708         if type(ret) == list:
709             return ret[0]
710         else:
711             return ret
712
713     def cdp_get_comment(self, module, key, force=False, multiple_file=False):
714         retval = False
715
716         isCommentDeal = False
717         try:
718             base_parser_name = self.ConfigArray[module]['@BASE_PARSER']['value']
719             if base_parser_name == "commentDealParser" or base_parser_name == "xmlLikeConfParser":
720                 isCommentDeal = True
721         except:
722             pass
723
724         if isCommentDeal is False and force is False:
725             return retval
726
727         ret = self.get(module, key, is_cdp=True, multiple_file=multiple_file)
728         if type(ret) == list:
729             return ret[1]
730         else:
731             return retval
732
733     def cdp_get_pre_comment(self, module, key, force=False, multiple_file=False):
734         retval = False
735
736         ret = self.cdp_get_comment(module, key, force, multiple_file)
737         if type(ret) == list:
738             return ret[0]
739         else:
740             return retval
741
742     def cdp_get_post_comment(self, module, key, force=False, multiple_file=False):
743         retval = False
744
745         ret = self.cdp_get_comment(module, key, force, multiple_file)
746         if type(ret) == list:
747             return ret[1]
748         else:
749             return retval
750
751     """
752     is_opt_multi: if parameter is multidefine-able, is_opt_multi should be True
753     """
754     def cdp_set(self, module, key, value, force=False, multiple_file=False, is_opt_multi=False):
755         retval = False
756
757         isCommentDeal = False
758         try:
759             base_parser_name = self.ConfigArray[module]['@BASE_PARSER']['value']
760             if base_parser_name == "commentDealParser" or base_parser_name == "xmlLikeConfParser":
761                 isCommentDeal = True
762         except:
763             pass
764
765         if isCommentDeal is False and force is False:
766             return retval
767
768         ret = self.get(module, key, is_cdp=True, multiple_file=multiple_file)
769         if type(ret) == list:
770             ret[0] = value
771         else:
772             if is_opt_multi is True:
773                 ret = value
774             else:
775                 ret = [value,[[],None]]
776
777         return self.set(module, key, ret, is_cdp=True, multiple_file=multiple_file)
778
779     """
780     is_opt_multi: if parameter is multidefine-able, is_opt_multi should be True
781     """
782     def cdp_add(self, module, key, value, force=False, multiple_file=False, is_opt_multi=False):
783         retval = False
784
785         isCommentDeal = False
786         try:
787             base_parser_name = self.ConfigArray[module]['@BASE_PARSER']['value']
788             if base_parser_name == "commentDealParser" or base_parser_name == "xmlLikeConfParser":
789                 isCommentDeal = True
790         except:
791             pass
792
793         if isCommentDeal is False and force is False:
794             return retval
795
796         ret = self.get(module, key, is_cdp=True, multiple_file=multiple_file)
797         if type(ret) == list:
798             ret[0] = value
799         else:
800             if is_opt_multi is True:
801                 ret = value
802             else:
803                 ret = [value,[[],None]]
804
805         return self.add(module, key, ret, is_cdp=True, multiple_file=multiple_file)
806
807     def cdp_set_pre_comment(self, module, key, value, force=False, multiple_file=False):
808         retval = False
809
810         isCommentDeal = False
811         try:
812             base_parser_name = self.ConfigArray[module]['@BASE_PARSER']['value']
813             if base_parser_name == "commentDealParser" or base_parser_name == "xmlLikeConfParser":
814                 isCommentDeal = True
815         except:
816             pass
817
818         if isCommentDeal is False and force is False:
819             return retval
820
821         if type(value) == list:
822             pass
823         elif type(value) == str:
824             value = [value]
825         else:
826             return retval
827
828         ret = self.get(module, key, is_cdp=True, multiple_file=multiple_file)
829         if type(ret) == list:
830             ret[1][0] = value
831         elif type(ret) == str:
832             return retval
833             # not implemented.
834             ret = [ret,[value,None]]
835         else:
836             return retval
837
838         return self.set(module, key, ret, is_cdp=True, multiple_file=multiple_file)
839
840     def cdp_set_post_comment(self, module, key, value, force=False, multiple_file=False):
841         retval = False
842
843         isCommentDeal = False
844         try:
845             base_parser_name = self.ConfigArray[module]['@BASE_PARSER']['value']
846             if base_parser_name == "commentDealParser" or base_parser_name == "xmlLikeConfParser":
847                 isCommentDeal = True
848         except:
849             pass
850
851         if isCommentDeal is False and force is False:
852             return retval
853
854         if type(value) == list:
855             value = " ".join(value)
856         elif type(value) == str:
857             pass
858         else:
859             return retval
860
861         ret = self.get(module, key, is_cdp=True, multiple_file=multiple_file)
862         if type(ret) == list:
863             ret[1][1] = value
864         elif type(ret) == str:
865             return retval
866             # not implemented.
867             ret = [ret,[[],value]]
868         else:
869             return retval
870
871         return self.set(module, key, ret, is_cdp=True, multiple_file=multiple_file)
872
873     def cdp_unset(self, module, key, force=False, multiple_file=False):
874         retval = False
875
876         isCommentDeal = False
877         try:
878             base_parser_name = self.ConfigArray[module]['@BASE_PARSER']['value']
879             if base_parser_name == "commentDealParser" or base_parser_name == "xmlLikeConfParser":
880                 isCommentDeal = True
881         except:
882             pass
883
884         if isCommentDeal is False and force is False:
885             return retval
886
887         return self.unset(module, key, is_cdp=True, multiple_file=multiple_file)
888
889  
890     def cdp_action(self, module, key, force=False, multiple_file=False):
891         retval = False
892
893         isCommentDeal = False
894         try:
895             base_parser_name = self.ConfigArray[module]['@BASE_PARSER']['value']
896             if base_parser_name == "commentDealParser" or base_parser_name == "xmlLikeConfParser":
897                 isCommentDeal = True
898         except:
899             pass
900
901         if isCommentDeal is False and force is False:
902             return retval
903
904         retval = self.action(module, key, is_cdp=True, multiple_file=multiple_file)
905         return retval
906
907
908     def cdp_delete(self, module, key, force=False, multiple_file=False):
909         retval = False
910
911         isCommentDeal = False
912         try:
913             base_parser_name = self.ConfigArray[module]['@BASE_PARSER']['value']
914             if base_parser_name == "commentDealParser" or base_parser_name == "xmlLikeConfParser":
915                 isCommentDeal = True
916         except:
917             pass
918
919         if isCommentDeal is False and force is False:
920             return retval
921
922         retval = self.delete(module, key, is_cdp=True, multiple_file=multiple_file)
923         return retval
924
925
926     def cdp_iscomment(self, module, key, force=False, multiple_file=False):
927         retval = False
928
929         isCommentDeal = False
930         try:
931             base_parser_name = self.ConfigArray[module]['@BASE_PARSER']['value']
932             if base_parser_name == "commentDealParser" or base_parser_name == "xmlLikeConfParser":
933                 isCommentDeal = True
934         except:
935             pass
936
937         if isCommentDeal is False and force is False:
938             return retval
939
940         retval = self.iscomment(module, key, is_cdp=True, multiple_file=multiple_file)
941         return retval
942
943
944     def cdp_comment(self, module, key, recursive=False, force=False, multiple_file=False):
945         retval = False
946
947         isCommentDeal = False
948         try:
949             base_parser_name = self.ConfigArray[module]['@BASE_PARSER']['value']
950             if base_parser_name == "commentDealParser" or base_parser_name == "xmlLikeConfParser":
951                 isCommentDeal = True
952         except:
953             pass
954
955         if isCommentDeal is False and force is False:
956             return retval
957
958         retval = self.comment(module, key, recursive=recursive, is_cdp=True, multiple_file=multiple_file)
959         return retval
960
961
962     def cdp_uncomment(self, module, key, recursive=False, force=False, multiple_file=False):
963         retval = False
964
965         isCommentDeal = False
966         try:
967             base_parser_name = self.ConfigArray[module]['@BASE_PARSER']['value']
968             if base_parser_name == "commentDealParser" or base_parser_name == "xmlLikeConfParser":
969                 isCommentDeal = True
970         except:
971             pass
972
973         if isCommentDeal is False and force is False:
974             return retval
975
976         retval = self.uncomment(module, key, recursive=recursive, is_cdp=True, multiple_file=multiple_file)
977         return retval
978
979
980 """
981 aop = DictOp()
982 aop.addconf("foo",{})
983 aop.set("foo",["h'oge1","hoge2","hoge3-0"],"fuga1")
984 aop.set("foo",["h'oge1","hoge2","hoge3-1"],"fuga2")
985 aop.add("foo",["h'oge1","hoge2","hoge3-2"],"fuga2")
986 aop.delete("foo",["h'oge1","hoge2","hoge3-2"])
987 aop.uncomment("foo",["h'oge1","hoge2","hoge3-2"])
988 aop.comment("foo",["h'oge1","hoge2","hoge3-2"])
989 aop.preprint_r("foo")
990 aop.preprint_r("foo",["h'oge1"])
991 print aop.query("foo",["h'oge1","hoge2"],"^oge3-[01]")
992 print aop.action("foo",["h'oge1","hoge2","hoge3-2"])
993 print aop.iscomment("foo",["h'oge1","hoge2","hoge3-2"])
994 print aop.isset("foo",["h'oge1","hoge2","hoge3-2"])
995 print aop.isset("foo",["h'oge1","hoge2","hoge3-5"])
996 print aop.isset("foo",["h'oge1","hoge3","hoge3-2"])
997 print aop.isset("foo",["h'oge1","hoge2"])
998 print aop.getconf("foo")
999 print aop.getconf("bar")
1000 """