Unverified Commit a318a36e authored by Gaétan Lepage's avatar Gaétan Lepage Committed by GitHub
Browse files

python3Packages.outlines: 1.2.1 -> 1.2.3 (#436595)

parents baa3367e f41518ce
Loading
Loading
Loading
Loading
+1170 −403

File changed.

Preview size limit exceeded, changes collapsed.

+39 −11
Original line number Diff line number Diff line
{
  lib,
  buildPythonPackage,
  fetchPypi,
  pythonOlder,
  fetchFromGitHub,

  # nativeBuildInputs
  cargo,
  pkg-config,
  rustPlatform,
  rustc,

  # buildInputs
  openssl,

  # build-system
  setuptools-rust,
  setuptools-scm,

  # dependencies
  interegular,
  jsonschema,

  # optional-dependencies
  datasets,
  numpy,
  pytestCheckHook,
  pydantic,
  scipy,
  torch,
  transformers,

  # tests
  pytestCheckHook,
}:

buildPythonPackage rec {
  pname = "outlines-core";
  version = "0.1.26";
  pyproject = true;
  version = "0.2.11";

  disabled = pythonOlder "3.8";
  pyproject = true;

  src = fetchPypi {
    inherit version;
    pname = "outlines_core";
    hash = "sha256-SBxDATQed8yPGDLWFnhK201GG0/sZYeOfA0sunFjoYk=";
  src = fetchFromGitHub {
    owner = "dottxt-ai";
    repo = "outlines-core";
    tag = version;
    hash = "sha256-lLMTHFytJT2MhnzT0RlRCaSBPijA81fjxUqx4IGfVo8=";
  };

  cargoDeps = rustPlatform.importCargoLock {
@@ -39,6 +50,11 @@ buildPythonPackage rec {
  };

  postPatch = ''
    substituteInPlace Cargo.toml \
      --replace-fail \
        'version = "0.0.0"' \
        'version = "${version}"'

    cp --no-preserve=mode ${./Cargo.lock} Cargo.lock
  '';

@@ -46,6 +62,7 @@ buildPythonPackage rec {
    cargo
    pkg-config
    rustPlatform.cargoSetupHook
    rustPlatform.maturinBuildHook
    rustc
  ];

@@ -74,16 +91,27 @@ buildPythonPackage rec {
    ];
  };

  pythonImportsCheck = [ "outlines_core" ];

  preCheck = ''
    rm -rf outlines_core
  '';

  nativeCheckInputs = [ pytestCheckHook ] ++ lib.flatten (lib.attrValues optional-dependencies);

  disabledTests = [
    # Tests that need to download from Hugging Face Hub.
    "test_complex_serialization"
    "test_create_fsm_index_tokenizer"
    "test_from_pretrained"
    "test_pickling_from_pretrained_with_revision"
    "test_reduced_vocabulary_with_rare_tokens"
  ];

  pythonImportsCheck = [ "outlines_core" ];
  disabledTestPaths = [
    # Downloads from Hugging Face Hub
    "tests/test_kernels.py"
  ];

  meta = {
    description = "Structured text generation (core)";
+140 −16
Original line number Diff line number Diff line
@@ -2,37 +2,55 @@
  lib,
  buildPythonPackage,
  fetchFromGitHub,

  # build-system
  setuptools,
  setuptools-scm,

  # dependencies
  airportsdata,
  interegular,
  cloudpickle,
  datasets,
  diskcache,
  genson,
  interegular,
  iso3166,
  jinja2,
  jsonschema,
  lark,
  nest-asyncio,
  numpy,
  outlines-core,
  pycountry,
  pydantic,
  lark,
  nest-asyncio,
  referencing,
  requests,
  torch,
  transformers,

  # tests
  anthropic,
  google-genai,
  jax,
  llama-cpp-python,
  ollama,
  openai,
  pytest-asyncio,
  pytest-mock,
  pytestCheckHook,
  tensorflow,
}:

buildPythonPackage rec {
  pname = "outlines";
  version = "1.2.1";
  version = "1.2.3";
  pyproject = true;

  src = fetchFromGitHub {
    owner = "outlines-dev";
    repo = "outlines";
    tag = version;
    hash = "sha256-WmkA+plIouEzleo3yoSxfCjK0E3EfMGQIPl20aIKxl8=";
    hash = "sha256-t1YSkFC56De9HkdDJN9WIpKDdHxZRfGRbFOtAiJxKUI=";
  };

  build-system = [
@@ -42,33 +60,139 @@ buildPythonPackage rec {

  dependencies = [
    airportsdata
    interegular
    cloudpickle
    datasets
    diskcache
    genson
    interegular
    iso3166
    jinja2
    jsonschema
    outlines-core
    pydantic
    lark
    nest-asyncio
    numpy
    outlines-core
    pycountry
    pydantic
    referencing
    requests
    torch
    transformers
    pycountry
  ];

  checkPhase = ''
    export HOME=$(mktemp -d)
    python3 -c 'import outlines'
  '';
  pythonImportsCheck = [ "outlines" ];

  nativeCheckInputs = [
    anthropic
    google-genai
    jax
    llama-cpp-python
    ollama
    openai
    pytest-asyncio
    pytest-mock
    pytestCheckHook
    tensorflow
  ];

  disabledTests = [
    # 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_generator_black_box_async_processor"
    "test_generator_black_box_sync_processor"
    "test_generator_init_multiple_output_type"
    "test_generator_steerable_output_type"
    "test_generator_steerable_processor"
    "test_llamacpp_type_adapter_format_output_type"
    "test_steerable_generator_call"
    "test_steerable_generator_init_cfg_output_type"
    "test_steerable_generator_init_invalid_output_type"
    "test_steerable_generator_init_other_output_type"
    "test_steerable_generator_init_valid_processor"
    "test_steerable_generator_stream"
    "test_transformer_tokenizer_convert_token_to_string"
    "test_transformer_tokenizer_decode"
    "test_transformer_tokenizer_encode"
    "test_transformer_tokenizer_eq"
    "test_transformer_tokenizer_getstate_setstate"
    "test_transformer_tokenizer_hash"
    "test_transformer_tokenizer_init"

    # TypeError: "Could not resolve authentication method.
    # Expected either api_key or auth_token to be set.
    # Or for one of the `X-Api-Key` or `Authorization` headers to be explicitly omitted.
    "test_anthopic_streaming"
    "test_anthropic_chat"
    "test_anthropic_simple_call"
    "test_anthropic_simple_vision"

    # ConnectionError: Failed to connect to Ollama.
    "test_ollama_async_chat"
    "test_ollama_async_direct"
    "test_ollama_async_json"
    "test_ollama_async_simple"
    "test_ollama_async_simple_vision"
    "test_ollama_async_stream"
    "test_ollama_async_stream_json"
    "test_ollama_chat"
    "test_ollama_direct"
    "test_ollama_json"
    "test_ollama_simple"
    "test_ollama_simple_vision"
    "test_ollama_stream"
    "test_ollama_stream_json"

    # openai.APIConnectionError: Connection error.
    "test_openai_async_chat"
    "test_openai_async_direct_call"
    "test_openai_async_simple_call"
    "test_openai_async_simple_call_multiple_samples"
    "test_openai_async_simple_json_schema"
    "test_openai_async_simple_pydantic"
    "test_openai_async_simple_pydantic_refusal"
    "test_openai_async_simple_vision"
    "test_openai_async_simple_vision_pydantic"
    "test_openai_async_streaming"
    "test_openai_chat"
    "test_openai_direct_call"
    "test_openai_simple_call"
    "test_openai_simple_call_multiple_samples"
    "test_openai_simple_json_schema"
    "test_openai_simple_pydantic"
    "test_openai_simple_pydantic_refusal"
    "test_openai_simple_vision"
    "test_openai_simple_vision_pydantic"
    "test_openai_streaming"
  ];

  disabledTestPaths = [
    # Try to dowload models from Hugging Face Hub
    "tests/backends/test_backends.py"
    "tests/backends/test_llguidance.py"
    "tests/backends/test_outlines_core.py"
    "tests/backends/test_xgrammar.py"
    "tests/models/test_llamacpp.py"
    "tests/models/test_llamacpp_tokenizer.py"
    "tests/models/test_transformers.py"
    "tests/models/test_transformers_multimodal.py"
    "tests/models/test_transformers_multimodal_type_adapter.py"
    "tests/models/test_transformers_type_adapter.py"

    # Requires unpackaged dottxt
    "tests/models/test_dottxt.py"

    # ValueError: Missing key inputs argument! To use the Google AI API, provide (`api_key`) arguments.
    "tests/models/test_gemini.py"
  ];

  meta = with lib; {
  meta = {
    description = "Structured text generation";
    homepage = "https://github.com/outlines-dev/outlines";
    license = licenses.asl20;
    maintainers = with maintainers; [ lach ];
    changelog = "https://github.com/dottxt-ai/outlines/releases/tag/${version}";
    license = lib.licenses.asl20;
    maintainers = with lib.maintainers; [ lach ];
  };
}