Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 0 additions & 28 deletions .github/workflows/build-manylinux-wheels.sh

This file was deleted.

83 changes: 32 additions & 51 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ jobs:
mkdir -p dist/
echo "${VERSION}" > dist/VERSION

- uses: actions/upload-artifact@v1
- uses: actions/upload-artifact@v2
with:
name: dist
path: dist/
Expand All @@ -50,80 +50,61 @@ jobs:
fetch-depth: 50
submodules: true

- name: Set up Python 3.7
uses: actions/setup-python@v2
with:
python-version: 3.7
- uses: actions/setup-python@v2

- name: Build source distribution
run: |
pip install -U setuptools wheel pip
python -m pip install -U setuptools wheel pip
python setup.py sdist

- uses: actions/upload-artifact@v1
- uses: actions/upload-artifact@v2
with:
name: dist
path: dist/
path: dist/*.tar.*

build-wheels:
needs: validate-release-request
runs-on: ${{ matrix.os }}
strategy:
matrix:
python-version: [3.5, 3.6, 3.7, 3.8, 3.9]
os: [ubuntu-16.04, macos-latest, windows-latest]
exclude:
# Python 3.5 is unable to properly
# find the recent VS tooling
# https://bugs.python.org/issue30389
- os: windows-latest
python-version: 3.5
os: [ubuntu-latest, macos-latest, windows-latest]
cibw_arch: [auto]
include:
- os: ubuntu-latest
cibw_arch: aarch64
- os: macos-latest
cibw_arch: universal2

steps:
- uses: actions/checkout@v2
with:
fetch-depth: 50
submodules: true

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
- name: Set up QEMU
if: matrix.os == 'ubuntu-latest' && matrix.cibw_arch == 'aarch64'
uses: docker/setup-qemu-action@v1
with:
python-version: ${{ matrix.python-version }}

- name: Install Python Deps
run: |
python -m pip install --upgrade setuptools pip wheel
platforms: arm64

- name: Test
run: |
make debug && make test

- name: Build Wheels (linux)
if: startsWith(matrix.os, 'ubuntu')
uses: docker://quay.io/pypa/manylinux1_x86_64
- uses: pypa/cibuildwheel@v2.0.1
env:
PYTHON_VERSION: ${{ matrix.python-version }}
with:
entrypoint: /github/workspace/.github/workflows/build-manylinux-wheels.sh

- name: Build Wheels (non-linux)
if: "!startsWith(matrix.os, 'ubuntu')"
run: |
make clean
python setup.py bdist_wheel

- name: Test Wheels
shell: bash
if: |
!contains(github.event.pull_request.labels.*.name, 'skip wheel tests')
run: |
pip install --pre immutables -f "file:///${GITHUB_WORKSPACE}/dist"
make -C "${GITHUB_WORKSPACE}" testinstalled

- uses: actions/upload-artifact@v1
CIBW_BUILD_VERBOSITY: 1
CIBW_BUILD: "cp36-* cp37-* cp38-* cp39-*"
CIBW_ARCHS: ${{ matrix.cibw_arch }}
CIBW_MANYLINUX_X86_64_IMAGE: quay.io/pypa/manylinux1_x86_64
CIBW_MANYLINUX_I686_IMAGE: quay.io/pypa/manylinux1_i686
CIBW_SKIP: "pp*"
CIBW_TEST_EXTRAS: "test"
CIBW_TEST_COMMAND: "cd .. && python {project}/tests/__init__.py"
CIBW_TEST_COMMAND_WINDOWS: "cd .. && python {project}\\tests\\__init__.py"
CIBW_TEST_SKIP: "*universal2:arm64"
CIBW_ENVIRONMENT: "IMMU_SKIP_MYPY_TESTS=1"

- uses: actions/upload-artifact@v2
with:
name: dist
path: dist/
path: wheelhouse/*.whl

publish:
needs: [build-sdist, build-wheels]
Expand All @@ -135,7 +116,7 @@ jobs:
fetch-depth: 5
submodules: false

- uses: actions/download-artifact@v1
- uses: actions/download-artifact@v2
with:
name: dist
path: dist/
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ jobs:
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
if: steps.release.outputs.version == 0
env:
PIP_DISABLE_PIP_VERSION_CHECK: 1
with:
python-version: ${{ matrix.python-version }}
architecture: ${{ matrix.arch }}
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,4 @@ __pycache__/
/.coverage
/.mypy_cache
/.venv*
/wheelhouse
45 changes: 24 additions & 21 deletions tests/test_mypy.py
Original file line number Diff line number Diff line change
@@ -1,23 +1,26 @@
import os
import mypy.test.testcmdline
from mypy.test.helpers import normalize_error_messages


# I'm upset. There's no other way to deal with the little 'defined here'
# notes that mypy emits when passing an unexpected keyword argument
# and at no other time.
def renormalize_error_messages(messages):
messages = [x for x in messages if not x.endswith(' defined here')]
return normalize_error_messages(messages)


mypy.test.testcmdline.normalize_error_messages = renormalize_error_messages


this_file_dir = os.path.dirname(os.path.realpath(__file__))
test_data_prefix = os.path.join(this_file_dir, 'test-data')


class ImmuMypyTest(mypy.test.testcmdline.PythonCmdlineSuite):
data_prefix = test_data_prefix
files = ['check-immu.test']
try:
import mypy.test.testcmdline
from mypy.test.helpers import normalize_error_messages
except (ImportError, AssertionError):
if os.environ.get('IMMU_SKIP_MYPY_TESTS'):
pass
else:
raise
else:
# I'm upset. There's no other way to deal with the little 'defined here'
# notes that mypy emits when passing an unexpected keyword argument
# and at no other time.
def renormalize_error_messages(messages):
messages = [x for x in messages if not x.endswith(' defined here')]
return normalize_error_messages(messages)

mypy.test.testcmdline.normalize_error_messages = renormalize_error_messages

this_file_dir = os.path.dirname(os.path.realpath(__file__))
test_data_prefix = os.path.join(this_file_dir, 'test-data')

class ImmuMypyTest(mypy.test.testcmdline.PythonCmdlineSuite):
data_prefix = test_data_prefix
files = ['check-immu.test']