<commit_before>class EditionDependenciesPopulator

  def initialize(edition)
    @edition = edition
  end

  def populate!
    @edition.depended_upon_contacts = Govspeak::ContactsExtractor.new(@edition.body).contacts.uniq
    @edition.depended_upon_editions = Govspeak::DependableEditionsExtractor.new(@edition.body).editions.uniq<commit_msg>Wrap edition dependency population in transaction<commit_after>class EditionDependenciesPopulator

  def initialize(edition)
    @edition = edition
  end

  def populate!
    # ensure that another process doesn't simultaneously modify the association
    Edition.transaction do
      @edition.depended_upon_contacts = Govspeak::ContactsExtractor.new(@edition.body).contacts.uniq
      @edition.depended_upon_editions = Govspeak::DependableEditionsExtractor.new(@edition.body).editions.uniq
    end
{'fraction_non_alphanumeric': 0.07985697258641239, 'fraction_numerical': 0.0, 'mean_word_length': 5.666666666666667, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1869140', 'n_tokens_mistral': 261, 'n_tokens_neox': 246, 'n_words': 42}