<commit_before>public final class Movie: StandardMediaEntity {
  public let year: Int
  public let ids: MovieIds
  public let certification: String?
  public let tagline: String?
  public let released: Date?
  public let runtime: Int?
  public let trailer: String?
  public let homepage: String?
  public let language: String?
  public let genres: [String]?

	private enum CodingKeys: String, CodingKey {
		case year, ids, certification, tagline, released, runtime, trailer, homepage, language, genres
	}

	public required init(from decoder: Decoder) throws {
		let container = try decoder.container(keyedBy: CodingKeys.self)

		self.year = try container.decode(Int.self, forKey: .year)
		self.ids = try container.decode(MovieIds.self, forKey: .ids)
		self.certification = try container.decodeIfPresent(String.self, forKey: .certification)
		self.tagline = try container.decodeIfPresent(String.self, forKey: .tagline)
		self.runtime = try container.decodeIfPresent(Int.self, forKey: .runtime)
		self.trailer = try container.decodeIfPresent(String.self, forKey: .trailer)
		self.homepage = try container.decodeIfPresent(String.self, forKey: .homepage)
		self.language = try container.decodeIfPresent(String.self, forKey: .language)
		self.genres = try container.decodeIfPresent([String].self, forKey: .genres)

		let released = try container.decodeIfPresent(String.self, forKey: .released)
		self.released = TraktDateTransformer.dateTransformer.transformFromJSON(released)

		try super.init(from: decoder)
	}

  public override var hashValue: Int {
    var hash = super.hashValue ^ year.hashValue ^ ids.hashValue

    if let certificationHash = certification?.hashValue {
      hash = hash ^ certificationHash
    }

    if let taglineHash = tagline?.hashValue {
      hash = hash ^ taglineHash
    }

    if let releasedHash = released?.hashValue {
      hash = hash ^ releasedHash
    }

    if let runtimeHash = runtime?.hashValue {
      hash = hash ^ runtimeHash
    }

    if let trailerHash = trailer?.hashValue {
      hash = hash ^ trailerHash
    }

    if let homepageHash = homepage?.hashValue {
      hash = hash ^ homepageHash
    }

    if let languageHash = language?.hashValue {
      hash = hash ^ languageHash
    }

    genres?.forEach { hash = hash ^ $0.hashValue }<commit_msg>Make movie's year optional<commit_after>public final class Movie: StandardMediaEntity {
  public let year: Int?
  public let ids: MovieIds
  public let certification: String?
  public let tagline: String?
  public let released: Date?
  public let runtime: Int?
  public let trailer: String?
  public let homepage: String?
  public let language: String?
  public let genres: [String]?

	private enum CodingKeys: String, CodingKey {
		case year, ids, certification, tagline, released, runtime, trailer, homepage, language, genres
	}

	public required init(from decoder: Decoder) throws {
		let container = try decoder.container(keyedBy: CodingKeys.self)

		self.year = try container.decodeIfPresent(Int.self, forKey: .year)
		self.ids = try container.decode(MovieIds.self, forKey: .ids)
		self.certification = try container.decodeIfPresent(String.self, forKey: .certification)
		self.tagline = try container.decodeIfPresent(String.self, forKey: .tagline)
		self.runtime = try container.decodeIfPresent(Int.self, forKey: .runtime)
		self.trailer = try container.decodeIfPresent(String.self, forKey: .trailer)
		self.homepage = try container.decodeIfPresent(String.self, forKey: .homepage)
		self.language = try container.decodeIfPresent(String.self, forKey: .language)
		self.genres = try container.decodeIfPresent([String].self, forKey: .genres)

		let released = try container.decodeIfPresent(String.self, forKey: .released)
		self.released = TraktDateTransformer.dateTransformer.transformFromJSON(released)

		try super.init(from: decoder)
	}

  public override var hashValue: Int {
    var hash = super.hashValue ^ ids.hashValue

	if let yearHash = year?.hashValue {
		hash = hash ^ yearHash
	}

    if let certificationHash = certification?.hashValue {
      hash = hash ^ certificationHash
    }

    if let taglineHash = tagline?.hashValue {
      hash = hash ^ taglineHash
    }

    if let releasedHash = released?.hashValue {
      hash = hash ^ releasedHash
    }

    if let runtimeHash = runtime?.hashValue {
      hash = hash ^ runtimeHash
    }

    if let trailerHash = trailer?.hashValue {
      hash = hash ^ trailerHash
    }

    if let homepageHash = homepage?.hashValue {
      hash = hash ^ homepageHash
    }

    if let languageHash = language?.hashValue {
      hash = hash ^ languageHash
    }

    genres?.forEach { hash = hash ^ $0.hashValue }
{'fraction_non_alphanumeric': 0.09365623660522931, 'fraction_numerical': 0.0004286326618088298, 'mean_word_length': 3.7573904179408766, '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': '1337788', 'n_tokens_mistral': 1427, 'n_tokens_neox': 1335, 'n_words': 391}