Metadata-Version: 2.0
Name: setuptools-cythonize
Version: 1.0.2
Summary: Distribute python libraries/applications in a binary format (compilation based on Cython)
Home-page: https://github.com/anxuae/setuptools-cythonize
Author: Antoine Rousseaux
Author-email: UNKNOWN
License: MIT license
Download-URL: https://github.com/anxuae/setuptools-cythonize/archive/1.0.2.tar.gz
Description-Content-Type: UNKNOWN
Keywords: setup,install,compilation
Platform: unix
Platform: linux
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Other Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Natural Language :: English
Classifier: Topic :: System :: Installation/Setup
Requires-Dist: cython (>=0.25.2)
Requires-Dist: setuptools (>=36.2.0)
Requires-Dist: wheel (>=0.29.0)


.. image:: https://raw.githubusercontent.com/anxuae/setuptools-cythonize/master/docs/cythonize.png
   :align: center
   :alt: setuptools-cythonize

The ``setuptools-cythonize`` project attempts to provide ``distutils`` commands
to compile **Python** code into **C** code using ``Cython``. The generated code
is packaged into a platform dependent archive.

Install
-------

::

     $> pip install setuptools-cythonize


Setup configuration
-------------------

Add the ``cmdclass`` keyword to the setup:

.. code-block:: python

    from setuptools_cythonize import get_cmdclass

    setup(
        cmdclass=get_cmdclass(),
        name="my_package",
        version="2.0.5",
        description="My custom library",
        ...
    )

.. note:: the function ``get_cmdclass()`` force **wheel** as default format
          (recommended format for binary distribution). This behavior can be
          disabled by passing the parameter ``wheel_default=False``.

Some packages can be excluded from the *cythonization* by setting the ``exclude_cythonize``
option. The module matching is done using the function
`fnmatch.fnmatchcase <https://docs.python.org/3/library/fnmatch.html#fnmatch.fnmatchcase>`_ .

.. code-block:: python

    setup(
        cmdclass=get_cmdclass(),
        name="my_package",
        ...
        options={
            'build_py':
                {'exclude_cythonize': ['my_package.subpack*']}
        },
        ...
    )

Packaging
---------

Call the ``setup.py`` file to generate the package, all Python modules
(except the ones defined in ``exclude_cythonize``) will be compiled
and packaged::

     $> python setup.py bdist --cythonize


