33import hashlib
44import math
55from collections .abc import Sequence
6+ from typing import Any , Callable
67
78from docutils import nodes
89from docutils .parsers .rst import directives
@@ -26,6 +27,27 @@ class Needbar(nodes.General, nodes.Element):
2627 pass
2728
2829
30+ OPTION_SPEC_DEFAULT = {
31+ "style" : directives .unchanged_required ,
32+ "colors" : directives .unchanged_required ,
33+ "text_color" : directives .unchanged_required ,
34+ "x_axis_title" : directives .unchanged_required ,
35+ "xlabels" : directives .unchanged_required ,
36+ "xlabels_rotation" : directives .unchanged_required ,
37+ "y_axis_title" : directives .unchanged_required ,
38+ "ylabels" : directives .unchanged_required ,
39+ "ylabels_rotation" : directives .unchanged_required ,
40+ "separator" : directives .unchanged_required ,
41+ "legend" : directives .flag ,
42+ "stacked" : directives .flag ,
43+ "show_sum" : directives .flag ,
44+ "show_top_sum" : directives .flag ,
45+ "sum_rotation" : directives .unchanged_required ,
46+ "transpose" : directives .flag ,
47+ "horizontal" : directives .flag ,
48+ }
49+
50+
2951class NeedbarDirective (FilterBase ):
3052 """
3153 Directive to plot diagrams with the help of matplotlib
@@ -39,25 +61,12 @@ class NeedbarDirective(FilterBase):
3961 optional_arguments = 1
4062 final_argument_whitespace = True
4163
42- option_spec = {
43- "style" : directives .unchanged_required ,
44- "colors" : directives .unchanged_required ,
45- "text_color" : directives .unchanged_required ,
46- "x_axis_title" : directives .unchanged_required ,
47- "xlabels" : directives .unchanged_required ,
48- "xlabels_rotation" : directives .unchanged_required ,
49- "y_axis_title" : directives .unchanged_required ,
50- "ylabels" : directives .unchanged_required ,
51- "ylabels_rotation" : directives .unchanged_required ,
52- "separator" : directives .unchanged_required ,
53- "legend" : directives .flag ,
54- "stacked" : directives .flag ,
55- "show_sum" : directives .flag ,
56- "show_top_sum" : directives .flag ,
57- "sum_rotation" : directives .unchanged_required ,
58- "transpose" : directives .flag ,
59- "horizontal" : directives .flag ,
60- }
64+ option_spec : dict [str , Callable [[str ], Any ]] = OPTION_SPEC_DEFAULT .copy ()
65+
66+ @classmethod
67+ def reset (cls ) -> None :
68+ """Reset the directive to its initial state."""
69+ cls .option_spec = OPTION_SPEC_DEFAULT
6170
6271 # Algorithm:
6372 # 1. define constants
0 commit comments