3
3
import hashlib
4
4
import math
5
5
from collections .abc import Sequence
6
+ from typing import Any , Callable
6
7
7
8
from docutils import nodes
8
9
from docutils .parsers .rst import directives
@@ -26,6 +27,27 @@ class Needbar(nodes.General, nodes.Element):
26
27
pass
27
28
28
29
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
+
29
51
class NeedbarDirective (FilterBase ):
30
52
"""
31
53
Directive to plot diagrams with the help of matplotlib
@@ -39,25 +61,12 @@ class NeedbarDirective(FilterBase):
39
61
optional_arguments = 1
40
62
final_argument_whitespace = True
41
63
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
61
70
62
71
# Algorithm:
63
72
# 1. define constants
0 commit comments