Skip to content

Commit

Permalink
Merge pull request #36 from astrofrog/remove-compiler-argument
Browse files Browse the repository at this point in the history
Remove support for (undocumented) --compiler argument
  • Loading branch information
Cadair authored Nov 11, 2021
2 parents 653bbc5 + d0cd5ac commit 46f6c46
Show file tree
Hide file tree
Showing 12 changed files with 82 additions and 191 deletions.
32 changes: 0 additions & 32 deletions .coveragerc

This file was deleted.

2 changes: 2 additions & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

* Removed any direct usage of distutils. [#34]

* Remove support for the undocumented --compiler argument to setup.py. [#36]

0.1 (2019-12-18)
----------------

Expand Down
3 changes: 1 addition & 2 deletions extension_helpers/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
from ._distutils_helpers import get_compiler
from ._openmp_helpers import add_openmp_flags_if_available
from ._setup_helpers import get_extensions, pkg_config
from ._setup_helpers import get_compiler, get_extensions, pkg_config
from ._utils import import_file, write_if_different
from .version import version as __version__
109 changes: 0 additions & 109 deletions extension_helpers/_distutils_helpers.py

This file was deleted.

2 changes: 1 addition & 1 deletion extension_helpers/_openmp_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@

from setuptools.command.build_ext import customize_compiler, get_config_var, new_compiler

from ._distutils_helpers import get_compiler
from ._setup_helpers import get_compiler

__all__ = ['add_openmp_flags_if_available']

Expand Down
19 changes: 17 additions & 2 deletions extension_helpers/_setup_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,30 @@
from collections import defaultdict

from setuptools import Extension, find_packages
from setuptools.command.build_ext import new_compiler

from ._distutils_helpers import get_compiler
from ._utils import import_file, walk_skip_hidden

__all__ = ['get_extensions', 'pkg_config']
__all__ = ['get_compiler', 'get_extensions', 'pkg_config']

log = logging.getLogger(__name__)


def get_compiler():
"""
Determines the compiler that will be used to build extension modules.
Returns
-------
compiler : str
The compiler option specified for the build, build_ext, or build_clib
command; or the default compiler for the platform if none was
specified.
"""
return new_compiler().compiler_type


def get_extensions(srcdir='.'):
"""
Collect all extensions from Cython files and ``setup_package.py`` files.
Expand Down
37 changes: 1 addition & 36 deletions extension_helpers/_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,41 +9,6 @@
__all__ = ['write_if_different', 'import_file']


class _DummyFile(object):
"""A noop writeable object."""

errors = ''

def write(self, s):
pass

def flush(self):
pass


@contextlib.contextmanager
def silence():
"""A context manager that silences sys.stdout and sys.stderr."""

old_stdout = sys.stdout
old_stderr = sys.stderr
sys.stdout = _DummyFile()
sys.stderr = _DummyFile()
exception_occurred = False
try:
yield
except: # noqa
exception_occurred = True
# Go ahead and clean up so that exception handling can work normally
sys.stdout = old_stdout
sys.stderr = old_stderr
raise

if not exception_occurred:
sys.stdout = old_stdout
sys.stderr = old_stderr


if sys.platform == 'win32':
import ctypes

Expand Down Expand Up @@ -162,7 +127,7 @@ def import_file(filename, name=None):

if name is None:
basename = os.path.splitext(filename)[0]
name = '_'.join(os.path.relpath(basename).split(os.sep)[1:])
name = '_'.join(os.path.abspath(basename).split(os.sep)[1:])

if not os.path.exists(filename):
raise ImportError('Could not import file {0}'.format(filename))
Expand Down
7 changes: 0 additions & 7 deletions extension_helpers/tests/test_distutils_helpers.py

This file was deleted.

9 changes: 8 additions & 1 deletion extension_helpers/tests/test_setup_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

import pytest

from .._setup_helpers import get_extensions
from .._setup_helpers import get_compiler, get_extensions
from . import cleanup_import, run_setup

extension_helpers_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..')) # noqa
Expand All @@ -19,6 +19,13 @@ def teardown_module(module):
os.remove(tmpfile)


POSSIBLE_COMPILERS = ['unix', 'msvc', 'bcpp', 'cygwin', 'mingw32']


def test_get_compiler():
assert get_compiler() in POSSIBLE_COMPILERS


def _extension_test_package(tmpdir, request, extension_type='c',
include_numpy=False):
"""Creates a simple test package with an extension module."""
Expand Down
26 changes: 26 additions & 0 deletions extension_helpers/tests/test_utils.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import os
import time

from .._utils import import_file, write_if_different


def test_import_file(tmpdir):
filename = str(tmpdir / 'spam.py')
with open(filename, 'w') as f:
f.write('magic = 12345')
module = import_file(filename)
assert module.magic == 12345


def test_write_if_different(tmpdir):
filename = str(tmpdir / 'test.txt')
write_if_different(filename, b'abc')
time1 = os.path.getmtime(filename)
time.sleep(0.01)
write_if_different(filename, b'abc')
time2 = os.path.getmtime(filename)
assert time2 == time1
time.sleep(0.01)
write_if_different(filename, b'abcd')
time3 = os.path.getmtime(filename)
assert time3 > time1
25 changes: 25 additions & 0 deletions setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -56,3 +56,28 @@ balanced_wrapping = True
include_trailing_comma = false
length_sort = False
length_sort_sections=stdlib

[coverage:run]
omit =
extension_helpers/*/setup_package.py
extension_helpers/tests/*
extension_helpers/conftest.py
*/extension_helpers/*/setup_package.py
*/extension_helpers/tests/*
*/extension_helpers/conftest.py

[coverage:report]
exclude_lines =
# Have to re-enable the standard pragma
pragma: no cover
# Don't complain about packages we have installed
except ImportError
# Don't complain if tests don't hit assertions
raise AssertionError
raise NotImplementedError
# Don't complain about script hooks
def main\(.*\):
# Ignore branches that don't pertain to this version of Python
pragma: py{ignore_python_version}
# Don't complain about IPython completion helper
def _ipython_key_completions_
2 changes: 1 addition & 1 deletion tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ commands =
dev: pip install setuptools_repo/ --no-build-isolation
pip freeze
test: python -c 'import setuptools; print(setuptools.__version__)'
test: pytest --pyargs extension_helpers {toxinidir}/docs --cov extension_helpers {posargs}
test: pytest --pyargs extension_helpers {toxinidir}/docs --cov extension_helpers --cov-config={toxinidir}/setup.cfg {posargs}
build_docs: sphinx-build -W -b html . _build/html

[testenv:py39-downstream]
Expand Down

0 comments on commit 46f6c46

Please sign in to comment.