From 7c6d3541acb1f2a12595ce7c57c4eb995289e222 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Ma=C5=9Blanka?= <piotr.maslanka@henrietta.com.pl> Date: Wed, 18 Mar 2020 15:18:55 +0100 Subject: [PATCH] renamed to snakebuild, this won't patch cython's build anymore --- README.md | 26 +++++++++---------- cython_multibuild/build.py | 12 --------- example/setup.py | 10 +++---- setup.cfg | 8 +++--- setup.py | 4 +-- {cython_multibuild => snakehouse}/__init__.py | 2 +- snakehouse/build.py | 7 +++++ .../multibuild.py | 0 8 files changed, 31 insertions(+), 38 deletions(-) delete mode 100644 cython_multibuild/build.py rename {cython_multibuild => snakehouse}/__init__.py (75%) create mode 100644 snakehouse/build.py rename {cython_multibuild => snakehouse}/multibuild.py (100%) diff --git a/README.md b/README.md index fc2b3a6..798c8c2 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,24 @@ -cython-multibuild -================= -[](https://travis-ci.org/smok-serwis/cython-multibuild) -[](https://pypi.python.org/pypi/cython-multibuild) -[](https://badge.fury.io/py/cython-multibuild) -[](https://pypi.python.org/pypi/cython-multibuild) - -cython-multibuild is a tool to pack mutiple .pyx files +snakehouse +========== +[](https://travis-ci.org/smok-serwis/snakehouse) +[](https://pypi.python.org/pypi/snakehouse) +[](https://badge.fury.io/py/snakehouse) +[](https://pypi.python.org/pypi/snakehouse) + +snakehouse is a tool to pack mutiple .pyx files into a single extension. Inspired by [https://stackoverflow.com/questions/30157363/collapse-multiple-submodules-to-one-cython-extension](this StackOverflow discussion). -This will monkey-patch Cython's Build.cythonize, so take care to import -Build instead of Cythonize itself. - -Tested and works on Python 3.8 and Python 3.7. +Tested and works on Python 3.8 and Python 3.7, +both Windows and Linux. Usage ----- Take a look at [example](example/) on how to multi-build your Cython extensions. - Limitations ----------- -* Two modules with the same name cannot be mentioned in a single Multibuild +* Two modules with the same name cannot be mentioned in a single Multibuild. + diff --git a/cython_multibuild/build.py b/cython_multibuild/build.py deleted file mode 100644 index 5ee6e7d..0000000 --- a/cython_multibuild/build.py +++ /dev/null @@ -1,12 +0,0 @@ -from Cython import Build - -old_cythonize = Build.cythonize - - -def build(extensions, *args, **kwargs): - for multibuild in extensions: - multibuild.generate() - return old_cythonize([ext.for_cythonize() for ext in extensions], *args, **kwargs) - - -Build.cythonize = build diff --git a/example/setup.py b/example/setup.py index 6b6131c..b9e88ef 100644 --- a/example/setup.py +++ b/example/setup.py @@ -1,15 +1,15 @@ -from Cython import Build from setuptools import setup, find_packages -from cython_multibuild import Multibuild - +from snakehouse import Multibuild, build cython_multibuilds = [ Multibuild('example_module', ['example_module/test.pyx', 'example_module/test2.pyx', 'example_module/test3/test3.pyx']) ] -ext_modules = Build.cythonize(cython_multibuilds, +# first argument is used directly by snakehouse, the rest and **kwargs are passed to +# Cython.Build.cythonize +ext_modules = build(cython_multibuilds, compiler_directives={ 'language_level': '3', }) @@ -18,7 +18,7 @@ setup(name='example_module', version='0.1', packages=find_packages(include=['example_module']), install_requires=[ - 'Cython', 'cython-multibuild' + 'Cython', 'snakehouse' ], zip_safe=False, tests_require=[ diff --git a/setup.cfg b/setup.cfg index 213d2ea..07d2c71 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,16 +1,16 @@ # coding: utf-8 [metadata] -name = cython-multibuild +name = snakehouse long-description = file: README.md long-description-content-type = text/markdown; charset=UTF-8 license_files = LICENSE author = Piotr MaĹlanka author_email = piotrm@smok.co description = Utilities for packing multiple pyx files into a single Cython extension -url = https://github.com/smok-serwis/cython-multibuild +url = https://github.com/smok-serwis/snakehouse project-urls = - Code = https://github.com/smok-serwis/cython-multibuild - Issue tracker = https://github.com/smok-serwis/cython-multibuild/issues + Code = https://github.com/smok-serwis/snakehouse + Issue tracker = https://github.com/smok-serwis/snakehouse/issues classifier = Programming Language :: Python Programming Language :: Python :: 3.7 diff --git a/setup.py b/setup.py index 706ee4e..1037108 100644 --- a/setup.py +++ b/setup.py @@ -1,9 +1,9 @@ from setuptools import setup, find_packages -from cython_multibuild import __version__ +from snakehouse import __version__ setup(keywords=['cython', 'extension', 'multiple', 'pyx'], - packages=find_packages(include=['cython_multibuild']), + packages=find_packages(include=['snakehouse']), version=__version__, install_requires=[ 'Cython' diff --git a/cython_multibuild/__init__.py b/snakehouse/__init__.py similarity index 75% rename from cython_multibuild/__init__.py rename to snakehouse/__init__.py index c36d320..5f2ca9a 100644 --- a/cython_multibuild/__init__.py +++ b/snakehouse/__init__.py @@ -1,4 +1,4 @@ from .build import build from .multibuild import Multibuild -__version__ = '0.5' +__version__ = '1.0' diff --git a/snakehouse/build.py b/snakehouse/build.py new file mode 100644 index 0000000..2f2900c --- /dev/null +++ b/snakehouse/build.py @@ -0,0 +1,7 @@ +from Cython.Build import cythonize + + +def build(extensions, *args, **kwargs): + for multibuild in extensions: + multibuild.generate() + return cythonize([ext.for_cythonize() for ext in extensions], *args, **kwargs) diff --git a/cython_multibuild/multibuild.py b/snakehouse/multibuild.py similarity index 100% rename from cython_multibuild/multibuild.py rename to snakehouse/multibuild.py -- GitLab