<commit_before>class Service

	def self.string(*attrs)
		add_to_schema :string, attrs
	end

	def self.boolean(*attrs)
		add_to_schema :boolean, attrs
	end
	
	def self.schema
		@schema ||= {}
	end

	def self.subclasses
    ObjectSpace.each_object.map do |klass|
      klass if Module === klass && self > klass
    end.compact
  end

	def self.crash_report_listeners
    subclasses.select{|k| k.method_defined?(:receive_crash_report) }
  end

	def self.new_version_listeners
    subclasses.select{|k| k.method_defined?(:receive_new_version) }
  end

	attr_accessor :settings, :payload
<commit_msg>Caching that jazz<commit_after>class Service

	def self.string(*attrs)
		add_to_schema :string, attrs
	end

	def self.boolean(*attrs)
		add_to_schema :boolean, attrs
	end
	
	def self.schema
		@schema ||= {}
	end

	def self.subclasses
    @subclasses ||= ObjectSpace.each_object.map do |klass|
      klass if Module === klass && self > klass
    end.compact
  end

	def self.crash_report_listeners
    @crash_report_listeners ||= subclasses.select{|k| k.method_defined?(:receive_crash_report) }
  end

	def self.new_version_listeners
    @new_version_listeners ||= subclasses.select{|k| k.method_defined?(:receive_new_version) }
  end

	attr_accessor :settings, :payload

{'fraction_non_alphanumeric': 0.10276679841897234, 'fraction_numerical': 0.0, 'mean_word_length': 4.253112033195021, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, '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': '1402868', 'n_tokens_mistral': 460, 'n_tokens_neox': 439, 'n_words': 93}