Git Product home page Git Product logo

rustdef's Introduction

rustdef

Test PyPI version

Jupyter extension for jupyter notebooks and rust users.

You can define functions in rust and run them as python functions. This extension is built on PyO3 and maturin.

Examples

Prerequisite

Install

$ pip install rustdef

Usage

Define rust functions,

%%rustdef
#[pyfunction]
fn my_func(x: i64, y: &str) -> i64 {
    println!("{}", y);
    x + y.len() as i64
}

Add dependencies, (e.g. num crate)

%rustdef deps add [email protected]

Defined dependencies are valid only in the current notebook.

Show dependencies,

%rustdef deps show
num = "0.4.0"

[pyo3]
version = "0.13.2"
features = [ "extension-module",]

pyo3 is included by default.

Develop

How does it work?

Roughly, definitions in rustdef are available in python after the following steps.

  1. Each rustdef magic cell is populated with the module definition of pyo3
  2. A new crate is generated for the rustdef cell
  3. The crate is compiled into a python wheel by maturin
  4. Install the wheel with pip
  5. Functions with #[pyfunction] attributes are exported into the interpreter namespace in notebooks
  6. Ready to call the function in notebooks!

Build

maturin is required.

$ pip install maturin
$ maturin build
$ pip install target/wheels/rustdef-{version}-{python}-{platform}.whl

ToDo

  • execute within rustdef cell
  • class/module supports
  • customizable module name
  • use functions defined in another cell
  • verbose flag
  • serde support
  • windows support

rustdef's People

Contributors

dependabot[bot] avatar emakryo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

jypkkjj

rustdef's Issues

Kernel dies w/ numpy.ipynb

##[error]thread '<unnamed>' panicked at 'An error occurred while initializing class SliceBox', rustdef_cell_4f1f27901aca8ef8c2b7ba8fd8a3fd78760e5ae7/src/lib.rs:1:1

Maybe related to PyO3/rust-numpy#97

rust version: nightly-x86_64-unknown-linux-gnu installed - rustc 1.44.0-nightly (f509b26a7 2020-03-18)
numpy version: numpy-1.18.2-cp36-cp36m-manylinux1_x86_64.whl

This error occurs only in linux

Error installing rustdef

Installing rustdef using the command pip install rustdef gives me the following error messages. I'm using Python3 3.10.6.

ERROR: Could not find a version that satisfies the requirement rustdef (from versions: none)
ERROR: No matching distribution found for rustdef

Support passing pip options to %%rustdef

I encountered the following issue in a customized environment. Tried to configure pip but without luck. The issue can be easily solved if %%rustdef accepts pip options.

image

If cargo-edit is installed after first error, the errors keeps popping up

If you do not install cargo-edit at first, and then install it, %load_ext rustdef at first (when no cargo-edit is installed) will create broken workspace member, and all next calls of %load_ext rustdef will fail

It can be solved by removing the ~/.rustdef folder

Writing this if anybody will encounter the same thing

Magic calls python even if it's not existing

On my machine there was no python command, and alias python=python3 didn't work, because something something shell is not interactive something shell=True is not set something.

I've solved the issue by creating a link to python:
sudo ln -sf /usr/bin/python3 /usr/bin/python

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.