Metadata-Version: 2.0
Name: subzero
Version: 0.2.3.4
Summary: PyInstaller setuptools integration
Home-page: https://github.com/xoviat/subzero
Author: Mars Galactic
Author-email: xoviat@users.noreply.github.com
License: GNU GENERAL PUBLIC LICENSE
Keywords: pyinstaller
Platform: any
Requires-Dist: PyInstaller
Requires-Dist: PyRTF3 (>=0.47.3)
Requires-Dist: contextlib2
Requires-Dist: deepmerge
Requires-Dist: glob2
Requires-Dist: packaging
Requires-Dist: pathlib
Requires-Dist: pipdeptree
Requires-Dist: pyspin
Requires-Dist: pywix (>=0.2)

# subzero

[![Codacy Badge][6]][7]
[![build status][2]][3]
[![Codecov][5]][4]

## What is Subzero?

The goal of subzero is to allow simple and rapid deployment of [frozen][1] Python applications with minimal
additional effort and developer time. In contrast to other solutions, subzero's philosophy is that having a 
working application, quickly is more important than optimizing for size or other factors and that generating
your end product (be it an MSI, or other installer) should take only a few minutes to set up. Subzero builds
on the extensive development work of other projects, and doesn't re-invent the wheel. Rather, it ties everything
together in a simple and intuitive manner.

## How do I use it?

In your setup file, replace the default setup import with the followng:

```python
from subzero import setup, Executable
```

Then run the following command:

    python setup.py bdist_msi

Subzero will the build executables specified in the `entry_points` and `scripts` sections and 
then create an installer that contains those executables.

## Example

```python
setup(
    name='Name',
    author='Author',
    packages=find_packages(),
    version=versioneer.get_version(),
    cmdclass=versioneer.get_cmdclass(),
    install_requires=[
        'paramiko',
    ],
    entry_points={
        'gui_scripts': [
            Executable(
                    'gui = app.__main__:gui',
                    icon_file='Icon.ico'),
        ],
        'console_scripts': [
            'console = app.__main__:console',
        ],
    },
    options={
        'build_exe': {
            'pathex':
            [os.path.join(os.path.dirname(PyQt5.__file__), 'Qt', 'bin')],
            'datas':
            [datafile, '.')],
        },
        'bdist_msi': {
            'upgrade_code': '84b31ed7-3985-46ad-9d07-eb4140a6d44a',
            'shortcuts': ['My Program = gui'],
        }
    })
```

Options are applied first globally from the options dictionary passed to `setup`, and then for each executable
if the `Executable` class is present for that particular `entry_point` or `script`.

The full array of options for build_exe is available in the PyInstaller documentation. Providing an upgrade code is
**strongly recommended** for the bdist_msi command. A license agreement will be added to the installer if there is 
a license text file in the same directory as setup.py.

## Extended import discovery (In beta)

In case PyInstaller cannot discover all of your dependencies, you can set `optimize_imports=False`, as shown below.
This option may discover certain imports previously not found but it may also make your application larger. Note that
you must add your package requirements in `install_requires` for this option to work!

```python
    'build_exe': {
        'optimize_imports': False
    },
```

## Cython

Cython modules can also be built because Subzero executes the builtin `build` command before calling 
PyInstaller. Just add your modules to the `ext_modules` key:

```python
from setuptools import find_packages, Extension
from subzero import setup

setup(
    name='hello_world',
    ext_modules=[
        Extension(
            'my_module',
            sources=['my_module.pyx'],
        )
    ])
```


[1]: http://docs.python-guide.org/en/latest/shipping/freezing/
[2]: https://ci.appveyor.com/api/projects/status/github/xoviat/subzero?branch=master&svg=true
[3]: https://ci.appveyor.com/project/xoviat/pyinstaller-utils
[4]: https://codecov.io/gh/xoviat/subzero
[5]: https://img.shields.io/codecov/c/github/xoviat/subzero.svg?style=flat
[6]: https://api.codacy.com/project/badge/Grade/1568bcb5178b4e4d80dae7840df03f08
[7]: https://www.codacy.com/app/pywin32/subzero?utm_source=github.com&utm_medium=referral&utm_content=xoviat/subzero&utm_campaign=badger


