commit
bad1e9acdf
No known key found for this signature in database
GPG Key ID: 1B790863DE7566B1
9 changed files with 582 additions and 0 deletions
-
24.gitignore
-
283Cargo.lock
-
15Cargo.toml
-
48Makefile
-
1monotone/__init__.py
-
175poetry.lock
-
17pyproject.toml
-
13src/lib.rs
-
6tests/test_sum_as_string.py
@ -0,0 +1,24 @@ |
|||
# build artifacts |
|||
.eggs/ |
|||
monotone.egg-info/ |
|||
build/ |
|||
dist/ |
|||
pip-wheel-metadata/ |
|||
/target |
|||
monotone/*.so |
|||
|
|||
# python |
|||
*.pyc |
|||
*.pyo |
|||
__pycache__ |
|||
|
|||
# testing and continuous integration |
|||
.mypy_cache |
|||
.pytest_cache/ |
|||
|
|||
# env files |
|||
.envrc |
|||
.venv |
|||
|
|||
# editor files |
|||
.vim |
@ -0,0 +1,283 @@ |
|||
# This file is automatically @generated by Cargo. |
|||
# It is not intended for manual editing. |
|||
[[package]] |
|||
name = "bitflags" |
|||
version = "1.2.1" |
|||
source = "registry+https://github.com/rust-lang/crates.io-index" |
|||
checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" |
|||
|
|||
[[package]] |
|||
name = "cfg-if" |
|||
version = "1.0.0" |
|||
source = "registry+https://github.com/rust-lang/crates.io-index" |
|||
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" |
|||
|
|||
[[package]] |
|||
name = "ctor" |
|||
version = "0.1.20" |
|||
source = "registry+https://github.com/rust-lang/crates.io-index" |
|||
checksum = "5e98e2ad1a782e33928b96fc3948e7c355e5af34ba4de7670fe8bac2a3b2006d" |
|||
dependencies = [ |
|||
"quote", |
|||
"syn", |
|||
] |
|||
|
|||
[[package]] |
|||
name = "ghost" |
|||
version = "0.1.2" |
|||
source = "registry+https://github.com/rust-lang/crates.io-index" |
|||
checksum = "1a5bcf1bbeab73aa4cf2fde60a846858dc036163c7c33bec309f8d17de785479" |
|||
dependencies = [ |
|||
"proc-macro2", |
|||
"quote", |
|||
"syn", |
|||
] |
|||
|
|||
[[package]] |
|||
name = "indoc" |
|||
version = "0.3.6" |
|||
source = "registry+https://github.com/rust-lang/crates.io-index" |
|||
checksum = "47741a8bc60fb26eb8d6e0238bbb26d8575ff623fdc97b1a2c00c050b9684ed8" |
|||
dependencies = [ |
|||
"indoc-impl", |
|||
"proc-macro-hack", |
|||
] |
|||
|
|||
[[package]] |
|||
name = "indoc-impl" |
|||
version = "0.3.6" |
|||
source = "registry+https://github.com/rust-lang/crates.io-index" |
|||
checksum = "ce046d161f000fffde5f432a0d034d0341dc152643b2598ed5bfce44c4f3a8f0" |
|||
dependencies = [ |
|||
"proc-macro-hack", |
|||
"proc-macro2", |
|||
"quote", |
|||
"syn", |
|||
"unindent", |
|||
] |
|||
|
|||
[[package]] |
|||
name = "instant" |
|||
version = "0.1.9" |
|||
source = "registry+https://github.com/rust-lang/crates.io-index" |
|||
checksum = "61124eeebbd69b8190558df225adf7e4caafce0d743919e5d6b19652314ec5ec" |
|||
dependencies = [ |
|||
"cfg-if", |
|||
] |
|||
|
|||
[[package]] |
|||
name = "inventory" |
|||
version = "0.1.10" |
|||
source = "registry+https://github.com/rust-lang/crates.io-index" |
|||
checksum = "0f0f7efb804ec95e33db9ad49e4252f049e37e8b0a4652e3cd61f7999f2eff7f" |
|||
dependencies = [ |
|||
"ctor", |
|||
"ghost", |
|||
"inventory-impl", |
|||
] |
|||
|
|||
[[package]] |
|||
name = "inventory-impl" |
|||
version = "0.1.10" |
|||
source = "registry+https://github.com/rust-lang/crates.io-index" |
|||
checksum = "75c094e94816723ab936484666968f5b58060492e880f3c8d00489a1e244fa51" |
|||
dependencies = [ |
|||
"proc-macro2", |
|||
"quote", |
|||
"syn", |
|||
] |
|||
|
|||
[[package]] |
|||
name = "libc" |
|||
version = "0.2.94" |
|||
source = "registry+https://github.com/rust-lang/crates.io-index" |
|||
checksum = "18794a8ad5b29321f790b55d93dfba91e125cb1a9edbd4f8e3150acc771c1a5e" |
|||
|
|||
[[package]] |
|||
name = "lock_api" |
|||
version = "0.4.4" |
|||
source = "registry+https://github.com/rust-lang/crates.io-index" |
|||
checksum = "0382880606dff6d15c9476c416d18690b72742aa7b605bb6dd6ec9030fbf07eb" |
|||
dependencies = [ |
|||
"scopeguard", |
|||
] |
|||
|
|||
[[package]] |
|||
name = "monotone" |
|||
version = "0.1.0" |
|||
dependencies = [ |
|||
"pyo3", |
|||
] |
|||
|
|||
[[package]] |
|||
name = "parking_lot" |
|||
version = "0.11.1" |
|||
source = "registry+https://github.com/rust-lang/crates.io-index" |
|||
checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb" |
|||
dependencies = [ |
|||
"instant", |
|||
"lock_api", |
|||
"parking_lot_core", |
|||
] |
|||
|
|||
[[package]] |
|||
name = "parking_lot_core" |
|||
version = "0.8.3" |
|||
source = "registry+https://github.com/rust-lang/crates.io-index" |
|||
checksum = "fa7a782938e745763fe6907fc6ba86946d72f49fe7e21de074e08128a99fb018" |
|||
dependencies = [ |
|||
"cfg-if", |
|||
"instant", |
|||
"libc", |
|||
"redox_syscall", |
|||
"smallvec", |
|||
"winapi", |
|||
] |
|||
|
|||
[[package]] |
|||
name = "paste" |
|||
version = "0.1.18" |
|||
source = "registry+https://github.com/rust-lang/crates.io-index" |
|||
checksum = "45ca20c77d80be666aef2b45486da86238fabe33e38306bd3118fe4af33fa880" |
|||
dependencies = [ |
|||
"paste-impl", |
|||
"proc-macro-hack", |
|||
] |
|||
|
|||
[[package]] |
|||
name = "paste-impl" |
|||
version = "0.1.18" |
|||
source = "registry+https://github.com/rust-lang/crates.io-index" |
|||
checksum = "d95a7db200b97ef370c8e6de0088252f7e0dfff7d047a28528e47456c0fc98b6" |
|||
dependencies = [ |
|||
"proc-macro-hack", |
|||
] |
|||
|
|||
[[package]] |
|||
name = "proc-macro-hack" |
|||
version = "0.5.19" |
|||
source = "registry+https://github.com/rust-lang/crates.io-index" |
|||
checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" |
|||
|
|||
[[package]] |
|||
name = "proc-macro2" |
|||
version = "1.0.26" |
|||
source = "registry+https://github.com/rust-lang/crates.io-index" |
|||
checksum = "a152013215dca273577e18d2bf00fa862b89b24169fb78c4c95aeb07992c9cec" |
|||
dependencies = [ |
|||
"unicode-xid", |
|||
] |
|||
|
|||
[[package]] |
|||
name = "pyo3" |
|||
version = "0.13.2" |
|||
source = "registry+https://github.com/rust-lang/crates.io-index" |
|||
checksum = "4837b8e8e18a102c23f79d1e9a110b597ea3b684c95e874eb1ad88f8683109c3" |
|||
dependencies = [ |
|||
"cfg-if", |
|||
"ctor", |
|||
"indoc", |
|||
"inventory", |
|||
"libc", |
|||
"parking_lot", |
|||
"paste", |
|||
"pyo3-macros", |
|||
"unindent", |
|||
] |
|||
|
|||
[[package]] |
|||
name = "pyo3-macros" |
|||
version = "0.13.2" |
|||
source = "registry+https://github.com/rust-lang/crates.io-index" |
|||
checksum = "a47f2c300ceec3e58064fd5f8f5b61230f2ffd64bde4970c81fdd0563a2db1bb" |
|||
dependencies = [ |
|||
"pyo3-macros-backend", |
|||
"quote", |
|||
"syn", |
|||
] |
|||
|
|||
[[package]] |
|||
name = "pyo3-macros-backend" |
|||
version = "0.13.2" |
|||
source = "registry+https://github.com/rust-lang/crates.io-index" |
|||
checksum = "87b097e5d84fcbe3e167f400fbedd657820a375b034c78bd852050749a575d66" |
|||
dependencies = [ |
|||
"proc-macro2", |
|||
"quote", |
|||
"syn", |
|||
] |
|||
|
|||
[[package]] |
|||
name = "quote" |
|||
version = "1.0.9" |
|||
source = "registry+https://github.com/rust-lang/crates.io-index" |
|||
checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" |
|||
dependencies = [ |
|||
"proc-macro2", |
|||
] |
|||
|
|||
[[package]] |
|||
name = "redox_syscall" |
|||
version = "0.2.7" |
|||
source = "registry+https://github.com/rust-lang/crates.io-index" |
|||
checksum = "85dd92e586f7355c633911e11f77f3d12f04b1b1bd76a198bd34ae3af8341ef2" |
|||
dependencies = [ |
|||
"bitflags", |
|||
] |
|||
|
|||
[[package]] |
|||
name = "scopeguard" |
|||
version = "1.1.0" |
|||
source = "registry+https://github.com/rust-lang/crates.io-index" |
|||
checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" |
|||
|
|||
[[package]] |
|||
name = "smallvec" |
|||
version = "1.6.1" |
|||
source = "registry+https://github.com/rust-lang/crates.io-index" |
|||
checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" |
|||
|
|||
[[package]] |
|||
name = "syn" |
|||
version = "1.0.71" |
|||
source = "registry+https://github.com/rust-lang/crates.io-index" |
|||
checksum = "ad184cc9470f9117b2ac6817bfe297307418819ba40552f9b3846f05c33d5373" |
|||
dependencies = [ |
|||
"proc-macro2", |
|||
"quote", |
|||
"unicode-xid", |
|||
] |
|||
|
|||
[[package]] |
|||
name = "unicode-xid" |
|||
version = "0.2.2" |
|||
source = "registry+https://github.com/rust-lang/crates.io-index" |
|||
checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" |
|||
|
|||
[[package]] |
|||
name = "unindent" |
|||
version = "0.1.7" |
|||
source = "registry+https://github.com/rust-lang/crates.io-index" |
|||
checksum = "f14ee04d9415b52b3aeab06258a3f07093182b88ba0f9b8d203f211a7a7d41c7" |
|||
|
|||
[[package]] |
|||
name = "winapi" |
|||
version = "0.3.9" |
|||
source = "registry+https://github.com/rust-lang/crates.io-index" |
|||
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" |
|||
dependencies = [ |
|||
"winapi-i686-pc-windows-gnu", |
|||
"winapi-x86_64-pc-windows-gnu", |
|||
] |
|||
|
|||
[[package]] |
|||
name = "winapi-i686-pc-windows-gnu" |
|||
version = "0.4.0" |
|||
source = "registry+https://github.com/rust-lang/crates.io-index" |
|||
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" |
|||
|
|||
[[package]] |
|||
name = "winapi-x86_64-pc-windows-gnu" |
|||
version = "0.4.0" |
|||
source = "registry+https://github.com/rust-lang/crates.io-index" |
|||
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" |
@ -0,0 +1,15 @@ |
|||
[package] |
|||
name = "monotone" |
|||
version = "0.1.0" |
|||
authors = ["Yasuhiro Yamaguchi <altescy@fastmail.com>"] |
|||
edition = "2018" |
|||
|
|||
[lib] |
|||
name = "monotone" |
|||
crate-type = ["cdylib", "rlib"] |
|||
|
|||
[dependencies] |
|||
pyo3 = "0.13.2" |
|||
|
|||
[features] |
|||
default = ["pyo3/extension-module"] |
@ -0,0 +1,48 @@ |
|||
PWD := $(shell pwd) |
|||
MODULE := monotone |
|||
CARGO := cargo |
|||
POETRY := poetry |
|||
PYTHON := $(POETRY) run python |
|||
PYTEST := $(POETRY) run pytest |
|||
PYTHONPATH := $(PWD) |
|||
|
|||
|
|||
.PHONY: build |
|||
build: |
|||
$(POETRY) run maturin build |
|||
|
|||
.PHONY: install |
|||
install: |
|||
$(POETRY) run maturin develop |
|||
|
|||
.PHONY: test |
|||
test: cargo-test install pytest |
|||
|
|||
.PHONY: cargo-test |
|||
cargo-test: |
|||
$(CARGO) test |
|||
|
|||
.PHONY: pytest |
|||
pytest: |
|||
PYTHONPATH=$(PYTHONPATH) $(PYTEST) |
|||
|
|||
.PHONY: clean |
|||
clean: clean-pyc clean-build |
|||
|
|||
.PHONY: clean-pyc |
|||
clean-pyc: |
|||
rm -rf .pytest_cache |
|||
rm -rf .mypy_cache |
|||
find . -name '*.pyc' -exec rm -f {} + |
|||
find . -name '*.pyo' -exec rm -f {} + |
|||
find . -name '*~' -exec rm -f {} + |
|||
find . -name '__pycache__' -exec rm -fr {} + |
|||
|
|||
.PHONY: clean-build |
|||
clean-build: |
|||
rm -rf target |
|||
rm -rf build/ |
|||
rm -rf dist/ |
|||
rm -rf $(MODULE).egg-info/ |
|||
rm -rf pip-wheel-metadata/ |
|||
find $(MODULE) -name "*.so" -exec rm -f {} + |
@ -0,0 +1 @@ |
|||
from .monotone import sum_as_string |
@ -0,0 +1,175 @@ |
|||
[[package]] |
|||
category = "dev" |
|||
description = "Atomic file writes." |
|||
marker = "sys_platform == \"win32\"" |
|||
name = "atomicwrites" |
|||
optional = false |
|||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" |
|||
version = "1.4.0" |
|||
|
|||
[[package]] |
|||
category = "dev" |
|||
description = "Classes Without Boilerplate" |
|||
name = "attrs" |
|||
optional = false |
|||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" |
|||
version = "20.3.0" |
|||
|
|||
[package.extras] |
|||
dev = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "furo", "sphinx", "pre-commit"] |
|||
docs = ["furo", "sphinx", "zope.interface"] |
|||
tests = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] |
|||
tests_no_zope = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six"] |
|||
|
|||
[[package]] |
|||
category = "dev" |
|||
description = "Cross-platform colored terminal text." |
|||
marker = "sys_platform == \"win32\"" |
|||
name = "colorama" |
|||
optional = false |
|||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" |
|||
version = "0.4.4" |
|||
|
|||
[[package]] |
|||
category = "dev" |
|||
description = "iniconfig: brain-dead simple config-ini parsing" |
|||
name = "iniconfig" |
|||
optional = false |
|||
python-versions = "*" |
|||
version = "1.1.1" |
|||
|
|||
[[package]] |
|||
category = "dev" |
|||
description = "Build and publish crates with pyo3, rust-cpython and cffi bindings as well as rust binaries as python packages" |
|||
name = "maturin" |
|||
optional = false |
|||
python-versions = ">=3.6" |
|||
version = "0.10.4" |
|||
|
|||
[package.dependencies] |
|||
toml = ">=0.10.2,<0.11.0" |
|||
|
|||
[[package]] |
|||
category = "dev" |
|||
description = "Core utilities for Python packages" |
|||
name = "packaging" |
|||
optional = false |
|||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" |
|||
version = "20.9" |
|||
|
|||
[package.dependencies] |
|||
pyparsing = ">=2.0.2" |
|||
|
|||
[[package]] |
|||
category = "dev" |
|||
description = "plugin and hook calling mechanisms for python" |
|||
name = "pluggy" |
|||
optional = false |
|||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" |
|||
version = "0.13.1" |
|||
|
|||
[package.extras] |
|||
dev = ["pre-commit", "tox"] |
|||
|
|||
[[package]] |
|||
category = "dev" |
|||
description = "library with cross-python path, ini-parsing, io, code, log facilities" |
|||
name = "py" |
|||
optional = false |
|||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" |
|||
version = "1.10.0" |
|||
|
|||
[[package]] |
|||
category = "dev" |
|||
description = "Python parsing module" |
|||
name = "pyparsing" |
|||
optional = false |
|||
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" |
|||
version = "2.4.7" |
|||
|
|||
[[package]] |
|||
category = "dev" |
|||
description = "pytest: simple powerful testing with Python" |
|||
name = "pytest" |
|||
optional = false |
|||
python-versions = ">=3.6" |
|||
version = "6.2.3" |
|||
|
|||
[package.dependencies] |
|||
atomicwrites = ">=1.0" |
|||
attrs = ">=19.2.0" |
|||
colorama = "*" |
|||
iniconfig = "*" |
|||
packaging = "*" |
|||
pluggy = ">=0.12,<1.0.0a1" |
|||
py = ">=1.8.2" |
|||
toml = "*" |
|||
|
|||
[package.extras] |
|||
testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] |
|||
|
|||
[[package]] |
|||
category = "dev" |
|||
description = "Python Library for Tom's Obvious, Minimal Language" |
|||
name = "toml" |
|||
optional = false |
|||
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" |
|||
version = "0.10.2" |
|||
|
|||
[metadata] |
|||
content-hash = "976eb34af0757edcea8c02d4feac53fe330a42158726a6839880cee2463f875c" |
|||
lock-version = "1.0" |
|||
python-versions = "^3.8" |
|||
|
|||
[metadata.files] |
|||
atomicwrites = [ |
|||
{file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, |
|||
{file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, |
|||
] |
|||
attrs = [ |
|||
{file = "attrs-20.3.0-py2.py3-none-any.whl", hash = "sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6"}, |
|||
{file = "attrs-20.3.0.tar.gz", hash = "sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700"}, |
|||
] |
|||
colorama = [ |
|||
{file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, |
|||
{file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, |
|||
] |
|||
iniconfig = [ |
|||
{file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, |
|||
{file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, |
|||
] |
|||
maturin = [ |
|||
{file = "maturin-0.10.4-py3-none-macosx_10_7_x86_64.whl", hash = "sha256:d08895006c7e94353a751ddd31eabf9b9670264add48d8f8e18247e0773e5326"}, |
|||
{file = "maturin-0.10.4-py3-none-macosx_10_9_universal2.whl", hash = "sha256:0c0eed0a932f78254e27e1c4877911b1dab5eced8151864a6bd8d605ff29f71b"}, |
|||
{file = "maturin-0.10.4-py3-none-manylinux1_x86_64.whl", hash = "sha256:401de6ccb3b4b9d7fb5f049e305d25e0970f6684f6a3ec79bf54bac37bcd8fb0"}, |
|||
{file = "maturin-0.10.4-py3-none-manylinux2010_i686.whl", hash = "sha256:8eb8eed6133d199aadfe946d0fe54a9d99392b2d58e2efdf7227f51b266cc062"}, |
|||
{file = "maturin-0.10.4-py3-none-manylinux2014_aarch64.whl", hash = "sha256:2663b6b974dc05f89cfb69492c76b7726471926c5c4bb25a8f4194c5f679bddd"}, |
|||
{file = "maturin-0.10.4-py3-none-manylinux2014_armv7l.whl", hash = "sha256:cd265d106e9a693c68fb2a21c4cd1897b0d8c5355bc30090aebf20c0d4c73934"}, |
|||
{file = "maturin-0.10.4-py3-none-win32.whl", hash = "sha256:633e9465accb78719586c63589ad17f9bc8c28969de3d93f1e82b8b3c5106b5b"}, |
|||
{file = "maturin-0.10.4-py3-none-win_amd64.whl", hash = "sha256:7a92d6c5ff015f4a1f88ccebf86a9a79dbb496c933464894f6c99538ad2098f3"}, |
|||
{file = "maturin-0.10.4.tar.gz", hash = "sha256:d01c06f3a0e9931bad7ede5173215157be6389e0595a8d0b7d1caea3605f7c11"}, |
|||
] |
|||
packaging = [ |
|||
{file = "packaging-20.9-py2.py3-none-any.whl", hash = "sha256:67714da7f7bc052e064859c05c595155bd1ee9f69f76557e21f051443c20947a"}, |
|||
{file = "packaging-20.9.tar.gz", hash = "sha256:5b327ac1320dc863dca72f4514ecc086f31186744b84a230374cc1fd776feae5"}, |
|||
] |
|||
pluggy = [ |
|||
{file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"}, |
|||
{file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"}, |
|||
] |
|||
py = [ |
|||
{file = "py-1.10.0-py2.py3-none-any.whl", hash = "sha256:3b80836aa6d1feeaa108e046da6423ab8f6ceda6468545ae8d02d9d58d18818a"}, |
|||
{file = "py-1.10.0.tar.gz", hash = "sha256:21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3"}, |
|||
] |
|||
pyparsing = [ |
|||
{file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"}, |
|||
{file = "pyparsing-2.4.7.tar.gz", hash = "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"}, |
|||
] |
|||
pytest = [ |
|||
{file = "pytest-6.2.3-py3-none-any.whl", hash = "sha256:6ad9c7bdf517a808242b998ac20063c41532a570d088d77eec1ee12b0b5574bc"}, |
|||
{file = "pytest-6.2.3.tar.gz", hash = "sha256:671238a46e4df0f3498d1c3270e5deb9b32d25134c99b7d75370a68cfbe9b634"}, |
|||
] |
|||
toml = [ |
|||
{file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, |
|||
{file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, |
|||
] |
@ -0,0 +1,17 @@ |
|||
[tool.poetry] |
|||
name = "monotone" |
|||
version = "0.1.0" |
|||
description = "" |
|||
authors = ["Yasuhiro Yamaguchi <altescy@fastmail.com>"] |
|||
license = "MIT" |
|||
|
|||
[tool.poetry.dependencies] |
|||
python = "^3.8" |
|||
|
|||
[tool.poetry.dev-dependencies] |
|||
maturin = "^0.10.4" |
|||
pytest = "^6.2.3" |
|||
|
|||
[build-system] |
|||
requires = ["poetry>=0.12"] |
|||
build-backend = "poetry.masonry.api" |
@ -0,0 +1,13 @@ |
|||
use pyo3::prelude::*;
|
|||
use pyo3::wrap_pyfunction;
|
|||
|
|||
#[pyfunction]
|
|||
fn sum_as_string(a: usize, b: usize) -> PyResult<String> {
|
|||
Ok((a + b).to_string())
|
|||
}
|
|||
|
|||
#[pymodule]
|
|||
fn monotone(py: Python, m: &PyModule) -> PyResult<()> {
|
|||
m.add_function(wrap_pyfunction!(sum_as_string, m)?)?;
|
|||
Ok(())
|
|||
}
|
@ -0,0 +1,6 @@ |
|||
from monotone import sum_as_string |
|||
|
|||
|
|||
def test_sum_as_string() -> None: |
|||
output = sum_as_string(12, 34) |
|||
assert output == "46" |
Write
Preview
Loading…
Cancel
Save
Reference in new issue