class_docstr: An agent for solving the CollectMineralShards map with feature units.
  
  Controls the two marines independently:
  - select marine
  - move to nearest mineral shard that wasn't the previous target
  - swap marine and repeat
class_docstr_tok: ["An","agent","for","solving","the","CollectMineralShards","map","with","feature","units",".","Controls","the","two","marines","independently",":","-","select","marine","-","move","to","nearest","mineral","shard","that","was","n't","the","previous","target","-","swap","marine","and","repeat"]
code: def setup(self, obs_spec, action_spec):
      super(CollectMineralShardsFeatureUnits, self).setup(
          obs_spec, action_spec
      )
      if "feature_units" not in obs_spec:
          raise Exception(
              "This agent requires the feature_units observation."
          )
  
imports: import numpy
  from pysc2.agents import base_agent
  from pysc2.lib import actions
  from pysc2.lib import features
label_desc: Use image node_id 1 for calling the CollectMineralShardsFeatureUnits obj's underlying member method code with example usage: obj.setup(obs_spec, action_spec) without return types