api/python/setup.py (108 lines of code) (raw):

import glob import os import shutil import sys from setuptools import setup # type: ignore CLASSIFIERS = """\ Development Status :: 5 - Production/Stable Intended Audience :: Science/Research Intended Audience :: Developers License :: OSI Approved :: Apache Software License Programming Language :: C Programming Language :: C++ Programming Language :: Python Programming Language :: Python :: 3 Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 Programming Language :: Python :: 3.10 Programming Language :: Python :: Implementation :: CPython Topic :: Software Development Topic :: Scientific/Engineering :: Chemistry Operating System :: Microsoft :: Windows Operating System :: POSIX :: Linux Operating System :: MacOS """ LONG_DESCRIPTION = ( "Indigo is a universal molecular toolkit that can be used for molecular " "fingerprinting, substructure search, and molecular visualization. " "Also capable of performing a molecular similarity search, it is 100% " "open source and provides enhanced stereochemistry support for end " "users, as well as a documented API for developers." ) INDIGO_LIBS = None PLATFORM_NAME = None this_dir = os.path.dirname(os.path.abspath(__file__)) repo_root_dir = os.path.dirname(os.path.dirname(this_dir)) repo_dist_lib_dir = os.path.join(repo_root_dir, "dist", "lib") indigo_python_directory = os.path.join(this_dir, "indigo") indigo_native_libs_directory = os.path.join(indigo_python_directory, "lib") if not os.path.exists(indigo_native_libs_directory): print( "No native libs found in {}, looking for them in {}".format( indigo_native_libs_directory, repo_dist_lib_dir ) ) if os.path.exists(repo_dist_lib_dir): print("Copying native libs from {}".format(repo_dist_lib_dir)) shutil.copytree(repo_dist_lib_dir, indigo_native_libs_directory) if sys.argv[1] == "bdist_wheel": for opt in sys.argv[2:]: if opt.startswith("--plat-name"): PLATFORM_NAME = opt.split("=")[1] if PLATFORM_NAME.startswith("macosx_10_7_intel"): INDIGO_LIBS = "lib/darwin-x86_64/*.dylib" elif PLATFORM_NAME.startswith("macosx_11_0_arm64"): INDIGO_LIBS = "lib/darwin-aarch64/*.dylib" elif PLATFORM_NAME == "manylinux2014_aarch64": INDIGO_LIBS = "lib/linux-aarch64/*.so" elif PLATFORM_NAME == "manylinux1_x86_64": INDIGO_LIBS = "lib/linux-x86_64/*.so" elif PLATFORM_NAME == "manylinux1_i686": INDIGO_LIBS = "lib/linux-i386/*.so" elif PLATFORM_NAME == "win_amd64": INDIGO_LIBS = "lib/windows-x86_64/*.dll" elif PLATFORM_NAME == "mingw": INDIGO_LIBS = "lib/windows-x86_64/*.dll" elif PLATFORM_NAME == "win32": INDIGO_LIBS = "lib/windows-i386/*.dll" break if not INDIGO_LIBS: raise ValueError( "Wrong --plat-name value! Should be one of: macosx_11_0_arm64, " "macosx_10_7_intel, manylinux1_x86_64, manylinux2014_aarch64, " "manylinux1_i686, win_amd64, win32" ) if not glob.glob(os.path.join(indigo_python_directory, INDIGO_LIBS)): print( "No native libs found for platform {}, exiting".format( PLATFORM_NAME ) ) exit(0) else: INDIGO_LIBS = "lib/**/*" if os.path.exists("build"): shutil.rmtree("build") if os.path.exists("epam.indigo.egg-info"): shutil.rmtree("epam.indigo.egg-info") setup( name="epam.indigo", version="1.29.0.dev1", description="Indigo universal cheminformatics toolkit", author="EPAM Systems Life Science Department", author_email="lifescience.opensource@epam.com", maintainer="Mikhail Kviatkovskii", maintainer_email="Mikhail_Kviatkovskii@epam.com", packages=[ "indigo", "indigo._common", "indigo.bingo", "indigo.inchi", "indigo.indigo", "indigo.renderer", ], license="Apache-2.0", url="https://lifescience.opensource.epam.com/indigo/index.html", package_dir={"indigo": "indigo"}, package_data={ "indigo": [ INDIGO_LIBS, ] }, classifiers=[_f for _f in CLASSIFIERS.split("\n") if _f], platforms=["Windows", "Linux", "Mac OS-X"], long_description=LONG_DESCRIPTION, long_description_content_type="text/plain", project_urls={ "Bug Tracker": "https://github.com/epam/indigo/issues", "Documentation": ( "https://lifescience.opensource.epam.com/indigo/api/index.html" ), "Source Code": "https://github.com/epam/indigo/", }, download_url="https://pypi.org/project/epam.indigo", test_suite="tests", python_requires=">=3.6.0", )