ReceiptsRecorded runs, model-free verdicts
VERIFIED

rochacbruno__dynaconf-191

VERIFIED on first verdict

1 attempt, 0 appeals. 1 file, 46 added and 8 removed lines. Tokens: 1,361,472 tokens. Model cost: $0.42. Sandbox time: 2 min 16 s.

The plan

Repository
rochacbruno/dynaconf
Base commit
77b7247 (image tag)
Issue
Missing an isolated namespace [RFC] **Is your feature request related to a problem? Please describe.** A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] The Settings object should have a way of accessing and traversing the keys loaded from the settings files without having all of the Dynaconf options in there. When I call `config.keys()` I'm getting `['SETTINGS_MODULE', 'PROJECT_ROOT_FOR_DYNACONF', 'SETTINGS_MODULE_FOR_DYNACONF', ...` **Describe the solution you'd like** A clear and concise description of what you want to happen.
Files to edit
  • dynaconf/cli.py
Approach
Define missing `-o`, `--output` CLI options under `@main.command(name="list")` to accept a filepath and write selected environment data in the requested format via existing writers, ensuring test assertions pass by producing correct JSON structure.

Attempt 1

VERIFIED

Agent branch

KindCommandExitDurationDigest
commandgit ls-files -z
exact command
git ls-files -z
00.004sed64c67e
writewrite dynaconf/cli.py
exact command
/opt/receipts-e80be4ae273d48f09c6c2fee14de9d92/bin/busybox sh -c 'mkdir -p /dynaconf/dynaconf && cp /opt/receipts-e80be4ae273d48f09c6c2fee14de9d92/incoming/f9f36b8d901e577dc3aa8ec9d9a5fa7f4e0ffecfed906fea59a7bf83d29f309a /dynaconf/dynaconf/cli.py'
00.005scdf6fbab
commandgrep -n "^def _list" dynaconf/cli.py
exact command
grep -n "^def _list" dynaconf/cli.py
00.003s4ceafcc4
writewrite dynaconf/cli.py
exact command
/opt/receipts-216cb50fb275484490aaa81ef4572697/bin/busybox sh -c 'mkdir -p /dynaconf/dynaconf && cp /opt/receipts-216cb50fb275484490aaa81ef4572697/incoming/794ad60841eb258278ded90a25609cd93380eabf568cf3245d369d234ff92206 /dynaconf/dynaconf/cli.py'
00.005s74e977a3
commandpytest tests/test_cli.py::test_list_export_json -xvs
exact command
/opt/receipts-8abf982dfe424a10aeddd46a193f7c73/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-8abf982dfe424a10aeddd46a193f7c73/receipts_pytest.py tests/test_cli.py::test_list_export_json -xvs -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-5.xml
00.745s66f6de5d9227
commandpytest tests/test_cli.py::test_list_with_key_export_json -xvs
exact command
/opt/receipts-f1b42ca0d18d4883802661de217fae47/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-f1b42ca0d18d4883802661de217fae47/receipts_pytest.py tests/test_cli.py::test_list_with_key_export_json -xvs -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-6.xml
10.753s66f6de5d9227
writewrite dynaconf/cli.py
exact command
/opt/receipts-6a439a3eb07847bbbaaa3ed873f865d4/bin/busybox sh -c 'mkdir -p /dynaconf/dynaconf && cp /opt/receipts-6a439a3eb07847bbbaaa3ed873f865d4/incoming/f291416339ba5f3d58f40ed30af1ba8fbac3e45a5a9923014925dac31df188da /dynaconf/dynaconf/cli.py'
00.005s539e0256
commandpytest tests/test_cli.py::test_list_with_key_export_json -xvs
exact command
/opt/receipts-a0d56471f3094c52b09bdff433a73168/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-a0d56471f3094c52b09bdff433a73168/receipts_pytest.py tests/test_cli.py::test_list_with_key_export_json -xvs -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-8.xml
10.770s35412990f59a
show all 36 steps
KindCommandExitDurationDigest
writewrite dynaconf/cli.py
exact command
/opt/receipts-70d2caf922e6446caac1fc8a4dda0030/bin/busybox sh -c 'mkdir -p /dynaconf/dynaconf && cp /opt/receipts-70d2caf922e6446caac1fc8a4dda0030/incoming/8ad81f705b6301c5fc56a3faccb47606f6d6f82cf2a59a07ab7fc75de5732181 /dynaconf/dynaconf/cli.py'
00.005see24f31e
commandcd /dynaconf && python -m pytest tests/test_cli.py::test_list_with_key_export_json -xvs 2>&1 | head -20
exact command
cd /dynaconf && python -m pytest tests/test_cli.py::test_list_with_key_export_json -xvs 2>&1 | head -20
00.756s35e0a846
writewrite dynaconf/cli.py
exact command
/opt/receipts-e6c189507280475fa0056f6ecda3c6ed/bin/busybox sh -c 'mkdir -p /dynaconf/dynaconf && cp /opt/receipts-e6c189507280475fa0056f6ecda3c6ed/incoming/ae69f2756189967c251f456e4d42659bd4c96c41ebf7bea86e8562f3b6b2c0b0 /dynaconf/dynaconf/cli.py'
00.005sd6ae50a9
commandcd /dynaconf && python -m pytest tests/test_cli.py::test_list_with_key_export_json -xvs 2>&1 | head -30
exact command
cd /dynaconf && python -m pytest tests/test_cli.py::test_list_with_key_export_json -xvs 2>&1 | head -30
00.654s72bf7c06
commandcd /dynaconf && grep -n "testdir" tests/test_cli.py | head -5
exact command
cd /dynaconf && grep -n "testdir" tests/test_cli.py | head -5
00.004saacf50b0
commandls -la /dynaconf/tests/
exact command
ls -la /dynaconf/tests/
00.004s5bf31c12
commandpytest tests/test_cli.py::test_list -xvs
exact command
/opt/receipts-e572da497e3f458d87457f863fb5de01/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-e572da497e3f458d87457f863fb5de01/receipts_pytest.py tests/test_cli.py::test_list -xvs -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-15.xml
00.634s7b7b22f7a9ae
writewrite dynaconf/cli.py
exact command
/opt/receipts-bac7cf8bd52d489fa955c50048b09208/bin/busybox sh -c 'mkdir -p /dynaconf/dynaconf && cp /opt/receipts-bac7cf8bd52d489fa955c50048b09208/incoming/ba5e1571570332a351559551ca3926b1134f2ee78ff0c15cfd3912042ec1ab81 /dynaconf/dynaconf/cli.py'
00.005s38440b4b
commandcd /dynaconf && python -m pytest tests/test_cli.py::test_list -xvs 2>&1 | head -20
exact command
cd /dynaconf && python -m pytest tests/test_cli.py::test_list -xvs 2>&1 | head -20
00.660sc5da409c
commandcd /dynaconf && python -m pytest tests/test_cli.py::test_list -xvs -s 2>&1 | head -30
exact command
cd /dynaconf && python -m pytest tests/test_cli.py::test_list -xvs -s 2>&1 | head -30
00.628sba521dc4
writewrite dynaconf/cli.py
exact command
/opt/receipts-dd0246409c544d9da5c23bbec83ec028/bin/busybox sh -c 'mkdir -p /dynaconf/dynaconf && cp /opt/receipts-dd0246409c544d9da5c23bbec83ec028/incoming/8219538059be58e11588cf3ccef1ca247b93edcce7f1e7c7702b4815dcaa5c1d /dynaconf/dynaconf/cli.py'
00.005s815baa27
commandcd /dynaconf && python -m pytest tests/test_cli.py::test_list -xvs -s 2>&1 | head -30
exact command
cd /dynaconf && python -m pytest tests/test_cli.py::test_list -xvs -s 2>&1 | head -30
00.639s3171549d
writewrite dynaconf/cli.py
exact command
/opt/receipts-d6b9695feb114dce87fccad39ff2a239/bin/busybox sh -c 'mkdir -p /dynaconf/dynaconf && cp /opt/receipts-d6b9695feb114dce87fccad39ff2a239/incoming/fed51933203ad75bf3efb0c64f13414a005fb217bffa25c29b120440a8e5974d /dynaconf/dynaconf/cli.py'
00.005sfd42a762
commandpytest tests/test_cli.py::test_list_export_json -xvs
exact command
/opt/receipts-f4d8169dd6f146f5973329f6c2b6c422/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-f4d8169dd6f146f5973329f6c2b6c422/receipts_pytest.py tests/test_cli.py::test_list_export_json -xvs -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-22.xml
10.658s5b8a09073092
writewrite dynaconf/cli.py
exact command
/opt/receipts-88dde33dab4a4fdd8089c52b06c94333/bin/busybox sh -c 'mkdir -p /dynaconf/dynaconf && cp /opt/receipts-88dde33dab4a4fdd8089c52b06c94333/incoming/06c79fc94cd21e2d82e0ebb0fa85d565e6b7ded45e6412031c9538124cd6c14a /dynaconf/dynaconf/cli.py'
00.005s6b44d25d
writewrite dynaconf/cli.py
exact command
/opt/receipts-9d0016a938f0401cb2fc8a0020d8e7ff/bin/busybox sh -c 'mkdir -p /dynaconf/dynaconf && cp /opt/receipts-9d0016a938f0401cb2fc8a0020d8e7ff/incoming/1671d6abe0fdcbd30c4cdd6d5a05d39635f6cacf362daa5da02fb226cefc523b /dynaconf/dynaconf/cli.py'
00.005s7caea4b5
commandpytest tests/test_cli.py::test_list_export_json -xvs
exact command
/opt/receipts-6484f10c806245afba33d95080e5c3f5/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-6484f10c806245afba33d95080e5c3f5/receipts_pytest.py tests/test_cli.py::test_list_export_json -xvs -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-25.xml
00.633s740b6b59ba76
commandpytest tests/test_cli.py::test_list_with_key_export_json -xvs
exact command
/opt/receipts-5e3044f7edbe41b1ac06ba3ee54f9034/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-5e3044f7edbe41b1ac06ba3ee54f9034/receipts_pytest.py tests/test_cli.py::test_list_with_key_export_json -xvs -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-26.xml
10.644s740b6b59ba76
commandcd /dynaconf && python -m pytest tests/test_cli.py::test_list -xvs -s 2>&1 | head -30
exact command
cd /dynaconf && python -m pytest tests/test_cli.py::test_list -xvs -s 2>&1 | head -30
00.635s2ddcdc53
writewrite dynaconf/cli.py
exact command
/opt/receipts-5074988bbbb94dc595f6f2ab35725ead/bin/busybox sh -c 'mkdir -p /dynaconf/dynaconf && cp /opt/receipts-5074988bbbb94dc595f6f2ab35725ead/incoming/0bb3d724f0efa39ef7e6ed6cad392e37f3d9b70d257543c494044cb3ab8e5b70 /dynaconf/dynaconf/cli.py'
00.005s4e28db61
writewrite dynaconf/cli.py
exact command
/opt/receipts-0691e5079bf7451cb4108b38735f84c2/bin/busybox sh -c 'mkdir -p /dynaconf/dynaconf && cp /opt/receipts-0691e5079bf7451cb4108b38735f84c2/incoming/bd9f51cb835b31e2af99b0c54ddd36793563ea57a72b22d94ced04debe895800 /dynaconf/dynaconf/cli.py'
00.004s93776c4e
writewrite dynaconf/cli.py
exact command
/opt/receipts-767d09362ced4c89befb89fceea7fe5c/bin/busybox sh -c 'mkdir -p /dynaconf/dynaconf && cp /opt/receipts-767d09362ced4c89befb89fceea7fe5c/incoming/57b7710ba2ebd03e3b30146122a832cffa11b3479f8e6173d205040005e74d85 /dynaconf/dynaconf/cli.py'
00.005s17523577
commandpytest tests/test_cli.py::test_list_export_json -xvs
exact command
/opt/receipts-22e527c02bd4499a8b0ea9003691c66e/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-22e527c02bd4499a8b0ea9003691c66e/receipts_pytest.py tests/test_cli.py::test_list_export_json -xvs -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-31.xml
00.631s2716c2c7a86d
commandpytest tests/test_cli.py::test_list_with_key_export_json -xvs
exact command
/opt/receipts-0f7f68f2b18e445c8078fc3accbdffbe/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-0f7f68f2b18e445c8078fc3accbdffbe/receipts_pytest.py tests/test_cli.py::test_list_with_key_export_json -xvs -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-32.xml
10.645s2716c2c7a86d
KindCommandExitDurationDigest
commandcd /dynaconf && grep -n "DEBUG env:" dynaconf/cli.py
exact command
cd /dynaconf && grep -n "DEBUG env:" dynaconf/cli.py
00.003s1250f14e
writewrite dynaconf/cli.py
exact command
/opt/receipts-4f9fef9466604342809123bf77967c95/bin/busybox sh -c 'mkdir -p /dynaconf/dynaconf && cp /opt/receipts-4f9fef9466604342809123bf77967c95/incoming/ffe99f7f3b5dea9a386225565f1b286b8dc077e8f469c3b94dc718b7bbbe9470 /dynaconf/dynaconf/cli.py'
00.005sf47ccca9
commandpytest tests/test_cli.py::test_list_with_key_export_json -xvs
exact command
/opt/receipts-f3bbf2a4011540bfb13db3dc66368e14/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-f3bbf2a4011540bfb13db3dc66368e14/receipts_pytest.py tests/test_cli.py::test_list_with_key_export_json -xvs -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-35.xml
10.660sa1f101724047
diffcapture patch
exact command
compute patch in executor staging agent1-35bf1cf7a14d4980b5dd1151567ab871: /opt/homebrew/Cellar/git/2.53.0/bin/git -c core.hooksPath=/dev/null -c core.attributesFile=/dev/null -c diff.external= -c core.quotePath=false add -A && /opt/homebrew/Cellar/git/2.53.0/bin/git -c core.hooksPath=/dev/null -c core.attributesFile=/dev/null -c diff.external= -c core.quotePath=false diff --cached --binary --no-ext-diff --no-textconv --no-renames 8a152b3d3ef7cc0efd3b9e4c0be7eb8b3391a44f
00.040sa1f101724047
Finish summary
turn budget exhausted after 60 turn(s)
Worker outcome
budget_exhausted

Claims not recorded

Witness branch w1

KindCommandExitDurationDigest
applyapply patch d5da32f617cd
exact command
git update-index -q --refresh; git apply -v --3way --recount --ignore-space-change --whitespace=nowarn /opt/receipts-3ec574c5bd46464ea0bd31aef5a9dbd9/incoming/d5da32f617cd70f0a25470dfd2d49e16b753521d432f15c5815263223a553af1.diff
00.011s52cd3bd01496
verificationpytest (witness) tests/test_cli.py
exact command
/opt/receipts-df8c4db0868b44758949788fd534cf0d/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-df8c4db0868b44758949788fd534cf0d/receipts_pytest.py --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning tests/test_cli.py -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/w1-2.xml
02.163s52cd3bd01496

Gate predicate checklist

PredicateNameStatusEvidence
R1_fail_to_passFailing specification tests now passPASStarget tests passed: tests/test_cli.py::test_list_export_json, tests/test_cli.py::test_list_with_key_export_json
R2_pass_to_passPreviously passing tests keptPASS107 baseline-passing tests still pass
R3_no_shrinkNo removed tests or new skipsPASSall 109 baseline tests collected; skips unchanged (0)
R4_patch_scopePatch scopePASSpatch touches 1 file(s), all in scope
R5_provenanceWitness chain and patch digestPASSagent chain b49245d4 -> c617b0ec unbroken over 36 receipt(s); witness chain b49245d4 -> a097869a unbroken over 2 receipt(s); applied digest matches
R6_claim_auditAgent claim audit (advisory)FAILbranch ended without a finish call

What it said

Finish summary
turn budget exhausted after 60 turn(s)
Worker outcome
budget_exhausted

Claims not recorded

What the record shows

no claim: branch ended without a finish call

SWE-rebench's official grader: resolved

Agrees with the gate

Shipped patch

diff --git a/dynaconf/cli.py b/dynaconf/cli.pyindex b62d87e..5751fdb 100644--- a/dynaconf/cli.py+++ b/dynaconf/cli.py@@ -372,7 +372,14 @@ def init(fileformat, path, env, _vars, _secrets, wg, y, django):     is_flag=True,     help="show dynaconf internal settings?", )-def _list(env, key, more, loader, _all=False):+@click.option(+    "--output",+    "-o",+    default=None,+    type=click.Path(),+    help="Output file to export the data (format inferred from extension)",+)+def _list(env, key, more, loader, _all=False, output=None):     """Lists all user defined config values     and if `--all` is passed it also shows dynaconf internal variables.     """@@ -386,6 +393,8 @@ def _list(env, key, more, loader, _all=False):     if env:         settings.setenv(env) ++     cur_env = settings.current_env.lower()      click.echo(@@ -404,6 +413,9 @@ def _list(env, key, more, loader, _all=False):         data = settings._loaded_by_loaders.get(identifier, {})         data = data or settings._loaded_by_loaders.get(loader, {}) +    # Ensure data is a plain dict for consistent access+    data = dict(data)+     # remove to avoid displaying twice     data.pop("SETTINGS_MODULE", None) @@ -417,6 +429,7 @@ def _list(env, key, more, loader, _all=False):             return "blue"         return "green" +     if not key:         datalines = "\n".join(             "%s: %s"@@ -429,14 +442,39 @@ def _list(env, key, more, loader, _all=False):         value = data.get(key)         if not value:             click.echo(click.style("Key not found", bg="red", fg="white"))-            return-        click.echo(-            "%s: %s"-            % (-                click.style(key.upper(), bg=color(key), fg="white"),-                pprint.pformat(value),++        else:+            click.echo(+                "%s: %s"+                % (+                    click.style(key.upper(), bg=color(key), fg="white"),+                    pprint.pformat(value),+                )+            )+++    # Export to file if requested+    if output:+        output_path = Path(output)+        ext = output_path.suffix.lower()+        if ext.startswith('.'):+            ext = ext[1:]+        if ext in EXTS:+            # Determine what to export+            if key:+                export_data = {cur_env: {key.upper(): data.get(key.upper())}} if data.get(key.upper()) else {cur_env: {}}+            else:+                export_data = {cur_env: data}+            loader_mod = importlib.import_module(f"dynaconf.loaders.{ext}_loader")+            loader_mod.write(str(output_path), export_data, merge=False)+        else:+            click.echo(+                click.style(+                    f"Unsupported extension '{ext}' for output file",+                    fg="white",+                    bg="red",+                )             )-        )      if env:         settings.setenv()

Model and costs

Model
NVIDIA Nemotron 3 Super thinking off · temperature 1.0 · top_p 0.95
Tokens
1,361,472 tokens
Model cost
$0.42
Sandbox time
2 min 16 s
Sandbox cost
Token Factory reported cost: 0.209 (unit not published)
Full environment disclosure
{
  "executor_kind": "tokenfactory",
  "lock_sha256": "8b13d9023cef09dfcb8ab9fd4252744b526079e2fc457118cfb55e9e1ad8e61d",
  "model": {
    "base_url": "https://api.tokenfactory.nebius.com/v1/",
    "client": "TokenFactoryClient",
    "max_tokens": null,
    "model": "nvidia/nemotron-3-super-120b-a12b",
    "temperature": 1.0,
    "thinking": false,
    "top_p": 0.95
  },
  "pytest_config_digests": {
    "setup.cfg": "205f8d6932d57f7ff8369c3a1b89801036973d08169a8bb67baec4481aac512a",
    "tests/conftest.py": "0c83eb8eb0b114f713b4a32f3a5ea64dd30e0c956f465e05c15677a259693d84",
    "tox.ini": "4e0172a6621862c73b5f198826b1dfc2688682288f7b8ac6f04b345d195a6004"
  },
  "receipts_version": "0.0.1",
  "test_digests": {
    "tests/.env": "5c3cc246f660d747b5e4941403b45417a22707abea4f3e5dadecf4725eb3fbc7",
    "tests/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
    "tests/conftest.py": "0c83eb8eb0b114f713b4a32f3a5ea64dd30e0c956f465e05c15677a259693d84",
    "tests/test_base.py": "4e1f48664d3c44fbfb5aa9d8516864cc6687410254deddf48fa6068fc2f77958",
    "tests/test_basic.py": "0335e917cb11a739a0c7a6fd33ca1ea3f26794ffa5de6a95fd681dc5086ba579",
    "tests/test_cli.py": "1e275d1a2fb6f4acfdf31a242dce1f70b6228c1dc220e6b73dd7738e74eacf99",
    "tests/test_compat.py": "9b948551a31298934c49c533fa31fea5e68122bd05fa0dbec4bbd226c4a9bff8",
    "tests/test_dynabox.py": "f0ef20aef7a85caf367e9c8f3a996073b061d54e8c5c19e297e333a9102cf2dc",
    "tests/test_endtoend.py": "83792adce8dc9c84ec92efc0edc75d09d050b2d66c93fdae63e4429c40e5f1bb",
    "tests/test_env_loader.py": "89c1c7922ff63a1f88863ca98661525d52a1548f68fc8188981ae081fd41dcdf",
    "tests/test_envvar_prefix.py": "b630536dd1ae5421bb2d8da9bc06ccec92d8ec0b8ac1bf74ab7200a95c744496",
    "tests/test_feature_flag.py": "5624cc2ad2477f63557ea610b47026723214ed1c7a2c0c6e7e9f961c462c9dde",
    "tests/test_flask.py": "8fa3892aed26c754d97becd58a8bbfe04d3d9302e3ad5a7e27a021984956af8f",
    "tests/test_ini_loader.py": "a377ea93fb65ee16e17af845c1caaedfacd5d746246383ccc565502acc912f60",
    "tests/test_json_loader.py": "035b2f6c20939ba875efa72b8a5e9dc54cbd20b23817015df3960d99a392fac1",
    "tests/test_nested_loading.py": "3f8e84de87ebef7d3da0d4bbd634ec1854e83e5c2d6874be7a43c44bff3bc90a",
    "tests/test_py_loader.py": "735ac24dd752c7d4881a102d517d13bb70a1bc04056e7d31df1e01eacbfc6618",
    "tests/test_toml_loader.py": "dd4838e29abc89626b4daaed6b994d047e386f0a212f35a37540dba179a6bbe7",
    "tests/test_utils.py": "10af9bb8bb6d16ea483696e6ecea5eacb0ae6ac8dcc0587212cf957595844a0c",
    "tests/test_validators.py": "c5b6792d74128f2ac51fb34942689a452cf95480dac6817dec7010e890ffb561",
    "tests/test_validators_conditions.py": "db281ca1ec1a1ccfb6343d9ce95592c293cff90d016772fe7fdbc81f6428a7f2",
    "tests/test_yaml_loader.py": "81b377c5a2bd77b01d8cbef52c87c2f99b929da5cd699be04380a3ea332f45a2"
  }
}

The bundle

Recorded JSON and patches. In these copies the local checkout path is removed from file paths, and the home directory is shown as ~.