recnexteval 0.1.0__py3-none-any.whl

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 (110) hide show
  1. recnexteval/__init__.py +20 -0
  2. recnexteval/algorithms/__init__.py +99 -0
  3. recnexteval/algorithms/base.py +377 -0
  4. recnexteval/algorithms/baseline/__init__.py +10 -0
  5. recnexteval/algorithms/baseline/decay_popularity.py +110 -0
  6. recnexteval/algorithms/baseline/most_popular.py +72 -0
  7. recnexteval/algorithms/baseline/random.py +39 -0
  8. recnexteval/algorithms/baseline/recent_popularity.py +34 -0
  9. recnexteval/algorithms/itemknn/__init__.py +14 -0
  10. recnexteval/algorithms/itemknn/itemknn.py +119 -0
  11. recnexteval/algorithms/itemknn/itemknn_incremental.py +65 -0
  12. recnexteval/algorithms/itemknn/itemknn_incremental_movielens.py +95 -0
  13. recnexteval/algorithms/itemknn/itemknn_rolling.py +17 -0
  14. recnexteval/algorithms/itemknn/itemknn_static.py +31 -0
  15. recnexteval/algorithms/time_aware_item_knn/__init__.py +11 -0
  16. recnexteval/algorithms/time_aware_item_knn/base.py +248 -0
  17. recnexteval/algorithms/time_aware_item_knn/decay_functions.py +260 -0
  18. recnexteval/algorithms/time_aware_item_knn/ding_2005.py +52 -0
  19. recnexteval/algorithms/time_aware_item_knn/liu_2010.py +65 -0
  20. recnexteval/algorithms/time_aware_item_knn/similarity_functions.py +106 -0
  21. recnexteval/algorithms/time_aware_item_knn/top_k.py +61 -0
  22. recnexteval/algorithms/time_aware_item_knn/utils.py +47 -0
  23. recnexteval/algorithms/time_aware_item_knn/vaz_2013.py +50 -0
  24. recnexteval/algorithms/utils.py +51 -0
  25. recnexteval/datasets/__init__.py +109 -0
  26. recnexteval/datasets/base.py +316 -0
  27. recnexteval/datasets/config/__init__.py +113 -0
  28. recnexteval/datasets/config/amazon.py +188 -0
  29. recnexteval/datasets/config/base.py +72 -0
  30. recnexteval/datasets/config/lastfm.py +105 -0
  31. recnexteval/datasets/config/movielens.py +169 -0
  32. recnexteval/datasets/config/yelp.py +25 -0
  33. recnexteval/datasets/datasets/__init__.py +24 -0
  34. recnexteval/datasets/datasets/amazon.py +151 -0
  35. recnexteval/datasets/datasets/base.py +250 -0
  36. recnexteval/datasets/datasets/lastfm.py +121 -0
  37. recnexteval/datasets/datasets/movielens.py +93 -0
  38. recnexteval/datasets/datasets/test.py +46 -0
  39. recnexteval/datasets/datasets/yelp.py +103 -0
  40. recnexteval/datasets/metadata/__init__.py +58 -0
  41. recnexteval/datasets/metadata/amazon.py +68 -0
  42. recnexteval/datasets/metadata/base.py +38 -0
  43. recnexteval/datasets/metadata/lastfm.py +110 -0
  44. recnexteval/datasets/metadata/movielens.py +87 -0
  45. recnexteval/evaluators/__init__.py +189 -0
  46. recnexteval/evaluators/accumulator.py +167 -0
  47. recnexteval/evaluators/base.py +216 -0
  48. recnexteval/evaluators/builder/__init__.py +125 -0
  49. recnexteval/evaluators/builder/base.py +166 -0
  50. recnexteval/evaluators/builder/pipeline.py +111 -0
  51. recnexteval/evaluators/builder/stream.py +54 -0
  52. recnexteval/evaluators/evaluator_pipeline.py +287 -0
  53. recnexteval/evaluators/evaluator_stream.py +374 -0
  54. recnexteval/evaluators/state_management.py +310 -0
  55. recnexteval/evaluators/strategy.py +32 -0
  56. recnexteval/evaluators/util.py +124 -0
  57. recnexteval/matrix/__init__.py +48 -0
  58. recnexteval/matrix/exception.py +5 -0
  59. recnexteval/matrix/interaction_matrix.py +784 -0
  60. recnexteval/matrix/prediction_matrix.py +153 -0
  61. recnexteval/matrix/util.py +24 -0
  62. recnexteval/metrics/__init__.py +57 -0
  63. recnexteval/metrics/binary/__init__.py +4 -0
  64. recnexteval/metrics/binary/hit.py +49 -0
  65. recnexteval/metrics/core/__init__.py +10 -0
  66. recnexteval/metrics/core/base.py +126 -0
  67. recnexteval/metrics/core/elementwise_top_k.py +75 -0
  68. recnexteval/metrics/core/listwise_top_k.py +72 -0
  69. recnexteval/metrics/core/top_k.py +60 -0
  70. recnexteval/metrics/core/util.py +29 -0
  71. recnexteval/metrics/ranking/__init__.py +6 -0
  72. recnexteval/metrics/ranking/dcg.py +55 -0
  73. recnexteval/metrics/ranking/ndcg.py +78 -0
  74. recnexteval/metrics/ranking/precision.py +51 -0
  75. recnexteval/metrics/ranking/recall.py +42 -0
  76. recnexteval/models/__init__.py +4 -0
  77. recnexteval/models/base.py +69 -0
  78. recnexteval/preprocessing/__init__.py +37 -0
  79. recnexteval/preprocessing/filter.py +181 -0
  80. recnexteval/preprocessing/preprocessor.py +137 -0
  81. recnexteval/registries/__init__.py +67 -0
  82. recnexteval/registries/algorithm.py +68 -0
  83. recnexteval/registries/base.py +131 -0
  84. recnexteval/registries/dataset.py +37 -0
  85. recnexteval/registries/metric.py +57 -0
  86. recnexteval/settings/__init__.py +127 -0
  87. recnexteval/settings/base.py +414 -0
  88. recnexteval/settings/exception.py +8 -0
  89. recnexteval/settings/leave_n_out_setting.py +48 -0
  90. recnexteval/settings/processor.py +115 -0
  91. recnexteval/settings/schema.py +11 -0
  92. recnexteval/settings/single_time_point_setting.py +111 -0
  93. recnexteval/settings/sliding_window_setting.py +153 -0
  94. recnexteval/settings/splitters/__init__.py +14 -0
  95. recnexteval/settings/splitters/base.py +57 -0
  96. recnexteval/settings/splitters/n_last.py +39 -0
  97. recnexteval/settings/splitters/n_last_timestamp.py +76 -0
  98. recnexteval/settings/splitters/timestamp.py +82 -0
  99. recnexteval/settings/util.py +0 -0
  100. recnexteval/utils/__init__.py +115 -0
  101. recnexteval/utils/json_to_csv_converter.py +128 -0
  102. recnexteval/utils/logging_tools.py +159 -0
  103. recnexteval/utils/path.py +155 -0
  104. recnexteval/utils/url_certificate_installer.py +54 -0
  105. recnexteval/utils/util.py +166 -0
  106. recnexteval/utils/uuid_util.py +7 -0
  107. recnexteval/utils/yaml_tool.py +65 -0
  108. recnexteval-0.1.0.dist-info/METADATA +85 -0
  109. recnexteval-0.1.0.dist-info/RECORD +110 -0
  110. recnexteval-0.1.0.dist-info/WHEEL +4 -0
@@ -0,0 +1,65 @@
1
+ import os
2
+
3
+ import yaml
4
+
5
+ from .path import get_logs_dir, safe_dir
6
+
7
+
8
+ def create_config_yaml(config_filename: str) -> tuple[str, str]:
9
+ """
10
+ Create a configuration file for the logger.
11
+
12
+ Writes a default configuration file for the logger in YAML format.
13
+ The configuration file specifies the format of the log messages,
14
+ the output stream, and the log level.
15
+
16
+ :param path: The name of the file to be created.
17
+ :type path: str
18
+ """
19
+ log_dir = get_logs_dir()
20
+ safe_dir(log_dir)
21
+ log_file_path = os.path.join(log_dir, "recnexteval.log")
22
+ yaml_file_path = os.path.join(log_dir, config_filename)
23
+
24
+ # check if log file and yaml file already exist
25
+ if os.path.exists(yaml_file_path) and os.path.exists(log_file_path):
26
+ return (log_file_path, yaml_file_path)
27
+
28
+ default_config = {
29
+ "version": 1,
30
+ "disable_existing_loggers": False,
31
+ "formatters": {
32
+ "detailed": {"format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s"},
33
+ "simple": {"format": "%(levelname)s - %(message)s"},
34
+ },
35
+ "handlers": {
36
+ "console": {
37
+ "class": "logging.StreamHandler",
38
+ "level": "DEBUG",
39
+ "formatter": "simple",
40
+ "stream": "ext://sys.stdout",
41
+ },
42
+ "file": {
43
+ "class": "logging.FileHandler",
44
+ "level": "DEBUG",
45
+ "formatter": "detailed",
46
+ "filename": log_file_path,
47
+ },
48
+ },
49
+ "loggers": {
50
+ "recnexteval": {
51
+ "level": "DEBUG",
52
+ "handlers": ["console", "file"],
53
+ "propagate": False,
54
+ },
55
+ },
56
+ "root": {
57
+ "level": "WARNING",
58
+ "handlers": ["console"],
59
+ },
60
+ }
61
+
62
+ # Write the YAML content
63
+ with open(yaml_file_path, "w") as file:
64
+ yaml.dump(default_config, file, default_flow_style=False)
65
+ return (log_file_path, yaml_file_path)
@@ -0,0 +1,85 @@
1
+ Metadata-Version: 2.3
2
+ Name: recnexteval
3
+ Version: 0.1.0
4
+ Summary: An Evaluation Framework for Next-Batch Recommendations.
5
+ Keywords: recsys,recommendation,practical evaluation,global timeline,reccomender systems,data leakage
6
+ Author: Ng Tze Kean
7
+ Author-email: Ng Tze Kean <ngtzekean@gmail.com>
8
+ Requires-Dist: colorama>=0.4.6
9
+ Requires-Dist: colorlog>=6.10.1
10
+ Requires-Dist: deprecation>=2.1.0
11
+ Requires-Dist: httpx>=0.28.1
12
+ Requires-Dist: numpy==2.2.6
13
+ Requires-Dist: pandas>=2.3.3
14
+ Requires-Dist: progressbar>=2.5
15
+ Requires-Dist: pyarrow>=22.0.0
16
+ Requires-Dist: pyfiglet>=1.0.4
17
+ Requires-Dist: scikit-learn>=1.7.2
18
+ Requires-Dist: scipy>=1.16.3
19
+ Requires-Dist: simplejson>=3.20.2
20
+ Requires-Dist: tqdm>=4.67.1
21
+ Requires-Dist: typing-extensions>=4.15.0
22
+ Requires-Dist: urllib3>=2.5.0
23
+ Maintainer: Ng Tze Kean
24
+ Maintainer-email: Ng Tze Kean <ngtzekean@gmail.com>
25
+ Requires-Python: >=3.13
26
+ Project-URL: Homepage, https://hiiamtzekean.github.io/recnexteval/
27
+ Project-URL: Repository, https://github.com/ngtzekean/recnexteval
28
+ Description-Content-Type: text/markdown
29
+
30
+ # RecNextEval
31
+
32
+ ![recnexteval-logo](https://github.com/HiIAmTzeKean/recnexteval/raw/master/docs/assets/_static/logo_name.png)
33
+
34
+ [![PyPI Latest Release](https://img.shields.io/pypi/v/recnexteval.svg)](https://pypi.org/project/recnexteval/)&nbsp;&nbsp;
35
+ [![Docs](https://github.com/hiiamtzekean/recnexteval/actions/workflows/pages/pages-build-deployment/badge.svg)](https://github.com/hiiamtzekean/recnexteval/)&nbsp;&nbsp;
36
+ [![Python version](https://img.shields.io/badge/python-3.12.5-blue)](https://www.python.org/downloads/)
37
+
38
+ RecNextEval is an offline Reccomender Systems (RecSys) evaluation toolkit that respects a global timeline.
39
+ The aim is to partition the data into different windows where data is incrementally released for the programmer
40
+ to fit, train and submit predictions. This aims to provide a close simulation of an online setting when evaluating
41
+ RecSys algorithms.
42
+
43
+ ## Getting Started
44
+
45
+ Clone the repository
46
+
47
+ ```bash
48
+ git clone https://github.com/hiiamtzekean/recnexteval
49
+ cd recnexteval
50
+ ```
51
+
52
+ Dependencies can be installed with `uv` for ease of management.
53
+
54
+ ```bash
55
+ uv sync
56
+ ```
57
+
58
+ Alternatively, you may install dependencies locally with pip and venv
59
+
60
+ ```bash
61
+ python3 -m venv venv
62
+ source venv/bin/activate
63
+ pip install -e .
64
+ ```
65
+
66
+ The dependencies are listed in `pyproject.toml`.
67
+
68
+ ## Contributing
69
+
70
+ - We welcome all contributors, be it reporting an [issue](https://github.com/hiiamtzekean/recnexteval/issues),
71
+ or raising a [pull request](https://github.com/hiiamtzekean/recnexteval/pulls) to fix an issue.
72
+ - When you make changes, rerun `pip install .` to test your changes.
73
+
74
+ ## Documentation
75
+
76
+ The documentation can be found [here](https://hiiamtzekean.github.io/recnexteval/)
77
+ and [repository](https://github.com/hiiamtzekean/recnexteval) on Github.
78
+
79
+ ## Citation
80
+
81
+ If you use this library in any part of your work, please cite the following papers:
82
+
83
+ ```text
84
+ Ng, T. K. (2024). RecNextEval: a toolkit for offline evaluation of recommender systems. Final Year Project (FYP), Nanyang Technological University, Singapore. https://hdl.handle.net/10356/181114
85
+ ```
@@ -0,0 +1,110 @@
1
+ recnexteval/__init__.py,sha256=QRo7Xnqfqul1DCK2q8Le8FWayQO8NIWhRvOXeCYUmpY,454
2
+ recnexteval/algorithms/__init__.py,sha256=jZK-jo5-v8znxKM11LxrRX7TLM5XHR3BIDf-EazP5RM,2826
3
+ recnexteval/algorithms/base.py,sha256=f5gDhYjeJNU9zYx2IyGUi5lm8y1sJ9Ko5g3f9DqSEkw,13986
4
+ recnexteval/algorithms/baseline/__init__.py,sha256=1L-mIcgRcjX4yUdyTyKl95DWO6oh6zBHlcC8K__vqtE,186
5
+ recnexteval/algorithms/baseline/decay_popularity.py,sha256=6Wl-87yKnRzVbk4-4j733lc0Qs6BcSFOZAmiz2uJ8-U,4099
6
+ recnexteval/algorithms/baseline/most_popular.py,sha256=E0VomehN8P4bu4NVOfkeOQqqQ2iTvA5l3b1pthJyI20,2640
7
+ recnexteval/algorithms/baseline/random.py,sha256=_otqjMwOCn25I8R3CHUqsbhjVZQYGvYwYdhz72lFh-4,1314
8
+ recnexteval/algorithms/baseline/recent_popularity.py,sha256=Dls2PE23rfDC8hqIkI7C8WzAyHidSYK307_4Jok3GsM,1010
9
+ recnexteval/algorithms/itemknn/__init__.py,sha256=6hqiXXgtwiO0HTXPei8HJSMKTgF9KMFCZggOmKJmr2E,381
10
+ recnexteval/algorithms/itemknn/itemknn.py,sha256=YhfmcD5jYSz_w41Qp18CLPMd4bk7K5ZUmvbpQ2gxR2A,4294
11
+ recnexteval/algorithms/itemknn/itemknn_incremental.py,sha256=gsmNcT6RFghXFfjL6PiVoyOZWFbwuP1Gj5cQHE6hc-I,2461
12
+ recnexteval/algorithms/itemknn/itemknn_incremental_movielens.py,sha256=ZKwTpeRVLLioEKAPCuoDzegJk6p9_eBp9gPAOYPYYBw,3862
13
+ recnexteval/algorithms/itemknn/itemknn_rolling.py,sha256=UDIDDZnrpTUz6edIShC0YSj0KncRHmcnn4K_MLwp_x4,416
14
+ recnexteval/algorithms/itemknn/itemknn_static.py,sha256=Xupk8A_U8htQtoj43IcJGOcAaoslPw6CzOxqxmDzjB0,801
15
+ recnexteval/algorithms/time_aware_item_knn/__init__.py,sha256=7xUQJHJ83SpZWjZ7snY6FI2Fa9v5W0U6SbW5duegl4g,552
16
+ recnexteval/algorithms/time_aware_item_knn/base.py,sha256=IdwVHU5H_rTUgaMSqOL-SDQlda_bky9ZYVrUGuOJbUM,9921
17
+ recnexteval/algorithms/time_aware_item_knn/decay_functions.py,sha256=mHhfNErg7tNYYlhO7DSohZHa182Qy6EB2tNI4Fs90_Y,8233
18
+ recnexteval/algorithms/time_aware_item_knn/ding_2005.py,sha256=a7FY3c6G7WWnhm7h5bQURRXqRCvKTBpE512Kmh30xfQ,2425
19
+ recnexteval/algorithms/time_aware_item_knn/liu_2010.py,sha256=GdDULJDqYJ7yI1THiumB3W0ETeGo5UadnFo3Zc589ZY,2731
20
+ recnexteval/algorithms/time_aware_item_knn/similarity_functions.py,sha256=O79znB6i9WTi-cPsfpPjmKKwj5rdgzda9W_J2L7yfXU,3822
21
+ recnexteval/algorithms/time_aware_item_knn/top_k.py,sha256=yFPDBj_pIDByiAy3kf5PGmp6n-49KrqFQPUzWhZY958,2110
22
+ recnexteval/algorithms/time_aware_item_knn/utils.py,sha256=mmdiBeJKztPN6OUQlk2lBFYkmNwEn3qElkrsfcSyXRk,1138
23
+ recnexteval/algorithms/time_aware_item_knn/vaz_2013.py,sha256=F5KbKbXvYgTmN0VtbbkJR9HmjjuNL9sgaDvogJlMyoM,2355
24
+ recnexteval/algorithms/utils.py,sha256=aN-riaDv_s7FRX4SYiXvdvr4k87vxduPEY0CrNXj7Fo,1932
25
+ recnexteval/datasets/__init__.py,sha256=F_zZxJQlXk4X6Rpqem-NB00y3TqdOh2MbdufKhGz7RA,3020
26
+ recnexteval/datasets/base.py,sha256=Q1HN-l5mdO_HwcSWIUGo7OvUsa2pPWNjzAhltWO20pM,11725
27
+ recnexteval/datasets/config/__init__.py,sha256=ncRGMFWK-7Ug4zoWyu91wl0-YCDKVj4H1idBhz1SEZE,3847
28
+ recnexteval/datasets/config/amazon.py,sha256=kgLpGzkeq2MaEVYkVTDe5pBU5Uhfz5J51Im5aaiVmAY,6534
29
+ recnexteval/datasets/config/base.py,sha256=RI9ZIVjFv96E_oqIni1cAFkuk_qD50NutqdYMBKFsis,2145
30
+ recnexteval/datasets/config/lastfm.py,sha256=ky92tMDgPZw9BOyO4a8uZcS7TVbiH979EnYULV6p9xg,3040
31
+ recnexteval/datasets/config/movielens.py,sha256=PtsxJi8XvtjfVoDZ_PPfuSAYajKOCi5gheB4iMp2-Wo,5040
32
+ recnexteval/datasets/config/yelp.py,sha256=dqQz1moQFvawqWSPrtNwkaXzEGw5KysCt_GDqyFB11A,797
33
+ recnexteval/datasets/datasets/__init__.py,sha256=x-niCQWm5qUNCxbkdmM9anS3RizJLd9f0Hyy-oge07E,514
34
+ recnexteval/datasets/datasets/amazon.py,sha256=SUHpIgoUufUGuYOs6qybUcMmHlu-kcw3VzHrkbhoGCI,4553
35
+ recnexteval/datasets/datasets/base.py,sha256=iXM6u_l8VugQLEf1HVjatASrOAD4ZxouWDBc8Gvd-BA,9333
36
+ recnexteval/datasets/datasets/lastfm.py,sha256=8X0nm0QKu3aBIMFyNbSY9qBcsHbE_LdvuAD0psR3huY,4313
37
+ recnexteval/datasets/datasets/movielens.py,sha256=QzneJ_JxwrSveuK1iMx9N2L2DP0wzpktM4ejh_54NNE,2918
38
+ recnexteval/datasets/datasets/test.py,sha256=vOL3DjkeMf6I1yEDv1nlxl2SPLg7-typwkH9L2Bhoc8,1576
39
+ recnexteval/datasets/datasets/yelp.py,sha256=W6J4i1gDBXBuuIICI_OgB9bAOa-9-xMWpYWO80M4z3s,3539
40
+ recnexteval/datasets/metadata/__init__.py,sha256=j_UgDXPATybSUkeL958hzaRZpfNuQ0GgHrTv7KysQzo,1899
41
+ recnexteval/datasets/metadata/amazon.py,sha256=Is2PWTzv-awVfi433EsqlRJ_yluqkp9zvrwO6UG4avo,2274
42
+ recnexteval/datasets/metadata/base.py,sha256=olHnYb0Lg9mTKjaEoHDCk0Iq6twN1xwisBtPCkcxneg,1154
43
+ recnexteval/datasets/metadata/lastfm.py,sha256=H0YxTz5-mC9RDTmq_Z2Nu_ys9nRkxtUPf_lt8GT6mNc,3402
44
+ recnexteval/datasets/metadata/movielens.py,sha256=w-VQgwjTSgcIyaCdQKssKuL-Q8QKnW5rD8sj_J-AZK0,2909
45
+ recnexteval/evaluators/__init__.py,sha256=is_7giST5MMOWixXR4pu7OHvVMjEdPkZ43Lxyihff5A,5895
46
+ recnexteval/evaluators/accumulator.py,sha256=hWSsSeQ8YtQgRFukh4dcE_rl02qe8rGsGEFf6_Zb9xg,6617
47
+ recnexteval/evaluators/base.py,sha256=9L1o2Glm2kNkJute9RGPDnZwUyweMnofTFebeSXOFg0,8979
48
+ recnexteval/evaluators/builder/__init__.py,sha256=MHHPoD61TIdLG9MdsQrLl3hl8Fwsulqhopa7KVTFE_k,3491
49
+ recnexteval/evaluators/builder/base.py,sha256=QaGu_HumkEe-2TRmYxTIQI1PdVj1xNLw3u8GjO1x5AA,5806
50
+ recnexteval/evaluators/builder/pipeline.py,sha256=GrqenqXGn5CAqGdiCPeaxqSFWmC8iQRol8AgL9Jr4tk,3883
51
+ recnexteval/evaluators/builder/stream.py,sha256=rc9EbZOfpwh4fiMXp3Z92p4nZArss1JdeVNTIU7GQ0U,1671
52
+ recnexteval/evaluators/evaluator_pipeline.py,sha256=P7NcIeXlrOsifILXF2-AA6PcTDCyZupEuuQ7Y7QPZpQ,11918
53
+ recnexteval/evaluators/evaluator_stream.py,sha256=iAO6xKN3qrb-zHanA7q1TcOUtEX7_kjIzawu1spbtIs,15616
54
+ recnexteval/evaluators/state_management.py,sha256=VuD6glygVhlA3uM1qCBopcqYtnDCzjMmcO4PfKBvzR0,11439
55
+ recnexteval/evaluators/strategy.py,sha256=QxnMDf_x9LF9oVNUgrw1YiED8faZSzCyb3p__Sn1Ebo,1207
56
+ recnexteval/evaluators/util.py,sha256=VnZdxdmuBbyGI706JYhL2kVdVhWvgpIE_U2FEgGO3bY,3972
57
+ recnexteval/matrix/__init__.py,sha256=WFQXFNlATvlLgJxd6GtTRa_pJPRjAedl-YHWckovC-4,2178
58
+ recnexteval/matrix/exception.py,sha256=qGkANmmUP33y0Qt9GXwiLgOSPOlUR4lZ2oQkP7s0c5E,235
59
+ recnexteval/matrix/interaction_matrix.py,sha256=HWmFUwkbIlZXgYbPDAo5CL-ErbI7X01YZS2RCu-1NFY,31314
60
+ recnexteval/matrix/prediction_matrix.py,sha256=SqR_XgWvItXDwycIsFEzFaqECiEWIEOaGxeibJ9aIZ4,6961
61
+ recnexteval/matrix/util.py,sha256=7Qelrr1aFm0j98-WkyzF2ZPaEtcVEzDimHcgcS1HFr8,844
62
+ recnexteval/metrics/__init__.py,sha256=7DvIOt1LYarUeXwH3zWsZbN-WknKLFeKUy1FHEZuAds,1532
63
+ recnexteval/metrics/binary/__init__.py,sha256=7Z9M0ncgzhcza_yT6PnH8oA2tHHED4jJfsV11KScYus,43
64
+ recnexteval/metrics/binary/hit.py,sha256=xX2rQ_QfOKGBiV5psFBHGofBRkwf0Nw0ljTWH_aS79k,1648
65
+ recnexteval/metrics/core/__init__.py,sha256=GrUfOV6ZhC68s2zuUtH08Rdbc7HAQkim72ZaUE7TaAA,170
66
+ recnexteval/metrics/core/base.py,sha256=vXoQ4xnNlH8twaY2JPh0bancCOnC4lPY41FCnRe46U0,4309
67
+ recnexteval/metrics/core/elementwise_top_k.py,sha256=pyjcF3rmHhia1AH5syV6x7j0lmpkazWD4jMksEyD4bs,2560
68
+ recnexteval/metrics/core/listwise_top_k.py,sha256=yc-553k2E0SiVL1wkQ167JLIAw7vxB14S5kayz2s4fw,2394
69
+ recnexteval/metrics/core/top_k.py,sha256=KjJFWwO-CyhBePXmSrHFe9DOg6Uc0m9fSt5KVeVS-tc,1841
70
+ recnexteval/metrics/core/util.py,sha256=xBl6pCRWJ8K_lP4iCrBv0o3NP0x_kZFXIVD-kZlohmU,852
71
+ recnexteval/metrics/ranking/__init__.py,sha256=hZYIL6d1vbKPwJdDYp-digtoSH4KVexLm9pRYjbQiOw,137
72
+ recnexteval/metrics/ranking/dcg.py,sha256=Z69yUxmh5-Rg3FT2g5d-l273oziojsVd32N4HMLKTOM,1775
73
+ recnexteval/metrics/ranking/ndcg.py,sha256=E-fkzpFRyUjf_CEkj-iRY1ekLVa2ieJwnh2a5Hajwkk,2592
74
+ recnexteval/metrics/ranking/precision.py,sha256=xRkXhL-2bZDCTR833s60qjFo3EYVGJM0etCF9rrk0Vs,1728
75
+ recnexteval/metrics/ranking/recall.py,sha256=fjaN1QRWY0GyeUV9S14mnFBhj4PDQ_MJwZcQj0bgblY,1307
76
+ recnexteval/models/__init__.py,sha256=QBe1epPRZoznMS02wVUQ71P7eQ4_E9IsbhNu-pp2GrU,80
77
+ recnexteval/models/base.py,sha256=yUCApLqMfrhohIr-TgGvDkfJAUMnr8kLSaQxSR__t9w,1688
78
+ recnexteval/preprocessing/__init__.py,sha256=RaiCM2mkuOae55dVGMJuI-JBJL1FWCO5EbdJg__MPr0,1176
79
+ recnexteval/preprocessing/filter.py,sha256=EME-cvde8AhAchqObySHv2LHRVxK4wf146EMc4Tn6w0,4845
80
+ recnexteval/preprocessing/preprocessor.py,sha256=PFZy51dOnpBIeTEsZ7cWh8W49frknebmvxT3RASpZok,5012
81
+ recnexteval/registries/__init__.py,sha256=PrFnje4-qEBIFecVmKLB1mBI3GBbGfdlseXBfAy4cE8,1805
82
+ recnexteval/registries/algorithm.py,sha256=OuPEnS4mP_90Nr8Da9AjoYKTuByrPnd5565Gzb0-MVI,1962
83
+ recnexteval/registries/base.py,sha256=GM4SvxwcHxfJNwLm-CN2NZV5ZNoWZGYLNReHVzYicGA,3951
84
+ recnexteval/registries/dataset.py,sha256=c-TXAkwX_VH5Z10ZNdfSmU7yU-QA1j_HpCxBUCp3rro,969
85
+ recnexteval/registries/metric.py,sha256=jf6Dzu6CdawFkIJZDNtYj_is7eI0U5WlfctLgMBPJpk,1442
86
+ recnexteval/settings/__init__.py,sha256=CCssGfvK2KOFhofUPXwHK5iHlrqX_NmAeGfhsL3q-2Y,4548
87
+ recnexteval/settings/base.py,sha256=JXD0KVsSWcFz2Hhh2hvVB2XdgCrA8Q_H_T8riCN4ON4,15844
88
+ recnexteval/settings/exception.py,sha256=JAMR87gdAtmsOxcfHgPi80nppC90Ip_49rExyaEYcSE,295
89
+ recnexteval/settings/leave_n_out_setting.py,sha256=pIfJI2trLB18g-eXECCk-qsjLtQjgLIVSFn22_m7ME0,1425
90
+ recnexteval/settings/processor.py,sha256=BUjKaAPF4lpdYvR5B4PIPpmRQ-18yegEpGxkG2Pvmn0,4991
91
+ recnexteval/settings/schema.py,sha256=a-fNMgBsoc8ePECHsHaB_SFn8fhxS7xMRXJbVdiPQvI,295
92
+ recnexteval/settings/single_time_point_setting.py,sha256=-RmWXYnmLX4nEyaGwDTPPrewcjZstrIZMjgWWRXKXf0,4271
93
+ recnexteval/settings/sliding_window_setting.py,sha256=KaWQSq_6FuwPuOzJMNI5pzjJM7h8_rHzfUfVAsavznA,6762
94
+ recnexteval/settings/splitters/__init__.py,sha256=aPH1yR2n9RjKm6MbBBvBE3fc42JXqjBIXmiTRWqBRwg,309
95
+ recnexteval/settings/splitters/base.py,sha256=WFXVh1Kv58HindPIKSTnuL3qgD95pi75r4I7vjhJfF4,1638
96
+ recnexteval/settings/splitters/n_last.py,sha256=YOxL8_rhCLMWG1EBm9Bu9eLARE4VSIid1o86LXleX4E,1435
97
+ recnexteval/settings/splitters/n_last_timestamp.py,sha256=tP_GiVEPd80Rpv7migiHgFF7RHUeigfLHOyrkCzobA8,2961
98
+ recnexteval/settings/splitters/timestamp.py,sha256=29s3-vl_0mmhDqNUv2clblnUIBvc5hK2hc2YEvNmSc0,2842
99
+ recnexteval/settings/util.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
100
+ recnexteval/utils/__init__.py,sha256=6jHBaGkQc0NbBWXfE-FETN-mJtnysWCztoaJxp5w9bk,2930
101
+ recnexteval/utils/json_to_csv_converter.py,sha256=6vo0tbZDDhtvk6YCVMFRtLeUhiSkGdSjtW6zoDhTfvo,3665
102
+ recnexteval/utils/logging_tools.py,sha256=jDVwyWPJWZ4Ztmbx-k1G6dF2AmcqbBzdgzWWDZgKKxw,4438
103
+ recnexteval/utils/path.py,sha256=v2e5PNaohnwQtRq8oU-RI5IVhquxAG2G3e2cvr0xPjE,4260
104
+ recnexteval/utils/url_certificate_installer.py,sha256=wSK7hgcZRitUqHfXjgeeBdHWz6__tc78i8i4lMwckSY,1506
105
+ recnexteval/utils/util.py,sha256=B76Z-SSNeqwUWJavkl2xsTkFhfsicmCCnF6OZMzTyg0,4836
106
+ recnexteval/utils/uuid_util.py,sha256=WA7PfCdULyUnCDs0FXpi2S7pSwTTLn0SQpkAqUAcKTE,262
107
+ recnexteval/utils/yaml_tool.py,sha256=VgN-T0OVRfp5Ie3XCDyuIcg2VLQBM-JIks-mgPfDbUQ,2006
108
+ recnexteval-0.1.0.dist-info/WHEEL,sha256=XV0cjMrO7zXhVAIyyc8aFf1VjZ33Fen4IiJk5zFlC3g,80
109
+ recnexteval-0.1.0.dist-info/METADATA,sha256=slhKsG8ewdOPB0pw6ErCyyBySUaU2LCoXvoX9V5MkzY,3097
110
+ recnexteval-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: uv 0.9.26
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any