From ea86eff07e5ed19b6eb30493ed8a4029ab207ea2 Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Tue, 22 Oct 2024 16:27:10 -0700 Subject: [PATCH] Dropped support for marshal serialization --- CHANGELOG.md | 1 + lib/disco/recommender.rb | 55 ---------------------------------------- test/recommender_test.rb | 44 -------------------------------- 3 files changed, 1 insertion(+), 99 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c72e41..dcc8633 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ ## 0.5.0 (unreleased) +- Dropped support for marshal serialization - Dropped support for Ruby < 3.1 and Rails < 7 ## 0.4.2 (2024-06-24) diff --git a/lib/disco/recommender.rb b/lib/disco/recommender.rb index 80cfbec..857b232 100644 --- a/lib/disco/recommender.rb +++ b/lib/disco/recommender.rb @@ -431,61 +431,6 @@ def to_dataset(dataset) end end - def marshal_dump - warn "[disco] Marshal serialization is deprecated - use JSON instead" - - obj = { - implicit: @implicit, - user_map: @user_map, - item_map: @item_map, - rated: @rated, - global_mean: @global_mean, - user_factors: @user_factors, - item_factors: @item_factors, - factors: @factors, - epochs: @epochs, - verbose: @verbose - } - - unless @implicit - obj[:min_rating] = @min_rating - obj[:max_rating] = @max_rating - end - - if @top_items - obj[:item_count] = @item_count - obj[:item_sum] = @item_sum - end - - obj - end - - def marshal_load(obj) - warn "[disco] Marshal serialization is deprecated - use JSON instead" - - @implicit = obj[:implicit] - @user_map = obj[:user_map] - @item_map = obj[:item_map] - @rated = obj[:rated] - @global_mean = obj[:global_mean] - @user_factors = obj[:user_factors] - @item_factors = obj[:item_factors] - @factors = obj[:factors] - @epochs = obj[:epochs] - @verbose = obj[:verbose] - - unless @implicit - @min_rating = obj[:min_rating] - @max_rating = obj[:max_rating] - end - - @top_items = obj.key?(:item_count) - if @top_items - @item_count = obj[:item_count] - @item_sum = obj[:item_sum] - end - end - def json_load(obj) require "base64" diff --git a/test/recommender_test.rb b/test/recommender_test.rb index 357cef4..67e0b4e 100644 --- a/test/recommender_test.rb +++ b/test/recommender_test.rb @@ -6,18 +6,6 @@ def test_explicit recommender = Disco::Recommender.new(factors: 20) recommender.fit(data) - path = "#{Dir.mktmpdir}/recommender.bin" - - assert_deprecated do - dump = Marshal.dump(recommender) - File.binwrite(path, dump) - end - - assert_deprecated do - dump = File.binread(path) - recommender = Marshal.load(dump) - end - dump = recommender.to_json recommender = Disco::Recommender.load_json(dump) @@ -53,18 +41,6 @@ def test_implicit recommender = Disco::Recommender.new(factors: 20) recommender.fit(data) - path = "#{Dir.mktmpdir}/recommender.bin" - - assert_deprecated do - dump = Marshal.dump(recommender) - File.binwrite(path, dump) - end - - assert_deprecated do - dump = File.binread(path) - recommender = Marshal.load(dump) - end - dump = recommender.to_json recommender = Disco::Recommender.load_json(dump) @@ -137,12 +113,6 @@ def test_top_items_explicit top_items = recommender.top_items assert_equal top_items, recommender.user_recs("unknown") - assert_deprecated do - recommender = Marshal.load(Marshal.dump(recommender)) - end - assert_equal top_items, recommender.top_items - assert_equal top_items, recommender.user_recs("unknown") - recommender = Disco::Recommender.load_json(recommender.to_json) assert_equal top_items, recommender.top_items assert_equal top_items, recommender.user_recs("unknown") @@ -156,12 +126,6 @@ def test_top_items_implicit top_items = recommender.top_items assert_equal top_items, recommender.user_recs("unknown") - assert_deprecated do - recommender = Marshal.load(Marshal.dump(recommender)) - end - assert_equal top_items, recommender.top_items - assert_equal top_items, recommender.user_recs("unknown") - recommender = Disco::Recommender.load_json(recommender.to_json) assert_equal top_items, recommender.top_items assert_equal top_items, recommender.user_recs("unknown") @@ -432,12 +396,4 @@ def test_daru # original data frame not modified assert_equal ["user_id", "item_id", "rating"], data.vectors.to_a end - - private - - def assert_deprecated - assert_output nil, /is deprecated/ do - yield - end - end end