def assign_edge_colors_and_widths(self):
<EOL>if self.style.edge_widths is None:<EOL><INDENT>if not self.style.edge_style["<STR_LIT>"]:<EOL><INDENT>self.style.edge_style.pop("<STR_LIT>")<EOL>self.style.edge_style.pop("<STR_LIT>")<EOL>self.edge_widths = [None] * self.nedges<EOL><DEDENT>else:<EOL><INDENT>if isinstance(self.style.edge_style["<STR_LIT>"], (list, tuple)):<EOL><INDENT>raise ToytreeError(<EOL>"<STR_LIT>")<EOL><DEDENT>width = self.style.edge_style["<STR_LIT>"]<EOL>self.style.edge_style.pop("<STR_LIT>")<EOL>self.edge_widths = [width] * self.nedges<EOL><DEDENT><DEDENT>else:<EOL><INDENT>self.style.edge_style.pop("<STR_LIT>")            <EOL>if isinstance(self.style.edge_widths, (str, int)):<EOL><INDENT>self.edge_widths = [int(self.style.edge_widths)] * self.nedges<EOL><DEDENT>elif isinstance(self.style.edge_widths, (list, tuple)):<EOL><INDENT>if len(self.style.edge_widths) != self.nedges:<EOL><INDENT>raise ToytreeError("<STR_LIT>")<EOL><DEDENT>for cidx in range(self.nedges):<EOL><INDENT>self.edge_widths[cidx] = self.style.edge_widths[cidx]<EOL><DEDENT><DEDENT><DEDENT>if self.style.edge_colors is None:<EOL><INDENT>if self.style.edge_style["<STR_LIT>"] is None:<EOL><INDENT>self.style.edge_style.pop("<STR_LIT>")<EOL>self.edge_colors = [None] * self.nedges<EOL><DEDENT>else:<EOL><INDENT>if isinstance(self.style.edge_style["<STR_LIT>"], (list, tuple)):<EOL><INDENT>raise ToytreeError(<EOL>"<STR_LIT>")<EOL><DEDENT>color = self.style.edge_style["<STR_LIT>"]<EOL>if isinstance(color, (np.ndarray, np.void, list, tuple)):<EOL><INDENT>color = toyplot.color.to_css(color)<EOL><DEDENT>self.style.edge_style.pop("<STR_LIT>")                    <EOL>self.edge_colors = [color] * self.nedges<EOL><DEDENT><DEDENT>else:<EOL><INDENT>self.style.edge_style.pop("<STR_LIT>")                                <EOL>if isinstance(self.style.edge_colors, (str, int)):<EOL><INDENT>color = self.style.edge_colors<EOL>if isinstance(color, (np.ndarray, np.void, list, tuple)):<EOL><INDENT>color = toyplot.color.to_css(color)<EOL><DEDENT>self.edge_colors = [color] * self.nedges<EOL><DEDENT>elif isinstance(self.style.edge_colors, (list, tuple)):<EOL><INDENT>if len(self.style.edge_colors) != self.nedges:<EOL><INDENT>raise ToytreeError("<STR_LIT>")<EOL><DEDENT>for cidx in range(self.nedges):<EOL><INDENT>self.edge_colors[cidx] = self.style.edge_colors[cidx]<EOL><DEDENT><DEDENT><DEDENT>self.edge_colors = [i if i else "<STR_LIT>" for i in self.edge_colors]<EOL>self.edge_widths = [i if i else <NUM_LIT:2> for i in self.edge_widths]<EOL>
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.