forked from msitt/blpapi-python
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsetup.py
119 lines (99 loc) · 3.42 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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#!/usr/bin/env python
"""
setup.py file for Bloomberg Python SDK
"""
import os
import platform as plat
import re
import codecs
from sys import argv
from setuptools import setup, Extension
os.chdir(os.path.dirname(os.path.realpath(__file__)))
platform = plat.system().lower()
def find_version_number():
"""Load the version number from blpapi/version.py"""
version_path = os.path.abspath(os.path.join("src", "blpapi", "version.py"))
version_file = None
with codecs.open(version_path, "r") as fp:
version_file = fp.read()
version_match = re.search(
r"^__version__ = ['\"]([^'\"]*)['\"]", version_file, re.M
)
if version_match:
return version_match.group(1)
raise RuntimeError("Unable to find version string.")
def lib_in_release():
"""Returns the right library folder name for each platform"""
if platform == "windows":
return "lib"
if platform == "linux":
return "Linux"
if platform == "darwin":
return "Darwin"
raise Exception("Platform '" + platform + "' isn't supported")
blpapiRoot = os.environ.get("BLPAPI_ROOT")
blpapiIncludesVar = os.environ.get("BLPAPI_INCDIR")
blpapiLibVar = os.environ.get("BLPAPI_LIBDIR")
assert blpapiRoot or (blpapiIncludesVar and blpapiLibVar), (
"BLPAPI_ROOT (or BLPAPI_INCDIR/BLPAPI_LIBDIR) "
+ "environment variable isn't defined"
)
is64bit = plat.architecture()[0] == "64bit"
if is64bit:
blpapiLibraryName = "blpapi3_64"
else:
blpapiLibraryName = "blpapi3_32"
extraLinkArgs = []
package_data = {}
if platform == "windows":
extraLinkArgs = ["/MANIFEST"]
# Handle the very frequent case when user need to use Visual C++ 2010
# with Python that wants to use Visual C++ 2008.
if plat.python_compiler().startswith("MSC v.1500"):
if (not "VS90COMNTOOLS" in os.environ) and (
"VS100COMNTOOLS" in os.environ
):
os.environ["VS90COMNTOOLS"] = os.environ["VS100COMNTOOLS"]
if "bdist_wheel" in argv:
# get src/blpapi/*.dll
package_data = {
"blpapi": ["blpapi3_64.dll" if is64bit else "blpapi3_32.dll"]
}
blpapiLibraryPath = blpapiLibVar or os.path.join(blpapiRoot, lib_in_release())
blpapiIncludes = blpapiIncludesVar or os.path.join(blpapiRoot, "include")
blpapi_wrap = Extension(
"blpapi._internals",
sources=["src/blpapi/internals_wrap.c"],
include_dirs=[blpapiIncludes],
library_dirs=[blpapiLibraryPath],
libraries=[blpapiLibraryName],
extra_link_args=extraLinkArgs,
)
versionhelper_wrap = Extension(
"blpapi._versionhelper",
sources=["src/blpapi/versionhelper_wrap.c"],
include_dirs=[blpapiIncludes],
library_dirs=[blpapiLibraryPath],
libraries=[blpapiLibraryName],
extra_link_args=extraLinkArgs,
)
setup(
name="blpapi",
version=find_version_number(),
author="Bloomberg L.P.",
author_email="open-tech@bloomberg.net",
description="Python SDK for Bloomberg BLPAPI",
ext_modules=[blpapi_wrap, versionhelper_wrap],
url="http://www.bloomberglabs.com/api/",
packages=["blpapi", "blpapi.test"],
package_dir={"": "src"},
package_data=package_data,
python_requires=">=3",
classifiers=[
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"Intended Audience :: Financial and Insurance Industry",
"License :: Other/Proprietary License",
"Topic :: Office/Business :: Financial",
],
)