mistral-vibe: 2.4.2 -> 2.5.0 (#500483)

This commit is contained in:
Nick Cao
2026-03-18 23:49:34 +00:00
committed by GitHub
7 changed files with 438 additions and 309 deletions
+27 -3
View File
@@ -12,14 +12,14 @@
python3Packages.buildPythonApplication (finalAttrs: {
pname = "mistral-vibe";
version = "2.4.2";
version = "2.5.0";
pyproject = true;
src = fetchFromGitHub {
owner = "mistralai";
repo = "mistral-vibe";
tag = "v${finalAttrs.version}";
hash = "sha256-r/9kMhkoLfj9oEifFun/bpIQYEouqm9YEiWZVk07+S8=";
hash = "sha256-5su0Qfg3M+Yq4pkptDOJhvM8VFGCaOLeeDijeFeywP4=";
};
build-system = with python3Packages; [
@@ -58,12 +58,14 @@ python3Packages.buildPythonApplication (finalAttrs: {
pyyaml
requests
rich
sounddevice
textual
textual-speedups
tomli-w
tree-sitter
tree-sitter-bash
watchfiles
websockets
zstandard
];
@@ -81,7 +83,29 @@ python3Packages.buildPythonApplication (finalAttrs: {
];
versionCheckKeepEnvironment = [ "HOME" ];
disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [
disabledTests = [
# Fail in the sandbox
# vibe.core.audio_recorder.audio_recorder_port.NoAudioInputDeviceError: No audio input device available
"test_audio_stream_yields_chunks"
"test_auto_stops_after_max_duration"
"test_buffer_mode_audio_stream_yields_nothing"
"test_can_record_multiple_times"
"test_cancel_discards_audio"
"test_manual_stop_prevents_on_expire"
"test_on_expire_receives_audio"
"test_peak_clamps_to_one"
"test_peak_updates_from_callback"
"test_silent_audio_has_zero_peak"
"test_start_sets_recording_state"
"test_start_when_already_recording_raises"
"test_stop_from_event_loop_does_not_block"
"test_stop_returns_empty_data_in_stream_mode"
"test_stop_returns_positive_duration"
"test_stop_returns_valid_wav"
"test_stop_without_drain_returns_promptly"
"test_stream_audio_does_not_leak_into_buffer_recording"
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
# AssertionError
"test_rebuilds_index_when_mass_change_threshold_is_exceeded"
"test_updates_index_incrementally_by_default"
@@ -0,0 +1,94 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
# build-system
pdm-backend,
# dependencies
anyio,
httpx,
httpx-ws,
msgspec,
typing-extensions,
# tests
pytest-asyncio,
pytestCheckHook,
}:
buildPythonPackage (finalAttrs: {
pname = "lmstudio";
version = "1.5.0";
pyproject = true;
src = fetchFromGitHub {
owner = "lmstudio-ai";
repo = "lmstudio-python";
tag = finalAttrs.version;
hash = "sha256-3LOoCWoQ7eXRPXHRio9Rtle07HcV3ZrWkrtVVY6mvfI=";
};
build-system = [
pdm-backend
];
dependencies = [
anyio
httpx
httpx-ws
msgspec
typing-extensions
];
pythonImportsCheck = [ "lmstudio" ];
nativeCheckInputs = [
pytest-asyncio
pytestCheckHook
];
disabledTests = [
# lmstudio.LMStudioRuntimeError: Local API host port is not yet resolved.
"test_session_disconnected_async"
];
disabledTestPaths = [
# ModuleNotFoundError: No module named 'pytest_subtests'
"tests/async/test_model_catalog_async.py"
"tests/sync/test_model_catalog_sync.py"
"tests/test_inference.py"
# lmstudio.LMStudioRuntimeError: Local API host port is not yet resolved.
"tests/async/test_embedding_async.py"
"tests/async/test_images_async.py"
"tests/async/test_inference_async.py"
"tests/async/test_llm_async.py"
"tests/async/test_model_handles_async.py"
"tests/async/test_repository_async.py"
"tests/async/test_sdk_bypass_async.py"
"tests/sync/test_embedding_sync.py"
"tests/sync/test_images_sync.py"
"tests/sync/test_inference_sync.py"
"tests/sync/test_llm_sync.py"
"tests/sync/test_model_handles_sync.py"
"tests/sync/test_repository_sync.py"
"tests/sync/test_sdk_bypass_sync.py"
"tests/test_convenience_api.py"
"tests/test_logging.py"
"tests/test_plugin_examples.py"
"tests/test_sessions.py"
"tests/test_timeouts.py"
];
__darwinAllowLocalNetworking = true;
meta = {
description = "LM Studio Python SDK";
homepage = "https://github.com/lmstudio-ai/lmstudio-python";
changelog = "https://github.com/lmstudio-ai/lmstudio-python/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ GaetanLepage ];
};
})
@@ -9,13 +9,10 @@
# dependencies
eval-type-backport,
httpx,
invoke,
opentelemetry-api,
opentelemetry-exporter-otlp-proto-http,
opentelemetry-sdk,
opentelemetry-semantic-conventions,
pydantic,
python-dateutil,
pyyaml,
typing-inspection,
# optional-dependencies
@@ -26,19 +23,20 @@
requests,
# tests
opentelemetry-sdk,
pytestCheckHook,
}:
buildPythonPackage (finalAttrs: {
pname = "mistralai";
version = "1.12.3";
version = "2.0.4";
pyproject = true;
src = fetchFromGitHub {
owner = "mistralai";
repo = "client-python";
tag = "v${finalAttrs.version}";
hash = "sha256-DaCAO4/DoskFuRgNcoLWBuRdnxXfYhsgY/WZu/s1wk0=";
hash = "sha256-SLPLj9rp8TTOSE3ldobBFU1+MpffzH1Bpshw+7LLUvU=";
};
preBuild = ''
@@ -50,18 +48,15 @@ buildPythonPackage (finalAttrs: {
];
pythonRelaxDeps = [
"opentelemetry-exporter-otlp-proto-http"
"opentelemetry-semantic-conventions"
];
dependencies = [
eval-type-backport
httpx
invoke
opentelemetry-api
opentelemetry-exporter-otlp-proto-http
opentelemetry-sdk
opentelemetry-semantic-conventions
pydantic
python-dateutil
pyyaml
typing-inspection
];
@@ -80,7 +75,15 @@ buildPythonPackage (finalAttrs: {
pythonImportsCheck = [ "mistralai" ];
nativeCheckInputs = [
opentelemetry-sdk
pytestCheckHook
]
++ finalAttrs.passthru.optional-dependencies.agents
++ finalAttrs.passthru.optional-dependencies.gcp;
disabledTests = [
# AssertionError: <Response [200 OK]> is not an instance of <class 'mistralai.extra.observability.otel.TracedResponse'>
"TestOtelTracing"
];
meta = {
File diff suppressed because it is too large Load Diff
@@ -32,17 +32,16 @@
pytestCheckHook,
}:
buildPythonPackage rec {
buildPythonPackage (finalAttrs: {
pname = "outlines-core";
version = "0.2.13";
version = "0.2.14";
pyproject = true;
src = fetchFromGitHub {
owner = "dottxt-ai";
repo = "outlines-core";
tag = version;
hash = "sha256-mfw/cOLZPRcL3HWmrm/SyA0zDCPWr5F19EWIUdNu9jM=";
tag = finalAttrs.version;
hash = "sha256-XmXD2tWG2277bC318Bn9RqeEE7j9VdauvWnBmFS8Lsk=";
};
cargoDeps = rustPlatform.importCargoLock {
@@ -53,7 +52,7 @@ buildPythonPackage rec {
substituteInPlace Cargo.toml \
--replace-fail \
'version = "0.0.0"' \
'version = "${version}"'
'version = "${finalAttrs.version}"'
cp --no-preserve=mode ${./Cargo.lock} Cargo.lock
'';
@@ -67,7 +66,7 @@ buildPythonPackage rec {
];
buildInputs = [
openssl.dev
openssl
];
build-system = [
@@ -97,7 +96,10 @@ buildPythonPackage rec {
rm -rf outlines_core
'';
nativeCheckInputs = [ pytestCheckHook ] ++ lib.concatAttrValues optional-dependencies;
nativeCheckInputs = [
pytestCheckHook
]
++ lib.concatAttrValues finalAttrs.passthru.optional-dependencies;
disabledTests = [
# Tests that need to download from Hugging Face Hub.
@@ -116,8 +118,8 @@ buildPythonPackage rec {
meta = {
description = "Structured text generation (core)";
homepage = "https://github.com/outlines-dev/outlines-core";
changelog = "https://github.com/dottxt-ai/outlines-core/releases/tag/${version}";
changelog = "https://github.com/dottxt-ai/outlines-core/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ danieldk ];
};
}
})
@@ -31,6 +31,7 @@
google-genai,
iso3166,
jax,
lmstudio,
llama-cpp-python,
mistralai,
ollama,
@@ -41,26 +42,41 @@
tensorflow,
}:
buildPythonPackage rec {
buildPythonPackage (finalAttrs: {
pname = "outlines";
version = "1.2.9";
version = "1.2.12";
pyproject = true;
src = fetchFromGitHub {
owner = "outlines-dev";
repo = "outlines";
tag = version;
hash = "sha256-QuS8IokiOPJeh59+W4FLoE9dvBCChf2li70+Ex3aIwg=";
tag = finalAttrs.version;
hash = "sha256-DPxtvaEbPv3go2WD9lqXB6AfTSmIA+MsqZwxXVcpyXk=";
};
# Fix mistralai>=2.0 compatibility
postPatch = ''
substituteInPlace tests/models/test_mistral_type_adapter.py \
--replace-fail \
"from mistralai import (" \
"from mistralai.client.models import ("
substituteInPlace outlines/models/mistral.py \
--replace-fail \
"from mistralai import UserMessage" \
"from mistralai.client.models import UserMessage"
substituteInPlace outlines/models/mistral.py tests/models/test_mistral.py \
--replace-fail \
"from mistralai import Mistral" \
"from mistralai.client import Mistral"
'';
build-system = [
setuptools
setuptools-scm
];
pythonRelaxDeps = [
"outlines_core"
];
dependencies = [
cloudpickle
datasets
@@ -94,6 +110,7 @@ buildPythonPackage rec {
iso3166
jax
llama-cpp-python
lmstudio
mistralai
ollama
openai
@@ -109,11 +126,17 @@ buildPythonPackage rec {
];
disabledTests = [
# Incompatible with latest mistralai (AssertionError: assert False)
"test_mistral_type_adapter_input_chat"
"test_mistral_type_adapter_input_list"
"test_mistral_type_adapter_input_text"
# Try to dowload models from Hugging Face Hub
"test_application_callable_call"
"test_application_generator_reuse"
"test_application_template_call"
"test_application_template_error"
"test_check_hf_chat_template"
"test_generator_black_box_async_processor"
"test_generator_black_box_sync_processor"
"test_generator_init_multiple_output_type"
@@ -226,8 +249,8 @@ buildPythonPackage rec {
meta = {
description = "Structured text generation";
homepage = "https://github.com/outlines-dev/outlines";
changelog = "https://github.com/dottxt-ai/outlines/releases/tag/${version}";
changelog = "https://github.com/dottxt-ai/outlines/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ lach ];
};
}
})
+2
View File
@@ -9213,6 +9213,8 @@ self: super: with self; {
lmnotify = callPackage ../development/python-modules/lmnotify { };
lmstudio = callPackage ../development/python-modules/lmstudio { };
lmtpd = callPackage ../development/python-modules/lmtpd { };
lnkparse3 = callPackage ../development/python-modules/lnkparse3 { };