aboutsummaryrefslogtreecommitdiff
path: root/setup.py
diff options
context:
space:
mode:
authorDominic Hamon <dominichamon@users.noreply.github.com>2020-09-09 09:43:26 +0100
committerGitHub <noreply@github.com>2020-09-09 09:43:26 +0100
commitbeb360d03e2a1a2673d9c2cf408c13b69fdb5627 (patch)
tree9f8073f39b873510c21fd1f445c7f0a6de3c1e8f /setup.py
parent4751550871a4765c027d39680b842f590e1192b2 (diff)
downloadgoogle-benchmark-beb360d03e2a1a2673d9c2cf408c13b69fdb5627.tar.gz
Create pylint.yml (#1039)
* Create pylint.yml * improve file matching * fix some pylint issues * run on PR and push (force on master only) * more pylint fixes * suppress noisy exit code and filter to fatals * add conan as a dep so the module is importable * fix lint error on unreachable branch
Diffstat (limited to 'setup.py')
-rw-r--r--setup.py139
1 files changed, 71 insertions, 68 deletions
diff --git a/setup.py b/setup.py
index a2b0b91..800a879 100644
--- a/setup.py
+++ b/setup.py
@@ -9,89 +9,91 @@ import setuptools
from setuptools.command import build_ext
-here = os.path.dirname(os.path.abspath(__file__))
+HERE = os.path.dirname(os.path.abspath(__file__))
IS_WINDOWS = sys.platform.startswith('win')
def _get_version():
- """Parse the version string from __init__.py."""
- with open(os.path.join(here, 'bindings', 'python', 'google_benchmark', '__init__.py')) as f:
- try:
- version_line = next(
- line for line in f if line.startswith('__version__'))
- except StopIteration:
- raise ValueError('__version__ not defined in __init__.py')
- else:
- ns = {}
- exec(version_line, ns) # pylint: disable=exec-used
- return ns['__version__']
+ """Parse the version string from __init__.py."""
+ with open(os.path.join(
+ HERE, 'bindings', 'python', 'google_benchmark', '__init__.py')) as init_file:
+ try:
+ version_line = next(
+ line for line in init_file if line.startswith('__version__'))
+ except StopIteration:
+ raise ValueError('__version__ not defined in __init__.py')
+ else:
+ namespace = {}
+ exec(version_line, namespace) # pylint: disable=exec-used
+ return namespace['__version__']
def _parse_requirements(path):
- with open(os.path.join(here, path)) as f:
- return [
- line.rstrip() for line in f
- if not (line.isspace() or line.startswith('#'))
- ]
+ with open(os.path.join(HERE, path)) as requirements:
+ return [
+ line.rstrip() for line in requirements
+ if not (line.isspace() or line.startswith('#'))
+ ]
class BazelExtension(setuptools.Extension):
- """A C/C++ extension that is defined as a Bazel BUILD target."""
+ """A C/C++ extension that is defined as a Bazel BUILD target."""
- def __init__(self, name, bazel_target):
- self.bazel_target = bazel_target
- self.relpath, self.target_name = (
- posixpath.relpath(bazel_target, '//').split(':'))
- setuptools.Extension.__init__(self, name, sources=[])
+ def __init__(self, name, bazel_target):
+ self.bazel_target = bazel_target
+ self.relpath, self.target_name = (
+ posixpath.relpath(bazel_target, '//').split(':'))
+ setuptools.Extension.__init__(self, name, sources=[])
class BuildBazelExtension(build_ext.build_ext):
- """A command that runs Bazel to build a C/C++ extension."""
-
- def run(self):
- for ext in self.extensions:
- self.bazel_build(ext)
- build_ext.build_ext.run(self)
-
- def bazel_build(self, ext):
- with open('WORKSPACE', 'r') as f:
- workspace_contents = f.read()
-
- with open('WORKSPACE', 'w') as f:
- f.write(re.sub(
- r'(?<=path = ").*(?=", # May be overwritten by setup\.py\.)',
- sysconfig.get_python_inc().replace(os.path.sep, posixpath.sep),
- workspace_contents))
-
- if not os.path.exists(self.build_temp):
- os.makedirs(self.build_temp)
-
- bazel_argv = [
- 'bazel',
- 'build',
- ext.bazel_target,
- '--symlink_prefix=' + os.path.join(self.build_temp, 'bazel-'),
- '--compilation_mode=' + ('dbg' if self.debug else 'opt'),
- ]
-
- if IS_WINDOWS:
- # Link with python*.lib.
- for library_dir in self.library_dirs:
- bazel_argv.append('--linkopt=/LIBPATH:' + library_dir)
-
- self.spawn(bazel_argv)
-
- shared_lib_suffix = '.dll' if IS_WINDOWS else '.so'
- ext_bazel_bin_path = os.path.join(
- self.build_temp, 'bazel-bin',
- ext.relpath, ext.target_name + shared_lib_suffix)
- ext_dest_path = self.get_ext_fullpath(ext.name)
- ext_dest_dir = os.path.dirname(ext_dest_path)
- if not os.path.exists(ext_dest_dir):
- os.makedirs(ext_dest_dir)
- shutil.copyfile(ext_bazel_bin_path, ext_dest_path)
+ """A command that runs Bazel to build a C/C++ extension."""
+
+ def run(self):
+ for ext in self.extensions:
+ self.bazel_build(ext)
+ build_ext.build_ext.run(self)
+
+ def bazel_build(self, ext):
+ """Runs the bazel build to create the package."""
+ with open('WORKSPACE', 'r') as workspace:
+ workspace_contents = workspace.read()
+
+ with open('WORKSPACE', 'w') as workspace:
+ workspace.write(re.sub(
+ r'(?<=path = ").*(?=", # May be overwritten by setup\.py\.)',
+ sysconfig.get_python_inc().replace(os.path.sep, posixpath.sep),
+ workspace_contents))
+
+ if not os.path.exists(self.build_temp):
+ os.makedirs(self.build_temp)
+
+ bazel_argv = [
+ 'bazel',
+ 'build',
+ ext.bazel_target,
+ '--symlink_prefix=' + os.path.join(self.build_temp, 'bazel-'),
+ '--compilation_mode=' + ('dbg' if self.debug else 'opt'),
+ ]
+
+ if IS_WINDOWS:
+ # Link with python*.lib.
+ for library_dir in self.library_dirs:
+ bazel_argv.append('--linkopt=/LIBPATH:' + library_dir)
+
+ self.spawn(bazel_argv)
+
+ shared_lib_suffix = '.dll' if IS_WINDOWS else '.so'
+ ext_bazel_bin_path = os.path.join(
+ self.build_temp, 'bazel-bin',
+ ext.relpath, ext.target_name + shared_lib_suffix)
+ ext_dest_path = self.get_ext_fullpath(ext.name)
+ ext_dest_dir = os.path.dirname(ext_dest_path)
+ if not os.path.exists(ext_dest_dir):
+ os.makedirs(ext_dest_dir)
+ shutil.copyfile(ext_bazel_bin_path, ext_dest_path)
setuptools.setup(
@@ -106,7 +108,8 @@ setuptools.setup(
packages=setuptools.find_packages('bindings/python'),
install_requires=_parse_requirements('bindings/python/requirements.txt'),
cmdclass=dict(build_ext=BuildBazelExtension),
- ext_modules=[BazelExtension('google_benchmark._benchmark', '//bindings/python/google_benchmark:_benchmark')],
+ ext_modules=[BazelExtension(
+ 'google_benchmark._benchmark', '//bindings/python/google_benchmark:_benchmark')],
zip_safe=False,
# PyPI package information.
classifiers=[