python-astropy (1.3-8) unstable; urgency=medium
authorOle Streicher <olebole@debian.org>
Wed, 25 Jan 2017 15:17:26 +0000 (15:17 +0000)
committerOle Streicher <olebole@debian.org>
Wed, 25 Jan 2017 15:17:26 +0000 (15:17 +0000)
  * Switch to unstable. Closes: #852550
  * Revert unrelated "Improved detection of ascii fast_reader in non-fast
    parsers"

[dgit import unpatched python-astropy 1.3-8]

41 files changed:
1  2 
debian/astropy-utils.install
debian/astropy-utils.manpages
debian/changelog
debian/clean
debian/compat
debian/control
debian/copyright
debian/fits2bitmap.1
debian/fitscheck.1
debian/fitsdiff.1
debian/fitsheader.1
debian/fitsinfo.1
debian/patches/Allow-pytest-3.x-to-use-plugin-for-doctests-in-.rst-files.patch
debian/patches/Ensure-NUMPY_LT_1_12-works-for-beta-prerelease.patch
debian/patches/Fix-default-value-for-remote_data-option.patch
debian/patches/Use-parametrize-instead-of-yield.patch
debian/patches/disable_helper.patch
debian/patches/external_python_pkgs.patch
debian/patches/fix_for_cfitsio_3380.patch
debian/patches/mark_known_failures.patch
debian/patches/only_python3-binaries.patch
debian/patches/series
debian/python-astropy-doc.doc-base
debian/python-astropy-doc.docs
debian/python-astropy-doc.lintian-overrides
debian/python-astropy.install
debian/python-astropy.lintian-overrides
debian/python3-astropy.install
debian/python3-astropy.lintian-overrides
debian/rules
debian/samp_hub.1
debian/source/format
debian/source/lintian-overrides
debian/tests/control
debian/tests/python-astropy
debian/tests/python3-astropy
debian/upstream/metadata
debian/upstream/signing-key.asc
debian/volint.1
debian/watch
debian/wcslint.1

index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e77248175524d9f63749c2d6ca67159eeb4aa635
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++usr/bin
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..6a3e46c521416eda427ec5e1e7db8afc267871fb
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,8 @@@
++debian/fits2bitmap.1
++debian/fitscheck.1
++debian/fitsdiff.1
++debian/fitsheader.1
++debian/fitsinfo.1
++debian/samp_hub.1
++debian/volint.1
++debian/wcslint.1
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..51dee528fcc98b3de8fa68081baa8da97cffff27
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,516 @@@
++python-astropy (1.3-8) unstable; urgency=medium
++
++  * Switch to unstable. Closes: #852550
++  * Revert unrelated "Improved detection of ascii fast_reader in non-fast
++    parsers"
++
++ -- Ole Streicher <olebole@debian.org>  Wed, 25 Jan 2017 16:17:26 +0100
++
++python-astropy (1.3-8~exp2) experimental; urgency=medium
++
++  * Fix pytest section, finally re-enabling doctests
++
++ -- Ole Streicher <olebole@debian.org>  Thu, 19 Jan 2017 17:27:30 +0100
++
++python-astropy (1.3-8~exp1) experimental; urgency=medium
++
++  * Switch to experimental for some tests
++  * Try to fix doctest failures
++  * Improved detection of ascii fast_reader in non-fast parsers
++
++ -- Ole Streicher <olebole@debian.org>  Thu, 19 Jan 2017 09:57:22 +0100
++
++python-astropy (1.3-7) unstable; urgency=medium
++
++  * Allow stderr in all tests
++
++ -- Ole Streicher <olebole@debian.org>  Sun, 15 Jan 2017 14:35:17 +0100
++
++python-astropy (1.3-6) unstable; urgency=medium
++
++  * Override missing-build-dependency-for-dh_-command
++  * Add python-astropy-affiliated to suggestions
++  * Add pytest to package dependencies
++  * Fix default value for remote_data option. Closes: #849501
++  * Remove wcslib 4.24 compatibility property. Closes: #844525
++
++ -- Ole Streicher <olebole@debian.org>  Sat, 14 Jan 2017 11:28:01 +0100
++
++python-astropy (1.3-5) unstable; urgency=medium
++
++  * Manually add dependencies for external packages
++
++ -- Ole Streicher <olebole@debian.org>  Thu, 12 Jan 2017 22:51:46 +0100
++
++python-astropy (1.3-4) unstable; urgency=medium
++
++  * Mark doc package as Multi-Arch: foreign as suggested by Multiarch hinter
++  * Remove wcsaxes suggestions since this is now part of astropy
++  * Use external modules instead of convenience copies. Closes: #849502
++  * Temporarily disable doctests (not working with pytest 3.0.5)
++  * Remove explicite dh_strip_nondeterminism
++
++ -- Ole Streicher <olebole@debian.org>  Thu, 12 Jan 2017 12:17:23 +0100
++
++python-astropy (1.3-3) unstable; urgency=medium
++
++  * Ensure NUMPY_LT_1_12 works for beta prerelease. Closes: #849271
++
++ -- Ole Streicher <olebole@debian.org>  Thu, 29 Dec 2016 09:52:44 +0100
++
++python-astropy (1.3-2) unstable; urgency=low
++
++  * Disable TestDisplayWorldCoordinate.test_cube_coords to fix FTBFS on MIPS
++
++ -- Ole Streicher <olebole@debian.org>  Fri, 23 Dec 2016 17:58:24 +0100
++
++python-astropy (1.3-1) unstable; urgency=low
++
++  * New upstream version 1.3
++  * Switch back to unstable
++  * Rediff patches
++
++ -- Ole Streicher <olebole@debian.org>  Fri, 23 Dec 2016 15:13:46 +0100
++
++python-astropy (1.3~rc1-1) experimental; urgency=low
++
++  * Add python3-pkg-resources to astropy-tools dependencies. Closes: #839746
++  * Disable failing VO SSL test to avoid FTBFS with recent Python release.
++    Closes: #844984
++  * New upstream version 1.3~rc1
++  * Rediff patches
++  * Re-enable WCS.all_world2pix test (should be fixed now)
++
++ -- Ole Streicher <olebole@debian.org>  Tue, 13 Dec 2016 09:44:29 +0100
++
++python-astropy (1.2.1-1) unstable; urgency=low
++
++  * New upstream version
++
++ -- Ole Streicher <olebole@debian.org>  Thu, 23 Jun 2016 09:48:06 +0200
++
++python-astropy (1.2-1) unstable; urgency=low
++
++  * New upstream version. Switch back to unstable
++
++ -- Ole Streicher <olebole@debian.org>  Mon, 20 Jun 2016 15:10:14 +0200
++
++python-astropy (1.2~rc1-3) experimental; urgency=low
++
++  * Re-enable unfixed yet tests
++
++ -- Ole Streicher <olebole@debian.org>  Thu, 16 Jun 2016 14:06:19 +0200
++
++python-astropy (1.2~rc1-2) experimental; urgency=low
++
++  * Temporarily disable all xfail marks
++
++ -- Ole Streicher <olebole@debian.org>  Tue, 14 Jun 2016 21:32:33 +0200
++
++python-astropy (1.2~rc1-1) experimental; urgency=low
++
++  * New upstream RC. Switch to experimental
++  * Install Python 3 versions of the scripts
++  * Push Standards-Version to 3.9.8. No changes needed
++
++ -- Ole Streicher <olebole@debian.org>  Sun, 12 Jun 2016 10:32:16 +0200
++
++python-astropy (1.1.2-1) unstable; urgency=low
++
++  * Add ASCL-Id
++  * New upstream version
++  * Fix cfitsio related tests. Closes: #816715
++
++ -- Ole Streicher <olebole@debian.org>  Fri, 11 Mar 2016 10:54:46 +0100
++
++python-astropy (1.1.1-3) unstable; urgency=medium
++
++  * Fix for newer pytest. Closes: #812648
++  * Fix for wcslib 5.13
++  * Fix for known test issue with new numpy
++  * Push standards-version to 3.9.7. No changes needed.
++  * Adjust VCS entries in d/control
++
++ -- Ole Streicher <olebole@debian.org>  Sun, 14 Feb 2016 15:09:01 +0100
++
++python-astropy (1.1.1-2) unstable; urgency=low
++
++  * Fix dependency of python-astropy-utils on python-astropy
++  * Finally fix test failure
++  * Switch back to unstable since bugfix is approved upstream
++
++ -- Ole Streicher <olebole@debian.org>  Thu, 14 Jan 2016 23:06:52 +0100
++
++python-astropy (1.1.1-1~exp1) experimental; urgency=low
++
++  * New upstream version
++  * Depend python-astropy-utils on python-astropy of the same version.
++    Closes: #807834
++  * Revert astropy.wcs to 1.1 to workaround test failure
++  * Switch to experimental since WCS seems to be buggy
++
++ -- Ole Streicher <olebole@debian.org>  Thu, 14 Jan 2016 11:14:05 +0100
++
++python-astropy (1.1-1) unstable; urgency=low
++
++  * New upstream version
++  * Switch back to unstable
++
++ -- Ole Streicher <olebole@debian.org>  Sat, 12 Dec 2015 10:02:22 +0100
++
++python-astropy (1.1~rc2-1) experimental; urgency=low
++
++  * New upstream RC version
++
++ -- Ole Streicher <olebole@debian.org>  Tue, 08 Dec 2015 09:29:29 +0100
++
++python-astropy (1.1~rc1-1) experimental; urgency=low
++
++  * New upstream RC version
++
++ -- Ole Streicher <olebole@debian.org>  Tue, 24 Nov 2015 21:09:40 +0100
++
++python-astropy (1.1~b1-1) experimental; urgency=low
++
++  * New upstream beta version
++  * [Martin Pitt] Ignore stderr for python3 test to avoid failing on
++    the ResourceWarning stderr message. Closes: #803068
++
++ -- Ole Streicher <olebole@debian.org>  Fri, 16 Oct 2015 08:58:30 +0200
++
++python-astropy (1.0.5-2) unstable; urgency=low
++
++  * Fix FTBS on i386
++
++ -- Ole Streicher <olebole@debian.org>  Thu, 08 Oct 2015 15:44:51 +0200
++
++python-astropy (1.0.5-1) unstable; urgency=low
++
++  * New upstream version, providing Python-3.5 compatibility. Closes: #800727
++  * Limit wcslib-dev version to pre-5 releases
++
++ -- Ole Streicher <olebole@debian.org>  Tue, 06 Oct 2015 13:26:14 +0200
++
++python-astropy (1.0.4-1) unstable; urgency=low
++
++  * New upstream version
++  * Re-enable dh_strip_nondeterminism override. See #791574 for details.
++
++ -- Ole Streicher <olebole@debian.org>  Thu, 27 Aug 2015 10:32:44 +0200
++
++python-astropy (1.0.3-3) unstable; urgency=low
++
++  * Extend Suggests, and build/test-depend on scipy for more extended tests
++  * Fix conflicts/replaces of astropy-utils with pyfits-utils. Closes: #790530
++  * Temporarily remove dh_strip_nondeterminism
++  * Override image-file-in-usr-lib lintian
++
++ -- Ole Streicher <olebole@debian.org>  Thu, 16 Jul 2015 10:46:32 +0200
++
++python-astropy (1.0.3-2) unstable; urgency=low
++
++  * Fix FTBS with hurd-i386
++
++ -- Ole Streicher <olebole@debian.org>  Wed, 24 Jun 2015 10:38:18 +0200
++
++python-astropy (1.0.3-1) unstable; urgency=low
++
++  * New upstream version
++
++ -- Ole Streicher <olebole@debian.org>  Sun, 07 Jun 2015 17:55:56 +0200
++
++python-astropy (1.0.2-1) unstable; urgency=low
++
++  * New upstream version.
++  * Create upstream/metadata with bibliographic information
++  * Create debci control file
++  * New binary package astropy-utils. Conflicts with pyfits-utils.
++  * Package png files as well. Closes: #783573
++  * switch back to unstable
++
++ -- Ole Streicher <olebole@debian.org>  Thu, 16 Apr 2015 22:15:02 +0200
++
++python-astropy (1.0-1~exp) experimental; urgency=low
++
++  * New upstream version.
++
++ -- Ole Streicher <olebole@debian.org>  Thu, 19 Feb 2015 09:09:44 +0100
++
++python-astropy (1.0~rc2-1) experimental; urgency=medium
++
++  * New upstream release candidate
++
++ -- Ole Streicher <olebole@debian.org>  Thu, 12 Feb 2015 09:26:56 +0100
++
++python-astropy (1.0~rc1-3) experimental; urgency=low
++
++  * Fix last FTBS on Hurd
++
++ -- Ole Streicher <olebole@debian.org>  Thu, 05 Feb 2015 21:41:57 +0100
++
++python-astropy (1.0~rc1-2) experimental; urgency=low
++
++  * Fix FTBS on several platforms
++  * Disable failing tests (temporartily)
++
++ -- Ole Streicher <olebole@debian.org>  Sun, 01 Feb 2015 11:13:52 +0100
++
++python-astropy (1.0~rc1-1) experimental; urgency=low
++
++  * New upstream release candidate
++
++ -- Ole Streicher <olebole@debian.org>  Wed, 28 Jan 2015 09:17:42 +0100
++
++python-astropy (0.4.2-2) unstable; urgency=medium
++
++  * Don't set defalt SSL protocol in vo/samp/client.py. Closes: #775780
++
++ -- Ole Streicher <olebole@debian.org>  Mon, 19 Jan 2015 21:07:18 +0100
++
++python-astropy (0.4.2-1) unstable; urgency=low
++
++  * New upstream release.
++  * Build-depend on libcfitsio-dev instead of libcfitsio3-dev. Closes: #761716
++  * Upgrade to Standards-Version 3.9.6 (no changes needed)
++
++ -- Ole Streicher <olebole@debian.org>  Wed, 24 Sep 2014 14:49:35 +0200
++
++python-astropy (0.4.1+dfsg2-1) unstable; urgency=low
++
++  * Remove astropy-helper and use external dependency. Closes: #761055
++  * Support numpy 1.9. Closes: #761392
++  * Update uploaders email address
++
++ -- Ole Streicher <olebole@debian.org>  Sun, 14 Sep 2014 13:50:29 +0200
++
++python-astropy (0.4.1+dfsg-1) unstable; urgency=low
++
++  * New upstream version
++  * Exclude precompiled files from source tarball
++
++ -- Ole Streicher <debian@liska.ath.cx>  Sun, 10 Aug 2014 10:22:07 +0200
++
++python-astropy (0.4-4) unstable; urgency=low
++
++  * build-depend on wcslib >= 4.23. Closes: #755485
++
++ -- Ole Streicher <debian@liska.ath.cx>  Tue, 22 Jul 2014 17:22:16 +0200
++
++python-astropy (0.4-3) unstable; urgency=low
++
++  * Revert build-depends-indep since it does not work yet.
++
++ -- Ole Streicher <debian@liska.ath.cx>  Fri, 18 Jul 2014 16:50:55 +0200
++
++python-astropy (0.4-2) unstable; urgency=low
++
++  * Fix locale on build
++
++ -- Ole Streicher <debian@liska.ath.cx>  Fri, 18 Jul 2014 09:16:16 +0200
++
++python-astropy (0.4-1) unstable; urgency=low
++
++  * New upstream version
++
++ -- Ole Streicher <debian@liska.ath.cx>  Wed, 16 Jul 2014 20:21:39 +0200
++
++python-astropy (0.4~rc2-3) experimental; urgency=low
++
++  * Convert from python-support to dh_python
++
++ -- Ole Streicher <debian@liska.ath.cx>  Mon, 14 Jul 2014 09:46:47 +0200
++
++python-astropy (0.4~rc2-2) experimental; urgency=low
++
++  * Fix FTBS on powerpc, s390
++
++ -- Ole Streicher <debian@liska.ath.cx>  Sun, 13 Jul 2014 18:56:28 +0200
++
++python-astropy (0.4~rc2-1) experimental; urgency=low
++
++  * New upstream prerelease
++
++ -- Ole Streicher <debian@liska.ath.cx>  Sat, 12 Jul 2014 18:51:26 +0200
++
++python-astropy (0.4~rc1-2) experimental; urgency=low
++
++  * Fix FTBS on powerpc and s390x
++
++ -- Ole Streicher <debian@liska.ath.cx>  Wed, 09 Jul 2014 13:16:06 +0200
++
++python-astropy (0.4~rc1-1) experimental; urgency=low
++
++  * New upstream prerelease
++  * Adjust watch file for prerelease
++
++ -- Ole Streicher <debian@liska.ath.cx>  Mon, 07 Jul 2014 16:07:05 +0200
++
++python-astropy (0.3.2-3) unstable; urgency=low
++
++  * Fix checksum calculation and test on 32-bit
++
++ -- Ole Streicher <debian@liska.ath.cx>  Sat, 17 May 2014 17:05:58 +0200
++
++python-astropy (0.3.2-2) unstable; urgency=low
++
++  * Mark known failures as xfail.
++  * Change maintainer and VCS location to debian-astro
++
++ -- Ole Streicher <debian@liska.ath.cx>  Wed, 14 May 2014 14:47:35 +0200
++
++python-astropy (0.3.2-1) unstable; urgency=low
++
++  * New upstream version. Closes: #743554
++  * Don't repack since all sources are included now
++
++ -- Ole Streicher <debian@liska.ath.cx>  Wed, 14 May 2014 09:21:18 +0200
++
++python-astropy (0.3.1+dfsg-1) unstable; urgency=low
++
++  * New upstream version
++
++ -- Ole Streicher <debian@liska.ath.cx>  Thu, 06 Mar 2014 11:40:55 +0100
++
++python-astropy (0.3+dfsg-3) unstable; urgency=low
++
++  * Re-integrate 0.3-6 fixes which were left out by another mistake :-)
++
++ -- Ole Streicher <debian@liska.ath.cx>  Fri, 24 Jan 2014 11:31:26 +0100
++
++python-astropy (0.3+dfsg-2) unstable; urgency=low
++
++  * Re-integrate 0.3-5 fixes which were left out by mistake
++
++ -- Ole Streicher <debian@liska.ath.cx>  Fri, 24 Jan 2014 11:11:46 +0100
++
++python-astropy (0.3+dfsg-1) unstable; urgency=low
++
++  * Remove sourceless files jqery*.js. Closes: #735770
++
++ -- Ole Streicher <debian@liska.ath.cx>  Fri, 24 Jan 2014 09:43:27 +0100
++
++python-astropy (0.3-6) unstable; urgency=low
++
++  * Fix another FTBS causes on python-3.4.
++
++ -- Ole Streicher <debian@liska.ath.cx>  Thu, 16 Jan 2014 16:27:55 +0100
++
++python-astropy (0.3-5) unstable; urgency=low
++
++  * Include upstream fixes to build on python-3.4. Closes: #734293
++  * Upgrade to Standards-Version 3.9.5 (no changes needed)
++
++ -- Ole Streicher <debian@liska.ath.cx>  Wed, 15 Jan 2014 09:57:05 +0100
++
++python-astropy (0.3-4) unstable; urgency=low
++
++  * Mark known s390 failures as xfail.
++
++ -- Ole Streicher <debian@liska.ath.cx>  Fri, 20 Dec 2013 10:43:16 +0100
++
++python-astropy (0.3-3) unstable; urgency=low
++
++  * Fix vo_test.py for big endian.
++
++ -- Ole Streicher <debian@liska.ath.cx>  Tue, 10 Dec 2013 11:23:38 +0100
++
++python-astropy (0.3-2) unstable; urgency=low
++
++  * Fix doctest and mark other known test failures on big endian until
++    they get fixed upstream.
++
++ -- Ole Streicher <debian@liska.ath.cx>  Mon, 09 Dec 2013 14:23:04 +0100
++
++python-astropy (0.3-1) unstable; urgency=low
++
++  * New upstream version.
++  * Remove legacy packages that are no longer supported upstream.
++
++ -- Ole Streicher <debian@liska.ath.cx>  Sat, 30 Nov 2013 12:56:34 +0100
++
++python-astropy (0.2.5-1) unstable; urgency=low
++
++  * New upstream version.
++
++ -- Ole Streicher <debian@liska.ath.cx>  Sun, 27 Oct 2013 18:29:01 +0100
++
++python-astropy (0.2.4-3) unstable; urgency=low
++
++  * Fix "Conflicts" of python3-astropy-legacy. Closes: #719770
++
++ -- Ole Streicher <debian@liska.ath.cx>  Thu, 15 Aug 2013 14:33:37 +0200
++
++python-astropy (0.2.4-2) unstable; urgency=low
++
++  * Enable python3 packages
++
++ -- Ole Streicher <debian@liska.ath.cx>  Mon, 05 Aug 2013 21:04:23 +0200
++
++python-astropy (0.2.4-1) unstable; urgency=low
++
++  * New upstream version.
++
++ -- Ole Streicher <debian@liska.ath.cx>  Fri, 26 Jul 2013 17:41:26 +0200
++
++python-astropy (0.2.3-2~1) experimental; urgency=low
++
++  * Fix FTBS on MIPS and MIPSEL
++
++ -- Ole Streicher <debian@liska.ath.cx>  Fri, 21 Jun 2013 16:31:15 +0200
++
++python-astropy (0.2.3-1) unstable; urgency=low
++
++  * New upstream version; incorporates all previous patches
++
++ -- Ole Streicher <debian@liska.ath.cx>  Fri, 07 Jun 2013 14:40:05 +0200
++
++python-astropy (0.2.1-1) unstable; urgency=low
++
++  * Fix FTBS (unit test failure) on HURD
++  * Change distribution to unstable
++
++ -- Ole Streicher <debian@liska.ath.cx>  Tue, 30 Apr 2013 10:36:01 +0200
++
++python-astropy (0.2.1-1~exp6) experimental; urgency=low
++
++  * Fix FTBS (unit test failure) on MIPS
++
++ -- Ole Streicher <debian@liska.ath.cx>  Fri, 26 Apr 2013 09:57:59 +0200
++
++python-astropy (0.2.1-1~exp5) experimental; urgency=low
++
++  * Fix FTBS (unit test failure) on bigendian machines
++
++ -- Ole Streicher <debian@liska.ath.cx>  Mon, 22 Apr 2013 19:37:00 +0200
++
++python-astropy (0.2.1-1~exp4) experimental; urgency=low
++
++  * Fix FTBS (unit test failure) on Hurd
++
++ -- Ole Streicher <debian@liska.ath.cx>  Sun, 14 Apr 2013 18:39:00 +0200
++
++python-astropy (0.2.1-1~exp3) experimental; urgency=low
++
++  * Suggest optional packages
++
++ -- Ole Streicher <debian@liska.ath.cx>  Sun, 14 Apr 2013 12:17:00 +0200
++
++python-astropy (0.2.1-1~exp2) experimental; urgency=low
++
++  * increase test verbosity to catch bigendian FTBS
++
++ -- Ole Streicher <debian@liska.ath.cx>  Wed, 10 Apr 2013 16:21:00 +0200
++
++python-astropy (0.2.1-1~exp1) experimental; urgency=low
++
++  * New upstream release
++  * Infrastructure to build python3 packages (but py3 still disabled)
++  * Fix FTBS: set a writeable HOME + MPLCONFIGDIR
++
++ -- Ole Streicher <debian@liska.ath.cx>  Thu, 10 Apr 2013 09:10:00 +0200
++
++python-astropy (0.2~b2-1) experimental; urgency=low
++
++  * Initial release. (Closes: #678168)
++
++ -- Ole Streicher <debian@liska.ath.cx>  Wed, 30 Jan 2013 10:00:00 +0100
diff --cc debian/clean
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..add9becb9324f75e59843016a61f56cb860a3c31
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,22 @@@
++astropy/astropy.cfg
++astropy/convolution/boundary_extend.c
++astropy/convolution/boundary_fill.c
++astropy/convolution/boundary_none.c
++astropy/convolution/boundary_wrap.c
++astropy/cython_version.py
++astropy/io/ascii/cparser.c
++astropy/modeling/src/wcsconfig.h
++astropy/table/_np_utils.c
++astropy/time/erfa_time.c
++astropy/version.py
++astropy/wcs/include/astropy_wcs/wcsconfig.h
++astropy/wcs/include/docstrings.h
++astropy/wcs/include/wcsconfig.h
++astropy/wcs/src/docstrings.c
++astropy/extern/configobj/*
++astropy/extern/ply/*
++astropy/extern/six/*
++astropy/extern/js/*
++astropy/extern/css/*
++astropy/extern/pytest.py
++docs/api/*
diff --cc debian/compat
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ec635144f60048986bc560c5576355344005e6e7
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++9
diff --cc debian/control
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8b61ca1406e734a37c66731b006657f72eb8261e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,147 @@@
++Source: python-astropy
++Maintainer: Debian Astronomy Maintainers <debian-astro-maintainers@lists.alioth.debian.org>
++Uploaders: Ole Streicher <olebole@debian.org>
++Section: python
++Priority: optional
++Build-Depends: cython,
++               debhelper (>= 9),
++               dh-python,
++               graphviz,
++               libcfitsio-dev | libcfitsio3-dev,
++               liberfa-dev (>= 1.1.0),
++               libexpat1-dev,
++               libjs-jquery,
++               libjs-jquery-datatables,
++               pkg-config,
++               python-all-dev (>= 2.6.6-3~),
++               python-astropy-helpers (>= 1.1~),
++               python-configobj,
++               python-matplotlib,
++               python-nose,
++               python-numpy (>= 1.4),
++               python-ply,
++               python-pytest,
++               python-scipy,
++               python-setuptools (>= 0.6.4),
++               python-six (>= 1.10.0),
++               python-sphinx (>= 1.0.7+dfsg),
++               python-yaml,
++               python3-all-dev,
++               python3-astropy-helpers (>= 1.1~),
++               python3-configobj,
++               python3-matplotlib,
++               python3-nose,
++               python3-numpy (>= 1:1.6.2),
++               python3-ply,
++               python3-pytest,
++               python3-scipy,
++               python3-setuptools (>= 0.6.4),
++               python3-six (>= 1.10.0),
++               python3-yaml,
++               wcslib-dev (>= 5.8),
++               zlib1g-dev
++Standards-Version: 3.9.8
++Vcs-Browser: https://anonscm.debian.org/cgit/debian-astro/packages/python-astropy.git
++Vcs-Git: https://anonscm.debian.org/git/debian-astro/packages/python-astropy.git
++Homepage: http://astropy.org
++X-Python-Version: >= 2.6
++X-Python3-Version: >= 3.2
++
++Package: python-astropy
++Architecture: any
++Depends: python-configobj,
++         python-ply,
++         python-pytest,
++         python-six (>= 1.10.0),
++         ${misc:Depends},
++         ${python:Depends},
++         ${shlibs:Depends}
++Suggests: libxml2-utils,
++          python-astropy-affiliated,
++          python-astropy-doc,
++          python-beautifulsoup,
++          python-h5py,
++          python-matplotlib,
++          python-pandas,
++          python-scipy,
++          python-tz,
++          python-yaml
++Recommends: libjs-jquery,
++            libjs-jquery-datatables
++Description: Core functionality for performing astrophysics with Python
++ The astropy package contains core functionality and some common tools
++ needed for performing astronomy and astrophysics research with Python.
++ It can be extended by a number of "affiliated packages" that are
++ intended to work with the core package.
++
++Package: python3-astropy
++Architecture: any
++Depends: python3-configobj,
++         python3-ply,
++         python3-pytest,
++         python3-six (>= 1.10.0),
++         ${misc:Depends},
++         ${python3:Depends},
++         ${shlibs:Depends}
++Suggests: libxml2-utils,
++          python-astropy-doc,
++          python3-astropy-affiliated,
++          python3-beautifulsoup,
++          python3-h5py,
++          python3-matplotlib,
++          python3-pandas,
++          python3-scipy,
++          python3-tz,
++          python3-yaml
++Recommends: libjs-jquery,
++            libjs-jquery-datatables
++Description: Core functionality for performing astrophysics with Python3
++ The astropy package contains core functionality and some common tools
++ needed for performing astronomy and astrophysics research with Python3.
++ It can be extended by a number of "affiliated packages" that are
++ intended to work with the core package.
++
++Package: python-astropy-doc
++Architecture: all
++Multi-Arch: foreign
++Section: doc
++Depends: ${misc:Depends},
++         ${sphinxdoc:Depends}
++Description: Core functionality for performing astrophysics with Python (doc)
++ The astropy package contains core functionality and some common tools
++ needed for performing astronomy and astrophysics research with Python.
++ It can be extended by a number of "affiliated packages" that are
++ intended to work with the core package.
++ .
++ This package contains the package documentation.
++
++Package: astropy-utils
++Architecture: all
++Section: science
++Depends: python3-astropy (<< ${source:Version}.1~),
++         python3-astropy (>= ${source:Version}),
++         python3-pkg-resources,
++         ${misc:Depends},
++         ${python3:Depends}
++Breaks: fitscheck (<< 1:3.1.2-1~),
++        pyfits-utils (<<1:3.3-4~),
++        python-pyfits (<< 1:3.0.7-4~)
++Replaces: fitscheck (<< 1:3.1.2-1~),
++          pyfits-utils (<<1:3.3-4~),
++          python-pyfits (<< 1:3.0.7-4~)
++Description: Command line tools from astropy
++ The astropy package contains core functionality and some common tools
++ needed for performing astronomy and astrophysics research with Python.
++ .
++ This package contains the tools that come with astropy:
++ .
++  * fitscheck: Detect and fix FITS standards violations
++  * fits2bitmap: Create a bitmap file from a FITS image.
++  * fitsdiff: Compare two FITS image files and report the differences in
++    header keywords and data.
++  * fitsheader: Print the header(s) of one or more FITS file(s) to the
++    standard output in a human-readable format.
++  * samp_hub: SAMP Hub Server.
++  * volint: Check a VOTable file for compliance to the VOTable specification
++  * wcslint: Check the WCS keywords in a FITS file for compliance against
++    the standards
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..b79b22b1a7fec00570221310522e86c1610e403b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,129 @@@
++Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
++Upstream-Name: astropy
++Upstream-Author: The Astropy Developers
++Source: http://www.astropy.org/
++
++Files: * astropy/io/fits/*
++ astropy_helpers/astropy_helpers/sphinx/ext/compiler_unparse.py
++ astropy_helpers/astropy_helpers/sphinx/ext/comment_eater.py
++ astropy_helpers/astropy_helpers/sphinx/ext/traitsdoc.py
++ astropy/extern/configobj/*
++ astropy/extern/js/jquery.dataTables.js
++Copyright: Copyright (c) 2011, Astropy Developers,
++ 2004-2005 Association of Universities for Research in Astronomy,
++ 2006 Enthought, Inc.,
++ 2010-2011 Smithsonian Astrophysical Observatory,
++ 2003-2010 Michael Foord, Mark Andrews, Nicola Larosa,
++ 1995-2010 Jean-loup Gailly and Mark Adler,
++ 2001-2011 David M. Beazley (Dabeaz LLC)
++ 2008-2013 Allan Jardine
++License: BSD-3-Clause
++ Redistribution and use in source and binary forms, with or without
++ modification, are permitted provided that the following conditions are met:
++ .
++ 1. Redistributions of source code must retain the above copyright
++ notice, this list of conditions and the following disclaimer.
++ .
++ 2. Redistributions in binary form must reproduce the above
++ copyright notice, this list of conditions and the following
++ disclaimer in the documentation and/or other materials provided
++ with the distribution.
++ .
++ 3. Neither the name of AURA and its representatives nor the names
++ of the Smithsonian Astrophysical Observatory, Enthought Inc., Michael Foord,
++ the name of Voidspace, the names of its contributors, David Beazley, or
++ Dabeaz LLC, Allan Jardine nor SpryMedia, may not be used to endorse or
++ promote products derived from this software without specific prior
++ written permission.
++ .
++ THIS SOFTWARE IS PROVIDED BY ITS AUTHORS ``AS IS'' AND ANY EXPRESS OR IMPLIED
++ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
++ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
++ DISCLAIMED. IN NO EVENT SHALL AURA BE LIABLE FOR ANY DIRECT, INDIRECT,
++ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
++ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
++ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
++ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
++ TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
++ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
++ DAMAGE.
++
++Files: cextern/expat/*
++Copyright: 2001-2007 Expat maintainers,
++ 1998-2003 Thai Open Source Software Center Ltd and Clark Cooper
++ 2014 jQuery Foundation and other contributors
++License: Expat
++ Permission is hereby granted, free of charge, to any person obtaining a copy
++ of this software and associated documentation files (the "Software"), to deal
++ in the Software without restriction, includingwithout limitation the rights
++ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
++ copies of the Software, and to permit persons to whom the Software is
++ furnished to do so, subject to the following conditions:
++ .
++ The above copyright notice and this permission notice shall be included in
++ all copies or substantial portions of the Software.
++ .
++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
++ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
++ SOFTWARE.
++
++Files: astropy_helpers/astropy_helpers/sphinx/ext/numpydoc.py
++ astropy_helpers/astropy_helpers/sphinx/ext/docscrape.py
++ astropy_helpers/astropy_helpers/sphinx/ext/docscrape_sphinx.py
++ astropy_helpers/astropy_helpers/sphinx/ext/phantom_import.py
++ debian/*
++Copyright: Copyright (C) 2008 Stefan van der Walt <stefan@mentat.za.net>,
++ Pauli Virtanen <pav@iki.fi>,
++ 2012-2015 Ole Streicher <olebole@debian.org>
++License: BSD-2-Clause
++ Redistribution and use in source and binary forms, with or without
++ modification, are permitted provided that the following conditions are met:
++ .
++  1. Redistributions of source code must retain the above copyright
++     notice, this list of conditions and the following disclaimer.
++  2. Redistributions in binary form must reproduce the above copyright
++     notice, this list of conditions and the following disclaimer in
++     the documentation and/or other materials provided with the
++     distribution.
++ .
++ THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
++ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
++ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
++ EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
++ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
++ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
++ OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
++ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
++ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
++ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++
++Files: cextern/wcslib/*
++Copyright: Copyright (C) 1995-2012, Mark Calabretta
++License: LGPL-3
++ WCSLIB is free software: you can redistribute it and/or modify it under the
++ terms of the GNU Lesser General Public License as published by the Free
++ Software Foundation, either version 3 of the License, or (at your option)
++ any later version.
++ .
++ WCSLIB is distributed in the hope that it will be useful, but WITHOUT ANY
++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
++ FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for
++ more details.
++ .
++ On Debian systems, the full text of the GNU Lesser General Public
++ License version 3 can be found in the file
++ `/usr/share/common-licenses/LGPL-3'.
++ .
++ Correspondence concerning WCSLIB may be directed to:
++   Internet email: mcalabre@atnf.csiro.au
++   Postal address: Dr. Mark Calabretta
++                   Australia Telescope National Facility, CSIRO
++                   PO Box 76
++                   Epping NSW 1710
++                   AUSTRALIA
++Comment: Note that these files are not used in the package build process, so
++ the copyright information is included here only as a reference.
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8d044ccded01a05ee651f2a019fbaeb75f35a85c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,58 @@@
++.TH FITS2BITMAP 1 "April 2015" "fits2bitmap" "astropy 1.0.2"
++.SH NAME
++fits2bitmap \- Create a bitmap file from a FITS image.
++.SH DESCRIPTION
++usage: fits2bitmap [\-h] [\-e hdu] [\-o filename] [\-\-scale SCALE] [\-\-power POWER]
++.IP
++[\-\-asinh_a ASINH_A] [\-\-min_cut MIN_CUT] [\-\-max_cut MAX_CUT]
++[\-\-min_percent MIN_PERCENT] [\-\-max_percent MAX_PERCENT]
++[\-\-percent PERCENT] [\-\-cmap colormap_name]
++filename [filename ...]
++.SS "positional arguments:"
++.TP
++filename
++Path to one or more FITS files to convert
++.SS "optional arguments:"
++.TP
++\fB\-h\fR, \fB\-\-help\fR
++show this help message and exit
++.TP
++\fB\-e\fR hdu, \fB\-\-ext\fR hdu
++specify the HDU extension number or name
++.TP
++\fB\-o\fR filename
++Filename for the output image (Default is a PNG file
++with the same name as the FITS file)
++.TP
++\fB\-\-scale\fR SCALE
++Type of image scaling ("linear", "sqrt", "power",
++"log", or "asinh")
++.TP
++\fB\-\-power\fR POWER
++Power index for "power" scaling
++.TP
++\fB\-\-asinh_a\fR ASINH_A
++The value in normalized image where the asinh curve
++transitions from linear to logarithmic behavior (used
++only for "asinh" scaling)
++.TP
++\fB\-\-min_cut\fR MIN_CUT
++The pixel value of the minimum cut level
++.TP
++\fB\-\-max_cut\fR MAX_CUT
++The pixel value of the maximum cut level
++.TP
++\fB\-\-min_percent\fR MIN_PERCENT
++The percentile value used to determine the minimum cut
++level
++.TP
++\fB\-\-max_percent\fR MAX_PERCENT
++The percentile value used to determine the maximum cut
++level
++.TP
++\fB\-\-percent\fR PERCENT
++The percentage of the image values used to determine
++the pixel values of the minimum and maximum cut levels
++.TP
++\fB\-\-cmap\fR colormap_name
++matplotlib color map name
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..3406852378c96b069ecaa7b626cb7f18c6663b18
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,71 @@@
++.TH fitscheck 1 "April 2015" "fitscheck" "astropy 1.0.2"
++.SH NAME
++fitscheck \- script to detect and fix FITS standards violations
++.SH SYNOPSIS
++.B fitscheck
++[\fIOPTION\fR]... [\fIFILE\fR]...
++.SH DESCRIPTION
++.PP
++\fBfitscheck\fR is a command line script based on pyfits for verifying
++and updating the CHECKSUM and DATASUM keywords of FITS files.
++\fBitscheck\fR can also detect and often fix other FITS standards
++violations. \fBfitscheck\fR facilitates re\-writing the non-standard
++checksums originally generated by pyfits with standard checksums which
++will interoperate with cfitsio.
++.PP
++\fBfitscheck\fR will refuse to write new checksums if the checksum keywords
++are missing or their values are bad.  Use \fB\-\-force\fR to write new
++checksums regardless of whether or not they currently exist or pass.
++Use \fB\-\-ignore-missing\fR to tolerate missing checksum keywords without
++comment.
++.SH OPTIONS
++.TP
++\fB\-h\fR, \fB\-\-help\fR
++Display terse usage information (help).
++.TP
++\fB\-k\fR [\fIstandard\fR | \fInonstandard\fR | \fIeither\fR | \fInone\fR], \fB\-\-checksum\fR=[\fIstandard\fR | \fInonstandard\fR | \fIeither\fR | \fInone\fR]
++Choose FITS checksum mode or none. Defaults to standard.
++.TP
++\fB\-w\fR, \fB\-\-write\fR
++Write out file checksums and/or FITS compliance fixes.
++.TP
++\fB\-f\fR, \fB\-\-force\fR
++Do file update even if original checksum was bad.
++.TP
++\fB\-c\fR, \fB\-\-compliance\fR
++Do FITS compliance checking, fix if possible.
++.TP
++\fB\-i\fR, \fB\-\-ignore\-missing\fR
++Ignore missing checksums.
++.TP
++\fB\-v\fR, \fB\-\-verbose\fR
++Generate extra output.
++.SH "EXAMPLES"
++.B "% fitscheck --checksum either --write *.fits"
++.br
++Verify and update checksums, tolerating non-standard checksums, updating to standard checksum.
++    
++.B "% fitscheck --write --force *.fits"
++.br
++Write new checksums, even if existing checksums are bad or missing.
++
++.B "% fitscheck --compliance *.fits"
++.br
++Verify standard checksums and FITS compliance without changing the files.
++
++.B "% fitscheck --checksum nonstandard *.fits"
++.br   
++Verify original nonstandard checksums only.
++
++.B "% fitscheck --checksum none --compliance --write *.fits"
++.br
++Only check and fix compliance problems,  ignoring checksums.
++
++.B "% fitscheck *.fits"
++.br
++Verify standard interoperable checksums.
++
++.B "% fitscheck --checksum none --write *.fits"
++.br
++Delete checksum keywords.
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..51d9c4afb5f15bea1ccfbb00e52e4fc04def19e8
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,87 @@@
++.TH fitsdiff 1 "April 2015" "fitsdiff" "astropy 1.0.2"
++.SH NAME
++fitsdiff \- compare two FITS image files and report the differences in header keywords and data.
++.SH SYNOPSIS
++.B fitsdiff
++[\fIOPTION\fR]... \fIFILE1\fR \fIFILE2\fR
++.SH DESCRIPTION
++.PP
++\fBfitsdiff\fR is a command line script based on pyfits to compare two
++FITS image files and report the differences in header keywords and data.
++.PP
++\fIFILE1\fR and \fIFILE2\fR are the two files to be compared. They may also be
++wild cards, in such cases, they must be enclosed by double or single quotes, or
++they may be directory names. If both are directory names, all files in each of
++the directories will be included; if only one is directory name, then the
++directory name will be prefixed to the file name(s) specified by the other
++argument. For example:
++.TP
++.B "% fitsdiff ""*.fits"" ""/machine/data1""
++.PP
++will compare all FITS files in the current directory to the corresponding files
++in the directory \fI/machine/data1\fR.
++.PP
++If the two files are identical within the specified conditions, it will report
++"No difference is found." If the value(s) of \fI-c\fR and \fI-k\fR takes the form
++\fI\@filename\fR, list is in the text file \fIfilename\fR, and each line in that text
++file contains one keyword.
++.PP
++\fBfitsdiff\fR commandline arguments can also be set using the environment variable
++\fIFITSDIFF_SETTINGS\fR. If the \fIFITSDIFF_SETTINGS\fR environment variable is present,
++each argument present will override the corresponding argument on the
++commandline. This environment variable exists to make it easier to change the
++behavior of \fBfitsdiff\fR on a global level, such as in a set of regression tests.
++.SH GENERIC OPTIONS
++.TP
++\fB\-h\fR, \fB\-\-help\fR
++Display terse usage information (help).
++.TP
++\fB\-q\fR, \fB\-\-quiet\fR
++Produce no output and just return a status code.
++.TP
++\fB\-n\fR \fIINTEGER\fR, \fB\-\-num\-diffs\fR=\fIINTEGER\fR
++Max number of data differences (image pixel or table element) to report per extension (default 10).
++.TP
++\fB\-d\fR \fINUMBER\fR, \fB\-\-difference-tolerance\fR=\fINUMBER\fR
++The relative tolerance for comparison of two numbers,
++specifically two floating point numbers.  This applies
++to data in both images and tables, and to floating
++point keyword values in headers (default 0.0).
++.TP
++\fB\-b\fR, \fB\-\-no\-ignore\-blanks\fR
++Don't ignore trailing blanks (whitespace) in string
++values. Otherwise trailing blanks both in header
++keywords/values and in table column values) are not
++treated as significant i.e. without this option 'ABC ' and 'ABC' are considered equivalent.
++.TP
++\fB\-\-no\-ignore\-blank\-cards\fR
++Don't ignore entirely blank cards in headers. Normally \fIfitsdiff\fR does not
++consider blank cards when comparing headers, but this will ensure that even blank
++cards match up.
++.TP
++\fB\-o\fR \fIFILE\fR, \fB\-\-output\-file\fR=\fIFILE\fR
++Output results to this file; otherwise results are printed to stdout.
++.SH "HEADER COMPARISON OPTIONS"
++.TP
++\fB\-k\fR \fIKEYWORDS\fR, \fB\-\-ignore\-keywords\fR=\fIKEYWORDS\fR
++Comma-separated list of keywords not to be compared.
++Keywords may contain wildcard patterns.  To exclude
++all keywords, use "*"; make sure to have double or
++single quotes around the asterisk.
++.TP
++\fB\-c\fR \fIKEYWORDS\fR, \fB\-\-ignore\-comments\fR=\fIKEYWORDS\fR
++Comma-separated list of keywords whose comments will not be compared.
++Wildcards may be used as with \fI\-\-ignore-keywords\fR.
++.SH "TABLE COMPARISON OPTIONS"
++.TP
++\fB\-f\fR \fICOLUMNS\fR, \fB\-\-ignore\-fields\fR=\fICOLUMNS\fR
++Comma-separated list of fields (i.e. columns) not to be compared.
++All columns may be excluded using "*" as with \fI\-\-ignore-keywords\fR.
++.SH "EXAMPLES"
++.B "% fitsdiff -k filename,filtnam1 -n 5 -d 1.e-6 test1.fits test2"
++.br
++This command will compare files \fItest1.fits\fR and \fItest2.fits\fR, report maximum of 5
++different pixels values per extension, only report data values larger than
++1.e-6 relative to each other, and will neglect the different values of
++keywords \fIFILENAME\fR and \fIFILTNAM1\fR (or their very existence).
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..4add989574727c8d7fdf194f4afe3ef4f8821a10
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,36 @@@
++.TH FITSHEADER 1 "April 2015" "fitsheader" "astropy 1.0.2"
++.SH NAME
++fitsheader \- Print the header(s) of a FITS file. 
++.SH DESCRIPTION
++usage: fitsheader [\-h] [\-e HDU] [\-k KEYWORD] [\-t [FORMAT]] [\-c]
++.IP
++filename [filename ...]
++.PP
++Print the header(s) of a FITS file. Optional arguments allow the desired
++extension(s), keyword(s), and output format to be specified. Note that in the
++case of a compressed image, the decompressed header is shown by default.
++.SS "positional arguments:"
++.TP
++filename
++path to one or more files; wildcards are supported
++.SS "optional arguments:"
++.TP
++\fB\-h\fR, \fB\-\-help\fR
++show this help message and exit
++.TP
++\fB\-e\fR HDU, \fB\-\-extension\fR HDU
++specify the extension by name or number; this argument
++can be repeated to select multiple extensions
++.TP
++\fB\-k\fR KEYWORD, \fB\-\-keyword\fR KEYWORD
++specify a keyword; this argument can be repeated to
++select multiple keywords; also supports wildcards
++.TP
++\fB\-t\fR [FORMAT], \fB\-\-table\fR [FORMAT]
++print the header(s) in machine\-readable table format;
++the default format is "ascii.fixed_width" (can be
++"ascii.csv", "ascii.html", "ascii.latex", "fits", etc)
++.TP
++\fB\-c\fR, \fB\-\-compressed\fR
++for compressed image data, show the true header which
++describes the compression rather than the data
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8b87dcb0a693a2386c689b11bff7a7b05a86e8ea
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,31 @@@
++.TH fitsinfo 1 "April 2015" "fitsdiff" "astropy 1.1"
++.SH NAME
++fitsinfo \- Print a summary of the HDUs in one or more FITS files(s)
++.SH SYNOPSIS
++.B fitsinfo
++\fIfilename\fR [\fIfilename\fR ...]
++.SH DESCRIPTION
++.PP
++\fBfitsinfo\fR is a command-line script based on astropy.io.fits for
++printing a summary of the HDUs in one or more FITS files(s) to the
++standard output.
++.SH EXAMPLES
++.PP
++Example usage of \fBfitsinfo\fR:
++.PP
++1. Print a summary of the HDUs in a FITS file:
++.PP
++    $ fitsinfo filename.fits
++
++    Filename: filename.fits
++    No.    Name         Type      Cards   Dimensions   Format
++    0    PRIMARY     PrimaryHDU     138   ()
++    1    SCI         ImageHDU        61   (800, 800)   int16
++    2    SCI         ImageHDU        61   (800, 800)   int16
++    3    SCI         ImageHDU        61   (800, 800)   int16
++    4    SCI         ImageHDU        61   (800, 800)   int16
++.PP
++2. Print a summary of HDUs of all the FITS files in the current directory:
++.PP
++    $ fitsinfo *.fits
++.
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..5c140f3cf7119bf61fdd1f347f06907926a73e43
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,123 @@@
++From: Marten van Kerkwijk <mhvk@astro.utoronto.ca>
++Date: Wed, 11 Jan 2017 21:59:16 -0500
++Subject: Allow pytest 3.x to use plugin for doctests in .rst files.
++
++Pull request: https://github.com/astropy/astropy/pull/5688
++---
++ astropy/tests/pytest_plugins.py    | 17 ++++-------------
++ astropy/tests/tests/test_runner.py | 16 +++++++++-------
++ setup.cfg                          |  2 +-
++ 3 files changed, 14 insertions(+), 21 deletions(-)
++
++diff --git a/astropy/tests/pytest_plugins.py b/astropy/tests/pytest_plugins.py
++index 27b683d..64f7b74 100644
++--- a/astropy/tests/pytest_plugins.py
+++++ b/astropy/tests/pytest_plugins.py
++@@ -180,7 +180,8 @@ def pytest_configure(config):
++ 
++             # uses internal doctest module parsing mechanism
++             finder = DocTestFinderPlus()
++-            runner = doctest.DebugRunner(verbose=False, optionflags=opts)
+++            runner = doctest.DebugRunner(verbose=False, optionflags=opts,
+++                                         checker=AstropyOutputChecker())
++             for test in finder.find(module):
++                 if test.examples:  # skip empty doctests
++                     if config.getvalue("remote_data") != 'any':
++@@ -191,21 +192,11 @@ def pytest_configure(config):
++                     yield doctest_plugin.DoctestItem(
++                         test.name, self, runner, test)
++ 
++-        # This is for py.test prior to 2.4.0
++-        def runtest(self):
++-            return
++-
++-    class DocTestTextfilePlus(doctest_plugin.DoctestTextfile):
+++    class DocTestTextfilePlus(doctest_plugin.DoctestItem, pytest.Module):
++         def runtest(self):
++             # satisfy `FixtureRequest` constructor...
++             self.funcargs = {}
++-            try:
++-                self._fixtureinfo = doctest_plugin.FuncFixtureInfo((), [], {})
++-                fixture_request = doctest_plugin.FixtureRequest(self)
++-            except AttributeError:  # pytest >= 2.8.0
++-                python_plugin = config.pluginmanager.getplugin('python')
++-                self._fixtureinfo = python_plugin.FuncFixtureInfo((), [], {})
++-                fixture_request = python_plugin.FixtureRequest(self)
+++            fixture_request = doctest_plugin._setup_fixtures(self)
++ 
++             failed, tot = doctest.testfile(
++                 str(self.fspath), module_relative=False,
++diff --git a/astropy/tests/tests/test_runner.py b/astropy/tests/tests/test_runner.py
++index a147cd9..0642c7f 100644
++--- a/astropy/tests/tests/test_runner.py
+++++ b/astropy/tests/tests/test_runner.py
++@@ -1,9 +1,11 @@
++-from astropy.tests.runner import TestRunner, TestRunnerBase, keyword
+++from astropy.tests.runner import TestRunner as T_Runner
+++from astropy.tests.runner import TestRunnerBase as T_RunnerBase
+++from astropy.tests.runner import keyword
++ from astropy.tests.helper import pytest
++ 
++ 
++ def test_disable_kwarg():
++-    class no_remote_data(TestRunner):
+++    class no_remote_data(T_Runner):
++         @keyword()
++         def remote_data(self, remote_data, kwargs):
++             return NotImplemented
++@@ -14,13 +16,13 @@ def test_disable_kwarg():
++ 
++ 
++ def test_wrong_kwarg():
++-    r = TestRunner('.')
+++    r = T_Runner('.')
++     with pytest.raises(TypeError):
++         r.run_tests(spam='eggs')
++ 
++ 
++ def test_invalid_kwarg():
++-    class bad_return(TestRunnerBase):
+++    class bad_return(T_RunnerBase):
++         @keyword()
++         def remote_data(self, remote_data, kwargs):
++             return 'bob'
++@@ -31,7 +33,7 @@ def test_invalid_kwarg():
++ 
++ 
++ def test_new_kwarg():
++-    class Spam(TestRunnerBase):
+++    class Spam(T_RunnerBase):
++         @keyword()
++         def spam(self, spam, kwargs):
++             return [spam]
++@@ -44,7 +46,7 @@ def test_new_kwarg():
++ 
++ 
++ def test_priority():
++-    class Spam(TestRunnerBase):
+++    class Spam(T_RunnerBase):
++         @keyword()
++         def spam(self, spam, kwargs):
++             return [spam]
++@@ -61,7 +63,7 @@ def test_priority():
++ 
++ 
++ def test_docs():
++-    class Spam(TestRunnerBase):
+++    class Spam(T_RunnerBase):
++         @keyword()
++         def spam(self, spam, kwargs):
++             """
++diff --git a/setup.cfg b/setup.cfg
++index 206e6f8..5b3e995 100644
++--- a/setup.cfg
+++++ b/setup.cfg
++@@ -12,7 +12,7 @@ all_files = 1
++ upload-dir = docs/_build/html
++ show-response = 1
++ 
++-[pytest]
+++[tool:pytest]
++ minversion = 2.3.3
++ norecursedirs = ".tox" "build" "docs[\/]_build" "astropy[\/]extern" "astropy[\/]utils[\/]compat[\/]futures"
++ doctest_plus = enabled
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9c4415637e05f251a983e23d688dfe2f68a1447b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,22 @@@
++From: Marten van Kerkwijk <mhvk@astro.utoronto.ca>
++Date: Sat, 24 Dec 2016 17:06:08 -0500
++Subject: Ensure NUMPY_LT_1_12 works for beta prerelease.
++
++Pull request: https://github.com/astropy/astropy/pull/5646
++---
++ astropy/utils/compat/numpycompat.py | 2 +-
++ 1 file changed, 1 insertion(+), 1 deletion(-)
++
++diff --git a/astropy/utils/compat/numpycompat.py b/astropy/utils/compat/numpycompat.py
++index fbdd029..bda721f 100644
++--- a/astropy/utils/compat/numpycompat.py
+++++ b/astropy/utils/compat/numpycompat.py
++@@ -21,7 +21,7 @@ NUMPY_LT_1_9_1 = not minversion('numpy', '1.9.1')
++ NUMPY_LT_1_10 = not minversion('numpy', '1.10.0')
++ NUMPY_LT_1_10_4 = not minversion('numpy', '1.10.4')
++ NUMPY_LT_1_11 = not minversion('numpy', '1.11.0')
++-NUMPY_LT_1_12 = not minversion('numpy', '1.12dev')
+++NUMPY_LT_1_12 = not minversion('numpy', '1.12')
++ 
++ 
++ def _monkeypatch_unicode_mask_fill_values():
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d104e3f79b3e06a285b01b986070a53a03da1772
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,35 @@@
++From: Thomas Robitaille <thomas.robitaille@gmail.com>
++Date: Thu, 12 Jan 2017 11:54:25 +0000
++Subject: Fix default value for remote_data option
++
++Pull request: https://github.com/astropy/astropy/pull/5689
++---
++ astropy/tests/runner.py | 7 ++++---
++ 1 file changed, 4 insertions(+), 3 deletions(-)
++
++diff --git a/astropy/tests/runner.py b/astropy/tests/runner.py
++index cf11c2f..6f1e6b4 100644
++--- a/astropy/tests/runner.py
+++++ b/astropy/tests/runner.py
++@@ -353,7 +353,7 @@ class TestRunner(TestRunnerBase):
++ 
++         return []
++ 
++-    @keyword()
+++    @keyword(default_value='none')
++     def remote_data(self, remote_data, kwargs):
++         """
++         remote_data : {'none', 'astropy', 'any'}, optional
++@@ -369,9 +369,10 @@ class TestRunner(TestRunnerBase):
++             remote_data = 'none'
++         elif remote_data not in ('none', 'astropy', 'any'):
++             warnings.warn("The remote_data option should be one of "
++-                          "none/astropy/any. For backward-compatibility, "
+++                          "none/astropy/any (found {0}). For backward-compatibility, "
++                           "assuming 'any', but you should change the option to be "
++-                          "one of the supported ones to avoid issues in future.",
+++                          "one of the supported ones to avoid issues in "
+++                          "future.".format(remote_data),
++                           AstropyDeprecationWarning)
++             remote_data = 'any'
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..1019ff161e59b305488926835d8924247427e12b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,850 @@@
++From: kelle <kellecruz@gmail.com>
++Date: Sat, 7 Jan 2017 17:45:29 -0500
++Subject: Use parametrize instead of yield.
++
++Pull request: https://github.com/astropy/astropy/pull/5678
++Pull request: https://github.com/astropy/astropy/pull/5682
++---
++ astropy/io/votable/tests/vo_test.py |   5 +-
++ astropy/units/tests/test_format.py  | 466 ++++++++++++++++--------------------
++ astropy/wcs/tests/test_profiling.py |  99 +++-----
++ astropy/wcs/tests/test_wcs.py       | 146 +++++------
++ 4 files changed, 298 insertions(+), 418 deletions(-)
++
++diff --git a/astropy/io/votable/tests/vo_test.py b/astropy/io/votable/tests/vo_test.py
++index 587fc59..31acb9c 100644
++--- a/astropy/io/votable/tests/vo_test.py
+++++ b/astropy/io/votable/tests/vo_test.py
++@@ -737,13 +737,10 @@ def table_from_scratch():
++ 
++ 
++ def test_open_files():
++-    def test_file(filename):
++-        parse(filename, pedantic=False)
++-
++     for filename in get_pkg_data_filenames('data', pattern='*.xml'):
++         if filename.endswith('custom_datatype.xml'):
++             continue
++-        yield test_file, filename
+++        parse(filename, pedantic=False)
++ 
++ 
++ @raises(VOTableSpecError)
++diff --git a/astropy/units/tests/test_format.py b/astropy/units/tests/test_format.py
++index 9316a59..b5e9d12 100644
++--- a/astropy/units/tests/test_format.py
+++++ b/astropy/units/tests/test_format.py
++@@ -13,7 +13,7 @@ from __future__ import (absolute_import, unicode_literals, division,
++ from ...extern import six
++ 
++ from numpy.testing.utils import assert_allclose
++-from ...tests.helper import raises, pytest, catch_warnings
+++from ...tests.helper import pytest, catch_warnings
++ 
++ from ... import units as u
++ from ...constants import si
++@@ -22,246 +22,205 @@ from .. import format as u_format
++ from ..utils import is_effectively_unity
++ 
++ 
++-def test_unit_grammar():
++-    def _test_unit_grammar(s, unit):
+++@pytest.mark.parametrize('strings, unit', [
+++    (["m s", "m*s", "m.s"], u.m * u.s),
+++    (["m/s", "m*s**-1", "m /s", "m / s", "m/ s"], u.m / u.s),
+++    (["m**2", "m2", "m**(2)", "m**+2", "m+2", "m^(+2)"], u.m ** 2),
+++    (["m**-3", "m-3", "m^(-3)", "/m3"], u.m ** -3),
+++    (["m**(1.5)", "m(3/2)", "m**(3/2)", "m^(3/2)"], u.m ** 1.5),
+++    (["2.54 cm"], u.Unit(u.cm * 2.54)),
+++    (["10+8m"], u.Unit(u.m * 1e8)),
+++    # This is the VOUnits documentation, but doesn't seem to follow the
+++    # unity grammar (["3.45 10**(-4)Jy"], 3.45 * 1e-4 * u.Jy)
+++    (["sqrt(m)"], u.m ** 0.5),
+++    (["dB(mW)", "dB (mW)"], u.DecibelUnit(u.mW)),
+++    (["mag"], u.mag),
+++    (["mag(ct/s)"], u.MagUnit(u.ct / u.s)),
+++    (["dex"], u.dex),
+++    (["dex(cm s**-2)", "dex(cm/s2)"], u.DexUnit(u.cm / u.s**2))])
+++def test_unit_grammar(strings, unit):
+++    for s in strings:
++         print(s)
++         unit2 = u_format.Generic.parse(s)
++         assert unit2 == unit
++ 
++-    data = [
++-        (["m s", "m*s", "m.s"], u.m * u.s),
++-        (["m/s", "m*s**-1", "m /s", "m / s", "m/ s"], u.m / u.s),
++-        (["m**2", "m2", "m**(2)", "m**+2", "m+2", "m^(+2)"], u.m ** 2),
++-        (["m**-3", "m-3", "m^(-3)", "/m3"], u.m ** -3),
++-        (["m**(1.5)", "m(3/2)", "m**(3/2)", "m^(3/2)"], u.m ** 1.5),
++-        (["2.54 cm"], u.Unit(u.cm * 2.54)),
++-        (["10+8m"], u.Unit(u.m * 1e8)),
++-        # This is the VOUnits documentation, but doesn't seem to follow the
++-        # unity grammar (["3.45 10**(-4)Jy"], 3.45 * 1e-4 * u.Jy)
++-        (["sqrt(m)"], u.m ** 0.5),
++-        (["dB(mW)", "dB (mW)"], u.DecibelUnit(u.mW)),
++-        (["mag"], u.mag),
++-        (["mag(ct/s)"], u.MagUnit(u.ct / u.s)),
++-        (["dex"], u.dex),
++-        (["dex(cm s**-2)", "dex(cm/s2)"], u.DexUnit(u.cm / u.s**2))
++-    ]
++-
++-    for strings, unit in data:
++-        for s in strings:
++-            yield _test_unit_grammar, s, unit
++-
++-
++-def test_unit_grammar_fail():
++-    @raises(ValueError)
++-    def _test_unit_grammar_fail(s):
++-        u_format.Generic.parse(s)
++-
++-    data = ['sin( /pixel /s)',
++-            'mag(mag)',
++-            'dB(dB(mW))',
++-            'dex()']
++-
++-    for s in data:
++-        yield _test_unit_grammar_fail, s
++-
++-
++-def test_cds_grammar():
++-    def _test_cds_grammar(s, unit):
+++
+++@pytest.mark.parametrize('string', ['sin( /pixel /s)', 'mag(mag)',
+++                                    'dB(dB(mW))', 'dex()'])
+++def test_unit_grammar_fail(string):
+++    with pytest.raises(ValueError):
+++        print(string)
+++        u_format.Generic.parse(string)
+++
+++@pytest.mark.parametrize('strings, unit', [
+++    (["0.1nm"], u.AA),
+++    (["mW/m2"], u.Unit(u.erg / u.cm ** 2 / u.s)),
+++    (["mW/(m2)"], u.Unit(u.erg / u.cm ** 2 / u.s)),
+++    (["km/s", "km.s-1"], u.km / u.s),
+++    (["10pix/nm"], u.Unit(10 * u.pix / u.nm)),
+++    (["1.5x10+11m"], u.Unit(1.5e11 * u.m)),
+++    (["1.5×10+11m"], u.Unit(1.5e11 * u.m)),
+++    (["m2"], u.m ** 2),
+++    (["10+21m"], u.Unit(u.m * 1e21)),
+++    (["2.54cm"], u.Unit(u.cm * 2.54)),
+++    (["20%"], 0.20 * u.dimensionless_unscaled),
+++    (["10+9"], 1.e9 * u.dimensionless_unscaled),
+++    (["2x10-9"], 2.e-9 * u.dimensionless_unscaled),
+++    (["---"], u.dimensionless_unscaled),
+++    (["ma"], u.ma),
+++    (["mAU"], u.mAU),
+++    (["uarcmin"], u.uarcmin),
+++    (["uarcsec"], u.uarcsec),
+++    (["kbarn"], u.kbarn),
+++    (["Gbit"], u.Gbit),
+++    (["Gibit"], 2 ** 30 * u.bit),
+++    (["kbyte"], u.kbyte),
+++    (["mRy"], 0.001 * u.Ry),
+++    (["mmag"], u.mmag),
+++    (["Mpc"], u.Mpc),
+++    (["Gyr"], u.Gyr),
+++    (["°"], u.degree),
+++    (["°/s"], u.degree / u.s),
+++    (["Ã…"], u.AA),
+++    (["Ã…/s"], u.AA / u.s),
+++    (["\\h"], si.h)])
+++def test_cds_grammar(strings, unit):
+++    for s in strings:
++         print(s)
++         unit2 = u_format.CDS.parse(s)
++         assert unit2 == unit
++ 
++-    data = [
++-        (["0.1nm"], u.AA),
++-        (["mW/m2"], u.Unit(u.erg / u.cm ** 2 / u.s)),
++-        (["mW/(m2)"], u.Unit(u.erg / u.cm ** 2 / u.s)),
++-        (["km/s", "km.s-1"], u.km / u.s),
++-        (["10pix/nm"], u.Unit(10 * u.pix / u.nm)),
++-        (["1.5x10+11m"], u.Unit(1.5e11 * u.m)),
++-        (["1.5×10+11m"], u.Unit(1.5e11 * u.m)),
++-        (["m2"], u.m ** 2),
++-        (["10+21m"], u.Unit(u.m * 1e21)),
++-        (["2.54cm"], u.Unit(u.cm * 2.54)),
++-        (["20%"], 0.20 * u.dimensionless_unscaled),
++-        (["10+9"], 1.e9 * u.dimensionless_unscaled),
++-        (["2x10-9"], 2.e-9 * u.dimensionless_unscaled),
++-        (["---"], u.dimensionless_unscaled),
++-        (["ma"], u.ma),
++-        (["mAU"], u.mAU),
++-        (["uarcmin"], u.uarcmin),
++-        (["uarcsec"], u.uarcsec),
++-        (["kbarn"], u.kbarn),
++-        (["Gbit"], u.Gbit),
++-        (["Gibit"], 2 ** 30 * u.bit),
++-        (["kbyte"], u.kbyte),
++-        (["mRy"], 0.001 * u.Ry),
++-        (["mmag"], u.mmag),
++-        (["Mpc"], u.Mpc),
++-        (["Gyr"], u.Gyr),
++-        (["°"], u.degree),
++-        (["°/s"], u.degree / u.s),
++-        (["Ã…"], u.AA),
++-        (["Ã…/s"], u.AA / u.s),
++-        (["\\h"], si.h)]
++-
++-    for strings, unit in data:
++-        for s in strings:
++-            yield _test_cds_grammar, s, unit
++-
++-
++-def test_cds_grammar_fail():
++-    @raises(ValueError)
++-    def _test_cds_grammar_fail(s):
++-        print(s)
++-        u_format.CDS.parse(s)
++-
++-    data = ['0.1 nm',
++-            'solMass(3/2)',
++-            'km / s',
++-            'km s-1',
++-            'pix0.1nm',
++-            'pix/(0.1nm)',
++-            'km*s',
++-            'km**2',
++-            '5x8+3m',
++-            '0.1---',
++-            '---m',
++-            'm---',
++-            'mag(s-1)',
++-            'dB(mW)',
++-            'dex(cm s-2)']
++-
++-    for s in data:
++-        yield _test_cds_grammar_fail, s
++-
++-
++-def test_ogip_grammar():
++-    def _test_ogip_grammar(s, unit):
+++
+++@pytest.mark.parametrize('string', [
+++    '0.1 nm',
+++    'solMass(3/2)',
+++    'km / s',
+++    'km s-1',
+++    'pix0.1nm',
+++    'pix/(0.1nm)',
+++    'km*s',
+++    'km**2',
+++    '5x8+3m',
+++    '0.1---',
+++    '---m',
+++    'm---',
+++    'mag(s-1)',
+++    'dB(mW)',
+++    'dex(cm s-2)'])
+++def test_cds_grammar_fail(string):
+++    with pytest.raises(ValueError):
+++        print(string)
+++        u_format.CDS.parse(string)
+++
+++
+++# These examples are taken from the EXAMPLES section of
+++# http://heasarc.gsfc.nasa.gov/docs/heasarc/ofwg/docs/general/ogip_93_001/
+++@pytest.mark.parametrize('strings, unit', [
+++    (["count /s", "count/s", "count s**(-1)", "count / s", "count /s "],
+++     u.count / u.s),
+++    (["/pixel /s", "/(pixel * s)"], (u.pixel * u.s) ** -1),
+++    (["count /m**2 /s /eV", "count m**(-2) * s**(-1) * eV**(-1)",
+++      "count /(m**2 * s * eV)"],
+++     u.count * u.m ** -2 * u.s ** -1 * u.eV ** -1),
+++    (["erg /pixel /s /GHz", "erg /s /GHz /pixel", "erg /pixel /(s * GHz)"],
+++     u.erg / (u.s * u.GHz * u.pixel)),
+++    (["keV**2 /yr /angstrom", "10**(10) keV**2 /yr /m"],
+++      # Though this is given as an example, it seems to violate the rules
+++      # of not raising scales to powers, so I'm just excluding it
+++      # "(10**2 MeV)**2 /yr /m"
+++     u.keV**2 / (u.yr * u.angstrom)),
+++    (["10**(46) erg /s", "10**46 erg /s", "10**(39) J /s", "10**(39) W",
+++      "10**(15) YW", "YJ /fs"],
+++     10**46 * u.erg / u.s),
+++    (["10**(-7) J /cm**2 /MeV", "10**(-9) J m**(-2) eV**(-1)",
+++      "nJ m**(-2) eV**(-1)", "nJ /m**2 /eV"],
+++     10 ** -7 * u.J * u.cm ** -2 * u.MeV ** -1),
+++    (["sqrt(erg /pixel /s /GHz)", "(erg /pixel /s /GHz)**(0.5)",
+++      "(erg /pixel /s /GHz)**(1/2)",
+++      "erg**(0.5) pixel**(-0.5) s**(-0.5) GHz**(-0.5)"],
+++     (u.erg * u.pixel ** -1 * u.s ** -1 * u.GHz ** -1) ** 0.5),
+++    (["(count /s) (/pixel /s)", "(count /s) * (/pixel /s)",
+++      "count /pixel /s**2"],
+++     (u.count / u.s) * (1.0 / (u.pixel * u.s)))])
+++def test_ogip_grammar(strings, unit):
+++    for s in strings:
++         print(s)
++         unit2 = u_format.OGIP.parse(s)
++         assert unit2 == unit
++ 
++-    # These examples are taken from the EXAMPLES section of
++-    # http://heasarc.gsfc.nasa.gov/docs/heasarc/ofwg/docs/general/ogip_93_001/
++-    data = [
++-        (["count /s", "count/s", "count s**(-1)", "count / s", "count /s "],
++-         u.count / u.s),
++-        (["/pixel /s", "/(pixel * s)"], (u.pixel * u.s) ** -1),
++-        (["count /m**2 /s /eV", "count m**(-2) * s**(-1) * eV**(-1)",
++-          "count /(m**2 * s * eV)"],
++-         u.count * u.m ** -2 * u.s ** -1 * u.eV ** -1),
++-        (["erg /pixel /s /GHz", "erg /s /GHz /pixel", "erg /pixel /(s * GHz)"],
++-         u.erg / (u.s * u.GHz * u.pixel)),
++-        (["keV**2 /yr /angstrom", "10**(10) keV**2 /yr /m",
++-          # Though this is given as an example, it seems to violate the rules
++-          # of not raising scales to powers, so I'm just excluding it
++-          # "(10**2 MeV)**2 /yr /m"
++-         ],
++-         u.keV**2 / (u.yr * u.angstrom)),
++-        (["10**(46) erg /s", "10**46 erg /s", "10**(39) J /s", "10**(39) W",
++-          "10**(15) YW", "YJ /fs"],
++-         10**46 * u.erg / u.s),
++-        (["10**(-7) J /cm**2 /MeV", "10**(-9) J m**(-2) eV**(-1)",
++-          "nJ m**(-2) eV**(-1)", "nJ /m**2 /eV"],
++-         10 ** -7 * u.J * u.cm ** -2 * u.MeV ** -1),
++-        (["sqrt(erg /pixel /s /GHz)", "(erg /pixel /s /GHz)**(0.5)",
++-          "(erg /pixel /s /GHz)**(1/2)",
++-          "erg**(0.5) pixel**(-0.5) s**(-0.5) GHz**(-0.5)"],
++-         (u.erg * u.pixel ** -1 * u.s ** -1 * u.GHz ** -1) ** 0.5),
++-        (["(count /s) (/pixel /s)", "(count /s) * (/pixel /s)",
++-          "count /pixel /s**2"],
++-         (u.count / u.s) * (1.0 / (u.pixel * u.s)))]
++-
++-    for strings, unit in data:
++-        for s in strings:
++-            yield _test_ogip_grammar, s, unit
++-
++-
++-def test_ogip_grammar_fail():
++-    @raises(ValueError)
++-    def _test_ogip_grammar_fail(s):
++-        u_format.OGIP.parse(s)
++-
++-    data = ['log(photon /m**2 /s /Hz)',
++-            'sin( /pixel /s)',
++-            'log(photon /cm**2 /s /Hz) /(sin( /pixel /s))',
++-            'log(photon /cm**2 /s /Hz) (sin( /pixel /s))**(-1)',
++-            'dB(mW)', 'dex(cm/s**2)']
++-
++-    for s in data:
++-        yield _test_ogip_grammar_fail, s
++-
++-
++-def test_roundtrip():
++-    def _test_roundtrip(unit):
++-        a = core.Unit(unit.to_string('generic'), format='generic')
++-        b = core.Unit(unit.decompose().to_string('generic'), format='generic')
++-        assert_allclose(a.decompose().scale, unit.decompose().scale, rtol=1e-2)
++-        assert_allclose(b.decompose().scale, unit.decompose().scale, rtol=1e-2)
++-
++-    for key, val in u.__dict__.items():
++-        if isinstance(val, core.UnitBase) and not isinstance(val, core.PrefixUnit):
++-            yield _test_roundtrip, val
++-
++-
++-def test_roundtrip_vo_unit():
++-    def _test_roundtrip_vo_unit(unit, skip_decompose):
++-        a = core.Unit(unit.to_string('vounit'), format='vounit')
++-        assert_allclose(a.decompose().scale, unit.decompose().scale, rtol=1e-2)
++-        if skip_decompose:
++-            return
++-        u = unit.decompose().to_string('vounit')
++-        assert '  ' not in u
++-        b = core.Unit(u, format='vounit')
++-        assert_allclose(b.decompose().scale, unit.decompose().scale, rtol=1e-2)
++-
++-    x = u_format.VOUnit
++-    for key, val in x._units.items():
++-        if isinstance(val, core.UnitBase) and not isinstance(val, core.PrefixUnit):
++-            yield _test_roundtrip_vo_unit, val, val in (u.mag, u.dB)
++-
++-
++-def test_roundtrip_fits():
++-    def _test_roundtrip_fits(unit):
++-        s = unit.to_string('fits')
++-        a = core.Unit(s, format='fits')
++-        assert_allclose(a.decompose().scale, unit.decompose().scale, rtol=1e-2)
++-
++-    for key, val in u_format.Fits._units.items():
++-        if isinstance(val, core.UnitBase) and not isinstance(val, core.PrefixUnit):
++-            yield _test_roundtrip_fits, val
++-
++ 
++-def test_roundtrip_cds():
++-    def _test_roundtrip_cds(unit):
++-        a = core.Unit(unit.to_string('cds'), format='cds')
++-        assert_allclose(a.decompose().scale, unit.decompose().scale, rtol=1e-2)
++-        try:
++-            b = core.Unit(unit.decompose().to_string('cds'), format='cds')
++-        except ValueError:  # skip mag: decomposes into dex, unknown to OGIP
++-            return
+++@pytest.mark.parametrize('string', [
+++    'log(photon /m**2 /s /Hz)',
+++    'sin( /pixel /s)',
+++    'log(photon /cm**2 /s /Hz) /(sin( /pixel /s))',
+++    'log(photon /cm**2 /s /Hz) (sin( /pixel /s))**(-1)',
+++    'dB(mW)', 'dex(cm/s**2)'])
+++def test_ogip_grammar_fail(string):
+++    with pytest.raises(ValueError):
+++        print(string)
+++        u_format.OGIP.parse(string)
+++
+++
+++@pytest.mark.parametrize('unit', [val for key, val in u.__dict__.items()
+++                                  if (isinstance(val, core.UnitBase) and
+++                                      not isinstance(val, core.PrefixUnit))])
+++def test_roundtrip(unit):
+++    a = core.Unit(unit.to_string('generic'), format='generic')
+++    b = core.Unit(unit.decompose().to_string('generic'), format='generic')
+++    assert_allclose(a.decompose().scale, unit.decompose().scale, rtol=1e-2)
+++    assert_allclose(b.decompose().scale, unit.decompose().scale, rtol=1e-2)
+++
+++
+++@pytest.mark.parametrize('unit', [
+++    val for key, val in u_format.VOUnit._units.items()
+++    if (isinstance(val, core.UnitBase) and
+++        not isinstance(val, core.PrefixUnit))])
+++def test_roundtrip_vo_unit(unit):
+++    a = core.Unit(unit.to_string('vounit'), format='vounit')
+++    assert_allclose(a.decompose().scale, unit.decompose().scale, rtol=1e-2)
+++    if unit not in (u.mag, u.dB):
+++        ud = unit.decompose().to_string('vounit')
+++        assert '  ' not in ud
+++        b = core.Unit(ud, format='vounit')
++         assert_allclose(b.decompose().scale, unit.decompose().scale, rtol=1e-2)
++ 
++-    x = u_format.CDS
++-    for key, val in x._units.items():
++-        if isinstance(val, core.UnitBase) and not isinstance(val, core.PrefixUnit):
++-            yield _test_roundtrip_cds, val
++ 
+++@pytest.mark.parametrize('unit', [
+++    val for key, val in u_format.Fits._units.items()
+++    if (isinstance(val, core.UnitBase) and
+++        not isinstance(val, core.PrefixUnit))])
+++def test_roundtrip_fits(unit):
+++    s = unit.to_string('fits')
+++    a = core.Unit(s, format='fits')
+++    assert_allclose(a.decompose().scale, unit.decompose().scale, rtol=1e-2)
++ 
++-def test_roundtrip_ogip():
++-    def _test_roundtrip_ogip(unit):
++-        a = core.Unit(unit.to_string('ogip'), format='ogip')
++-        assert_allclose(a.decompose().scale, unit.decompose().scale, rtol=1e-2)
++-        try:
++-            b = core.Unit(unit.decompose().to_string('ogip'), format='ogip')
++-        except ValueError:  # skip mag: decomposes into dex, unknown to OGIP
++-            return
++-        assert_allclose(b.decompose().scale, unit.decompose().scale, rtol=1e-2)
++ 
++-    x = u_format.OGIP
++-    for key, val in x._units.items():
++-        if isinstance(val, core.UnitBase) and not isinstance(val, core.PrefixUnit):
++-            yield _test_roundtrip_ogip, val
+++@pytest.mark.parametrize('unit', [
+++    val for key, val in u_format.CDS._units.items()
+++    if (isinstance(val, core.UnitBase) and
+++        not isinstance(val, core.PrefixUnit))])
+++def test_roundtrip_cds(unit):
+++    a = core.Unit(unit.to_string('cds'), format='cds')
+++    assert_allclose(a.decompose().scale, unit.decompose().scale, rtol=1e-2)
+++    try:
+++        b = core.Unit(unit.decompose().to_string('cds'), format='cds')
+++    except ValueError:  # skip mag: decomposes into dex, unknown to OGIP
+++        return
+++    assert_allclose(b.decompose().scale, unit.decompose().scale, rtol=1e-2)
+++
+++
+++@pytest.mark.parametrize('unit', [
+++    val for key, val in u_format.OGIP._units.items()
+++    if (isinstance(val, core.UnitBase) and
+++        not isinstance(val, core.PrefixUnit))])
+++def test_roundtrip_ogip(unit):
+++    a = core.Unit(unit.to_string('ogip'), format='ogip')
+++    assert_allclose(a.decompose().scale, unit.decompose().scale, rtol=1e-2)
+++    try:
+++        b = core.Unit(unit.decompose().to_string('ogip'), format='ogip')
+++    except ValueError:  # skip mag: decomposes into dex, unknown to OGIP
+++        return
+++    assert_allclose(b.decompose().scale, unit.decompose().scale, rtol=1e-2)
++ 
++ 
++ def test_fits_units_available():
++@@ -307,22 +266,16 @@ def test_latex_inline_scale():
++     assert fluxunit.to_string('latex_inline') == latex_inline
++ 
++ 
++-def test_format_styles():
+++@pytest.mark.parametrize('format_spec, string', [
+++    ('generic','erg / (cm2 s)'),
+++    ('s', 'erg / (cm2 s)'),
+++    ('console', '  erg  \n ------\n s cm^2'),
+++    ('latex', '$\\mathrm{\\frac{erg}{s\\,cm^{2}}}$'),
+++    ('latex_inline', '$\\mathrm{erg\\,s^{-1}\\,cm^{-2}}$'),
+++    ('>20s','       erg / (cm2 s)')])
+++def test_format_styles(format_spec, string):
++     fluxunit = u.erg / (u.cm ** 2 * u.s)
++-    def _test_format_styles(format_spec, s):
++-        assert format(fluxunit, format_spec) == s
++-
++-    format_s_pairs = [
++-        ('generic','erg / (cm2 s)'),
++-        ('s', 'erg / (cm2 s)'),
++-        ('console', '  erg  \n ------\n s cm^2'),
++-        ('latex', '$\\mathrm{\\frac{erg}{s\\,cm^{2}}}$'),
++-        ('latex_inline', '$\\mathrm{erg\\,s^{-1}\\,cm^{-2}}$'),
++-        ('>20s','       erg / (cm2 s)'),
++-    ]
++-
++-    for format_, s in format_s_pairs:
++-        yield _test_format_styles, format_, s
+++    assert format(fluxunit, format_spec) == string
++ 
++ 
++ def test_flatten_to_known():
++@@ -332,10 +285,9 @@ def test_flatten_to_known():
++     assert myunit2.to_string('fits') == 'bit3 erg Hz-1'
++ 
++ 
++-@raises(ValueError)
++ def test_flatten_impossible():
++     myunit = u.def_unit("FOOBAR_Two")
++-    with u.add_enabled_units(myunit):
+++    with u.add_enabled_units(myunit), pytest.raises(ValueError):
++         myunit.to_string('fits')
++ 
++ 
++@@ -434,34 +386,20 @@ def test_deprecated_did_you_mean_units():
++     assert '0.1nm' in six.text_type(w[0].message)
++ 
++ 
++-def test_fits_function():
+++@pytest.mark.parametrize('string', ['mag(ct/s)', 'dB(mW)', 'dex(cm s**-2)'])
+++def test_fits_function(string):
++     # Function units cannot be written, so ensure they're not parsed either.
++-    @raises(ValueError)
++-    def _test_fits_grammar_fail(s):
++-        print(s)
++-        u_format.Fits().parse(s)
++-
++-    data = ['mag(ct/s)',
++-            'dB(mW)',
++-            'dex(cm s**-2)']
++-
++-    for s in data:
++-        yield _test_fits_grammar_fail, s
+++    with pytest.raises(ValueError):
+++        print(string)
+++        u_format.Fits().parse(string)
++ 
++ 
++-def test_vounit_function():
+++@pytest.mark.parametrize('string', ['mag(ct/s)', 'dB(mW)', 'dex(cm s**-2)'])
+++def test_vounit_function(string):
++     # Function units cannot be written, so ensure they're not parsed either.
++-    @raises(ValueError)
++-    def _test_vounit_grammar_fail(s):
++-        print(s)
++-        u_format.VOUnit().parse(s)
++-
++-    data = ['mag(ct/s)',
++-            'dB(mW)',
++-            'dex(cm s**-2)']
++-
++-    for s in data:
++-        yield _test_vounit_grammar_fail, s
+++    with pytest.raises(ValueError):
+++        print(string)
+++        u_format.VOUnit().parse(string)
++ 
++ 
++ def test_vounit_binary_prefix():
++diff --git a/astropy/wcs/tests/test_profiling.py b/astropy/wcs/tests/test_profiling.py
++index a17a076..57d9a93 100644
++--- a/astropy/wcs/tests/test_profiling.py
+++++ b/astropy/wcs/tests/test_profiling.py
++@@ -7,84 +7,61 @@ import os
++ 
++ import numpy as np
++ 
+++from ...tests.helper import pytest
++ from ...utils.data import get_pkg_data_filenames, get_pkg_data_contents
++ from ...utils.misc import NumpyRNGContext
++ 
++ from ... import wcs
++ 
+++#hdr_map_file_list = list(get_pkg_data_filenames("maps", pattern="*.hdr"))
++ 
++-def test_maps():
++-    def test_map(filename):
++-        header = get_pkg_data_contents(os.path.join("maps", filename))
++-        wcsobj = wcs.WCS(header)
++-
++-        with NumpyRNGContext(123456789):
++-            x = np.random.rand(2 ** 12, wcsobj.wcs.naxis)
++-            world = wcsobj.wcs_pix2world(x, 1)
++-            pix = wcsobj.wcs_world2pix(x, 1)
++-
++-    hdr_file_list = list(get_pkg_data_filenames("maps", pattern="*.hdr"))
++-
++-    # actually perform a test for each one
++-    for filename in hdr_file_list:
++-
++-        # use the base name of the file, because everything we yield
++-        # will show up in the test name in the pandokia report
++-        filename = os.path.basename(filename)
++-
++-        # yield a function name and parameters to make a generated test
++-        yield test_map, filename
+++# use the base name of the file, because everything we yield
+++# will show up in the test name in the pandokia report
+++hdr_map_file_list = [os.path.basename(fname) for fname in get_pkg_data_filenames("maps", pattern="*.hdr")]
++ 
++-    # AFTER we tested with every file that we found, check to see that we
++-    # actually have the list we expect.  If N=0, we will not have performed
++-    # any tests at all.  If N < n_data_files, we are missing some files,
++-    # so we will have skipped some tests.  Without this check, both cases
++-    # happen silently!
+++# Checking the number of files before reading them in.
+++# OLD COMMENTS:
+++# AFTER we tested with every file that we found, check to see that we
+++# actually have the list we expect.  If N=0, we will not have performed
+++# any tests at all.  If N < n_data_files, we are missing some files,
+++# so we will have skipped some tests.  Without this check, both cases
+++# happen silently!
++ 
++-    # how many do we expect to see?
++-    n_data_files = 28
++-
++-    if len(hdr_file_list) != n_data_files:
++-        assert False, (
++-            "test_maps has wrong number data files: found {}, expected "
++-            " {}".format(len(hdr_file_list), n_data_files))
++-        # b.t.w.  If this assert happens, py.test reports one more test
++-        # than it would have otherwise.
+++def test_read_map_files():
+++    # how many map files we expect to see
+++    n_map_files = 28
++ 
+++    assert len(hdr_map_file_list) == n_map_files, (
+++           "test_read_map_files has wrong number data files: found {}, expected "
+++           " {}".format(len(hdr_map_file_list), n_map_files))
++ 
++-def test_spectra():
++-    def test_spectrum(filename):
++-        header = get_pkg_data_contents(os.path.join("spectra", filename))
+++@pytest.mark.parametrize("filename", hdr_map_file_list)
+++def test_map(filename):
+++        header = get_pkg_data_contents(os.path.join("maps", filename))
++         wcsobj = wcs.WCS(header)
+++
++         with NumpyRNGContext(123456789):
++-            x = np.random.rand(2 ** 16, wcsobj.wcs.naxis)
+++            x = np.random.rand(2 ** 12, wcsobj.wcs.naxis)
++             world = wcsobj.wcs_pix2world(x, 1)
++             pix = wcsobj.wcs_world2pix(x, 1)
++ 
++-    hdr_file_list = list(get_pkg_data_filenames("spectra", pattern="*.hdr"))
+++hdr_spec_file_list = [os.path.basename(fname) for fname in get_pkg_data_filenames("spectra", pattern="*.hdr")]
++ 
++-    # actually perform a test for each one
++-    for filename in hdr_file_list:
+++def test_read_spec_files():
+++    # how many spec files expected
+++    n_spec_files = 6
++ 
++-        # use the base name of the file, because everything we yield
++-        # will show up in the test name in the pandokia report
++-        filename = os.path.basename(filename)
++-
++-        # yield a function name and parameters to make a generated test
++-        yield test_spectrum, filename
++-
++-    # AFTER we tested with every file that we found, check to see that we
++-    # actually have the list we expect.  If N=0, we will not have performed
++-    # any tests at all.  If N < n_data_files, we are missing some files,
++-    # so we will have skipped some tests.  Without this check, both cases
++-    # happen silently!
++-
++-    # how many do we expect to see?
++-    n_data_files = 6
++-
++-    if len(hdr_file_list) != n_data_files:
++-        assert False, (
+++    assert len(hdr_spec_file_list) == n_spec_files, (
++             "test_spectra has wrong number data files: found {}, expected "
++-            " {}".format(len(hdr_file_list), n_data_files))
+++            " {}".format(len(hdr_spec_file_list), n_spec_files))
++         # b.t.w.  If this assert happens, py.test reports one more test
++         # than it would have otherwise.
+++
+++@pytest.mark.parametrize("filename", hdr_spec_file_list)
+++def test_spectrum(filename):
+++    header = get_pkg_data_contents(os.path.join("spectra", filename))
+++    wcsobj = wcs.WCS(header)
+++    with NumpyRNGContext(123456789):
+++        x = np.random.rand(2 ** 16, wcsobj.wcs.naxis)
+++        world = wcsobj.wcs_pix2world(x, 1)
+++        pix = wcsobj.wcs_world2pix(x, 1)
++diff --git a/astropy/wcs/tests/test_wcs.py b/astropy/wcs/tests/test_wcs.py
++index cf9db9a..12e77bc 100644
++--- a/astropy/wcs/tests/test_wcs.py
+++++ b/astropy/wcs/tests/test_wcs.py
++@@ -26,99 +26,67 @@ from ...io import fits
++ from ...extern.six.moves import range
++ 
++ 
++-# test_maps() is a generator
++-def test_maps():
+++class TestMaps(object):
+++    def setup(self):
+++        # get the list of the hdr files that we want to test
+++        self._file_list = list(get_pkg_data_filenames("maps", pattern="*.hdr"))
++ 
++-    # test_map() is the function that is called to perform the generated test
++-    def test_map(filename):
++-
++-        # the test parameter is the base name of the file to use; find
++-        # the file in the installed wcs test directory
++-        header = get_pkg_data_contents(
++-            os.path.join("maps", filename), encoding='binary')
++-        wcsobj = wcs.WCS(header)
++-
++-        world = wcsobj.wcs_pix2world([[97, 97]], 1)
++-
++-        assert_array_almost_equal(world, [[285.0, -66.25]], decimal=1)
++-
++-        pix = wcsobj.wcs_world2pix([[285.0, -66.25]], 1)
++-
++-        assert_array_almost_equal(pix, [[97, 97]], decimal=0)
++-
++-    # get the list of the hdr files that we want to test
++-    hdr_file_list = list(get_pkg_data_filenames("maps", pattern="*.hdr"))
++-
++-    # actually perform a test for each one
++-    for filename in hdr_file_list:
++-
++-        # use the base name of the file, because everything we yield
++-        # will show up in the test name in the pandokia report
++-        filename = os.path.basename(filename)
++-
++-        # yield a function name and parameters to make a generated test
++-        yield test_map, filename
++-
++-    # AFTER we tested with every file that we found, check to see that we
++-    # actually have the list we expect.  If N=0, we will not have performed
++-    # any tests at all.  If N < n_data_files, we are missing some files,
++-    # so we will have skipped some tests.  Without this check, both cases
++-    # happen silently!
++-
++-    # how many do we expect to see?
++-    n_data_files = 28
++-
++-    if len(hdr_file_list) != n_data_files:
++-        assert False, (
++-            "test_maps has wrong number data files: found {}, expected "
++-            " {}".format(len(hdr_file_list), n_data_files))
++-        # b.t.w.  If this assert happens, py.test reports one more test
++-        # than it would have otherwise.
+++    def test_consistency(self):
+++        # Check to see that we actually have the list we expect, so that we
+++        # do not get in a situation where the list is empty or incomplete and
+++        # the tests still seem to pass correctly.
++ 
+++        # how many do we expect to see?
+++        n_data_files = 28
++ 
++-# test_spectra() is a generator
++-def test_spectra():
++-
++-    # test_spectrum() is the function that is called to perform the
++-    # generated test
++-    def test_spectrum(filename):
++-
++-        # the test parameter is the base name of the file to use; find
++-        # the file in the installed wcs test directory
++-        header = get_pkg_data_contents(
++-            os.path.join("spectra", filename), encoding='binary')
++-
++-        all_wcs = wcs.find_all_wcs(header)
++-        assert len(all_wcs) == 9
++-
++-    # get the list of the hdr files that we want to test
++-    hdr_file_list = list(get_pkg_data_filenames("spectra", pattern="*.hdr"))
++-
++-    # actually perform a test for each one
++-    for filename in hdr_file_list:
++-
++-        # use the base name of the file, because everything we yield
++-        # will show up in the test name in the pandokia report
++-        filename = os.path.basename(filename)
++-
++-        # yield a function name and parameters to make a generated test
++-        yield test_spectrum, filename
++-
++-    # AFTER we tested with every file that we found, check to see that we
++-    # actually have the list we expect.  If N=0, we will not have performed
++-    # any tests at all.  If N < n_data_files, we are missing some files,
++-    # so we will have skipped some tests.  Without this check, both cases
++-    # happen silently!
++-
++-    # how many do we expect to see?
++-    n_data_files = 6
++-
++-    if len(hdr_file_list) != n_data_files:
++-        assert False, (
+++        assert len(self._file_list) == n_data_files, (
+++            "test_spectra has wrong number data files: found {}, expected "
+++            " {}".format(len(self._file_list), n_data_files))
+++
+++    def test_maps(self):
+++        for filename in self._file_list:
+++            # use the base name of the file, so we get more useful messages
+++            # for failing tests.
+++            filename = os.path.basename(filename)
+++            # Now find the associated file in the installed wcs test directory.
+++            header = get_pkg_data_contents(
+++                os.path.join("maps", filename), encoding='binary')
+++            # finally run the test.
+++            wcsobj = wcs.WCS(header)
+++            world = wcsobj.wcs_pix2world([[97, 97]], 1)
+++            assert_array_almost_equal(world, [[285.0, -66.25]], decimal=1)
+++            pix = wcsobj.wcs_world2pix([[285.0, -66.25]], 1)
+++            assert_array_almost_equal(pix, [[97, 97]], decimal=0)
+++
+++
+++class TestSpectra(object):
+++    def setup(self):
+++        self._file_list = list(get_pkg_data_filenames("spectra",
+++                                                      pattern="*.hdr"))
+++
+++    def test_consistency(self):
+++        # Check to see that we actually have the list we expect, so that we
+++        # do not get in a situation where the list is empty or incomplete and
+++        # the tests still seem to pass correctly.
+++
+++        # how many do we expect to see?
+++        n_data_files = 6
+++
+++        assert len(self._file_list) == n_data_files, (
++             "test_spectra has wrong number data files: found {}, expected "
++-            " {}".format(len(hdr_file_list), n_data_files))
++-        # b.t.w.  If this assert happens, py.test reports one more test
++-        # than it would have otherwise.
+++            " {}".format(len(self._file_list), n_data_files))
+++
+++    def test_spectra(self):
+++        for filename in self._file_list:
+++            # use the base name of the file, so we get more useful messages
+++            # for failing tests.
+++            filename = os.path.basename(filename)
+++            # Now find the associated file in the installed wcs test directory.
+++            header = get_pkg_data_contents(
+++                os.path.join("spectra", filename), encoding='binary')
+++            # finally run the test.
+++            all_wcs = wcs.find_all_wcs(header)
+++            assert len(all_wcs) == 9
++ 
++ 
++ def test_fixes():
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..16acc227ed0e5e7b1a012453b9324bc1f99a7f27
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,21 @@@
++From: Ole Streicher <olebole@debian.org>
++Date: Tue, 13 Dec 2016 09:41:39 +0100
++Subject: Disable astropy-helpers copy
++
++---
++ setup.cfg | 2 +-
++ 1 file changed, 1 insertion(+), 1 deletion(-)
++
++diff --git a/setup.cfg b/setup.cfg
++index cc67de4..206e6f8 100644
++--- a/setup.cfg
+++++ b/setup.cfg
++@@ -23,7 +23,7 @@ open_files_ignore = "astropy.log" "/etc/hosts"
++ bitmap = static/wininst_background.bmp
++ 
++ [ah_bootstrap]
++-auto_use = True
+++auto_use = False
++ 
++ [pep8]
++ # E101 - mix of tabs and spaces
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f4f523882b02ec61c82f2bf1ce4da8971253ef7b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,196 @@@
++From: Ole Streicher <olebole@debian.org>
++Date: Thu, 12 Jan 2017 11:37:47 +0100
++Subject: Use external python modules instead of convenience copies
++
++---
++ astropy/coordinates/angle_utilities.py |  2 +-
++ astropy/extern/configobj.py            |  5 ++++-
++ astropy/extern/six.py                  |  2 +-
++ astropy/table/jsviewer.py              | 14 ++++++++------
++ astropy/table/tests/test_jsviewer.py   |  6 +++---
++ astropy/tests/helper.py                |  2 +-
++ astropy/units/format/cds.py            |  4 ++--
++ astropy/units/format/generic.py        |  4 ++--
++ astropy/units/format/ogip.py           |  4 ++--
++ 9 files changed, 24 insertions(+), 19 deletions(-)
++
++diff --git a/astropy/coordinates/angle_utilities.py b/astropy/coordinates/angle_utilities.py
++index ddaeaf6..06eefaf 100644
++--- a/astropy/coordinates/angle_utilities.py
+++++ b/astropy/coordinates/angle_utilities.py
++@@ -64,7 +64,7 @@ class _AngleParser(object):
++ 
++     @classmethod
++     def _make_parser(cls):
++-        from ..extern.ply import lex, yacc
+++        from ply import lex, yacc
++ 
++         # List of token names.
++         tokens = (
++diff --git a/astropy/extern/configobj.py b/astropy/extern/configobj.py
++index 8d1bd8c..e3bb0e0 100644
++--- a/astropy/extern/configobj.py
+++++ b/astropy/extern/configobj.py
++@@ -7,5 +7,8 @@ currently installed version of python.
++ Also, this should actually never actually show up as a docstring, because
++ it should get overwritten by the appropriate configobj docstring.
++ """
+++from __future__ import absolute_import
+++import validate
+++import configobj
+++
++ 
++-from .configobj import configobj, validate, __doc__
++diff --git a/astropy/extern/six.py b/astropy/extern/six.py
++index 5398fc0..fb3a30c 100644
++--- a/astropy/extern/six.py
+++++ b/astropy/extern/six.py
++@@ -13,7 +13,7 @@ _SIX_MIN_VERSION = StrictVersion('1.10.0')
++ # Update this to prevent Astropy from using its bundled copy of six
++ # (but only if some other version of at least _SIX_MIN_VERSION can
++ # be provided)
++-_SIX_SEARCH_PATH = ['astropy.extern.bundled.six', 'six']
+++_SIX_SEARCH_PATH = ['six']
++ 
++ 
++ def _find_module(name, path=None):
++diff --git a/astropy/table/jsviewer.py b/astropy/table/jsviewer.py
++index ae99eb9..d856cf8 100644
++--- a/astropy/table/jsviewer.py
+++++ b/astropy/table/jsviewer.py
++@@ -30,8 +30,8 @@ class Conf(_config.ConfigNamespace):
++ conf = Conf()
++ 
++ 
++-EXTERN_JS_DIR = abspath(join(dirname(extern.__file__), 'js'))
++-EXTERN_CSS_DIR = abspath(join(dirname(extern.__file__), 'css'))
+++EXTERN_JS_DIR = '/usr/share/javascript'
+++EXTERN_CSS_DIR = EXTERN_JS_DIR
++ 
++ IPYNB_JS_SCRIPT = """
++ <script>
++@@ -108,22 +108,24 @@ class JSViewer(object):
++     @property
++     def jquery_urls(self):
++         if self._use_local_files:
++-            return ['file://' + join(EXTERN_JS_DIR, 'jquery-3.1.1.min.js'),
++-                    'file://' + join(EXTERN_JS_DIR, 'jquery.dataTables.min.js')]
+++            return ['file://' + join(EXTERN_JS_DIR, 'jquery', 'jquery.min.js'),
+++                    'file://' + join(EXTERN_JS_DIR, 'jquery-datatables',
+++                                     'jquery.dataTables.min.js')]
++         else:
++             return [conf.jquery_url, conf.datatables_url]
++ 
++     @property
++     def css_urls(self):
++         if self._use_local_files:
++-            return ['file://' + join(EXTERN_CSS_DIR,
+++            return ['file://' + join(EXTERN_CSS_DIR, 'jquery-datatables', 'css',
++                                      'jquery.dataTables.css')]
++         else:
++             return conf.css_urls
++ 
++     def _jstable_file(self):
++         if self._use_local_files:
++-            return 'file://' + join(EXTERN_JS_DIR, 'jquery.dataTables.min')
+++            return 'file://' + join(EXTERN_JS_DIR, 'jquery-datatables',
+++                                    'jquery.dataTables.min')
++         else:
++             return conf.datatables_url[:-3]
++ 
++diff --git a/astropy/table/tests/test_jsviewer.py b/astropy/table/tests/test_jsviewer.py
++index af04b7e..e02d4be 100644
++--- a/astropy/table/tests/test_jsviewer.py
+++++ b/astropy/table/tests/test_jsviewer.py
++@@ -127,9 +127,9 @@ def test_write_jsviewer_local(tmpdir):
++         table_id='test',
++         length='50',
++         display_length='10, 25, 50, 100, 500, 1000',
++-        datatables_css_url='file://' + join(EXTERN_DIR, 'css', 'jquery.dataTables.css'),
++-        datatables_js_url='file://' + join(EXTERN_DIR, 'js', 'jquery.dataTables.min.js'),
++-        jquery_url='file://' + join(EXTERN_DIR, 'js', 'jquery-3.1.1.min.js')
+++        datatables_css_url='file:///usr/share/javascript/jquery-datatables/css/jquery.dataTables.css',
+++        datatables_js_url='file:///usr/share/javascript/jquery-datatables/jquery.dataTables.min.js',
+++        jquery_url='file:///usr/share/javascript/jquery/jquery.min.js'
++     )
++     with open(tmpfile) as f:
++         assert f.read().strip() == ref.strip()
++diff --git a/astropy/tests/helper.py b/astropy/tests/helper.py
++index 9b0bf3b..b9743c5 100644
++--- a/astropy/tests/helper.py
+++++ b/astropy/tests/helper.py
++@@ -40,7 +40,7 @@ __all__ = ['raises', 'enable_deprecations_as_exceptions', 'remote_data',
++            'pickle_protocol', 'generic_recursive_equality_test']
++ 
++ 
++-if os.environ.get('ASTROPY_USE_SYSTEM_PYTEST') or '_pytest' in sys.modules:
+++if True:
++     import pytest
++ 
++ else:
++diff --git a/astropy/units/format/cds.py b/astropy/units/format/cds.py
++index ecb78e2..d864738 100644
++--- a/astropy/units/format/cds.py
+++++ b/astropy/units/format/cds.py
++@@ -78,7 +78,7 @@ class CDS(Base):
++ 
++     @classmethod
++     def _make_lexer(cls):
++-        from ...extern.ply import lex
+++        from ply import lex
++ 
++         tokens = cls._tokens
++ 
++@@ -141,7 +141,7 @@ class CDS(Base):
++         <https://bitbucket.org/nxg/unity/>`_.
++         """
++ 
++-        from ...extern.ply import yacc
+++        from ply import yacc
++ 
++         tokens = cls._tokens
++ 
++diff --git a/astropy/units/format/generic.py b/astropy/units/format/generic.py
++index f4aa8c0..d404017 100644
++--- a/astropy/units/format/generic.py
+++++ b/astropy/units/format/generic.py
++@@ -102,7 +102,7 @@ class Generic(Base):
++ 
++     @classmethod
++     def _make_lexer(cls):
++-        from ...extern.ply import lex
+++        from ply import lex
++ 
++         tokens = cls._tokens
++ 
++@@ -181,7 +181,7 @@ class Generic(Base):
++         formats, the only difference being the set of available unit
++         strings.
++         """
++-        from ...extern.ply import yacc
+++        from ply import yacc
++ 
++         tokens = cls._tokens
++ 
++diff --git a/astropy/units/format/ogip.py b/astropy/units/format/ogip.py
++index 7c66a6b..9eed1de 100644
++--- a/astropy/units/format/ogip.py
+++++ b/astropy/units/format/ogip.py
++@@ -110,7 +110,7 @@ class OGIP(generic.Generic):
++ 
++     @classmethod
++     def _make_lexer(cls):
++-        from ...extern.ply import lex
+++        from ply import lex
++ 
++         tokens = cls._tokens
++ 
++@@ -179,7 +179,7 @@ class OGIP(generic.Generic):
++         <https://bitbucket.org/nxg/unity/>`_.
++         """
++ 
++-        from ...extern.ply import yacc
+++        from ply import yacc
++ 
++         tokens = cls._tokens
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..a445d102496573da1ee1a367289b963798e4d82b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,23 @@@
++From: Ole Streicher <olebole@debian.org>
++Date: Tue, 13 Dec 2016 09:41:39 +0100
++Subject: Make TFORMx check more flexible The maximal column length in cfitsio
++ changed between version 3370 and 3380. This patch checks their syntax,
++ without a specific length.
++
++---
++ astropy/io/fits/tests/test_image.py | 2 +-
++ 1 file changed, 1 insertion(+), 1 deletion(-)
++
++diff --git a/astropy/io/fits/tests/test_image.py b/astropy/io/fits/tests/test_image.py
++index a8551dd..17af9a0 100644
++--- a/astropy/io/fits/tests/test_image.py
+++++ b/astropy/io/fits/tests/test_image.py
++@@ -1107,7 +1107,7 @@ class TestCompressedImage(FitsTestCase):
++         hdu.writeto(self.temp('test.fits'))
++ 
++         with fits.open(self.temp('test.fits')) as hdul:
++-            assert (hdul['SCI'].data == cube).all()
+++            assert np.abs(hdul['SCI'].data - cube).max() < 1./15.
++ 
++     def test_subtractive_dither_seed(self):
++         """
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..1a30bc1d10ab15d5eb482c773f95d0f8df5e7b62
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,84 @@@
++From: Ole Streicher <olebole@debian.org>
++Date: Tue, 13 Dec 2016 09:41:39 +0100
++Subject: Mark all known test failures as xfail. These failures have been
++ discussed with upstream.
++
++---
++ astropy/table/tests/test_info.py                                      | 4 +++-
++ astropy/tests/tests/test_socketblocker.py                             | 4 ++--
++ astropy/visualization/wcsaxes/tests/test_display_world_coordinates.py | 4 ++++
++ astropy/vo/samp/tests/test_standard_profile.py                        | 2 ++
++ 4 files changed, 11 insertions(+), 3 deletions(-)
++
++diff --git a/astropy/table/tests/test_info.py b/astropy/table/tests/test_info.py
++index 2bbcc7a..50fbdb4 100644
++--- a/astropy/table/tests/test_info.py
+++++ b/astropy/table/tests/test_info.py
++@@ -8,6 +8,7 @@ from collections import OrderedDict
++ 
++ import numpy as np
++ 
+++from ...tests.helper import pytest
++ from ...extern import six
++ from ...extern.six.moves import cStringIO as StringIO
++ from ... import units as u
++@@ -229,7 +230,8 @@ def test_class_attribute():
++         t.info(out=out)
++         assert out.getvalue().splitlines() == exp
++ 
++-
+++# see https://github.com/astropy/astropy/issues/4336
+++@pytest.mark.xfail()
++ def test_ignore_warnings():
++     t = table.Table([[np.nan, np.nan]])
++     with warnings.catch_warnings(record=True) as warns:
++diff --git a/astropy/tests/tests/test_socketblocker.py b/astropy/tests/tests/test_socketblocker.py
++index c362fa5..783defe 100644
++--- a/astropy/tests/tests/test_socketblocker.py
+++++ b/astropy/tests/tests/test_socketblocker.py
++@@ -66,8 +66,8 @@ PY3_4 = sys.version_info[:2] >= (3, 4)
++ def _square(x):
++     return x ** 2
++ 
++-
++-@pytest.mark.skipif('not PY3_4 or sys.platform == "win32" or sys.platform.startswith("gnu0")')
+++# see https://github.com/astropy/astropy/issues/4193
+++@pytest.mark.skipif(True, reason="Blocks on Debian CI test")
++ def test_multiprocessing_forkserver():
++     """
++     Test that using multiprocessing with forkserver works.  Perhaps
++diff --git a/astropy/visualization/wcsaxes/tests/test_display_world_coordinates.py b/astropy/visualization/wcsaxes/tests/test_display_world_coordinates.py
++index 53436dd..4c710e7 100644
++--- a/astropy/visualization/wcsaxes/tests/test_display_world_coordinates.py
+++++ b/astropy/visualization/wcsaxes/tests/test_display_world_coordinates.py
++@@ -3,6 +3,8 @@ from ..core import WCSAxes
++ import matplotlib.pyplot as plt
++ from matplotlib.backend_bases import KeyEvent
++ 
+++import pytest
+++
++ from ....wcs import WCS
++ from ....extern import six
++ from ....coordinates import FK5
++@@ -93,6 +95,8 @@ class TestDisplayWorldCoordinate(BaseImageTests):
++ 
++         assert string_world5 == six.u('267.652 -28\xb046\'23" (world, overlay 3)')
++ 
+++    # See https://github.com/astropy/astropy/issues/5601
+++    @pytest.mark.xfail()
++     def test_cube_coords(self, tmpdir):
++         wcs = WCS(self.cube_header)
++ 
++diff --git a/astropy/vo/samp/tests/test_standard_profile.py b/astropy/vo/samp/tests/test_standard_profile.py
++index 325ac96..ac25e55 100644
++--- a/astropy/vo/samp/tests/test_standard_profile.py
+++++ b/astropy/vo/samp/tests/test_standard_profile.py
++@@ -62,6 +62,8 @@ class TestStandardProfile(object):
++ 
++         self.hub.stop()
++ 
+++    # see https://github.com/astropy/astropy/issues/5460
+++    @pytest.mark.skipif(True, reason="Setup fails due to SSL problems")
++     def test_main(self):
++ 
++         self.client1_id = self.client1.get_public_id()
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..50bf9529ce264a65cf60576d052baceb03f3213f
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,22 @@@
++From: Ole Streicher <olebole@debian.org>
++Date: Tue, 13 Dec 2016 09:41:39 +0100
++Subject: Install the scripts only for the Python 3 version
++
++---
++ setup.py | 3 ++-
++ 1 file changed, 2 insertions(+), 1 deletion(-)
++
++diff --git a/setup.py b/setup.py
++index ea11de4..aab845e 100755
++--- a/setup.py
+++++ b/setup.py
++@@ -53,7 +53,8 @@ package_info['package_data'].setdefault('astropy', []).append('data/*')
++ # Add any necessary entry points
++ entry_points = {}
++ # Command-line scripts
++-entry_points['console_scripts'] = [
+++if sys.version_info[0] == 3:
+++    entry_points['console_scripts'] = [
++     'fits2bitmap = astropy.visualization.scripts.fits2bitmap:main',
++     'fitscheck = astropy.io.fits.scripts.fitscheck:main',
++     'fitsdiff = astropy.io.fits.scripts.fitsdiff:main',
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c47f1df5b64ed8aa83fe7159258800bd7acbe76e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,9 @@@
++disable_helper.patch
++fix_for_cfitsio_3380.patch
++only_python3-binaries.patch
++mark_known_failures.patch
++Ensure-NUMPY_LT_1_12-works-for-beta-prerelease.patch
++external_python_pkgs.patch
++Fix-default-value-for-remote_data-option.patch
++Use-parametrize-instead-of-yield.patch
++Allow-pytest-3.x-to-use-plugin-for-doctests-in-.rst-files.patch
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f3268a0b1345756dfc9862e444221904563424ac
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,11 @@@
++Document: python-astropy
++Title: Astropy Documentation
++Author: The Astropy Collaboration.
++Section: Science/Astronomy
++Abstract: Astropy is a community-driven package intended to contain much of
++ the core functionality and some common tools needed for performing astronomy
++ and astrophysics with Python. 
++
++Format: HTML
++Index: /usr/share/doc/python-astropy-doc/html/index.html
++Files: /usr/share/doc/python-astropy-doc/html/
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..4ecc793da577aac3266bf2f0a4aa4f4e7e290854
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++docs/_build/html
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..3005fbf7c10d4368328eca895da9ae2e1d906285
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,5 @@@
++# We store an extra license file since this is linked within the 
++# HTML documentation. It seems to be better to keep this file than
++# to remove these links or to link to the machine-readable Debian 
++# copyright file.
++extra-license-file usr/share/doc/python-astropy-doc/html/_sources/license.txt
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..27f6a13c7a6339c3dd40056b78437a9b2eff5b4d
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++usr/lib/python2*/dist-packages/astropy*
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9bb56c06e4d836cdcc4cfb50cd2bfcc0936d4c6d
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,5 @@@
++# The hardening is switched on, but does not cover all functions mentioned
++# in hardening-check.
++hardening-no-fortify-functions */astropy/utils/xml/_iterparser*.so
++# Python packages install all files into a common subdir by purpose.
++python-astropy: image-file-in-usr-lib
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9d13fec2a9716dde36662117bc3bdaa466764140
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++usr/lib/python3*/dist-packages/astropy*
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..63604dfeb642338735fd3fce000017f9e51ce5fe
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,5 @@@
++# The hardening is switched on, but does not cover all functions mentioned
++# in hardening-check.
++hardening-no-fortify-functions */astropy/utils/xml/_iterparser*.*
++# Python packages install all files into a common subdir by purpose.
++python3-astropy: image-file-in-usr-lib
diff --cc debian/rules
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..df33b64cd34a94729774d5445ef8c8a638e4476f
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,62 @@@
++#!/usr/bin/make -f
++
++PYTHON2:=$(shell pyversions -vr)
++PYTHON3:=$(shell py3versions -vr)
++
++# set the MPLCONFIGDIR to avoid writing into non writable location
++export HOME=$(CURDIR)/build
++export MPLCONFIGDIR=$(CURDIR)/build
++
++# Prevent setuptools/distribute from accessing the internet.
++export http_proxy = http://127.0.9.1:9
++
++%:
++      dh $@ --with python2,python3,sphinxdoc
++
++build-python%:
++      python$* setup.py build --use-system-libraries
++
++# We need to build python2 first, since cython is currently only available for 
++# python2, and we need cython to (re-) generate some of the C files.
++override_dh_auto_build: $(PYTHON2:%=build-python%) $(PYTHON3:%=build-python%)
++      #dh_auto_build
++
++install-python%:
++      python$* setup.py install --root=$(CURDIR)/debian/tmp --install-layout=deb
++
++override_dh_auto_install: $(PYTHON3:%=install-python%)
++      dh_auto_install
++
++override_dh_auto_build:
++      dh_auto_build -- --use-system-libraries
++
++override_dh_shlibdeps:
++      dh_shlibdeps
++      dh_numpy
++      dh_numpy3
++
++override_dh_installdocs-indep:
++      python setup.py build_sphinx
++      dh_installdocs
++
++override_dh_sphinxdoc-arch:
++      # sphinxdoc is only needed on indep and does not work here.
++
++override_dh_installchangelogs:
++      dh_installchangelogs docs/changelog.rst
++
++override_dh_auto_clean:
++      dh_auto_clean
++      rm -rf build astropy.egg-info
++      rm -rf astropy_helpers-*.egg
++      rm -rf docs/_build docs/_generated
++
++ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
++test-python%:
++      python$* setup.py test -vv --args -vv
++
++override_dh_auto_test: $(PYTHON2:%=test-python%) $(PYTHON3:%=test-python%)
++endif
++
++override_dh_strip_nondeterminism:
++      dh_strip_nondeterminism -Xinvalid.dat.gz
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..7938881d080d9ed1b45fd33c60f3e7c9265ba534
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,130 @@@
++.TH SAMP_HUB 1 "April 2015" "samp_hub" "astropy 1.0.2"
++.SH NAME
++samp_hub \- SAMP Hub Server
++.SH DESCRIPTION
++usage: samp_hub [\-h] [\-k CODE] [\-d ADDR] [\-p PORT] [\-f FILE] [\-w]
++.TP
++[\-P SIZE] [\-t SECONDS] [\-c SECONDS] [\-L LEVEL] [\-O FILE]
++[\-l LABEL] [\-m] [\-s] [\-C FILE] [\-K FILE]
++[\-\-cert\-reqs STRING] [\-\-ca\-certs FILE]
++[\-\-ssl\-version STRING]
++.SS "optional arguments:"
++.TP
++\fB\-h\fR, \fB\-\-help\fR
++show this help message and exit
++.TP
++\fB\-k\fR CODE, \fB\-\-secret\fR CODE
++custom secret code.
++.TP
++\fB\-d\fR ADDR, \fB\-\-addr\fR ADDR
++listening address (or IP).
++.TP
++\fB\-p\fR PORT, \fB\-\-port\fR PORT
++listening port number.
++.TP
++\fB\-f\fR FILE, \fB\-\-lockfile\fR FILE
++custom lockfile.
++.TP
++\fB\-w\fR, \fB\-\-no\-web\-profile\fR
++run the Hub disabling the Web Profile.
++.TP
++\fB\-P\fR SIZE, \fB\-\-pool\-size\fR SIZE
++the socket connections pool size.
++.SS "Timeout group:"
++.IP
++Special options to setup hub and client timeouts.It contains a set of
++special options that allows one to set up the Hub and clients inactivity
++timeouts, that is the Hub or client inactivity time interval after which
++the Hub shuts down or unregisters the client. Notification of
++samp.hub.disconnect MType is sent to the clients forcibly unregistered for
++timeout expiration.
++.TP
++\fB\-t\fR SECONDS, \fB\-\-timeout\fR SECONDS
++set the Hub inactivity timeout in SECONDS. By default
++it is set to 0, that is the Hub never expires.
++.TP
++\fB\-c\fR SECONDS, \fB\-\-client\-timeout\fR SECONDS
++set the client inactivity timeout in SECONDS. By
++default it is set to 0, that is the client never
++expires.
++.SS "Logging options:"
++.IP
++Additional options which allow one to customize the logging output. By default
++the SAMP Hub uses the standard output and standard error devices to print
++out INFO level logging messages. Using the options here below it is
++possible to modify the logging level and also specify the output files
++where redirect the logging messages.
++.TP
++\fB\-L\fR LEVEL, \fB\-\-log\-level\fR LEVEL
++set the Hub instance log level (OFF, ERROR, WARNING,
++INFO, DEBUG).
++.TP
++\fB\-O\fR FILE, \fB\-\-log\-output\fR FILE
++set the output file for the log messages.
++.SS "Advanced group:"
++.IP
++Advanced options addressed to facilitate administrative tasks and allow
++new non\-standard Hub behaviors. In particular the \fB\-\-label\fR options is used
++to assign a value to hub.label token and is used to assign a name to the
++Hub instance. The very special \fB\-\-multi\fR option allows one to start a Hub in
++multi\-instance mode. Multi\-instance mode is a non\-standard Hub behavior
++that enables multiple contemporaneous running Hubs. Multi\-instance hubs
++place their non\-standard lock\-files within the <home directory>/.samp\-1
++directory naming them making use of the format: samp\-hub\-<PID>\-<ID>, where
++PID is the Hub process ID while ID is an internal ID (integer).
++.TP
++\fB\-l\fR LABEL, \fB\-\-label\fR LABEL
++assign a LABEL to the Hub.
++.TP
++\fB\-m\fR, \fB\-\-multi\fR
++run the Hub in multi\-instance mode generating a custom
++lockfile with a random name.
++.SS "SSL group:"
++.IP
++Additional options to launch the Hub instance using the Secure Sockets
++Layer (HTTPS). The \fB\-\-key\-file\fR and \fB\-\-cert\-file\fR parameters specify optional
++files which contain a certificate to be used to identify the local side of
++the connection. Often the private key is stored in the same file as the
++certificate; in this case, only the \fB\-\-cert\-file\fR parameter need be passed.
++If the private key is stored in a separate file, both parameters must be
++used. If the private key is stored in the certificate file, it should come
++before the first certificate in the certificate chain.
++.TP
++\fB\-s\fR, \fB\-\-https\fR
++run the Hub using the Secure Sockets Layer.
++.TP
++\fB\-C\fR FILE, \fB\-\-cert\-file\fR FILE
++set the certificate file.
++.TP
++\fB\-K\fR FILE, \fB\-\-key\-file\fR FILE
++set the key file. By default this option is ignored,
++assuming that the private key is stored in the
++certificate file.
++.TP
++\fB\-\-cert\-reqs\fR STRING
++this option specifies whether a certificate is
++required from the client side of the connection, and
++whether it will be validated if provided. It must be
++one of the three values NONE (certificates ignored,
++default), OPTIONAL (not required, but validated if
++provided), or REQUIRED (required and validated). If
++the value of this option is not NONE, then the \fB\-\-cacerts\fR option must point to a file of CA certificates.
++.TP
++\fB\-\-ca\-certs\fR FILE
++the \fB\-\-ca\-certs\fR file contains a set of concatenated
++"certification authority" certificates, which are used
++to validate certificates passed from the client end of
++the connection.
++.TP
++\fB\-\-ssl\-version\fR STRING
++the \fB\-\-ssl\-version\fR option specifies which version of
++the SSL protocol to use. Typically, the server chooses
++a particular protocol version, and the client must
++adapt to the server's choice. Most of the versions are
++not interoperable with the other versions. If not
++specified the default SSL version is taken from the
++default in the Python standard `ssl` library for the
++version of Python that is installed. Other SSL
++protocol versions are: SSLv2, SSLv3, SSLv23, TLSv1,
++TLSv1_1, TLSv1_2 but not all of them may be available
++on all versions of Python.
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..163aaf8d82b6c54f23c45f32895dbdfdcc27b047
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++3.0 (quilt)
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..dbcec4ae21a80422cd3c1eeb2b3868324f7978dc
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,10 @@@
++# We don't use the convinience copies of wcslib, so we can
++# safely ignore their lintian warnings.
++outdated-autotools-helper-file cextern/wcslib/config/config.*
++# See https://tests.reproducible-builds.org/debian/rb-pkg/unstable/amd64/python-astropy.html:
++# Actually, it shouldn't be necessary for python-astropy to build-depends
++# on dh-strip-nondeterminism.  The override_dh_strip_nondeterminism
++# target in debian/rules will be ignored unless debhelper actually
++# tries to call dh_strip_nondeterminism, in which case debhelper itself
++# would depend on dh-strip-nondeterminism. (Andrew Ayer)
++missing-build-dependency-for-dh_-command
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9b943c1d9e6a9683dabaece90a18d3ebd028c281
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,7 @@@
++Tests: python-astropy
++Depends: python-astropy, python-scipy
++Restrictions: allow-stderr
++
++Tests: python3-astropy
++Depends: python3-astropy, python3-scipy
++Restrictions: allow-stderr
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..cb52670764a1be45c6d39b46388c34c3c66fcdb5
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,8 @@@
++#!/usr/bin/env python
++
++import os
++os.chdir(os.getenv('ADTTMP', '/tmp'))
++
++import astropy
++res = astropy.test()
++exit(res)
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..84519926e9298668c9b67de248bb08b08a9aa084
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,9 @@@
++#!/usr/bin/env python3
++
++import os
++os.chdir(os.getenv('ADTTMP', '/tmp'))
++
++import astropy
++res = astropy.test()
++exit(res)
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c30a0ec4b7c621b4d27b43dccd016a6047c0329b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,28 @@@
++ASCL-Id: 1304.002
++Bug-Database: https://github.com/astropy/astropy/issues
++Contact: Astronomical Python mailing list <astropy@scipy.org>
++Name: astropy
++Reference:
++ author: >
++      Astropy Collaboration, and Robitaille, T.P. and Tollerud, E.J. and 
++      Greenfield, P. and Droettboom, M. and Bray, E. and Aldcroft, T. and 
++      Davis, M. and Ginsburg, A. and Price-Whelan, A.M. and Kerzendorf, W.E. and
++      Conley, A. and Crighton, N. and Barbary, K. and Muna, D. and
++      Ferguson, H. and Grollier, F. and Parikh, M.M. and Nair, P.H. and
++      Unther, H.M. and Deil, C. and Woillez, J. and Conseil, S. and
++      Kramer, R. and Turner, J.E.H. and Singer, L. and Fox, R. and
++      Weaver, B.A. and Zabalza, V. and Edwards, Z.I. and Azalee Bostroem, K. and
++      Burke, D.J. and Casey, A.R. and Crawford, S.M. and Dencheva, N. and 
++      Ely, J. and Jenness, T. and Labrie, K. and Lim, P.L. and
++      Pierfederici, F. and Pontzen, A. and Ptak, A. and Refsdal, B. and 
++      Servillat, M. and Streicher, O.
++ title: "Astropy: A community Python package for astronomy"
++ journal: Astronomy & Astrophysics
++ volume: 558
++ number: A33
++ pages: A33
++ doi: 10.1051/0004-6361/201322068
++ year: 2013
++ URL: http://adsabs.harvard.edu/abs/2013A%26A...558A..33A
++ eprint: http://www.aanda.org/articles/aa/pdf/2013/10/aa22068-13.pdf
++Repository: https://github.com/astropy/astropy/
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..b7616be1485efd894f366bd8a47a3ae1c2631f60
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,52 @@@
++-----BEGIN PGP PUBLIC KEY BLOCK-----
++Version: GnuPG v1
++
++mQINBFH7b50BEACYW2Cs+1jo1iU2Al8o8GFkQH9HKXSRzqMjvXxThM8f340CjUom
++rgAZ2PeWDS9Np/h9f+L41D09tcPQINkWCK7NbgKMFA+PSdldx/9tG9Qh8RlPAvzb
++J56L6VaQOawK7/pqbPZUwvegsq2vxlV9nF8YGxUaHLglSppPqMlqW8z4Mcdm7nWh
++DfzhCgirjCAPrcOdNKSnM8lroCzrUmD4q3p9v5Rp15xQ1EXBZt2KA25HZCV8/ZzB
++F3HlZSKFmTSVW/emwb8RG8vJekDsPcT+00jjGH8vHScVqFEHpbzJz5OdEq9cqzcd
++FxWaHbJXTmdN1zdjtH2OV3yNEUHJ+bJVJuNNYCGeIfDjU2vZLhbvLpifg/dnj6Wu
++1qdrtdOB+C05mPO+CHQoh/EJfq3Lcap6khU0hMc2SNMdN59cfHKcFO5f8bzaUBDA
+++du/Vnss32LkU26wXiuG6FCslNWY107v+cbfi3ZYmCN6i7Y+7TmVE83JpdVEnQht
++ybXxg18TwMxw4x3aISSWnuk7V5hVAU+Lyf/P5MWaTMyhhjrdrFPJL//0Ls9zCgaH
++iFDqxxbDJaa4p8TEBC7Nt2QiK1bY3FKFag65nJGoEVVJ6NkJpj/dhOhTHvVvg/cz
++xg2q0sTAmHz0079lPlLx0jZ9VUisGYXZXNm71gdLlK2KMWsa+ypHJYIuGwARAQAB
++tCZUaG9tYXMgUm9iaXRhaWxsZSA8cm9iaXRhaWxsZUBtcGlhLmRlPokCOAQTAQIA
++IgUCUftvnQIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQUsxycB4e+Yrh
++CBAAjjtV06cn/uhLvd0puzA0bghlVYBtor5BFyq4hYooKg+uIooX2Lkzu6L/QhVE
++tI3Rrkiygz9otha1r6vHDuPZH16j4d88TEzbNoVJasCNxX2Uab2TtQQZRojSbvO8
++rzIlOPgVPQUOGHbT+VlD2bdneB2/cBy7Wz9LvbLh+KbuDdSBXYljinVARc5vTnxv
++Hoi23OcacuH28GdkiO2EWmlOc9oy3dSgS5+YKt6tLAhqT/l8g04b1/OacYH5eD7n
++fhTyGTOpBuNN7ReArCi5QG5yP2XwOU0NuGA+Hlu2f0w8OHCXgkNRvfnJsLZfyxZz
++tn4p0+X+IKsmwGREG/R0HcdlmE61exvRAEuBfCXfNTYwShA3Eys+SEiWqaz7FAAI
++sivOjRT1NQ6yf5OR8ljUFA9Brnv9paMWwYeirx1op4SFj6gX1buxWCREI2E9yikQ
++goewTLBYNRWQPovW2kWfztMnCfak3DsA+kRPOD6HXpXSXzAfGUpk0ssy5Jn4cVE2
++bZf8XylCWRJwWNIXcTA8gI9XSLAg+11bb2kOz7aGlZUevAj/wAbOy+X0p41F3H1W
++q8wUczs4SXj0qGsesGwiThcxRJtmesJzDSaKSiYAwD7JER6U76zIMMVzof+/bjM2
++S/XogSoFAvdnSp+f93rEdvleJqJy7Fn25lpjiK9cTyQ7V9O5Ag0EUftvnQEQAKoe
++Y/s5dpuTVJs5U+wvHUm0HdKwXLj/Essz78zZ6ofuI/jgkt/SwtGs1fIfGcF8wmRk
++4tSfLkttKdXPqRWy1NA3cJYOHtL1bQm80JQREGIDOtPUu9aEO/yVosSsoFbPz6tp
++V3cPA8SmYbsi1HM64dFu0lnj+oVpPkRAQOTvSPdRQ3baFKqKVowvG9gF9E6TExtV
++7BtLbWNuGoDXs0MTr30H8R2vf1H/TsSGixf/IlQseNxKUTGepOSptyK3uSh+p5a1
+++TePyNziVcc2+uiayOd4ZzaGpLh4jhf9BehffnGv/pd4hL91U1tAsDhnv4MDazqj
++f6zKhuaND9TeLp0VjSf3kyfqvSVhD8CJN0OpX7n2mLqxyw7lr/NWVI/MDb1Ozxde
++jhj2WobtdJogCWOFXyXN0qOZa9GdUR/9OOoi1KFjkME7JBT4tDdaKF1uyKpHymfH
++S2/tSJm5x8D+OgyfHNBOudzomK6S/hDykTd2AKcmMfdfaGGU3TNnK1w6+5XcIrEQ
++Z0GQn48L9pg4MDs4PxqzPqYbhcokF30fWMI30bm9CDudMbwx2QAoMo0SZWeU2alu
++EmfbRWOeiUQrb+wSCp45J59TSjqNiIKmpshhH2cMa21lZ7PHBSN8MkphtNHfrEfj
++jLvMR6xf856+q7xp4PZB2tBy5MDGO9kwAcereXTPABEBAAGJAh8EGAECAAkFAlH7
++b50CGwwACgkQUsxycB4e+Yqm0Q/+OYYW682YxpeR6q47mtGDBGi0HspAgM7uRxGZ
++lDna9NwDSE1Nu7dtciEMSIGo0s8i+7iYCRPCOO0JrltfntQuRhyyZRshw2wpyzrw
++6r0olZIOyq0qU7QJvfLg0Jg/WjRTMcHdthVeFT4vLrVVPMs2EonbKHlqdujQDMHH
++p61blTrgZtCQlGqwnT4Rb9qObwEz2f4BHjttuNcDpEfHoo+PaAbHhjCLD2eyp4O2
++Fj31sDkc9KUL5kQtbeEIthThhJxxNyiGWqlfEb/21mYESBt/NKCcJ+aYOegghtVx
++lL/i6drmDFwMrxD7ihBZws9r2INw804yCsgwZUeTArFfyglw0iJJXoby/+owf821
++oex/US9tVg1cPujXVfziCLB6MHZcqX+Qmx9jIv6Eo4gPppZj088LzgFGrnhc3W1R
++bFtlyNSFO47ORweSLTmhteANdiMdsjpU9ryE6Zoc3qUJ84WT0AYMKSPOMWaAhi7H
++WhTYRxxUkNEtAjCFR39pSQhBpP4XUWekmyrnmQJOwcWPnIISU8ah7D5MNkQRpgBD
++QOm8vI2ax4Q0Rd6cWZrbSwZ3V/7smfS6ofRg3DtxF+uoV7sVhqaWfBjQFNZSTcAs
++ZLrphYDT9xGxaNk7pMYVv9gxY0ymbBlgQZbfY4ozw5lLoBTZvNO+pLxUTHmPgMa4
++PasnssY=
++=jVcg
++-----END PGP PUBLIC KEY BLOCK-----
diff --cc debian/volint.1
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..4f2cf54b88bbddd52e28f2094ab541d55cfd762c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,13 @@@
++.TH VOLINT 1 "April 2015" "volint" "astropy 1.0.2"
++.SH NAME
++volint \- Check a VOTable file for compliance to the VOTable specification
++.SH DESCRIPTION
++usage: volint [\-h] filename
++.SS "positional arguments:"
++.TP
++filename
++Path to VOTable file to check
++.SS "optional arguments:"
++.TP
++\fB\-h\fR, \fB\-\-help\fR
++show this help message and exit
diff --cc debian/watch
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..408ed133547bc4e160be6fb4d77e2a7f62f9db3f
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,3 @@@
++version=3
++opts=uversionmangle=s/(rc|a|b|c)/~$1/;s/\.(post)/+$1/,pgpsigurlmangle=s/$/.asc/ \
++http://pypi.debian.net/astropy/astropy-(.+)\.(?:zip|tgz|tbz|txz|(?:tar\.(?:gz|bz2|xz)))
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c715ff8f87a209b017b23c8210b6380bf62582e9
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,13 @@@
++.TH WCSLINT 1 "April 2015" "wcslint" "astropy 1.0.2"
++.SH NAME
++wcslint \- Check the WCS keywords in a FITS file for compliance against the standards
++.SH DESCRIPTION
++usage: wcslint [\-h] filename
++.SS "positional arguments:"
++.TP
++filename
++Path to FITS file to check
++.SS "optional arguments:"
++.TP
++\fB\-h\fR, \fB\-\-help\fR
++show this help message and exit