New Upstream Snapshot - milksnake

Ready changes

Summary

Merged new upstream version: 0.1.5+git20180829.1.ef0723e (was: 0.1.5).

Resulting package

Built on 2022-11-09T21:52 (took 12m5s)

The resulting binary packages can be installed (if you have the apt repository enabled) by running one of:

apt install -t fresh-snapshots python3-milksnake

Lintian Result

Diff

diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 5e6e4be..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,7 +0,0 @@
-*.egg-info
-venv
-dist
-build
-__pycache__
-.eggs
-.pytest_cache
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 36a6739..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-os: linux
-sudo: false
-language: python
-
-matrix:
-  include:
-    - python: 3.6
-    - python: 2.7
-    - python: pypy
-  fast_finish: true
-
-install:
-  - pip install pytest
-  - curl https://sh.rustup.rs -sSf | sh -s -- -y
-  - export PATH="${HOME}/.cargo/bin:${PATH}"
-  - which cargo
-  - which rustc
-
-script:
-  - make test
-
-cache:
-  - pip
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 2799206..0000000
--- a/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-all: test
-
-test:
-	@pytest tests
-
-.PHONY: all test
diff --git a/PKG-INFO b/PKG-INFO
new file mode 100644
index 0000000..1bfae30
--- /dev/null
+++ b/PKG-INFO
@@ -0,0 +1,141 @@
+Metadata-Version: 2.1
+Name: milksnake
+Version: 0.1.5
+Summary: A python library that extends setuptools for binary extensions.
+Author: Armin Ronacher
+Author-email: armin.ronacher@active-4.com
+License: Apache License 2.0
+Platform: any
+Classifier: License :: OSI Approved :: Apache Software License
+Classifier: Programming Language :: Python
+Description-Content-Type: text/markdown
+License-File: LICENSE
+
+# Milksnake
+
+<a href="https://pypi.python.org/pypi/milksnake"><img src="https://img.shields.io/pypi/v/milksnake.svg" alt=""></a>
+<a href="https://travis-ci.org/getsentry/milksnake"><img src="https://travis-ci.org/getsentry/milksnake.svg?branch=master" alt=""></a>
+<a href="https://github.com/getsentry/milksnake/blob/master/LICENSE"><img src="https://img.shields.io/pypi/l/milksnake.svg" alt=""></a>
+
+
+Milksnake is an extension for setuptools that allows you to distribute
+dynamic linked libraries in Python wheels in the most portable way imaginable.
+
+It gives you a hook to invoke your own build process and to then take the
+resulting dynamic linked library.
+
+## Why?
+
+There are already other projects that make Python and native libraries play
+along but this one is different.  Unlike other projects that build Python
+extension modules the goal of this project is to build regular native libraries
+that are then loaded with CFFI at runtime.  Why not just use CFFI?  Because
+CFFI's setuptools support alone does not properly work with such wheels (it
+does not provide a way to build and properly tag wheels for shared libraries) and
+it does not provide a good way to invoke an external build process (like a
+makefile, cargo to build rust binaries etc.)
+
+In particular you will most likely only need two wheels for Linux, one for macs
+and soon one for Windows independently of how many Python interpreters you want
+to target.
+
+## What is supported?
+
+* Platforms: Linux, Mac, Windows
+* setuptools commands: `bdist_wheel`, `build`, `build_ext`, `develop`
+* `pip install --editable .`
+* Universal wheels (`PACKAGE-py2.py3-none-PLATFORM.whl`); this can be disabled
+  with `milksnake_universal=False` in `setup()` in case the package also contains
+  stuff that does link against libpython.
+
+## How?
+
+This example shows how to build a rust project with it:
+
+This is what a `setup.py` file looks like:
+
+```python
+from setuptools import setup
+
+def build_native(spec):
+    # build an example rust library
+    build = spec.add_external_build(
+        cmd=['cargo', 'build', '--release'],
+        path='./rust'
+    )
+
+    spec.add_cffi_module(
+        module_path='example._native',
+        dylib=lambda: build.find_dylib('example', in_path='target/release'),
+        header_filename=lambda: build.find_header('example.h', in_path='target'),
+        rtld_flags=['NOW', 'NODELETE']
+    )
+
+setup(
+    name='example',
+    version='0.0.1',
+    packages=['example'],
+    zip_safe=False,
+    platforms='any',
+    setup_requires=['milksnake'],
+    install_requires=['milksnake'],
+    milksnake_tasks=[
+        build_native
+    ]
+)
+```
+
+You then need a `rust/` folder that has a Rust library (with a crate type
+of `cdylib`) and a `example/` python package.
+
+Example `example/__init__.py` file:
+
+```python
+from example._native import ffi, lib
+
+
+def test():
+    return lib.a_function_from_rust()
+```
+
+And a `rust/src/lib.rs`:
+
+```rust
+#[no_mangle]
+pub unsafe extern "C" fn a_function_from_rust() -> i32 {
+    42
+}
+```
+
+And the `rust/Cargo.toml`:
+
+```toml
+[package]
+name = "example"
+version = "0.1.0"
+build = "build.rs"
+
+[lib]
+name = "example"
+crate-type = ["cdylib"]
+
+[build-dependencies]
+cbindgen = "0.4"
+```
+
+And finally the build.rs file:
+
+```rust
+extern crate cbindgen;
+
+use std::env;
+
+fn main() {
+    let crate_dir = env::var("CARGO_MANIFEST_DIR").unwrap();
+    let mut config: cbindgen::Config = Default::default();
+    config.language = cbindgen::Language::C;
+    cbindgen::generate_with_config(&crate_dir, config)
+      .unwrap()
+      .write_to_file("target/example.h");
+}
+```
diff --git a/debian/changelog b/debian/changelog
index 8da5ded..25a1c62 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+milksnake (0.1.5+git20180829.1.ef0723e-1) UNRELEASED; urgency=low
+
+  * New upstream snapshot.
+
+ -- Debian Janitor <janitor@jelmer.uk>  Wed, 09 Nov 2022 21:43:43 -0000
+
 milksnake (0.1.5-3) unstable; urgency=medium
 
   [ Debian Janitor ]
diff --git a/example/.gitignore b/example/.gitignore
deleted file mode 100644
index 0a4df7c..0000000
--- a/example/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-example/_native*
diff --git a/example/example/__init__.py b/example/example/__init__.py
deleted file mode 100644
index 7b470d8..0000000
--- a/example/example/__init__.py
+++ /dev/null
@@ -1,6 +0,0 @@
-from . import _native
-
-
-def test():
-    point = _native.lib.example_get_origin()
-    return (point.x, point.y)
diff --git a/example/rust/.gitignore b/example/rust/.gitignore
deleted file mode 100644
index a9d37c5..0000000
--- a/example/rust/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-target
-Cargo.lock
diff --git a/example/rust/Cargo.toml b/example/rust/Cargo.toml
deleted file mode 100644
index 0504526..0000000
--- a/example/rust/Cargo.toml
+++ /dev/null
@@ -1,12 +0,0 @@
-[package]
-name = "example"
-version = "0.1.0"
-authors = ["Armin Ronacher <armin.ronacher@active-4.com>"]
-build = "build.rs"
-
-[lib]
-name = "example"
-crate-type = ["cdylib"]
-
-[build-dependencies]
-cbindgen = "0.4"
diff --git a/example/rust/build.rs b/example/rust/build.rs
deleted file mode 100644
index 10184fd..0000000
--- a/example/rust/build.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-extern crate cbindgen;
-
-use std::env;
-
-fn main() {
-    let crate_dir = env::var("CARGO_MANIFEST_DIR").unwrap();
-    let mut config: cbindgen::Config = Default::default();
-    config.language = cbindgen::Language::C;
-    cbindgen::generate_with_config(&crate_dir, config)
-      .unwrap()
-      .write_to_file("target/example.h");
-}
diff --git a/example/rust/src/lib.rs b/example/rust/src/lib.rs
deleted file mode 100644
index e33833d..0000000
--- a/example/rust/src/lib.rs
+++ /dev/null
@@ -1,26 +0,0 @@
-#[repr(C)]
-pub struct Point {
-    pub x: f32,
-    pub y: f32,
-}
-
-#[repr(u32)]
-pub enum Foo {
-    A = 1,
-    B,
-    C
-}
-
-#[no_mangle]
-pub unsafe extern "C" fn example_get_origin() -> Point {
-    Point { x: 0.0, y: 0.0 }
-}
-
-#[no_mangle]
-pub unsafe extern "C" fn example_print_foo(foo: *const Foo) {
-    println!("{}", match *foo {
-        Foo::A => "a",
-        Foo::B => "b",
-        Foo::C => "c",
-    });
-}
diff --git a/example/setup.py b/example/setup.py
deleted file mode 100644
index 24a1c7f..0000000
--- a/example/setup.py
+++ /dev/null
@@ -1,35 +0,0 @@
-from setuptools import setup, find_packages
-
-def build_native(spec):
-    # Step 1: build the rust library
-    build = spec.add_external_build(
-        cmd=['cargo', 'build', '--release'],
-        path='./rust'
-    )
-
-    # Step 2: add a cffi module based on the dylib we built
-    #
-    # We use lambdas here for dylib and header_filename so that those are
-    # only called after the external build finished.
-    spec.add_cffi_module(
-        module_path='example._native',
-        dylib=lambda: build.find_dylib('example', in_path='target/release'),
-        header_filename=lambda: build.find_header('example.h', in_path='target'),
-        rtld_flags=['NOW', 'NODELETE']
-    )
-
-
-setup(
-    name='example',
-    version='0.0.1',
-    packages=find_packages(),
-    include_package_data=True,
-    zip_safe=False,
-    platforms='any',
-    install_requires=[
-        'milksnake',
-    ],
-    milksnake_tasks=[
-        build_native,
-    ]
-)
diff --git a/milksnake.egg-info/PKG-INFO b/milksnake.egg-info/PKG-INFO
new file mode 100644
index 0000000..1bfae30
--- /dev/null
+++ b/milksnake.egg-info/PKG-INFO
@@ -0,0 +1,141 @@
+Metadata-Version: 2.1
+Name: milksnake
+Version: 0.1.5
+Summary: A python library that extends setuptools for binary extensions.
+Author: Armin Ronacher
+Author-email: armin.ronacher@active-4.com
+License: Apache License 2.0
+Platform: any
+Classifier: License :: OSI Approved :: Apache Software License
+Classifier: Programming Language :: Python
+Description-Content-Type: text/markdown
+License-File: LICENSE
+
+# Milksnake
+
+<a href="https://pypi.python.org/pypi/milksnake"><img src="https://img.shields.io/pypi/v/milksnake.svg" alt=""></a>
+<a href="https://travis-ci.org/getsentry/milksnake"><img src="https://travis-ci.org/getsentry/milksnake.svg?branch=master" alt=""></a>
+<a href="https://github.com/getsentry/milksnake/blob/master/LICENSE"><img src="https://img.shields.io/pypi/l/milksnake.svg" alt=""></a>
+
+
+Milksnake is an extension for setuptools that allows you to distribute
+dynamic linked libraries in Python wheels in the most portable way imaginable.
+
+It gives you a hook to invoke your own build process and to then take the
+resulting dynamic linked library.
+
+## Why?
+
+There are already other projects that make Python and native libraries play
+along but this one is different.  Unlike other projects that build Python
+extension modules the goal of this project is to build regular native libraries
+that are then loaded with CFFI at runtime.  Why not just use CFFI?  Because
+CFFI's setuptools support alone does not properly work with such wheels (it
+does not provide a way to build and properly tag wheels for shared libraries) and
+it does not provide a good way to invoke an external build process (like a
+makefile, cargo to build rust binaries etc.)
+
+In particular you will most likely only need two wheels for Linux, one for macs
+and soon one for Windows independently of how many Python interpreters you want
+to target.
+
+## What is supported?
+
+* Platforms: Linux, Mac, Windows
+* setuptools commands: `bdist_wheel`, `build`, `build_ext`, `develop`
+* `pip install --editable .`
+* Universal wheels (`PACKAGE-py2.py3-none-PLATFORM.whl`); this can be disabled
+  with `milksnake_universal=False` in `setup()` in case the package also contains
+  stuff that does link against libpython.
+
+## How?
+
+This example shows how to build a rust project with it:
+
+This is what a `setup.py` file looks like:
+
+```python
+from setuptools import setup
+
+def build_native(spec):
+    # build an example rust library
+    build = spec.add_external_build(
+        cmd=['cargo', 'build', '--release'],
+        path='./rust'
+    )
+
+    spec.add_cffi_module(
+        module_path='example._native',
+        dylib=lambda: build.find_dylib('example', in_path='target/release'),
+        header_filename=lambda: build.find_header('example.h', in_path='target'),
+        rtld_flags=['NOW', 'NODELETE']
+    )
+
+setup(
+    name='example',
+    version='0.0.1',
+    packages=['example'],
+    zip_safe=False,
+    platforms='any',
+    setup_requires=['milksnake'],
+    install_requires=['milksnake'],
+    milksnake_tasks=[
+        build_native
+    ]
+)
+```
+
+You then need a `rust/` folder that has a Rust library (with a crate type
+of `cdylib`) and a `example/` python package.
+
+Example `example/__init__.py` file:
+
+```python
+from example._native import ffi, lib
+
+
+def test():
+    return lib.a_function_from_rust()
+```
+
+And a `rust/src/lib.rs`:
+
+```rust
+#[no_mangle]
+pub unsafe extern "C" fn a_function_from_rust() -> i32 {
+    42
+}
+```
+
+And the `rust/Cargo.toml`:
+
+```toml
+[package]
+name = "example"
+version = "0.1.0"
+build = "build.rs"
+
+[lib]
+name = "example"
+crate-type = ["cdylib"]
+
+[build-dependencies]
+cbindgen = "0.4"
+```
+
+And finally the build.rs file:
+
+```rust
+extern crate cbindgen;
+
+use std::env;
+
+fn main() {
+    let crate_dir = env::var("CARGO_MANIFEST_DIR").unwrap();
+    let mut config: cbindgen::Config = Default::default();
+    config.language = cbindgen::Language::C;
+    cbindgen::generate_with_config(&crate_dir, config)
+      .unwrap()
+      .write_to_file("target/example.h");
+}
+```
diff --git a/milksnake.egg-info/SOURCES.txt b/milksnake.egg-info/SOURCES.txt
new file mode 100644
index 0000000..c5997ed
--- /dev/null
+++ b/milksnake.egg-info/SOURCES.txt
@@ -0,0 +1,15 @@
+LICENSE
+README.md
+setup.cfg
+setup.py
+milksnake/__init__.py
+milksnake/_compat.py
+milksnake/ffi.py
+milksnake/setuptools_ext.py
+milksnake.egg-info/PKG-INFO
+milksnake.egg-info/SOURCES.txt
+milksnake.egg-info/dependency_links.txt
+milksnake.egg-info/entry_points.txt
+milksnake.egg-info/not-zip-safe
+milksnake.egg-info/requires.txt
+milksnake.egg-info/top_level.txt
\ No newline at end of file
diff --git a/milksnake.egg-info/dependency_links.txt b/milksnake.egg-info/dependency_links.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/milksnake.egg-info/dependency_links.txt
@@ -0,0 +1 @@
+
diff --git a/milksnake.egg-info/entry_points.txt b/milksnake.egg-info/entry_points.txt
new file mode 100644
index 0000000..dd55c53
--- /dev/null
+++ b/milksnake.egg-info/entry_points.txt
@@ -0,0 +1,3 @@
+[distutils.setup_keywords]
+milksnake_tasks = milksnake.setuptools_ext:milksnake_tasks
+milksnake_universal = milksnake.setuptools_ext:milksnake_universal
diff --git a/milksnake.egg-info/not-zip-safe b/milksnake.egg-info/not-zip-safe
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/milksnake.egg-info/not-zip-safe
@@ -0,0 +1 @@
+
diff --git a/milksnake.egg-info/requires.txt b/milksnake.egg-info/requires.txt
new file mode 100644
index 0000000..4a39baf
--- /dev/null
+++ b/milksnake.egg-info/requires.txt
@@ -0,0 +1 @@
+cffi>=1.6.0
diff --git a/milksnake.egg-info/top_level.txt b/milksnake.egg-info/top_level.txt
new file mode 100644
index 0000000..8e308df
--- /dev/null
+++ b/milksnake.egg-info/top_level.txt
@@ -0,0 +1 @@
+milksnake
diff --git a/milksnake/setuptools_ext.py b/milksnake/setuptools_ext.py
index 25515ab..88cc549 100644
--- a/milksnake/setuptools_ext.py
+++ b/milksnake/setuptools_ext.py
@@ -22,8 +22,8 @@ except ImportError:
 
 here = os.path.abspath(os.path.dirname(__file__))
 EMPTY_C = u'''
-void init%(mod)s() {}
-void PyInit_%(mod)s() {}
+void init%(mod)s(void) {}
+void PyInit_%(mod)s(void) {}
 '''
 
 BUILD_PY = u'''
@@ -210,7 +210,7 @@ class CffiModuleBuildStep(BuildStep):
         self.header_strip_directives = header_strip_directives
         self.rtld_flags = get_rtld_flags(rtld_flags)
 
-        parts = self.module_path.rsplit('.', 2)
+        parts = self.module_path.rsplit('.', 1)
         self.module_base = parts[0]
         self.name = parts[-1]
 
@@ -276,7 +276,7 @@ class CffiModuleBuildStep(BuildStep):
             ffi = make_ffi()
             log.info('generating cffi module for %r' % self.module_path)
             py_file = os.path.join(
-                base_path, *self.cffi_module_path.split('.')[1:]) + '.py'
+                base_path, self.cffi_module_path.split('.')[-1]) + '.py'
             updated = cffi_recompiler.make_py_source(
                 ffi, self.cffi_module_path, py_file)
             if not updated:
diff --git a/setup.cfg b/setup.cfg
index 3c6e79c..adf5ed7 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,2 +1,7 @@
 [bdist_wheel]
-universal=1
+universal = 1
+
+[egg_info]
+tag_build = 
+tag_date = 0
+
diff --git a/setup.py b/setup.py
index 46a8993..39b3d79 100644
--- a/setup.py
+++ b/setup.py
@@ -16,6 +16,7 @@ setup(
     },
     description='A python library that extends setuptools for binary extensions.',
     long_description=readme,
+    long_description_content_type='text/markdown',
     zip_safe=False,
     platforms='any',
     install_requires=[
diff --git a/tests/conftest.py b/tests/conftest.py
deleted file mode 100644
index 57e4411..0000000
--- a/tests/conftest.py
+++ /dev/null
@@ -1,68 +0,0 @@
-import os
-import uuid
-import json
-import atexit
-import pytest
-import shutil
-import tempfile
-import subprocess
-
-
-root = os.path.dirname(os.path.abspath(os.path.dirname(__file__)))
-
-
-EVAL_HOOK = '''
-import sys
-import json
-
-ns = {}
-code = compile(sys.stdin.read(), '<stdin>', 'exec')
-eval(code, ns)
-print(json.dumps(ns['execute']()))
-'''
-
-
-class VirtualEnv(object):
-
-    def __init__(self, path):
-        self.path = path
-
-    def spawn(self, executable, args=None, **kwargs):
-        return subprocess.Popen([os.path.join(self.path, 'bin', executable)] +
-                                list(args or ()), **kwargs)
-
-    def run(self, executable, args=None):
-        rv = self.spawn(executable, args).wait()
-        if rv != 0:
-            raise RuntimeError('Program exited with %d' % rv)
-
-    def eval(self, code):
-        proc = self.spawn('python', ['-c', EVAL_HOOK],
-                          stdin=subprocess.PIPE,
-                          stdout=subprocess.PIPE)
-        stdout = proc.communicate(code.encode('utf-8'))[0]
-        rv = proc.wait()
-        if rv != 0:
-            raise RuntimeError('Interpreter exited with %d' % rv)
-        return json.loads(stdout)
-
-
-@pytest.fixture
-def virtualenv():
-    path = os.path.join(tempfile.gettempdir(), '.' + str(uuid.uuid4()))
-
-    def _remove():
-        try:
-            shutil.rmtree(path)
-        except Exception:
-            pass
-
-    atexit.register(_remove)
-
-    subprocess.Popen(['virtualenv', path]).wait()
-    try:
-        venv = VirtualEnv(path)
-        venv.run('pip', ['install', '--editable', root])
-        yield venv
-    finally:
-        _remove()
diff --git a/tests/res/minimal/.gitignore b/tests/res/minimal/.gitignore
deleted file mode 100644
index 0a4df7c..0000000
--- a/tests/res/minimal/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-example/_native*
diff --git a/tests/res/minimal/example/__init__.py b/tests/res/minimal/example/__init__.py
deleted file mode 100644
index 7b470d8..0000000
--- a/tests/res/minimal/example/__init__.py
+++ /dev/null
@@ -1,6 +0,0 @@
-from . import _native
-
-
-def test():
-    point = _native.lib.example_get_origin()
-    return (point.x, point.y)
diff --git a/tests/res/minimal/rust/.gitignore b/tests/res/minimal/rust/.gitignore
deleted file mode 100644
index a9d37c5..0000000
--- a/tests/res/minimal/rust/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-target
-Cargo.lock
diff --git a/tests/res/minimal/rust/Cargo.toml b/tests/res/minimal/rust/Cargo.toml
deleted file mode 100644
index f5ec30c..0000000
--- a/tests/res/minimal/rust/Cargo.toml
+++ /dev/null
@@ -1,8 +0,0 @@
-[package]
-name = "example"
-version = "0.1.0"
-authors = ["Armin Ronacher <armin.ronacher@active-4.com>"]
-
-[lib]
-name = "example"
-crate-type = ["cdylib"]
diff --git a/tests/res/minimal/rust/example.h b/tests/res/minimal/rust/example.h
deleted file mode 100644
index b5c4516..0000000
--- a/tests/res/minimal/rust/example.h
+++ /dev/null
@@ -1,13 +0,0 @@
-typedef struct {
-    float x;
-    float y;
-} Point;
-
-typedef enum {
-    FOO_A = 1,
-    FOO_B = 2,
-    FOO_C = 3
-} Foo;
-
-Point example_get_origin(void);
-void example_print_foo(Foo *);
diff --git a/tests/res/minimal/rust/src/lib.rs b/tests/res/minimal/rust/src/lib.rs
deleted file mode 100644
index e33833d..0000000
--- a/tests/res/minimal/rust/src/lib.rs
+++ /dev/null
@@ -1,26 +0,0 @@
-#[repr(C)]
-pub struct Point {
-    pub x: f32,
-    pub y: f32,
-}
-
-#[repr(u32)]
-pub enum Foo {
-    A = 1,
-    B,
-    C
-}
-
-#[no_mangle]
-pub unsafe extern "C" fn example_get_origin() -> Point {
-    Point { x: 0.0, y: 0.0 }
-}
-
-#[no_mangle]
-pub unsafe extern "C" fn example_print_foo(foo: *const Foo) {
-    println!("{}", match *foo {
-        Foo::A => "a",
-        Foo::B => "b",
-        Foo::C => "c",
-    });
-}
diff --git a/tests/res/minimal/setup.py b/tests/res/minimal/setup.py
deleted file mode 100644
index 91177e5..0000000
--- a/tests/res/minimal/setup.py
+++ /dev/null
@@ -1,35 +0,0 @@
-from setuptools import setup, find_packages
-
-def build_native(spec):
-    # Step 1: build the rust library
-    build = spec.add_external_build(
-        cmd=['cargo', 'build', '--release'],
-        path='./rust'
-    )
-
-    # Step 2: add a cffi module based on the dylib we built
-    #
-    # We use lambdas here for dylib and header_filename so that those are
-    # only called after the external build finished.
-    spec.add_cffi_module(
-        module_path='example._native',
-        dylib=lambda: build.find_dylib('example', in_path='target/release'),
-        header_filename=lambda: build.find_header('example.h', in_path='.'),
-        rtld_flags=['NOW', 'NODELETE']
-    )
-
-
-setup(
-    name='example',
-    version='0.0.1',
-    packages=find_packages(),
-    include_package_data=True,
-    zip_safe=False,
-    platforms='any',
-    install_requires=[
-        'milksnake',
-    ],
-    milksnake_tasks=[
-        build_native,
-    ]
-)
diff --git a/tests/test_basic.py b/tests/test_basic.py
deleted file mode 100644
index a71c1dd..0000000
--- a/tests/test_basic.py
+++ /dev/null
@@ -1,12 +0,0 @@
-import os
-
-
-def test_example_dev_run(virtualenv):
-    pkg = os.path.abspath(os.path.join(os.path.dirname(__file__),
-                                       'res', 'minimal'))
-    virtualenv.run('pip', ['install', '-v', '--editable', pkg])
-    virtualenv.eval('''if 1:
-        from example import test
-        def execute():
-            assert test() == (0.0, 0.0)
-    ''')

Debdiff

File lists identical (after any substitutions)

No differences were encountered in the control files

More details

Full run details