class_docstr: An agent for solving CollectMineralShards with raw units and actions.
  
  Controls the two marines independently:
  - move to nearest mineral shard that wasn't the previous target
  - swap marine and repeat
class_docstr_tok: ["An","agent","for","solving","CollectMineralShards","with","raw","units","and","actions",".","Controls","the","two","marines","independently",":","-","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(CollectMineralShardsRaw, self).setup(obs_spec, action_spec)
      if "raw_units" not in obs_spec:
          raise Exception(
              "This agent requires the raw_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 CollectMineralShardsRaw obj's underlying member method code with example usage: obj.setup(obs_spec, action_spec) without return types