def assign_node_colors_and_style(self):
<EOL>colors = self.style.node_colors<EOL>style = self.style.node_style<EOL>if colors is None:<EOL><INDENT>if style["<STR_LIT>"] in (None, "<STR_LIT:none>"):<EOL><INDENT>style.pop("<STR_LIT>")<EOL><DEDENT>else:<EOL><INDENT>if isinstance(style["<STR_LIT>"], (list, tuple)):<EOL><INDENT>raise ToytreeError(<EOL>"<STR_LIT>")<EOL><DEDENT>color = style["<STR_LIT>"]<EOL>if isinstance(color, (np.ndarray, np.void, list, tuple)):<EOL><INDENT>color = toyplot.color.to_css(color)<EOL><DEDENT>self.node_colors = [color] * self.ttree.nnodes<EOL><DEDENT><DEDENT>else:<EOL><INDENT>style.pop("<STR_LIT>")<EOL>if isinstance(colors, str):<EOL><INDENT>color = colors<EOL>if isinstance(color, (np.ndarray, np.void, list, tuple)):<EOL><INDENT>color = toyplot.color.to_css(color)<EOL><DEDENT>self.node_colors = [color] * self.ttree.nnodes<EOL><DEDENT>elif isinstance(colors, (list, tuple)):<EOL><INDENT>if len(colors) != len(self.node_colors):<EOL><INDENT>raise ToytreeError("<STR_LIT>")<EOL><DEDENT>for cidx in range(len(self.node_colors)):<EOL><INDENT>color = colors[cidx]<EOL>if isinstance(color, (np.ndarray, np.void, list, tuple)):<EOL><INDENT>color = toyplot.color.to_css(color)                   <EOL><DEDENT>self.node_colors[cidx] = color<EOL><DEDENT><DEDENT><DEDENT>if self.style.node_style["<STR_LIT>"] is None:<EOL><INDENT>self.style.node_style.stroke = "<STR_LIT:none>"<EOL><DEDENT>markers = self.style.node_markers<EOL>if markers is None:<EOL><INDENT>self.node_markers = ["<STR_LIT:o>"] * self.ttree.nnodes<EOL><DEDENT>else:<EOL><INDENT>if isinstance(markers, str):<EOL><INDENT>self.node_markers = [markers] * self.ttree.nnodes<EOL><DEDENT>elif isinstance(markers, (list, tuple)):<EOL><INDENT>for cidx in range(len(self.node_markers)):<EOL><INDENT>self.node_markers[cidx] = markers[cidx]<EOL><DEDENT><DEDENT><DEDENT>
Resolve conflict of 'node_color' and 'node_style['fill'] args which are
redundant. Default is node_style.fill unless user entered node_color.
To enter multiple colors user must use node_color not style fill. 
Either way, we build a list of colors to pass to Drawing.node_colors 
which is then written to the marker as a fill CSS attribute.