Skip to content

Commit d511647

Browse files
authored
Merge pull request #2631 from confident-ai/hotfix/default-model
Hotfix/default model
2 parents 551f2db + 934e001 commit d511647

17 files changed

Lines changed: 2530 additions & 105 deletions

.scripts/changelog/generate.py

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@
3232
OWNER = "confident-ai"
3333
REPO = "deepeval"
3434

35-
START_MARKER = "<!-- DeepEval release notes start -->"
35+
START_MARKER = "{/* DeepEval release notes start */}"
36+
LEGACY_START_MARKER = "<!-- DeepEval release notes start -->"
3637

3738
CATEGORY_ORDER = [
3839
"Backward Incompatible Change",
@@ -148,21 +149,25 @@ class AiMonthSummary(BaseModel):
148149
# - Prefer the stable marker (lets humans edit the visible link/text)
149150
# - Fall back to parsing the link if the marker is missing
150151
BULLET_PR_RE = re.compile(r"\[#(\d+)\]\(")
151-
BULLET_PR_MARKER_RE = re.compile(r"<!--\s*pr:(\d+)\s*-->")
152+
BULLET_PR_MARKER_RE = re.compile(
153+
r"(?:<!--\s*pr:(\d+)\s*-->|\{/\*\s*pr:(\d+)\s*\*/\})"
154+
)
152155
BULLET_TAIL_RE = re.compile(
153-
r"\s*\(\[#\d+\]\([^)]+\)\)\s*<!--\s*pr:\d+\s*-->.*$"
156+
r"\s*\(\[#\d+\]\([^)]+\)\)\s*(?:<!--\s*pr:\d+\s*-->|\{/\*\s*pr:\d+\s*\*/\}).*$"
154157
)
155158

156159
# Optional ignore list to be placed right after START_MARKER to avoid confusing the parser:
157160
# add a list of PR numbers you would like to be excluded from the generated changelog.
158-
# <!-- changelog-ignore:
161+
# {/* changelog-ignore:
159162
# - 1234
160163
# - 5678
161-
# -->
164+
# */}
162165
IGNORE_BLOCK_TOP_RE = re.compile(
163-
r"(?is)^\s*<!--\s*changelog-ignore:.*?-->\s*\n*"
166+
r"(?is)^\s*(?:<!--\s*changelog-ignore:.*?-->|\{/\*\s*changelog-ignore:.*?\*/\})\s*\n*"
167+
)
168+
IGNORE_BLOCK_ANY_RE = re.compile(
169+
r"(?is)(?:<!--\s*changelog-ignore:(.*?)-->|\{/\*\s*changelog-ignore:(.*?)\*/\})"
164170
)
165-
IGNORE_BLOCK_ANY_RE = re.compile(r"(?is)<!--\s*changelog-ignore:(.*?)-->")
166171

167172
###############
168173
# Git helpers #
@@ -761,8 +766,16 @@ def _pull_top_ignore_block(s: str) -> Tuple[str, str]:
761766
rest = s2[matched.end() :]
762767
return ignore_block.rstrip("\n") + "\n", rest
763768

764-
if START_MARKER in text:
765-
before, _, after = text.partition(START_MARKER)
769+
marker_in_text = next(
770+
(
771+
marker
772+
for marker in (START_MARKER, LEGACY_START_MARKER)
773+
if marker in text
774+
),
775+
None,
776+
)
777+
if marker_in_text:
778+
before, _, after = text.partition(marker_in_text)
766779
ignore_block, rest = _pull_top_ignore_block(after)
767780
prefix = before.rstrip() + "\n\n" + START_MARKER + "\n"
768781
if ignore_block:
@@ -792,21 +805,21 @@ def _pull_top_ignore_block(s: str) -> Tuple[str, str]:
792805

793806
def parse_ignore_prs(text: str) -> set[int]:
794807
"""
795-
Parse PR numbers from one or more `<!-- changelog-ignore: ... -->` HTML comment blocks.
808+
Parse PR numbers from one or more changelog-ignore comment blocks.
796809
797810
Should be placed immediately after the `START_MARKER`, for example:
798811
799-
<!-- changelog-ignore:
812+
{/* changelog-ignore:
800813
- 1234
801814
- 5678
802-
-->
815+
*/}
803816
804817
Lines may contain comments which can be used to document why a PR is being ignored
805818
Any integers found in the block are treated as PR numbers.
806819
"""
807820
ignored: set[int] = set()
808821
for matched in IGNORE_BLOCK_ANY_RE.finditer(text):
809-
block = matched.group(1)
822+
block = next(group for group in matched.groups() if group is not None)
810823
for line in block.splitlines():
811824
line = line.strip()
812825
if not line or line.startswith("#"):
@@ -875,7 +888,7 @@ def parse_body(body: str) -> ChangelogIndex:
875888
)
876889
if not matched:
877890
continue
878-
pr = int(matched.group(1))
891+
pr = int(next(group for group in matched.groups() if group))
879892
idx[month][category][version][pr] = line.rstrip()
880893

881894
return idx
@@ -1143,7 +1156,7 @@ def _tick() -> None:
11431156
author = f" ({user_display})"
11441157
line = (
11451158
f"- {title_out} ([#{pr_num}](https://github.com/{OWNER}/{REPO}/pull/{pr_num})) "
1146-
f"<!-- pr:{pr_num} -->{author}"
1159+
f"{{/* pr:{pr_num} */}}{author}"
11471160
)
11481161
idx[month][category][tag][pr_num] = line
11491162
_status(f"[{tag}] PR #{pr_num}: done")

CITATION.cff

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ authors:
66
- family-names: Vongthongsri
77
given-names: Kritin
88
title: deepeval
9-
version: 3.9.7
10-
date-released: "2026-03-30"
9+
version: 3.9.8
10+
date-released: "2026-04-26"
1111
url: https://confident-ai.com
1212
repository-code: https://github.com/confident-ai/deepeval
1313
license: Apache-2.0

deepeval/_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__: str = "3.9.7"
1+
__version__: str = "3.9.8"

docs/components/mdx.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ import LinkCards from "@site/src/components/LinkCards";
1818
import TechStackCards from "@site/src/components/TechStackCards";
1919
import { FAQs } from "@site/src/components/FAQ";
2020
import BlogPostMeta from "@site/src/components/BlogPostMeta";
21+
import ChangelogContributors from "@site/src/components/ChangelogContributors";
22+
import RepoContributors from "@site/src/sections/home/RepoContributors";
2123

2224
function DefaultLLMModel() {
2325
return <code>{DEFAULT_LLM_MODEL}</code>;
@@ -45,6 +47,8 @@ export function getMDXComponents(components?: MDXComponents) {
4547
TechStackCards,
4648
FAQs,
4749
BlogPostMeta,
50+
ChangelogContributors,
51+
RepoContributors,
4852
DefaultLLMModel,
4953
...components,
5054
} satisfies MDXComponents;

docs/content/changelog/changelog-2024.mdx

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,22 @@ title: 🐲 2024
44
sidebar_label: 🐲 2024
55
---
66

7+
2024 was all about building DeepEval into a complete evaluation framework:
8+
9+
- **DeepEval 2.0** shipped with refreshed packaging, broader Python support, and smoother installs
10+
- **Red teaming** expanded with broader vulnerability coverage, stronger attack generation, and updated safety graders
11+
- **Dataset generation** became more practical with richer synthesizer, dataset, and golden-management workflows
12+
- **Metric coverage** grew across RAG, summarization, hallucination, bias, toxicity, and custom LLM-as-a-judge use cases
13+
- **Provider flexibility** improved with custom OpenAI endpoints, local model options, and broader model configuration
14+
- **Documentation** matured with clearer getting-started flows, dataset tutorials, and platform guidance
15+
- **Reliability** improved through dependency updates, packaging fixes, and better evaluation ergonomics
16+
17+
## Thank you to our contributors
18+
19+
First things first, DeepEval exists because of everyone who opened issues, reviewed changes, wrote docs, and merged code this year. Thank you for shaping every release with us.
20+
21+
<ChangelogContributors year={2024} limit={96} />
22+
723
{/* DeepEval release notes start */}
824

925
## December

docs/content/changelog/changelog-2025.mdx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,13 @@ sidebar_label: 🐍 2025
1414
- **Reliability** improved with better async handling, timeouts, and retries
1515
- **Documentation** expanded with comprehensive tutorials to help teams ship confidently
1616

17+
18+
## Thank you to our contributors
19+
20+
First things first, DeepEval exists because of everyone who opened issues, reviewed changes, wrote docs, and merged code this year. Thank you for shaping every release with us.
21+
22+
<ChangelogContributors year={2025} limit={96} />
23+
1724
## December
1825

1926
December strengthened evaluation, multimodal support, and prompt optimization. Multimodal test cases now flow through standard evaluation paths with better placeholder detection, Azure OpenAI support, and clearer validation errors. Prompt optimization expanded with GEPA plus new algorithms, alongside more consistent schema-based outputs and broader provider configuration via typed `Settings`.

0 commit comments

Comments
 (0)