Published: 02 Aug 2022
OCaml-Python Bindings Generator
Generate Python bindings with pyml directly from OCaml value specifications.
While you could write all your Python bindings by hand, it can be tedious and it gets old real quick. While
pyml_bindgen can't yet auto-generate all the bindings you may need, it can definitely take care of a lot of the tedious and repetitive work you need to do when writing bindings for a big Python library!! 💖
pyml_bindgen. It is available on Opam.
$ opam install pyml_bindgen
Say you have a Python class you want to bind and use in OCaml. (Filename:
class Adder: @staticmethod def add(x, y): return x + y
To do so, you write OCaml value specifications for the class and methods you want to bind. (Filename:
val add : x:int -> y:int -> unit -> int
Then, you run
$ pyml_bindgen val_specs.txt adder Adder --caml-module Adder > lib.ml
Now you can use your generated functions in your OCaml code. (Filename:
open Lib let () = Py.initialize () let result = Adder.add ~x:1 ~y:2 () let () = assert (result = 3)
Finally, set up a dune file and run it.
(executable (name run) (libraries pyml))
$ dune exec ./run.exe
For information on installing and using
pyml_bindgen, check out the docs.
You may also want to check out my blog post introducing
Installing from sources
If you want to install from sources, e.g., to track the main branch or a development branch, but you do not want to install all the test and development packages, clone the repository, checkout the branch you want to follow and install:
$ git clone https://github.com/mooreryan/ocaml_python_bindgen.git # Checkout whatever branch you want, in this case `dev`. $ git checkout dev $ make opam_install
This will save a lot of install time as it avoids some heavy packages.
If instead, you want to work on
pyml_bindgen development, will need to ensure you have the development and test dependencies.
$ git clone https://github.com/mooreryan/ocaml_python_bindgen.git $ make deps $ make deps_dev # Start working! $ dune test
Copyright (c) 2021 - 2022 Ryan M. Moore.
Licensed under the Apache License, Version 2.0 or the MIT license, at your option. This program may not be copied, modified, or distributed except according to those terms.