pycorpdiff 0.1.0a7__tar.gz → 0.1.0a8__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 (129) hide show
  1. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/CHANGELOG.md +1 -1
  2. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/CITATION.cff +1 -1
  3. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/PKG-INFO +2 -2
  4. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/README.md +1 -1
  5. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/pyproject.toml +1 -1
  6. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/__init__.py +1 -1
  7. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/integration/test_crossval_quanteda.py +8 -4
  8. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/integration/test_sbert_slow.py +13 -2
  9. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/.gitignore +0 -0
  10. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/LICENSE +0 -0
  11. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/_backends/__init__.py +0 -0
  12. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/_backends/pandas.py +0 -0
  13. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/_backends/polars.py +0 -0
  14. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/collocation/__init__.py +0 -0
  15. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/collocation/cooccurrence.py +0 -0
  16. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/collocation/measures.py +0 -0
  17. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/collocation/network.py +0 -0
  18. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/collocation/shift.py +0 -0
  19. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/compare.py +0 -0
  20. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/corpus.py +0 -0
  21. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/datasets/__init__.py +0 -0
  22. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/datasets/_data/hansard_sample.parquet +0 -0
  23. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/datasets/_generate_hansard.py +0 -0
  24. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/datasets/hansard.py +0 -0
  25. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/datasets/histwords.py +0 -0
  26. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/explain.py +0 -0
  27. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/io/__init__.py +0 -0
  28. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/io/duckdb.py +0 -0
  29. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/io/huggingface.py +0 -0
  30. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/io/readers.py +0 -0
  31. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/keyness/__init__.py +0 -0
  32. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/keyness/bayes.py +0 -0
  33. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/keyness/chi_squared.py +0 -0
  34. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/keyness/correction.py +0 -0
  35. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/keyness/dispersion.py +0 -0
  36. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/keyness/effect_sizes.py +0 -0
  37. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/keyness/loglikelihood.py +0 -0
  38. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/keyness/multicorpus.py +0 -0
  39. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/keyness/permutation.py +0 -0
  40. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/py.typed +0 -0
  41. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/results.py +0 -0
  42. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/semantic/__init__.py +0 -0
  43. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/semantic/alignment.py +0 -0
  44. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/semantic/embed.py +0 -0
  45. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/semantic/shift.py +0 -0
  46. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/semantic/trajectory.py +0 -0
  47. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/stats.py +0 -0
  48. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/temporal/__init__.py +0 -0
  49. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/temporal/bocpd.py +0 -0
  50. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/temporal/causal_impact.py +0 -0
  51. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/temporal/changepoint.py +0 -0
  52. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/temporal/forecast.py +0 -0
  53. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/temporal/its.py +0 -0
  54. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/temporal/slicing.py +0 -0
  55. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/tokenize.py +0 -0
  56. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/viz/__init__.py +0 -0
  57. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/viz/bocpd.py +0 -0
  58. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/viz/causal_impact.py +0 -0
  59. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/viz/collocation.py +0 -0
  60. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/viz/dispersion.py +0 -0
  61. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/viz/forecast.py +0 -0
  62. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/viz/keyness.py +0 -0
  63. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/viz/network.py +0 -0
  64. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/viz/scattertext.py +0 -0
  65. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/viz/semantic_forecast.py +0 -0
  66. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/src/pycorpdiff/viz/trajectory.py +0 -0
  67. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/__init__.py +0 -0
  68. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/conftest.py +0 -0
  69. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/fixtures/__init__.py +0 -0
  70. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/integration/__init__.py +0 -0
  71. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/integration/test_collocation_integration.py +0 -0
  72. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/integration/test_crossval_histwords.py +0 -0
  73. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/integration/test_crossval_nltk.py +0 -0
  74. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/integration/test_crossval_rayson.py +0 -0
  75. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/integration/test_crossval_scattertext.py +0 -0
  76. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/integration/test_explain_integration.py +0 -0
  77. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/integration/test_keyness_integration.py +0 -0
  78. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/integration/test_semantic_integration.py +0 -0
  79. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/integration/test_stop_words.py +0 -0
  80. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/integration/test_temporal_stats.py +0 -0
  81. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/integration/test_viz.py +0 -0
  82. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/property/__init__.py +0 -0
  83. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/property/test_collocation_properties.py +0 -0
  84. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/property/test_keyness_properties.py +0 -0
  85. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/property/test_temporal_properties.py +0 -0
  86. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/__init__.py +0 -0
  87. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_audit_a7_fixes.py +0 -0
  88. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_bayes_factor.py +0 -0
  89. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_bocpd.py +0 -0
  90. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_causal_impact.py +0 -0
  91. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_changepoint.py +0 -0
  92. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_chi_squared.py +0 -0
  93. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_collocation_cooccurrence.py +0 -0
  94. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_collocation_measures.py +0 -0
  95. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_collocation_shift.py +0 -0
  96. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_comparison_concordance.py +0 -0
  97. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_cooccurrence_network.py +0 -0
  98. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_corpus_hash.py +0 -0
  99. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_corpus_vocab.py +0 -0
  100. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_correction.py +0 -0
  101. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_datasets_hansard.py +0 -0
  102. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_dispersion.py +0 -0
  103. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_dispersion_plot.py +0 -0
  104. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_doc_term_counts_sparse.py +0 -0
  105. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_effect_sizes.py +0 -0
  106. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_embedders.py +0 -0
  107. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_explain.py +0 -0
  108. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_forecast.py +0 -0
  109. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_forecast_semantic_drift.py +0 -0
  110. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_from_huggingface.py +0 -0
  111. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_hansard_fetcher.py +0 -0
  112. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_histwords_loader.py +0 -0
  113. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_its.py +0 -0
  114. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_keyness_multi.py +0 -0
  115. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_loglikelihood.py +0 -0
  116. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_ngram_tokenizer.py +0 -0
  117. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_permutation_keyness.py +0 -0
  118. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_polars_interop.py +0 -0
  119. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_procrustes.py +0 -0
  120. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_read_duckdb.py +0 -0
  121. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_read_txt_line_mode.py +0 -0
  122. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_result_exports.py +0 -0
  123. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_scattertext_plot.py +0 -0
  124. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_semantic_neighbours.py +0 -0
  125. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_semantic_shift.py +0 -0
  126. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_semantic_trajectory.py +0 -0
  127. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_smoke.py +0 -0
  128. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_temporal.py +0 -0
  129. {pycorpdiff-0.1.0a7 → pycorpdiff-0.1.0a8}/tests/unit/test_wilson_ci.py +0 -0
@@ -4,7 +4,7 @@ All notable changes to `pycorpdiff` are documented in this file. The format
4
4
  follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this
5
5
  project adheres to [Semantic Versioning](https://semver.org/).
6
6
 
7
- ## [0.1.0a7] — first public release
7
+ ## [0.1.0a8] — first public release
8
8
 
9
9
  The first public alpha of `pycorpdiff` — comparative corpus analysis
10
10
  for modern Python workflows. Three public verbs (`compare`, `track`,
@@ -4,7 +4,7 @@ message: >
4
4
  entry. GitHub renders a "Cite this repository" widget directly from
5
5
  this file.
6
6
  title: "pycorpdiff: Comparative Corpus Analysis for Modern Python Workflows"
7
- version: 0.1.0a7
7
+ version: 0.1.0a8
8
8
  date-released: 2026-05-25
9
9
  authors:
10
10
  - family-names: Turner
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pycorpdiff
3
- Version: 0.1.0a7
3
+ Version: 0.1.0a8
4
4
  Summary: Comparative corpus analysis for Python: keyness, collocations, semantic shift, temporal trajectories with changepoints + causal inference.
5
5
  Project-URL: Homepage, https://github.com/jturner-uofl/pycorpdiff
6
6
  Project-URL: Documentation, https://github.com/jturner-uofl/pycorpdiff
@@ -131,7 +131,7 @@ points — one-line adapters, no plugin registry. The base install's
131
131
  direct runtime dependencies are `numpy`, `pandas`, `scipy`, and
132
132
  `pyarrow`; everything else is opt-in via extras.
133
133
 
134
- > **Status: alpha (0.1.0a7).** Public API is stable for the features
134
+ > **Status: alpha (0.1.0a8).** Public API is stable for the features
135
135
  > described below; on PyPI as `pip install pycorpdiff`.
136
136
 
137
137
  ## The three-layer architecture
@@ -35,7 +35,7 @@ points — one-line adapters, no plugin registry. The base install's
35
35
  direct runtime dependencies are `numpy`, `pandas`, `scipy`, and
36
36
  `pyarrow`; everything else is opt-in via extras.
37
37
 
38
- > **Status: alpha (0.1.0a7).** Public API is stable for the features
38
+ > **Status: alpha (0.1.0a8).** Public API is stable for the features
39
39
  > described below; on PyPI as `pip install pycorpdiff`.
40
40
 
41
41
  ## The three-layer architecture
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "pycorpdiff"
7
- version = "0.1.0a7"
7
+ version = "0.1.0a8"
8
8
  description = "Comparative corpus analysis for Python: keyness, collocations, semantic shift, temporal trajectories with changepoints + causal inference."
9
9
  readme = "README.md"
10
10
  license = { file = "LICENSE" }
@@ -20,7 +20,7 @@ True
20
20
 
21
21
  from __future__ import annotations
22
22
 
23
- __version__ = "0.1.0a7"
23
+ __version__ = "0.1.0a8"
24
24
 
25
25
  from .collocation.network import NetworkResult, cooccurrence_network
26
26
  from .compare import Comparison, compare
@@ -76,12 +76,16 @@ def _quanteda_keyness(corpus_df: pd.DataFrame) -> pd.DataFrame:
76
76
  from rpy2.robjects.conversion import localconverter
77
77
 
78
78
  # rpy2 >= 3.5 deprecated pandas2ri.activate() in favour of a
79
- # context-managed converter. Wrap the conversion + R calls together.
79
+ # context-managed converter. Within `localconverter(...)` the
80
+ # `pandas2ri` converter is registered, so `r("out_df")` auto-converts
81
+ # the R data.frame to a pandas DataFrame on the way out; no explicit
82
+ # `pandas2ri.rpy2py(...)` call is needed (that's the deprecated
83
+ # pre-context-manager idiom and now raises NotImplementedError when
84
+ # the object is already pandas).
80
85
  with localconverter(default_converter + pandas2ri.converter):
81
86
  r("library(quanteda)")
82
87
  r("library(quanteda.textstats)")
83
- r_df = pandas2ri.py2rpy(corpus_df)
84
- r.assign("docs_df", r_df)
88
+ r.assign("docs_df", pandas2ri.py2rpy(corpus_df))
85
89
 
86
90
  r(
87
91
  """
@@ -96,7 +100,7 @@ def _quanteda_keyness(corpus_df: pd.DataFrame) -> pd.DataFrame:
96
100
  out_df <- as.data.frame(keyness)
97
101
  """
98
102
  )
99
- out = pandas2ri.rpy2py(r("out_df"))
103
+ out = r("out_df") # auto-converted to pandas via localconverter
100
104
 
101
105
  out = out.rename(columns={"G2": "g2"})
102
106
  return out[["feature", "g2"]]
@@ -44,8 +44,19 @@ def frame_corpus() -> pcd.Corpus:
44
44
 
45
45
  @pytest.fixture(scope="module")
46
46
  def sbert_embedder() -> pcd.SBERTEmbedder:
47
- """Construct (but don't yet invoke) the SBERT embedder."""
48
- return pcd.SBERTEmbedder(model_name="all-MiniLM-L6-v2")
47
+ """Construct + warm the SBERT embedder.
48
+
49
+ Skip the whole module if the model can't be loaded (network flake,
50
+ HuggingFace outage, gated-model auth gap, transformers version
51
+ mismatch). The point of these tests is pycorpdiff's wiring, not
52
+ SBERT's; an upstream-download failure is no signal.
53
+ """
54
+ e = pcd.SBERTEmbedder(model_name="all-MiniLM-L6-v2")
55
+ try:
56
+ e.encode(["warmup"]) # triggers the lazy model download
57
+ except (OSError, ValueError, RuntimeError) as exc: # pragma: no cover
58
+ pytest.skip(f"SBERT model unavailable: {exc}")
59
+ return e
49
60
 
50
61
 
51
62
  def test_sbert_encode_returns_correct_shape(
File without changes
File without changes