[dgit import tarball python-astropy 0.4.2-2 python-astropy_0.4.2-2.debian.tar.xz]
--- /dev/null
+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
--- /dev/null
+astropy/astropy.cfg
+astropy/cython_version.py
+astropy/convolution/boundary_extend.c
+astropy/convolution/boundary_fill.c
+astropy/convolution/boundary_none.c
+astropy/convolution/boundary_wrap.c
+astropy/table/_np_utils.c
+astropy/time/erfa_time.c
+astropy/version.py
+astropy/wcs/include/docstrings.h
+astropy/wcs/include/wcsconfig.h
+astropy/wcs/src/docstrings.c
+docs/api/*
--- /dev/null
+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,
+ liberfa-dev,
+ libexpat1-dev,
+ pkg-config,
+ python-all-dev (>= 2.6.6-3~),
+ python-astropy-helpers,
+ python-nose,
+ python-matplotlib,
+ python-numpy (>= 1.4),
+ python-setuptools (>= 0.6.4),
+ python-sphinx (>= 1.0.7+dfsg),
+ python3-all-dev,
+ python3-astropy-helpers,
+ python3-nose,
+ python3-matplotlib,
+ python3-numpy (>= 1:1.6.2),
+ python3-setuptools (>= 0.6.4),
+ wcslib-dev (>= 4.24),
+ zlib1g-dev
+Standards-Version: 3.9.6
+Vcs-Browser: http://anonscm.debian.org/gitweb/?p=debian-astro/packages/python-astropy.git
+Vcs-Git: git://anonscm.debian.org/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: ${misc:Depends},
+ ${python:Depends},
+ ${shlibs:Depends}
+Suggests: python-astropy-doc,
+ python-h5py,
+ python-scipy,
+ libxml2-utils
+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 is expected to be extended by a number of "affiliated packages" that are
+ intended to work with the core package.
+ .
+ The current release is a developer preview.
+
+Package: python3-astropy
+Architecture: any
+Depends: ${misc:Depends},
+ ${python3:Depends},
+ ${shlibs:Depends}
+Suggests: python-astropy-doc
+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 is expected to be extended by a number of "affiliated packages" that are
+ intended to work with the core package.
+ .
+ The current release is a developer preview.
+
+Package: python-astropy-doc
+Architecture: all
+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 is expected to be extended by a number of "affiliated packages" that are
+ intended to work with the core package.
+ .
+ This package contains the package documentation.
--- /dev/null
+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-Excluded: astropy_helpers/*
+
+Files: * astropy/io/fits/*
+ astropy/sphinx/ext/compiler_unparse.py astropy/sphinx/ext/comment_eater.py
+ astropy/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/sphinx/ext/numpydoc.py astropy/sphinx/ext/docscrape.py
+ astropy/sphinx/ext/docscrape_sphinx.py astropy/sphinx/ext/phantom_import.py
+ debian/*
+Copyright: Copyright (C) 2008 Stefan van der Walt <stefan@mentat.za.net>,
+ Pauli Virtanen <pav@iki.fi>,
+ 2012-2014 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.
--- /dev/null
+Author: Ole Streicher <olebole@debian.org>
+Description: Disable astropy-helpers copy
+Bug: https://bugs.debian.org/761055
+--- a/setup.cfg
++++ b/setup.cfg
+@@ -22,4 +22,4 @@
+ bitmap = static/wininst_background.bmp
+
+ [ah_bootstrap]
+-auto_use = True
++auto_use = False
--- /dev/null
+Author: Ole Streicher <olebole@debian.org>
+Description: Mark all known test failures as xfail.
+ These failures have been discussed with upstream.
+--- a/astropy/io/fits/tests/test_connect.py
++++ b/astropy/io/fits/tests/test_connect.py
+@@ -121,6 +121,9 @@
+ # while reading is to check whether col.null is present. For float columns, col.null
+ # is not initialized
+
++ # see https://github.com/astropy/astropy/issues/1849
++ # Fails on powerpc, s390
++ @pytest.mark.xfail
+ def test_read_from_fileobj(self, tmpdir):
+ filename = str(tmpdir.join('test_read_from_fileobj.fits'))
+ hdu = BinTableHDU(self.data)
+@@ -157,6 +160,9 @@
+ def setup_method(self, method):
+ warnings.filterwarnings('always')
+
++ # see https://github.com/astropy/astropy/issues/1849
++ # Fails on powerpc, s390
++ @pytest.mark.xfail
+ def test_read(self, tmpdir):
+ filename = str(tmpdir.join('test_read.fits'))
+ self.hdus.writeto(filename)
+@@ -175,6 +181,9 @@
+ assert exc.value.args[0] == 'No table found in hdu=0'
+
+ @pytest.mark.parametrize('hdu', [1, 'first'])
++ # see https://github.com/astropy/astropy/issues/1849
++ # Fails on powerpc, s390
++ @pytest.mark.xfail
+ def test_read_with_hdu_1(self, tmpdir, hdu):
+ filename = str(tmpdir.join('test_read_with_hdu_1.fits'))
+ self.hdus.writeto(filename)
+--- a/astropy/modeling/tests/test_rotations.py
++++ b/astropy/modeling/tests/test_rotations.py
+@@ -46,7 +46,9 @@
+ x, y = model(1, 0)
+ utils.assert_allclose([x, y], [0, 1], atol=1e-10)
+
+-
++# see https://github.com/astropy/astropy/issues/2708
++# Fails on powerpc, s390
++@pytest.mark.xfail
+ def test_Rotation2D_inverse():
+ model = models.Rotation2D(angle=234.23494)
+ inverse = model.inverse()
+--- a/astropy/config/tests/test_configs.py
++++ b/astropy/config/tests/test_configs.py
+@@ -331,4 +331,5 @@
+ # Test that the config file is written at most once
+ config_dir = os.path.join(os.path.dirname(__file__), '..', '..')
+ configuration.update_default_config('astropy', config_dir)
+- assert configuration.update_default_config('astropy', config_dir) is False
++# see https://github.com/astropy/astropy/issues/2841
++ assert configuration.update_default_config('astropy', config_dir) is None
--- /dev/null
+From: Michael Droettboom <mdboom@gmail.com>
+Date: Fri, 16 Jan 2015 09:58:27 -0500
+Subject: [PATCH] Let Python choose the default SSL protocol for us.
+--- a/astropy/vo/samp/client.py
++++ b/astropy/vo/samp/client.py
+@@ -85,13 +85,13 @@
+ passed from the Hub end of the connection.
+
+ ssl_version : int, optional
+- 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
+- `ssl.PROTOCOL_SSLv23`. This version provides the most compatibility
+- with other versions Hub side. Other SSL protocol versions are:
+- `ssl.PROTOCOL_SSLv2`, `ssl.PROTOCOL_SSLv3` and `ssl.PROTOCOL_TLSv1`.
++ 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
++ installed version of the Python standard `ssl` library. See
++ the `ssl` documentation for more information.
+
+ callable : bool, optional
+ Whether the client can receive calls and notifications. If set to
+@@ -118,9 +118,6 @@
+ if description is not None:
+ metadata["samp.description.text"] = description
+
+- if SSL_SUPPORT and ssl_version is None:
+- ssl_version = ssl.PROTOCOL_SSLv23
+-
+ self._metadata = metadata
+
+ self._addr = addr
+--- a/astropy/vo/samp/hub.py
++++ b/astropy/vo/samp/hub.py
+@@ -114,14 +114,14 @@
+ passed from the Hub end of the connection.
+
+ ssl_version : int, optional
+- The ``ssl_version`` 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 `ssl.PROTOCOL_SSLv23`. This version provides
+- the most compatibility with other versions client side. Other SSL
+- protocol versions are: `ssl.PROTOCOL_SSLv2`, `ssl.PROTOCOL_SSLv3` and
+- `ssl.PROTOCOL_TLSv1`.
++ The ``ssl_version`` 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 installed version of the Python
++ standard `ssl` library. See the `ssl` documentation for more
++ information.
+
+ web_profile : bool, optional
+ Enables or disables the Web Profile support.
+@@ -165,9 +165,6 @@
+ self._client_timeout = client_timeout
+ self._pool_size = pool_size
+
+- if SSL_SUPPORT and ssl_version is None:
+- ssl_version = ssl.PROTOCOL_SSLv23
+-
+ self._web_profile = web_profile
+ self._web_profile_server = None
+ self._web_profile_callbacks = {}
+--- a/astropy/vo/samp/hub_proxy.py
++++ b/astropy/vo/samp/hub_proxy.py
+@@ -78,14 +78,14 @@
+ certificate passed from the Hub end of the connection.
+
+ ssl_version : int, optional
+- 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 `ssl.PROTOCOL_SSLv3`. This version provides the most
+- compatibility with other versions server side. Other SSL protocol
+- versions are: `ssl.PROTOCOL_SSLv2`, `ssl.PROTOCOL_SSLv3` and
+- `ssl.PROTOCOL_TLSv1`.
++ 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 installed version of the Python standard
++ `ssl` library. See the `ssl` documentation for more
++ information.
+
+ pool_size : int, optional
+ The number of socket connections opened to communicate with the
+@@ -95,9 +95,6 @@
+ self._connected = False
+ self.lockfile = {}
+
+- if SSL_SUPPORT and ssl_version is None:
+- ssl_version = ssl.PROTOCOL_SSLv3
+-
+ if hub is not None and hub_params is not None:
+ raise ValueError("Cannot specify both hub and hub_params")
+
+--- a/astropy/vo/samp/hub_script.py
++++ b/astropy/vo/samp/hub_script.py
+@@ -148,10 +148,14 @@
+ "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 SSLv23. This version "
+- "provides the most compatibility with other versions client side. "
+- "Other SSL protocol versions are: SSLv2, SSLv3 and TLSv1.",
+- type=str, choices=["SSLv23", "SSLv2", "SSLv3", "TLSv1"], default="SSLv23")
++ "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.",
++ type=str,
++ choices=["SSLv23", "SSLv2", "SSLv3", "TLSv1", "TLSv1_1", "TLSv1_2"],
++ default=None)
+
+ parser.add_argument_group(ssl_group)
+
+@@ -170,14 +174,14 @@
+ else:
+ options.cert_reqs = ssl.CERT_NONE
+
+- if options.ssl_version == "SSLv2":
+- options.ssl_version = ssl.PROTOCOL_SSLv2
+- elif options.ssl_version == "SSLv3":
+- options.ssl_version = ssl.PROTOCOL_SSLv3
+- elif options.ssl_version == "TLSv1":
+- options.ssl_version = ssl.PROTOCOL_TLSv1
+- else:
+- options.ssl_version = ssl.PROTOCOL_SSLv23
++ if options.ssl_version is not None:
++ if hasattr(ssl, 'PROTOCOL_' + options.ssl_version):
++ options.ssl_version = getattr(
++ ssl, 'PROTOCOL_' + options.ssl_version)
++ else:
++ raise ValueError(
++ "SSL protocol '{0}' not supported on this version of "
++ "Python".format(options.ssl_version))
+
+ if options.loglevel in ("OFF", "ERROR", "WARNING", "DEBUG", "INFO"):
+ log.setLevel(options.loglevel)
+--- a/astropy/vo/samp/integrated_client.py
++++ b/astropy/vo/samp/integrated_client.py
+@@ -68,13 +68,13 @@
+ passed from the Hub end of the connection.
+
+ ssl_version : int, optional
+- 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
+- `ssl.PROTOCOL_SSLv23`. This version provides the most compatibility
+- with other versions Hub side. Other SSL protocol versions are:
+- `ssl.PROTOCOL_SSLv2`, `ssl.PROTOCOL_SSLv3` and `ssl.PROTOCOL_TLSv1`.
++ 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
++ installed version of the Python standard `ssl` library. See
++ the `ssl` documentation for more information.
+
+ callable : bool, optional
+ Whether the client can receive calls and notifications. If set to
+@@ -167,14 +167,14 @@
+ certificate passed from the Hub end of the connection.
+
+ ssl_version : int, optional
+- 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 `ssl.PROTOCOL_SSLv3`. This version provides the most
+- compatibility with other versions server side. Other SSL protocol
+- versions are: `ssl.PROTOCOL_SSLv2`, `ssl.PROTOCOL_SSLv3` and
+- `ssl.PROTOCOL_TLSv1`.
++ 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 installed version of the Python standard
++ `ssl` library. See the `ssl` documentation for more
++ information.
+
+ pool_size : int, optional
+ The number of socket connections opened to communicate with the
+--- a/astropy/vo/samp/ssl_utils.py
++++ b/astropy/vo/samp/ssl_utils.py
+@@ -32,7 +32,7 @@
+
+ def __init__(self, host, port=None, key_file=None, cert_file=None,
+ cert_reqs=ssl.CERT_NONE, ca_certs=None,
+- ssl_version=ssl.PROTOCOL_SSLv3, strict=None):
++ ssl_version=None, strict=None):
+
+ HTTPConnection.__init__(self, host, port, strict)
+
+@@ -47,12 +47,18 @@
+
+ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ sock.connect((self.host, self.port))
+- sslconn = ssl.wrap_socket(sock, server_side=False,
+- certfile=self.cert_file,
+- keyfile=self.key_file,
+- cert_reqs=self.cert_reqs,
+- ca_certs=self.ca_certs,
+- ssl_version=self.ssl_version)
++ # We have to explicitly not pass the ssl_version to
++ # `ssl.wrap_socket` if it's None.
++ kwargs = {
++ 'server_size': False,
++ 'certfile': self.cert_file,
++ 'keyfile': self.key_file,
++ 'cert_reqs': self.cert_reqs,
++ 'ca_certs': self.ca_certs,
++ }
++ if self.ssl_version is not None:
++ kwargs['ssl_version'] = self.ssl_version
++ sslconn = ssl.wrap_socket(sock, **args)
+ self.sock = sslconn
+
+ class HTTPS(HTTP):
+@@ -64,7 +70,7 @@
+
+ def __init__(self, host='', port=None, key_file=None, cert_file=None,
+ cert_reqs=ssl.CERT_NONE, ca_certs=None,
+- ssl_version=ssl.PROTOCOL_SSLv3):
++ ssl_version=None):
+
+ # provide a default host, pass the X509 cert info
+
+@@ -97,7 +103,7 @@
+
+ def __init__(self, key_file=None, cert_file=None,
+ cert_reqs=ssl.CERT_NONE, ca_certs=None,
+- ssl_version=ssl.PROTOCOL_SSLv3, strict=None,
++ ssl_version=None, strict=None,
+ use_datetime=0):
+
+ xmlrpc.Transport.__init__(self, use_datetime)
+@@ -151,10 +157,16 @@
+ def get_request(self):
+ # override this to wrap socket with SSL
+ sock, addr = self.socket.accept()
+- sslconn = ssl.wrap_socket(sock, server_side=True,
+- certfile=self.cert_file,
+- keyfile=self.key_file,
+- cert_reqs=self.cert_reqs,
+- ca_certs=self.ca_certs,
+- ssl_version=self.ssl_version)
++ # We have to explicitly not pass the ssl_version to
++ # `ssl.wrap_socket` if it's None.
++ kwargs = {
++ 'server_side': True,
++ 'certfile': self.cert_file,
++ 'keyfile': self.key_file,
++ 'cert_reqs': self.cert_reqs,
++ 'ca_certs': self.ca_certs
++ }
++ if self.ssl_version is not None:
++ kwargs['ssl_version'] = self.ssl_version
++ sslconn = ssl.wrap_socket(sock, **kwargs)
+ return sslconn, addr
--- /dev/null
+mark_known_failures.patch
+use_extern_ply.patch
+disable_helper.patch
+use_wcslib_4.24.patch
+remove_ssl_2_3.patch
--- /dev/null
+From 3ac3b5e3522a270ef88f46aae5474bc201549b54 Mon Sep 17 00:00:00 2001
+From: Sergio Pascual <sergiopr@fis.ucm.es>
+Date: Thu, 22 May 2014 14:37:05 +0200
+Subject: [PATCH] Bring an unmodified copy of ply
+--- a/astropy/extern/ply/lex.py
++++ b/astropy/extern/ply/lex.py
+@@ -34,7 +34,7 @@
+ __version__ = "3.4"
+ __tabversion__ = "3.2" # Version of table file used
+
+-import re, sys, types, copy, os, inspect
++import re, sys, types, copy, os
+
+ # This tuple contains known string types
+ try:
+@@ -548,7 +548,7 @@
+ self.tokens = []
+ self.reflags = reflags
+ self.stateinfo = { 'INITIAL' : 'inclusive'}
+- self.modules = {}
++ self.files = {}
+ self.error = 0
+
+ if log is None:
+@@ -729,8 +729,7 @@
+ for fname, f in self.funcsym[state]:
+ line = func_code(f).co_firstlineno
+ file = func_code(f).co_filename
+- module = inspect.getmodule(f)
+- self.modules[module] = 1
++ self.files[file] = 1
+
+ tokname = self.toknames[fname]
+ if isinstance(f, types.MethodType):
+@@ -800,8 +799,7 @@
+ f = efunc
+ line = func_code(f).co_firstlineno
+ file = func_code(f).co_filename
+- module = inspect.getmodule(f)
+- self.modules[module] = 1
++ self.files[file] = 1
+
+ if isinstance(f, types.MethodType):
+ reqargs = 2
+@@ -816,26 +814,35 @@
+ self.log.error("%s:%d: Rule '%s' requires an argument", file,line,f.__name__)
+ self.error = 1
+
+- for module in self.modules:
+- self.validate_module(module)
++ for f in self.files:
++ self.validate_file(f)
+
+
+ # -----------------------------------------------------------------------------
+- # validate_module()
++ # validate_file()
+ #
+ # This checks to see if there are duplicated t_rulename() functions or strings
+ # in the parser input file. This is done using a simple regular expression
+- # match on each line in the source code of the given module.
++ # match on each line in the given file.
+ # -----------------------------------------------------------------------------
+
+- def validate_module(self, module):
+- lines, linen = inspect.getsourcelines(module)
++ def validate_file(self,filename):
++ import os.path
++ base,ext = os.path.splitext(filename)
++ if ext != '.py': return # No idea what the file is. Return OK
++
++ try:
++ f = open(filename)
++ lines = f.readlines()
++ f.close()
++ except IOError:
++ return # Couldn't find the file. Don't worry about it
+
+ fre = re.compile(r'\s*def\s+(t_[a-zA-Z_0-9]*)\(')
+ sre = re.compile(r'\s*(t_[a-zA-Z_0-9]*)\s*=')
+
+ counthash = { }
+- linen += 1
++ linen = 1
+ for l in lines:
+ m = fre.match(l)
+ if not m:
+@@ -846,7 +853,6 @@
+ if not prev:
+ counthash[name] = linen
+ else:
+- filename = inspect.getsourcefile(module)
+ self.log.error("%s:%d: Rule %s redefined. Previously defined on line %d",filename,linen,name,prev)
+ self.error = 1
+ linen += 1
+--- a/astropy/extern/ply/yacc.py
++++ b/astropy/extern/ply/yacc.py
+@@ -84,7 +84,7 @@
+
+ pickle_protocol = 0 # Protocol to use when writing pickle files
+
+-import re, types, sys, os.path, inspect
++import re, types, sys, os.path
+
+ # Compatibility function for python 2.6/3.0
+ if sys.version_info[0] < 3:
+@@ -1191,7 +1191,7 @@
+ return len(self.prod)
+
+ def __nonzero__(self):
+- return True
++ return 1
+
+ def __getitem__(self,index):
+ return self.prod[index]
+@@ -2765,7 +2765,7 @@
+ self.start = None
+ self.error_func = None
+ self.tokens = None
+- self.modules = {}
++ self.files = {}
+ self.grammar = []
+ self.error = 0
+
+@@ -2789,7 +2789,7 @@
+ self.validate_tokens()
+ self.validate_precedence()
+ self.validate_pfunctions()
+- self.validate_modules()
++ self.validate_files()
+ return self.error
+
+ # Compute a signature over the grammar
+@@ -2814,7 +2814,7 @@
+ return sig.digest()
+
+ # -----------------------------------------------------------------------------
+- # validate_modules()
++ # validate_file()
+ #
+ # This method checks to see if there are duplicated p_rulename() functions
+ # in the parser module file. Without this function, it is really easy for
+@@ -2824,12 +2824,20 @@
+ # to try and detect duplicates.
+ # -----------------------------------------------------------------------------
+
+- def validate_modules(self):
++ def validate_files(self):
+ # Match def p_funcname(
+ fre = re.compile(r'\s*def\s+(p_[a-zA-Z_0-9]*)\(')
+
+- for module in self.modules.keys():
+- lines, linen = inspect.getsourcelines(module)
++ for filename in self.files.keys():
++ base,ext = os.path.splitext(filename)
++ if ext != '.py': return 1 # No idea. Assume it's okay.
++
++ try:
++ f = open(filename)
++ lines = f.readlines()
++ f.close()
++ except IOError:
++ continue
+
+ counthash = { }
+ for linen,l in enumerate(lines):
+@@ -2841,7 +2849,6 @@
+ if not prev:
+ counthash[name] = linen
+ else:
+- filename = inspect.getsourcefile(module)
+ self.log.warning("%s:%d: Function %s redefined. Previously defined on line %d", filename,linen,name,prev)
+
+ # Get the start symbol
+@@ -2872,8 +2879,7 @@
+
+ eline = func_code(self.error_func).co_firstlineno
+ efile = func_code(self.error_func).co_filename
+- module = inspect.getmodule(self.error_func)
+- self.modules[module] = 1
++ self.files[efile] = 1
+
+ if (func_code(self.error_func).co_argcount != 1+ismethod):
+ self.log.error("%s:%d: p_error() requires 1 argument",efile,eline)
+@@ -2956,8 +2962,8 @@
+ if name == 'p_error': continue
+ if isinstance(item,(types.FunctionType,types.MethodType)):
+ line = func_code(item).co_firstlineno
+- module = inspect.getmodule(item)
+- p_functions.append((line,module,name,item.__doc__))
++ file = func_code(item).co_filename
++ p_functions.append((line,file,name,item.__doc__))
+
+ # Sort all of the actions by line number
+ p_functions.sort()
+@@ -2973,8 +2979,7 @@
+ self.error = 1
+ return
+
+- for line, module, name, doc in self.pfuncs:
+- file = inspect.getsourcefile(module)
++ for line, file, name, doc in self.pfuncs:
+ func = self.pdict[name]
+ if isinstance(func, types.MethodType):
+ reqargs = 2
+@@ -3000,7 +3005,7 @@
+
+ # Looks like a valid grammar rule
+ # Mark the file in which defined.
+- self.modules[module] = 1
++ self.files[file] = 1
+
+ # Secondary validation step that looks for p_ definitions that are not functions
+ # or functions that look like they might be grammar rules.
--- /dev/null
+--- a/astropy/wcs/include/wcslib/wcs.h
++++ b/astropy/wcs/include/wcslib/wcs.h
+@@ -1,4 +1,4 @@
+-/*============================================================================
++1/*============================================================================
+
+ WCSLIB 4.23 - an implementation of the FITS WCS standard.
+ Copyright (C) 1995-2014, Mark Calabretta
+@@ -1568,7 +1568,7 @@
+ int wcssub(int alloc, const struct wcsprm *wcssrc, int *nsub, int axes[],
+ struct wcsprm *wcsdst);
+
+-int wcscompare(int cmp, const struct wcsprm *wcs1, const struct wcsprm *wcs2,
++int wcscompare(int cmp, double tol, const struct wcsprm *wcs1, const struct wcsprm *wcs2,
+ int *equal);
+
+ int wcsfree(struct wcsprm *wcs);
+--- a/astropy/wcs/src/wcslib_wrap.c
++++ b/astropy/wcs/src/wcslib_wrap.c
+@@ -751,7 +751,7 @@
+
+ wcsprm_python2c(&self->x);
+ wcsprm_python2c(&other->x);
+- status = wcscompare(cmp, &self->x, &other->x, &equal);
++ status = wcscompare(cmp, 0.0, &self->x, &other->x, &equal);
+ wcsprm_c2python(&self->x);
+ wcsprm_c2python(&other->x);
+
+@@ -1698,6 +1698,7 @@
+ wcsprm_python2c(bx);
+ status = wcscompare(
+ WCSCOMPARE_ANCILLARY,
++ 0.0,
+ ax, bx, &equal);
+ wcsprm_c2python(ax);
+ wcsprm_c2python(bx);
--- /dev/null
+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/
--- /dev/null
+ docs/_build/html
--- /dev/null
+# 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
--- /dev/null
+usr/lib/python2*/dist-packages/astropy*
--- /dev/null
+# The hardening is switched on, but does not cover all functions mentioned
+# in hardening-check.
+hardening-no-fortify-functions */astropy/utils/xml/_iterparser.so
--- /dev/null
+usr/lib/python3*/dist-packages/astropy*
--- /dev/null
+# The hardening is switched on, but does not cover all functions mentioned
+# in hardening-check.
+hardening-no-fortify-functions */astropy/utils/xml/_iterparser.*
--- /dev/null
+#!/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
+ find $(CURDIR)/debian/tmp/usr/lib/ -name \*.png -exec rm {} \;
+
+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 -v
+
+override_dh_auto_test: $(PYTHON2:%=test-python%) $(PYTHON3:%=test-python%)
+endif
--- /dev/null
+3.0 (quilt)
--- /dev/null
+# We don't use the convinience copies of wcslib and expat, so we can
+# safely ignore their lintian warnings.
+outdated-autotools-helper-file cextern/expat/conftools/config.*
+outdated-autotools-helper-file cextern/wcslib/config/config.*
--- /dev/null
+# watch control file for uscan
+version=3
+opts=uversionmangle=s/(\d)[_\.\-\+]?((RC|rc|pre|dev|beta|alpha)\d*)$/$1~$2/,\
+dversionmangle=s/\+dfsg\d*// \
+http://pypi.python.org/packages/source/a/astropy/astropy-([0-9].*)\.(?:zip|tgz|tbz|txz|(?:tar\.(?:gz|bz2|xz))) debian uupdate