-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsetup.py
65 lines (53 loc) · 2.61 KB
/
setup.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/usr/bin/env python
from setuptools import setup, find_packages, Extension # This setup relies on setuptools since distutils is insufficient and badly hacked code
import numpy as np
from distutils.command.build_ext import build_ext
from Cython.Build import cythonize
import os
copt = {'msvc': ['-Ibeam_telescope_analysis/cpp/external', '/EHsc']} # set additional include path and EHsc exception handling for VS
lopt = {}
class build_ext_opt(build_ext):
def initialize_options(self):
build_ext.initialize_options(self)
self.compiler = 'msvc' if os.name == 'nt' else None # in Miniconda the libpython package includes the MinGW import libraries and a file (Lib/distutils/distutils.cfg) which sets the default compiler to mingw32. Alternatively try conda remove libpython.
def build_extensions(self):
c = self.compiler.compiler_type
if c in copt:
for e in self.extensions:
e.extra_compile_args = copt[c]
if c in lopt:
for e in self.extensions:
e.extra_link_args = lopt[c]
build_ext.build_extensions(self)
cpp_extension = cythonize([
Extension('beam_telescope_analysis.analysis_functions', ['beam_telescope_analysis/cpp/analysis_functions.pyx'])
])
author = ', Yannick Dieter, Jens Janssen, David-Leon Pohl'
with open('VERSION') as version_file:
version = version_file.read().strip()
# requirements for core functionality from requirements.txt
with open('requirements.txt') as f:
install_requires = f.read().splitlines()
setup(
name='beam_telescope_analysis',
version=version,
description='Beam Telescope Analysis (BTA) is a testbeam analysis software written in Python (and C++).',
url='https://github.com/SiLab-Bonn/beam_telescope_analysis',
license='MIT',
long_description='',
author=author,
maintainer=author,
author_email=author_email,
maintainer_email=author_email,
install_requires=install_requires,
packages=find_packages(), # exclude=['*.tests', '*.test']),
include_package_data=True, # accept all data files and directories matched by MANIFEST.in or found in source control
package_data={'': ['README.*', 'VERSION'], 'docs': ['*'], 'examples': ['*']},
ext_modules=cpp_extension,
include_dirs=[np.get_include()],
cmdclass={'build_ext': build_ext_opt},
keywords=['telescope', 'eudaq', 'mimosa26', 'psi46', 'fei4', 'alignment', 'testbeam', 'cern', "hodoscope", "beam-telescope", "pixelated-detectors"],
python_requires='>=2.7',
platforms='any'
)