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.
Files changed (198) hide show
  1. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/PKG-INFO +56 -40
  2. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/README.md +26 -1
  3. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/pyproject.toml +64 -66
  4. replay_rec-0.20.0/replay/__init__.py +7 -0
  5. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/data/dataset.py +9 -9
  6. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/data/nn/sequence_tokenizer.py +44 -38
  7. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/data/nn/sequential_dataset.py +13 -8
  8. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/data/nn/torch_sequential_dataset.py +14 -13
  9. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/data/nn/utils.py +1 -1
  10. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/base_metric.py +1 -1
  11. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/coverage.py +7 -11
  12. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/experiment.py +3 -3
  13. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/offline_metrics.py +2 -2
  14. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/__init__.py +19 -0
  15. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/association_rules.py +1 -4
  16. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/base_neighbour_rec.py +6 -9
  17. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/base_rec.py +44 -293
  18. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/cat_pop_rec.py +2 -1
  19. replay_rec-0.20.0/replay/models/common.py +69 -0
  20. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/ann_mixin.py +30 -25
  21. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/index_builders/driver_hnswlib_index_builder.py +1 -1
  22. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/utils.py +4 -3
  23. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/knn.py +18 -17
  24. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/bert4rec/dataset.py +1 -1
  25. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/callbacks/prediction_callbacks.py +2 -2
  26. replay_rec-0.20.0/replay/models/nn/sequential/compiled/__init__.py +15 -0
  27. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/compiled/base_compiled_model.py +3 -1
  28. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/compiled/bert4rec_compiled.py +11 -2
  29. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/compiled/sasrec_compiled.py +5 -1
  30. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/sasrec/dataset.py +1 -1
  31. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/sasrec/model.py +1 -1
  32. replay_rec-0.20.0/replay/models/optimization/__init__.py +14 -0
  33. replay_rec-0.20.0/replay/models/optimization/optuna_mixin.py +279 -0
  34. {replay_rec-0.19.0rc0/replay → replay_rec-0.20.0/replay/models}/optimization/optuna_objective.py +13 -15
  35. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/slim.py +2 -4
  36. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/word2vec.py +7 -12
  37. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/preprocessing/discretizer.py +1 -2
  38. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/preprocessing/history_based_fp.py +1 -1
  39. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/preprocessing/label_encoder.py +1 -1
  40. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/splitters/cold_user_random_splitter.py +13 -7
  41. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/splitters/last_n_splitter.py +17 -10
  42. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/utils/__init__.py +6 -2
  43. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/utils/common.py +4 -2
  44. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/utils/model_handler.py +11 -31
  45. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/utils/session_handler.py +2 -2
  46. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/utils/spark_utils.py +2 -2
  47. replay_rec-0.20.0/replay/utils/types.py +48 -0
  48. replay_rec-0.20.0/replay/utils/warnings.py +26 -0
  49. replay_rec-0.19.0rc0/replay/__init__.py +0 -3
  50. replay_rec-0.19.0rc0/replay/experimental/metrics/__init__.py +0 -62
  51. replay_rec-0.19.0rc0/replay/experimental/metrics/base_metric.py +0 -602
  52. replay_rec-0.19.0rc0/replay/experimental/metrics/coverage.py +0 -97
  53. replay_rec-0.19.0rc0/replay/experimental/metrics/experiment.py +0 -175
  54. replay_rec-0.19.0rc0/replay/experimental/metrics/hitrate.py +0 -26
  55. replay_rec-0.19.0rc0/replay/experimental/metrics/map.py +0 -30
  56. replay_rec-0.19.0rc0/replay/experimental/metrics/mrr.py +0 -18
  57. replay_rec-0.19.0rc0/replay/experimental/metrics/ncis_precision.py +0 -31
  58. replay_rec-0.19.0rc0/replay/experimental/metrics/ndcg.py +0 -49
  59. replay_rec-0.19.0rc0/replay/experimental/metrics/precision.py +0 -22
  60. replay_rec-0.19.0rc0/replay/experimental/metrics/recall.py +0 -25
  61. replay_rec-0.19.0rc0/replay/experimental/metrics/rocauc.py +0 -49
  62. replay_rec-0.19.0rc0/replay/experimental/metrics/surprisal.py +0 -90
  63. replay_rec-0.19.0rc0/replay/experimental/metrics/unexpectedness.py +0 -76
  64. replay_rec-0.19.0rc0/replay/experimental/models/__init__.py +0 -13
  65. replay_rec-0.19.0rc0/replay/experimental/models/admm_slim.py +0 -205
  66. replay_rec-0.19.0rc0/replay/experimental/models/base_neighbour_rec.py +0 -204
  67. replay_rec-0.19.0rc0/replay/experimental/models/base_rec.py +0 -1340
  68. replay_rec-0.19.0rc0/replay/experimental/models/base_torch_rec.py +0 -234
  69. replay_rec-0.19.0rc0/replay/experimental/models/cql.py +0 -454
  70. replay_rec-0.19.0rc0/replay/experimental/models/ddpg.py +0 -923
  71. replay_rec-0.19.0rc0/replay/experimental/models/dt4rec/dt4rec.py +0 -189
  72. replay_rec-0.19.0rc0/replay/experimental/models/dt4rec/gpt1.py +0 -401
  73. replay_rec-0.19.0rc0/replay/experimental/models/dt4rec/trainer.py +0 -127
  74. replay_rec-0.19.0rc0/replay/experimental/models/dt4rec/utils.py +0 -265
  75. replay_rec-0.19.0rc0/replay/experimental/models/extensions/spark_custom_models/als_extension.py +0 -792
  76. replay_rec-0.19.0rc0/replay/experimental/models/hierarchical_recommender.py +0 -331
  77. replay_rec-0.19.0rc0/replay/experimental/models/implicit_wrap.py +0 -131
  78. replay_rec-0.19.0rc0/replay/experimental/models/lightfm_wrap.py +0 -302
  79. replay_rec-0.19.0rc0/replay/experimental/models/mult_vae.py +0 -332
  80. replay_rec-0.19.0rc0/replay/experimental/models/neural_ts.py +0 -986
  81. replay_rec-0.19.0rc0/replay/experimental/models/neuromf.py +0 -406
  82. replay_rec-0.19.0rc0/replay/experimental/models/scala_als.py +0 -296
  83. replay_rec-0.19.0rc0/replay/experimental/models/u_lin_ucb.py +0 -115
  84. replay_rec-0.19.0rc0/replay/experimental/nn/data/__init__.py +0 -1
  85. replay_rec-0.19.0rc0/replay/experimental/nn/data/schema_builder.py +0 -102
  86. replay_rec-0.19.0rc0/replay/experimental/preprocessing/__init__.py +0 -3
  87. replay_rec-0.19.0rc0/replay/experimental/preprocessing/data_preparator.py +0 -839
  88. replay_rec-0.19.0rc0/replay/experimental/preprocessing/padder.py +0 -229
  89. replay_rec-0.19.0rc0/replay/experimental/preprocessing/sequence_generator.py +0 -208
  90. replay_rec-0.19.0rc0/replay/experimental/scenarios/__init__.py +0 -1
  91. replay_rec-0.19.0rc0/replay/experimental/scenarios/obp_wrapper/__init__.py +0 -8
  92. replay_rec-0.19.0rc0/replay/experimental/scenarios/obp_wrapper/obp_optuna_objective.py +0 -74
  93. replay_rec-0.19.0rc0/replay/experimental/scenarios/obp_wrapper/replay_offline.py +0 -261
  94. replay_rec-0.19.0rc0/replay/experimental/scenarios/obp_wrapper/utils.py +0 -87
  95. replay_rec-0.19.0rc0/replay/experimental/scenarios/two_stages/reranker.py +0 -117
  96. replay_rec-0.19.0rc0/replay/experimental/scenarios/two_stages/two_stages_scenario.py +0 -757
  97. replay_rec-0.19.0rc0/replay/experimental/utils/logger.py +0 -24
  98. replay_rec-0.19.0rc0/replay/experimental/utils/model_handler.py +0 -186
  99. replay_rec-0.19.0rc0/replay/experimental/utils/session_handler.py +0 -44
  100. replay_rec-0.19.0rc0/replay/models/extensions/ann/__init__.py +0 -0
  101. replay_rec-0.19.0rc0/replay/models/extensions/ann/entities/__init__.py +0 -0
  102. replay_rec-0.19.0rc0/replay/models/extensions/ann/index_builders/__init__.py +0 -0
  103. replay_rec-0.19.0rc0/replay/models/extensions/ann/index_inferers/__init__.py +0 -0
  104. replay_rec-0.19.0rc0/replay/models/extensions/ann/index_stores/__init__.py +0 -0
  105. replay_rec-0.19.0rc0/replay/models/nn/sequential/compiled/__init__.py +0 -5
  106. replay_rec-0.19.0rc0/replay/optimization/__init__.py +0 -5
  107. replay_rec-0.19.0rc0/replay/utils/types.py +0 -38
  108. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/LICENSE +0 -0
  109. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/NOTICE +0 -0
  110. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/data/__init__.py +0 -0
  111. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/data/dataset_utils/__init__.py +0 -0
  112. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/data/dataset_utils/dataset_label_encoder.py +0 -0
  113. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/data/nn/__init__.py +6 -6
  114. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/data/nn/schema.py +0 -0
  115. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/data/schema.py +0 -0
  116. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/data/spark_schema.py +0 -0
  117. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/__init__.py +0 -0
  118. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/categorical_diversity.py +0 -0
  119. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/descriptors.py +0 -0
  120. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/hitrate.py +0 -0
  121. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/map.py +0 -0
  122. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/mrr.py +0 -0
  123. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/ndcg.py +0 -0
  124. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/novelty.py +0 -0
  125. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/precision.py +0 -0
  126. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/recall.py +0 -0
  127. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/rocauc.py +0 -0
  128. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/surprisal.py +0 -0
  129. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/torch_metrics_builder.py +0 -0
  130. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/metrics/unexpectedness.py +0 -0
  131. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/als.py +0 -0
  132. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/cluster.py +0 -0
  133. {replay_rec-0.19.0rc0/replay/experimental → replay_rec-0.20.0/replay/models/extensions}/__init__.py +0 -0
  134. {replay_rec-0.19.0rc0/replay/experimental/models/dt4rec → replay_rec-0.20.0/replay/models/extensions/ann}/__init__.py +0 -0
  135. {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
  136. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/entities/base_hnsw_param.py +0 -0
  137. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/entities/hnswlib_param.py +0 -0
  138. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/entities/nmslib_hnsw_param.py +0 -0
  139. {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
  140. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/index_builders/base_index_builder.py +0 -0
  141. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/index_builders/driver_nmslib_index_builder.py +0 -0
  142. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/index_builders/executor_hnswlib_index_builder.py +0 -0
  143. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/index_builders/executor_nmslib_index_builder.py +0 -0
  144. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/index_builders/nmslib_index_builder_mixin.py +0 -0
  145. {replay_rec-0.19.0rc0/replay/experimental/utils → replay_rec-0.20.0/replay/models/extensions/ann/index_inferers}/__init__.py +0 -0
  146. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/index_inferers/base_inferer.py +0 -0
  147. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/index_inferers/hnswlib_filter_index_inferer.py +0 -0
  148. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/index_inferers/hnswlib_index_inferer.py +0 -0
  149. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/index_inferers/nmslib_filter_index_inferer.py +0 -0
  150. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/index_inferers/nmslib_index_inferer.py +0 -0
  151. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/index_inferers/utils.py +0 -0
  152. {replay_rec-0.19.0rc0/replay/models/extensions → replay_rec-0.20.0/replay/models/extensions/ann/index_stores}/__init__.py +0 -0
  153. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/index_stores/base_index_store.py +0 -0
  154. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/index_stores/hdfs_index_store.py +0 -0
  155. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/index_stores/shared_disk_index_store.py +0 -0
  156. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/index_stores/spark_files_index_store.py +0 -0
  157. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/extensions/ann/index_stores/utils.py +0 -0
  158. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/kl_ucb.py +0 -0
  159. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/lin_ucb.py +0 -0
  160. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/__init__.py +0 -0
  161. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/loss/__init__.py +0 -0
  162. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/loss/sce.py +0 -0
  163. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/optimizer_utils/__init__.py +0 -0
  164. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/optimizer_utils/optimizer_factory.py +0 -0
  165. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/__init__.py +0 -0
  166. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/bert4rec/__init__.py +0 -0
  167. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/bert4rec/lightning.py +0 -0
  168. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/bert4rec/model.py +0 -0
  169. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/callbacks/__init__.py +0 -0
  170. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/callbacks/validation_callback.py +0 -0
  171. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/postprocessors/__init__.py +0 -0
  172. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/postprocessors/_base.py +0 -0
  173. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/postprocessors/postprocessors.py +0 -0
  174. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/sasrec/__init__.py +0 -0
  175. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/nn/sequential/sasrec/lightning.py +0 -0
  176. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/pop_rec.py +0 -0
  177. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/query_pop_rec.py +0 -0
  178. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/random_rec.py +0 -0
  179. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/thompson_sampling.py +0 -0
  180. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/ucb.py +0 -0
  181. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/models/wilson.py +0 -0
  182. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/preprocessing/__init__.py +0 -0
  183. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/preprocessing/converter.py +0 -0
  184. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/preprocessing/filters.py +0 -0
  185. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/preprocessing/sessionizer.py +0 -0
  186. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/scenarios/__init__.py +0 -0
  187. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/scenarios/fallback.py +0 -0
  188. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/splitters/__init__.py +0 -0
  189. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/splitters/base_splitter.py +0 -0
  190. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/splitters/k_folds.py +0 -0
  191. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/splitters/new_users_splitter.py +0 -0
  192. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/splitters/random_splitter.py +0 -0
  193. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/splitters/ratio_splitter.py +0 -0
  194. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/splitters/time_splitter.py +0 -0
  195. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/splitters/two_stage_splitter.py +0 -0
  196. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/utils/dataframe_bucketizer.py +0 -0
  197. {replay_rec-0.19.0rc0 → replay_rec-0.20.0}/replay/utils/distributions.py +0 -0
  198. {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
1
+ Metadata-Version: 2.4
2
2
  Name: replay-rec
3
- Version: 0.19.0rc0
3
+ Version: 0.20.0
4
4
  Summary: RecSys Library
5
- Home-page: https://sb-ai-lab.github.io/RePlay/
6
- License: Apache-2.0
5
+ License-Expression: Apache-2.0
6
+ License-File: LICENSE
7
+ License-File: NOTICE
7
8
  Author: AI Lab
8
- Requires-Python: >=3.8.1,<3.12
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-openvino
25
- Requires-Dist: d3rlpy (>=2.0.4,<3.0.0)
26
- Requires-Dist: fixed-install-nmslib (==2.1.2)
27
- Requires-Dist: gym (>=0.26.0,<0.27.0)
28
- Requires-Dist: hnswlib (>=0.7.0,<0.8.0)
29
- Requires-Dist: implicit (>=0.7.0,<0.8.0)
30
- Requires-Dist: lightautoml (>=0.3.1,<0.4.0)
31
- Requires-Dist: lightfm (==1.17)
32
- Requires-Dist: lightning (>=2.0.2,<=2.4.0) ; extra == "torch" or extra == "torch-openvino" or extra == "all"
33
- Requires-Dist: llvmlite (>=0.32.1)
34
- Requires-Dist: numba (>=0.50)
35
- Requires-Dist: numpy (>=1.20.0)
36
- Requires-Dist: onnx (>=1.16.2,<1.17.0) ; extra == "torch-openvino" or extra == "all"
37
- Requires-Dist: openvino (>=2024.3.0,<2024.4.0) ; extra == "torch-openvino" or extra == "all"
38
- Requires-Dist: optuna (>=3.2.0,<3.3.0)
39
- Requires-Dist: pandas (>=1.3.5,<=2.2.2)
40
- Requires-Dist: polars (>=1.0.0,<1.1.0)
41
- Requires-Dist: psutil (>=6.0.0,<6.1.0)
42
- Requires-Dist: pyarrow (>=12.0.1)
43
- Requires-Dist: pyspark (>=3.0,<3.5) ; (python_full_version >= "3.8.1" and python_version < "3.11") and (extra == "spark" or extra == "all")
44
- Requires-Dist: pyspark (>=3.4,<3.5) ; (python_version >= "3.11" and python_version < "3.12") and (extra == "spark" or extra == "all")
45
- Requires-Dist: pytorch-ranger (>=0.1.1,<0.2.0) ; extra == "torch" or extra == "torch-openvino" or extra == "all"
46
- Requires-Dist: sb-obp (>=0.5.8,<0.6.0)
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>=1.0.0",
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
- [tool.black]
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
- {version = ">=1.8, <3.0.0", python = ">=3.9", optional = true},
65
- {version = ">=1.8, <=2.4.1", python = ">=3.8,<3.9", optional = true},
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.19.0{{ env['PACKAGE_SUFFIX'] }}"""
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.isort]
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"]
@@ -0,0 +1,7 @@
1
+ """RecSys library"""
2
+
3
+ # NOTE: This ensures distutils monkey-patching is performed before any
4
+ # functionality removed in Python 3.12 is used in downstream packages (like lightfm)
5
+ import setuptools as _
6
+
7
+ __version__ = "0.20.0"
@@ -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
- if isinstance(dataframe, PandasDataFrame) and isinstance(other, PandasDataFrame):
779
- return True
780
- if isinstance(dataframe, SparkDataFrame) and isinstance(other, SparkDataFrame):
781
- return True
782
- if isinstance(dataframe, PolarsDataFrame) and isinstance(other, PolarsDataFrame):
783
- return True
784
- return False
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
+ )