code: def _pruning_base(self, axis=None, hs_dims=None):
          
          if not self._is_axis_allowed(axis):
              # In case we encountered axis that would go across items dimension,
              # we need to return at least some result, to prevent explicitly
              # checking for this condition, wherever self._margin is used
              return self.as_array(weighted=False, include_transforms_for_dims=hs_dims)
  
          # In case of allowed axis, just return the normal API margin. This call
          # would throw an exception when directly invoked with bad axis. This is
          # intended, because we want to be as explicit as possible. Margins
          # across items are not allowed.
          return self.margin(
              axis=axis, weighted=False, include_transforms_for_dims=hs_dims
          )
docs: Gets margin if across CAT dimension. Gets counts if across items.
  
          Categorical variables are pruned based on their marginal values. If the
          marginal is a 0 or a NaN, the corresponding row/column is pruned. In
          case of a subvars (items) dimension, we only prune if all the counts
          of the corresponding row/column are zero.