replay-rec 0.19.0rc0__tar.gz → 0.20.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/PKG-INFO +56 -40
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/README.md +26 -1
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/pyproject.toml +64 -66
- replay_rec-0.20.0/replay/__init__.py +7 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/data/dataset.py +9 -9
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/data/nn/sequence_tokenizer.py +44 -38
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/data/nn/sequential_dataset.py +13 -8
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/data/nn/torch_sequential_dataset.py +14 -13
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/data/nn/utils.py +1 -1
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/base_metric.py +1 -1
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/coverage.py +7 -11
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/experiment.py +3 -3
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/offline_metrics.py +2 -2
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/__init__.py +19 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/association_rules.py +1 -4
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/base_neighbour_rec.py +6 -9
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/base_rec.py +44 -293
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/cat_pop_rec.py +2 -1
- replay_rec-0.20.0/replay/models/common.py +69 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/ann_mixin.py +30 -25
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/index_builders/driver_hnswlib_index_builder.py +1 -1
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/utils.py +4 -3
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/knn.py +18 -17
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/bert4rec/dataset.py +1 -1
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/callbacks/prediction_callbacks.py +2 -2
- replay_rec-0.20.0/replay/models/nn/sequential/compiled/__init__.py +15 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/compiled/base_compiled_model.py +3 -1
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/compiled/bert4rec_compiled.py +11 -2
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/compiled/sasrec_compiled.py +5 -1
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/sasrec/dataset.py +1 -1
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/sasrec/model.py +1 -1
- replay_rec-0.20.0/replay/models/optimization/__init__.py +14 -0
- replay_rec-0.20.0/replay/models/optimization/optuna_mixin.py +279 -0
- {replay_rec-0.19.0rc0/replay → replay_rec-0.20.0/replay/models}/optimization/optuna_objective.py +13 -15
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/slim.py +2 -4
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/word2vec.py +7 -12
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/preprocessing/discretizer.py +1 -2
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/preprocessing/history_based_fp.py +1 -1
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/preprocessing/label_encoder.py +1 -1
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/splitters/cold_user_random_splitter.py +13 -7
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/splitters/last_n_splitter.py +17 -10
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/utils/__init__.py +6 -2
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/utils/common.py +4 -2
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/utils/model_handler.py +11 -31
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/utils/session_handler.py +2 -2
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/utils/spark_utils.py +2 -2
- replay_rec-0.20.0/replay/utils/types.py +48 -0
- replay_rec-0.20.0/replay/utils/warnings.py +26 -0
- replay_rec-0.19.0rc0/replay/__init__.py +0 -3
- replay_rec-0.19.0rc0/replay/experimental/metrics/__init__.py +0 -62
- replay_rec-0.19.0rc0/replay/experimental/metrics/base_metric.py +0 -602
- replay_rec-0.19.0rc0/replay/experimental/metrics/coverage.py +0 -97
- replay_rec-0.19.0rc0/replay/experimental/metrics/experiment.py +0 -175
- replay_rec-0.19.0rc0/replay/experimental/metrics/hitrate.py +0 -26
- replay_rec-0.19.0rc0/replay/experimental/metrics/map.py +0 -30
- replay_rec-0.19.0rc0/replay/experimental/metrics/mrr.py +0 -18
- replay_rec-0.19.0rc0/replay/experimental/metrics/ncis_precision.py +0 -31
- replay_rec-0.19.0rc0/replay/experimental/metrics/ndcg.py +0 -49
- replay_rec-0.19.0rc0/replay/experimental/metrics/precision.py +0 -22
- replay_rec-0.19.0rc0/replay/experimental/metrics/recall.py +0 -25
- replay_rec-0.19.0rc0/replay/experimental/metrics/rocauc.py +0 -49
- replay_rec-0.19.0rc0/replay/experimental/metrics/surprisal.py +0 -90
- replay_rec-0.19.0rc0/replay/experimental/metrics/unexpectedness.py +0 -76
- replay_rec-0.19.0rc0/replay/experimental/models/__init__.py +0 -13
- replay_rec-0.19.0rc0/replay/experimental/models/admm_slim.py +0 -205
- replay_rec-0.19.0rc0/replay/experimental/models/base_neighbour_rec.py +0 -204
- replay_rec-0.19.0rc0/replay/experimental/models/base_rec.py +0 -1340
- replay_rec-0.19.0rc0/replay/experimental/models/base_torch_rec.py +0 -234
- replay_rec-0.19.0rc0/replay/experimental/models/cql.py +0 -454
- replay_rec-0.19.0rc0/replay/experimental/models/ddpg.py +0 -923
- replay_rec-0.19.0rc0/replay/experimental/models/dt4rec/dt4rec.py +0 -189
- replay_rec-0.19.0rc0/replay/experimental/models/dt4rec/gpt1.py +0 -401
- replay_rec-0.19.0rc0/replay/experimental/models/dt4rec/trainer.py +0 -127
- replay_rec-0.19.0rc0/replay/experimental/models/dt4rec/utils.py +0 -265
- replay_rec-0.19.0rc0/replay/experimental/models/extensions/spark_custom_models/als_extension.py +0 -792
- replay_rec-0.19.0rc0/replay/experimental/models/hierarchical_recommender.py +0 -331
- replay_rec-0.19.0rc0/replay/experimental/models/implicit_wrap.py +0 -131
- replay_rec-0.19.0rc0/replay/experimental/models/lightfm_wrap.py +0 -302
- replay_rec-0.19.0rc0/replay/experimental/models/mult_vae.py +0 -332
- replay_rec-0.19.0rc0/replay/experimental/models/neural_ts.py +0 -986
- replay_rec-0.19.0rc0/replay/experimental/models/neuromf.py +0 -406
- replay_rec-0.19.0rc0/replay/experimental/models/scala_als.py +0 -296
- replay_rec-0.19.0rc0/replay/experimental/models/u_lin_ucb.py +0 -115
- replay_rec-0.19.0rc0/replay/experimental/nn/data/__init__.py +0 -1
- replay_rec-0.19.0rc0/replay/experimental/nn/data/schema_builder.py +0 -102
- replay_rec-0.19.0rc0/replay/experimental/preprocessing/__init__.py +0 -3
- replay_rec-0.19.0rc0/replay/experimental/preprocessing/data_preparator.py +0 -839
- replay_rec-0.19.0rc0/replay/experimental/preprocessing/padder.py +0 -229
- replay_rec-0.19.0rc0/replay/experimental/preprocessing/sequence_generator.py +0 -208
- replay_rec-0.19.0rc0/replay/experimental/scenarios/__init__.py +0 -1
- replay_rec-0.19.0rc0/replay/experimental/scenarios/obp_wrapper/__init__.py +0 -8
- replay_rec-0.19.0rc0/replay/experimental/scenarios/obp_wrapper/obp_optuna_objective.py +0 -74
- replay_rec-0.19.0rc0/replay/experimental/scenarios/obp_wrapper/replay_offline.py +0 -261
- replay_rec-0.19.0rc0/replay/experimental/scenarios/obp_wrapper/utils.py +0 -87
- replay_rec-0.19.0rc0/replay/experimental/scenarios/two_stages/reranker.py +0 -117
- replay_rec-0.19.0rc0/replay/experimental/scenarios/two_stages/two_stages_scenario.py +0 -757
- replay_rec-0.19.0rc0/replay/experimental/utils/logger.py +0 -24
- replay_rec-0.19.0rc0/replay/experimental/utils/model_handler.py +0 -186
- replay_rec-0.19.0rc0/replay/experimental/utils/session_handler.py +0 -44
- replay_rec-0.19.0rc0/replay/models/extensions/ann/__init__.py +0 -0
- replay_rec-0.19.0rc0/replay/models/extensions/ann/entities/__init__.py +0 -0
- replay_rec-0.19.0rc0/replay/models/extensions/ann/index_builders/__init__.py +0 -0
- replay_rec-0.19.0rc0/replay/models/extensions/ann/index_inferers/__init__.py +0 -0
- replay_rec-0.19.0rc0/replay/models/extensions/ann/index_stores/__init__.py +0 -0
- replay_rec-0.19.0rc0/replay/models/nn/sequential/compiled/__init__.py +0 -5
- replay_rec-0.19.0rc0/replay/optimization/__init__.py +0 -5
- replay_rec-0.19.0rc0/replay/utils/types.py +0 -38
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/LICENSE +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/NOTICE +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/data/__init__.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/data/dataset_utils/__init__.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/data/dataset_utils/dataset_label_encoder.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/data/nn/__init__.py +6 -6
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/data/nn/schema.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/data/schema.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/data/spark_schema.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/__init__.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/categorical_diversity.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/descriptors.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/hitrate.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/map.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/mrr.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/ndcg.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/novelty.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/precision.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/recall.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/rocauc.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/surprisal.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/torch_metrics_builder.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/unexpectedness.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/als.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/cluster.py +0 -0
- {replay_rec-0.19.0rc0/replay/experimental → replay_rec-0.20.0/replay/models/extensions}/__init__.py +0 -0
- {replay_rec-0.19.0rc0/replay/experimental/models/dt4rec → replay_rec-0.20.0/replay/models/extensions/ann}/__init__.py +0 -0
- {replay_rec-0.19.0rc0/replay/experimental/models/extensions/spark_custom_models → replay_rec-0.20.0/replay/models/extensions/ann/entities}/__init__.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/entities/base_hnsw_param.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/entities/hnswlib_param.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/entities/nmslib_hnsw_param.py +0 -0
- {replay_rec-0.19.0rc0/replay/experimental/scenarios/two_stages → replay_rec-0.20.0/replay/models/extensions/ann/index_builders}/__init__.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/index_builders/base_index_builder.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/index_builders/driver_nmslib_index_builder.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/index_builders/executor_hnswlib_index_builder.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/index_builders/executor_nmslib_index_builder.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/index_builders/nmslib_index_builder_mixin.py +0 -0
- {replay_rec-0.19.0rc0/replay/experimental/utils → replay_rec-0.20.0/replay/models/extensions/ann/index_inferers}/__init__.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/index_inferers/base_inferer.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/index_inferers/hnswlib_filter_index_inferer.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/index_inferers/hnswlib_index_inferer.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/index_inferers/nmslib_filter_index_inferer.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/index_inferers/nmslib_index_inferer.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/index_inferers/utils.py +0 -0
- {replay_rec-0.19.0rc0/replay/models/extensions → replay_rec-0.20.0/replay/models/extensions/ann/index_stores}/__init__.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/index_stores/base_index_store.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/index_stores/hdfs_index_store.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/index_stores/shared_disk_index_store.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/index_stores/spark_files_index_store.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/index_stores/utils.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/kl_ucb.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/lin_ucb.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/__init__.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/loss/__init__.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/loss/sce.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/optimizer_utils/__init__.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/optimizer_utils/optimizer_factory.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/__init__.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/bert4rec/__init__.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/bert4rec/lightning.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/bert4rec/model.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/callbacks/__init__.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/callbacks/validation_callback.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/postprocessors/__init__.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/postprocessors/_base.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/postprocessors/postprocessors.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/sasrec/__init__.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/sasrec/lightning.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/pop_rec.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/query_pop_rec.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/random_rec.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/thompson_sampling.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/ucb.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/wilson.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/preprocessing/__init__.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/preprocessing/converter.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/preprocessing/filters.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/preprocessing/sessionizer.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/scenarios/__init__.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/scenarios/fallback.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/splitters/__init__.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/splitters/base_splitter.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/splitters/k_folds.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/splitters/new_users_splitter.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/splitters/random_splitter.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/splitters/ratio_splitter.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/splitters/time_splitter.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/splitters/two_stage_splitter.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/utils/dataframe_bucketizer.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/utils/distributions.py +0 -0
- {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/utils/time.py +0 -0
|
@@ -1,53 +1,44 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: replay-rec
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.20.0
|
|
4
4
|
Summary: RecSys Library
|
|
5
|
-
|
|
6
|
-
License:
|
|
5
|
+
License-Expression: Apache-2.0
|
|
6
|
+
License-File: LICENSE
|
|
7
|
+
License-File: NOTICE
|
|
7
8
|
Author: AI Lab
|
|
8
|
-
Requires-Python: >=3.
|
|
9
|
+
Requires-Python: >=3.9, <3.13
|
|
10
|
+
Classifier: Operating System :: Unix
|
|
9
11
|
Classifier: Development Status :: 4 - Beta
|
|
10
12
|
Classifier: Environment :: Console
|
|
11
13
|
Classifier: Intended Audience :: Developers
|
|
12
14
|
Classifier: Intended Audience :: Science/Research
|
|
13
|
-
Classifier: License :: OSI Approved :: Apache Software License
|
|
14
15
|
Classifier: Natural Language :: English
|
|
15
|
-
Classifier: Operating System :: Unix
|
|
16
|
-
Classifier: Programming Language :: Python :: 3
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
18
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
20
16
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
21
|
-
Provides-Extra: all
|
|
22
17
|
Provides-Extra: spark
|
|
23
18
|
Provides-Extra: torch
|
|
24
|
-
Provides-Extra: torch-
|
|
25
|
-
Requires-Dist:
|
|
26
|
-
Requires-Dist:
|
|
27
|
-
Requires-Dist:
|
|
28
|
-
Requires-Dist:
|
|
29
|
-
Requires-Dist:
|
|
30
|
-
Requires-Dist:
|
|
31
|
-
Requires-Dist:
|
|
32
|
-
Requires-Dist:
|
|
33
|
-
Requires-Dist:
|
|
34
|
-
Requires-Dist:
|
|
35
|
-
Requires-Dist:
|
|
36
|
-
Requires-Dist:
|
|
37
|
-
Requires-Dist:
|
|
38
|
-
Requires-Dist:
|
|
39
|
-
Requires-Dist:
|
|
40
|
-
Requires-Dist:
|
|
41
|
-
Requires-Dist:
|
|
42
|
-
Requires-Dist:
|
|
43
|
-
Requires-Dist:
|
|
44
|
-
Requires-Dist:
|
|
45
|
-
Requires-Dist:
|
|
46
|
-
|
|
47
|
-
Requires-Dist: scikit-learn (>=1.0.2,<2.0.0)
|
|
48
|
-
Requires-Dist: scipy (>=1.8.1,<2.0.0)
|
|
49
|
-
Requires-Dist: torch (>=1.8,<3.0.0) ; (python_version >= "3.9") and (extra == "torch" or extra == "torch-openvino" or extra == "all")
|
|
50
|
-
Requires-Dist: torch (>=1.8,<=2.4.1) ; (python_version >= "3.8" and python_version < "3.9") and (extra == "torch" or extra == "torch-openvino" or extra == "all")
|
|
19
|
+
Provides-Extra: torch-cpu
|
|
20
|
+
Requires-Dist: lightning (<2.6.0) ; extra == "torch" or extra == "torch-cpu"
|
|
21
|
+
Requires-Dist: lightning ; extra == "torch"
|
|
22
|
+
Requires-Dist: lightning ; extra == "torch-cpu"
|
|
23
|
+
Requires-Dist: numpy (>=1.20.0,<2)
|
|
24
|
+
Requires-Dist: pandas (>=1.3.5,<2.4.0)
|
|
25
|
+
Requires-Dist: polars (<2.0)
|
|
26
|
+
Requires-Dist: psutil (<=7.0.0) ; extra == "spark"
|
|
27
|
+
Requires-Dist: psutil ; extra == "spark"
|
|
28
|
+
Requires-Dist: pyarrow (<22.0)
|
|
29
|
+
Requires-Dist: pyspark (>=3.0,<3.5) ; extra == "spark"
|
|
30
|
+
Requires-Dist: pyspark ; extra == "spark"
|
|
31
|
+
Requires-Dist: pytorch-optimizer (>=3.8.0,<3.9.0) ; extra == "torch" or extra == "torch-cpu"
|
|
32
|
+
Requires-Dist: pytorch-optimizer ; extra == "torch"
|
|
33
|
+
Requires-Dist: pytorch-optimizer ; extra == "torch-cpu"
|
|
34
|
+
Requires-Dist: scikit-learn (>=1.6.1,<1.7.0)
|
|
35
|
+
Requires-Dist: scipy (>=1.13.1,<1.14)
|
|
36
|
+
Requires-Dist: setuptools
|
|
37
|
+
Requires-Dist: torch (>=1.8,<3.0.0) ; extra == "torch" or extra == "torch-cpu"
|
|
38
|
+
Requires-Dist: torch ; extra == "torch"
|
|
39
|
+
Requires-Dist: torch ; extra == "torch-cpu"
|
|
40
|
+
Requires-Dist: tqdm (>=4.67,<5)
|
|
41
|
+
Project-URL: Homepage, https://sb-ai-lab.github.io/RePlay/
|
|
51
42
|
Project-URL: Repository, https://github.com/sb-ai-lab/RePlay
|
|
52
43
|
Description-Content-Type: text/markdown
|
|
53
44
|
|
|
@@ -216,7 +207,6 @@ pip install replay-rec==XX.YY.ZZrc0
|
|
|
216
207
|
In addition to the core package, several extras are also provided, including:
|
|
217
208
|
- `[spark]`: Install PySpark functionality
|
|
218
209
|
- `[torch]`: Install PyTorch and Lightning functionality
|
|
219
|
-
- `[all]`: `[spark]` `[torch]`
|
|
220
210
|
|
|
221
211
|
Example:
|
|
222
212
|
```bash
|
|
@@ -227,9 +217,35 @@ pip install replay-rec[spark]
|
|
|
227
217
|
pip install replay-rec[spark]==XX.YY.ZZrc0
|
|
228
218
|
```
|
|
229
219
|
|
|
220
|
+
Additionally, `replay-rec[torch]` may be installed with CPU-only version of `torch` by providing its respective index URL during installation:
|
|
221
|
+
```bash
|
|
222
|
+
# Install package with the CPU version of torch
|
|
223
|
+
pip install replay-rec[torch] --extra-index-url https://download.pytorch.org/whl/cpu
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
|
|
230
227
|
To build RePlay from sources please use the [instruction](CONTRIBUTING.md#installing-from-the-source).
|
|
231
228
|
|
|
232
229
|
|
|
230
|
+
### Optional features
|
|
231
|
+
RePlay includes a set of optional features which require users to install optional dependencies manually. These features include:
|
|
232
|
+
|
|
233
|
+
1) Hyperpearameter search via Optuna:
|
|
234
|
+
```bash
|
|
235
|
+
pip install optuna
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
2) Model compilation via OpenVINO:
|
|
239
|
+
```bash
|
|
240
|
+
pip install openvino onnx
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
3) Vector database and hierarchical search support:
|
|
244
|
+
```bash
|
|
245
|
+
pip install hnswlib fixed-install-nmslib
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
|
|
233
249
|
<a name="examples"></a>
|
|
234
250
|
## 📑 Resources
|
|
235
251
|
|
|
@@ -163,7 +163,6 @@ pip install replay-rec==XX.YY.ZZrc0
|
|
|
163
163
|
In addition to the core package, several extras are also provided, including:
|
|
164
164
|
- `[spark]`: Install PySpark functionality
|
|
165
165
|
- `[torch]`: Install PyTorch and Lightning functionality
|
|
166
|
-
- `[all]`: `[spark]` `[torch]`
|
|
167
166
|
|
|
168
167
|
Example:
|
|
169
168
|
```bash
|
|
@@ -174,9 +173,35 @@ pip install replay-rec[spark]
|
|
|
174
173
|
pip install replay-rec[spark]==XX.YY.ZZrc0
|
|
175
174
|
```
|
|
176
175
|
|
|
176
|
+
Additionally, `replay-rec[torch]` may be installed with CPU-only version of `torch` by providing its respective index URL during installation:
|
|
177
|
+
```bash
|
|
178
|
+
# Install package with the CPU version of torch
|
|
179
|
+
pip install replay-rec[torch] --extra-index-url https://download.pytorch.org/whl/cpu
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
|
|
177
183
|
To build RePlay from sources please use the [instruction](CONTRIBUTING.md#installing-from-the-source).
|
|
178
184
|
|
|
179
185
|
|
|
186
|
+
### Optional features
|
|
187
|
+
RePlay includes a set of optional features which require users to install optional dependencies manually. These features include:
|
|
188
|
+
|
|
189
|
+
1) Hyperpearameter search via Optuna:
|
|
190
|
+
```bash
|
|
191
|
+
pip install optuna
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
2) Model compilation via OpenVINO:
|
|
195
|
+
```bash
|
|
196
|
+
pip install openvino onnx
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
3) Vector database and hierarchical search support:
|
|
200
|
+
```bash
|
|
201
|
+
pip install hnswlib fixed-install-nmslib
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
|
|
180
205
|
<a name="examples"></a>
|
|
181
206
|
## 📑 Resources
|
|
182
207
|
|
|
@@ -1,35 +1,28 @@
|
|
|
1
1
|
[build-system]
|
|
2
2
|
requires = [
|
|
3
|
-
"poetry-core>=
|
|
3
|
+
"poetry-core>=2.0.0",
|
|
4
4
|
"poetry-dynamic-versioning>=1.0.0,<2.0.0",
|
|
5
|
+
"setuptools",
|
|
5
6
|
]
|
|
6
7
|
build-backend = "poetry_dynamic_versioning.backend"
|
|
7
8
|
|
|
8
|
-
[
|
|
9
|
-
line-length = 120
|
|
10
|
-
target-versions = ["py38", "py39", "py310", "py311"]
|
|
11
|
-
|
|
12
|
-
[tool.poetry]
|
|
9
|
+
[project]
|
|
13
10
|
name = "replay-rec"
|
|
14
|
-
packages = [{include = "replay"}]
|
|
15
11
|
license = "Apache-2.0"
|
|
16
12
|
description = "RecSys Library"
|
|
17
13
|
authors = [
|
|
18
|
-
"AI Lab",
|
|
19
|
-
"Alexey Vasilev",
|
|
20
|
-
"Anna Volodkevich",
|
|
21
|
-
"Alexey Grishanov",
|
|
22
|
-
"Yan-Martin Tamm",
|
|
23
|
-
"Boris Shminke",
|
|
24
|
-
"Alexander Sidorenko",
|
|
25
|
-
"Roza Aysina",
|
|
14
|
+
{name = "AI Lab"},
|
|
15
|
+
{name = "Alexey Vasilev"},
|
|
16
|
+
{name = "Anna Volodkevich"},
|
|
17
|
+
{name = "Alexey Grishanov"},
|
|
18
|
+
{name = "Yan-Martin Tamm"},
|
|
19
|
+
{name = "Boris Shminke"},
|
|
20
|
+
{name = "Alexander Sidorenko"},
|
|
21
|
+
{name = "Roza Aysina"},
|
|
26
22
|
]
|
|
27
23
|
readme = "README.md"
|
|
28
|
-
homepage = "https://sb-ai-lab.github.io/RePlay/"
|
|
29
|
-
repository = "https://github.com/sb-ai-lab/RePlay"
|
|
30
24
|
classifiers = [
|
|
31
25
|
"Operating System :: Unix",
|
|
32
|
-
"Intended Audience :: Science/Research",
|
|
33
26
|
"Development Status :: 4 - Beta",
|
|
34
27
|
"Environment :: Console",
|
|
35
28
|
"Intended Audience :: Developers",
|
|
@@ -37,51 +30,53 @@ classifiers = [
|
|
|
37
30
|
"Natural Language :: English",
|
|
38
31
|
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
|
39
32
|
]
|
|
33
|
+
requires-python = ">=3.9, <3.13"
|
|
34
|
+
dependencies = [
|
|
35
|
+
"setuptools",
|
|
36
|
+
"numpy (>=1.20.0,<2)",
|
|
37
|
+
"pandas (>=1.3.5,<2.4.0)",
|
|
38
|
+
"polars (<2.0)",
|
|
39
|
+
"scipy (>=1.13.1,<1.14)",
|
|
40
|
+
"scikit-learn (>=1.6.1,<1.7.0)",
|
|
41
|
+
"pyarrow (<22.0)",
|
|
42
|
+
"tqdm (>=4.67,<5)",
|
|
43
|
+
"pyspark (>=3.0,<3.5); extra == 'spark'",
|
|
44
|
+
"psutil (<=7.0.0); extra == 'spark'",
|
|
45
|
+
"torch (>=1.8, <3.0.0); extra == 'torch' or extra == 'torch-cpu'",
|
|
46
|
+
"pytorch-optimizer (>=3.8.0,<3.9.0); extra == 'torch' or extra == 'torch-cpu'",
|
|
47
|
+
"lightning (<2.6.0); extra == 'torch' or extra == 'torch-cpu'",
|
|
48
|
+
]
|
|
49
|
+
dynamic = ["dependencies"]
|
|
50
|
+
version = "0.20.0"
|
|
51
|
+
|
|
52
|
+
[project.optional-dependencies]
|
|
53
|
+
spark = ["pyspark", "psutil"]
|
|
54
|
+
torch = ["torch", "pytorch-optimizer", "lightning"]
|
|
55
|
+
torch-cpu = ["torch", "pytorch-optimizer", "lightning"]
|
|
56
|
+
|
|
57
|
+
[project.urls]
|
|
58
|
+
homepage = "https://sb-ai-lab.github.io/RePlay/"
|
|
59
|
+
repository = "https://github.com/sb-ai-lab/RePlay"
|
|
60
|
+
|
|
61
|
+
[tool.black]
|
|
62
|
+
line-length = 120
|
|
63
|
+
target-version = ["py39", "py310", "py311", "py312"]
|
|
64
|
+
|
|
65
|
+
[tool.poetry]
|
|
66
|
+
packages = [{include = "replay"}]
|
|
40
67
|
exclude = [
|
|
41
68
|
"replay/conftest.py",
|
|
69
|
+
"replay/experimental",
|
|
42
70
|
]
|
|
43
|
-
version = "0.19.0.preview"
|
|
44
71
|
|
|
45
72
|
[tool.poetry.dependencies]
|
|
46
|
-
python = ">=3.8.1, <3.12"
|
|
47
|
-
numpy = ">=1.20.0"
|
|
48
|
-
pandas = ">=1.3.5, <=2.2.2"
|
|
49
|
-
polars = "~1.0.0"
|
|
50
|
-
optuna = "~3.2.0"
|
|
51
|
-
scipy = "^1.8.1"
|
|
52
|
-
psutil = "~6.0.0"
|
|
53
|
-
scikit-learn = "^1.0.2"
|
|
54
|
-
pyarrow = ">=12.0.1"
|
|
55
|
-
openvino = {version = "~2024.3.0", optional = true}
|
|
56
|
-
onnx = {version = "~1.16.2", optional = true}
|
|
57
|
-
fixed-install-nmslib = "2.1.2"
|
|
58
|
-
hnswlib = "^0.7.0"
|
|
59
|
-
pyspark = [
|
|
60
|
-
{version = ">=3.4,<3.5", python = ">=3.11,<3.12"},
|
|
61
|
-
{version = ">=3.0,<3.5", python = ">=3.8.1,<3.11"},
|
|
62
|
-
]
|
|
63
73
|
torch = [
|
|
64
|
-
{
|
|
65
|
-
{
|
|
74
|
+
{markers = "extra == 'torch-cpu' and extra !='torch'", source = "torch-cpu-mirror"},
|
|
75
|
+
{markers = "extra == 'torch' and extra !='torch-cpu'", source = "PyPI"},
|
|
66
76
|
]
|
|
67
|
-
lightning = ">=2.0.2, <=2.4.0"
|
|
68
|
-
pytorch-ranger = "^0.1.1"
|
|
69
|
-
lightfm = "1.17"
|
|
70
|
-
lightautoml = "~0.3.1"
|
|
71
|
-
numba = ">=0.50"
|
|
72
|
-
llvmlite = ">=0.32.1"
|
|
73
|
-
sb-obp = "^0.5.8"
|
|
74
|
-
d3rlpy = "^2.0.4"
|
|
75
|
-
implicit = "~0.7.0"
|
|
76
|
-
gym = "^0.26.0"
|
|
77
|
-
|
|
78
|
-
[tool.poetry.extras]
|
|
79
|
-
spark = ["pyspark"]
|
|
80
|
-
torch = ["torch", "pytorch-ranger", "lightning"]
|
|
81
|
-
torch-openvino = ["torch", "pytorch-ranger", "lightning", "openvino", "onnx"]
|
|
82
|
-
all = ["pyspark", "torch", "pytorch-ranger", "lightning", "openvino", "onnx"]
|
|
83
77
|
|
|
84
78
|
[tool.poetry.group.dev.dependencies]
|
|
79
|
+
coverage-conditional-plugin = "^0.9.0"
|
|
85
80
|
jupyter = "~1.0.0"
|
|
86
81
|
jupyterlab = "^3.6.0"
|
|
87
82
|
pytest = ">=7.1.0"
|
|
@@ -100,33 +95,36 @@ docutils = "0.16"
|
|
|
100
95
|
data-science-types = "0.2.23"
|
|
101
96
|
filelock = "~3.14.0"
|
|
102
97
|
|
|
98
|
+
[[tool.poetry.source]]
|
|
99
|
+
name = "torch-cpu-mirror"
|
|
100
|
+
url = "https://download.pytorch.org/whl/cpu"
|
|
101
|
+
priority = "explicit"
|
|
102
|
+
|
|
103
103
|
[tool.poetry-dynamic-versioning]
|
|
104
104
|
enable = false
|
|
105
|
-
format-jinja = """0.
|
|
105
|
+
format-jinja = """0.20.0{{ env['PACKAGE_SUFFIX'] }}"""
|
|
106
106
|
vcs = "git"
|
|
107
107
|
|
|
108
108
|
[tool.ruff]
|
|
109
109
|
exclude = [".git", ".venv", "__pycache__", "env", "venv", "docs", "projects", "examples"]
|
|
110
|
-
extend-select = ["C90", "T10", "T20", "UP004"]
|
|
111
110
|
line-length = 120
|
|
111
|
+
|
|
112
|
+
[tool.ruff.lint]
|
|
112
113
|
select = ["ARG", "C4", "E", "EM", "ERA", "F", "FLY", "I", "INP", "ISC", "N", "PERF", "PGH", "PIE", "PYI", "Q", "RUF", "SIM", "TID", "W"]
|
|
114
|
+
extend-select = ["C90", "T10", "T20", "UP004"]
|
|
115
|
+
ignore = ["SIM115"]
|
|
116
|
+
mccabe = {max-complexity = 13}
|
|
117
|
+
isort = {combine-as-imports = true, force-wrap-aliases = true}
|
|
113
118
|
|
|
114
|
-
[tool.ruff.flake8-quotes]
|
|
119
|
+
[tool.ruff.lint.flake8-quotes]
|
|
115
120
|
docstring-quotes = "double"
|
|
116
121
|
inline-quotes = "double"
|
|
117
122
|
multiline-quotes = "double"
|
|
118
123
|
|
|
119
|
-
[tool.ruff.flake8-unused-arguments]
|
|
124
|
+
[tool.ruff.lint.flake8-unused-arguments]
|
|
120
125
|
ignore-variadic-names = false
|
|
121
126
|
|
|
122
|
-
[tool.ruff.
|
|
123
|
-
combine-as-imports = true
|
|
124
|
-
force-wrap-aliases = true
|
|
125
|
-
|
|
126
|
-
[tool.ruff.mccabe]
|
|
127
|
-
max-complexity = 13
|
|
128
|
-
|
|
129
|
-
[tool.ruff.per-file-ignores]
|
|
127
|
+
[tool.ruff.lint.per-file-ignores]
|
|
130
128
|
"*/" = ["PERF203", "RUF001", "RUF002", "RUF012", "E402"]
|
|
131
129
|
"__init__.py" = ["F401"]
|
|
132
130
|
"replay/utils/model_handler.py" = ["F403", "F405"]
|
|
@@ -610,9 +610,9 @@ class Dataset:
|
|
|
610
610
|
if self.is_pandas:
|
|
611
611
|
try:
|
|
612
612
|
data[column] = data[column].astype(int)
|
|
613
|
-
except Exception:
|
|
613
|
+
except Exception as exc:
|
|
614
614
|
msg = f"IDs in {source.name}.{column} are not encoded. They are not int."
|
|
615
|
-
raise ValueError(msg)
|
|
615
|
+
raise ValueError(msg) from exc
|
|
616
616
|
|
|
617
617
|
if self.is_pandas:
|
|
618
618
|
is_int = np.issubdtype(dict(data.dtypes)[column], int)
|
|
@@ -775,10 +775,10 @@ def check_dataframes_types_equal(dataframe: DataFrameLike, other: DataFrameLike)
|
|
|
775
775
|
|
|
776
776
|
:returns: True if dataframes have same type.
|
|
777
777
|
"""
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
778
|
+
return any(
|
|
779
|
+
[
|
|
780
|
+
isinstance(dataframe, PandasDataFrame) and isinstance(other, PandasDataFrame),
|
|
781
|
+
isinstance(dataframe, SparkDataFrame) and isinstance(other, SparkDataFrame),
|
|
782
|
+
isinstance(dataframe, PolarsDataFrame) and isinstance(other, PolarsDataFrame),
|
|
783
|
+
]
|
|
784
|
+
)
|