1from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType
2import copy as _copy
3
4
5class Marker(_BaseTraceHierarchyType):
6
7    # class properties
8    # --------------------
9    _parent_path_str = "scattergeo.selected"
10    _path_str = "scattergeo.selected.marker"
11    _valid_props = {"color", "opacity", "size"}
12
13    # color
14    # -----
15    @property
16    def color(self):
17        """
18        Sets the marker color of selected points.
19
20        The 'color' property is a color and may be specified as:
21          - A hex string (e.g. '#ff0000')
22          - An rgb/rgba string (e.g. 'rgb(255,0,0)')
23          - An hsl/hsla string (e.g. 'hsl(0,100%,50%)')
24          - An hsv/hsva string (e.g. 'hsv(0,100%,100%)')
25          - A named CSS color:
26                aliceblue, antiquewhite, aqua, aquamarine, azure,
27                beige, bisque, black, blanchedalmond, blue,
28                blueviolet, brown, burlywood, cadetblue,
29                chartreuse, chocolate, coral, cornflowerblue,
30                cornsilk, crimson, cyan, darkblue, darkcyan,
31                darkgoldenrod, darkgray, darkgrey, darkgreen,
32                darkkhaki, darkmagenta, darkolivegreen, darkorange,
33                darkorchid, darkred, darksalmon, darkseagreen,
34                darkslateblue, darkslategray, darkslategrey,
35                darkturquoise, darkviolet, deeppink, deepskyblue,
36                dimgray, dimgrey, dodgerblue, firebrick,
37                floralwhite, forestgreen, fuchsia, gainsboro,
38                ghostwhite, gold, goldenrod, gray, grey, green,
39                greenyellow, honeydew, hotpink, indianred, indigo,
40                ivory, khaki, lavender, lavenderblush, lawngreen,
41                lemonchiffon, lightblue, lightcoral, lightcyan,
42                lightgoldenrodyellow, lightgray, lightgrey,
43                lightgreen, lightpink, lightsalmon, lightseagreen,
44                lightskyblue, lightslategray, lightslategrey,
45                lightsteelblue, lightyellow, lime, limegreen,
46                linen, magenta, maroon, mediumaquamarine,
47                mediumblue, mediumorchid, mediumpurple,
48                mediumseagreen, mediumslateblue, mediumspringgreen,
49                mediumturquoise, mediumvioletred, midnightblue,
50                mintcream, mistyrose, moccasin, navajowhite, navy,
51                oldlace, olive, olivedrab, orange, orangered,
52                orchid, palegoldenrod, palegreen, paleturquoise,
53                palevioletred, papayawhip, peachpuff, peru, pink,
54                plum, powderblue, purple, red, rosybrown,
55                royalblue, rebeccapurple, saddlebrown, salmon,
56                sandybrown, seagreen, seashell, sienna, silver,
57                skyblue, slateblue, slategray, slategrey, snow,
58                springgreen, steelblue, tan, teal, thistle, tomato,
59                turquoise, violet, wheat, white, whitesmoke,
60                yellow, yellowgreen
61
62        Returns
63        -------
64        str
65        """
66        return self["color"]
67
68    @color.setter
69    def color(self, val):
70        self["color"] = val
71
72    # opacity
73    # -------
74    @property
75    def opacity(self):
76        """
77        Sets the marker opacity of selected points.
78
79        The 'opacity' property is a number and may be specified as:
80          - An int or float in the interval [0, 1]
81
82        Returns
83        -------
84        int|float
85        """
86        return self["opacity"]
87
88    @opacity.setter
89    def opacity(self, val):
90        self["opacity"] = val
91
92    # size
93    # ----
94    @property
95    def size(self):
96        """
97        Sets the marker size of selected points.
98
99        The 'size' property is a number and may be specified as:
100          - An int or float in the interval [0, inf]
101
102        Returns
103        -------
104        int|float
105        """
106        return self["size"]
107
108    @size.setter
109    def size(self, val):
110        self["size"] = val
111
112    # Self properties description
113    # ---------------------------
114    @property
115    def _prop_descriptions(self):
116        return """\
117        color
118            Sets the marker color of selected points.
119        opacity
120            Sets the marker opacity of selected points.
121        size
122            Sets the marker size of selected points.
123        """
124
125    def __init__(self, arg=None, color=None, opacity=None, size=None, **kwargs):
126        """
127        Construct a new Marker object
128
129        Parameters
130        ----------
131        arg
132            dict of properties compatible with this constructor or
133            an instance of
134            :class:`plotly.graph_objs.scattergeo.selected.Marker`
135        color
136            Sets the marker color of selected points.
137        opacity
138            Sets the marker opacity of selected points.
139        size
140            Sets the marker size of selected points.
141
142        Returns
143        -------
144        Marker
145        """
146        super(Marker, self).__init__("marker")
147
148        if "_parent" in kwargs:
149            self._parent = kwargs["_parent"]
150            return
151
152        # Validate arg
153        # ------------
154        if arg is None:
155            arg = {}
156        elif isinstance(arg, self.__class__):
157            arg = arg.to_plotly_json()
158        elif isinstance(arg, dict):
159            arg = _copy.copy(arg)
160        else:
161            raise ValueError(
162                """\
163The first argument to the plotly.graph_objs.scattergeo.selected.Marker
164constructor must be a dict or
165an instance of :class:`plotly.graph_objs.scattergeo.selected.Marker`"""
166            )
167
168        # Handle skip_invalid
169        # -------------------
170        self._skip_invalid = kwargs.pop("skip_invalid", False)
171        self._validate = kwargs.pop("_validate", True)
172
173        # Populate data dict with properties
174        # ----------------------------------
175        _v = arg.pop("color", None)
176        _v = color if color is not None else _v
177        if _v is not None:
178            self["color"] = _v
179        _v = arg.pop("opacity", None)
180        _v = opacity if opacity is not None else _v
181        if _v is not None:
182            self["opacity"] = _v
183        _v = arg.pop("size", None)
184        _v = size if size is not None else _v
185        if _v is not None:
186            self["size"] = _v
187
188        # Process unknown kwargs
189        # ----------------------
190        self._process_kwargs(**dict(arg, **kwargs))
191
192        # Reset skip_invalid
193        # ------------------
194        self._skip_invalid = False
195