docstr: Decorate nodes table with degree info
  
  Edges must be dataframe-like: pandas, cudf, ...
  
  Parameters determine generated column names
  
  Warning: Self-cycles are currently double-counted. This may change.
  
  **Example: Generate degree columns**
  
      ::
  
          edges = pd.DataFrame({'s': ['a','b','c','d'], 'd': ['c','c','e','e']})
          g = graphistry.edges(edges, 's', 'd')
          print(g._nodes)  # None
          g2 = g.get_degrees()
          print(g2._nodes)  # pd.DataFrame with 'id', 'degree', 'degree_in', 'degree_out'
docstr_tok: ["Decorate","nodes","table","with","degree","info","Edges","must","be","dataframe-like",":","pandas",",","cudf",",","...","Parameters","determine","generated","column","names","Warning",":","Self-cycles","are","currently","double-counted",".","This","may","change",".","*","*","Example",":","Generate","degree","columns","*","*",":",":","edges","=","pd.DataFrame","(","{","'s","'",":","[","'","a","'",",","'","b","'",",","'","c","'",",","'d","'","]",",","'d","'",":","[","'","c","'",",","'","c","'",",","'","e","'",",","'","e","'","]","}",")","g","=","graphistry.edges","(","edges",",","'s","'",",","'d","'",")","print","(","g._nodes",")","#","None","g2","=","g.get_degrees","(",")","print","(","g2._nodes",")","#","pd.DataFrame","with","'id","'",",","'degree","'",",","'degree_in","'",",","'degree_out","'"]
code: def get_degrees(
      self,
      col: str = "degree",
      degree_in: str = "degree_in",
      degree_out: str = "degree_out",
  ):
      """Decorate nodes table with degree info
  
      Edges must be dataframe-like: pandas, cudf, ...
  
      Parameters determine generated column names
  
      Warning: Self-cycles are currently double-counted. This may change.
  
      **Example: Generate degree columns**
  
          ::
  
              edges = pd.DataFrame({'s': ['a','b','c','d'], 'd': ['c','c','e','e']})
              g = graphistry.edges(edges, 's', 'd')
              print(g._nodes)  # None
              g2 = g.get_degrees()
              print(g2._nodes)  # pd.DataFrame with 'id', 'degree', 'degree_in', 'degree_out'
      """
      g = self
      g2 = g.get_indegrees(degree_in).get_outdegrees(degree_out)
      g2._nodes[col] = g2._nodes["degree_in"] + g2._nodes["degree_out"]
      return g2
  
imports: import logging, numpy, pandas
  from typing import Any, List, Union, TYPE_CHECKING
  from typing_extensions import Literal
  from graphistry.Engine import Engine, EngineAbstract
  from graphistry.Plottable import Plottable
  from graphistry.util import setup_logger
  from .chain import chain
  from .collapse import collapse_by
  from .hop import hop
  from .filter_by_dict import filter_edges_by_dict, filter_nodes_by_dict
label_desc: Use image node_id 5 for calling the ComputeMixin obj's underlying member method code with example usage: obj.get_degrees(col, degree_in, degree_out) and returns: g2