code: def _shift2boolean(self,
                         q_mesh_shift,
                         is_gamma_center=False,
                         tolerance=1e-5):
          
          if q_mesh_shift is None:
              shift = np.zeros(3, dtype='double')
          else:
              shift = np.array(q_mesh_shift, dtype='double')
  
          diffby2 = np.abs(shift * 2 - np.rint(shift * 2))
  
          if (diffby2 < 0.01).all():  # zero or half shift
              diff = np.abs(shift - np.rint(shift))
              if is_gamma_center:
                  is_shift = list(diff > 0.1)
              else:  # Monkhorst-pack
                  is_shift = list(np.logical_xor((diff > 0.1),
                                                 (self._mesh % 2 == 0)) * 1)
          else:
              is_shift = None
  
          return is_shift
docs: Tolerance is used to judge zero/half gird shift.
          This value is not necessary to be changed usually.