docs: def get_field(self, field):
          """
          Update the value of the field from the repository
          """
          # Load fields JSON, locking to prevent read/write conflicts
          # Would be better if only checked if locked to allow
          # concurrent reads but not possible with multi-process
          # locks (in my understanding at least).
          fpath = self.fields_json_path(field)
          try:
              with InterProcessLock(fpath + self.LOCK_SUFFIX,
                                    logger=logger), open(fpath, 'r') as f:
                  dct = json.load(f)
              val = dct[field.name]
              if field.array:
                  val = [field.dtype(v) for v in val]
              else:
                  val = field.dtype(val)
          except (KeyError, IOError) as e:
              try:
                  # Check to see if the IOError wasn't just because of a
                  # missing file
                  if e.errno != errno.ENOENT:
                      raise
              except AttributeError:
                  pass
              raise ArcanaMissingDataException(
                  "{} does not exist in the local repository {}"
                  .format(field.name, self))
          return val