diff --git a/.travis.yml b/.travis.yml index f7dc8d47..e083cf57 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,4 @@ -language: c +language: python matrix: include: @@ -6,25 +6,89 @@ matrix: - os: linux sudo: required dist: trusty + language: c + install: + - ./.travis/install-debian.sh + script: + - ./.travis/build-debian.sh - os: osx - osx_image: xcode8.2 + osx_image: xcode8.3 + language: c + install: + - ./.travis/install-macos.sh + script: + # the awk command is a workaround for https://github.com/travis-ci/travis-ci/issues/4704. + - ./.travis/build-macos.sh | awk '/.{0,32}/ {print $0}' + deploy: + - provider: releases + api_key: + secure: dDlkIawHcODlW9B/20/cQCtzeoocvs0hKuNngRKXKqzXLWTRq33oq/B7+39tAixWbmv6exTpijiKrRNFiSCW5Z4iwHLwaRD4XJznxw63e/Hus/dxg2Tvqx7XFpkCz8mT1Z+gZQE5YxAngeZPpI/sZbZtF1UO3yH5eLeeokZ15p26ZskQUPoYuzrTgTzYL3XfpG3F+20rNBawH1ycsCTVD/08/n31d2m3CrKAsbW7er92ek6w4fzKr7NW8WeXjrPJETVpw5fQg1Od3pRGW8dPQaJcvKQEogMp8Mm0ETYd0qigg89/giBz7QwOgmAWQ4dH+DfZH4Ojl//127QztBolMvyDMQBykWrtJoGcij05sT6K2IJr2FHeUBO12MAEdjiVvhQj3DtTzjPiZAHHDBSLWxLKWWhlhHE4pq7g1MQhqXkaAHI2BLNzwLmaowbMT0bECf9yfz6xx18h6XPQFX44oOktraobVALFlyHqeKa8zdcUt22LF6uAL1m5dxL0tny3eXCIPE4UH/RZgua/cHV9G3cUvKQa/QnFSLRhvWVSbGB+7YsHouBJcsUOOW1gmd5442XuC7mpppccRldh+GSxUk6TBJRAx7TeQ0ybDUaoco9MUqp2twv3KreR2+8Q12PDaAhfQVNEGdF3wTm1sShImjCN4VN3eSLlBEbve1QRQXM= + skip_cleanup: true + file: build/SolveSpace.dmg + on: + repo: solvespace/solvespace + tags: true -install: - - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then ./.travis/install-debian.sh; fi - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then ./.travis/install-macos.sh; fi -script: - - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then ./.travis/build-debian.sh; fi - # the awk command is a workaround for https://github.com/travis-ci/travis-ci/issues/4704. - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then ./.travis/build-macos.sh | awk '/.{0,32}/ {print $0}'; fi + - &linux + os: linux + sudo: required + dist: xenial + python: "3.6" + install: &python-install + - cd cython && python3 -m pip install -r requirements.txt && cd - + script: &python-script + - cd cython && python3 setup.py test && cd - + deploy: + provider: pypi + user: $TWINE_USERNAME + password: $TWINE_PASSWORD + skip_cleanup: true + skip_existing: true + file: cython/dist/*.whl + on: + repo: KmolYuan/solvespace + tags: true -deploy: - - provider: releases - api_key: - secure: dDlkIawHcODlW9B/20/cQCtzeoocvs0hKuNngRKXKqzXLWTRq33oq/B7+39tAixWbmv6exTpijiKrRNFiSCW5Z4iwHLwaRD4XJznxw63e/Hus/dxg2Tvqx7XFpkCz8mT1Z+gZQE5YxAngeZPpI/sZbZtF1UO3yH5eLeeokZ15p26ZskQUPoYuzrTgTzYL3XfpG3F+20rNBawH1ycsCTVD/08/n31d2m3CrKAsbW7er92ek6w4fzKr7NW8WeXjrPJETVpw5fQg1Od3pRGW8dPQaJcvKQEogMp8Mm0ETYd0qigg89/giBz7QwOgmAWQ4dH+DfZH4Ojl//127QztBolMvyDMQBykWrtJoGcij05sT6K2IJr2FHeUBO12MAEdjiVvhQj3DtTzjPiZAHHDBSLWxLKWWhlhHE4pq7g1MQhqXkaAHI2BLNzwLmaowbMT0bECf9yfz6xx18h6XPQFX44oOktraobVALFlyHqeKa8zdcUt22LF6uAL1m5dxL0tny3eXCIPE4UH/RZgua/cHV9G3cUvKQa/QnFSLRhvWVSbGB+7YsHouBJcsUOOW1gmd5442XuC7mpppccRldh+GSxUk6TBJRAx7TeQ0ybDUaoco9MUqp2twv3KreR2+8Q12PDaAhfQVNEGdF3wTm1sShImjCN4VN3eSLlBEbve1QRQXM= - skip_cleanup: true - file: build/SolveSpace.dmg - on: - repo: solvespace/solvespace - tags: true - condition: "$TRAVIS_OS_NAME == osx" + - <<: *linux + python: "3.7" + + - <<: *linux + python: "3.8-dev" + + - &osx + os: osx + osx_image: xcode10 + language: generic + env: PYTHON=3.6.0 + before_install: + - brew update + - brew upgrade pyenv + - export PATH="/Users/travis/.pyenv/shims:${PATH}" + - pyenv install ${PYTHON} + - pyenv global ${PYTHON} + - python3 -m pip install pip -U + - python3 --version + - python3 -m pip --version + install: *python-install + script: *python-script + after_success: + # PyPI deployment + - if [ -n "$TRAVIS_TAG" ]; then + python3 -m pip install twine; + python3 setup.py sdist bdist_wheel; + python3 -m twine upload cython/dist/*.whl --skip-existing; + fi + + - <<: *osx + env: PYTHON=3.7.0 + + - <<: *osx + env: PYTHON=3.8-dev + +before_cache: + - rm -rf $HOME/.cache/pip/log + +cache: + directories: + - $HOME/.cache/pip diff --git a/appveyor.yml b/appveyor.yml index 8865d1a6..560492c1 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -30,4 +30,5 @@ deploy: description: "" artifact: solvespace.exe,solvespace-cli.exe,solvespace.pdb on: - appveyor_repo_tag: true + APPVEYOR_REPO_NAME: solvespace/solvespace + APPVEYOR_REPO_TAG: true diff --git a/cython/python_solvespace/__init__.py b/cython/python_solvespace/__init__.py index 77adc7c3..550943c8 100644 --- a/cython/python_solvespace/__init__.py +++ b/cython/python_solvespace/__init__.py @@ -8,6 +8,7 @@ __author__ = "Yuan Chang" __copyright__ = "Copyright (C) 2016-2019" __license__ = "GPLv3+" __email__ = "pyslvs@gmail.com" +__version__ = "3.0.0" from .slvs import ( quaternion_u, diff --git a/cython/setup.py b/cython/setup.py index 158b8460..14b36ed9 100644 --- a/cython/setup.py +++ b/cython/setup.py @@ -39,12 +39,10 @@ def read(*parts): return f.read() -def get_version(*file_paths): - doc = read(*file_paths) - m1 = re.search(r"^set\(solvespace_VERSION_MAJOR (\d)\)", doc, re.M) - m2 = re.search(r"^set\(solvespace_VERSION_MINOR (\d)\)", doc, re.M) - if m1 and m2: - return f"{m1.group(1)}.{m2.group(1)}" +def find_version(*file_paths): + m = re.search(r"^__version__ = ['\"]([^'\"]*)['\"]", read(*file_paths), re.M) + if m: + return m.group(1) raise RuntimeError("Unable to find version string.") @@ -110,7 +108,7 @@ class Build(build_ext): setup( name="python_solvespace", - version=get_version('..', 'CMakeLists.txt'), + version=find_version('python_solvespace', '__init__.py'), author=__author__, author_email=__email__, description="Python library of Solvespace",