modssc 1.2.1__tar.gz → 1.2.2__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 (920) hide show
  1. {modssc-1.2.1 → modssc-1.2.2}/.github/workflows/ci.yml +3 -3
  2. {modssc-1.2.1 → modssc-1.2.2}/.github/workflows/docs.yml +1 -1
  3. {modssc-1.2.1 → modssc-1.2.2}/.github/workflows/release.yml +2 -2
  4. {modssc-1.2.1 → modssc-1.2.2}/CHANGELOG.md +5 -0
  5. {modssc-1.2.1 → modssc-1.2.2}/PKG-INFO +1 -1
  6. {modssc-1.2.1 → modssc-1.2.2}/docs/index.md +1 -1
  7. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/__about__.py +1 -1
  8. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/graph/dgi.py +5 -3
  9. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/methods/classic/dynamic_label_propagation.py +36 -4
  10. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/methods/gnn/common.py +9 -5
  11. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/classic/test___init__.py +40 -0
  12. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/gnn/_methods.py +13 -0
  13. {modssc-1.2.1 → modssc-1.2.2}/.editorconfig +0 -0
  14. {modssc-1.2.1 → modssc-1.2.2}/.github/CODEOWNERS +0 -0
  15. {modssc-1.2.1 → modssc-1.2.2}/.github/CODE_OF_CONDUCT.md +0 -0
  16. {modssc-1.2.1 → modssc-1.2.2}/.github/CONTRIBUTING.md +0 -0
  17. {modssc-1.2.1 → modssc-1.2.2}/.github/GOVERNANCE.md +0 -0
  18. {modssc-1.2.1 → modssc-1.2.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  19. {modssc-1.2.1 → modssc-1.2.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  20. {modssc-1.2.1 → modssc-1.2.2}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  21. {modssc-1.2.1 → modssc-1.2.2}/.github/ISSUE_TEMPLATE/new_method.yml +0 -0
  22. {modssc-1.2.1 → modssc-1.2.2}/.github/SECURITY.md +0 -0
  23. {modssc-1.2.1 → modssc-1.2.2}/.github/dependabot.yml +0 -0
  24. {modssc-1.2.1 → modssc-1.2.2}/.github/pull_request_template.md +0 -0
  25. {modssc-1.2.1 → modssc-1.2.2}/.gitignore +0 -0
  26. {modssc-1.2.1 → modssc-1.2.2}/.pre-commit-config.yaml +0 -0
  27. {modssc-1.2.1 → modssc-1.2.2}/CITATION.bib +0 -0
  28. {modssc-1.2.1 → modssc-1.2.2}/CITATION.cff +0 -0
  29. {modssc-1.2.1 → modssc-1.2.2}/LICENSE +0 -0
  30. {modssc-1.2.1 → modssc-1.2.2}/README.md +0 -0
  31. {modssc-1.2.1 → modssc-1.2.2}/codecov.yml +0 -0
  32. {modssc-1.2.1 → modssc-1.2.2}/docs/assets/logo.jpeg +0 -0
  33. {modssc-1.2.1 → modssc-1.2.2}/docs/development/architecture.md +0 -0
  34. {modssc-1.2.1 → modssc-1.2.2}/docs/development/contributing.md +0 -0
  35. {modssc-1.2.1 → modssc-1.2.2}/docs/development/release-process.md +0 -0
  36. {modssc-1.2.1 → modssc-1.2.2}/docs/examples/index.md +0 -0
  37. {modssc-1.2.1 → modssc-1.2.2}/docs/getting-started/choose-your-path.md +0 -0
  38. {modssc-1.2.1 → modssc-1.2.2}/docs/getting-started/concepts.md +0 -0
  39. {modssc-1.2.1 → modssc-1.2.2}/docs/getting-started/extras-and-platforms.md +0 -0
  40. {modssc-1.2.1 → modssc-1.2.2}/docs/getting-started/glossary.md +0 -0
  41. {modssc-1.2.1 → modssc-1.2.2}/docs/getting-started/installation.md +0 -0
  42. {modssc-1.2.1 → modssc-1.2.2}/docs/getting-started/quickstart.md +0 -0
  43. {modssc-1.2.1 → modssc-1.2.2}/docs/how-to/augmentation.md +0 -0
  44. {modssc-1.2.1 → modssc-1.2.2}/docs/how-to/bench-cookbook.md +0 -0
  45. {modssc-1.2.1 → modssc-1.2.2}/docs/how-to/common-errors.md +0 -0
  46. {modssc-1.2.1 → modssc-1.2.2}/docs/how-to/datasets.md +0 -0
  47. {modssc-1.2.1 → modssc-1.2.2}/docs/how-to/evaluation.md +0 -0
  48. {modssc-1.2.1 → modssc-1.2.2}/docs/how-to/graph.md +0 -0
  49. {modssc-1.2.1 → modssc-1.2.2}/docs/how-to/hpo.md +0 -0
  50. {modssc-1.2.1 → modssc-1.2.2}/docs/how-to/preprocess.md +0 -0
  51. {modssc-1.2.1 → modssc-1.2.2}/docs/how-to/reproducibility.md +0 -0
  52. {modssc-1.2.1 → modssc-1.2.2}/docs/how-to/sampling.md +0 -0
  53. {modssc-1.2.1 → modssc-1.2.2}/docs/how-to/troubleshooting.md +0 -0
  54. {modssc-1.2.1 → modssc-1.2.2}/docs/how-to/views.md +0 -0
  55. {modssc-1.2.1 → modssc-1.2.2}/docs/javascripts/sidebar-toggle.js +0 -0
  56. {modssc-1.2.1 → modssc-1.2.2}/docs/notebooks/index.md +0 -0
  57. {modssc-1.2.1 → modssc-1.2.2}/docs/reference/api/data-augmentation.md +0 -0
  58. {modssc-1.2.1 → modssc-1.2.2}/docs/reference/api/data-loader.md +0 -0
  59. {modssc-1.2.1 → modssc-1.2.2}/docs/reference/api/device.md +0 -0
  60. {modssc-1.2.1 → modssc-1.2.2}/docs/reference/api/evaluation.md +0 -0
  61. {modssc-1.2.1 → modssc-1.2.2}/docs/reference/api/graph.md +0 -0
  62. {modssc-1.2.1 → modssc-1.2.2}/docs/reference/api/hpo.md +0 -0
  63. {modssc-1.2.1 → modssc-1.2.2}/docs/reference/api/index.md +0 -0
  64. {modssc-1.2.1 → modssc-1.2.2}/docs/reference/api/inductive.md +0 -0
  65. {modssc-1.2.1 → modssc-1.2.2}/docs/reference/api/logging.md +0 -0
  66. {modssc-1.2.1 → modssc-1.2.2}/docs/reference/api/preprocess.md +0 -0
  67. {modssc-1.2.1 → modssc-1.2.2}/docs/reference/api/sampling.md +0 -0
  68. {modssc-1.2.1 → modssc-1.2.2}/docs/reference/api/supervised.md +0 -0
  69. {modssc-1.2.1 → modssc-1.2.2}/docs/reference/api/transductive.md +0 -0
  70. {modssc-1.2.1 → modssc-1.2.2}/docs/reference/api/views.md +0 -0
  71. {modssc-1.2.1 → modssc-1.2.2}/docs/reference/benchmarks.md +0 -0
  72. {modssc-1.2.1 → modssc-1.2.2}/docs/reference/catalogs.md +0 -0
  73. {modssc-1.2.1 → modssc-1.2.2}/docs/reference/cli.md +0 -0
  74. {modssc-1.2.1 → modssc-1.2.2}/docs/reference/configuration.md +0 -0
  75. {modssc-1.2.1 → modssc-1.2.2}/docs/reference/paper-methods.md +0 -0
  76. {modssc-1.2.1 → modssc-1.2.2}/docs/stylesheets/extra.css +0 -0
  77. {modssc-1.2.1 → modssc-1.2.2}/docs/tutorials/inductive-toy.md +0 -0
  78. {modssc-1.2.1 → modssc-1.2.2}/docs/tutorials/transductive-toy.md +0 -0
  79. {modssc-1.2.1 → modssc-1.2.2}/examples/00_inductive_toy_pseudo_label.py +0 -0
  80. {modssc-1.2.1 → modssc-1.2.2}/examples/01_evaluation_quickstart.py +0 -0
  81. {modssc-1.2.1 → modssc-1.2.2}/examples/01_transductive_toy_label_propagation.py +0 -0
  82. {modssc-1.2.1 → modssc-1.2.2}/examples/02_hpo_primitives_quickstart.py +0 -0
  83. {modssc-1.2.1 → modssc-1.2.2}/examples/02_sampling_toy_holdout.py +0 -0
  84. {modssc-1.2.1 → modssc-1.2.2}/examples/03_cli_smoke.py +0 -0
  85. {modssc-1.2.1 → modssc-1.2.2}/examples/04_inductive_cotraining_two_views.py +0 -0
  86. {modssc-1.2.1 → modssc-1.2.2}/mkdocs.yml +0 -0
  87. {modssc-1.2.1 → modssc-1.2.2}/modssc_cache/.gitkeep +0 -0
  88. {modssc-1.2.1 → modssc-1.2.2}/modssc_cache/datasets/.gitkeep +0 -0
  89. {modssc-1.2.1 → modssc-1.2.2}/modssc_cache/splits/.gitkeep +0 -0
  90. {modssc-1.2.1 → modssc-1.2.2}/notebooks/00_cli_tour.ipynb +0 -0
  91. {modssc-1.2.1 → modssc-1.2.2}/notebooks/01_data_loader_end_to_end.ipynb +0 -0
  92. {modssc-1.2.1 → modssc-1.2.2}/notebooks/02_sampling_quickstart.ipynb +0 -0
  93. {modssc-1.2.1 → modssc-1.2.2}/notebooks/03_preprocess_quickstart.ipynb +0 -0
  94. {modssc-1.2.1 → modssc-1.2.2}/notebooks/04_data_augmentation_quickstart.ipynb +0 -0
  95. {modssc-1.2.1 → modssc-1.2.2}/notebooks/05_views_quickstart.ipynb +0 -0
  96. {modssc-1.2.1 → modssc-1.2.2}/notebooks/06_graph_quickstart.ipynb +0 -0
  97. {modssc-1.2.1 → modssc-1.2.2}/notebooks/07_supervised_quickstart.ipynb +0 -0
  98. {modssc-1.2.1 → modssc-1.2.2}/notebooks/08_inductive_quickstart.ipynb +0 -0
  99. {modssc-1.2.1 → modssc-1.2.2}/notebooks/09_transductive_quickstart.ipynb +0 -0
  100. {modssc-1.2.1 → modssc-1.2.2}/notebooks/10_hpo_bench_smoke.ipynb +0 -0
  101. {modssc-1.2.1 → modssc-1.2.2}/notebooks/11_bench_run_anatomy.ipynb +0 -0
  102. {modssc-1.2.1 → modssc-1.2.2}/notebooks/12_optional_extras_and_modalities.ipynb +0 -0
  103. {modssc-1.2.1 → modssc-1.2.2}/notebooks/13_official_vs_custom_splits.ipynb +0 -0
  104. {modssc-1.2.1 → modssc-1.2.2}/pyproject.toml +0 -0
  105. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/__init__.py +0 -0
  106. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/__main__.py +0 -0
  107. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/backends/__init__.py +0 -0
  108. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/backends/torch_common.py +0 -0
  109. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/cache/__init__.py +0 -0
  110. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/cache/model.py +0 -0
  111. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/cli/__init__.py +0 -0
  112. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/cli/_utils.py +0 -0
  113. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/cli/app.py +0 -0
  114. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/cli/augmentation.py +0 -0
  115. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/cli/datasets.py +0 -0
  116. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/cli/evaluation.py +0 -0
  117. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/cli/graph.py +0 -0
  118. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/cli/inductive.py +0 -0
  119. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/cli/logging.py +0 -0
  120. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/cli/preprocess.py +0 -0
  121. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/cli/sampling.py +0 -0
  122. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/cli/supervised.py +0 -0
  123. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/cli/transductive.py +0 -0
  124. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_augmentation/__init__.py +0 -0
  125. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_augmentation/api.py +0 -0
  126. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_augmentation/errors.py +0 -0
  127. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_augmentation/ops/__init__.py +0 -0
  128. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_augmentation/ops/audio.py +0 -0
  129. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_augmentation/ops/base.py +0 -0
  130. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_augmentation/ops/common.py +0 -0
  131. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_augmentation/ops/core.py +0 -0
  132. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_augmentation/ops/graph.py +0 -0
  133. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_augmentation/ops/tabular.py +0 -0
  134. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_augmentation/ops/text.py +0 -0
  135. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_augmentation/ops/vision.py +0 -0
  136. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_augmentation/optional.py +0 -0
  137. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_augmentation/plan.py +0 -0
  138. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_augmentation/registry.py +0 -0
  139. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_augmentation/types.py +0 -0
  140. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_augmentation/utils.py +0 -0
  141. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_loader/__init__.py +0 -0
  142. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_loader/api.py +0 -0
  143. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_loader/cache.py +0 -0
  144. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_loader/catalog/__init__.py +0 -0
  145. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_loader/catalog/audio.py +0 -0
  146. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_loader/catalog/graph.py +0 -0
  147. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_loader/catalog/tabular.py +0 -0
  148. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_loader/catalog/text.py +0 -0
  149. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_loader/catalog/toy.py +0 -0
  150. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_loader/catalog/vision.py +0 -0
  151. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_loader/errors.py +0 -0
  152. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_loader/formats.py +0 -0
  153. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_loader/manifest.py +0 -0
  154. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_loader/numpy_adapter.py +0 -0
  155. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_loader/optional.py +0 -0
  156. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_loader/providers/__init__.py +0 -0
  157. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_loader/providers/base.py +0 -0
  158. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_loader/providers/common.py +0 -0
  159. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_loader/providers/hf.py +0 -0
  160. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_loader/providers/openml.py +0 -0
  161. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_loader/providers/pyg.py +0 -0
  162. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_loader/providers/tfds.py +0 -0
  163. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_loader/providers/torchaudio.py +0 -0
  164. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_loader/providers/torchvision.py +0 -0
  165. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_loader/providers/toy.py +0 -0
  166. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_loader/services/__init__.py +0 -0
  167. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_loader/services/service.py +0 -0
  168. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_loader/storage/__init__.py +0 -0
  169. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_loader/storage/files.py +0 -0
  170. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_loader/storage/json.py +0 -0
  171. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_loader/types.py +0 -0
  172. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/data_loader/uri.py +0 -0
  173. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/dependencies/__init__.py +0 -0
  174. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/dependencies/errors.py +0 -0
  175. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/dependencies/optional.py +0 -0
  176. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/evaluation/__init__.py +0 -0
  177. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/evaluation/metrics.py +0 -0
  178. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/__init__.py +0 -0
  179. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/adapters/__init__.py +0 -0
  180. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/adapters/pyg.py +0 -0
  181. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/artifacts.py +0 -0
  182. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/cache.py +0 -0
  183. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/construction/__init__.py +0 -0
  184. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/construction/api.py +0 -0
  185. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/construction/backends/__init__.py +0 -0
  186. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/construction/backends/faiss_backend.py +0 -0
  187. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/construction/backends/numpy_backend.py +0 -0
  188. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/construction/backends/sklearn_backend.py +0 -0
  189. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/construction/backends/torch_backend.py +0 -0
  190. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/construction/builder.py +0 -0
  191. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/construction/ops/__init__.py +0 -0
  192. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/construction/ops/normalize.py +0 -0
  193. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/construction/ops/self_loops.py +0 -0
  194. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/construction/ops/symmetrize.py +0 -0
  195. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/construction/ops/weights.py +0 -0
  196. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/construction/schemes/__init__.py +0 -0
  197. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/construction/schemes/anchor.py +0 -0
  198. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/construction/services/__init__.py +0 -0
  199. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/construction/services/service.py +0 -0
  200. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/errors.py +0 -0
  201. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/featurization/__init__.py +0 -0
  202. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/featurization/api.py +0 -0
  203. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/featurization/node2vec.py +0 -0
  204. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/featurization/ops/__init__.py +0 -0
  205. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/featurization/ops/adjacency.py +0 -0
  206. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/featurization/views/__init__.py +0 -0
  207. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/featurization/views/attr.py +0 -0
  208. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/featurization/views/diffusion.py +0 -0
  209. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/featurization/views/struct.py +0 -0
  210. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/fingerprint.py +0 -0
  211. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/masks.py +0 -0
  212. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/optional.py +0 -0
  213. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/specs.py +0 -0
  214. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/graph/validation.py +0 -0
  215. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/hpo/__init__.py +0 -0
  216. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/hpo/patching.py +0 -0
  217. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/hpo/samplers.py +0 -0
  218. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/hpo/space.py +0 -0
  219. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/hpo/types.py +0 -0
  220. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/__init__.py +0 -0
  221. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/adapters/__init__.py +0 -0
  222. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/adapters/numpy.py +0 -0
  223. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/adapters/torch.py +0 -0
  224. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/backends/__init__.py +0 -0
  225. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/backends/torch_backend.py +0 -0
  226. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/base.py +0 -0
  227. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/deep/__init__.py +0 -0
  228. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/deep/bundle_factories/__init__.py +0 -0
  229. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/deep/bundle_factories/factory.py +0 -0
  230. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/deep/bundles.py +0 -0
  231. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/deep/types.py +0 -0
  232. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/deep/validation.py +0 -0
  233. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/errors.py +0 -0
  234. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/methods/__init__.py +0 -0
  235. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/methods/adamatch.py +0 -0
  236. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/methods/adsh.py +0 -0
  237. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/methods/co_training.py +0 -0
  238. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/methods/comatch.py +0 -0
  239. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/methods/daso.py +0 -0
  240. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/methods/deep_co_training.py +0 -0
  241. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/methods/deep_utils.py +0 -0
  242. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/methods/defixmatch.py +0 -0
  243. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/methods/democratic_co_learning.py +0 -0
  244. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/methods/fixmatch.py +0 -0
  245. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/methods/flexmatch.py +0 -0
  246. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/methods/free_match.py +0 -0
  247. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/methods/helpers/__init__.py +0 -0
  248. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/methods/helpers/classifier_bridge.py +0 -0
  249. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/methods/helpers/torch_support.py +0 -0
  250. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/methods/mean_teacher.py +0 -0
  251. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/methods/meta_pseudo_labels.py +0 -0
  252. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/methods/mixmatch.py +0 -0
  253. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/methods/noisy_student.py +0 -0
  254. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/methods/pi_model.py +0 -0
  255. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/methods/pseudo_label.py +0 -0
  256. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/methods/s4vm.py +0 -0
  257. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/methods/self_training.py +0 -0
  258. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/methods/setred.py +0 -0
  259. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/methods/simclr_v2.py +0 -0
  260. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/methods/softmatch.py +0 -0
  261. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/methods/supervised.py +0 -0
  262. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/methods/temporal_ensembling.py +0 -0
  263. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/methods/tri_training.py +0 -0
  264. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/methods/trinet.py +0 -0
  265. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/methods/uda.py +0 -0
  266. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/methods/utils.py +0 -0
  267. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/methods/vat.py +0 -0
  268. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/optional.py +0 -0
  269. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/registry.py +0 -0
  270. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/seed.py +0 -0
  271. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/types.py +0 -0
  272. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/inductive/validation.py +0 -0
  273. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/__init__.py +0 -0
  274. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/api.py +0 -0
  275. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/cache.py +0 -0
  276. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/catalog.py +0 -0
  277. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/errors.py +0 -0
  278. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/fingerprint.py +0 -0
  279. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/models.py +0 -0
  280. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/models_backends/__init__.py +0 -0
  281. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/models_backends/base.py +0 -0
  282. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/models_backends/open_clip.py +0 -0
  283. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/models_backends/sentence_transformers.py +0 -0
  284. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/models_backends/stub.py +0 -0
  285. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/models_backends/torchaudio_wav2vec2.py +0 -0
  286. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/models_backends/torchvision_image.py +0 -0
  287. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/numpy_adapter.py +0 -0
  288. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/optional.py +0 -0
  289. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/plan.py +0 -0
  290. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/registry.py +0 -0
  291. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/services/__init__.py +0 -0
  292. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/services/pipeline.py +0 -0
  293. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/__init__.py +0 -0
  294. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/audio/__init__.py +0 -0
  295. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/audio/load_waveform.py +0 -0
  296. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/audio/spectrogram.py +0 -0
  297. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/audio/wav2vec2.py +0 -0
  298. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/base.py +0 -0
  299. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/core/__init__.py +0 -0
  300. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/core/cast_dtype.py +0 -0
  301. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/core/cast_fp16.py +0 -0
  302. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/core/copy_raw.py +0 -0
  303. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/core/ensure_2d.py +0 -0
  304. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/core/pca.py +0 -0
  305. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/core/random_projection.py +0 -0
  306. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/core/row_normalize.py +0 -0
  307. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/core/to_numpy.py +0 -0
  308. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/core/to_torch.py +0 -0
  309. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/core/vae.py +0 -0
  310. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/embeddings/__init__.py +0 -0
  311. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/embeddings/auto.py +0 -0
  312. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/embeddings/common.py +0 -0
  313. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/graph/__init__.py +0 -0
  314. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/graph/attach_edge_weight.py +0 -0
  315. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/graph/edge_sparsify.py +0 -0
  316. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/graph/node2vec.py +0 -0
  317. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/graph/sparse_adjacency.py +0 -0
  318. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/labels/__init__.py +0 -0
  319. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/labels/encode.py +0 -0
  320. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/labels/ensure_onehot.py +0 -0
  321. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/labels/to_numpy.py +0 -0
  322. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/labels/to_torch.py +0 -0
  323. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/tabular/__init__.py +0 -0
  324. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/tabular/impute.py +0 -0
  325. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/tabular/one_hot.py +0 -0
  326. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/tabular/standard_scaler.py +0 -0
  327. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/text/__init__.py +0 -0
  328. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/text/ensure_strings.py +0 -0
  329. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/text/hash_tokenizer.py +0 -0
  330. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/text/sentence_transformer.py +0 -0
  331. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/text/tfidf.py +0 -0
  332. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/text/vocab_tokenizer.py +0 -0
  333. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/vision/__init__.py +0 -0
  334. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/vision/aet.py +0 -0
  335. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/vision/channels_order.py +0 -0
  336. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/vision/ensure_num_channels.py +0 -0
  337. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/vision/layout.py +0 -0
  338. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/vision/normalize.py +0 -0
  339. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/vision/openclip.py +0 -0
  340. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/vision/resize.py +0 -0
  341. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/vision/squeeze.py +0 -0
  342. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/steps/vision/zca_whitening.py +0 -0
  343. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/store.py +0 -0
  344. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/preprocess/types.py +0 -0
  345. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/runtime/__init__.py +0 -0
  346. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/runtime/device.py +0 -0
  347. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/runtime/logging.py +0 -0
  348. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/runtime/paths.py +0 -0
  349. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/sampling/__init__.py +0 -0
  350. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/sampling/api.py +0 -0
  351. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/sampling/common.py +0 -0
  352. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/sampling/errors.py +0 -0
  353. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/sampling/fingerprint.py +0 -0
  354. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/sampling/imbalance.py +0 -0
  355. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/sampling/labeling.py +0 -0
  356. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/sampling/plan.py +0 -0
  357. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/sampling/result.py +0 -0
  358. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/sampling/services/__init__.py +0 -0
  359. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/sampling/services/service.py +0 -0
  360. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/sampling/splitters.py +0 -0
  361. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/sampling/stats.py +0 -0
  362. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/sampling/storage.py +0 -0
  363. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/__init__.py +0 -0
  364. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/api.py +0 -0
  365. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/backends/__init__.py +0 -0
  366. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/backends/numpy/__init__.py +0 -0
  367. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/backends/numpy/knn.py +0 -0
  368. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/backends/sklearn/__init__.py +0 -0
  369. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/backends/sklearn/common.py +0 -0
  370. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/backends/sklearn/extra_trees.py +0 -0
  371. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/backends/sklearn/gradient_boosting.py +0 -0
  372. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/backends/sklearn/knn.py +0 -0
  373. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/backends/sklearn/linear_svm.py +0 -0
  374. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/backends/sklearn/logreg.py +0 -0
  375. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/backends/sklearn/naive_bayes.py +0 -0
  376. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/backends/sklearn/random_forest.py +0 -0
  377. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/backends/sklearn/ridge.py +0 -0
  378. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/backends/sklearn/svm_rbf.py +0 -0
  379. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/backends/torch/__init__.py +0 -0
  380. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/backends/torch/audio_cnn.py +0 -0
  381. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/backends/torch/audio_cnn_scratch.py +0 -0
  382. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/backends/torch/audio_pretrained.py +0 -0
  383. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/backends/torch/common.py +0 -0
  384. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/backends/torch/graphsage_inductive.py +0 -0
  385. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/backends/torch/image_cnn.py +0 -0
  386. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/backends/torch/image_pretrained.py +0 -0
  387. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/backends/torch/knn.py +0 -0
  388. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/backends/torch/logreg.py +0 -0
  389. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/backends/torch/lstm_scratch.py +0 -0
  390. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/backends/torch/mlp.py +0 -0
  391. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/backends/torch/text_cnn.py +0 -0
  392. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/base.py +0 -0
  393. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/errors.py +0 -0
  394. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/optional.py +0 -0
  395. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/registry.py +0 -0
  396. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/registry_data.py +0 -0
  397. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/types.py +0 -0
  398. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/supervised/utils.py +0 -0
  399. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/__init__.py +0 -0
  400. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/adapters/__init__.py +0 -0
  401. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/adapters/pyg.py +0 -0
  402. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/backends/__init__.py +0 -0
  403. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/backends/numpy_backend.py +0 -0
  404. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/backends/torch_backend.py +0 -0
  405. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/base.py +0 -0
  406. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/errors.py +0 -0
  407. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/methods/__init__.py +0 -0
  408. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/methods/classic/__init__.py +0 -0
  409. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/methods/classic/common.py +0 -0
  410. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/methods/classic/graph_mincuts.py +0 -0
  411. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/methods/classic/label_propagation.py +0 -0
  412. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/methods/classic/label_spreading.py +0 -0
  413. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/methods/classic/laplace_learning.py +0 -0
  414. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/methods/classic/lazy_random_walk.py +0 -0
  415. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/methods/classic/tsvm.py +0 -0
  416. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/methods/gnn/__init__.py +0 -0
  417. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/methods/gnn/appnp.py +0 -0
  418. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/methods/gnn/chebnet.py +0 -0
  419. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/methods/gnn/gat.py +0 -0
  420. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/methods/gnn/gcn.py +0 -0
  421. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/methods/gnn/gcnii.py +0 -0
  422. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/methods/gnn/grafn.py +0 -0
  423. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/methods/gnn/grand.py +0 -0
  424. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/methods/gnn/graphhop.py +0 -0
  425. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/methods/gnn/graphsage.py +0 -0
  426. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/methods/gnn/h_gcn.py +0 -0
  427. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/methods/gnn/n_gcn.py +0 -0
  428. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/methods/gnn/planetoid.py +0 -0
  429. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/methods/gnn/sgc.py +0 -0
  430. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/methods/pde/__init__.py +0 -0
  431. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/methods/pde/p_laplace_learning.py +0 -0
  432. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/methods/pde/poisson_learning.py +0 -0
  433. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/methods/pde/poisson_mbo.py +0 -0
  434. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/methods/utils.py +0 -0
  435. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/operators/__init__.py +0 -0
  436. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/operators/clamp.py +0 -0
  437. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/operators/laplacian.py +0 -0
  438. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/operators/normalize.py +0 -0
  439. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/operators/spmm.py +0 -0
  440. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/optional.py +0 -0
  441. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/registry.py +0 -0
  442. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/solvers/__init__.py +0 -0
  443. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/solvers/cg.py +0 -0
  444. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/solvers/fixed_point.py +0 -0
  445. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/types.py +0 -0
  446. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/transductive/validation.py +0 -0
  447. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/utils/__init__.py +0 -0
  448. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/utils/imports.py +0 -0
  449. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/utils/io.py +0 -0
  450. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/utils/numpy.py +0 -0
  451. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/utils/registry.py +0 -0
  452. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/utils/seed.py +0 -0
  453. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/utils/shape.py +0 -0
  454. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/views/__init__.py +0 -0
  455. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/views/api.py +0 -0
  456. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/views/errors.py +0 -0
  457. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/views/plan.py +0 -0
  458. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/views/services/__init__.py +0 -0
  459. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/views/services/service.py +0 -0
  460. {modssc-1.2.1 → modssc-1.2.2}/src/modssc/views/types.py +0 -0
  461. {modssc-1.2.1 → modssc-1.2.2}/tests/__init__.py +0 -0
  462. {modssc-1.2.1 → modssc-1.2.2}/tests/_main_datasets.py +0 -0
  463. {modssc-1.2.1 → modssc-1.2.2}/tests/backends/__init__.py +0 -0
  464. {modssc-1.2.1 → modssc-1.2.2}/tests/backends/test___init__.py +0 -0
  465. {modssc-1.2.1 → modssc-1.2.2}/tests/backends/test_torch_common.py +0 -0
  466. {modssc-1.2.1 → modssc-1.2.2}/tests/bench/test_graph_summary.py +0 -0
  467. {modssc-1.2.1 → modssc-1.2.2}/tests/bench/test_import_tools.py +0 -0
  468. {modssc-1.2.1 → modssc-1.2.2}/tests/bench/test_reporting_info.py +0 -0
  469. {modssc-1.2.1 → modssc-1.2.2}/tests/bench/test_seed_sweep.py +0 -0
  470. {modssc-1.2.1 → modssc-1.2.2}/tests/cache/__init__.py +0 -0
  471. {modssc-1.2.1 → modssc-1.2.2}/tests/cache/test___init__.py +0 -0
  472. {modssc-1.2.1 → modssc-1.2.2}/tests/cache/test_model.py +0 -0
  473. {modssc-1.2.1 → modssc-1.2.2}/tests/cli/__init__.py +0 -0
  474. {modssc-1.2.1 → modssc-1.2.2}/tests/cli/_augmentation_module.py +0 -0
  475. {modssc-1.2.1 → modssc-1.2.2}/tests/cli/_cache_commands.py +0 -0
  476. {modssc-1.2.1 → modssc-1.2.2}/tests/cli/_datasets_app.py +0 -0
  477. {modssc-1.2.1 → modssc-1.2.2}/tests/cli/test___init__.py +0 -0
  478. {modssc-1.2.1 → modssc-1.2.2}/tests/cli/test__utils.py +0 -0
  479. {modssc-1.2.1 → modssc-1.2.2}/tests/cli/test_app.py +0 -0
  480. {modssc-1.2.1 → modssc-1.2.2}/tests/cli/test_augmentation.py +0 -0
  481. {modssc-1.2.1 → modssc-1.2.2}/tests/cli/test_datasets.py +0 -0
  482. {modssc-1.2.1 → modssc-1.2.2}/tests/cli/test_evaluation.py +0 -0
  483. {modssc-1.2.1 → modssc-1.2.2}/tests/cli/test_graph.py +0 -0
  484. {modssc-1.2.1 → modssc-1.2.2}/tests/cli/test_inductive.py +0 -0
  485. {modssc-1.2.1 → modssc-1.2.2}/tests/cli/test_logging.py +0 -0
  486. {modssc-1.2.1 → modssc-1.2.2}/tests/cli/test_preprocess.py +0 -0
  487. {modssc-1.2.1 → modssc-1.2.2}/tests/cli/test_sampling.py +0 -0
  488. {modssc-1.2.1 → modssc-1.2.2}/tests/cli/test_supervised.py +0 -0
  489. {modssc-1.2.1 → modssc-1.2.2}/tests/cli/test_transductive.py +0 -0
  490. {modssc-1.2.1 → modssc-1.2.2}/tests/data_augmentation/__init__.py +0 -0
  491. {modssc-1.2.1 → modssc-1.2.2}/tests/data_augmentation/_pipeline.py +0 -0
  492. {modssc-1.2.1 → modssc-1.2.2}/tests/data_augmentation/ops/__init__.py +0 -0
  493. {modssc-1.2.1 → modssc-1.2.2}/tests/data_augmentation/ops/_vision_numpy.py +0 -0
  494. {modssc-1.2.1 → modssc-1.2.2}/tests/data_augmentation/ops/test___init__.py +0 -0
  495. {modssc-1.2.1 → modssc-1.2.2}/tests/data_augmentation/ops/test_audio.py +0 -0
  496. {modssc-1.2.1 → modssc-1.2.2}/tests/data_augmentation/ops/test_base.py +0 -0
  497. {modssc-1.2.1 → modssc-1.2.2}/tests/data_augmentation/ops/test_common.py +0 -0
  498. {modssc-1.2.1 → modssc-1.2.2}/tests/data_augmentation/ops/test_core.py +0 -0
  499. {modssc-1.2.1 → modssc-1.2.2}/tests/data_augmentation/ops/test_graph.py +0 -0
  500. {modssc-1.2.1 → modssc-1.2.2}/tests/data_augmentation/ops/test_tabular.py +0 -0
  501. {modssc-1.2.1 → modssc-1.2.2}/tests/data_augmentation/ops/test_text.py +0 -0
  502. {modssc-1.2.1 → modssc-1.2.2}/tests/data_augmentation/ops/test_vision.py +0 -0
  503. {modssc-1.2.1 → modssc-1.2.2}/tests/data_augmentation/test___init__.py +0 -0
  504. {modssc-1.2.1 → modssc-1.2.2}/tests/data_augmentation/test_api.py +0 -0
  505. {modssc-1.2.1 → modssc-1.2.2}/tests/data_augmentation/test_errors.py +0 -0
  506. {modssc-1.2.1 → modssc-1.2.2}/tests/data_augmentation/test_optional.py +0 -0
  507. {modssc-1.2.1 → modssc-1.2.2}/tests/data_augmentation/test_plan.py +0 -0
  508. {modssc-1.2.1 → modssc-1.2.2}/tests/data_augmentation/test_registry.py +0 -0
  509. {modssc-1.2.1 → modssc-1.2.2}/tests/data_augmentation/test_types.py +0 -0
  510. {modssc-1.2.1 → modssc-1.2.2}/tests/data_augmentation/test_utils.py +0 -0
  511. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/__init__.py +0 -0
  512. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/_api_end_to_end.py +0 -0
  513. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/_api_meta.py +0 -0
  514. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/_fingerprint.py +0 -0
  515. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/catalog/__init__.py +0 -0
  516. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/catalog/test___init__.py +0 -0
  517. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/catalog/test_audio.py +0 -0
  518. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/catalog/test_graph.py +0 -0
  519. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/catalog/test_tabular.py +0 -0
  520. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/catalog/test_text.py +0 -0
  521. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/catalog/test_toy.py +0 -0
  522. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/catalog/test_vision.py +0 -0
  523. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/providers/__init__.py +0 -0
  524. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/providers/_stubs.py +0 -0
  525. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/providers/test___init__.py +0 -0
  526. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/providers/test_base.py +0 -0
  527. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/providers/test_common.py +0 -0
  528. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/providers/test_hf.py +0 -0
  529. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/providers/test_openml.py +0 -0
  530. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/providers/test_pyg.py +0 -0
  531. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/providers/test_tfds.py +0 -0
  532. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/providers/test_torchaudio.py +0 -0
  533. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/providers/test_torchvision.py +0 -0
  534. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/providers/test_toy.py +0 -0
  535. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/services/__init__.py +0 -0
  536. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/services/test___init__.py +0 -0
  537. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/services/test_service.py +0 -0
  538. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/storage/__init__.py +0 -0
  539. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/storage/_edges_masks.py +0 -0
  540. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/storage/_roundtrip.py +0 -0
  541. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/storage/test___init__.py +0 -0
  542. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/storage/test_files.py +0 -0
  543. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/storage/test_json.py +0 -0
  544. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/test___init__.py +0 -0
  545. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/test_api.py +0 -0
  546. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/test_cache.py +0 -0
  547. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/test_errors.py +0 -0
  548. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/test_formats.py +0 -0
  549. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/test_manifest.py +0 -0
  550. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/test_numpy_adapter.py +0 -0
  551. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/test_optional.py +0 -0
  552. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/test_types.py +0 -0
  553. {modssc-1.2.1 → modssc-1.2.2}/tests/data_loader/test_uri.py +0 -0
  554. {modssc-1.2.1 → modssc-1.2.2}/tests/dependencies/__init__.py +0 -0
  555. {modssc-1.2.1 → modssc-1.2.2}/tests/dependencies/test___init__.py +0 -0
  556. {modssc-1.2.1 → modssc-1.2.2}/tests/dependencies/test_errors.py +0 -0
  557. {modssc-1.2.1 → modssc-1.2.2}/tests/dependencies/test_optional.py +0 -0
  558. {modssc-1.2.1 → modssc-1.2.2}/tests/evaluation/__init__.py +0 -0
  559. {modssc-1.2.1 → modssc-1.2.2}/tests/evaluation/test___init__.py +0 -0
  560. {modssc-1.2.1 → modssc-1.2.2}/tests/evaluation/test_metrics.py +0 -0
  561. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/__init__.py +0 -0
  562. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/adapters/__init__.py +0 -0
  563. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/adapters/test___init__.py +0 -0
  564. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/adapters/test_pyg.py +0 -0
  565. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/construction/__init__.py +0 -0
  566. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/construction/_build_graph.py +0 -0
  567. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/construction/backends/__init__.py +0 -0
  568. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/construction/backends/test___init__.py +0 -0
  569. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/construction/backends/test_faiss_backend.py +0 -0
  570. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/construction/backends/test_numpy_backend.py +0 -0
  571. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/construction/backends/test_sklearn_backend.py +0 -0
  572. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/construction/backends/test_torch_backend.py +0 -0
  573. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/construction/ops/__init__.py +0 -0
  574. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/construction/ops/test___init__.py +0 -0
  575. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/construction/ops/test_normalize.py +0 -0
  576. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/construction/ops/test_self_loops.py +0 -0
  577. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/construction/ops/test_symmetrize.py +0 -0
  578. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/construction/ops/test_weights.py +0 -0
  579. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/construction/schemes/__init__.py +0 -0
  580. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/construction/schemes/test___init__.py +0 -0
  581. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/construction/schemes/test_anchor.py +0 -0
  582. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/construction/services/__init__.py +0 -0
  583. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/construction/services/test___init__.py +0 -0
  584. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/construction/services/test_service.py +0 -0
  585. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/construction/test___init__.py +0 -0
  586. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/construction/test_api.py +0 -0
  587. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/construction/test_builder.py +0 -0
  588. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/featurization/__init__.py +0 -0
  589. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/featurization/_views.py +0 -0
  590. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/featurization/ops/__init__.py +0 -0
  591. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/featurization/ops/test___init__.py +0 -0
  592. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/featurization/ops/test_adjacency.py +0 -0
  593. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/featurization/test___init__.py +0 -0
  594. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/featurization/test_api.py +0 -0
  595. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/featurization/test_node2vec.py +0 -0
  596. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/featurization/views/__init__.py +0 -0
  597. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/featurization/views/test___init__.py +0 -0
  598. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/featurization/views/test_attr.py +0 -0
  599. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/featurization/views/test_diffusion.py +0 -0
  600. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/featurization/views/test_struct.py +0 -0
  601. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/test___init__.py +0 -0
  602. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/test_artifacts.py +0 -0
  603. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/test_cache.py +0 -0
  604. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/test_errors.py +0 -0
  605. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/test_fingerprint.py +0 -0
  606. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/test_masks.py +0 -0
  607. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/test_optional.py +0 -0
  608. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/test_specs.py +0 -0
  609. {modssc-1.2.1 → modssc-1.2.2}/tests/graph/test_validation.py +0 -0
  610. {modssc-1.2.1 → modssc-1.2.2}/tests/hpo/__init__.py +0 -0
  611. {modssc-1.2.1 → modssc-1.2.2}/tests/hpo/test___init__.py +0 -0
  612. {modssc-1.2.1 → modssc-1.2.2}/tests/hpo/test_patching.py +0 -0
  613. {modssc-1.2.1 → modssc-1.2.2}/tests/hpo/test_samplers.py +0 -0
  614. {modssc-1.2.1 → modssc-1.2.2}/tests/hpo/test_space.py +0 -0
  615. {modssc-1.2.1 → modssc-1.2.2}/tests/hpo/test_types.py +0 -0
  616. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/__init__.py +0 -0
  617. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/adapters/__init__.py +0 -0
  618. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/adapters/test___init__.py +0 -0
  619. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/adapters/test_numpy.py +0 -0
  620. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/adapters/test_torch.py +0 -0
  621. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/backends/__init__.py +0 -0
  622. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/backends/test___init__.py +0 -0
  623. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/backends/test_torch_backend.py +0 -0
  624. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/conftest.py +0 -0
  625. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/deep/__init__.py +0 -0
  626. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/deep/bundle_factories/__init__.py +0 -0
  627. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/deep/bundle_factories/test___init__.py +0 -0
  628. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/deep/bundle_factories/test_factory.py +0 -0
  629. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/deep/test___init__.py +0 -0
  630. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/deep/test_bundles.py +0 -0
  631. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/deep/test_types.py +0 -0
  632. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/deep/test_validation.py +0 -0
  633. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/dummy_registry_module.py +0 -0
  634. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/__init__.py +0 -0
  635. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/_adsh_predict_proba.py +0 -0
  636. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/_co_training_helpers.py +0 -0
  637. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/_methods_classic.py +0 -0
  638. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/_methods_deep.py +0 -0
  639. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/_supervised_method.py +0 -0
  640. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/_tri_training_coverage.py +0 -0
  641. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/helpers/__init__.py +0 -0
  642. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/helpers/test___init__.py +0 -0
  643. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/helpers/test_classifier_bridge.py +0 -0
  644. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/helpers/test_torch_support.py +0 -0
  645. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/test___init__.py +0 -0
  646. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/test_adamatch.py +0 -0
  647. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/test_adsh.py +0 -0
  648. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/test_co_training.py +0 -0
  649. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/test_comatch.py +0 -0
  650. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/test_daso.py +0 -0
  651. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/test_deep_co_training.py +0 -0
  652. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/test_deep_utils.py +0 -0
  653. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/test_defixmatch.py +0 -0
  654. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/test_democratic_co_learning.py +0 -0
  655. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/test_fixmatch.py +0 -0
  656. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/test_flexmatch.py +0 -0
  657. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/test_free_match.py +0 -0
  658. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/test_mean_teacher.py +0 -0
  659. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/test_meta_pseudo_labels.py +0 -0
  660. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/test_mixmatch.py +0 -0
  661. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/test_noisy_student.py +0 -0
  662. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/test_pi_model.py +0 -0
  663. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/test_pseudo_label.py +0 -0
  664. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/test_s4vm.py +0 -0
  665. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/test_self_training.py +0 -0
  666. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/test_setred.py +0 -0
  667. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/test_simclr_v2.py +0 -0
  668. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/test_softmatch.py +0 -0
  669. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/test_supervised.py +0 -0
  670. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/test_temporal_ensembling.py +0 -0
  671. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/test_tri_training.py +0 -0
  672. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/test_trinet.py +0 -0
  673. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/test_uda.py +0 -0
  674. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/test_utils.py +0 -0
  675. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/methods/test_vat.py +0 -0
  676. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/test___init__.py +0 -0
  677. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/test_base.py +0 -0
  678. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/test_errors.py +0 -0
  679. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/test_optional.py +0 -0
  680. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/test_registry.py +0 -0
  681. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/test_seed.py +0 -0
  682. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/test_types.py +0 -0
  683. {modssc-1.2.1 → modssc-1.2.2}/tests/inductive/test_validation.py +0 -0
  684. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/__init__.py +0 -0
  685. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/_utils.py +0 -0
  686. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/models_backends/__init__.py +0 -0
  687. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/models_backends/test___init__.py +0 -0
  688. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/models_backends/test_base.py +0 -0
  689. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/models_backends/test_open_clip.py +0 -0
  690. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/models_backends/test_sentence_transformers.py +0 -0
  691. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/models_backends/test_stub.py +0 -0
  692. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/models_backends/test_torchaudio_wav2vec2.py +0 -0
  693. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/models_backends/test_torchvision_image.py +0 -0
  694. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/services/__init__.py +0 -0
  695. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/services/test___init__.py +0 -0
  696. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/services/test_pipeline.py +0 -0
  697. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/__init__.py +0 -0
  698. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/_embeddings_graph.py +0 -0
  699. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/audio/__init__.py +0 -0
  700. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/audio/_load_waveform_transform.py +0 -0
  701. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/audio/test___init__.py +0 -0
  702. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/audio/test_load_waveform.py +0 -0
  703. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/audio/test_spectrogram.py +0 -0
  704. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/audio/test_wav2vec2.py +0 -0
  705. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/core/__init__.py +0 -0
  706. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/core/test___init__.py +0 -0
  707. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/core/test_cast_dtype.py +0 -0
  708. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/core/test_cast_fp16.py +0 -0
  709. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/core/test_copy_raw.py +0 -0
  710. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/core/test_ensure_2d.py +0 -0
  711. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/core/test_pca.py +0 -0
  712. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/core/test_random_projection.py +0 -0
  713. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/core/test_row_normalize.py +0 -0
  714. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/core/test_to_numpy.py +0 -0
  715. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/core/test_to_torch.py +0 -0
  716. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/core/test_vae.py +0 -0
  717. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/embeddings/__init__.py +0 -0
  718. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/embeddings/test___init__.py +0 -0
  719. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/embeddings/test_auto.py +0 -0
  720. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/embeddings/test_common.py +0 -0
  721. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/graph/__init__.py +0 -0
  722. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/graph/test___init__.py +0 -0
  723. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/graph/test_attach_edge_weight.py +0 -0
  724. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/graph/test_dgi.py +0 -0
  725. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/graph/test_edge_sparsify.py +0 -0
  726. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/graph/test_node2vec.py +0 -0
  727. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/graph/test_sparse_adjacency.py +0 -0
  728. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/labels/__init__.py +0 -0
  729. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/labels/test___init__.py +0 -0
  730. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/labels/test_encode.py +0 -0
  731. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/labels/test_ensure_onehot.py +0 -0
  732. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/labels/test_to_numpy.py +0 -0
  733. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/labels/test_to_torch.py +0 -0
  734. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/tabular/__init__.py +0 -0
  735. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/tabular/test___init__.py +0 -0
  736. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/tabular/test_impute.py +0 -0
  737. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/tabular/test_one_hot.py +0 -0
  738. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/tabular/test_standard_scaler.py +0 -0
  739. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/test___init__.py +0 -0
  740. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/test_base.py +0 -0
  741. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/text/__init__.py +0 -0
  742. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/text/test___init__.py +0 -0
  743. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/text/test_ensure_strings.py +0 -0
  744. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/text/test_hash_tokenizer.py +0 -0
  745. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/text/test_sentence_transformer.py +0 -0
  746. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/text/test_tfidf.py +0 -0
  747. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/text/test_vocab_tokenizer.py +0 -0
  748. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/vision/__init__.py +0 -0
  749. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/vision/test___init__.py +0 -0
  750. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/vision/test_aet.py +0 -0
  751. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/vision/test_channels_order.py +0 -0
  752. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/vision/test_ensure_num_channels.py +0 -0
  753. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/vision/test_layout.py +0 -0
  754. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/vision/test_normalize.py +0 -0
  755. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/vision/test_openclip.py +0 -0
  756. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/vision/test_resize.py +0 -0
  757. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/vision/test_squeeze.py +0 -0
  758. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/steps/vision/test_zca_whitening.py +0 -0
  759. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/test___init__.py +0 -0
  760. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/test_api.py +0 -0
  761. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/test_cache.py +0 -0
  762. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/test_catalog.py +0 -0
  763. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/test_errors.py +0 -0
  764. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/test_fingerprint.py +0 -0
  765. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/test_models.py +0 -0
  766. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/test_numpy_adapter.py +0 -0
  767. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/test_optional.py +0 -0
  768. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/test_plan.py +0 -0
  769. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/test_registry.py +0 -0
  770. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/test_store.py +0 -0
  771. {modssc-1.2.1 → modssc-1.2.2}/tests/preprocess/test_types.py +0 -0
  772. {modssc-1.2.1 → modssc-1.2.2}/tests/runtime/__init__.py +0 -0
  773. {modssc-1.2.1 → modssc-1.2.2}/tests/runtime/test___init__.py +0 -0
  774. {modssc-1.2.1 → modssc-1.2.2}/tests/runtime/test_device.py +0 -0
  775. {modssc-1.2.1 → modssc-1.2.2}/tests/runtime/test_logging.py +0 -0
  776. {modssc-1.2.1 → modssc-1.2.2}/tests/runtime/test_paths.py +0 -0
  777. {modssc-1.2.1 → modssc-1.2.2}/tests/sampling/__init__.py +0 -0
  778. {modssc-1.2.1 → modssc-1.2.2}/tests/sampling/_api_cache_heuristic.py +0 -0
  779. {modssc-1.2.1 → modssc-1.2.2}/tests/sampling/_api_complex.py +0 -0
  780. {modssc-1.2.1 → modssc-1.2.2}/tests/sampling/_api_graph.py +0 -0
  781. {modssc-1.2.1 → modssc-1.2.2}/tests/sampling/_api_inductive.py +0 -0
  782. {modssc-1.2.1 → modssc-1.2.2}/tests/sampling/_result_properties.py +0 -0
  783. {modssc-1.2.1 → modssc-1.2.2}/tests/sampling/_splitters_holdout.py +0 -0
  784. {modssc-1.2.1 → modssc-1.2.2}/tests/sampling/_splitters_kfold.py +0 -0
  785. {modssc-1.2.1 → modssc-1.2.2}/tests/sampling/_storage_roundtrip.py +0 -0
  786. {modssc-1.2.1 → modssc-1.2.2}/tests/sampling/_stubs.py +0 -0
  787. {modssc-1.2.1 → modssc-1.2.2}/tests/sampling/services/__init__.py +0 -0
  788. {modssc-1.2.1 → modssc-1.2.2}/tests/sampling/services/test___init__.py +0 -0
  789. {modssc-1.2.1 → modssc-1.2.2}/tests/sampling/services/test_service.py +0 -0
  790. {modssc-1.2.1 → modssc-1.2.2}/tests/sampling/test___init__.py +0 -0
  791. {modssc-1.2.1 → modssc-1.2.2}/tests/sampling/test_api.py +0 -0
  792. {modssc-1.2.1 → modssc-1.2.2}/tests/sampling/test_common.py +0 -0
  793. {modssc-1.2.1 → modssc-1.2.2}/tests/sampling/test_errors.py +0 -0
  794. {modssc-1.2.1 → modssc-1.2.2}/tests/sampling/test_fingerprint.py +0 -0
  795. {modssc-1.2.1 → modssc-1.2.2}/tests/sampling/test_imbalance.py +0 -0
  796. {modssc-1.2.1 → modssc-1.2.2}/tests/sampling/test_labeling.py +0 -0
  797. {modssc-1.2.1 → modssc-1.2.2}/tests/sampling/test_plan.py +0 -0
  798. {modssc-1.2.1 → modssc-1.2.2}/tests/sampling/test_result.py +0 -0
  799. {modssc-1.2.1 → modssc-1.2.2}/tests/sampling/test_splitters.py +0 -0
  800. {modssc-1.2.1 → modssc-1.2.2}/tests/sampling/test_stats.py +0 -0
  801. {modssc-1.2.1 → modssc-1.2.2}/tests/sampling/test_storage.py +0 -0
  802. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/__init__.py +0 -0
  803. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/backends/__init__.py +0 -0
  804. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/backends/numpy/__init__.py +0 -0
  805. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/backends/numpy/test___init__.py +0 -0
  806. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/backends/numpy/test_knn.py +0 -0
  807. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/backends/sklearn/__init__.py +0 -0
  808. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/backends/sklearn/test___init__.py +0 -0
  809. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/backends/sklearn/test_common.py +0 -0
  810. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/backends/sklearn/test_extra_trees.py +0 -0
  811. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/backends/sklearn/test_gradient_boosting.py +0 -0
  812. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/backends/sklearn/test_knn.py +0 -0
  813. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/backends/sklearn/test_linear_svm.py +0 -0
  814. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/backends/sklearn/test_logreg.py +0 -0
  815. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/backends/sklearn/test_naive_bayes.py +0 -0
  816. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/backends/sklearn/test_random_forest.py +0 -0
  817. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/backends/sklearn/test_ridge.py +0 -0
  818. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/backends/sklearn/test_svm_rbf.py +0 -0
  819. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/backends/test___init__.py +0 -0
  820. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/backends/torch/__init__.py +0 -0
  821. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/backends/torch/test___init__.py +0 -0
  822. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/backends/torch/test_audio_cnn.py +0 -0
  823. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/backends/torch/test_audio_cnn_scratch.py +0 -0
  824. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/backends/torch/test_audio_pretrained.py +0 -0
  825. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/backends/torch/test_common.py +0 -0
  826. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/backends/torch/test_graphsage_inductive.py +0 -0
  827. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/backends/torch/test_image_cnn.py +0 -0
  828. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/backends/torch/test_image_pretrained.py +0 -0
  829. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/backends/torch/test_knn.py +0 -0
  830. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/backends/torch/test_logreg.py +0 -0
  831. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/backends/torch/test_lstm_scratch.py +0 -0
  832. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/backends/torch/test_mlp.py +0 -0
  833. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/backends/torch/test_text_cnn.py +0 -0
  834. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/test___init__.py +0 -0
  835. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/test_api.py +0 -0
  836. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/test_base.py +0 -0
  837. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/test_errors.py +0 -0
  838. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/test_optional.py +0 -0
  839. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/test_registry.py +0 -0
  840. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/test_registry_data.py +0 -0
  841. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/test_types.py +0 -0
  842. {modssc-1.2.1 → modssc-1.2.2}/tests/supervised/test_utils.py +0 -0
  843. {modssc-1.2.1 → modssc-1.2.2}/tests/test___about__.py +0 -0
  844. {modssc-1.2.1 → modssc-1.2.2}/tests/test___init__.py +0 -0
  845. {modssc-1.2.1 → modssc-1.2.2}/tests/test___main__.py +0 -0
  846. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/__init__.py +0 -0
  847. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/adapters/__init__.py +0 -0
  848. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/adapters/test___init__.py +0 -0
  849. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/adapters/test_pyg.py +0 -0
  850. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/backends/__init__.py +0 -0
  851. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/backends/test___init__.py +0 -0
  852. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/backends/test_numpy_backend.py +0 -0
  853. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/backends/test_torch_backend.py +0 -0
  854. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/__init__.py +0 -0
  855. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/classic/__init__.py +0 -0
  856. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/classic/test_common.py +0 -0
  857. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/classic/test_dynamic_label_propagation.py +0 -0
  858. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/classic/test_graph_mincuts.py +0 -0
  859. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/classic/test_label_propagation.py +0 -0
  860. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/classic/test_label_spreading.py +0 -0
  861. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/classic/test_laplace_learning.py +0 -0
  862. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/classic/test_lazy_random_walk.py +0 -0
  863. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/classic/test_tsvm.py +0 -0
  864. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/gnn/__init__.py +0 -0
  865. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/gnn/test___init__.py +0 -0
  866. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/gnn/test_appnp.py +0 -0
  867. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/gnn/test_chebnet.py +0 -0
  868. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/gnn/test_common.py +0 -0
  869. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/gnn/test_gat.py +0 -0
  870. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/gnn/test_gcn.py +0 -0
  871. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/gnn/test_gcnii.py +0 -0
  872. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/gnn/test_grafn.py +0 -0
  873. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/gnn/test_grand.py +0 -0
  874. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/gnn/test_graphhop.py +0 -0
  875. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/gnn/test_graphsage.py +0 -0
  876. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/gnn/test_h_gcn.py +0 -0
  877. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/gnn/test_n_gcn.py +0 -0
  878. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/gnn/test_planetoid.py +0 -0
  879. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/gnn/test_sgc.py +0 -0
  880. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/pde/__init__.py +0 -0
  881. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/pde/test___init__.py +0 -0
  882. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/pde/test_p_laplace_learning.py +0 -0
  883. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/pde/test_poisson_learning.py +0 -0
  884. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/pde/test_poisson_mbo.py +0 -0
  885. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/test___init__.py +0 -0
  886. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/methods/test_utils.py +0 -0
  887. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/operators/__init__.py +0 -0
  888. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/operators/test___init__.py +0 -0
  889. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/operators/test_clamp.py +0 -0
  890. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/operators/test_laplacian.py +0 -0
  891. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/operators/test_normalize.py +0 -0
  892. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/operators/test_spmm.py +0 -0
  893. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/solvers/__init__.py +0 -0
  894. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/solvers/test___init__.py +0 -0
  895. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/solvers/test_cg.py +0 -0
  896. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/solvers/test_fixed_point.py +0 -0
  897. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/test___init__.py +0 -0
  898. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/test_base.py +0 -0
  899. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/test_errors.py +0 -0
  900. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/test_optional.py +0 -0
  901. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/test_registry.py +0 -0
  902. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/test_types.py +0 -0
  903. {modssc-1.2.1 → modssc-1.2.2}/tests/transductive/test_validation.py +0 -0
  904. {modssc-1.2.1 → modssc-1.2.2}/tests/utils/__init__.py +0 -0
  905. {modssc-1.2.1 → modssc-1.2.2}/tests/utils/test___init__.py +0 -0
  906. {modssc-1.2.1 → modssc-1.2.2}/tests/utils/test_imports.py +0 -0
  907. {modssc-1.2.1 → modssc-1.2.2}/tests/utils/test_io.py +0 -0
  908. {modssc-1.2.1 → modssc-1.2.2}/tests/utils/test_numpy.py +0 -0
  909. {modssc-1.2.1 → modssc-1.2.2}/tests/utils/test_registry.py +0 -0
  910. {modssc-1.2.1 → modssc-1.2.2}/tests/utils/test_seed.py +0 -0
  911. {modssc-1.2.1 → modssc-1.2.2}/tests/utils/test_shape.py +0 -0
  912. {modssc-1.2.1 → modssc-1.2.2}/tests/views/__init__.py +0 -0
  913. {modssc-1.2.1 → modssc-1.2.2}/tests/views/services/__init__.py +0 -0
  914. {modssc-1.2.1 → modssc-1.2.2}/tests/views/services/test___init__.py +0 -0
  915. {modssc-1.2.1 → modssc-1.2.2}/tests/views/services/test_service.py +0 -0
  916. {modssc-1.2.1 → modssc-1.2.2}/tests/views/test___init__.py +0 -0
  917. {modssc-1.2.1 → modssc-1.2.2}/tests/views/test_api.py +0 -0
  918. {modssc-1.2.1 → modssc-1.2.2}/tests/views/test_errors.py +0 -0
  919. {modssc-1.2.1 → modssc-1.2.2}/tests/views/test_plan.py +0 -0
  920. {modssc-1.2.1 → modssc-1.2.2}/tests/views/test_types.py +0 -0
@@ -16,7 +16,7 @@ jobs:
16
16
  lint:
17
17
  runs-on: ubuntu-latest
18
18
  steps:
19
- - uses: actions/checkout@v6
19
+ - uses: actions/checkout@v7
20
20
 
21
21
  - uses: actions/setup-python@v6
22
22
  with:
@@ -41,7 +41,7 @@ jobs:
41
41
  matrix:
42
42
  python-version: ["3.11", "3.12"]
43
43
  steps:
44
- - uses: actions/checkout@v6
44
+ - uses: actions/checkout@v7
45
45
 
46
46
  - name: Free up disk space
47
47
  run: |
@@ -92,7 +92,7 @@ jobs:
92
92
  build:
93
93
  runs-on: ubuntu-latest
94
94
  steps:
95
- - uses: actions/checkout@v6
95
+ - uses: actions/checkout@v7
96
96
 
97
97
  - uses: actions/setup-python@v6
98
98
  with:
@@ -36,7 +36,7 @@ jobs:
36
36
  build:
37
37
  runs-on: ubuntu-latest
38
38
  steps:
39
- - uses: actions/checkout@v6
39
+ - uses: actions/checkout@v7
40
40
 
41
41
  - name: Setup Pages
42
42
  uses: actions/configure-pages@v6
@@ -16,7 +16,7 @@ jobs:
16
16
  build:
17
17
  runs-on: ubuntu-latest
18
18
  steps:
19
- - uses: actions/checkout@v6
19
+ - uses: actions/checkout@v7
20
20
 
21
21
  - uses: actions/setup-python@v6
22
22
  with:
@@ -63,7 +63,7 @@ jobs:
63
63
  permissions:
64
64
  contents: write
65
65
  steps:
66
- - uses: actions/checkout@v6
66
+ - uses: actions/checkout@v7
67
67
 
68
68
  - name: Download dist artifacts
69
69
  uses: actions/download-artifact@v8
@@ -4,6 +4,11 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  The format is based on "Keep a Changelog", and this project adheres to Semantic Versioning.
6
6
 
7
+ ## 1.2.2
8
+ ### Fixed
9
+ - Stabilized Dynamic Label Propagation by renormalizing dynamic transition matrices after each update and failing explicitly on invalid transition weights instead of returning non-finite scores.
10
+ - Replaced torch sparse tensor coalescing in DGI and GNN graph helpers with deterministic duplicate-edge aggregation to avoid PyTorch sparse invariant warnings without disabling checks.
11
+
7
12
  ## 1.2.1
8
13
  ### Changed
9
14
  - Added benchmark seed-section control for reproducible ISO-style sweeps.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modssc
3
- Version: 1.2.1
3
+ Version: 1.2.2
4
4
  Summary: ModSSC: a modular framework for semi-supervised classification on heterogeneous data
5
5
  Project-URL: Homepage, https://github.com/ModSSC/ModSSC
6
6
  Project-URL: Repository, https://github.com/ModSSC/ModSSC
@@ -44,7 +44,7 @@ ModSSC is a modular framework for semi-supervised classification across heteroge
44
44
  - [Troubleshooting](how-to/troubleshooting.md)
45
45
 
46
46
  ## Version
47
- Current version is `1.2.0`, sourced from [`src/modssc/__about__.py`](https://github.com/ModSSC/ModSSC/blob/main/src/modssc/__about__.py) and referenced by the Hatch version config in [`pyproject.toml`](https://github.com/ModSSC/ModSSC/blob/main/pyproject.toml). <sup class="cite"><a href="#source-18">[18]</a><a href="#source-2">[2]</a></sup>
47
+ Current version is `1.2.2`, sourced from [`src/modssc/__about__.py`](https://github.com/ModSSC/ModSSC/blob/main/src/modssc/__about__.py) and referenced by the Hatch version config in [`pyproject.toml`](https://github.com/ModSSC/ModSSC/blob/main/pyproject.toml). <sup class="cite"><a href="#source-18">[18]</a><a href="#source-2">[2]</a></sup>
48
48
 
49
49
 
50
50
  ## Project status and support
@@ -1,4 +1,4 @@
1
1
  # SPDX-FileCopyrightText: 2024-present ModSSC contributors
2
2
  #
3
3
  # SPDX-License-Identifier: MIT
4
- __version__ = "1.2.1"
4
+ __version__ = "1.2.2"
@@ -65,9 +65,11 @@ def _train_dgi(
65
65
  def _coalesce_edges(edge_index_t, edge_weight_t, *, n_nodes: int):
66
66
  src, dst = edge_index_t[0], edge_index_t[1]
67
67
  idx = torch.stack([dst, src], dim=0)
68
- adj = torch.sparse_coo_tensor(idx, edge_weight_t, size=(n_nodes, n_nodes)).coalesce()
69
- idx2 = adj.indices()
70
- w2 = adj.values()
68
+ idx2, inverse = torch.unique(idx, dim=1, sorted=True, return_inverse=True)
69
+ w2 = torch.zeros(
70
+ (int(idx2.shape[1]),), device=edge_weight_t.device, dtype=edge_weight_t.dtype
71
+ )
72
+ w2.scatter_add_(0, inverse, edge_weight_t)
71
73
  dst2, src2 = idx2[0], idx2[1]
72
74
  return torch.stack([src2, dst2], dim=0), w2
73
75
 
@@ -53,6 +53,19 @@ def _knn_matrix_numpy(P0: np.ndarray, k: int) -> np.ndarray:
53
53
  return P
54
54
 
55
55
 
56
+ def _normalize_transition_numpy(P: np.ndarray, eps: float = 1e-12) -> np.ndarray:
57
+ row_sum = P.sum(axis=1, keepdims=True)
58
+ invalid = (
59
+ (not bool(np.isfinite(P).all()))
60
+ or bool((P < 0.0).any())
61
+ or (not bool(np.isfinite(row_sum).all()))
62
+ or bool((row_sum <= eps).any())
63
+ )
64
+ if invalid:
65
+ raise ValueError("DynamicLabelPropagation produced invalid transition weights.")
66
+ return P / row_sum
67
+
68
+
56
69
  def dynamic_label_propagation_numpy(
57
70
  *,
58
71
  n_nodes: int,
@@ -68,6 +81,8 @@ def dynamic_label_propagation_numpy(
68
81
  raise ValueError("k_neighbors must be positive")
69
82
  if not (float(spec.alpha) >= 0.0):
70
83
  raise ValueError("alpha must be non-negative")
84
+ if not (float(spec.lambda_value) >= 0.0):
85
+ raise ValueError("lambda_value must be non-negative")
71
86
 
72
87
  edge_index, w = _validate_graph_inputs(
73
88
  n_nodes=n_nodes, edge_index=edge_index, edge_weight=edge_weight
@@ -90,8 +105,8 @@ def dynamic_label_propagation_numpy(
90
105
  if np.any(deg <= 0):
91
106
  raise ValueError("DynamicLabelPropagation requires a graph without isolated nodes.")
92
107
 
93
- P0 = W / deg[:, None]
94
- P = _knn_matrix_numpy(P0, int(spec.k_neighbors))
108
+ P0 = _normalize_transition_numpy(W / deg[:, None])
109
+ P = _normalize_transition_numpy(_knn_matrix_numpy(P0, int(spec.k_neighbors)))
95
110
 
96
111
  P_t = P0.copy()
97
112
  Y_t = Y0.copy()
@@ -105,6 +120,7 @@ def dynamic_label_propagation_numpy(
105
120
  P_t = P @ (P_t + float(spec.alpha) * (Y_t @ Y_t.T)) @ P.T
106
121
  if float(spec.lambda_value) != 0.0:
107
122
  P_t = P_t + float(spec.lambda_value) * identity
123
+ P_t = _normalize_transition_numpy(P_t)
108
124
 
109
125
  residual = float(np.max(np.abs(Y_next - Y_t)))
110
126
  Y_t = Y_next
@@ -130,6 +146,19 @@ def _knn_matrix_torch(P0: torch.Tensor, k: int) -> torch.Tensor:
130
146
  return P
131
147
 
132
148
 
149
+ def _normalize_transition_torch(P: torch.Tensor, eps: float = 1e-12) -> torch.Tensor:
150
+ row_sum = P.sum(dim=1, keepdim=True)
151
+ invalid = (
152
+ (not bool(torch.isfinite(P).all().item()))
153
+ or bool((P < 0.0).any().item())
154
+ or (not bool(torch.isfinite(row_sum).all().item()))
155
+ or bool((row_sum <= float(eps)).any().item())
156
+ )
157
+ if invalid:
158
+ raise ValueError("DynamicLabelPropagation produced invalid transition weights.")
159
+ return P / row_sum
160
+
161
+
133
162
  def dynamic_label_propagation_torch(
134
163
  *,
135
164
  n_nodes: int,
@@ -147,6 +176,8 @@ def dynamic_label_propagation_torch(
147
176
  raise ValueError("k_neighbors must be positive")
148
177
  if not (float(spec.alpha) >= 0.0):
149
178
  raise ValueError("alpha must be non-negative")
179
+ if not (float(spec.lambda_value) >= 0.0):
180
+ raise ValueError("lambda_value must be non-negative")
150
181
 
151
182
  if edge_index.ndim != 2 or int(edge_index.shape[0]) != 2:
152
183
  raise ValueError("edge_index must have shape (2, E)")
@@ -180,8 +211,8 @@ def dynamic_label_propagation_torch(
180
211
  if bool((deg <= 0).any().item()):
181
212
  raise ValueError("DynamicLabelPropagation requires a graph without isolated nodes.")
182
213
 
183
- P0 = W / deg.view(-1, 1)
184
- P = _knn_matrix_torch(P0, int(spec.k_neighbors))
214
+ P0 = _normalize_transition_torch(W / deg.view(-1, 1))
215
+ P = _normalize_transition_torch(_knn_matrix_torch(P0, int(spec.k_neighbors)))
185
216
 
186
217
  P_t = P0.clone()
187
218
  Y_t = Y0.clone()
@@ -195,6 +226,7 @@ def dynamic_label_propagation_torch(
195
226
  P_t = P @ (P_t + float(spec.alpha) * (Y_t @ Y_t.T)) @ P.T
196
227
  if float(spec.lambda_value) != 0.0:
197
228
  P_t = P_t + float(spec.lambda_value) * identity
229
+ P_t = _normalize_transition_torch(P_t)
198
230
 
199
231
  residual = float(torch.max(torch.abs(Y_next - Y_t)).item())
200
232
  Y_t = Y_next
@@ -88,14 +88,18 @@ def coalesce_edges(edge_index: Any, edge_weight: Any, *, n_nodes: int) -> tuple[
88
88
  """Coalesce duplicate edges by summing weights.
89
89
 
90
90
  The internal adjacency convention in ModSSC is PyG-like: edge_index is
91
- (src, dst) and corresponds to adjacency A[dst, src]. We therefore build a
92
- sparse tensor with indices (dst, src).
91
+ (src, dst) and corresponds to adjacency A[dst, src]. Duplicate edges are
92
+ aggregated deterministically by their (dst, src) key.
93
93
  """
94
+ if edge_index.numel() and (
95
+ bool((edge_index < 0).any().item()) or bool((edge_index >= int(n_nodes)).any().item())
96
+ ):
97
+ raise ValueError("edge_index contains node id outside [0, n_nodes)")
94
98
  src, dst = edge_index[0], edge_index[1]
95
99
  idx = torch.stack([dst, src], dim=0)
96
- A = torch.sparse_coo_tensor(idx, edge_weight, size=(n_nodes, n_nodes)).coalesce()
97
- idx2 = A.indices()
98
- w2 = A.values()
100
+ idx2, inverse = torch.unique(idx, dim=1, sorted=True, return_inverse=True)
101
+ w2 = torch.zeros((int(idx2.shape[1]),), device=edge_weight.device, dtype=edge_weight.dtype)
102
+ w2.scatter_add_(0, inverse, edge_weight)
99
103
  dst2, src2 = idx2[0], idx2[1]
100
104
  return torch.stack([src2, dst2], dim=0), w2
101
105
 
@@ -25,6 +25,9 @@ from modssc.transductive.methods.classic.dynamic_label_propagation import (
25
25
  from modssc.transductive.methods.classic.dynamic_label_propagation import (
26
26
  _knn_matrix_numpy as _dlp_knn_numpy,
27
27
  )
28
+ from modssc.transductive.methods.classic.dynamic_label_propagation import (
29
+ _normalize_transition_numpy as _dlp_normalize_transition_numpy,
30
+ )
28
31
  from modssc.transductive.methods.classic.label_propagation import (
29
32
  LabelPropagationMethod,
30
33
  LabelPropagationSpec,
@@ -62,6 +65,9 @@ if torch is not None:
62
65
  from modssc.transductive.methods.classic.dynamic_label_propagation import (
63
66
  _knn_matrix_torch as _dlp_knn_torch,
64
67
  )
68
+ from modssc.transductive.methods.classic.dynamic_label_propagation import (
69
+ _normalize_transition_torch as _dlp_normalize_transition_torch,
70
+ )
65
71
  from modssc.transductive.methods.classic.dynamic_label_propagation import (
66
72
  dynamic_label_propagation_torch,
67
73
  )
@@ -1272,6 +1278,13 @@ def test_dynamic_label_propagation_knn_matrix_numpy_paths():
1272
1278
  _dlp_knn_numpy(np.zeros((3, 3), dtype=np.float32), 1)
1273
1279
 
1274
1280
 
1281
+ def test_dynamic_label_propagation_normalize_transition_numpy_paths():
1282
+ P = np.array([[2.0, 0.0], [1.0, 1.0]], dtype=np.float32)
1283
+ assert np.allclose(_dlp_normalize_transition_numpy(P), [[1.0, 0.0], [0.5, 0.5]])
1284
+ with pytest.raises(ValueError, match="invalid transition weights"):
1285
+ _dlp_normalize_transition_numpy(np.array([[np.nan, 1.0]], dtype=np.float32))
1286
+
1287
+
1275
1288
  @pytest.mark.parametrize(
1276
1289
  ("spec", "y", "labeled_mask", "edge_index", "edge_weight", "match"),
1277
1290
  [
@@ -1289,6 +1302,13 @@ def test_dynamic_label_propagation_knn_matrix_numpy_paths():
1289
1302
  *_simple_graph(),
1290
1303
  "alpha must be non-negative",
1291
1304
  ),
1305
+ (
1306
+ DynamicLabelPropagationSpec(lambda_value=-0.1),
1307
+ np.array([0, 1, 0], dtype=np.int64),
1308
+ np.array([True, False, True]),
1309
+ *_simple_graph(),
1310
+ "lambda_value must be non-negative",
1311
+ ),
1292
1312
  (
1293
1313
  DynamicLabelPropagationSpec(),
1294
1314
  np.array([0, 1], dtype=np.int64),
@@ -1346,6 +1366,7 @@ def test_dynamic_label_propagation_numpy_lambda_zero():
1346
1366
  spec=DynamicLabelPropagationSpec(k_neighbors=1, lambda_value=0.0, max_iter=1),
1347
1367
  )
1348
1368
  assert res.F.shape == (3, 2)
1369
+ assert np.isfinite(res.F).all()
1349
1370
 
1350
1371
 
1351
1372
  def test_dynamic_label_propagation_numpy_default_spec():
@@ -1360,6 +1381,7 @@ def test_dynamic_label_propagation_numpy_default_spec():
1360
1381
  labeled_mask=labeled_mask,
1361
1382
  )
1362
1383
  assert res.F.shape == (3, 2)
1384
+ assert np.isfinite(res.F).all()
1363
1385
 
1364
1386
 
1365
1387
  def test_dynamic_label_propagation_dispatch_invalid_backend():
@@ -1393,6 +1415,7 @@ def test_dynamic_label_propagation_torch_paths():
1393
1415
  device="cpu",
1394
1416
  )
1395
1417
  assert res.F.shape == (3, 2)
1418
+ assert np.isfinite(res.F).all()
1396
1419
 
1397
1420
 
1398
1421
  @pytest.mark.skipif(torch is None, reason="torch not installed")
@@ -1419,6 +1442,15 @@ def test_dynamic_label_propagation_knn_matrix_torch_paths():
1419
1442
  _dlp_knn_torch(torch.zeros((3, 3), dtype=torch.float32), 1)
1420
1443
 
1421
1444
 
1445
+ @pytest.mark.skipif(torch is None, reason="torch not installed")
1446
+ def test_dynamic_label_propagation_normalize_transition_torch_paths():
1447
+ P = torch.tensor([[2.0, 0.0], [1.0, 1.0]], dtype=torch.float32)
1448
+ expected = torch.tensor([[1.0, 0.0], [0.5, 0.5]], dtype=torch.float32)
1449
+ assert torch.allclose(_dlp_normalize_transition_torch(P), expected)
1450
+ with pytest.raises(ValueError, match="invalid transition weights"):
1451
+ _dlp_normalize_transition_torch(torch.tensor([[float("nan"), 1.0]]))
1452
+
1453
+
1422
1454
  @pytest.mark.skipif(torch is None, reason="torch not installed")
1423
1455
  @pytest.mark.parametrize(
1424
1456
  ("spec", "edge_index", "edge_weight", "y", "labeled_mask", "match"),
@@ -1439,6 +1471,14 @@ def test_dynamic_label_propagation_knn_matrix_torch_paths():
1439
1471
  torch.tensor([True, False, True], dtype=torch.bool),
1440
1472
  "alpha must be non-negative",
1441
1473
  ),
1474
+ (
1475
+ DynamicLabelPropagationSpec(lambda_value=-0.1),
1476
+ torch.tensor([[0, 1], [1, 2]], dtype=torch.long),
1477
+ torch.ones(2, dtype=torch.float32),
1478
+ torch.tensor([0, 1, 0], dtype=torch.long),
1479
+ torch.tensor([True, False, True], dtype=torch.bool),
1480
+ "lambda_value must be non-negative",
1481
+ ),
1442
1482
  (
1443
1483
  DynamicLabelPropagationSpec(),
1444
1484
  torch.tensor([[0, 1], [1, 2]], dtype=torch.long),
@@ -672,6 +672,19 @@ def test_common_utils():
672
672
  assert ei_out[1, 0] == 1
673
673
  assert ew_out[0] == 3.0
674
674
 
675
+ ei_empty = torch.empty((2, 0), dtype=torch.long)
676
+ ew_empty = torch.empty((0,), dtype=torch.float)
677
+ ei_empty_out, ew_empty_out = coalesce_edges(ei_empty, ew_empty, n_nodes=2)
678
+ assert ei_empty_out.shape == (2, 0)
679
+ assert ew_empty_out.shape == (0,)
680
+
681
+ with pytest.raises(ValueError, match="outside"):
682
+ coalesce_edges(
683
+ torch.tensor([[0, 2], [1, 0]], dtype=torch.long),
684
+ torch.ones(2, dtype=torch.float),
685
+ n_nodes=2,
686
+ )
687
+
675
688
  with pytest.raises(ValueError, match="X must be 2D"):
676
689
  _ensure_2d(np.zeros((2, 2, 2)))
677
690
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes