class_docstr: Wrapper which converts environments to use canonical action specs.
  
  This only affects action specs of type `specs.BoundedArray`.
  
  For bounded action specs, we refer to a canonical action spec as the bounding
  box [-1, 1]^d where d is the dimensionality of the spec. So the shape and
  dtype of the spec is unchanged, while the maximum/minimum values are set
  to +/- 1.
class_docstr_tok: ["Wrapper","which","converts","environments","to","use","canonical","action","specs",".","This","only","affects","action","specs","of","type","`","specs.BoundedArray","`",".","For","bounded","action","specs",",","we","refer","to","a","canonical","action","spec","as","the","bounding","box","[","-1",",","1","]","^d","where","d","is","the","dimensionality","of","the","spec",".","So","the","shape","and","dtype","of","the","spec","is","unchanged",",","while","the","maximum\/minimum","values","are","set","to","+\/-","1","."]
code: def action_spec(self):
      return _convert_spec(self._environment.action_spec())
  
file_path: acme/acme/wrappers/canonical_spec.py
imports: from acme import specs
  from acme import types
  from acme.wrappers import base
  import dm_env
  import numpy
  import tree
label_desc: Use image node_id 3 for calling the CanonicalSpecWrapper obj's underlying member method code with example usage: obj.action_spec() and returns: _convert_spec