Home / File/ test_json_distance.py — langchain Source File

test_json_distance.py — langchain Source File

Architecture documentation for test_json_distance.py, a python file in the langchain codebase. 2 imports, 0 dependents.

File python CoreAbstractions MessageSchema 2 imports 11 functions

Entity Profile

Dependency Diagram

graph LR
  36d17d14_6c10_919f_8373_84bb63cbfaa3["test_json_distance.py"]
  120e2591_3e15_b895_72b6_cb26195e40a6["pytest"]
  36d17d14_6c10_919f_8373_84bb63cbfaa3 --> 120e2591_3e15_b895_72b6_cb26195e40a6
  f721ab35_1d21_91a7_a332_319f19037e06["langchain_classic.evaluation.parsing.json_distance"]
  36d17d14_6c10_919f_8373_84bb63cbfaa3 --> f721ab35_1d21_91a7_a332_319f19037e06
  style 36d17d14_6c10_919f_8373_84bb63cbfaa3 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import pytest

from langchain_classic.evaluation.parsing.json_distance import JsonEditDistanceEvaluator


@pytest.fixture
def json_distance_evaluator() -> JsonEditDistanceEvaluator:
    return JsonEditDistanceEvaluator()


@pytest.mark.requires("rapidfuzz")
def test_json_distance_evaluator_requires_input(
    json_distance_evaluator: JsonEditDistanceEvaluator,
) -> None:
    assert json_distance_evaluator.requires_input is False


@pytest.mark.requires("rapidfuzz")
def test_json_distance_evaluator_requires_reference(
    json_distance_evaluator: JsonEditDistanceEvaluator,
) -> None:
    assert json_distance_evaluator.requires_reference is True


@pytest.mark.requires("rapidfuzz")
def test_json_distance_evaluator_evaluation_name(
    json_distance_evaluator: JsonEditDistanceEvaluator,
) -> None:
    assert json_distance_evaluator.evaluation_name == "json_edit_distance"


@pytest.mark.requires("rapidfuzz")
def test_json_distance_evaluator_parse_json(
    json_distance_evaluator: JsonEditDistanceEvaluator,
) -> None:
    string = '{"a": 1}'
    result = json_distance_evaluator._parse_json(string)
    assert result == {"a": 1}


@pytest.mark.requires("rapidfuzz")
def test_json_distance_evaluator_evaluate_strings_simple_diff(
    json_distance_evaluator: JsonEditDistanceEvaluator,
) -> None:
    prediction = '{"a":           1}'
    reference = '{"a": 2}'
    result = json_distance_evaluator._evaluate_strings(
        prediction=prediction,
        reference=reference,
    )
    # Only 1 character flipped
    pytest.approx(1 / 7, result["score"])


@pytest.mark.requires("rapidfuzz")
def test_json_distance_evaluator_evaluate_strings_complex_diff(
    json_distance_evaluator: JsonEditDistanceEvaluator,
) -> None:
    prediction = '{"a":1, "b": {"c": 2, "d": 3}}'
    reference = '{"a": 1, "b": {"c": 2, "d": 4}}'
// ... (64 more lines)

Subdomains

Dependencies

  • langchain_classic.evaluation.parsing.json_distance
  • pytest

Frequently Asked Questions

What does test_json_distance.py do?
test_json_distance.py is a source file in the langchain codebase, written in python. It belongs to the CoreAbstractions domain, MessageSchema subdomain.
What functions are defined in test_json_distance.py?
test_json_distance.py defines 11 function(s): json_distance_evaluator, test_json_distance_evaluator_evaluate_strings_complex_diff, test_json_distance_evaluator_evaluate_strings_custom_operator_equal, test_json_distance_evaluator_evaluate_strings_list_diff, test_json_distance_evaluator_evaluate_strings_list_diff_length, test_json_distance_evaluator_evaluate_strings_list_same, test_json_distance_evaluator_evaluate_strings_simple_diff, test_json_distance_evaluator_evaluation_name, test_json_distance_evaluator_parse_json, test_json_distance_evaluator_requires_input, and 1 more.
What does test_json_distance.py depend on?
test_json_distance.py imports 2 module(s): langchain_classic.evaluation.parsing.json_distance, pytest.
Where is test_json_distance.py in the architecture?
test_json_distance.py is located at libs/langchain/tests/unit_tests/evaluation/parsing/test_json_distance.py (domain: CoreAbstractions, subdomain: MessageSchema, directory: libs/langchain/tests/unit_tests/evaluation/parsing).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free