docs: def put_field(self, field):
          """
          Inserts or updates a field in the repository
          """
          fpath = self.fields_json_path(field)
          # Open fields JSON, locking to prevent other processes
          # reading or writing
          with InterProcessLock(fpath + self.LOCK_SUFFIX, logger=logger):
              try:
                  with open(fpath, 'r') as f:
                      dct = json.load(f)
              except IOError as e:
                  if e.errno == errno.ENOENT:
                      dct = {}
                  else:
                      raise
              if field.array:
                  dct[field.name] = list(field.value)
              else:
                  dct[field.name] = field.value
              with open(fpath, 'w') as f:
                  json.dump(dct, f, indent=2)