code: def storeAssociation(self, server_url, association):
          
          association_s = association.serialize()  # NOTE: UTF-8 encoded bytes
          filename = self.getAssociationFilename(server_url, association.handle)
          tmp_file, tmp = self._mktemp()
  
          try:
              try:
                  tmp_file.write(association_s)
                  os.fsync(tmp_file.fileno())
              finally:
                  tmp_file.close()
  
              try:
                  os.rename(tmp, filename)
              except OSError as why:
                  if why.errno != EEXIST:
                      raise
  
                  # We only expect EEXIST to happen only on Windows. It's
                  # possible that we will succeed in unlinking the existing
                  # file, but not in putting the temporary file in place.
                  try:
                      os.unlink(filename)
                  except OSError as why:
                      if why.errno == ENOENT:
                          pass
                      else:
                          raise
  
                  # Now the target should not exist. Try renaming again,
                  # giving up if it fails.
                  os.rename(tmp, filename)
          except:
              # If there was an error, don't leave the temporary file
              # around.
              _removeIfPresent(tmp)
              raise
docs: Store an association in the association directory.
  
          (str, Association) -> NoneType