Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-asdf for openSUSE:Factory checked in at 2021-02-11 12:49:54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-asdf (Old) and /work/SRC/openSUSE:Factory/.python-asdf.new.28504 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-asdf" Thu Feb 11 12:49:54 2021 rev:10 rq:871173 version:2.7.2 Changes: -------- --- /work/SRC/openSUSE:Factory/python-asdf/python-asdf.changes 2020-12-09 22:21:45.339695722 +0100 +++ /work/SRC/openSUSE:Factory/.python-asdf.new.28504/python-asdf.changes 2021-02-11 12:53:04.197974948 +0100 @@ -1,0 +2,9 @@ +Thu Feb 11 10:18:50 UTC 2021 - Ben Greiner <c...@bnavigator.de> + +- Update to version 2.7.2 + * Fix bug causing test collection failures under Python 3.9. + * Fix bug when decompressing arrays with numpy 1.20. + * Replace assert statements with raise at the behest + of the bandit security linter. + +------------------------------------------------------------------- Old: ---- asdf-2.7.1.tar.gz New: ---- asdf-2.7.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-asdf.spec ++++++ --- /var/tmp/diff_new_pack.rsbq6r/_old 2021-02-11 12:53:04.697975637 +0100 +++ /var/tmp/diff_new_pack.rsbq6r/_new 2021-02-11 12:53:04.701975642 +0100 @@ -1,7 +1,7 @@ # # spec file for package python-asdf # -# Copyright (c) 2020 SUSE LLC +# Copyright (c) 2021 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -21,7 +21,7 @@ # current astropy in TW requires python >= 3.7 %define skip_python36 1 Name: python-asdf -Version: 2.7.1 +Version: 2.7.2 Release: 0 Summary: Python tools to handle ASDF files License: BSD-3-Clause AND BSD-2-Clause ++++++ asdf-2.7.1.tar.gz -> asdf-2.7.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/.github/workflows/asdf_ci.yml new/asdf-2.7.2/.github/workflows/asdf_ci.yml --- old/asdf-2.7.1/.github/workflows/asdf_ci.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/asdf-2.7.2/.github/workflows/asdf_ci.yml 2021-01-19 17:59:32.000000000 +0100 @@ -0,0 +1,141 @@ +name: ASDF CI + +on: + push: + branches: + - master + - stable + - '*.x' + tags: + - '*' + pull_request: + +jobs: + tox: + name: ${{ matrix.name }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + include: + - name: Code Coverage with Python 3.9 + os: ubuntu-latest + python-version: 3.9 + toxenv: coverage + + - name: Python 3.8 Testing + os: ubuntu-latest + python-version: 3.8 + toxenv: py38 + + - name: Python 3.7 Testing + os: ubuntu-latest + python-version: 3.7.9 + toxenv: py37 + + - name: Python 3.6 Testing + os: ubuntu-latest + python-version: 3.6.10 + toxenv: py36 + + - name: Python 3.5 Testing + os: ubuntu-latest + python-version: 3.5 + toxenv: py35 + + - name: Documentation Build + os: ubuntu-latest + python-version: 3.8 + toxenv: docbuild + + - name: Mac OS Latest + os: macos-latest + python-version: 3.9 + toxenv: py39 + + - name: Compatibility + os: ubuntu-latest + python-version: 3.9 + toxenv: compatibility + + - name: Bandit Security Checks + os: ubuntu-latest + python-version: 3.9 + toxenv: bandit + + - name: Code Style Checks + os: ubuntu-latest + python-version: 3.8 + toxenv: style + + - name: Twine + os: ubuntu-latest + python-version: 3.9 + toxenv: twine + + - name: Checkdocs + os: ubuntu-latest + python-version: 3.9 + toxenv: checkdocs + + - name: Numpy 1.12 + os: ubuntu-latest + python-version: 3.5.10 + toxenv: py35-numpy12 + + - name: Astropy Dev + os: ubuntu-latest + python-version: 3.8 + toxenv: py38-astropydev + + - name: GWCS Dev + os: ubuntu-latest + python-version: 3.8 + toxenv: py38-gwcsdev + + # Fail + - name: Numpy Dev + os: ubuntu-latest + python-version: 3.8 + toxenv: py38-numpydev + + # Fail + - name: Pre-Release Dependencies + os: ubuntu-latest + python-version: 3.8 + toxenv: prerelease + + - name: Test Against Installed Packaged + os: ubuntu-latest + python-version: 3.8 + toxenv: packaged + + - name: Warnings Treated as Exceptions + os: ubuntu-latest + python-version: 3.8 + toxenv: warnings + + - name: Windows + os: windows-latest + python-version: 3.9 + toxenv: py39 + steps: + - name: Install System Packages + if: ${{ contains(matrix.toxenv,'docbuild') }} + run: | + sudo apt-get install graphviz texlive-latex-extra dvipng + - name: Checkout code + uses: actions/checkout@v2 + with: + fetch-depth: 0 + submodules: true + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + - name: Install tox + run: | + pip install --upgrade pip setuptools + pip install tox + - name: Run tox + run: tox -e ${{ matrix.toxenv }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/.github/workflows/s390x.yml new/asdf-2.7.2/.github/workflows/s390x.yml --- old/asdf-2.7.1/.github/workflows/s390x.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/asdf-2.7.2/.github/workflows/s390x.yml 2021-01-19 17:59:32.000000000 +0100 @@ -0,0 +1,41 @@ +name: s390x + +on: + push: + tags: + - '*' + schedule: + # Run every Monday at 6am UTC + - cron: '0 6 * * 1' + +jobs: + pytest: + runs-on: ubuntu-18.04 + name: Python 3.7 + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + submodules: true + - uses: uraimo/run-on-arch-action@v2.0.5 + name: Run tests + id: build + with: + arch: s390x + distro: buster + shell: /bin/bash + install: | + apt-get update -q -y + apt-get install -q -y git \ + python3 \ + python3-astropy \ + python3-lz4 \ + python3-numpy \ + python3-venv \ + python3-wheel + run: | + python3 -m venv --system-site-packages tests + source tests/bin/activate + pip3 install --upgrade pip setuptools gwcs==0.9.1 pytest==5.4.3 pytest-doctestplus==0.8.0 + pip3 install .[all,tests] + python3 -m pytest --remote-data diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/.travis.yml new/asdf-2.7.2/.travis.yml --- old/asdf-2.7.1/.travis.yml 2020-08-18 23:20:31.000000000 +0200 +++ new/asdf-2.7.2/.travis.yml 2021-01-19 17:59:32.000000000 +0100 @@ -1,39 +1,53 @@ os: linux dist: xenial language: python -python: 3.8 +python: 3.8.6 jobs: include: + # Python 3.9, stable dependencies + - name: Python 3.9 + env: TOXENV=py39 + python: 3.9.0 + # Python 3.8, stable dependencies - - env: TOXENV=py38 + - name: Python 3.8 + env: TOXENV=py38 # Python 3.7, stable dependencies - - env: TOXENV=py37 - python: 3.7 + - name: Python 3.7 + env: TOXENV=py37 + python: 3.7.9 # Python 3.6, stable dependencies - - env: TOXENV=py36 - python: 3.6 + - name: Python 3.6 + env: TOXENV=py36 + python: 3.6.10 # Python 3.5, stable dependencies - - env: TOXENV=py35 - python: 3.5 + - name: Python 3.5 + env: TOXENV=py35 + python: 3.5.9 # Test ASDF file compatibility between library versions - - env: TOXENV=compatibility + - name: ASDF library version compatibility + env: TOXENV=compatibility # Do a coverage test - - env: TOXENV=coverage + - name: Coverage + env: TOXENV=coverage # Perform a sanity check of packaging using twine - - env: TOXENV=twine + - name: Twine + env: TOXENV=twine # Make sure README will display properly on pypi - - env: TOXENV=checkdocs + - name: Checkdocs + env: TOXENV=checkdocs # Check for sphinx doc build warnings - - env: TOXENV=docbuild + - name: Documentation build + env: TOXENV=docbuild addons: apt: packages: @@ -41,40 +55,51 @@ - texlive-latex-extra - dvipng - # Do a code style check - - env: TOXENV=style + - name: Code style check + env: TOXENV=style - # Check older numpy versions - - env: TOXENV=py35-numpy11 - python: 3.5 - - - env: TOXENV=py36-numpy12 - python: 3.6 - - # Test against oldest compatible versions of all dependencies - - env: TOXENV=py35-legacy - python: 3.5 + - name: Numpy 1.11 + env: TOXENV=py35-numpy11 + python: 3.5.9 + + - name: Security check + env: TOXENV=bandit + + - name: Numpy 1.12 + env: TOXENV=py36-numpy12 + python: 3.6.10 + + - name: Oldest dependency versions + env: TOXENV=py35-legacy + python: 3.5.9 # Test against development version of Astropy - - env: TOXENV=py38-astropydev + - name: Astropy dev + env: TOXENV=py38-astropydev # Test against development version of GWCS - - env: TOXENV=py38-gwcsdev + - name: gwcs dev + env: TOXENV=py38-gwcsdev # Test against development version of numpy (allowed failure) - - env: TOXENV=py38-numpydev + - name: Numpy dev + env: TOXENV=py38-numpydev # Test against prerelease versions of all dependencies (allowed failure) - - env: TOXENV=prerelease + - name: Pre-release dependencies + env: TOXENV=prerelease # Test against an installed asdf package - - env: TOXENV=packaged + - name: Test against installed package + env: TOXENV=packaged # Test with warnings converted to errors - - env: TOXENV=warnings + - name: Warnings treated as Exceptions + env: TOXENV=warnings # Test on OS X - - env: + - name: MacOS + env: - TOXENV=py38 - PATH=/usr/local/opt/python@3.8/bin:$PATH os: osx @@ -88,7 +113,8 @@ - pip3 install tox # Test on Windows - - env: + - name: Windows + env: - TOXENV=py38 - PATH=/c/Python38:/c/Python38/Scripts:$PATH os: windows @@ -97,18 +123,23 @@ - choco install python --version=3.8 # Test on big-endian platform - - env: TOXENV=s390x + - name: Big-endian platform + env: TOXENV=s390x arch: s390x allow_failures: - - env: TOXENV=prerelease + - name: Pre-release dependencies + env: TOXENV=prerelease - - env: TOXENV=py38-numpydev + - name: Numpy dev + env: TOXENV=py38-numpydev - - env: TOXENV=warnings + - name: Warnings treated as Exceptions + env: TOXENV=warnings # This build frequently fails due to timeout - - env: TOXENV=s390x + - name: Big-endian platform + env: TOXENV=s390x arch: s390x install: pip install tox diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/CHANGES.rst new/asdf-2.7.2/CHANGES.rst --- old/asdf-2.7.1/CHANGES.rst 2020-08-19 00:29:22.000000000 +0200 +++ new/asdf-2.7.2/CHANGES.rst 2021-01-19 17:59:32.000000000 +0100 @@ -1,3 +1,10 @@ +2.7.2 (2020-01-15) +------------------ + +- Fix bug causing test collection failures in some environments. [#889] + +- Fix bug when decompressing arrays with numpy 1.20. [#901, #909] + 2.7.1 (2020-08-18) ------------------ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/PKG-INFO new/asdf-2.7.2/PKG-INFO --- old/asdf-2.7.1/PKG-INFO 2020-08-19 00:30:16.000000000 +0200 +++ new/asdf-2.7.2/PKG-INFO 2021-01-19 18:00:11.000000000 +0100 @@ -1,11 +1,14 @@ Metadata-Version: 2.1 Name: asdf -Version: 2.7.1 +Version: 2.7.2 Summary: Python tools to handle ASDF files -Home-page: http://github.com/spacetelescope/asdf -Author: Erik Bray, Dan D'Avella, Michael Droettboom -Author-email: md...@stsci.edu -License: BSD +Home-page: http://github.com/asdf-format/asdf +Author: The ASDF Developers +Author-email: h...@stsci.edu +License: BSD-3-Clause +Project-URL: Bug Tracker, https://github.com/asdf-format/asdf/issues +Project-URL: Documentation, https://asdf.readthedocs.io/en/stable +Project-URL: Source Code, https://github.com/asdf-format/asdf Description: ASDF - Advanced Scientific Data Format ====================================== @@ -353,9 +356,11 @@ Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 Classifier: Development Status :: 5 - Production/Stable Requires-Python: >=3.5 Description-Content-Type: text/x-rst -Provides-Extra: all Provides-Extra: docs +Provides-Extra: all Provides-Extra: tests diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/asdf/block.py new/asdf-2.7.2/asdf/block.py --- old/asdf-2.7.1/asdf/block.py 2020-08-18 23:20:32.000000000 +0200 +++ new/asdf-2.7.2/asdf/block.py 2021-01-19 17:59:33.000000000 +0100 @@ -480,7 +480,9 @@ yaml_content = content[content.find(b'\n') + 1:] - offsets = yaml.load(yaml_content, + # The following call to yaml.load is safe because we're + # using pyyaml's SafeLoader. + offsets = yaml.load(yaml_content, # nosec Loader=yamlutil._yaml_base_loader) # Make sure the indices look sane @@ -912,7 +914,9 @@ self._checksum = checksum def _calculate_checksum(self, data): - m = hashlib.new('md5') + # The following line is safe because we're only using + # the MD5 as a checksum. + m = hashlib.new('md5') # nosec m.update(self.data.ravel('K')) return m.digest() @@ -1118,7 +1122,9 @@ allocated_size = self.allocated used_size = self._size self.input_compression = self.output_compression - assert allocated_size >= used_size + + if allocated_size < used_size: + raise RuntimeError("Block used size {} larger than allocated size {}".format(used_size, allocated_size)) if self.checksum is not None: checksum = self.checksum @@ -1156,7 +1162,8 @@ used_size=self._size) fd.seek(end) else: - assert used_size == data_size + if used_size != data_size: + raise RuntimeError("Block used size {} is not equal to the data size {}".format(used_size, data_size)) fd.write_array(self._data) @property diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/asdf/commands/diff.py new/asdf-2.7.2/asdf/commands/diff.py --- old/asdf-2.7.1/asdf/commands/diff.py 2020-08-18 23:20:32.000000000 +0200 +++ new/asdf-2.7.2/asdf/commands/diff.py 2021-01-19 17:59:33.000000000 +0100 @@ -103,7 +103,8 @@ return print_list def __setitem__(self, node_list, visit): - assert isinstance(node_list, list) + if not isinstance(node_list, list): + raise TypeError("node_list parameter must be an instance of list") current = self.__tree for node in ['tree'] + node_list: if not node in current['children']: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/asdf/commands/tests/test_defragment.py new/asdf-2.7.2/asdf/commands/tests/test_defragment.py --- old/asdf-2.7.1/asdf/commands/tests/test_defragment.py 2020-08-18 23:20:32.000000000 +0200 +++ new/asdf-2.7.2/asdf/commands/tests/test_defragment.py 2021-01-19 17:59:33.000000000 +0100 @@ -13,7 +13,7 @@ def _test_defragment(tmpdir, codec): - x = np.arange(0, 1000, dtype=np.float) + x = np.arange(0, 1000, dtype=float) tree = { 'science_data': x, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/asdf/commands/tests/test_exploded.py new/asdf-2.7.2/asdf/commands/tests/test_exploded.py --- old/asdf-2.7.1/asdf/commands/tests/test_exploded.py 2020-08-18 23:20:32.000000000 +0200 +++ new/asdf-2.7.2/asdf/commands/tests/test_exploded.py 2021-01-19 17:59:33.000000000 +0100 @@ -13,7 +13,7 @@ def test_explode_then_implode(tmpdir): - x = np.arange(0, 10, dtype=np.float) + x = np.arange(0, 10, dtype=float) tree = { 'science_data': x, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/asdf/commands/tests/test_to_yaml.py new/asdf-2.7.2/asdf/commands/tests/test_to_yaml.py --- old/asdf-2.7.1/asdf/commands/tests/test_to_yaml.py 2020-08-18 23:20:32.000000000 +0200 +++ new/asdf-2.7.2/asdf/commands/tests/test_to_yaml.py 2021-01-19 17:59:33.000000000 +0100 @@ -13,7 +13,7 @@ def test_to_yaml(tmpdir): - x = np.arange(0, 10, dtype=np.float) + x = np.arange(0, 10, dtype=float) tree = { 'science_data': x, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/asdf/compression.py new/asdf-2.7.2/asdf/compression.py --- old/asdf-2.7.1/asdf/compression.py 2020-08-18 23:20:32.000000000 +0200 +++ new/asdf-2.7.2/asdf/compression.py 2021-01-19 17:59:33.000000000 +0100 @@ -201,9 +201,11 @@ decoded = decoder.flush() if i + len(decoded) > data_size: raise ValueError("Decompressed data too long") - elif i + len(decoded) < data_size: - raise ValueError("Decompressed data too short") - buffer[i:i+len(decoded)] = decoded + buffer.data[i:i+len(decoded)] = decoded + i += len(decoded) + + if i < data_size: + raise ValueError("Decompressed data too short") return buffer diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/asdf/conftest.py new/asdf-2.7.2/asdf/conftest.py --- old/asdf-2.7.1/asdf/conftest.py 2020-08-18 23:20:32.000000000 +0200 +++ new/asdf-2.7.2/asdf/conftest.py 2021-01-19 17:59:33.000000000 +0100 @@ -8,7 +8,7 @@ import pytest -from .tests.httpserver import HTTPServer, RangeHTTPServer +from asdf.tests.httpserver import HTTPServer, RangeHTTPServer @pytest.fixture() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/asdf/fits_embed.py new/asdf-2.7.2/asdf/fits_embed.py --- old/asdf-2.7.1/asdf/fits_embed.py 2020-08-18 23:20:32.000000000 +0200 +++ new/asdf-2.7.2/asdf/fits_embed.py 2021-01-19 17:59:33.000000000 +0100 @@ -137,8 +137,8 @@ from astropy.io import fits hdulist = fits.HDUList() - hdulist.append(fits.ImageHDU(np.arange(512, dtype=np.float), name='SCI')) - hdulist.append(fits.ImageHDU(np.arange(512, dtype=np.float), name='DQ')) + hdulist.append(fits.ImageHDU(np.arange(512, dtype=float), name='SCI')) + hdulist.append(fits.ImageHDU(np.arange(512, dtype=float), name='DQ')) tree = { 'model': { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/asdf/resolver.py new/asdf-2.7.2/asdf/resolver.py --- old/asdf-2.7.1/asdf/resolver.py 2020-08-18 23:20:32.000000000 +0200 +++ new/asdf-2.7.2/asdf/resolver.py 2021-01-19 17:59:33.000000000 +0100 @@ -60,9 +60,11 @@ def add_mapping(self, mappings, prefix=''): # Deprecating this because Resolver is used as part of a dictionary key # and so shouldn't be mutable. - assert prefix == self._prefix - warnings.warn("The 'add_mapping' method is deprecated.", AsdfDeprecationWarning) + + if prefix != self._prefix: + raise ValueError("Prefix '{}' does not match the Resolver prefix '{}'".format(prefix, self._prefix)) + self._mappings = self._mappings + self._validate_mappings(mappings) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/asdf/schema.py new/asdf-2.7.2/asdf/schema.py --- old/asdf-2.7.1/asdf/schema.py 2020-08-18 23:20:32.000000000 +0200 +++ new/asdf-2.7.2/asdf/schema.py 2021-01-19 17:59:33.000000000 +0100 @@ -329,7 +329,9 @@ json_data = fd.read().decode('utf-8') result = json.loads(json_data, object_pairs_hook=OrderedDict) else: - result = yaml.load(fd, Loader=yamlutil.AsdfLoader) + # The following call to yaml.load is safe because we're + # using a loader that inherits from pyyaml's SafeLoader. + result = yaml.load(fd, Loader=yamlutil.AsdfLoader) # nosec return result, fd.uri diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/asdf/tags/core/integer.py new/asdf-2.7.2/asdf/tags/core/integer.py --- old/asdf-2.7.1/asdf/tags/core/integer.py 2020-08-18 23:20:32.000000000 +0200 +++ new/asdf-2.7.2/asdf/tags/core/integer.py 2021-01-19 17:59:33.000000000 +0100 @@ -51,7 +51,8 @@ _value_cache = dict() def __init__(self, value, storage_type='internal'): - assert storage_type in ['internal', 'inline'], "Invalid storage type given" + if storage_type not in ['internal', 'inline']: + raise ValueError("storage_type '{}' is not a recognized storage type".format(storage_type)) self._value = value self._sign = '-' if value < 0 else '+' self._storage = storage_type diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/asdf/tags/core/ndarray.py new/asdf-2.7.2/asdf/tags/core/ndarray.py --- old/asdf-2.7.1/asdf/tags/core/ndarray.py 2020-08-19 00:29:22.000000000 +0200 +++ new/asdf-2.7.2/asdf/tags/core/ndarray.py 2021-01-19 17:59:33.000000000 +0100 @@ -471,7 +471,9 @@ def _assert_equality(cls, old, new, func): if old.dtype.fields: if not new.dtype.fields: - assert False, "arrays not equal" + # This line is safe because this is actually a piece of test + # code, even though it lives in this file: + assert False, "arrays not equal" # nosec for a, b in zip(old, new): cls._assert_equality(a, b, func) else: @@ -484,7 +486,9 @@ new = new.astype('U') old = old.tolist() new = new.tolist() - assert old == new + # This line is safe because this is actually a piece of test + # code, even though it lives in this file: + assert old == new # nosec else: func(old, new) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/asdf/tags/core/tests/test_ndarray.py new/asdf-2.7.2/asdf/tags/core/tests/test_ndarray.py --- old/asdf-2.7.1/asdf/tags/core/tests/test_ndarray.py 2020-08-18 23:20:32.000000000 +0200 +++ new/asdf-2.7.2/asdf/tags/core/tests/test_ndarray.py 2021-01-19 17:59:33.000000000 +0100 @@ -60,7 +60,7 @@ def test_sharing(tmpdir): - x = np.arange(0, 10, dtype=np.float) + x = np.arange(0, 10, dtype=float) tree = { 'science_data': x, 'subset': x[3:-3], @@ -136,7 +136,7 @@ def test_dont_load_data(): - x = np.arange(0, 10, dtype=np.float) + x = np.arange(0, 10, dtype=float) tree = { 'science_data': x, 'subset': x[3:-3], @@ -269,7 +269,7 @@ def test_inline(): - x = np.arange(0, 10, dtype=np.float) + x = np.arange(0, 10, dtype=float) tree = { 'science_data': x, 'subset': x[3:-3], @@ -301,7 +301,7 @@ def test_mask_roundtrip(tmpdir): - x = np.arange(0, 10, dtype=np.float) + x = np.arange(0, 10, dtype=float) m = ma.array(x, mask=x > 5) tree = { 'masked_array': m, @@ -321,7 +321,7 @@ helpers.assert_roundtrip_tree(tree, tmpdir, asdf_check_func=check_asdf) def test_len_roundtrip(tmpdir): - sequence = np.arange(0, 10, dtype=np.int) + sequence = np.arange(0, 10, dtype=int) tree = { 'sequence': sequence } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/asdf/tests/__init__.py new/asdf-2.7.2/asdf/tests/__init__.py --- old/asdf-2.7.1/asdf/tests/__init__.py 2020-08-18 23:20:32.000000000 +0200 +++ new/asdf-2.7.2/asdf/tests/__init__.py 2021-01-19 17:59:33.000000000 +0100 @@ -26,7 +26,7 @@ def create_small_tree(): - x = np.arange(0, 10, dtype=np.float) + x = np.arange(0, 10, dtype=float) tree = { 'science_data': x, 'subset': x[3:-3], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/asdf/tests/helpers.py new/asdf-2.7.2/asdf/tests/helpers.py --- old/asdf-2.7.1/asdf/tests/helpers.py 2020-08-18 23:20:32.000000000 +0200 +++ new/asdf-2.7.2/asdf/tests/helpers.py 2021-01-19 17:59:33.000000000 +0100 @@ -2,9 +2,9 @@ import io import os -import sys import warnings from contextlib import contextmanager +from pathlib import Path try: from astropy.coordinates import ICRS @@ -43,30 +43,21 @@ INTERNET_OFF = False -if sys.version_info >= (3, 7): - from importlib import resources -else: - try: - import importlib_resources as resources - except ImportError: - resources = None - - __all__ = ['get_test_data_path', 'assert_tree_match', 'assert_roundtrip_tree', 'yaml_to_asdf', 'get_file_sizes', 'display_warnings'] def get_test_data_path(name, module=None): - if resources is None: - raise RuntimeError("The importlib_resources package is required to get" - " test data on systems with Python < 3.7") - if module is None: from . import data as test_data module = test_data - with resources.path(module, name) as path: - return str(path) + module_root = Path(module.__file__).parent + + if name is None or name == "": + return str(module_root) + else: + return str(module_root/name) def assert_tree_match(old_tree, new_tree, ctx=None, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/asdf/tests/test_api.py new/asdf-2.7.2/asdf/tests/test_api.py --- old/asdf-2.7.1/asdf/tests/test_api.py 2020-08-19 00:29:22.000000000 +0200 +++ new/asdf-2.7.2/asdf/tests/test_api.py 2021-01-19 17:59:33.000000000 +0100 @@ -2,7 +2,9 @@ import os import io +import getpass import pathlib +import sys import numpy as np from numpy.testing import assert_array_equal @@ -69,6 +71,10 @@ assert_tree_match(tree, af.tree) +@pytest.mark.skipif( + not sys.platform.startswith('win') and getpass.getuser() == 'root', + reason="Cannot make file read-only if user is root" +) def test_open_readonly(tmpdir): tmpfile = str(tmpdir.join('readonly.asdf')) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/asdf/tests/test_file_format.py new/asdf-2.7.2/asdf/tests/test_file_format.py --- old/asdf-2.7.1/asdf/tests/test_file_format.py 2020-08-18 23:20:32.000000000 +0200 +++ new/asdf-2.7.2/asdf/tests/test_file_format.py 2021-01-19 17:59:33.000000000 +0100 @@ -129,7 +129,8 @@ ff2.blocks.get_block(2) with pytest.raises(IOError): - ff2.blocks.get_block("http://127.0.0.1/") + # ff2.blocks.get_block("http://127.0.0.1/") + ff2.blocks.get_block("http://0.42.42.42/") with pytest.raises(TypeError): ff2.blocks.get_block(42.0) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/asdf/tests/test_fits_embed.py new/asdf-2.7.2/asdf/tests/test_fits_embed.py --- old/asdf-2.7.1/asdf/tests/test_fits_embed.py 2020-08-18 23:20:32.000000000 +0200 +++ new/asdf-2.7.2/asdf/tests/test_fits_embed.py 2021-01-19 17:59:33.000000000 +0100 @@ -435,9 +435,9 @@ # Create FITS file to use for test hdulist = fits.HDUList() - hdulist.append(fits.ImageHDU(np.arange(512, dtype=np.float))) - hdulist.append(fits.ImageHDU(np.arange(512, dtype=np.float))) - hdulist.append(fits.ImageHDU(np.arange(512, dtype=np.float))) + hdulist.append(fits.ImageHDU(np.arange(512, dtype=float))) + hdulist.append(fits.ImageHDU(np.arange(512, dtype=float))) + hdulist.append(fits.ImageHDU(np.arange(512, dtype=float))) hdulist.writeto(fits_filename) hdulist.close() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/asdf/tests/test_generic_io.py new/asdf-2.7.2/asdf/tests/test_generic_io.py --- old/asdf-2.7.1/asdf/tests/test_generic_io.py 2020-08-18 23:20:32.000000000 +0200 +++ new/asdf-2.7.2/asdf/tests/test_generic_io.py 2021-01-19 17:59:33.000000000 +0100 @@ -278,7 +278,8 @@ ff.tree['science_data'][0] == 42 -@pytest.mark.remote_data +#@pytest.mark.remote_data +@pytest.mark.skip(reason="The _roundtrip assert isn't well defined and returning different lengths in different environments.") def test_http_connection_range(tree, rhttpserver): path = os.path.join(rhttpserver.tmpdir, 'test.asdf') connection = [None] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/asdf/tests/test_reference.py new/asdf-2.7.2/asdf/tests/test_reference.py --- old/asdf-2.7.1/asdf/tests/test_reference.py 2020-08-18 23:20:32.000000000 +0200 +++ new/asdf-2.7.2/asdf/tests/test_reference.py 2021-01-19 17:59:33.000000000 +0100 @@ -21,13 +21,13 @@ def test_external_reference(tmpdir): exttree = { 'cool_stuff': { - 'a': np.array([0, 1, 2], np.float), - 'b': np.array([3, 4, 5], np.float) + 'a': np.array([0, 1, 2], float), + 'b': np.array([3, 4, 5], float) }, 'list_of_stuff': [ 'foobar', 42, - np.array([7, 8, 9], np.float) + np.array([7, 8, 9], float) ] } external_path = os.path.join(str(tmpdir), 'external.asdf') @@ -172,7 +172,7 @@ 'list_of_stuff': [ 'foobar', 42, - np.array([7, 8, 9], np.float) + np.array([7, 8, 9], float) ] } external_path = os.path.join(str(tmpdir), 'external.asdf') @@ -207,8 +207,8 @@ # Include some ~ and / in the name to make sure that escaping # is working correctly 'f~o~o/': { - 'a': np.array([0, 1, 2], np.float), - 'b': np.array([3, 4, 5], np.float) + 'a': np.array([0, 1, 2], float), + 'b': np.array([3, 4, 5], float) } } external_path = os.path.join(str(tmpdir), 'external.asdf') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/asdf/versioning.py new/asdf-2.7.2/asdf/versioning.py --- old/asdf-2.7.1/asdf/versioning.py 2020-08-18 23:20:32.000000000 +0200 +++ new/asdf-2.7.2/asdf/versioning.py 2021-01-19 17:59:33.000000000 +0100 @@ -51,7 +51,9 @@ '{url_suffix}', 'asdf/version_map-{0}'.format(version)) try: with generic_io.get_file(version_map_path, 'r') as fd: - version_map = yaml.load( + # The following call to yaml.load is safe because we're + # using a loader that inherits from pyyaml's SafeLoader. + version_map = yaml.load( # nosec fd, Loader=_yaml_base_loader) except Exception: raise ValueError( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/asdf/yamlutil.py new/asdf-2.7.2/asdf/yamlutil.py --- old/asdf-2.7.1/asdf/yamlutil.py 2020-08-18 23:20:32.000000000 +0200 +++ new/asdf-2.7.2/asdf/yamlutil.py 2021-01-19 17:59:33.000000000 +0100 @@ -304,7 +304,9 @@ stream : readable file-like object Stream containing the raw YAML content. """ - return yaml.load(stream, Loader=AsdfLoader) + # The following call to yaml.load is safe because we're + # using a loader that inherits from pyyaml's SafeLoader. + return yaml.load(stream, Loader=AsdfLoader) # nosec def dump_tree(tree, fd, ctx): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/asdf.egg-info/PKG-INFO new/asdf-2.7.2/asdf.egg-info/PKG-INFO --- old/asdf-2.7.1/asdf.egg-info/PKG-INFO 2020-08-19 00:30:15.000000000 +0200 +++ new/asdf-2.7.2/asdf.egg-info/PKG-INFO 2021-01-19 18:00:10.000000000 +0100 @@ -1,11 +1,14 @@ Metadata-Version: 2.1 Name: asdf -Version: 2.7.1 +Version: 2.7.2 Summary: Python tools to handle ASDF files -Home-page: http://github.com/spacetelescope/asdf -Author: Erik Bray, Dan D'Avella, Michael Droettboom -Author-email: md...@stsci.edu -License: BSD +Home-page: http://github.com/asdf-format/asdf +Author: The ASDF Developers +Author-email: h...@stsci.edu +License: BSD-3-Clause +Project-URL: Bug Tracker, https://github.com/asdf-format/asdf/issues +Project-URL: Documentation, https://asdf.readthedocs.io/en/stable +Project-URL: Source Code, https://github.com/asdf-format/asdf Description: ASDF - Advanced Scientific Data Format ====================================== @@ -353,9 +356,11 @@ Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 Classifier: Development Status :: 5 - Production/Stable Requires-Python: >=3.5 Description-Content-Type: text/x-rst -Provides-Extra: all Provides-Extra: docs +Provides-Extra: all Provides-Extra: tests diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/asdf.egg-info/SOURCES.txt new/asdf-2.7.2/asdf.egg-info/SOURCES.txt --- old/asdf-2.7.1/asdf.egg-info/SOURCES.txt 2020-08-19 00:30:15.000000000 +0200 +++ new/asdf-2.7.2/asdf.egg-info/SOURCES.txt 2021-01-19 18:00:10.000000000 +0100 @@ -12,6 +12,8 @@ setup.cfg setup.py tox.ini +.github/workflows/asdf_ci.yml +.github/workflows/s390x.yml asdf/__init__.py asdf/_convenience.py asdf/_display.py diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/conftest.py new/asdf-2.7.2/conftest.py --- old/asdf-2.7.1/conftest.py 2020-08-18 23:20:32.000000000 +0200 +++ new/asdf-2.7.2/conftest.py 2021-01-19 17:59:33.000000000 +0100 @@ -1,10 +1,4 @@ -# Licensed under a 3-clause BSD style license - see LICENSE.rst -# -*- coding: utf-8 -*- -import os - import pytest -from _pytest.doctest import DoctestItem - @pytest.fixture(autouse=True) def _docdir(request): @@ -12,19 +6,15 @@ Make sure that doctests run in a temporary directory so that any files that are created as part of the test get removed automatically. """ - - # Trigger ONLY for the doctests. - if isinstance(request.node, DoctestItem): - - # Get the fixture dynamically by its name. - tmpdir = request.getfixturevalue('tmpdir') - - # Chdir only for the duration of the test. - olddir = os.getcwd() - tmpdir.chdir() - yield - os.chdir(olddir) - - else: - # For normal tests, we have to yield, since this is a yield-fixture. + # Trigger ONLY for doctestplus. + try: + doctest_plugin = request.config.pluginmanager.getplugin("doctestplus") + if isinstance(request.node.parent, doctest_plugin._doctest_textfile_item_cls): + tmpdir = request.getfixturevalue('tmpdir') + with tmpdir.as_cwd(): + yield + else: + yield + # Handle case where doctestplus is not available + except AttributeError: yield diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/docs/asdf/changes.rst new/asdf-2.7.2/docs/asdf/changes.rst --- old/asdf-2.7.1/docs/asdf/changes.rst 2020-08-19 00:29:22.000000000 +0200 +++ new/asdf-2.7.2/docs/asdf/changes.rst 2021-01-19 17:59:33.000000000 +0100 @@ -4,6 +4,20 @@ Changes ******* +What's New in ASDF 2.7.2? +========================= + +The ASDF Standard is at v1.5.0. + +Changes include: + +* Fix bug causing test collection failures under Python 3.9. + +* Fix bug when decompressing arrays with numpy 1.20. + +* Replace ``assert`` statements with ``raise`` at the behest + of the bandit security linter. + What's New in ASDF 2.7.1? ========================= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/docs/asdf/extensions.rst new/asdf-2.7.2/docs/asdf/extensions.rst --- old/asdf-2.7.1/docs/asdf/extensions.rst 2020-08-18 23:20:32.000000000 +0200 +++ new/asdf-2.7.2/docs/asdf/extensions.rst 2021-01-19 17:59:33.000000000 +0100 @@ -721,7 +721,7 @@ All custom types to be serialized by ASDF require custom schemas. The best resource for creating ASDF schemas can be found in the `ASDF Standard -<http://asdf-standard.readthedocs.io/en/latest/extending.html>`_ documentation. +<https://asdf-standard.readthedocs.io/en/latest/schemas.html>`_ documentation. In most cases, ASDF schemas will be included as part of a packaged software distribution. In these cases, it is important for the diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/docs/asdf/features.rst new/asdf-2.7.2/docs/asdf/features.rst --- old/asdf-2.7.1/docs/asdf/features.rst 2020-08-18 23:20:32.000000000 +0200 +++ new/asdf-2.7.2/docs/asdf/features.rst 2021-01-19 17:59:33.000000000 +0100 @@ -434,8 +434,8 @@ from astropy.io import fits hdulist = fits.HDUList() - hdulist.append(fits.ImageHDU(np.arange(512, dtype=np.float), name='SCI')) - hdulist.append(fits.ImageHDU(np.arange(512, dtype=np.float), name='DQ')) + hdulist.append(fits.ImageHDU(np.arange(512, dtype=float), name='SCI')) + hdulist.append(fits.ImageHDU(np.arange(512, dtype=float), name='DQ')) Next we make a tree structure out of the data in the FITS file. Importantly, we use the *same* array references in the FITS `~astropy.io.fits.HDUList` and diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/setup.cfg new/asdf-2.7.2/setup.cfg --- old/asdf-2.7.1/setup.cfg 2020-08-19 00:30:16.000000000 +0200 +++ new/asdf-2.7.2/setup.cfg 2021-01-19 18:00:11.000000000 +0100 @@ -2,18 +2,23 @@ name = asdf description = Python tools to handle ASDF files long_description_content_type = text/x-rst -author = Erik Bray, Dan D'Avella, Michael Droettboom -author_email = md...@stsci.edu -license = BSD -url = http://github.com/spacetelescope/asdf -edit_on_github = False -github_project = spacetelescope/asdf +author = The ASDF Developers +author_email = h...@stsci.edu +license = BSD-3-Clause +license_file = licenses/LICENSE.rst +url = http://github.com/asdf-format/asdf +project_urls = + Bug Tracker = https://github.com/asdf-format/asdf/issues + Documentation = https://asdf.readthedocs.io/en/stable + Source Code = https://github.com/asdf-format/asdf classifiers = Programming Language :: Python Programming Language :: Python :: 3 Programming Language :: Python :: 3.5 Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 + Programming Language :: Python :: 3.8 + Programming Language :: Python :: 3.9 Development Status :: 5 - Production/Stable [options] @@ -45,6 +50,8 @@ matplotlib docutils tests = + # As of 2020-07-28, pytest-doctestplus is not compatible + # with pytest 6.0.0. pytest<6 astropy gwcs @@ -75,7 +82,7 @@ [tool:pytest] testpaths = asdf docs asdf-standard/schemas -minversion = 3.1 +minversion = 4.6 norecursedirs = build docs/_build docs/sphinxext doctest_plus = enabled remote_data_strict = True diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/asdf-2.7.1/tox.ini new/asdf-2.7.2/tox.ini --- old/asdf-2.7.1/tox.ini 2020-08-18 23:20:32.000000000 +0200 +++ new/asdf-2.7.2/tox.ini 2021-01-19 17:59:33.000000000 +0100 @@ -7,9 +7,9 @@ pytest-sugar pytest-faulthandler pytest-openfiles>=0.3.2 - astropydev: git+git://github.com/astropy/astropy - gwcsdev: git+git://github.com/spacetelescope/gwcs - numpydev: git+git://github.com/numpy/numpy + astropydev: git+https://github.com/astropy/astropy + gwcsdev: git+https://github.com/spacetelescope/gwcs + numpydev: git+https://github.com/numpy/numpy py35,py36: importlib_resources # Newer versions of gwcs require astropy 4.x, which # isn't compatible with the older versions of numpy @@ -36,16 +36,13 @@ install_command= python -m pip install --no-cache-dir {opts} {packages} [testenv:prerelease] -basepython= python3.8 pip_pre= true [testenv:warnings] -basepython= python3.8 commands= pytest --remote-data -W error -W ignore::asdf.exceptions.AsdfDeprecationWarning:asdf.asdftypes [testenv:packaged] -basepython= python3.8 # The default tox working directory is in .tox in the source directory. If we # execute pytest from there, it will discover tox.ini in the source directory # and load the asdf module from the unpackaged sourcee, which is not what we @@ -67,13 +64,11 @@ twine check {distdir}/* [testenv:docbuild] -basepython= python3.8 extras= docs commands= sphinx-build -W docs build/docs [testenv:checkdocs] -basepython= python3.8 deps= collective.checkdocs pygments @@ -81,14 +76,12 @@ python setup.py checkdocs [testenv:style] -basepython= python3.8 deps= flake8 commands= flake8 --count [testenv:coverage] -basepython= python3.8 deps= gwcs pytest<5.1 @@ -104,9 +97,14 @@ passenv= TOXENV CI TRAVIS TRAVIS_* CODECOV_* DISPLAY [testenv:compatibility] -basepython= python3.8 deps= virtualenv extras= all,tests commands= pytest compatibility_tests/ --remote-data + +[testenv:bandit] +deps= + bandit +commands= + bandit -r -x asdf/tests,asdf/commands/tests,asdf/tags/core/tests,asdf/extern asdf