Skip to content

Commit 4c4b532

Browse files
authored
Manually refresh Quarto docs & revert workflow experiment (#435)
* Revert workflow changes * Run make quarto-docs
1 parent b9e81ba commit 4c4b532

149 files changed

Lines changed: 359 additions & 334 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/quarto-docs.yaml

Lines changed: 7 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -49,27 +49,11 @@ jobs:
4949
- name: Generate Quarto Docs
5050
run: make quarto-docs
5151

52-
- name: Create Pull Request
53-
id: cpr
54-
uses: peter-evans/create-pull-request@v5
52+
- name: Commit changes
53+
uses: EndBug/add-and-commit@v9
5554
with:
56-
token: ${{ secrets.GH_TOKEN }}
57-
commit-message: "Generate quarto docs"
58-
title: "Generate quarto docs"
59-
body: |
60-
Auto-generated PR to update Quarto documentation.
61-
62-
${{ github.event.inputs.note || 'Triggered by push to main' }}
63-
branch: quarto-docs-update
64-
delete-branch: true
65-
add-paths: |
66-
docs/
67-
68-
# Requires auto-merge to be enabled
69-
# - name: Enable Pull Request Automerge
70-
# if: steps.cpr.outputs.pull-request-operation == 'created'
71-
# uses: peter-evans/enable-pull-request-automerge@v3
72-
# with:
73-
# token: ${{ secrets.GH_TOKEN }}
74-
# pull-request-number: ${{ steps.cpr.outputs.pull-request-number }}
75-
# merge-method: squash
55+
default_author: github_actions
56+
message: "Generate quarto docs"
57+
add: "docs/"
58+
pathspec_error_handling: ignore
59+
push: true

docs/_sidebar.yml

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ website:
1010
- text: "---"
1111
- text: "Python API"
1212
# Root level items from validmind.qmd
13-
- text: "<span class='version'>`2.8.25`</span>"
13+
- text: "<span class='version'>`2.9.5`</span>"
1414
file: validmind/validmind.qmd#version__
1515
- text: "init<span class='suffix'></span>"
1616
file: validmind/validmind.qmd#init
@@ -40,6 +40,8 @@ website:
4040
file: validmind/validmind.qmd#tasks
4141
- text: "test<span class='suffix'></span>"
4242
file: validmind/validmind.qmd#test
43+
- text: "scorer_decorator<span class='suffix'></span>"
44+
file: validmind/validmind.qmd#scorer_decorator
4345
- text: "log_text<span class='suffix'></span>"
4446
file: validmind/validmind.qmd#log_text
4547
- text: "experimental_agent<span class='suffix'></span>"
@@ -75,6 +77,13 @@ website:
7577
file: validmind/validmind/datasets/credit_risk/lending_club.qmd
7678
- text: "lending_club_bias"
7779
file: validmind/validmind/datasets/credit_risk/lending_club_bias.qmd
80+
- text: "llm"
81+
file: validmind/validmind/datasets/llm.qmd
82+
contents:
83+
- text: "rag"
84+
file: validmind/validmind/datasets/llm/rag.qmd
85+
- text: "rfp"
86+
file: validmind/validmind/datasets/llm/rag/rfp.qmd
7887
- text: "nlp"
7988
file: validmind/validmind/datasets/nlp.qmd
8089
contents:
@@ -91,6 +100,8 @@ website:
91100
file: validmind/validmind/datasets/regression/lending_club.qmd
92101
- text: "errors"
93102
file: validmind/validmind/errors.qmd
103+
- text: "scorer"
104+
file: validmind/validmind/scorer.qmd
94105
- text: "test_suites"
95106
file: validmind/validmind/test_suites.qmd
96107
contents:
@@ -407,6 +418,17 @@ website:
407418
file: validmind/validmind/tests/model_validation/statsmodels.qmd
408419
- text: "statsutils"
409420
file: validmind/validmind/tests/model_validation/statsmodels/statsutils.qmd
421+
- text: "plots"
422+
file: validmind/validmind/tests/plots.qmd
423+
contents:
424+
- text: "BoxPlot"
425+
file: validmind/validmind/tests/plots/BoxPlot.qmd
426+
- text: "CorrelationHeatmap"
427+
file: validmind/validmind/tests/plots/CorrelationHeatmap.qmd
428+
- text: "HistogramPlot"
429+
file: validmind/validmind/tests/plots/HistogramPlot.qmd
430+
- text: "ViolinPlot"
431+
file: validmind/validmind/tests/plots/ViolinPlot.qmd
410432
- text: "prompt_validation"
411433
file: validmind/validmind/tests/prompt_validation.qmd
412434
contents:
@@ -426,6 +448,17 @@ website:
426448
file: validmind/validmind/tests/prompt_validation/Specificity.qmd
427449
- text: "ai_powered_test"
428450
file: validmind/validmind/tests/prompt_validation/ai_powered_test.qmd
451+
- text: "stats"
452+
file: validmind/validmind/tests/stats.qmd
453+
contents:
454+
- text: "CorrelationAnalysis"
455+
file: validmind/validmind/tests/stats/CorrelationAnalysis.qmd
456+
- text: "DescriptiveStats"
457+
file: validmind/validmind/tests/stats/DescriptiveStats.qmd
458+
- text: "NormalityTests"
459+
file: validmind/validmind/tests/stats/NormalityTests.qmd
460+
- text: "OutlierDetection"
461+
file: validmind/validmind/tests/stats/OutlierDetection.qmd
429462
- text: "unit_metrics"
430463
file: validmind/validmind/unit_metrics.qmd
431464
- text: "vm_models"

docs/validmind.qmd

Lines changed: 61 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ To initialize the ValidMind Library, paste the code snippet with the model ident
2727
import validmind as vm
2828

2929
vm.init(
30-
api_host = "https://api.dev.vm.validmind.ai/api/v1/tracking/tracking",
30+
api_host = "https://app.prod.validmind.ai/api/v1/tracking/tracking",
3131
api_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
3232
api_secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
3333
project = "<project-identifier>"
@@ -44,7 +44,7 @@ After you have pasted the code snippet into your development source code and exe
4444

4545
::: {.signature}
4646

47-
<span class="name">2.8.25</span>
47+
<span class="name">2.9.5</span>
4848

4949
:::
5050

@@ -66,7 +66,7 @@ If the API key and secret are not provided, the client will attempt to retrieve
6666

6767
**Arguments**
6868

69-
- `project (str, optional)`: The project CUID. Alias for model. Defaults to None. \[DEPRECATED\]
69+
- `project (str, optional)`: The project CUID. Alias for model. Defaults to None. [DEPRECATED]
7070
- `model (str, optional)`: The model CUID. Defaults to None.
7171
- `api_key (str, optional)`: The API key. Defaults to None.
7272
- `api_secret (str, optional)`: The API secret. Defaults to None.
@@ -213,7 +213,7 @@ This function provides an interface to retrieve the TestSuite instance for the c
213213

214214
::: {.signature}
215215

216-
<span class="kw">def</span><span class="name">log_metric</span>(<span class="params"><span class="n">key</span><span class="p">:</span><span class="nb">str</span><span class="muted">,</span></span><span class="params"><span class="n">value</span><span class="p">:</span><span class="nb">float</span><span class="muted">,</span></span><span class="params"><span class="n">inputs</span><span class="p">:</span><span class="n">Optional</span><span class="p">\[</span><span class="n">List</span><span class="p">\[</span><span class="nb">str</span><span class="p">\]</span><span class="p">\]</span><span class="o">=</span><span class="kc">None</span><span class="muted">,</span></span><span class="params"><span class="n">params</span><span class="p">:</span><span class="n">Optional</span><span class="p">\[</span><span class="n">Dict</span><span class="p">\[</span><span class="nb">str</span><span class="p">, </span><span class="n">Any</span><span class="p">\]</span><span class="p">\]</span><span class="o">=</span><span class="kc">None</span><span class="muted">,</span></span><span class="params"><span class="n">recorded_at</span><span class="p">:</span><span class="n">Optional</span><span class="p">\[</span><span class="nb">str</span><span class="p">\]</span><span class="o">=</span><span class="kc">None</span><span class="muted">,</span></span><span class="params"><span class="n">thresholds</span><span class="p">:</span><span class="n">Optional</span><span class="p">\[</span><span class="n">Dict</span><span class="p">\[</span><span class="nb">str</span><span class="p">, </span><span class="n">Any</span><span class="p">\]</span><span class="p">\]</span><span class="o">=</span><span class="kc">None</span><span class="muted">,</span></span><span class="params"><span class="n">passed</span><span class="p">:</span><span class="n">Optional</span><span class="p">\[</span><span class="nb">bool</span><span class="p">\]</span><span class="o">=</span><span class="kc">None</span></span>):
216+
<span class="kw">def</span><span class="name">log_metric</span>(<span class="params"><span class="n">key</span><span class="p">:</span><span class="nb">str</span><span class="muted">,</span></span><span class="params"><span class="n">value</span><span class="p">:</span><span class="n">Union</span><span class="p">\[</span><span class="nb">int</span><span class="p">, </span><span class="nb">float</span><span class="p">\]</span><span class="muted">,</span></span><span class="params"><span class="n">inputs</span><span class="p">:</span><span class="n">Optional</span><span class="p">\[</span><span class="n">List</span><span class="p">\[</span><span class="nb">str</span><span class="p">\]</span><span class="p">\]</span><span class="o">=</span><span class="kc">None</span><span class="muted">,</span></span><span class="params"><span class="n">params</span><span class="p">:</span><span class="n">Optional</span><span class="p">\[</span><span class="n">Dict</span><span class="p">\[</span><span class="nb">str</span><span class="p">, </span><span class="n">Any</span><span class="p">\]</span><span class="p">\]</span><span class="o">=</span><span class="kc">None</span><span class="muted">,</span></span><span class="params"><span class="n">recorded_at</span><span class="p">:</span><span class="n">Optional</span><span class="p">\[</span><span class="nb">str</span><span class="p">\]</span><span class="o">=</span><span class="kc">None</span><span class="muted">,</span></span><span class="params"><span class="n">thresholds</span><span class="p">:</span><span class="n">Optional</span><span class="p">\[</span><span class="n">Dict</span><span class="p">\[</span><span class="nb">str</span><span class="p">, </span><span class="n">Any</span><span class="p">\]</span><span class="p">\]</span><span class="o">=</span><span class="kc">None</span><span class="muted">,</span></span><span class="params"><span class="n">passed</span><span class="p">:</span><span class="n">Optional</span><span class="p">\[</span><span class="nb">bool</span><span class="p">\]</span><span class="o">=</span><span class="kc">None</span></span>):
217217

218218
:::
219219

@@ -226,11 +226,12 @@ Unit metrics are key-value pairs where the key is the metric name and the value
226226
**Arguments**
227227

228228
- `key (str)`: The metric key
229-
- `value (Union[int, float])`: The metric value
229+
- `value (Union[int, float])`: The metric value (scalar)
230230
- `inputs (List[str])`: List of input IDs
231231
- `params (Dict[str, Any])`: Parameters used to generate the metric
232232
- `recorded_at (str)`: Timestamp when the metric was recorded
233233
- `thresholds (Dict[str, Any])`: Thresholds for the metric
234+
- `passed (bool)`: Whether the metric passed validation thresholds
234235

235236
## preview_template<span class="suffix"></span>
236237

@@ -422,6 +423,61 @@ The function may also include a docstring. This docstring will be used and logge
422423

423424
- The decorated function.
424425

426+
## scorer_decorator<span class="suffix"></span>
427+
428+
<!-- signatures.jinja2 -->
429+
430+
::: {.signature}
431+
432+
<span class="kw">def</span><span class="name">scorer</span>(<span class="param"><span class="n">func_or_id</span><span class="p">:</span><span class="n">Union</span><span class="p">\[</span><span class="n">Callable</span><span class="p">\[</span><span class="n">...</span><span class="p">, </span><span class="n">Any</span><span class="p">\]</span><span class="p">, </span><span class="nb">str</span><span class="p">, </span><span class="n">None</span><span class="p">\]</span><span class="o">=</span><span class="kc">None</span></span>)<span class="p"> → </span><span class="return-annotation"><span class="n">Callable</span><span class="p">\[</span><span class="p">\[</span><a href="/validmind/validmind/vm_models.qmd#f">validmind.vm_models.F</a><span class="p">\]</span><span class="p">, </span><a href="/validmind/validmind/vm_models.qmd#f">validmind.vm_models.F</a><span class="p">\]</span></span>:
433+
434+
:::
435+
436+
<!-- docstring.jinja2 -->
437+
438+
Decorator for creating and registering custom scorers
439+
440+
This decorator registers the function it wraps as a scorer function within ValidMind under the provided ID. Once decorated, the function can be run using the `validmind.scorer.run_scorer` function.
441+
442+
The scorer ID can be provided in three ways:
443+
444+
1. Explicit ID: `@scorer("validmind.scorer.classification.BrierScore")`
445+
1. Auto-generated from path: `@scorer()` - automatically generates ID from file path
446+
1. Function name only: `@scorer` - uses function name with validmind.scorer prefix
447+
448+
The function can take two different types of arguments:
449+
450+
- Inputs: ValidMind model or dataset (or list of models/datasets). These arguments must use the following names: `model`, `models`, `dataset`, `datasets`.
451+
- Parameters: Any additional keyword arguments of any type (must have a default value) that can have any name.
452+
453+
The function should return one of the following types:
454+
455+
- Table: Either a list of dictionaries or a pandas DataFrame
456+
- Plot: Either a matplotlib figure or a plotly figure
457+
- Scalar: A single number (int or float)
458+
- Boolean: A single boolean value indicating whether the test passed or failed
459+
- List: A list of values (for row-level metrics) or a list of dictionaries with consistent keys
460+
- Any other type: The output will be stored as raw data for use by calling code
461+
462+
When returning a list of dictionaries:
463+
464+
- All dictionaries must have the same keys
465+
- The list length must match the number of rows in the dataset
466+
- Each dictionary key will become a separate column when using assign_scores
467+
- Column naming follows the pattern: {model_id}_{metric_name}_{dict_key}
468+
469+
Note: Scorer outputs are not logged to the backend and are intended for use by other parts of the system (e.g., assign_scores method).
470+
471+
The function may also include a docstring. This docstring will be used and logged as the scorer's description.
472+
473+
**Arguments**
474+
475+
- `func_or_id (Union[Callable[..., Any], str, None], optional)`: Either the function to decorate or the scorer ID. If None or empty string, the ID is auto-generated from the file path. Defaults to None.
476+
477+
**Returns**
478+
479+
- The decorated function.
480+
425481
## log_text<span class="suffix"></span>
426482

427483
<!-- signatures.jinja2 -->

docs/validmind/datasets.qmd

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,6 @@ Example datasets that can be used with the ValidMind Library.
1212

1313
- [classification](datasets/classification.qmd)
1414
- [credit_risk](datasets/credit_risk.qmd)
15+
- [llm](datasets/llm.qmd)
1516
- [nlp](datasets/nlp.qmd)
1617
- [regression](datasets/regression.qmd)

0 commit comments

Comments
 (0)