From 53c0b481b73fc7051b3bc667ec237d49fc6e1f28 Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Sat, 8 Feb 2020 13:01:28 +0100 Subject: [PATCH 01/21] Fixes for sparse matrix in Pandas 1.0 For now, there seems to be a bug in pandas; so we may need to wait on that. I think (still need to confirm) that this is the source of the test failures. --- contact_map/contact_count.py | 13 +++++++++++-- contact_map/tests/test_contact_count.py | 8 ++++---- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/contact_map/contact_count.py b/contact_map/contact_count.py index c9beb2e..550e076 100644 --- a/contact_map/contact_count.py +++ b/contact_map/contact_count.py @@ -95,10 +95,19 @@ def df(self): Rows/columns correspond to indices and the values correspond to the count """ - mtx = self.sparse_matrix.tocoo() + # mtx = self.sparse_matrix.tocoo() + mtx = self.sparse_matrix index = list(range(self.n_x)) columns = list(range(self.n_y)) - return pd.SparseDataFrame(mtx, index=index, columns=columns) + df = pd.DataFrame.sparse.from_spmatrix(mtx, index=index, + columns=columns) + # note: I think we can always use float here for dtype; but in + # principle maybe we need to inspect and get the internal type? + # Problem is, pandas technically stores a different dtype for each + # column. + df = df.astype(pd.SparseDtype("float", np.nan)) + # return pd.SparseDataFrame(mtx, index=index, columns=columns) + return df def _check_number_of_pixels(self, figure): """ diff --git a/contact_map/tests/test_contact_count.py b/contact_map/tests/test_contact_count.py index ef91eb3..c85a14a 100644 --- a/contact_map/tests/test_contact_count.py +++ b/contact_map/tests/test_contact_count.py @@ -89,12 +89,12 @@ def test_sparse_matrix(self): def test_df(self): atom_df = self.map.atom_contacts.df residue_df = self.map.residue_contacts.df - assert isinstance(atom_df, pd.SparseDataFrame) - assert isinstance(residue_df, pd.SparseDataFrame) + assert isinstance(atom_df, pd.DataFrame) + assert isinstance(residue_df, pd.DataFrame) - assert_array_equal(atom_df.to_dense().values, + assert_array_equal(atom_df.sparse.to_dense().values, zero_to_nan(self.atom_matrix)) - assert_array_equal(residue_df.to_dense().values, + assert_array_equal(residue_df.sparse.to_dense().values, zero_to_nan(self.residue_matrix)) @pytest.mark.parametrize("obj_type", ['atom', 'res']) From 9b3ada89aa536e2afaa9c88a8adb4baa9e808be7 Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Wed, 12 Feb 2020 12:44:25 +0100 Subject: [PATCH 02/21] Bump version on master to 0.5.1.dev0 --- ci/conda-recipe/meta.yaml | 2 +- setup.cfg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ci/conda-recipe/meta.yaml b/ci/conda-recipe/meta.yaml index 8ea4c9d..3f74281 100644 --- a/ci/conda-recipe/meta.yaml +++ b/ci/conda-recipe/meta.yaml @@ -1,7 +1,7 @@ package: name: contact_map # add ".dev0" for unreleased versions - version: "0.5.0" + version: "0.5.1.dev0" source: path: ../../ diff --git a/setup.cfg b/setup.cfg index d6415dd..199836f 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = contact_map -version = 0.5.0 +version = 0.5.1.dev0 description = Contact maps based on MDTraj long_description = file: README.md long_description_content_type = text/markdown From 144a0ab0fe1e4035d255dae46a05fad14e15ea93 Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Thu, 13 Feb 2020 15:10:12 +0100 Subject: [PATCH 03/21] monkey patch for pandas sparse bug --- ci/conda-recipe/meta.yaml | 2 +- contact_map/contact_count.py | 27 +++++++++++++++++++++++++++ requirements.txt | 2 +- setup.cfg | 2 +- 4 files changed, 30 insertions(+), 3 deletions(-) diff --git a/ci/conda-recipe/meta.yaml b/ci/conda-recipe/meta.yaml index 3f74281..bdc6572 100644 --- a/ci/conda-recipe/meta.yaml +++ b/ci/conda-recipe/meta.yaml @@ -20,7 +20,7 @@ requirements: - mdtraj - numpy - scipy - - pandas<1.0 + - pandas test: requires: diff --git a/contact_map/contact_count.py b/contact_map/contact_count.py index 550e076..033c7b3 100644 --- a/contact_map/contact_count.py +++ b/contact_map/contact_count.py @@ -25,6 +25,33 @@ def _colorbar(with_colorbar, cmap_f, norm, min_val): return cb +# TODO: remove following: this is a monkeypatch for a bug in pandas +# see: https://github.com/pandas-dev/pandas/issues/29814 +from pandas._libs.sparse import BlockIndex, IntIndex, SparseIndex +def _patch_from_spmatrix(cls, data): + length, ncol = data.shape + + if ncol != 1: + raise ValueError("'data' must have a single column, not '{}'".format(ncol)) + + # our sparse index classes require that the positions be strictly + # increasing. So we need to sort loc, and arr accordingly. + arr = data.data + #idx, _ = data.nonzero() + idx = data.indices + loc = np.argsort(idx) + arr = arr.take(loc) + idx.sort() + + zero = np.array(0, dtype=arr.dtype).item() + dtype = pd.SparseDtype(arr.dtype, zero) + index = IntIndex(length, idx) + + return cls._simple_new(arr, index, dtype) + +pd.core.arrays.SparseArray.from_spmatrix = classmethod(_patch_from_spmatrix) +# TODO: this is the end of what to remove when pandas is fixed + class ContactCount(object): """Return object when dealing with contacts (residue or atom). diff --git a/requirements.txt b/requirements.txt index 2bc28c8..6cd0d95 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ future numpy scipy -pandas<1.0 +pandas mdtraj diff --git a/setup.cfg b/setup.cfg index 199836f..63f45c5 100644 --- a/setup.cfg +++ b/setup.cfg @@ -26,7 +26,7 @@ install_requires = numpy mdtraj scipy - pandas<1.0 + pandas packages = find: [bdist_wheel] From 5b63aefdaabc57722150956c73ca70fbc79dd6e7 Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Thu, 13 Feb 2020 15:40:15 +0100 Subject: [PATCH 04/21] only monkey patch later versions of pandas --- contact_map/contact_count.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/contact_map/contact_count.py b/contact_map/contact_count.py index 033c7b3..a822328 100644 --- a/contact_map/contact_count.py +++ b/contact_map/contact_count.py @@ -49,7 +49,9 @@ def _patch_from_spmatrix(cls, data): return cls._simple_new(arr, index, dtype) -pd.core.arrays.SparseArray.from_spmatrix = classmethod(_patch_from_spmatrix) +_PD_VERSION = tuple(int(x) for x in pd.__version__.split('.')[:2]) +if _PD_VERSION >= (0, 25): + pd.core.arrays.SparseArray.from_spmatrix = classmethod(_patch_from_spmatrix) # TODO: this is the end of what to remove when pandas is fixed class ContactCount(object): From 0d3458d8236ec6efb44a8beba017b8fc12d6d99d Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Thu, 13 Feb 2020 16:01:46 +0100 Subject: [PATCH 05/21] more py27 alternate implementations --- contact_map/contact_count.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/contact_map/contact_count.py b/contact_map/contact_count.py index a822328..4e57732 100644 --- a/contact_map/contact_count.py +++ b/contact_map/contact_count.py @@ -13,6 +13,8 @@ else: HAS_MATPLOTLIB = True +# pandas 0.25 not available on py27; can drop this when we drop py27 +_PD_VERSION = tuple(int(x) for x in pd.__version__.split('.')[:2]) def _colorbar(with_colorbar, cmap_f, norm, min_val): if with_colorbar is False: @@ -49,7 +51,6 @@ def _patch_from_spmatrix(cls, data): return cls._simple_new(arr, index, dtype) -_PD_VERSION = tuple(int(x) for x in pd.__version__.split('.')[:2]) if _PD_VERSION >= (0, 25): pd.core.arrays.SparseArray.from_spmatrix = classmethod(_patch_from_spmatrix) # TODO: this is the end of what to remove when pandas is fixed @@ -124,10 +125,14 @@ def df(self): Rows/columns correspond to indices and the values correspond to the count """ - # mtx = self.sparse_matrix.tocoo() mtx = self.sparse_matrix index = list(range(self.n_x)) columns = list(range(self.n_y)) + + if _PD_VERSION < (0, 25): # py27 only + mtx = mtx.tocoo() + return pd.SparseDataFrame(mtx, index=index, columns=columns) + df = pd.DataFrame.sparse.from_spmatrix(mtx, index=index, columns=columns) # note: I think we can always use float here for dtype; but in @@ -135,7 +140,6 @@ def df(self): # Problem is, pandas technically stores a different dtype for each # column. df = df.astype(pd.SparseDtype("float", np.nan)) - # return pd.SparseDataFrame(mtx, index=index, columns=columns) return df def _check_number_of_pixels(self, figure): From 8ad7aa2132522d85a4fd51e14b076cee7f713d6b Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Thu, 13 Feb 2020 16:09:33 +0100 Subject: [PATCH 06/21] add testing path for py27 --- contact_map/tests/test_contact_count.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/contact_map/tests/test_contact_count.py b/contact_map/tests/test_contact_count.py index c85a14a..77f3a5d 100644 --- a/contact_map/tests/test_contact_count.py +++ b/contact_map/tests/test_contact_count.py @@ -89,9 +89,20 @@ def test_sparse_matrix(self): def test_df(self): atom_df = self.map.atom_contacts.df residue_df = self.map.residue_contacts.df + + # this block is for old pandas on py27 + pd_version = tuple(int(x) for x in pd.__version__.split('.')[:2]) + if pd_version < (0, 25): + assert isinstance(atom_df, pd.SparseDataFrame) + assert isinstance(residue_df, pd.SparseDataFrame) + assert_array_equal(atom_df.to_dense().values, + zero_to_nan(self.atom_matrix)) + assert_array_equal(residue_df.to_dense().values, + zero_to_nan(self.residue_matrix)) + return + assert isinstance(atom_df, pd.DataFrame) assert isinstance(residue_df, pd.DataFrame) - assert_array_equal(atom_df.sparse.to_dense().values, zero_to_nan(self.atom_matrix)) assert_array_equal(residue_df.sparse.to_dense().values, From 4b040aa522c22307120a011c14f5628069a37a3b Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Fri, 14 Feb 2020 11:44:02 +0100 Subject: [PATCH 07/21] try to switch to setuptools-based RTD install --- readthedocs.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/readthedocs.yml b/readthedocs.yml index dfbea26..c17a8f1 100644 --- a/readthedocs.yml +++ b/readthedocs.yml @@ -1,13 +1,13 @@ version: 2 -conda: - environment: docs/environment.yml +#conda: + #environment: docs/environment.yml python: install: - #- requirements: docs/rtd_requirements.txt + - requirements: docs/rtd_requirements.txt #- requirements: requirements.txt - #- requirements: docs/requirements.txt + - requirements: docs/requirements.txt - method: setuptools path: . #- method: pip From 06815abcd3218fa371eb602d127dfa8ef9d6da74 Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Fri, 14 Feb 2020 11:55:06 +0100 Subject: [PATCH 08/21] bump copyright year --- docs/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/conf.py b/docs/conf.py index 0edcb3c..89cddec 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -101,7 +101,7 @@ # General information about the project. project = u'Contact Map Explorer' -copyright = u'2017-2019, David W.H. Swenson and Sander Roet' +copyright = u'2017-2020, David W.H. Swenson and Sander Roet' author = u'David W.H. Swenson and Sander Roet' # The language for content autogenerated by Sphinx. Refer to documentation From 8419ef804a40b34659a2308ca2d9478865d84bd8 Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Tue, 30 Jun 2020 11:06:08 +0200 Subject: [PATCH 09/21] Test matrix: Drop Py27 and Win32; add Py38 --- .travis.yml | 6 ++++-- appveyor.yml | 13 +++++-------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/.travis.yml b/.travis.yml index e9ba691..0fab42e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,8 +2,8 @@ version: ~> 1.0 language: python python: + - '3.8' - '3.7' - - '2.7' - '3.6' notifications: @@ -17,7 +17,7 @@ branches: env: global: - - CANONICAL_PYTHON="3.7" + - CANONICAL_PYTHON="3.8" - CANONICAL_MDTRAJ="release" - CODECLIMATE="" - TWINE_USERNAME="dwhswenson" @@ -33,6 +33,8 @@ jobs: exclude: - env: MDTRAJ="dev" python: "3.6" + - env: MDTRAJ="dev" + python: "3.7" before_install: - echo "before install" diff --git a/appveyor.yml b/appveyor.yml index d2eda24..1f239b6 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -14,18 +14,15 @@ environment: PYTHONUNBUFFERED: 1 matrix: - - PYTHON: "C:\\Miniconda" - CONDA_PY: "27" - ARCH: '32' - - PYTHON: "C:\\Miniconda-x64" - CONDA_PY: "27" + - PYTHON: "C:\\Miniconda38-x64" + CONDA_PY: "38" ARCH: '64' - - PYTHON: "C:\\Miniconda36" - CONDA_PY: "36" # No MDTraj for py37/Win32 - ARCH: '32' - PYTHON: "C:\\Miniconda37-x64" CONDA_PY: "37" ARCH: '64' + - PYTHON: "C:\\Miniconda36-x64" + CONDA_PY: "36" + ARCH: '64' build: false From 7088d1d40ba7badee953d587e4a9aba73ab2a528 Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Tue, 30 Jun 2020 11:41:33 +0200 Subject: [PATCH 10/21] use most recent conda / conda-build in AppVeyor --- appveyor.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 1f239b6..34d4509 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -30,7 +30,8 @@ install: # install python - SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PATH% - conda config --add channels conda-forge - - conda install -yq conda=4.5 conda-build=3.10 + #- conda install -yq conda=4.5 conda-build=3.10 + - conda install -yq conda conda-build test_script: #- "%CMD_IN_ENV% activate base" From f8a1609b643422f3696b16050707b18cf60673f0 Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Tue, 30 Jun 2020 12:10:05 +0200 Subject: [PATCH 11/21] try adding condabin dir for AppVeyor --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 34d4509..8e03106 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -28,7 +28,7 @@ build: false install: # install python - - SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PATH% + - SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PYTHON\\condabin;%PATH% - conda config --add channels conda-forge #- conda install -yq conda=4.5 conda-build=3.10 - conda install -yq conda conda-build From 5547039c2f799e70dd5de05c744b34747dc80cff Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Tue, 30 Jun 2020 12:28:44 +0200 Subject: [PATCH 12/21] Another attempt with AppVeyor --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 8e03106..79ea3d9 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -28,7 +28,7 @@ build: false install: # install python - - SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PYTHON\\condabin;%PATH% + - SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PYTHON\\bin;%PATH\\Library\\bin;%PATH% - conda config --add channels conda-forge #- conda install -yq conda=4.5 conda-build=3.10 - conda install -yq conda conda-build From 652a41c60ccffd0f2148556e6dbf6bbc4a1c43b4 Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Tue, 30 Jun 2020 12:37:28 +0200 Subject: [PATCH 13/21] AppVeyor --- appveyor.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/appveyor.yml b/appveyor.yml index 79ea3d9..0a778b7 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -29,6 +29,7 @@ build: false install: # install python - SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PYTHON\\bin;%PATH\\Library\\bin;%PATH% + - call %PYTHON%\Scripts\activate.bat - conda config --add channels conda-forge #- conda install -yq conda=4.5 conda-build=3.10 - conda install -yq conda conda-build From 64ff50b019d55111b72dff0672f0a0522f673088 Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Tue, 30 Jun 2020 12:48:30 +0200 Subject: [PATCH 14/21] Disable AppVeyor/Python38 (no one else using?) --- appveyor.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 0a778b7..da6d8e0 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -14,9 +14,9 @@ environment: PYTHONUNBUFFERED: 1 matrix: - - PYTHON: "C:\\Miniconda38-x64" - CONDA_PY: "38" - ARCH: '64' + #- PYTHON: "C:\\Miniconda38-x64" + #CONDA_PY: "38" + #ARCH: '64' - PYTHON: "C:\\Miniconda37-x64" CONDA_PY: "37" ARCH: '64' @@ -29,7 +29,6 @@ build: false install: # install python - SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PYTHON\\bin;%PATH\\Library\\bin;%PATH% - - call %PYTHON%\Scripts\activate.bat - conda config --add channels conda-forge #- conda install -yq conda=4.5 conda-build=3.10 - conda install -yq conda conda-build From a8b12ac27a9abcd618db61b8b28379bafc802978 Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Thu, 2 Jul 2020 13:08:55 +0200 Subject: [PATCH 15/21] updates for Sander's review --- .travis.yml | 7 ++----- appveyor.yml | 6 +++--- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/.travis.yml b/.travis.yml index 0fab42e..5e42d84 100644 --- a/.travis.yml +++ b/.travis.yml @@ -27,14 +27,11 @@ env: - secure: "g+pFYJ62KN/gfnzrzQlfRTyDwvIpwQp4aQvwB4GVrWUISoOx3X8IlK5+S26Wb/BK4cCIGAKWs+dVgCr1Ag0v4TBhmi4CBlkZXQTNv3TcbGwyhmXYbO7kf03lpapsxKu5JkFlZqe0fniwocut6d2BiAuRQjvJ1B+xhEkl3t/ARarg0G/e+1geNyCopULD3tzcUDV4BFUw6cjfm4Sqn008m+7F8vgNOG+HitPtjggmZfFgoZVvS3nnZbFxGq99Uit8PST8Rdus3PJFNJlguf4XTpsdYZeW2CjFfd9P/v8hvfM3ATSCJ8Mzh8PuWJFP48Be6IvJAn6qhgJW7jSDK6bcCahS0BXBr0EqT9maC3jNXTQiem8WT990mUbK9tpbj6a9HPaD/E1XfmfC2he/EIRt/p14hNPB8rMIR0NRcA0Hy4mTn6AsfUgzwFSRZqjicvLlgwFokn32usZAkcNsW7KQE2+YVnUq6VYG/wpCd5w3x/4sws/HWTTR0Kg98pqt31s3oI0KCktFCuz2Ipxj4sNYJ8ExwqJ3v4zr0505YpYLnJCqy02nbwBcmHv8GrodmlGn2Y5Wid3BZrn5VYQIZVWVSVosfT7B5VpcFVdXRSY5VoKE8mTU7c98HmvASOygG6TZyQBkwXWsEBDoKMssK6QuCjaJpoQt1ZkvpMVsFzzoJkY=" matrix: - MDTRAJ="release" - - MDTRAJ="dev" jobs: - exclude: + include: - env: MDTRAJ="dev" - python: "3.6" - - env: MDTRAJ="dev" - python: "3.7" + python: "3.8" before_install: - echo "before install" diff --git a/appveyor.yml b/appveyor.yml index da6d8e0..9513a21 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -27,10 +27,10 @@ environment: build: false install: - # install python - - SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PYTHON\\bin;%PATH\\Library\\bin;%PATH% + # set up conda Python + - SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PATH% - conda config --add channels conda-forge - #- conda install -yq conda=4.5 conda-build=3.10 + # note: it may become necessary to pin versions of conda/conda-build - conda install -yq conda conda-build test_script: From 71a22613146f308f5492249743055d764cee7404 Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Thu, 2 Jul 2020 13:56:44 +0200 Subject: [PATCH 16/21] Switch travis back to excludes --- .travis.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 5e42d84..f600e90 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,13 +25,16 @@ env: - secure: "onsUSX6Yxt0HJApAsyUr5iFQW1ZngBiMxKmdiI5aN0TqnVSQ6819xx0YIxBjgburG/pFoW1F8bh8KYITV6TKK7RpcwdOspqpeO0X6L0DdBvNWQdl99QtJZcuMS3nPBiJ4guwrJCkQa/iKgZ7k27YukTw5pgKKDgC2d10P5SQiVFHNkX8lo4FzZIBnpA93Nq9G+j2pi14PpGtxaXhktqLOSvLvy/7BIWfzy69HDGjKZ38SMF4RFRnHiBI0G2uON6N5AuLovBWpRrmPmCTiX3p2lgxss8oUSKsA9OlikAoGlLyOjzMU2Fu3JqgoXPSyjDzkqO/Bavd1S03RYUeB5cRM9kBoORjCYl2dBCAmh7U41ZigvivYC2UZ/2p300f9YmolZ4vcj9tz4THXfF5/ZgIoARFIVk3fIQOHJCnXwa3gDcf0AEmsYOUOSKJKyYxruQhyjb2reFxUyA6bqtelV82qpMT53fSZ1/ZJjA+yJJgbeB9qkrMjvUf9AjlY8faqXyIafJsogFuvg1rg+FddMlc56zUWCEdc/pgbTesQuF8GCqje++7eaN68KiWBPwjDSX6cuNkeg86xx1E4VsRcXH6rQ9JXCsGs/HN4JRZ5J+ZH4YOHaUc5pTG82mTEZHGCjAN+BuhGfSFcgSoGO6oOHRGVjw47emOLvNpjS05B/zu/4c=" # AUTORELEASE_TOKEN - secure: "g+pFYJ62KN/gfnzrzQlfRTyDwvIpwQp4aQvwB4GVrWUISoOx3X8IlK5+S26Wb/BK4cCIGAKWs+dVgCr1Ag0v4TBhmi4CBlkZXQTNv3TcbGwyhmXYbO7kf03lpapsxKu5JkFlZqe0fniwocut6d2BiAuRQjvJ1B+xhEkl3t/ARarg0G/e+1geNyCopULD3tzcUDV4BFUw6cjfm4Sqn008m+7F8vgNOG+HitPtjggmZfFgoZVvS3nnZbFxGq99Uit8PST8Rdus3PJFNJlguf4XTpsdYZeW2CjFfd9P/v8hvfM3ATSCJ8Mzh8PuWJFP48Be6IvJAn6qhgJW7jSDK6bcCahS0BXBr0EqT9maC3jNXTQiem8WT990mUbK9tpbj6a9HPaD/E1XfmfC2he/EIRt/p14hNPB8rMIR0NRcA0Hy4mTn6AsfUgzwFSRZqjicvLlgwFokn32usZAkcNsW7KQE2+YVnUq6VYG/wpCd5w3x/4sws/HWTTR0Kg98pqt31s3oI0KCktFCuz2Ipxj4sNYJ8ExwqJ3v4zr0505YpYLnJCqy02nbwBcmHv8GrodmlGn2Y5Wid3BZrn5VYQIZVWVSVosfT7B5VpcFVdXRSY5VoKE8mTU7c98HmvASOygG6TZyQBkwXWsEBDoKMssK6QuCjaJpoQt1ZkvpMVsFzzoJkY=" - matrix: + jobs: - MDTRAJ="release" + - MDTRAJ="dev" jobs: - include: + exclude: - env: MDTRAJ="dev" - python: "3.8" + python: "3.6" + - env: MDTRAJ="dev" + python: "3.7" before_install: - echo "before install" From e5f023a5e77eac16192c51441a3c98fe094f8f80 Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Wed, 8 Jul 2020 14:14:57 +0200 Subject: [PATCH 17/21] Release 0.5.1 --- ci/conda-recipe/meta.yaml | 2 +- setup.cfg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ci/conda-recipe/meta.yaml b/ci/conda-recipe/meta.yaml index bdc6572..e5734db 100644 --- a/ci/conda-recipe/meta.yaml +++ b/ci/conda-recipe/meta.yaml @@ -1,7 +1,7 @@ package: name: contact_map # add ".dev0" for unreleased versions - version: "0.5.1.dev0" + version: "0.5.1" source: path: ../../ diff --git a/setup.cfg b/setup.cfg index 63f45c5..dfaa6e6 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = contact_map -version = 0.5.1.dev0 +version = 0.5.1 description = Contact maps based on MDTraj long_description = file: README.md long_description_content_type = text/markdown From b55e9e39b8c3ea9bff8122b92a4c753ab071c306 Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Wed, 8 Jul 2020 14:36:20 +0200 Subject: [PATCH 18/21] Try autorelease experimental stage ordering --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index f600e90..57ea6c9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -62,5 +62,5 @@ after_success: import: - - dwhswenson/autorelease:autorelease-travis.yml@v0.1.0 + - dwhswenson/autorelease:autorelease-travis.yml@stage_order From 3e69fd84c7437ddbb279d02da07aec6f47571d2b Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Wed, 8 Jul 2020 15:11:54 +0200 Subject: [PATCH 19/21] try stages in main travis? --- .travis.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.travis.yml b/.travis.yml index 57ea6c9..0034c8f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -60,6 +60,12 @@ after_success: - coveralls - python-codacy-coverage -r cov.xml +stages: + - test + - deploy_testpypi + - test_testpypi + - deploy_pypi + - cut_release import: - dwhswenson/autorelease:autorelease-travis.yml@stage_order From 58dd4e6da2b75cb1d5f393863b39c0a18f9856d6 Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Wed, 8 Jul 2020 15:51:34 +0200 Subject: [PATCH 20/21] remove stages from .travis.yml --- .travis.yml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index 0034c8f..a3fa441 100644 --- a/.travis.yml +++ b/.travis.yml @@ -60,13 +60,6 @@ after_success: - coveralls - python-codacy-coverage -r cov.xml -stages: - - test - - deploy_testpypi - - test_testpypi - - deploy_pypi - - cut_release - import: - dwhswenson/autorelease:autorelease-travis.yml@stage_order From 3545755f278a0e8c1b8f163b13ebba4d6e3a4913 Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Wed, 12 Aug 2020 08:14:55 +0200 Subject: [PATCH 21/21] Bump autorelease to 0.2.1 (fix stage ordering) --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index a3fa441..09680f5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -61,5 +61,5 @@ after_success: - python-codacy-coverage -r cov.xml import: - - dwhswenson/autorelease:autorelease-travis.yml@stage_order + - dwhswenson/autorelease:autorelease-travis.yml@v0.2.1