(not at the head of any monitored branch or PR)
2026-04-13 14:38.57: New job: test pyml_bindgen.0.4.1 with dune.3.22.2, using opam dev
                              from https://github.com/ocaml/opam-repository.git#refs/pull/29704/head (3e0c395e7b1393a792367f8edca3654dac71e6fd)
                              on debian-13-ocaml-4.14/amd64

To reproduce locally:

cd $(mktemp -d)
git clone --recursive "https://github.com/ocaml/opam-repository.git" && cd "opam-repository" && git fetch origin "refs/pull/29704/head" && git reset --hard 3e0c395e
git fetch origin master
git merge --no-edit ba4685aeec7b28fde6af30c7b83004704c68c86a
cat > ../Dockerfile <<'END-OF-DOCKERFILE'
FROM ocaml/opam:debian-13-ocaml-4.14@sha256:ec5999d94ff5da2754b2d163583ef868ccaefbaaabbe66412fde8712ae6f5126
USER 1000:1000
WORKDIR /home/opam
RUN sudo ln -f /usr/bin/opam-dev /usr/bin/opam
RUN opam init --reinit -ni
RUN opam option solver=builtin-0install && opam config report
ENV OPAMDOWNLOADJOBS="1"
ENV OPAMERRLOGLEN="0"
ENV OPAMPRECISETRACKING="1"
ENV CI="true"
ENV OPAM_REPO_CI="true"
RUN rm -rf opam-repository/
COPY --chown=1000:1000 . opam-repository/
RUN opam repository set-url --strict default opam-repository/
RUN opam update --depexts || true
RUN opam pin add -k version -yn dune.3.22.2 3.22.2
RUN opam reinstall dune.3.22.2; \
    res=$?; \
    test "$res" != 31 && exit "$res"; \
    export OPAMCLI=2.0; \
    build_dir=$(opam var prefix)/.opam-switch/build; \
    failed=$(ls "$build_dir"); \
    partial_fails=""; \
    for pkg in $failed; do \
    if opam show -f x-ci-accept-failures: "$pkg" | grep -qF "\"debian-13\""; then \
    echo "A package failed and has been disabled for CI using the 'x-ci-accept-failures' field."; \
    fi; \
    test "$pkg" != 'dune.3.22.2' && partial_fails="$partial_fails $pkg"; \
    done; \
    test "${partial_fails}" != "" && echo "opam-repo-ci detected dependencies failing: ${partial_fails}"; \
    exit 1
RUN opam reinstall pyml_bindgen.0.4.1; \
    res=$?; \
    test "$res" != 31 && exit "$res"; \
    export OPAMCLI=2.0; \
    build_dir=$(opam var prefix)/.opam-switch/build; \
    failed=$(ls "$build_dir"); \
    partial_fails=""; \
    for pkg in $failed; do \
    if opam show -f x-ci-accept-failures: "$pkg" | grep -qF "\"debian-13\""; then \
    echo "A package failed and has been disabled for CI using the 'x-ci-accept-failures' field."; \
    fi; \
    test "$pkg" != 'pyml_bindgen.0.4.1' && partial_fails="$partial_fails $pkg"; \
    done; \
    test "${partial_fails}" != "" && echo "opam-repo-ci detected dependencies failing: ${partial_fails}"; \
    exit 1
RUN (opam reinstall --with-test pyml_bindgen.0.4.1) || true
RUN opam reinstall --with-test --verbose pyml_bindgen.0.4.1; \
    res=$?; \
    test "$res" != 31 && exit "$res"; \
    export OPAMCLI=2.0; \
    build_dir=$(opam var prefix)/.opam-switch/build; \
    failed=$(ls "$build_dir"); \
    partial_fails=""; \
    for pkg in $failed; do \
    if opam show -f x-ci-accept-failures: "$pkg" | grep -qF "\"debian-13\""; then \
    echo "A package failed and has been disabled for CI using the 'x-ci-accept-failures' field."; \
    fi; \
    test "$pkg" != 'pyml_bindgen.0.4.1' && partial_fails="$partial_fails $pkg"; \
    done; \
    test "${partial_fails}" != "" && echo "opam-repo-ci detected dependencies failing: ${partial_fails}"; \
    exit 1

END-OF-DOCKERFILE
docker build -f ../Dockerfile .

2026-04-13 14:38.57: Using cache hint "ocaml/opam:debian-13-ocaml-4.14@sha256:ec5999d94ff5da2754b2d163583ef868ccaefbaaabbe66412fde8712ae6f5126-dune.3.22.2-pyml_bindgen.0.4.1-3e0c395e7b1393a792367f8edca3654dac71e6fd"
2026-04-13 14:38.57: Using OBuilder spec:
((from ocaml/opam:debian-13-ocaml-4.14@sha256:ec5999d94ff5da2754b2d163583ef868ccaefbaaabbe66412fde8712ae6f5126)
 (user (uid 1000) (gid 1000))
 (workdir /home/opam)
 (run (shell "sudo ln -f /usr/bin/opam-dev /usr/bin/opam"))
 (run (network host)
      (shell "opam init --reinit --config .opamrc-sandbox -ni"))
 (run (shell "opam option solver=builtin-0install && opam config report"))
 (env OPAMDOWNLOADJOBS 1)
 (env OPAMERRLOGLEN 0)
 (env OPAMPRECISETRACKING 1)
 (env CI true)
 (env OPAM_REPO_CI true)
 (run (shell "rm -rf opam-repository/"))
 (copy (src .) (dst opam-repository/))
 (run (shell "opam repository set-url --strict default opam-repository/"))
 (run (network host)
      (shell "opam update --depexts || true"))
 (run (shell "opam pin add -k version -yn dune.3.22.2 3.22.2"))
 (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
      (network host)
      (shell  "opam reinstall dune.3.22.2;\
             \n        res=$?;\
             \n        test \"$res\" != 31 && exit \"$res\";\
             \n        export OPAMCLI=2.0;\
             \n        build_dir=$(opam var prefix)/.opam-switch/build;\
             \n        failed=$(ls \"$build_dir\");\
             \n        partial_fails=\"\";\
             \n        for pkg in $failed; do\
             \n          if opam show -f x-ci-accept-failures: \"$pkg\" | grep -qF \"\\\"debian-13\\\"\"; then\
             \n            echo \"A package failed and has been disabled for CI using the 'x-ci-accept-failures' field.\";\
             \n          fi;\
             \n          test \"$pkg\" != 'dune.3.22.2' && partial_fails=\"$partial_fails $pkg\";\
             \n        done;\
             \n        test \"${partial_fails}\" != \"\" && echo \"opam-repo-ci detected dependencies failing: ${partial_fails}\";\
             \n        exit 1"))
 (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
      (network host)
      (shell  "opam reinstall pyml_bindgen.0.4.1;\
             \n        res=$?;\
             \n        test \"$res\" != 31 && exit \"$res\";\
             \n        export OPAMCLI=2.0;\
             \n        build_dir=$(opam var prefix)/.opam-switch/build;\
             \n        failed=$(ls \"$build_dir\");\
             \n        partial_fails=\"\";\
             \n        for pkg in $failed; do\
             \n          if opam show -f x-ci-accept-failures: \"$pkg\" | grep -qF \"\\\"debian-13\\\"\"; then\
             \n            echo \"A package failed and has been disabled for CI using the 'x-ci-accept-failures' field.\";\
             \n          fi;\
             \n          test \"$pkg\" != 'pyml_bindgen.0.4.1' && partial_fails=\"$partial_fails $pkg\";\
             \n        done;\
             \n        test \"${partial_fails}\" != \"\" && echo \"opam-repo-ci detected dependencies failing: ${partial_fails}\";\
             \n        exit 1"))
 (run (network host)
      (shell "(opam reinstall --with-test pyml_bindgen.0.4.1) || true"))
 (run (shell  "opam reinstall --with-test --verbose pyml_bindgen.0.4.1;\
             \n        res=$?;\
             \n        test \"$res\" != 31 && exit \"$res\";\
             \n        export OPAMCLI=2.0;\
             \n        build_dir=$(opam var prefix)/.opam-switch/build;\
             \n        failed=$(ls \"$build_dir\");\
             \n        partial_fails=\"\";\
             \n        for pkg in $failed; do\
             \n          if opam show -f x-ci-accept-failures: \"$pkg\" | grep -qF \"\\\"debian-13\\\"\"; then\
             \n            echo \"A package failed and has been disabled for CI using the 'x-ci-accept-failures' field.\";\
             \n          fi;\
             \n          test \"$pkg\" != 'pyml_bindgen.0.4.1' && partial_fails=\"$partial_fails $pkg\";\
             \n        done;\
             \n        test \"${partial_fails}\" != \"\" && echo \"opam-repo-ci detected dependencies failing: ${partial_fails}\";\
             \n        exit 1"))
)

2026-04-13 14:38.57: Waiting for resource in pool OCluster
2026-04-13 15:00.58: Waiting for worker…
2026-04-13 15:06.28: Got resource from pool OCluster
Building on doris.caelum.ci.dev
All commits already cached
HEAD is now at ba4685aeec Merge pull request #29653 from yakobowski/camlidl
Merge made by the 'ort' strategy.
 packages/chrome-trace/chrome-trace.3.22.2/opam     | 39 +++++++++++
 .../dune-action-plugin.3.22.2/opam                 | 52 +++++++++++++++
 .../dune-action-trace.3.22.2/opam                  | 39 +++++++++++
 .../dune-build-info/dune-build-info.3.22.2/opam    | 45 +++++++++++++
 .../dune-configurator.3.22.2/opam                  | 49 ++++++++++++++
 packages/dune-glob/dune-glob.3.22.2/opam           | 42 ++++++++++++
 .../dune-private-libs.3.22.2/opam                  | 50 +++++++++++++++
 packages/dune-rpc-lwt/dune-rpc-lwt.3.22.2/opam     | 41 ++++++++++++
 packages/dune-rpc/dune-rpc.3.22.2/opam             | 44 +++++++++++++
 packages/dune-site/dune-site.3.22.2/opam           | 37 +++++++++++
 packages/dune/dune.3.22.2/opam                     | 75 ++++++++++++++++++++++
 packages/dyn/dyn.3.22.2/opam                       | 40 ++++++++++++
 packages/fs-io/fs-io.3.22.2/opam                   | 39 +++++++++++
 packages/ocamlc-loc/ocamlc-loc.3.22.2/opam         | 43 +++++++++++++
 packages/ordering/ordering.3.22.2/opam             | 38 +++++++++++
 packages/stdune/stdune.3.22.2/opam                 | 46 +++++++++++++
 packages/top-closure/top-closure.3.22.2/opam       | 38 +++++++++++
 packages/xdg/xdg.3.22.2/opam                       | 39 +++++++++++
 18 files changed, 796 insertions(+)
 create mode 100644 packages/chrome-trace/chrome-trace.3.22.2/opam
 create mode 100644 packages/dune-action-plugin/dune-action-plugin.3.22.2/opam
 create mode 100644 packages/dune-action-trace/dune-action-trace.3.22.2/opam
 create mode 100644 packages/dune-build-info/dune-build-info.3.22.2/opam
 create mode 100644 packages/dune-configurator/dune-configurator.3.22.2/opam
 create mode 100644 packages/dune-glob/dune-glob.3.22.2/opam
 create mode 100644 packages/dune-private-libs/dune-private-libs.3.22.2/opam
 create mode 100644 packages/dune-rpc-lwt/dune-rpc-lwt.3.22.2/opam
 create mode 100644 packages/dune-rpc/dune-rpc.3.22.2/opam
 create mode 100644 packages/dune-site/dune-site.3.22.2/opam
 create mode 100644 packages/dune/dune.3.22.2/opam
 create mode 100644 packages/dyn/dyn.3.22.2/opam
 create mode 100644 packages/fs-io/fs-io.3.22.2/opam
 create mode 100644 packages/ocamlc-loc/ocamlc-loc.3.22.2/opam
 create mode 100644 packages/ordering/ordering.3.22.2/opam
 create mode 100644 packages/stdune/stdune.3.22.2/opam
 create mode 100644 packages/top-closure/top-closure.3.22.2/opam
 create mode 100644 packages/xdg/xdg.3.22.2/opam

(from ocaml/opam:debian-13-ocaml-4.14@sha256:ec5999d94ff5da2754b2d163583ef868ccaefbaaabbe66412fde8712ae6f5126)
Unable to find image 'ocaml/opam:debian-13-ocaml-4.14@sha256:ec5999d94ff5da2754b2d163583ef868ccaefbaaabbe66412fde8712ae6f5126' locally
docker.io/ocaml/opam@sha256:ec5999d94ff5da2754b2d163583ef868ccaefbaaabbe66412fde8712ae6f5126: Pulling from ocaml/opam
8f6ad858d0a4: Already exists
9cb5e198c8cf: Already exists
2d346d36dcf2: Already exists
cdc35e289b8d: Already exists
aeb7244bb580: Already exists
fc1943254a0d: Already exists
84238c416f8e: Already exists
fbbfe75d3112: Already exists
221fdc5d9929: Already exists
1fec9149b52a: Already exists
9c6e52557f24: Already exists
8737f5036aae: Already exists
d69c4074de14: Already exists
7237152a5f04: Already exists
fba4b414d8a0: Already exists
40d552afb3ef: Already exists
077cc17dc8e4: Already exists
077cc17dc8e4: Already exists
169e1be36a55: Already exists
0a8a005097ab: Already exists
caba3ec4b361: Already exists
6a364dc641f8: Already exists
4f4fb700ef54: Already exists
ab8052928cdc: Already exists
f5717a28dd6a: Already exists
79233a9b9bed: Already exists
d832d53e7392: Already exists
1872dad82243: Already exists
bfd849b08ba7: Already exists
834a8024ef15: Already exists
98ccec79258b: Already exists
fb48f36a0542: Already exists
3688b13db8e7: Already exists
a5c099f5f72c: Already exists
1ff1760de5b0: Already exists
98eec6764aa5: Already exists
aa22ae69debd: Already exists
12bfb7b962a2: Already exists
ec25ce9bb816: Already exists
beadd3cf7357: Already exists
d0d0c65a426d: Already exists
27080da82c6b: Pulling fs layer
3b99adeb504e: Pulling fs layer
867c8a52ad10: Pulling fs layer
01ca275a6ca2: Pulling fs layer
01ca275a6ca2: Waiting
867c8a52ad10: Verifying Checksum
867c8a52ad10: Download complete
3b99adeb504e: Verifying Checksum
3b99adeb504e: Download complete
01ca275a6ca2: Verifying Checksum
01ca275a6ca2: Download complete
27080da82c6b: Verifying Checksum
27080da82c6b: Download complete
27080da82c6b: Pull complete
3b99adeb504e: Pull complete
867c8a52ad10: Pull complete
01ca275a6ca2: Pull complete
Digest: sha256:ec5999d94ff5da2754b2d163583ef868ccaefbaaabbe66412fde8712ae6f5126
Status: Downloaded newer image for ocaml/opam@sha256:ec5999d94ff5da2754b2d163583ef868ccaefbaaabbe66412fde8712ae6f5126
2026-04-13 15:06.47 ---> using "d0e330c08fa445d83f06df86dbe749aac73c20b9c3be340824d01a143f189b82" from cache

/: (user (uid 1000) (gid 1000))

/: (workdir /home/opam)

/home/opam: (run (shell "sudo ln -f /usr/bin/opam-dev /usr/bin/opam"))
2026-04-13 15:06.47 ---> using "3ec7ac935151f5277a236626f366bf7f6f18395cb01e6e86eff2abeffc750f69" from cache

/home/opam: (run (network host)
                 (shell "opam init --reinit --config .opamrc-sandbox -ni"))
Configuring from /home/opam/.opamrc-sandbox, then /home/opam/.opamrc, and finally from built-in defaults.
Checking for available remotes: rsync and local, git.
  - you won't be able to use mercurial repositories unless you install the hg command on your system.
  - you won't be able to use darcs repositories unless you install the darcs command on your system.

This version of opam requires an update to the layout of /home/opam/.opam from version 2.0 to version 2.2, which can't be reverted.
You may want to back it up before going further.

Continue? [Y/n] y
[NOTE] The 'jobs' option was reset, its value was 71 and its new value will vary according to the current number of cores on your machine. You can restore the fixed value using:
           opam option jobs=71 --global
Format upgrade done.

<><> Updating repositories ><><><><><><><><><><><><><><><><><><><><><><><><><><>
[default] Initialised
2026-04-13 15:06.47 ---> using "b5a0847c35501fd963cedc3388b00c999e5617a9db85df5529c240a6fc10a617" from cache

/home/opam: (run (shell "opam option solver=builtin-0install && opam config report"))
Set to 'builtin-0install' the field solver in global configuration
# opam config report
# opam-version         2.5.0
# self-upgrade         no
# system               arch=x86_64 os=linux os-distribution=debian os-version=13
# solver               builtin-0install
# install-criteria     -changed,-count[avoid-version,solution]
# upgrade-criteria     -count[avoid-version,solution]
# jobs                 255
# repositories         1 (version-controlled)
# pinned               1 (version)
# current-switch       4.14
# invariant            ["ocaml-base-compiler" {= "4.14.3"}]
# compiler-packages    ocaml-base-compiler.4.14.3, ocaml-options-vanilla.1
# ocaml:native         true
# ocaml:native-tools   true
# ocaml:native-dynlink true
# ocaml:stubsdir       /home/opam/.opam/4.14/lib/ocaml/stublibs:/home/opam/.opam/4.14/lib/ocaml
# ocaml:preinstalled   false
# ocaml:compiler       4.14.3
2026-04-13 15:06.47 ---> using "28464b62e165a839b63b1c2ae024a4b4fcbe23c1802c3adf881d35db6bc1d4c2" from cache

/home/opam: (env OPAMDOWNLOADJOBS 1)

/home/opam: (env OPAMERRLOGLEN 0)

/home/opam: (env OPAMPRECISETRACKING 1)

/home/opam: (env CI true)

/home/opam: (env OPAM_REPO_CI true)

/home/opam: (run (shell "rm -rf opam-repository/"))
2026-04-13 15:06.47 ---> using "4dfd69403557bd9c8ecec7a8b2fdd9b50feea12943fd8b9150cd347ede8d5f38" from cache

/home/opam: (copy (src .) (dst opam-repository/))
2026-04-13 15:06.48 ---> using "e4440740ff32adbbcff2b06cb37b16278050a2f11fe3bbb84acde16cec6f57b3" from cache

/home/opam: (run (shell "opam repository set-url --strict default opam-repository/"))
[default] Initialised
2026-04-13 15:07.04 ---> saved as "783c15b8b62b3b51001efd6e74ae6392d3b5bfd28262103a88dd85a8bc36074a"

/home/opam: (run (network host)
                 (shell "opam update --depexts || true"))
+ /usr/bin/sudo "apt-get" "update"
- Hit:1 http://deb.debian.org/debian trixie InRelease
- Get:2 http://deb.debian.org/debian trixie-updates InRelease [47.3 kB]
- Get:3 http://deb.debian.org/debian-security trixie-security InRelease [43.4 kB]
- Get:4 http://deb.debian.org/debian-security trixie-security/main amd64 Packages [122 kB]
- Fetched 213 kB in 6s (37.9 kB/s)
- Reading package lists...
- 
2026-04-13 15:07.10 ---> saved as "2130130498394389e9bf01ee0c6f95746ce3be4212fa65c803222086e9e79898"

/home/opam: (run (shell "opam pin add -k version -yn dune.3.22.2 3.22.2"))
dune is now pinned to version 3.22.2
2026-04-13 15:07.12 ---> saved as "a58a3260573f46e665bd2898643e9c41f09fedf9a8dce9d606b49bf430b4a91b"

/home/opam: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
                 (network host)
                 (shell  "opam reinstall dune.3.22.2;\
                        \n        res=$?;\
                        \n        test \"$res\" != 31 && exit \"$res\";\
                        \n        export OPAMCLI=2.0;\
                        \n        build_dir=$(opam var prefix)/.opam-switch/build;\
                        \n        failed=$(ls \"$build_dir\");\
                        \n        partial_fails=\"\";\
                        \n        for pkg in $failed; do\
                        \n          if opam show -f x-ci-accept-failures: \"$pkg\" | grep -qF \"\\\"debian-13\\\"\"; then\
                        \n            echo \"A package failed and has been disabled for CI using the 'x-ci-accept-failures' field.\";\
                        \n          fi;\
                        \n          test \"$pkg\" != 'dune.3.22.2' && partial_fails=\"$partial_fails $pkg\";\
                        \n        done;\
                        \n        test \"${partial_fails}\" != \"\" && echo \"opam-repo-ci detected dependencies failing: ${partial_fails}\";\
                        \n        exit 1"))
dune.3.22.2 is not installed. Install it? [Y/n] y
The following actions will be performed:
=== install 1 package
  - install dune 3.22.2 (pinned)

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-> retrieved dune.3.22.2  (cached)
-> installed dune.3.22.2
Done.
# To update the current shell environment, run: eval $(opam env)
2026-04-13 15:07.37 ---> saved as "72e5e0d76148f0a1a9dbe5c996a494d4743ec3246a9e99de2b80085ee7ec61e2"

/home/opam: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
                 (network host)
                 (shell  "opam reinstall pyml_bindgen.0.4.1;\
                        \n        res=$?;\
                        \n        test \"$res\" != 31 && exit \"$res\";\
                        \n        export OPAMCLI=2.0;\
                        \n        build_dir=$(opam var prefix)/.opam-switch/build;\
                        \n        failed=$(ls \"$build_dir\");\
                        \n        partial_fails=\"\";\
                        \n        for pkg in $failed; do\
                        \n          if opam show -f x-ci-accept-failures: \"$pkg\" | grep -qF \"\\\"debian-13\\\"\"; then\
                        \n            echo \"A package failed and has been disabled for CI using the 'x-ci-accept-failures' field.\";\
                        \n          fi;\
                        \n          test \"$pkg\" != 'pyml_bindgen.0.4.1' && partial_fails=\"$partial_fails $pkg\";\
                        \n        done;\
                        \n        test \"${partial_fails}\" != \"\" && echo \"opam-repo-ci detected dependencies failing: ${partial_fails}\";\
                        \n        exit 1"))
pyml_bindgen.0.4.1 is not installed. Install it? [Y/n] y
The following actions will be performed:
=== install 24 packages
  - install angstrom            0.16.1  [required by pyml_bindgen]
  - install base                v0.15.1 [required by pyml_bindgen]
  - install bigstringaf         0.10.0  [required by angstrom]
  - install cmdliner            2.1.0   [required by pyml_bindgen]
  - install csexp               1.5.2   [required by dune-configurator]
  - install dune-configurator   3.22.2  [required by base]
  - install ocaml-compiler-libs v0.12.4 [required by ppxlib]
  - install ocaml-syntax-shims  1.0.0   [required by angstrom]
  - install ppx_base            v0.15.0 [required by ppx_string]
  - install ppx_cold            v0.15.0 [required by ppx_base]
  - install ppx_compare         v0.15.0 [required by ppx_base]
  - install ppx_derivers        1.2.1   [required by ppxlib]
  - install ppx_enumerate       v0.15.0 [required by ppx_base]
  - install ppx_hash            v0.15.0 [required by ppx_base]
  - install ppx_here            v0.15.0 [required by ppx_let]
  - install ppx_let             v0.15.0 [required by pyml_bindgen]
  - install ppx_sexp_conv       v0.15.1 [required by pyml_bindgen]
  - install ppx_string          v0.15.0 [required by pyml_bindgen]
  - install ppxlib              0.35.0  [required by ppx_sexp_conv, ppx_let, ppx_string]
  - install pyml_bindgen        0.4.1
  - install re                  1.14.0  [required by pyml_bindgen]
  - install sexplib0            v0.15.1 [required by base, ppx_sexp_conv]
  - install stdio               v0.15.0 [required by pyml_bindgen]
  - install stdlib-shims        0.3.0   [required by ppxlib]

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-> retrieved angstrom.0.16.1  (cached)
-> retrieved base.v0.15.1  (cached)
-> retrieved bigstringaf.0.10.0  (cached)
-> retrieved cmdliner.2.1.0  (cached)
-> retrieved csexp.1.5.2  (cached)
-> installed csexp.1.5.2
-> retrieved dune-configurator.3.22.2  (cached)
-> retrieved ocaml-compiler-libs.v0.12.4  (cached)
-> retrieved ocaml-syntax-shims.1.0.0  (cached)
-> retrieved ppx_base.v0.15.0  (cached)
-> retrieved ppx_cold.v0.15.0  (cached)
-> retrieved ppx_compare.v0.15.0  (cached)
-> retrieved ppx_derivers.1.2.1  (cached)
-> retrieved ppx_enumerate.v0.15.0  (cached)
-> retrieved ppx_hash.v0.15.0  (cached)
-> retrieved ppx_here.v0.15.0  (cached)
-> retrieved ppx_let.v0.15.0  (cached)
-> retrieved ppx_sexp_conv.v0.15.1  (cached)
-> retrieved ppx_string.v0.15.0  (cached)
-> installed cmdliner.2.1.0
-> installed dune-configurator.3.22.2
-> installed ppx_derivers.1.2.1
-> retrieved ppxlib.0.35.0  (cached)
-> retrieved pyml_bindgen.0.4.1  (cached)
-> retrieved re.1.14.0  (cached)
-> retrieved sexplib0.v0.15.1  (cached)
-> retrieved stdio.v0.15.0  (cached)
-> retrieved stdlib-shims.0.3.0  (cached)
-> installed stdlib-shims.0.3.0
-> installed bigstringaf.0.10.0
-> installed ocaml-syntax-shims.1.0.0
-> installed sexplib0.v0.15.1
-> installed ocaml-compiler-libs.v0.12.4
-> installed angstrom.0.16.1
-> installed re.1.14.0
-> installed base.v0.15.1
-> installed stdio.v0.15.0
-> installed ppxlib.0.35.0
-> installed ppx_cold.v0.15.0
-> installed ppx_here.v0.15.0
-> installed ppx_enumerate.v0.15.0
-> installed ppx_compare.v0.15.0
-> installed ppx_sexp_conv.v0.15.1
-> installed ppx_let.v0.15.0
-> installed ppx_hash.v0.15.0
-> installed ppx_base.v0.15.0
-> installed ppx_string.v0.15.0
-> installed pyml_bindgen.0.4.1
Done.
# To update the current shell environment, run: eval $(opam env)
2026-04-13 15:08.12 ---> saved as "80120afce00572f44af4278cdc9343d7711b2e447fa02c85250f3dd64f66cda2"

/home/opam: (run (network host)
                 (shell "(opam reinstall --with-test pyml_bindgen.0.4.1) || true"))
The following actions will be performed:
=== downgrade 1 package
  - downgrade cmdliner            2.1.0 to 1.3.0 [required by pyml_bindgen]
=== recompile 1 package
  - recompile pyml_bindgen        0.4.1
=== install 41 packages
  - install   astring             0.8.5          [required by fpath, odoc-parser]
  - install   base_quickcheck     v0.15.0        [required by pyml_bindgen]
  - install   camlp-streams       5.0.1          [required by odoc-parser]
  - install   conf-python-3-dev   1              [required by pyml_bindgen]
  - install   dune-build-info     3.22.2         [required by ocamlformat]
  - install   either              1.0.0          [required by ocamlformat]
  - install   fieldslib           v0.15.0        [required by ppx_fields_conv]
  - install   fix                 20250919       [required by ocamlformat]
  - install   fpath               0.7.3          [required by ocamlformat]
  - install   jane-street-headers v0.15.0        [required by time_now]
  - install   jst-config          v0.15.1        [required by time_now]
  - install   menhir              20260209       [required by ocamlformat]
  - install   menhirCST           20260209       [required by menhir]
  - install   menhirGLR           20260209       [required by menhir]
  - install   menhirLib           20260209       [required by ocamlformat]
  - install   menhirSdk           20260209       [required by ocamlformat]
  - install   ocaml-version       3.5.0          [required by ocamlformat]
  - install   ocamlbuild          0.16.1         [required by fpath, uuseg]
  - install   ocamlfind           1.9.8          [required by pyml]
  - install   ocamlformat         0.23.0         [required by pyml_bindgen]
  - install   ocp-indent          1.9.0          [required by ocamlformat]
  - install   odoc-parser         1.0.1          [required by ocamlformat]
  - install   posixat             v0.15.0        [required by shexp]
  - install   ppx_assert          v0.15.0        [required by pyml_bindgen]
  - install   ppx_bench           v0.15.1        [required by splittable_random]
  - install   ppx_expect          v0.15.1        [required by pyml_bindgen]
  - install   ppx_fields_conv     v0.15.0        [required by base_quickcheck]
  - install   ppx_inline_test     v0.15.1        [required by pyml_bindgen]
  - install   ppx_optcomp         v0.15.0        [required by posixat]
  - install   ppx_sexp_message    v0.15.0        [required by base_quickcheck]
  - install   ppx_sexp_value      v0.15.0        [required by base_quickcheck]
  - install   pyml                20170807       [required by pyml_bindgen]
  - install   result              1.5            [required by odoc-parser]
  - install   shexp               v0.15.0        [required by pyml_bindgen]
  - install   spawn               v0.17.0        [required by shexp]
  - install   splittable_random   v0.15.0        [required by base_quickcheck]
  - install   time_now            v0.15.0        [required by ppx_inline_test]
  - install   topkg               1.1.1          [required by fpath, uuseg]
  - install   uucp                17.0.0         [required by uuseg]
  - install   uuseg               17.0.0         [required by ocamlformat]
  - install   uutf                1.0.4          [required by ocamlformat]

The following system packages will first need to be installed:
    python3-dev

<><> Handling external dependencies <><><><><><><><><><><><><><><><><><><><><><>

opam believes some required external dependencies are missing. opam can:
> 1. Run apt-get to install them (may need root/sudo access)
  2. Display the recommended apt-get command and wait while you run it manually (e.g. in another terminal)
  3. Continue anyway, and, upon success, permanently register that this external dependency is present, but not detectable
  4. Abort the installation

[1/2/3/4] 1

+ /usr/bin/sudo "apt-get" "install" "-qq" "-yy" "python3-dev"
- Selecting previously unselected package libpython3.13-minimal:amd64.
- (Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 20623 files and directories currently installed.)
- Preparing to unpack .../libpython3.13-minimal_3.13.5-2_amd64.deb ...
- Unpacking libpython3.13-minimal:amd64 (3.13.5-2) ...
- Selecting previously unselected package python3.13-minimal.
- Preparing to unpack .../python3.13-minimal_3.13.5-2_amd64.deb ...
- Unpacking python3.13-minimal (3.13.5-2) ...
- Setting up libpython3.13-minimal:amd64 (3.13.5-2) ...
- Setting up python3.13-minimal (3.13.5-2) ...
- Selecting previously unselected package python3-minimal.
- (Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 20948 files and directories currently installed.)
- Preparing to unpack .../0-python3-minimal_3.13.5-1_amd64.deb ...
- Unpacking python3-minimal (3.13.5-1) ...
- Selecting previously unselected package media-types.
- Preparing to unpack .../1-media-types_13.0.0_all.deb ...
- Unpacking media-types (13.0.0) ...
- Selecting previously unselected package readline-common.
- Preparing to unpack .../2-readline-common_8.2-6_all.deb ...
- Unpacking readline-common (8.2-6) ...
- Selecting previously unselected package libreadline8t64:amd64.
- Preparing to unpack .../3-libreadline8t64_8.2-6_amd64.deb ...
- Adding 'diversion of /lib/x86_64-linux-gnu/libhistory.so.8 to /lib/x86_64-linux-gnu/libhistory.so.8.usr-is-merged by libreadline8t64'
- Adding 'diversion of /lib/x86_64-linux-gnu/libhistory.so.8.2 to /lib/x86_64-linux-gnu/libhistory.so.8.2.usr-is-merged by libreadline8t64'
- Adding 'diversion of /lib/x86_64-linux-gnu/libreadline.so.8 to /lib/x86_64-linux-gnu/libreadline.so.8.usr-is-merged by libreadline8t64'
- Adding 'diversion of /lib/x86_64-linux-gnu/libreadline.so.8.2 to /lib/x86_64-linux-gnu/libreadline.so.8.2.usr-is-merged by libreadline8t64'
- Unpacking libreadline8t64:amd64 (8.2-6) ...
- Selecting previously unselected package libpython3.13-stdlib:amd64.
- Preparing to unpack .../4-libpython3.13-stdlib_3.13.5-2_amd64.deb ...
- Unpacking libpython3.13-stdlib:amd64 (3.13.5-2) ...
- Selecting previously unselected package python3.13.
- Preparing to unpack .../5-python3.13_3.13.5-2_amd64.deb ...
- Unpacking python3.13 (3.13.5-2) ...
- Selecting previously unselected package libpython3-stdlib:amd64.
- Preparing to unpack .../6-libpython3-stdlib_3.13.5-1_amd64.deb ...
- Unpacking libpython3-stdlib:amd64 (3.13.5-1) ...
- Setting up python3-minimal (3.13.5-1) ...
- Selecting previously unselected package python3.
- (Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 21434 files and directories currently installed.)
- Preparing to unpack .../00-python3_3.13.5-1_amd64.deb ...
- Unpacking python3 (3.13.5-1) ...
- Selecting previously unselected package javascript-common.
- Preparing to unpack .../01-javascript-common_12+nmu1_all.deb ...
- Unpacking javascript-common (12+nmu1) ...
- Selecting previously unselected package libexpat1-dev:amd64.
- Preparing to unpack .../02-libexpat1-dev_2.7.1-2_amd64.deb ...
- Unpacking libexpat1-dev:amd64 (2.7.1-2) ...
- Selecting previously unselected package libjs-jquery.
- Preparing to unpack .../03-libjs-jquery_3.6.1+dfsg+~3.5.14-1_all.deb ...
- Unpacking libjs-jquery (3.6.1+dfsg+~3.5.14-1) ...
- Selecting previously unselected package libjs-underscore.
- Preparing to unpack .../04-libjs-underscore_1.13.4~dfsg+~1.11.4-3_all.deb ...
- Unpacking libjs-underscore (1.13.4~dfsg+~1.11.4-3) ...
- Selecting previously unselected package libjs-sphinxdoc.
- Preparing to unpack .../05-libjs-sphinxdoc_8.1.3-5_all.deb ...
- Unpacking libjs-sphinxdoc (8.1.3-5) ...
- Selecting previously unselected package libpython3.13:amd64.
- Preparing to unpack .../06-libpython3.13_3.13.5-2_amd64.deb ...
- Unpacking libpython3.13:amd64 (3.13.5-2) ...
- Selecting previously unselected package zlib1g-dev:amd64.
- Preparing to unpack .../07-zlib1g-dev_1%3a1.3.dfsg+really1.3.1-1+b1_amd64.deb ...
- Unpacking zlib1g-dev:amd64 (1:1.3.dfsg+really1.3.1-1+b1) ...
- Selecting previously unselected package libpython3.13-dev:amd64.
- Preparing to unpack .../08-libpython3.13-dev_3.13.5-2_amd64.deb ...
- Unpacking libpython3.13-dev:amd64 (3.13.5-2) ...
- Selecting previously unselected package libpython3-dev:amd64.
- Preparing to unpack .../09-libpython3-dev_3.13.5-1_amd64.deb ...
- Unpacking libpython3-dev:amd64 (3.13.5-1) ...
- Selecting previously unselected package python3.13-dev.
- Preparing to unpack .../10-python3.13-dev_3.13.5-2_amd64.deb ...
- Unpacking python3.13-dev (3.13.5-2) ...
- Selecting previously unselected package python3-dev.
- Preparing to unpack .../11-python3-dev_3.13.5-1_amd64.deb ...
- Unpacking python3-dev (3.13.5-1) ...
- Setting up media-types (13.0.0) ...
- Setting up javascript-common (12+nmu1) ...
- Setting up libexpat1-dev:amd64 (2.7.1-2) ...
- Setting up zlib1g-dev:amd64 (1:1.3.dfsg+really1.3.1-1+b1) ...
- Setting up libjs-jquery (3.6.1+dfsg+~3.5.14-1) ...
- Setting up readline-common (8.2-6) ...
- Setting up libjs-underscore (1.13.4~dfsg+~1.11.4-3) ...
- Setting up libjs-sphinxdoc (8.1.3-5) ...
- Setting up libreadline8t64:amd64 (8.2-6) ...
- Setting up libpython3.13-stdlib:amd64 (3.13.5-2) ...
- Setting up libpython3-stdlib:amd64 (3.13.5-1) ...
- Setting up libpython3.13:amd64 (3.13.5-2) ...
- Setting up python3.13 (3.13.5-2) ...
- Setting up python3 (3.13.5-1) ...
- running python rtupdate hooks for python3.13...
- running python post-rtupdate hooks for python3.13...
- Setting up libpython3.13-dev:amd64 (3.13.5-2) ...
- Setting up libpython3-dev:amd64 (3.13.5-1) ...
- Setting up python3.13-dev (3.13.5-2) ...
- Setting up python3-dev (3.13.5-1) ...
- Processing triggers for libc-bin (2.41-12+deb13u2) ...

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-> retrieved astring.0.8.5  (https://opam.ocaml.org/cache)
-> retrieved base_quickcheck.v0.15.0  (https://opam.ocaml.org/cache)
-> retrieved camlp-streams.5.0.1  (https://opam.ocaml.org/cache)
-> retrieved cmdliner.1.3.0  (https://opam.ocaml.org/cache)
-> installed camlp-streams.5.0.1
-> retrieved conf-python-3-dev.1  (2 extra sources)
-> retrieved conf-python-3-dev.1  (2 extra sources)
-> installed conf-python-3-dev.1
-> retrieved dune-build-info.3.22.2  (https://github.com/ocaml/dune/releases/download/3.22.2/dune-3.22.2.tbz)
-> retrieved either.1.0.0  (https://opam.ocaml.org/cache)
-> retrieved fieldslib.v0.15.0  (https://opam.ocaml.org/cache)
-> retrieved fix.20250919  (https://opam.ocaml.org/cache)
-> installed either.1.0.0
-> installed fieldslib.v0.15.0
-> retrieved fpath.0.7.3  (https://opam.ocaml.org/cache)
-> installed dune-build-info.3.22.2
-> retrieved jane-street-headers.v0.15.0  (https://opam.ocaml.org/cache)
-> installed fix.20250919
-> retrieved jst-config.v0.15.1  (https://opam.ocaml.org/cache)
-> installed jane-street-headers.v0.15.0
-> retrieved menhir.20260209, menhirCST.20260209, menhirGLR.20260209, menhirLib.20260209, menhirSdk.20260209  (https://opam.ocaml.org/cache)
-> installed menhirCST.20260209
-> retrieved ocaml-version.3.5.0  (https://opam.ocaml.org/cache)
-> retrieved ocamlbuild.0.16.1  (https://opam.ocaml.org/cache)
-> installed ocaml-version.3.5.0
-> installed menhirGLR.20260209
-> installed menhirLib.20260209
-> retrieved ocamlfind.1.9.8  (https://opam.ocaml.org/cache)
-> installed menhirSdk.20260209
-> retrieved ocamlformat.0.23.0  (https://opam.ocaml.org/cache)
-> retrieved ocp-indent.1.9.0  (https://opam.ocaml.org/cache)
-> retrieved odoc-parser.1.0.1  (https://opam.ocaml.org/cache)
-> retrieved posixat.v0.15.0  (https://opam.ocaml.org/cache)
-> retrieved ppx_assert.v0.15.0  (https://opam.ocaml.org/cache)
-> retrieved ppx_bench.v0.15.1  (https://opam.ocaml.org/cache)
-> retrieved ppx_expect.v0.15.1  (https://opam.ocaml.org/cache)
-> retrieved ppx_fields_conv.v0.15.0  (https://opam.ocaml.org/cache)
-> retrieved ppx_inline_test.v0.15.1  (https://opam.ocaml.org/cache)
-> retrieved ppx_optcomp.v0.15.0  (https://opam.ocaml.org/cache)
-> retrieved ppx_sexp_message.v0.15.0  (https://opam.ocaml.org/cache)
-> retrieved ppx_sexp_value.v0.15.0  (https://opam.ocaml.org/cache)
-> retrieved pyml.20170807  (https://opam.ocaml.org/cache)
-> retrieved pyml_bindgen.0.4.1  (https://opam.ocaml.org/cache)
-> installed ppx_optcomp.v0.15.0
-> retrieved result.1.5  (https://opam.ocaml.org/cache)
-> retrieved shexp.v0.15.0  (https://opam.ocaml.org/cache)
-> installed ocamlfind.1.9.8
-> installed ocamlbuild.0.16.1
-> installed posixat.v0.15.0
-> installed ppx_assert.v0.15.0
-> installed ppx_fields_conv.v0.15.0
-> installed ppx_sexp_message.v0.15.0
-> installed ppx_sexp_value.v0.15.0
-> installed result.1.5
-> retrieved spawn.v0.17.0  (https://opam.ocaml.org/cache)
-> removed   pyml_bindgen.0.4.1
-> removed   cmdliner.2.1.0
-> retrieved splittable_random.v0.15.0  (https://opam.ocaml.org/cache)
-> installed cmdliner.1.3.0
-> installed spawn.v0.17.0
-> retrieved time_now.v0.15.0  (https://opam.ocaml.org/cache)
-> installed menhir.20260209
-> retrieved topkg.1.1.1  (https://opam.ocaml.org/cache)
-> retrieved uucp.17.0.0  (https://opam.ocaml.org/cache)
-> retrieved uuseg.17.0.0  (https://opam.ocaml.org/cache)
-> retrieved uutf.1.0.4  (https://opam.ocaml.org/cache)
-> installed shexp.v0.15.0
-> installed ocp-indent.1.9.0
-> installed jst-config.v0.15.1
-> installed pyml.20170807
-> installed time_now.v0.15.0
-> installed topkg.1.1.1
-> installed ppx_inline_test.v0.15.1
-> installed uutf.1.0.4
-> installed astring.0.8.5
-> installed odoc-parser.1.0.1
-> installed fpath.0.7.3
-> installed ppx_bench.v0.15.1
-> installed ppx_expect.v0.15.1
-> installed splittable_random.v0.15.0
-> installed base_quickcheck.v0.15.0
-> installed uucp.17.0.0
-> installed uuseg.17.0.0
-> installed ocamlformat.0.23.0
[ERROR] The compilation of pyml_bindgen.0.4.1 failed at "dune build -p pyml_bindgen -j 255 @install @runtest".

#=== ERROR while compiling pyml_bindgen.0.4.1 =================================#
# context              2.5.0 | linux/x86_64 | ocaml-base-compiler.4.14.3 | file:///home/opam/opam-repository
# path                 ~/.opam/4.14/.opam-switch/build/pyml_bindgen.0.4.1
# command              ~/.opam/opam-init/hooks/sandbox.sh build dune build -p pyml_bindgen -j 255 @install @runtest
# exit-code            1
# env-file             ~/.opam/log/pyml_bindgen-7-1a2906.env
# output-file          ~/.opam/log/pyml_bindgen-7-1a2906.out
### output ###
# File "test/binding_tuples.t/run.t", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/binding_tuples.t/run.t _build/default/test/binding_tuples.t/run.t.corrected
# diff --git a/_build/default/test/binding_tuples.t/run.t b/_build/default/test/binding_tuples.t/run.t.corrected
# index 69df476..952ec36 100644
# --- a/_build/default/test/binding_tuples.t/run.t
# +++ b/_build/default/test/binding_tuples.t/run.t.corrected
# @@ -63,5 +63,5 @@ Cat the files and run.
#        @@ Py.Callable.to_function_with_keywords callable [||] kwargs
#    end
#    $ dune exec ./run.exe 2> /dev/null
# -  10 a!!
# +  [1]
#  
# File "test/py_fun_name_attr.t/run.t", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/py_fun_name_attr.t/run.t _build/default/test/py_fun_name_attr.t/run.t.corrected
# diff --git a/_build/default/test/py_fun_name_attr.t/run.t b/_build/default/test/py_fun_name_attr.t/run.t.corrected
# index 1c0fa95..6e9cafd 100644
# --- a/_build/default/test/py_fun_name_attr.t/run.t
# +++ b/_build/default/test/py_fun_name_attr.t/run.t.corrected
# @@ -58,5 +58,4 @@ of_pyobject with no check
#        ignore @@ Py.Callable.to_function_with_keywords callable [||] kwargs
#    end
#    $ dune exec ./run.exe 2> /dev/null
# -  Cat -- name: Sam, hunger: 9.0
# -  done
# +  [1]
# File "test/split_caml_module.t/run.t", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/split_caml_module.t/run.t _build/default/test/split_caml_module.t/run.t.corrected
# diff --git a/_build/default/test/split_caml_module.t/run.t b/_build/default/test/split_caml_module.t/run.t.corrected
# index 29b2b77..36888bf 100644
# --- a/_build/default/test/split_caml_module.t/run.t
# +++ b/_build/default/test/split_caml_module.t/run.t.corrected
# @@ -40,4 +40,8 @@ Actually using it.
#  
#    $ pyml_bindgen specs.txt thing Thing --caml-module Thing --split-caml-module .
#    $ dune exec ./hello.exe
# -  Ryan
# +  File "thing.ml", line 12, characters 2-23:
# +  12 |   Py.Object.is_instance pyo py_class
# +         ^^^^^^^^^^^^^^^^^^^^^
# +  Error: Unbound value Py.Object.is_instance
# +  [1]
# File "test/of_pyo_option.t/run.t", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/of_pyo_option.t/run.t _build/default/test/of_pyo_option.t/run.t.corrected
# diff --git a/_build/default/test/of_pyo_option.t/run.t b/_build/default/test/of_pyo_option.t/run.t.corrected
# index 2ffb9c3..0d55179 100644
# --- a/_build/default/test/of_pyo_option.t/run.t
# +++ b/_build/default/test/of_pyo_option.t/run.t.corrected
# @@ -7,7 +7,7 @@ Basic usage.
#    $ if [ -f lib.ml ]; then rm lib.ml; fi
#    $ pyml_bindgen silly_sigs_option.txt silly_mod Silly --caml-module=Silly --of-pyo-ret-type=option > lib.ml
#    $ dune exec ./hi.exe 2> /dev/null
# -  all good!
# +  [1]
#  
#  
#  Sigs with t no_check, but requesting option work, but give compiler
# @@ -18,6 +18,7 @@ error if you try to run the code.
#    $ dune exec ./hi.exe 2> err
#    [1]
#    $ grep -i -q 'signature mismatch' err
# +  [1]
#  
#  Sigs with t Or_error.t, but requesting option fail.
#  
# @@ -36,6 +37,7 @@ program will run fine however...
#    $ dune exec ./hi.exe 2> err
#    [1]
#    $ grep -i -q 'signature mismatch' err
# +  [1]
#  
#  If Or_error is present in the signatures but not passed correct
#  --of-pyo-ret-type, it's an error.
# File "test/of_pyo_no_check.t/run.t", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/of_pyo_no_check.t/run.t _build/default/test/of_pyo_no_check.t/run.t.corrected
# diff --git a/_build/default/test/of_pyo_no_check.t/run.t b/_build/default/test/of_pyo_no_check.t/run.t.corrected
# index 1135ba0..eab3497 100644
# --- a/_build/default/test/of_pyo_no_check.t/run.t
# +++ b/_build/default/test/of_pyo_no_check.t/run.t.corrected
# @@ -7,7 +7,7 @@ Basic usage.
#    $ if [ -f lib.ml ]; then rm lib.ml; fi
#    $ pyml_bindgen silly_sigs_no_check.txt silly_mod Silly --caml-module=Silly --of-pyo-ret-type=no_check > lib.ml
#    $ dune exec ./hi.exe 2> /dev/null
# -  all good!
# +  [1]
#  
#  Sigs with t option, but requesting no check work, but give compiler
#  error if you try to run the code.
# @@ -17,6 +17,7 @@ error if you try to run the code.
#    $ dune exec ./hi.exe 2> err
#    [1]
#    $ grep -i -q 'signature mismatch' err
# +  [1]
#  
#  Sigs with t Or_error.t, but requesting no check fail.
#  
# @@ -34,6 +35,7 @@ program will run fine however...
#    $ dune exec ./hi.exe 2> err
#    [1]
#    $ grep -i -q 'signature mismatch' err
# +  [1]
#  
#  If Or_error is present in the signatures but not passed correct
#  --of-pyo-ret-type, it's an error.
# File "test/of_pyo_or_error.t/run.t", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/of_pyo_or_error.t/run.t _build/default/test/of_pyo_or_error.t/run.t.corrected
# diff --git a/_build/default/test/of_pyo_or_error.t/run.t b/_build/default/test/of_pyo_or_error.t/run.t.corrected
# index 94ffb15..0420f5b 100644
# --- a/_build/default/test/of_pyo_or_error.t/run.t
# +++ b/_build/default/test/of_pyo_or_error.t/run.t.corrected
# @@ -7,7 +7,7 @@ Basic usage.
#    $ if [ -f lib.ml ]; then rm lib.ml; fi
#    $ pyml_bindgen silly_sigs_or_error.txt silly_mod Silly --caml-module=Silly --of-pyo-ret-type=or_error > lib.ml
#    $ dune exec ./hi.exe 2> /dev/null
# -  all good!
# +  [1]
#  
#  Sigs with t no_check, but requesting or_error fail.
#  
# @@ -42,9 +42,11 @@ fail.
#    $ dune exec ./hi.exe 2> err
#    [1]
#    $ grep -i -q 'signature mismatch' err
# +  [1]
#  
#    $ if [ -f lib.ml ]; then rm lib.ml; fi
#    $ pyml_bindgen silly_sigs_option_or_error.txt silly_mod Silly --caml-module=Silly --of-pyo-ret-type=or_error > lib.ml
#    $ dune exec ./hi.exe 2> err
#    [1]
#    $ grep -i -q 'signature mismatch' err
# +  [1]
# File "test/embed_source.t/run.t", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/embed_source.t/run.t _build/default/test/embed_source.t/run.t.corrected
# diff --git a/_build/default/test/embed_source.t/run.t b/_build/default/test/embed_source.t/run.t.corrected
# index 433a7ec..741b5bc 100644
# --- a/_build/default/test/embed_source.t/run.t
# +++ b/_build/default/test/embed_source.t/run.t.corrected
# @@ -2,7 +2,7 @@ Non-embedded works.
#  
#    $ pyml_bindgen person_specs.txt person Person -r no_check > person.ml
#    $ dune exec ./person_runner.exe 2> /dev/null
# -  Person -- name: Hagrid, age: 111
# +  [1]
#  
#  Embedded works.
#  
# @@ -68,7 +68,11 @@ Check the generated source.
#  And run it.
#  
#    $ dune exec ./person_runner.exe
# -  Person -- name: Hagrid, age: 111
# +  File "person.ml", line 18, characters 20-30:
# +  18 |      let bytecode = Py.compile ~filename ~source `Exec in
# +                           ^^^^^^^^^^
# +  Error: Unbound value Py.compile
# +  [1]
#  
#  Now try a module inside a package.
#  
# @@ -124,7 +128,11 @@ Now try a module inside a package.
#  Run it.
#  
#    $ dune exec ./person2_runner.exe
# -  Person -- name: Hagrid, age: 111
# +  File "person2.ml", line 18, characters 20-30:
# +  18 |      let bytecode = Py.compile ~filename ~source `Exec in
# +                           ^^^^^^^^^^
# +  Error: Unbound value Py.compile
# +  [1]
#  
#  Finally, let's combine an embedded Python module with a non-embedded
#  one in the same OCaml module and see that it works.
# @@ -235,8 +243,15 @@ And run it.
#        @@ Py.Callable.to_function_with_keywords callable [||] kwargs
#    end
#    $ dune exec ./person_thing_runner.exe
# -  Person -- name: Hagrid, age: 111
# -  Thing -- color: orange
# +  File "lib.ml", line 30, characters 19-45:
# +  30 |     let callable = Py.Object.find_attr_string t "__str__" in
# +                          ^^^^^^^^^^^^^^^^^^^^^^^^^^
# +  Error: Unbound value Py.Object.find_attr_string
# +  File "person.ml", line 18, characters 20-30:
# +  18 |      let bytecode = Py.compile ~filename ~source `Exec in
# +                           ^^^^^^^^^^
# +  Error: Unbound value Py.compile
# +  [1]
#  
#  Watch out...if your Python code uses the reserved string literal syntax that
#  pyml_bindgen uses, it will break when it goes through the OCaml tooling, but NOT
# File "test/module_function_binding.t/run.t", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/module_function_binding.t/run.t _build/default/test/module_function_binding.t/run.t.corrected
# diff --git a/_build/default/test/module_function_binding.t/run.t b/_build/default/test/module_function_binding.t/run.t.corrected
# index b5d8b7c..c7a65c5 100644
# --- a/_build/default/test/module_function_binding.t/run.t
# +++ b/_build/default/test/module_function_binding.t/run.t.corrected
# @@ -32,7 +32,7 @@ Run
#      let kwargs = filter_opt [] in
#      ignore @@ Py.Callable.to_function_with_keywords callable [||] kwargs
#    $ dune exec ./run_no_caml_module.exe 2> /dev/null
# -  add: 30
# +  [2]
#  
#  Run
#  
# @@ -69,4 +69,7 @@ Run
#        ignore @@ Py.Callable.to_function_with_keywords callable [||] kwargs
#    end
#    $ dune exec ./run_with_caml_module.exe 
# -  add: 30
# +  Fatal error: exception Failure("No Python version given and no Python interpreter found")
# +  Raised at Stdlib.failwith in file "stdlib.ml", line 29, characters 17-33
# +  Called from Py.initialize in file "py.ml", line 524, characters 16-100
# +  [2]
# File "test/basic_class_binding.t/run.t", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/basic_class_binding.t/run.t _build/default/test/basic_class_binding.t/run.t.corrected
# diff --git a/_build/default/test/basic_class_binding.t/run.t b/_build/default/test/basic_class_binding.t/run.t.corrected
# index 16ee88b..675ee62 100644
# --- a/_build/default/test/basic_class_binding.t/run.t
# +++ b/_build/default/test/basic_class_binding.t/run.t.corrected
# @@ -135,14 +135,7 @@ of_pyobject with no check
#      let world () = failwith "not implemented: world"
#    end
#    $ dune exec ./run_no_check.exe 2> /dev/null
# -  x: 1
# -  y: 2
# -  foo: 33
# -  bar: 30
# -  (apple pie)
# -  ((apple) () (pie))
# -  (apple pie)
# -  ((apple) () (pie))
# +  [1]
#  
#  of_pyobject returning option
#  
# @@ -277,14 +270,7 @@ of_pyobject returning option
#      let world () = failwith "not implemented: world"
#    end
#    $ dune exec ./run_option.exe 2> /dev/null
# -  x: 1
# -  y: 2
# -  foo: 33
# -  bar: 30
# -  (apple pie)
# -  ((apple) () (pie))
# -  (apple pie)
# -  ((apple) () (pie))
# +  [1]
#  
#  of_pyobject returning Or_error
#  
# @@ -424,12 +410,9 @@ of_pyobject returning Or_error
#      let world () = failwith "not implemented: world"
#    end
#    $ dune exec ./run_or_error.exe
# -  x: 1
# -  y: 2
# -  foo: 33
# -  bar: 30
# -  (apple pie)
# -  ((apple) () (pie))
# -  (apple pie)
# -  ((apple) () (pie))
# +  File "lib.ml", line 55, characters 2-23:
# +  55 |   Py.Object.is_instance pyo py_class
# +         ^^^^^^^^^^^^^^^^^^^^^
# +  Error: Unbound value Py.Object.is_instance
# +  [1]
#  
# File "test/nested_submodules.t/run.t", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/nested_submodules.t/run.t _build/default/test/nested_submodules.t/run.t.corrected
# diff --git a/_build/default/test/nested_submodules.t/run.t b/_build/default/test/nested_submodules.t/run.t.corrected
# index 15ade0c..d8da34c 100644
# --- a/_build/default/test/nested_submodules.t/run.t
# +++ b/_build/default/test/nested_submodules.t/run.t.corrected
# @@ -44,9 +44,7 @@ of_pyobject with no check
#      let hunger t = Py.Int.to_int @@ Py.Object.find_attr_string t "hunger"
#    end
#    $ dune exec ./run_no_check.exe 2> /dev/null
# -  10
# -  5
# -  done
# +  [1]
#  
#  of_pyobject returning option
#  
# @@ -90,9 +88,7 @@ of_pyobject returning option
#      let hunger t = Py.Int.to_int @@ Py.Object.find_attr_string t "hunger"
#    end
#    $ dune exec ./run_option.exe 2> /dev/null
# -  10
# -  5
# -  done
# +  [1]
#  
#  of_pyobject returning Or_error
#  
# @@ -141,6 +137,4 @@ of_pyobject returning Or_error
#      let hunger t = Py.Int.to_int @@ Py.Object.find_attr_string t "hunger"
#    end
#    $ dune exec ./run_or_error.exe 2> /dev/null
# -  10
# -  5
# -  done
# +  [1]
# File "test/raw_pyobjects.t/run.t", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/raw_pyobjects.t/run.t _build/default/test/raw_pyobjects.t/run.t.corrected
# diff --git a/_build/default/test/raw_pyobjects.t/run.t b/_build/default/test/raw_pyobjects.t/run.t.corrected
# index 86c984c..8dd95a3 100644
# --- a/_build/default/test/raw_pyobjects.t/run.t
# +++ b/_build/default/test/raw_pyobjects.t/run.t.corrected
# @@ -54,15 +54,7 @@ of_pyobject with no check
#        Py.Int.to_int @@ Py.Callable.to_function_with_keywords callable [||] kwargs
#    end
#    $ dune exec ./run.exe 2> /dev/null
# -  3
# -  3
# -  apple pie
# -  apple pie
# -  3
# -  Watch out for type errors....
# -  (Error
# -   ("E (<class 'TypeError'>, unsupported operand type(s) for +: 'int' and 'str')"))
# -  done
# +  [2]
#  
#  Pytypes option won't work
#  



<><> Error report <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
+- The following actions failed
| - build pyml_bindgen 0.4.1
+- 
+- The following changes have been performed
| - remove    pyml_bindgen        0.4.1
| - downgrade cmdliner            2.1.0 to 1.3.0
| - install   astring             0.8.5
| - install   base_quickcheck     v0.15.0
| - install   camlp-streams       5.0.1
| - install   conf-python-3-dev   1
| - install   dune-build-info     3.22.2
| - install   either              1.0.0
| - install   fieldslib           v0.15.0
| - install   fix                 20250919
| - install   fpath               0.7.3
| - install   jane-street-headers v0.15.0
| - install   jst-config          v0.15.1
| - install   menhir              20260209
| - install   menhirCST           20260209
| - install   menhirGLR           20260209
| - install   menhirLib           20260209
| - install   menhirSdk           20260209
| - install   ocaml-version       3.5.0
| - install   ocamlbuild          0.16.1
| - install   ocamlfind           1.9.8
| - install   ocamlformat         0.23.0
| - install   ocp-indent          1.9.0
| - install   odoc-parser         1.0.1
| - install   posixat             v0.15.0
| - install   ppx_assert          v0.15.0
| - install   ppx_bench           v0.15.1
| - install   ppx_expect          v0.15.1
| - install   ppx_fields_conv     v0.15.0
| - install   ppx_inline_test     v0.15.1
| - install   ppx_optcomp         v0.15.0
| - install   ppx_sexp_message    v0.15.0
| - install   ppx_sexp_value      v0.15.0
| - install   pyml                20170807
| - install   result              1.5
| - install   shexp               v0.15.0
| - install   spawn               v0.17.0
| - install   splittable_random   v0.15.0
| - install   time_now            v0.15.0
| - install   topkg               1.1.1
| - install   uucp                17.0.0
| - install   uuseg               17.0.0
| - install   uutf                1.0.4
+- 

<><> ocp-indent.1.9.0 installed successfully ><><><><><><><><><><><><><><><><><>
=> This package requires additional configuration for use in editors. Install package 'user-setup', or manually:

   * for Emacs, add these lines to ~/.emacs:
     (add-to-list 'load-path "/home/opam/.opam/4.14/share/emacs/site-lisp")
     (require 'ocp-indent)

   * for Vim, add this line to ~/.vimrc:
     set rtp^="/home/opam/.opam/4.14/share/ocp-indent/vim"
# To update the current shell environment, run: eval $(opam env)

The former state can be restored with:
    /usr/bin/opam switch import "/home/opam/.opam/4.14/.opam-switch/backup/state-20260413150812.export"
Or you can retry to install your package selection with:
    /usr/bin/opam install --restore
2026-04-13 15:10.42 ---> saved as "93efbf7b2a8f5d3ad6286d7db9cbd68b2a92a075643b9070cbdb90ef01075a66"

/home/opam: (run (shell  "opam reinstall --with-test --verbose pyml_bindgen.0.4.1;\
                        \n        res=$?;\
                        \n        test \"$res\" != 31 && exit \"$res\";\
                        \n        export OPAMCLI=2.0;\
                        \n        build_dir=$(opam var prefix)/.opam-switch/build;\
                        \n        failed=$(ls \"$build_dir\");\
                        \n        partial_fails=\"\";\
                        \n        for pkg in $failed; do\
                        \n          if opam show -f x-ci-accept-failures: \"$pkg\" | grep -qF \"\\\"debian-13\\\"\"; then\
                        \n            echo \"A package failed and has been disabled for CI using the 'x-ci-accept-failures' field.\";\
                        \n          fi;\
                        \n          test \"$pkg\" != 'pyml_bindgen.0.4.1' && partial_fails=\"$partial_fails $pkg\";\
                        \n        done;\
                        \n        test \"${partial_fails}\" != \"\" && echo \"opam-repo-ci detected dependencies failing: ${partial_fails}\";\
                        \n        exit 1"))
pyml_bindgen.0.4.1 is not installed. Install it? [Y/n] y
The following actions will be performed:
=== install 1 package
  - install pyml_bindgen 0.4.1

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
Processing  1/3: [pyml_bindgen.0.4.1: extract]
-> retrieved pyml_bindgen.0.4.1  (cached)
Processing  2/3: [pyml_bindgen: dune build]
+ /home/opam/.opam/opam-init/hooks/sandbox.sh "build" "dune" "build" "-p" "pyml_bindgen" "-j" "255" "@install" "@runtest" (CWD=/home/opam/.opam/4.14/.opam-switch/build/pyml_bindgen.0.4.1)
- File "test/binding_tuples.t/run.t", line 1, characters 0-0:
- /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/binding_tuples.t/run.t _build/default/test/binding_tuples.t/run.t.corrected
- diff --git a/_build/default/test/binding_tuples.t/run.t b/_build/default/test/binding_tuples.t/run.t.corrected
- index 69df476..952ec36 100644
- --- a/_build/default/test/binding_tuples.t/run.t
- +++ b/_build/default/test/binding_tuples.t/run.t.corrected
- @@ -63,5 +63,5 @@ Cat the files and run.
-        @@ Py.Callable.to_function_with_keywords callable [||] kwargs
-    end
-    $ dune exec ./run.exe 2> /dev/null
- -  10 a!!
- +  [1]
-  
- File "test/py_fun_name_attr.t/run.t", line 1, characters 0-0:
- /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/py_fun_name_attr.t/run.t _build/default/test/py_fun_name_attr.t/run.t.corrected
- diff --git a/_build/default/test/py_fun_name_attr.t/run.t b/_build/default/test/py_fun_name_attr.t/run.t.corrected
- index 1c0fa95..6e9cafd 100644
- --- a/_build/default/test/py_fun_name_attr.t/run.t
- +++ b/_build/default/test/py_fun_name_attr.t/run.t.corrected
- @@ -58,5 +58,4 @@ of_pyobject with no check
-        ignore @@ Py.Callable.to_function_with_keywords callable [||] kwargs
-    end
-    $ dune exec ./run.exe 2> /dev/null
- -  Cat -- name: Sam, hunger: 9.0
- -  done
- +  [1]
- File "test/split_caml_module.t/run.t", line 1, characters 0-0:
- /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/split_caml_module.t/run.t _build/default/test/split_caml_module.t/run.t.corrected
- diff --git a/_build/default/test/split_caml_module.t/run.t b/_build/default/test/split_caml_module.t/run.t.corrected
- index 29b2b77..36888bf 100644
- --- a/_build/default/test/split_caml_module.t/run.t
- +++ b/_build/default/test/split_caml_module.t/run.t.corrected
- @@ -40,4 +40,8 @@ Actually using it.
-  
-    $ pyml_bindgen specs.txt thing Thing --caml-module Thing --split-caml-module .
-    $ dune exec ./hello.exe
- -  Ryan
- +  File "thing.ml", line 12, characters 2-23:
- +  12 |   Py.Object.is_instance pyo py_class
- +         ^^^^^^^^^^^^^^^^^^^^^
- +  Error: Unbound value Py.Object.is_instance
- +  [1]
- File "test/of_pyo_no_check.t/run.t", line 1, characters 0-0:
- /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/of_pyo_no_check.t/run.t _build/default/test/of_pyo_no_check.t/run.t.corrected
- diff --git a/_build/default/test/of_pyo_no_check.t/run.t b/_build/default/test/of_pyo_no_check.t/run.t.corrected
- index 1135ba0..eab3497 100644
- --- a/_build/default/test/of_pyo_no_check.t/run.t
- +++ b/_build/default/test/of_pyo_no_check.t/run.t.corrected
- @@ -7,7 +7,7 @@ Basic usage.
-    $ if [ -f lib.ml ]; then rm lib.ml; fi
-    $ pyml_bindgen silly_sigs_no_check.txt silly_mod Silly --caml-module=Silly --of-pyo-ret-type=no_check > lib.ml
-    $ dune exec ./hi.exe 2> /dev/null
- -  all good!
- +  [1]
-  
-  Sigs with t option, but requesting no check work, but give compiler
-  error if you try to run the code.
- @@ -17,6 +17,7 @@ error if you try to run the code.
-    $ dune exec ./hi.exe 2> err
-    [1]
-    $ grep -i -q 'signature mismatch' err
- +  [1]
-  
-  Sigs with t Or_error.t, but requesting no check fail.
-  
- @@ -34,6 +35,7 @@ program will run fine however...
-    $ dune exec ./hi.exe 2> err
-    [1]
-    $ grep -i -q 'signature mismatch' err
- +  [1]
-  
-  If Or_error is present in the signatures but not passed correct
-  --of-pyo-ret-type, it's an error.
- File "test/of_pyo_option.t/run.t", line 1, characters 0-0:
- /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/of_pyo_option.t/run.t _build/default/test/of_pyo_option.t/run.t.corrected
- diff --git a/_build/default/test/of_pyo_option.t/run.t b/_build/default/test/of_pyo_option.t/run.t.corrected
- index 2ffb9c3..0d55179 100644
- --- a/_build/default/test/of_pyo_option.t/run.t
- +++ b/_build/default/test/of_pyo_option.t/run.t.corrected
- @@ -7,7 +7,7 @@ Basic usage.
-    $ if [ -f lib.ml ]; then rm lib.ml; fi
-    $ pyml_bindgen silly_sigs_option.txt silly_mod Silly --caml-module=Silly --of-pyo-ret-type=option > lib.ml
-    $ dune exec ./hi.exe 2> /dev/null
- -  all good!
- +  [1]
-  
-  
-  Sigs with t no_check, but requesting option work, but give compiler
- @@ -18,6 +18,7 @@ error if you try to run the code.
-    $ dune exec ./hi.exe 2> err
-    [1]
-    $ grep -i -q 'signature mismatch' err
- +  [1]
-  
-  Sigs with t Or_error.t, but requesting option fail.
-  
- @@ -36,6 +37,7 @@ program will run fine however...
-    $ dune exec ./hi.exe 2> err
-    [1]
-    $ grep -i -q 'signature mismatch' err
- +  [1]
-  
-  If Or_error is present in the signatures but not passed correct
-  --of-pyo-ret-type, it's an error.
- File "test/of_pyo_or_error.t/run.t", line 1, characters 0-0:
- /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/of_pyo_or_error.t/run.t _build/default/test/of_pyo_or_error.t/run.t.corrected
- diff --git a/_build/default/test/of_pyo_or_error.t/run.t b/_build/default/test/of_pyo_or_error.t/run.t.corrected
- index 94ffb15..0420f5b 100644
- --- a/_build/default/test/of_pyo_or_error.t/run.t
- +++ b/_build/default/test/of_pyo_or_error.t/run.t.corrected
- @@ -7,7 +7,7 @@ Basic usage.
-    $ if [ -f lib.ml ]; then rm lib.ml; fi
-    $ pyml_bindgen silly_sigs_or_error.txt silly_mod Silly --caml-module=Silly --of-pyo-ret-type=or_error > lib.ml
-    $ dune exec ./hi.exe 2> /dev/null
- -  all good!
- +  [1]
-  
-  Sigs with t no_check, but requesting or_error fail.
-  
- @@ -42,9 +42,11 @@ fail.
-    $ dune exec ./hi.exe 2> err
-    [1]
-    $ grep -i -q 'signature mismatch' err
- +  [1]
-  
-    $ if [ -f lib.ml ]; then rm lib.ml; fi
-    $ pyml_bindgen silly_sigs_option_or_error.txt silly_mod Silly --caml-module=Silly --of-pyo-ret-type=or_error > lib.ml
-    $ dune exec ./hi.exe 2> err
-    [1]
-    $ grep -i -q 'signature mismatch' err
- +  [1]
- File "test/embed_source.t/run.t", line 1, characters 0-0:
- /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/embed_source.t/run.t _build/default/test/embed_source.t/run.t.corrected
- diff --git a/_build/default/test/embed_source.t/run.t b/_build/default/test/embed_source.t/run.t.corrected
- index 433a7ec..741b5bc 100644
- --- a/_build/default/test/embed_source.t/run.t
- +++ b/_build/default/test/embed_source.t/run.t.corrected
- @@ -2,7 +2,7 @@ Non-embedded works.
-  
-    $ pyml_bindgen person_specs.txt person Person -r no_check > person.ml
-    $ dune exec ./person_runner.exe 2> /dev/null
- -  Person -- name: Hagrid, age: 111
- +  [1]
-  
-  Embedded works.
-  
- @@ -68,7 +68,11 @@ Check the generated source.
-  And run it.
-  
-    $ dune exec ./person_runner.exe
- -  Person -- name: Hagrid, age: 111
- +  File "person.ml", line 18, characters 20-30:
- +  18 |      let bytecode = Py.compile ~filename ~source `Exec in
- +                           ^^^^^^^^^^
- +  Error: Unbound value Py.compile
- +  [1]
-  
-  Now try a module inside a package.
-  
- @@ -124,7 +128,11 @@ Now try a module inside a package.
-  Run it.
-  
-    $ dune exec ./person2_runner.exe
- -  Person -- name: Hagrid, age: 111
- +  File "person2.ml", line 18, characters 20-30:
- +  18 |      let bytecode = Py.compile ~filename ~source `Exec in
- +                           ^^^^^^^^^^
- +  Error: Unbound value Py.compile
- +  [1]
-  
-  Finally, let's combine an embedded Python module with a non-embedded
-  one in the same OCaml module and see that it works.
- @@ -235,8 +243,15 @@ And run it.
-        @@ Py.Callable.to_function_with_keywords callable [||] kwargs
-    end
-    $ dune exec ./person_thing_runner.exe
- -  Person -- name: Hagrid, age: 111
- -  Thing -- color: orange
- +  File "lib.ml", line 30, characters 19-45:
- +  30 |     let callable = Py.Object.find_attr_string t "__str__" in
- +                          ^^^^^^^^^^^^^^^^^^^^^^^^^^
- +  Error: Unbound value Py.Object.find_attr_string
- +  File "person.ml", line 18, characters 20-30:
- +  18 |      let bytecode = Py.compile ~filename ~source `Exec in
- +                           ^^^^^^^^^^
- +  Error: Unbound value Py.compile
- +  [1]
-  
-  Watch out...if your Python code uses the reserved string literal syntax that
-  pyml_bindgen uses, it will break when it goes through the OCaml tooling, but NOT
- File "test/module_function_binding.t/run.t", line 1, characters 0-0:
- /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/module_function_binding.t/run.t _build/default/test/module_function_binding.t/run.t.corrected
- diff --git a/_build/default/test/module_function_binding.t/run.t b/_build/default/test/module_function_binding.t/run.t.corrected
- index b5d8b7c..c7a65c5 100644
- --- a/_build/default/test/module_function_binding.t/run.t
- +++ b/_build/default/test/module_function_binding.t/run.t.corrected
- @@ -32,7 +32,7 @@ Run
-      let kwargs = filter_opt [] in
-      ignore @@ Py.Callable.to_function_with_keywords callable [||] kwargs
-    $ dune exec ./run_no_caml_module.exe 2> /dev/null
- -  add: 30
- +  [2]
-  
-  Run
-  
- @@ -69,4 +69,7 @@ Run
-        ignore @@ Py.Callable.to_function_with_keywords callable [||] kwargs
-    end
-    $ dune exec ./run_with_caml_module.exe 
- -  add: 30
- +  Fatal error: exception Failure("No Python version given and no Python interpreter found")
- +  Raised at Stdlib.failwith in file "stdlib.ml", line 29, characters 17-33
- +  Called from Py.initialize in file "py.ml", line 524, characters 16-100
- +  [2]
- File "test/basic_class_binding.t/run.t", line 1, characters 0-0:
- /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/basic_class_binding.t/run.t _build/default/test/basic_class_binding.t/run.t.corrected
- diff --git a/_build/default/test/basic_class_binding.t/run.t b/_build/default/test/basic_class_binding.t/run.t.corrected
- index 16ee88b..675ee62 100644
- --- a/_build/default/test/basic_class_binding.t/run.t
- +++ b/_build/default/test/basic_class_binding.t/run.t.corrected
- @@ -135,14 +135,7 @@ of_pyobject with no check
-      let world () = failwith "not implemented: world"
-    end
-    $ dune exec ./run_no_check.exe 2> /dev/null
- -  x: 1
- -  y: 2
- -  foo: 33
- -  bar: 30
- -  (apple pie)
- -  ((apple) () (pie))
- -  (apple pie)
- -  ((apple) () (pie))
- +  [1]
-  
-  of_pyobject returning option
-  
- @@ -277,14 +270,7 @@ of_pyobject returning option
-      let world () = failwith "not implemented: world"
-    end
-    $ dune exec ./run_option.exe 2> /dev/null
- -  x: 1
- -  y: 2
- -  foo: 33
- -  bar: 30
- -  (apple pie)
- -  ((apple) () (pie))
- -  (apple pie)
- -  ((apple) () (pie))
- +  [1]
-  
-  of_pyobject returning Or_error
-  
- @@ -424,12 +410,9 @@ of_pyobject returning Or_error
-      let world () = failwith "not implemented: world"
-    end
-    $ dune exec ./run_or_error.exe
- -  x: 1
- -  y: 2
- -  foo: 33
- -  bar: 30
- -  (apple pie)
- -  ((apple) () (pie))
- -  (apple pie)
- -  ((apple) () (pie))
- +  File "lib.ml", line 55, characters 2-23:
- +  55 |   Py.Object.is_instance pyo py_class
- +         ^^^^^^^^^^^^^^^^^^^^^
- +  Error: Unbound value Py.Object.is_instance
- +  [1]
-  
- File "test/nested_submodules.t/run.t", line 1, characters 0-0:
- /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/nested_submodules.t/run.t _build/default/test/nested_submodules.t/run.t.corrected
- diff --git a/_build/default/test/nested_submodules.t/run.t b/_build/default/test/nested_submodules.t/run.t.corrected
- index 15ade0c..d8da34c 100644
- --- a/_build/default/test/nested_submodules.t/run.t
- +++ b/_build/default/test/nested_submodules.t/run.t.corrected
- @@ -44,9 +44,7 @@ of_pyobject with no check
-      let hunger t = Py.Int.to_int @@ Py.Object.find_attr_string t "hunger"
-    end
-    $ dune exec ./run_no_check.exe 2> /dev/null
- -  10
- -  5
- -  done
- +  [1]
-  
-  of_pyobject returning option
-  
- @@ -90,9 +88,7 @@ of_pyobject returning option
-      let hunger t = Py.Int.to_int @@ Py.Object.find_attr_string t "hunger"
-    end
-    $ dune exec ./run_option.exe 2> /dev/null
- -  10
- -  5
- -  done
- +  [1]
-  
-  of_pyobject returning Or_error
-  
- @@ -141,6 +137,4 @@ of_pyobject returning Or_error
-      let hunger t = Py.Int.to_int @@ Py.Object.find_attr_string t "hunger"
-    end
-    $ dune exec ./run_or_error.exe 2> /dev/null
- -  10
- -  5
- -  done
- +  [1]
- File "test/raw_pyobjects.t/run.t", line 1, characters 0-0:
- /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/raw_pyobjects.t/run.t _build/default/test/raw_pyobjects.t/run.t.corrected
- diff --git a/_build/default/test/raw_pyobjects.t/run.t b/_build/default/test/raw_pyobjects.t/run.t.corrected
- index 86c984c..8dd95a3 100644
- --- a/_build/default/test/raw_pyobjects.t/run.t
- +++ b/_build/default/test/raw_pyobjects.t/run.t.corrected
- @@ -54,15 +54,7 @@ of_pyobject with no check
-        Py.Int.to_int @@ Py.Callable.to_function_with_keywords callable [||] kwargs
-    end
-    $ dune exec ./run.exe 2> /dev/null
- -  3
- -  3
- -  apple pie
- -  apple pie
- -  3
- -  Watch out for type errors....
- -  (Error
- -   ("E (<class 'TypeError'>, unsupported operand type(s) for +: 'int' and 'str')"))
- -  done
- +  [2]
-  
-  Pytypes option won't work
-  
[ERROR] The compilation of pyml_bindgen.0.4.1 failed at "dune build -p pyml_bindgen -j 255 @install @runtest".

#=== ERROR while compiling pyml_bindgen.0.4.1 =================================#
# context              2.5.0 | linux/x86_64 | ocaml-base-compiler.4.14.3 | file:///home/opam/opam-repository
# path                 ~/.opam/4.14/.opam-switch/build/pyml_bindgen.0.4.1
# command              ~/.opam/opam-init/hooks/sandbox.sh build dune build -p pyml_bindgen -j 255 @install @runtest
# exit-code            1
# env-file             ~/.opam/log/pyml_bindgen-7-d753d3.env
# output-file          ~/.opam/log/pyml_bindgen-7-d753d3.out
### output ###
# File "test/binding_tuples.t/run.t", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/binding_tuples.t/run.t _build/default/test/binding_tuples.t/run.t.corrected
# diff --git a/_build/default/test/binding_tuples.t/run.t b/_build/default/test/binding_tuples.t/run.t.corrected
# index 69df476..952ec36 100644
# --- a/_build/default/test/binding_tuples.t/run.t
# +++ b/_build/default/test/binding_tuples.t/run.t.corrected
# @@ -63,5 +63,5 @@ Cat the files and run.
#        @@ Py.Callable.to_function_with_keywords callable [||] kwargs
#    end
#    $ dune exec ./run.exe 2> /dev/null
# -  10 a!!
# +  [1]
#  
# File "test/py_fun_name_attr.t/run.t", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/py_fun_name_attr.t/run.t _build/default/test/py_fun_name_attr.t/run.t.corrected
# diff --git a/_build/default/test/py_fun_name_attr.t/run.t b/_build/default/test/py_fun_name_attr.t/run.t.corrected
# index 1c0fa95..6e9cafd 100644
# --- a/_build/default/test/py_fun_name_attr.t/run.t
# +++ b/_build/default/test/py_fun_name_attr.t/run.t.corrected
# @@ -58,5 +58,4 @@ of_pyobject with no check
#        ignore @@ Py.Callable.to_function_with_keywords callable [||] kwargs
#    end
#    $ dune exec ./run.exe 2> /dev/null
# -  Cat -- name: Sam, hunger: 9.0
# -  done
# +  [1]
# File "test/split_caml_module.t/run.t", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/split_caml_module.t/run.t _build/default/test/split_caml_module.t/run.t.corrected
# diff --git a/_build/default/test/split_caml_module.t/run.t b/_build/default/test/split_caml_module.t/run.t.corrected
# index 29b2b77..36888bf 100644
# --- a/_build/default/test/split_caml_module.t/run.t
# +++ b/_build/default/test/split_caml_module.t/run.t.corrected
# @@ -40,4 +40,8 @@ Actually using it.
#  
#    $ pyml_bindgen specs.txt thing Thing --caml-module Thing --split-caml-module .
#    $ dune exec ./hello.exe
# -  Ryan
# +  File "thing.ml", line 12, characters 2-23:
# +  12 |   Py.Object.is_instance pyo py_class
# +         ^^^^^^^^^^^^^^^^^^^^^
# +  Error: Unbound value Py.Object.is_instance
# +  [1]
# File "test/of_pyo_no_check.t/run.t", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/of_pyo_no_check.t/run.t _build/default/test/of_pyo_no_check.t/run.t.corrected
# diff --git a/_build/default/test/of_pyo_no_check.t/run.t b/_build/default/test/of_pyo_no_check.t/run.t.corrected
# index 1135ba0..eab3497 100644
# --- a/_build/default/test/of_pyo_no_check.t/run.t
# +++ b/_build/default/test/of_pyo_no_check.t/run.t.corrected
# @@ -7,7 +7,7 @@ Basic usage.
#    $ if [ -f lib.ml ]; then rm lib.ml; fi
#    $ pyml_bindgen silly_sigs_no_check.txt silly_mod Silly --caml-module=Silly --of-pyo-ret-type=no_check > lib.ml
#    $ dune exec ./hi.exe 2> /dev/null
# -  all good!
# +  [1]
#  
#  Sigs with t option, but requesting no check work, but give compiler
#  error if you try to run the code.
# @@ -17,6 +17,7 @@ error if you try to run the code.
#    $ dune exec ./hi.exe 2> err
#    [1]
#    $ grep -i -q 'signature mismatch' err
# +  [1]
#  
#  Sigs with t Or_error.t, but requesting no check fail.
#  
# @@ -34,6 +35,7 @@ program will run fine however...
#    $ dune exec ./hi.exe 2> err
#    [1]
#    $ grep -i -q 'signature mismatch' err
# +  [1]
#  
#  If Or_error is present in the signatures but not passed correct
#  --of-pyo-ret-type, it's an error.
# File "test/of_pyo_option.t/run.t", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/of_pyo_option.t/run.t _build/default/test/of_pyo_option.t/run.t.corrected
# diff --git a/_build/default/test/of_pyo_option.t/run.t b/_build/default/test/of_pyo_option.t/run.t.corrected
# index 2ffb9c3..0d55179 100644
# --- a/_build/default/test/of_pyo_option.t/run.t
# +++ b/_build/default/test/of_pyo_option.t/run.t.corrected
# @@ -7,7 +7,7 @@ Basic usage.
#    $ if [ -f lib.ml ]; then rm lib.ml; fi
#    $ pyml_bindgen silly_sigs_option.txt silly_mod Silly --caml-module=Silly --of-pyo-ret-type=option > lib.ml
#    $ dune exec ./hi.exe 2> /dev/null
# -  all good!
# +  [1]
#  
#  
#  Sigs with t no_check, but requesting option work, but give compiler
# @@ -18,6 +18,7 @@ error if you try to run the code.
#    $ dune exec ./hi.exe 2> err
#    [1]
#    $ grep -i -q 'signature mismatch' err
# +  [1]
#  
#  Sigs with t Or_error.t, but requesting option fail.
#  
# @@ -36,6 +37,7 @@ program will run fine however...
#    $ dune exec ./hi.exe 2> err
#    [1]
#    $ grep -i -q 'signature mismatch' err
# +  [1]
#  
#  If Or_error is present in the signatures but not passed correct
#  --of-pyo-ret-type, it's an error.
# File "test/of_pyo_or_error.t/run.t", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/of_pyo_or_error.t/run.t _build/default/test/of_pyo_or_error.t/run.t.corrected
# diff --git a/_build/default/test/of_pyo_or_error.t/run.t b/_build/default/test/of_pyo_or_error.t/run.t.corrected
# index 94ffb15..0420f5b 100644
# --- a/_build/default/test/of_pyo_or_error.t/run.t
# +++ b/_build/default/test/of_pyo_or_error.t/run.t.corrected
# @@ -7,7 +7,7 @@ Basic usage.
#    $ if [ -f lib.ml ]; then rm lib.ml; fi
#    $ pyml_bindgen silly_sigs_or_error.txt silly_mod Silly --caml-module=Silly --of-pyo-ret-type=or_error > lib.ml
#    $ dune exec ./hi.exe 2> /dev/null
# -  all good!
# +  [1]
#  
#  Sigs with t no_check, but requesting or_error fail.
#  
# @@ -42,9 +42,11 @@ fail.
#    $ dune exec ./hi.exe 2> err
#    [1]
#    $ grep -i -q 'signature mismatch' err
# +  [1]
#  
#    $ if [ -f lib.ml ]; then rm lib.ml; fi
#    $ pyml_bindgen silly_sigs_option_or_error.txt silly_mod Silly --caml-module=Silly --of-pyo-ret-type=or_error > lib.ml
#    $ dune exec ./hi.exe 2> err
#    [1]
#    $ grep -i -q 'signature mismatch' err
# +  [1]
# File "test/embed_source.t/run.t", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/embed_source.t/run.t _build/default/test/embed_source.t/run.t.corrected
# diff --git a/_build/default/test/embed_source.t/run.t b/_build/default/test/embed_source.t/run.t.corrected
# index 433a7ec..741b5bc 100644
# --- a/_build/default/test/embed_source.t/run.t
# +++ b/_build/default/test/embed_source.t/run.t.corrected
# @@ -2,7 +2,7 @@ Non-embedded works.
#  
#    $ pyml_bindgen person_specs.txt person Person -r no_check > person.ml
#    $ dune exec ./person_runner.exe 2> /dev/null
# -  Person -- name: Hagrid, age: 111
# +  [1]
#  
#  Embedded works.
#  
# @@ -68,7 +68,11 @@ Check the generated source.
#  And run it.
#  
#    $ dune exec ./person_runner.exe
# -  Person -- name: Hagrid, age: 111
# +  File "person.ml", line 18, characters 20-30:
# +  18 |      let bytecode = Py.compile ~filename ~source `Exec in
# +                           ^^^^^^^^^^
# +  Error: Unbound value Py.compile
# +  [1]
#  
#  Now try a module inside a package.
#  
# @@ -124,7 +128,11 @@ Now try a module inside a package.
#  Run it.
#  
#    $ dune exec ./person2_runner.exe
# -  Person -- name: Hagrid, age: 111
# +  File "person2.ml", line 18, characters 20-30:
# +  18 |      let bytecode = Py.compile ~filename ~source `Exec in
# +                           ^^^^^^^^^^
# +  Error: Unbound value Py.compile
# +  [1]
#  
#  Finally, let's combine an embedded Python module with a non-embedded
#  one in the same OCaml module and see that it works.
# @@ -235,8 +243,15 @@ And run it.
#        @@ Py.Callable.to_function_with_keywords callable [||] kwargs
#    end
#    $ dune exec ./person_thing_runner.exe
# -  Person -- name: Hagrid, age: 111
# -  Thing -- color: orange
# +  File "lib.ml", line 30, characters 19-45:
# +  30 |     let callable = Py.Object.find_attr_string t "__str__" in
# +                          ^^^^^^^^^^^^^^^^^^^^^^^^^^
# +  Error: Unbound value Py.Object.find_attr_string
# +  File "person.ml", line 18, characters 20-30:
# +  18 |      let bytecode = Py.compile ~filename ~source `Exec in
# +                           ^^^^^^^^^^
# +  Error: Unbound value Py.compile
# +  [1]
#  
#  Watch out...if your Python code uses the reserved string literal syntax that
#  pyml_bindgen uses, it will break when it goes through the OCaml tooling, but NOT
# File "test/module_function_binding.t/run.t", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/module_function_binding.t/run.t _build/default/test/module_function_binding.t/run.t.corrected
# diff --git a/_build/default/test/module_function_binding.t/run.t b/_build/default/test/module_function_binding.t/run.t.corrected
# index b5d8b7c..c7a65c5 100644
# --- a/_build/default/test/module_function_binding.t/run.t
# +++ b/_build/default/test/module_function_binding.t/run.t.corrected
# @@ -32,7 +32,7 @@ Run
#      let kwargs = filter_opt [] in
#      ignore @@ Py.Callable.to_function_with_keywords callable [||] kwargs
#    $ dune exec ./run_no_caml_module.exe 2> /dev/null
# -  add: 30
# +  [2]
#  
#  Run
#  
# @@ -69,4 +69,7 @@ Run
#        ignore @@ Py.Callable.to_function_with_keywords callable [||] kwargs
#    end
#    $ dune exec ./run_with_caml_module.exe 
# -  add: 30
# +  Fatal error: exception Failure("No Python version given and no Python interpreter found")
# +  Raised at Stdlib.failwith in file "stdlib.ml", line 29, characters 17-33
# +  Called from Py.initialize in file "py.ml", line 524, characters 16-100
# +  [2]
# File "test/basic_class_binding.t/run.t", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/basic_class_binding.t/run.t _build/default/test/basic_class_binding.t/run.t.corrected
# diff --git a/_build/default/test/basic_class_binding.t/run.t b/_build/default/test/basic_class_binding.t/run.t.corrected
# index 16ee88b..675ee62 100644
# --- a/_build/default/test/basic_class_binding.t/run.t
# +++ b/_build/default/test/basic_class_binding.t/run.t.corrected
# @@ -135,14 +135,7 @@ of_pyobject with no check
#      let world () = failwith "not implemented: world"
#    end
#    $ dune exec ./run_no_check.exe 2> /dev/null
# -  x: 1
# -  y: 2
# -  foo: 33
# -  bar: 30
# -  (apple pie)
# -  ((apple) () (pie))
# -  (apple pie)
# -  ((apple) () (pie))
# +  [1]
#  
#  of_pyobject returning option
#  
# @@ -277,14 +270,7 @@ of_pyobject returning option
#      let world () = failwith "not implemented: world"
#    end
#    $ dune exec ./run_option.exe 2> /dev/null
# -  x: 1
# -  y: 2
# -  foo: 33
# -  bar: 30
# -  (apple pie)
# -  ((apple) () (pie))
# -  (apple pie)
# -  ((apple) () (pie))
# +  [1]
#  
#  of_pyobject returning Or_error
#  
# @@ -424,12 +410,9 @@ of_pyobject returning Or_error
#      let world () = failwith "not implemented: world"
#    end
#    $ dune exec ./run_or_error.exe
# -  x: 1
# -  y: 2
# -  foo: 33
# -  bar: 30
# -  (apple pie)
# -  ((apple) () (pie))
# -  (apple pie)
# -  ((apple) () (pie))
# +  File "lib.ml", line 55, characters 2-23:
# +  55 |   Py.Object.is_instance pyo py_class
# +         ^^^^^^^^^^^^^^^^^^^^^
# +  Error: Unbound value Py.Object.is_instance
# +  [1]
#  
# File "test/nested_submodules.t/run.t", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/nested_submodules.t/run.t _build/default/test/nested_submodules.t/run.t.corrected
# diff --git a/_build/default/test/nested_submodules.t/run.t b/_build/default/test/nested_submodules.t/run.t.corrected
# index 15ade0c..d8da34c 100644
# --- a/_build/default/test/nested_submodules.t/run.t
# +++ b/_build/default/test/nested_submodules.t/run.t.corrected
# @@ -44,9 +44,7 @@ of_pyobject with no check
#      let hunger t = Py.Int.to_int @@ Py.Object.find_attr_string t "hunger"
#    end
#    $ dune exec ./run_no_check.exe 2> /dev/null
# -  10
# -  5
# -  done
# +  [1]
#  
#  of_pyobject returning option
#  
# @@ -90,9 +88,7 @@ of_pyobject returning option
#      let hunger t = Py.Int.to_int @@ Py.Object.find_attr_string t "hunger"
#    end
#    $ dune exec ./run_option.exe 2> /dev/null
# -  10
# -  5
# -  done
# +  [1]
#  
#  of_pyobject returning Or_error
#  
# @@ -141,6 +137,4 @@ of_pyobject returning Or_error
#      let hunger t = Py.Int.to_int @@ Py.Object.find_attr_string t "hunger"
#    end
#    $ dune exec ./run_or_error.exe 2> /dev/null
# -  10
# -  5
# -  done
# +  [1]
# File "test/raw_pyobjects.t/run.t", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/raw_pyobjects.t/run.t _build/default/test/raw_pyobjects.t/run.t.corrected
# diff --git a/_build/default/test/raw_pyobjects.t/run.t b/_build/default/test/raw_pyobjects.t/run.t.corrected
# index 86c984c..8dd95a3 100644
# --- a/_build/default/test/raw_pyobjects.t/run.t
# +++ b/_build/default/test/raw_pyobjects.t/run.t.corrected
# @@ -54,15 +54,7 @@ of_pyobject with no check
#        Py.Int.to_int @@ Py.Callable.to_function_with_keywords callable [||] kwargs
#    end
#    $ dune exec ./run.exe 2> /dev/null
# -  3
# -  3
# -  apple pie
# -  apple pie
# -  3
# -  Watch out for type errors....
# -  (Error
# -   ("E (<class 'TypeError'>, unsupported operand type(s) for +: 'int' and 'str')"))
# -  done
# +  [2]
#  
#  Pytypes option won't work
#  



<><> Error report <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
+- The following actions failed
| - build pyml_bindgen 0.4.1
+- 
- No changes have been performed
# To update the current shell environment, run: eval $(opam env)
'opam reinstall --with-test --verbose pyml_bindgen.0.4.1' failed.
[WARNING] OPAMCONFIRMLEVEL was ignored because CLI 2.0 was requested and it was introduced in 2.1.
[WARNING] OPAMCONFIRMLEVEL was ignored because CLI 2.0 was requested and it was introduced in 2.1.
"/usr/bin/env" "bash" "-c" "opam reinstall --with-test --verbose pyml_bindgen.0.4.1;
        res=$?;
        test "$res" != 31 && exit "$res";
        export OPAMCLI=2.0;
        build_dir=$(opam var prefix)/.opam-switch/build;
        failed=$(ls "$build_dir");
        partial_fails="";
        for pkg in $failed; do
          if opam show -f x-ci-accept-failures: "$pkg" | grep -qF "\"debian-13\""; then
            echo "A package failed and has been disabled for CI using the 'x-ci-accept-failures' field.";
          fi;
          test "$pkg" != 'pyml_bindgen.0.4.1' && partial_fails="$partial_fails $pkg";
        done;
        test "${partial_fails}" != "" && echo "opam-repo-ci detected dependencies failing: ${partial_fails}";
        exit 1" failed with exit status 1
2026-04-13 15:10.58: Job failed: Failed: Build failed
2026-04-13 15:10.58: Log analysis:
2026-04-13 15:10.58: >>> 
[ERROR] The compilation of pyml_bindgen.0.4.1 failed at "dune build -p pyml_bindgen -j 255 @install @runtest".
 (score = 20)
2026-04-13 15:10.58: >>> 
[ERROR] The compilation of pyml_bindgen.0.4.1 failed at "dune build -p pyml_bindgen -j 255 @install @runtest".
 (score = 20)
2026-04-13 15:10.58: The compilation of pyml_bindgen.0.4.1 failed at "dune build -p pyml_bindgen -j 255 @install @runtest".