Import pandas_1.1.5+dfsg-1.debian.tar.xz
authorRebecca N. Palmer <rebecca_palmer@zoho.com>
Mon, 7 Dec 2020 23:06:28 +0000 (23:06 +0000)
committerRebecca N. Palmer <rebecca_palmer@zoho.com>
Mon, 7 Dec 2020 23:06:28 +0000 (23:06 +0000)
[dgit import tarball pandas 1.1.5+dfsg-1 pandas_1.1.5+dfsg-1.debian.tar.xz]

47 files changed:
README.source [new file with mode: 0644]
changelog [new file with mode: 0644]
contributors_list.txt [new file with mode: 0644]
control [new file with mode: 0644]
copyright [new file with mode: 0644]
gbp.conf [new file with mode: 0644]
patches/35080_plot_tests.patch [new file with mode: 0644]
patches/968208_rounding.patch [new file with mode: 0644]
patches/contributor_list_not_in_tarball.patch [new file with mode: 0644]
patches/deb_disable_googleanalytics.patch [new file with mode: 0644]
patches/deb_doc_donotoverride_PYTHONPATH.patch [new file with mode: 0644]
patches/deb_no_strict_data.patch [new file with mode: 0644]
patches/deb_nonversioneer_version.patch [new file with mode: 0644]
patches/find_test_data.patch [new file with mode: 0644]
patches/fix_random_seeds.patch [new file with mode: 0644]
patches/fsspec_version.patch [new file with mode: 0644]
patches/hurd_compat.patch [new file with mode: 0644]
patches/i386_time_overflow.patch [new file with mode: 0644]
patches/mathjax-path.patch [new file with mode: 0644]
patches/matplotlib33_compat.patch [new file with mode: 0644]
patches/numba_fail_32bit.patch [new file with mode: 0644]
patches/privacy.patch [new file with mode: 0644]
patches/python39_compat.patch [new file with mode: 0644]
patches/remove_ccbysa_snippets.patch [new file with mode: 0644]
patches/series [new file with mode: 0644]
patches/skip_noencoding_locales.patch [new file with mode: 0644]
patches/skip_test_missing_required_dependency.patch [new file with mode: 0644]
patches/sphinx_no_pandas_theme.patch [new file with mode: 0644]
patches/stable_test_urls.patch [new file with mode: 0644]
patches/tests_dont_assume_endian.patch [new file with mode: 0644]
patches/use_system_intersphinx.patch [new file with mode: 0644]
patches/xfail_c_locale.patch [new file with mode: 0644]
patches/xfail_tests_nonintel_io.patch [new file with mode: 0644]
patches/xfail_tests_nonintel_nannat.patch [new file with mode: 0644]
patches/xlrd_976620.patch [new file with mode: 0644]
python-pandas-doc.doc-base [new file with mode: 0644]
python-pandas-doc.docs [new file with mode: 0644]
python-pandas-doc.links [new file with mode: 0644]
rules [new file with mode: 0755]
source/format [new file with mode: 0644]
source/lintian-overrides [new file with mode: 0644]
source/options [new file with mode: 0644]
tests/control [new file with mode: 0644]
tests/unittests3 [new file with mode: 0755]
uname_test.py [new file with mode: 0644]
upstream/metadata [new file with mode: 0644]
watch [new file with mode: 0644]

diff --git a/README.source b/README.source
new file mode 100644 (file)
index 0000000..aa04e75
--- /dev/null
@@ -0,0 +1,16 @@
+New upstream and contributors_list update (warning: assumes my directory layout):
+
+#update this: export version=1.1.2
+GBP_CONF_FILES=~/.gbp.conf gbp import-orig --upstream-branch=23dfsg  --debian-branch=debian --uscan --pristine-tar
+echo "Current to version ${version} (generated by git shortlog -ns)" > debian/contributors_list.txt
+echo "There may be multiple entries for the same person if they have used more than one (form of their) name" >> debian/contributors_list.txt
+echo "https://github.com/pandas-dev/pandas/graphs/contributors" >> debian/contributors_list.txt
+echo "" >> debian/contributors_list.txt
+cd ~/Debian/upstreams/pandas
+git pull
+git checkout v${version}
+git shortlog -ns >> ~/Debian/sourcepkgs/pandas/debian/contributors_list.txt
+cd ~/Debian/sourcepkgs/pandas
+echo "" >> debian/contributors_list.txt
+echo "Debian packaging" >> debian/contributors_list.txt
+git shortlog -ns -- debian >> debian/contributors_list.txt
diff --git a/changelog b/changelog
new file mode 100644 (file)
index 0000000..c9b298f
--- /dev/null
+++ b/changelog
@@ -0,0 +1,1264 @@
+pandas (1.1.5+dfsg-1) unstable; urgency=medium
+
+  * Upstream bugfix release.  Refresh patches, contributors_list.
+  * Default to openpyxl not xlrd in read_excel, and skip xlrd tests,
+    as xlrd fails if defusedxml is installed (#976620).
+  * Skip numba tests, and not other rolling.apply tests, on s390x.
+    (LP: #1901860)
+  * Tests: on 32 bit systems, avoid time input that overflows.
+  * Print uname etc during build (test for #973854).
+  * Bump Standards-Version to 4.5.1 (no changes needed).
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Mon, 07 Dec 2020 23:06:28 +0000
+
+pandas (1.1.4+dfsg-1) unstable; urgency=medium
+
+  * Upstream bugfix release.  Refresh patches, contributors_list.
+  * Remove numba test-depends (skips tests).  (Closes: #973589)
+  * Loosen pandas-lib->pandas Depends versioning.  (Closes: #973289)
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Wed, 04 Nov 2020 18:36:11 +0000
+
+pandas (1.1.3+dfsg-2) unstable; urgency=medium
+
+  * Tests: re-xfail an intermittent instance of #877419.
+  * Remove no longer needed test_statsmodels xfail.
+  * Fix invalid test skips.
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Thu, 22 Oct 2020 07:14:29 +0100
+
+pandas (1.1.3+dfsg-1) unstable; urgency=medium
+
+  * Upstream bugfix release.  Refresh patches, contributors_list.
+  * Remove outdated README.source,
+    add contributors_list update process.
+  * Fix invalid test xfail.
+  * Re-add mistakenly removed non-x86 test xfails.
+  * Declare transition Breaks (see #969650).
+  * Skip another test if multiprocessing is not available.
+  * Update cython3 Depends.
+  * Fix pytables expression bug with Python 3.9.  (Closes: #972015)
+  * Allow test_statsmodels to fail on 3.9 to break bootstrap cycle.
+  * Upload to unstable.  (Closes: #969650)
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Sun, 18 Oct 2020 16:22:36 +0100
+
+pandas (1.1.1+dfsg-3) experimental; urgency=medium
+
+  * Remove no longer needed test xfails.
+  * Xfail some more non-x86 numba tests and a new instance of #877419.
+  * Skip test_register_entrypoint during build.
+  * Tests: don't assume little-endian.
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Thu, 03 Sep 2020 08:01:24 +0100
+
+pandas (1.1.1+dfsg-2) experimental; urgency=medium
+
+  * Unconditionally build-depend on sphinx-common (for dh_sphinxdoc).
+  * Re-enable but ignore another potentially crashing non-x86 test.
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Tue, 01 Sep 2020 08:17:32 +0100
+
+pandas (1.1.1+dfsg-1) experimental; urgency=medium
+
+  * New upstream release.
+  * Upload to experimental.
+  * Drop/refresh patches.  Update d/copyright and contributors_list.
+  * Re-enable asyncio tests.
+  * Skip fsspec tests while it is too old a version.
+  * Fix plot test cleanup (upstream bug 35080).
+  * Skip test that is expected to fail in our setup.
+  * Update minimum dependency versions.
+  * Use dh_sphinxdoc.
+  * Re-enable but ignore potentially crashing non-x86 tests.
+  * Simplify d/rules, mostly by using pybuild more.
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Mon, 31 Aug 2020 18:44:39 +0100
+
+pandas (1.0.5+dfsg-3) unstable; urgency=medium
+
+  * Remove pytest-asyncio test-depends.
+  * Remove numba test-depends on non-x86: at least s390x crashes.
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Wed, 26 Aug 2020 22:34:50 +0100
+
+pandas (1.0.5+dfsg-2) unstable; urgency=medium
+
+  * Fix missing import and update numba submodule name in patches.
+  * Disable asyncio tests (workaround for #969050).
+  * Warn that numba may give wrong answers on non-x86,
+    and remove test-depends on mipsel.
+  * Skip a crashing test on s390x.
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Wed, 26 Aug 2020 20:19:16 +0100
+
+pandas (1.0.5+dfsg-1) unstable; urgency=medium
+
+  * Upstream bugfix release.  Refresh patches, contributors_list.
+  * Fix invalid test xfails.
+  * Only Recommend numba on amd64, to reduce the risk of bugs.
+  * Don't test-depend on numba on ppc64el (where it crashes, #863511?)
+    or on ports architectures (where it mostly isn't available).
+  * Remove no longer needed test xfails/skips.
+  * Upload to unstable.  (Closes: #950430)
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Tue, 25 Aug 2020 20:07:50 +0100
+
+pandas (0.25.3+dfsg2-5) unstable; urgency=medium
+
+  * Tests: ignore rounding difference on i386.  (Closes: #968208)
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Sun, 16 Aug 2020 20:09:14 +0100
+
+pandas (0.25.3+dfsg2-4) unstable; urgency=medium
+
+  * Be compatible with matplotlib 3.3.  (Closes: #966393)
+  * Docs: fix broken remote->local Javascript replacement.
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Sun, 09 Aug 2020 22:11:25 +0100
+
+pandas (0.25.3+dfsg2-3) unstable; urgency=medium
+
+  * Nested DataFrames may raise ValueError with numpy 1.19
+    (upstream bug 32289).  Clarify error message and xfail tests.
+  * Stop using a no-longer-existing numpy constant.
+  * Tests: ignore deprecations/rewordings and avoid setup exception
+    with numpy 1.19.  (Together, the above Closes: #963817)
+  * Bump debhelper compat to 13.
+  * Fix HDFStore.flush (part of #877419) on s390x.
+  * Add NEWS.html.gz for Standards-Version 4.5.0.
+    (Choosing not to also add NEWS.gz as it would be large.)
+  * Tests: accept Hurd's errno and lack of multiprocessing.
+  * Docs: replace embedded Javascript copies with links.
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Sun, 28 Jun 2020 21:47:22 +0100
+
+pandas (1.0.4+dfsg-1) experimental; urgency=medium
+
+  * Upstream bugfix release.  (Closes: #962335)
+  * Refresh patches, update contributors_list.
+  * Fix broken tests.
+  * Tests: allow numba to raise an error on 32 bit systems.
+  * Don't test-depend on numba on armel (where it crashes,
+    possibly #863508) or ppc64/riscv64 (where it isn't available).
+  * Xfail some more HDF5 tests on big-endian architectures.
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Tue, 09 Jun 2020 22:19:23 +0100
+
+pandas (0.25.3+dfsg2-2) unstable; urgency=medium
+
+  * Tests: don't fail on jedi deprecation warnings.
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Thu, 07 May 2020 11:57:06 +0100
+
+pandas (1.0.3+dfsg2-1) experimental; urgency=medium
+
+  * Upstream bugfix release, update contributors_list.
+  * Merge packaging from unstable,
+    but omit no longer needed clipboard warn/xfail.
+  * Only show the NaN -> datetime warning from float dtypes
+    (to avoid an exception while trying to check).
+  * Recommend numba, as we now have a recent enough version.
+  * Re-add dask test-dependency.
+  * Clarify non-x86 warnings, remove no longer needed xfails / ignores.
+  * Clean up whitespace and patch names/descriptions.
+  * Remove patches no longer needed.
+  * Network tests: use more stable URLs.
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Wed, 06 May 2020 17:07:44 +0100
+
+pandas (0.25.3+dfsg2-1) unstable; urgency=medium
+
+  * Remove inconveniently licensed (CC-BY-SA) snippets.
+  * Fix (harmless) SyntaxWarning on install.  (Closes: #956021)
+  * Fix NaT sort order and test failures with numpy 1.18.
+    (Closes: #958531)
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Wed, 06 May 2020 12:18:23 +0100
+
+pandas (0.25.3+dfsg-9) unstable; urgency=medium
+
+  * Don't raise on import without matplotlib installed.  Add test of this.
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Fri, 03 Apr 2020 21:56:02 +0100
+
+pandas (0.25.3+dfsg-8) unstable; urgency=medium
+
+  * Tests: don't fail on harmless changes in dependencies.  (Closes: #954647)
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Thu, 02 Apr 2020 18:53:32 +0100
+
+pandas (0.25.3+dfsg-7) unstable; urgency=medium
+
+  * Fix another test failure due to our warnings.
+  * Skip rather than xfail crashing tests.
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Wed, 26 Feb 2020 18:45:58 +0000
+
+pandas (0.25.3+dfsg-6) unstable; urgency=medium
+
+  * Don't fail tests on our own warnings.
+  * Xfail some more HDF tests on non-x86 architectures.
+  * Warn that clipboard I/O is broken on big-endian architectures
+    and xfail test.
+  * Use pytest-forked to isolate (already xfailed) crashing test.
+  * Xfail tests that use no-longer-existing URLs.
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Wed, 26 Feb 2020 07:40:25 +0000
+
+pandas (0.25.3+dfsg-5) unstable; urgency=medium
+
+  * Backport packaging from experimental:
+    - Remove unnecessary test skips, and reorganize remaining ones.
+    - Use xfails instead of skips.
+    - Add warnings for the known non-x86 breakages
+      (NaN -> datetime #877754, HDF and Stata I/O #877419).
+    - Tell I/O tests where to find the source tree's test data
+      instead of skipping them.
+    - Stop using deprecated envvar/tag names.
+    - Use https for links where available.
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Mon, 24 Feb 2020 22:38:26 +0000
+
+pandas (1.0.1+dfsg-1) experimental; urgency=medium
+
+  * Upstream bugfix release.
+  * Refresh patches.
+  * Update and sort d/copyright, update contributors_list.
+  * Re-enable checking the test suite.
+  * Declare transition Breaks (see #950430).
+  * Add jinja2 recommends/test-depends.
+  * Fix test_to_numpy failure on big-endian systems.
+  * Register documentation in doc-base.  (Closes: #879226)
+  * Remove no longer needed test xfails/skips,
+    and reorganize the remaining ones.
+  * Tell I/O tests where to find the source tree's test data
+    instead of skipping them.
+  * Enable multiarch.
+  * Temporarily drop dask test-dependency to avoid uninstallability.
+  * Add warnings for the known non-x86 breakages
+    (NaN -> datetime #877754, HDF and Stata I/O #877419).
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Sun, 23 Feb 2020 17:13:08 +0000
+
+pandas (1.0.0+dfsg-1) experimental; urgency=medium
+
+  * New upstream release.
+  * Upload to experimental, as this is an API break (see #950430).
+  * Drop patches applied upstream, refresh others.
+  * Update and improve d/copyright, update contributors_list.
+  * Xfail a test that fails in the C locale.
+  * Update and organize depends/recommends.
+  * Docs: use a sphinx theme we have, fix spelling,
+    link to rather than embed remote resource,
+    use https links where available.
+  * Stop using deprecated envvar/tag names.
+  * Xfail rather than skip previously broken tests,
+    and put the condition in the patch not d/rules or d/tests.
+  * Remove no longer used patch-stamp.
+  * Temporarily ignore the test suite to get a first build.
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Sun, 02 Feb 2020 21:04:36 +0000
+
+pandas (0.25.3+dfsg-4) unstable; urgency=medium
+
+  * No-change upload to unstable.  (Closes: #937236, #931557)
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Sun, 10 Nov 2019 16:35:41 +0000
+
+pandas (0.25.3+dfsg-3) experimental; urgency=medium
+
+  * Fix autopkgtest.
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Sat, 09 Nov 2019 10:29:47 +0000
+
+pandas (0.25.3+dfsg-2) experimental; urgency=medium
+
+  * Split up the test suite to fit in memory on mipsel,
+    and stop ignoring it there.  (Closes: #943732)
+  * Reproducibility: use correct path for stripping docs.
+  * Declare transition Breaks (see #931557).
+  * Tests: ignore warning from Python 3.8.
+  * Update d/copyright (some files have moved).
+  * Use local requirejs.
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Fri, 08 Nov 2019 07:56:16 +0000
+
+pandas (0.25.3+dfsg-1) experimental; urgency=medium
+
+  * Upstream bugfix release.
+  * Drop patch no longer needed.
+  * Update autopkgtest dependencies, drop unused link.
+  * Better document test skips, remove unnecessary ones.
+  * Reproducibility: strip timestamps and build paths,
+    use fixed random seeds for building documentation.
+  * Ignore test suite on mipsel.
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Sat, 02 Nov 2019 22:26:31 +0000
+
+pandas (0.25.2+dfsg-2) experimental; urgency=medium
+
+  * Correct path for contributors list, and don't fail when
+    not building the -doc package.
+  * Try again to fix test failure due to deb_nonversioneer_version.
+  * Skip some failing tests on non-Intel (see #943732),
+    require other tests to pass.
+  * Fix another typo.
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Mon, 28 Oct 2019 22:06:10 +0000
+
+pandas (0.25.2+dfsg-1) experimental; urgency=medium
+
+  [ Graham Inggs ]
+  * Skip python2 test_register_by_default on s390x
+  * Fix python2 test failures in certain locales
+
+  [ Yaroslav Halchenko ]
+  * Recent upstream release
+  * Updated patches
+  * Adjusted for the gone ci/print_versions
+  * d/control
+    - added python{,3}-hypothesis to b-depends
+
+  [ Rebecca N. Palmer ]
+  * New upstream release.
+  * Upload to experimental, as this is an API break (see #931557).
+  * Drop patches fixed upstream, refresh others.
+  * Remove Python 2 packages (see #937236).
+  * Use Python 3 in shebangs and subprocess calls.
+  * Re-enable building on Python 3.8.
+  * Use the new location of print_versions.
+  * Skip feather tests and remove build-dependency:
+    they now need pyarrow.feather, which isn't in Debian.
+  * Don't fail tests for our versioneer removal
+    or a differently worded error message.
+  * Add/update minimum dependency versions.
+  * Add numpydoc, nbconvert and pytest-xdist build-depends.
+  * Update d/copyright.
+  * Pre-generate a contributor list to avoid needing the git log
+    at build time (when it won't exist).
+  * Allow tests to fail for now.
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Mon, 28 Oct 2019 07:53:21 +0000
+
+pandas (0.23.3+dfsg-8) unstable; urgency=medium
+
+  * Examples dependencies: re-add statsmodels and xarray;
+    also add rpy2 and feather.
+  * Use packaged intersphinx indexes.  (Closes: #876417)
+  * Use https for intersphinx links.
+  * Remove cythonized-files*.  (They are regenerated on each build.)
+  * Remove test xfail, as statsmodels has now been fixed.
+  * Set Rules-Requires-Root: no.
+  * Make documentation Suggest the Python 3 version.
+  * Suggest statsmodels.
+  * Only use Python 3 sphinx, and mark it -Indep/nodoc.
+  * Bump debhelper compat to 12 and use debhelper-compat and pybuild.
+  * Remove pycompat and X-Python*-Version.
+  * Add missing d/copyright item.
+  * Remove obsolete TODOs.
+  * Clarify descriptions.
+  * Stop referring to examples that no longer exist.
+  * Fix typos.
+  * Remove old (no longer used) EXCLUDE_TESTS*.
+  * Deduplicate documentation files.
+  * Use Python 3 shebangs, and fix broken shebang.
+  * Add python3-ipykernel, -ipywidgets, -seaborn to
+    Build-Depends-Indep.
+  * Disable dh_auto_test: it fails, and we run the tests elsewhere.
+  * Mark test dependencies nocheck/nodoc.
+  * Remove old minimum versions / alternative dependencies.
+  * Build-depend on dh-python.
+  * Don't build on python3.8, as it will fail tests (see #931557).
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Sun, 27 Oct 2019 11:38:37 +0000
+
+pandas (0.23.3+dfsg-7) unstable; urgency=medium
+
+  * Revert test patch and use an xfail instead.
+  * Temporarily drop statsmodels+xarray Build-Depends, as they are
+    uninstallable until this is built.
+  * Add python3-xarray to autopkgtest Depends.
+  * Drop Python 2 autopkgtest (but keep build-time test).
+  * Remove duplicate Recommends.
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Fri, 20 Sep 2019 08:01:37 +0100
+
+pandas (0.23.3+dfsg-6) unstable; urgency=medium
+
+  * Team upload
+  * Avoid FTBFS with statsmodels 0.9.0
+  * Add python3-statsmodels to autopkgtest Depends
+
+ -- Graham Inggs <ginggs@debian.org>  Wed, 18 Sep 2019 13:46:01 +0000
+
+pandas (0.23.3+dfsg-5) unstable; urgency=medium
+
+  * Team upload
+  * Add locales-all to Build-Depends and autopkgtest Depends in order to
+    consistently test in all avalable locales
+  * Add crh_UA to skip_noencoding_locales.patch
+  * Fix wrong debian/source/options exclude, thanks Steve Langasek
+
+ -- Graham Inggs <ginggs@debian.org>  Wed, 18 Sep 2019 05:57:44 +0000
+
+pandas (0.23.3+dfsg-4) unstable; urgency=medium
+
+  * Add self to Uploaders.
+  * Recommend .xls format support also in Python 3.  (Closes: #880125)
+  * Tests: don't call fixtures, as this is an error in pytest 4+.
+  * Don't test datetime in locales with no encoding.
+    (These are broken by a Python stdlib bug.)
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Sat, 14 Sep 2019 16:37:43 +0100
+
+pandas (0.23.3+dfsg-3) unstable; urgency=medium
+
+  * Team upload.
+  * Make np.array @ Series act the right way round.  (Closes: #923708)
+  * Replace #918206 fix with a fix that doesn't change the return type
+    and inplace-ness of np.array += DataFrame.  (Closes: #923707)
+  * Fix missing page in documentation.
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Wed, 06 Mar 2019 22:19:34 +0000
+
+pandas (0.23.3+dfsg-2) unstable; urgency=medium
+
+  * Team upload.
+  * Don't fail the build on +dfsg versions.
+  * Fix another d/copyright issue.
+  * Add d/upstream/metadata.
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Sat, 02 Mar 2019 14:57:12 +0000
+
+pandas (0.23.3+dfsg-1) unstable; urgency=medium
+
+  * Team upload.
+  * Fix DataFrame @ np.array matrix multiplication.  (Closes: #918206)
+  * Fix documentation build (Sphinx now defaults to Python 3).
+    (Closes: #804552, LP: #1803018)
+  * Add documentation examples dependencies.
+  * Update d/copyright.
+  * Remove unlicensed files.
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com>  Fri, 01 Mar 2019 23:02:18 +0000
+
+pandas (0.23.3-1) unstable; urgency=medium
+
+  * New upstream release
+  * debian/patches
+    - many upstreamed patches are removed and others refreshed
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Sat, 28 Jul 2018 00:39:32 -0400
+
+pandas (0.22.0-8) unstable; urgency=medium
+
+  * Team Upload.
+  * patches:
+    + Add patch: deb_dont_call_py2_in_py3_test.patch
+      During python3 unit test, command 'python' is called by one of
+      the tests.  When there is no python2 installation, tests such as
+      autopkgtest would fail.
+    * Put the conditionally applied patch to series' comment to avoid
+      lintianW: patch-file-present-but-not-mentioned-in-series.
+  * Trying to fix the autopkgtest:
+    + Leave a comment about the way to run unittest in the test control file.
+    + Synchronize B-D and autopkgtest depends.
+    + Allow output to stderr during test.
+    * Switch from nosetest to pytest.
+    * Synchronize pytest argument for rules and autopkgtest.
+    - Replace tests/unittest with the symlink pointed to tests/unittest3.
+      That scripts is smart enough to tell from py2 and py3, so we won't
+      need to write the same thing twice.
+    - Filter out intel tests on non-x86 architectures.
+    - Only enable "slow" tests on (Debian + x86) tester. "slow" tests may
+      consume too much memory to cause memory error or trigger OOM killer.
+  * control:
+    + Add missing python3 dependencies and sort the B-D list.
+    * Point Vcs-* fields to Salsa.
+    * Update Homepage to https://pandas.pydata.org/ .
+  * rules:
+    * Reverse the architecture filtering logic.
+    * Disable "slow" tests during build for non-x86 architectures.
+      This may significantly reduce the build time on those weak architectures.
+    * Don't specify the pytest marker expression twice.
+      The first expression will be overridden.
+    * Fix hardening flags.
+    - Cleanup the mess of unused nosetest exclusion expressions.
+  * Update lintian overrides.
+    + Override source-is-missing error, which is a false-positive triggered
+      by insane-line-length-in-source-file.
+    + Override insane-line-length-in-source-file because we have nothing
+      todo with lenghy lines in html.
+  * TODO: Point out that the unittest speed can be boosted with pytest-xdist.
+
+ -- Mo Zhou <cdluminate@gmail.com>  Sun, 17 Jun 2018 16:01:16 +0000
+
+pandas (0.22.0-7) unstable; urgency=medium
+
+  * Team Upload.
+
+  [ Mo Zhou ]
+  * Remove patch: deb_fix_test_failure_test_basic_indexing, which is
+    unneeded for pandas >= 0.21 . (Closes: #900061)
+
+  [ Graham Inggs ]
+  * Add riscv64 to the list of "not intel" architectures
+  * Update mark_tests_working_on_intel_armhf.patch
+
+ -- Graham Inggs <ginggs@debian.org>  Tue, 29 May 2018 13:50:59 +0000
+
+pandas (0.22.0-6) unstable; urgency=medium
+
+  * Team upload
+  * Fix FTBFS with Sphinx 1.7, thanks Dmitry Shachnev!
+
+ -- Graham Inggs <ginggs@debian.org>  Tue, 24 Apr 2018 19:09:20 +0000
+
+pandas (0.22.0-5) unstable; urgency=medium
+
+  * Team upload
+  * Add compatibility with Matplotlib 2.2 (Closes: #896673)
+
+ -- Graham Inggs <ginggs@debian.org>  Mon, 23 Apr 2018 13:56:12 +0000
+
+pandas (0.22.0-4) unstable; urgency=medium
+
+  * Team upload
+  * Fix more tests expecting little-endian results
+  * Fix heap corruption in read_csv on 32-bit, big-endian architectures
+    (Closes: #895890)
+
+ -- Graham Inggs <ginggs@debian.org>  Sun, 22 Apr 2018 21:48:27 +0000
+
+pandas (0.22.0-3) unstable; urgency=medium
+
+  * Team upload
+  * Refresh and re-enable mark_tests_working_on_intel.patch
+  * Fix test__get_dtype tests expecting little-endian results
+
+ -- Graham Inggs <ginggs@debian.org>  Thu, 12 Apr 2018 11:04:21 +0000
+
+pandas (0.22.0-2) unstable; urgency=medium
+
+  * debian/patches
+    - as upstream moved over to pytest from nose, no more nose imports were
+      in the code. Just adjusted patches to import nose where needed
+  * debian/rules
+    - specify LC_ALL=C locale to avoid crash while building docs
+    - add the 0001-TST-pytest-deprecation-warnings-GH17197-17253-reversed.patch
+      to the series if building on a system with an old pytest
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Wed, 21 Feb 2018 23:44:58 -0500
+
+pandas (0.22.0-1) unstable; urgency=medium
+
+  * Upstream release
+  * debian/patches
+    - refreshed many
+    - updated some
+    - added
+      - up_moto_optional  to skip tests requiring moto (#777089)
+      - deb_skip_difffailingtests to skip  two failing tests
+        (see https://github.com/pandas-dev/pandas/issues/19774)
+      - up_xlwt_optional to skip a test requiring xlwt
+      - deb_ndsphinx_optional to make nbsphinx optional.
+        Make nbsphinx not required in build-depends on systems with
+        older python-sphinx
+      - mark_tests_failing_on_386.patch
+        see https://github.com/pandas-dev/pandas/issues/19814
+    - removed adopted upstream:
+         - dateutil-2.6.1-fixed-ambiguous-tz-dst-be.patch
+      - up_tst_np_argsort_comparison2
+    - disabled for now:
+      - mark_tests_working_on_intel.patch
+      - up_tst_dont_assert_that_a_bug_exists_in_numpy
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Wed, 21 Feb 2018 10:30:06 -0500
+
+pandas (0.20.3-11) unstable; urgency=medium
+
+  * Team upload.
+  * Cherry-pick upstream commit 5f2b96bb637f6ddeec169c5ef8ad20013a03c853
+    to workaround a numpy bug. (Closes: #884294)
+    + patches/up_tst_dont_assert_that_a_bug_exists_in_numpy
+  * Cherry-pick upstream commits to fix test failure caused by test_argsort().
+    + patches/up_tst_np_argsort_comparison2
+  * Workaround test failure of test_basic_indexing() in file
+    pandas/tests/series/test_indexing.py .
+    + patches/deb_fix_test_failure_test_basic_indexing
+
+ -- Mo Zhou <cdluminate@gmail.com>  Sat, 20 Jan 2018 09:00:31 +0000
+
+pandas (0.20.3-10) unstable; urgency=medium
+
+  * Team upload.
+  * Exclude more tests failing on mips, armhf and powerpc
+
+ -- Andreas Tille <tille@debian.org>  Tue, 24 Oct 2017 21:26:02 +0200
+
+pandas (0.20.3-9) unstable; urgency=medium
+
+  * Team upload.
+  * Add missing "import pytest" to two patched tests
+  * Secure URI in watch file
+
+ -- Andreas Tille <tille@debian.org>  Tue, 24 Oct 2017 08:18:54 +0200
+
+pandas (0.20.3-8) unstable; urgency=medium
+
+  * Team upload.
+  * Exclude one more test and de-activate non-working ignore of test errors
+
+ -- Andreas Tille <tille@debian.org>  Mon, 23 Oct 2017 21:32:24 +0200
+
+pandas (0.20.3-7) unstable; urgency=medium
+
+  * Team upload.
+  * debhelper 9
+  * Use Debian packaged mathjax
+  * Do not Recommends python3-six since it is mentioned in Depends
+  * Remove redundant/outdated XS-Testsuite: autopkgtest
+  * Exclude one more test and de-activate non-working ignore of test errors
+
+ -- Andreas Tille <tille@debian.org>  Mon, 23 Oct 2017 17:33:55 +0200
+
+pandas (0.20.3-6) unstable; urgency=medium
+
+  * Team upload.
+  * Ignore test errors on some architectures
+    (Concerns bug #877419)
+  * Remove __pycache__ remainings from testing
+  * Standards-Version: 4.1.1
+  * DEP3 for Google Analytics patch
+  * Complete Google Analytics patch
+
+ -- Andreas Tille <tille@debian.org>  Mon, 23 Oct 2017 09:05:27 +0200
+
+pandas (0.20.3-5) unstable; urgency=medium
+
+  * Make sure remainings of nose tests will not fail. That's a pretty stupid
+    patch since the tests are not using nose any more only some remaining
+    exceptions.  Hope it will work anyway.
+    (Concerns bug #877419)
+
+ -- Andreas Tille <tille@debian.org>  Mon, 16 Oct 2017 21:57:45 +0200
+
+pandas (0.20.3-4) unstable; urgency=medium
+
+  * Mark those tests @pytest.mark.intel that pass only on Intel architectures
+  * d/rules: try to exclude tests that were marked "intel"
+    (Concerns bug #877419)
+
+ -- Andreas Tille <tille@debian.org>  Sat, 14 Oct 2017 19:49:01 +0200
+
+pandas (0.20.3-3) unstable; urgency=medium
+
+  * Team upload.
+  * Moved packaging from pkg-exppsy to Debian Science
+  * Exclude certain tests on certain architectures
+    (Concerns bug #877419)
+
+ -- Andreas Tille <tille@debian.org>  Fri, 13 Oct 2017 20:52:53 +0200
+
+pandas (0.20.3-2) unstable; urgency=medium
+
+  * debian/control
+    - boosted policy to 4.0.0 (I think we should be ok)
+    - drop statsmodels from build-depends to altogether avoid the circular
+      build-depends (Closes: #875805)
+  * Diane Trout:
+    - Add dateutil-2.6.1-fixed-ambiguous-tz-dst-be.patch (Closes: #875807)
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Thu, 21 Sep 2017 16:11:29 -0400
+
+pandas (0.20.3-1) unstable; urgency=medium
+
+  * Fresh upstream release
+  * debian/patches
+    - updated some, removed changeset*, and disabled possibly fixed upstream
+      ones
+  * debian/{control,rules}
+    - upstream switched to use pytest instead of nose
+    - enabled back all the tests for now
+    - added python-nbsphinx for b-depends, needed for docs
+  * debian/*.install
+    - no .so at the first level of subdirectories, now present on the third
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Mon, 10 Jul 2017 20:00:59 -0400
+
+pandas (0.19.2-5.1) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * Apply patch by Rebecca N. Palmer
+    Closes: #858260
+
+ -- Andreas Tille <tille@debian.org>  Sun, 02 Apr 2017 07:06:36 +0200
+
+pandas (0.19.2-5) unstable; urgency=medium
+
+  * And one more test to skip on non-amd64 -- test_round_trip_valid_encodings
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Thu, 12 Jan 2017 13:10:11 -0500
+
+pandas (0.19.2-4) unstable; urgency=medium
+
+  * Exclude few more "plotting" tests on non-amd64 which cause FTBFS
+    on s390
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Thu, 12 Jan 2017 11:43:13 -0500
+
+pandas (0.19.2-3) unstable; urgency=medium
+
+  * Brought back changeset_0699c89882133a41c250abdac02796fec84512e8.diff
+    which should resolve tests failures on BE platforms (wasn't yet
+    upstreamed within 0.19.x releases)
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Thu, 12 Jan 2017 09:44:52 -0500
+
+pandas (0.19.2-2) unstable; urgency=medium
+
+  * Exclude a number of tests while running on non-amd64 platforms
+    due to bugs in numpy/pandas
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Wed, 11 Jan 2017 12:13:05 -0500
+
+pandas (0.19.2-1) unstable; urgency=medium
+
+  * Fresh upstream minor release -- supposed to be bugfix but interacts
+    with current beta (1:1.12.0~b1-1) numpy leading to various failed tests
+  * debian/patches
+    - changeset_ae6a0a51cf41223394b7ef1038c210045d486cc8.diff
+      to guarantee the same Series dtype as of cut regardless of architecture
+    - up_buggy_overflows
+      workaround for inconsistent overflows while doing pow operation on big
+      ints
+  * debian/rules
+    - exclude more tests which are due to known issues in numpy beta and thus
+      not to be addressed directly in pandas
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Wed, 04 Jan 2017 10:19:52 -0500
+
+pandas (0.19.1+git174-g81a2f79-1) experimental; urgency=medium
+
+  * New upstream snapshot from v0.19.0-174-g81a2f79
+    - lots of bugfixes since 0.19.1, so decided to test snapshot
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Sat, 10 Dec 2016 22:43:19 -0500
+
+pandas (0.19.1-3) unstable; urgency=medium
+
+  * Require cython >= 0.23 or otherwise use pre-cythoned sources
+    (should resolve https://github.com/pandas-dev/pandas/issues/14699
+    on jessie)
+  * debian/control
+    - Build-Conflicts with python-tables 3.3.0-4 since that one leads to FTBFS
+    - boosted policy to 3.9.8
+  * debian/rules
+    - Exclude few more tests which fail on big endian and other platforms
+      test_(msgpack|read_dta18)
+  * debian/patches
+    - changeset_0699c89882133a41c250abdac02796fec84512e8.diff
+      to compare in the tests against native endianness
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Fri, 09 Dec 2016 15:49:50 -0500
+
+pandas (0.19.1-2) unstable; urgency=medium
+
+  * debian/control
+    - Moved statsmodels build-depend (optional) under build-depends-indep
+      to break circular dependency.  Thanks Stuart Prescott for the analysis
+  * debian/patches/
+    - changeset_1309346c08945cd4764a549ec63cf51089634a45.diff
+      to not mask problem reading json leading to use of undefined variable
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Sun, 27 Nov 2016 21:49:40 -0500
+
+pandas (0.19.1-1) unstable; urgency=medium
+
+  * Fresh upstream release
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Fri, 18 Nov 2016 12:19:54 -0500
+
+pandas (0.19.0+git14-ga40e185-1) unstable; urgency=medium
+
+  * New upstream post-release (includes some bugfixes) snapshot
+  * debian/patches
+    - dropped changeset_ and up_ patches adopted upstream, refreshed the rest
+  * debian/rules,patches
+    - save debian-based version into __version.py, so doesn't conflict with
+      upstream tests of public API
+    - exclude for now test_expressions on python3
+      (see https://github.com/pydata/pandas/issues/14269)
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Thu, 13 Oct 2016 10:26:18 -0400
+
+pandas (0.18.1-1) unstable; urgency=medium
+
+  * Fresh upstream release
+  * debian/patches/
+    - changeset_46af7cf0f8e0477f6cc7454aa786a573228f0ac3.diff
+      to allow also AttributeError exception being thrown in the tests
+      (Closes: #827938)
+    - debian/patches/deb_skip_test_precision_i386
+      removed (upstreamed)
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Wed, 13 Jul 2016 10:42:00 -0400
+
+pandas (0.18.0+git114-g6c692ae-1) unstable; urgency=medium
+
+  * debian/control
+    - added python{,3}-pkg-resources to direct Depends for the packages
+      (Closes: #821076)
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Sun, 17 Apr 2016 20:49:25 -0400
+
+pandas (0.17.1-3) unstable; urgency=medium
+
+  * debian/tests/unittest*
+    - set LC_ALL=C.UTF-8 for the tests run to prevent failure of test_set_locale
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Tue, 08 Dec 2015 08:31:30 -0500
+
+pandas (0.17.1-2) unstable; urgency=medium
+
+  * debian/control
+    - make -statsmodels and -tables optional build-depends on those platforms
+      where they are N/A atm.  Added bdepends on python3-tables since available
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Sun, 06 Dec 2015 12:58:26 -0500
+
+pandas (0.17.1-1) unstable; urgency=medium
+
+  * Fresh upstream bugfix release
+  * debian/rules
+    - fixed deletion of moved away .so files
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Fri, 27 Nov 2015 10:52:49 -0500
+
+pandas (0.17.0+git8-gcac4ad2-2) unstable; urgency=medium
+
+  * Bug fix: install also msgpack/*.so extensions to -lib packages
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Sat, 10 Oct 2015 13:52:54 -0400
+
+pandas (0.17.0+git8-gcac4ad2-1) unstable; urgency=medium
+
+  * New upstream snapshot post release to pick up few bugfixes
+    - Started to trigger failures of test_constructor_compound_dtypes and
+      test_invalid_index_types -- disabled those for now, see
+      https://github.com/pydata/pandas/issues/11169
+  * debian/rules
+    - Generate pandas/version.py if not present out of debian/changelog
+      upstream version information (versioneer wouldn't know since relies on
+      git)
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Fri, 09 Oct 2015 21:35:23 -0400
+
+pandas (0.16.2+git65-g054821d-1) unstable; urgency=medium
+
+  * Fresh upstream post-release snapshot (to pick up recent fixes etc)
+    (Closes: #787432)
+  * debian/{control,rules}
+    - build -doc package (Closes: #660900)
+    - add ipython (or alternative new ones from neurodebian) into
+      Build-Depends-Indep to build docs
+    - add python{,3}-{lxml,html5lib} to Build-Depends and Recommends
+    - use LC_ALL=C.UTF-8 while running tests
+    - exclude also test_set_locale since it fails ATM
+      see https://github.com/pydata/pandas/issues/10471
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Tue, 30 Jun 2015 17:26:54 -0400
+
+pandas (0.16.0~rc1-1) experimental; urgency=medium
+
+  * New upstream release candidate
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Fri, 13 Mar 2015 14:21:39 -0400
+
+pandas (0.15.2-1) unstable; urgency=medium
+
+  * Fresh upstream release
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Thu, 11 Dec 2014 09:51:57 -0500
+
+pandas (0.15.1+git125-ge463818-1) unstable; urgency=medium
+
+  * New upstream snapshot from v0.15.1-125-ge463818.
+  * Upload to unstable during freeze since previous one in sid didn't make it
+    to jessie anyways
+  * debian/control
+    - remove versioning demand for cython (it would use pre-cythonized code on
+      older ones and there is no longer need in sid/jessie to enforce version).
+      As a consecuence -- removed all dsc patches pointing to
+      nocython3-dsc-patch, since no longer needed
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Sun, 30 Nov 2014 21:09:36 -0500
+
+pandas (0.15.0-2) unstable; urgency=medium
+
+  * debian/control
+    - specify minimal numpy to be 1.7
+  * debian/patches
+    - deb_skip_stata_on_bigendians   skip test_stata again on BE platforms
+    - deb_skip_test_precision_i386   skip test_precision_conversion on 32bit
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Thu, 30 Oct 2014 23:09:13 -0400
+
+pandas (0.15.0-1) unstable; urgency=medium
+
+  * New upstream release
+  * debian/control
+    - restrict statsmodels and matplotlib from being required on the ports
+      which do not have them
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Sun, 26 Oct 2014 11:30:23 -0400
+
+pandas (0.14.1-2) unstable; urgency=medium
+
+  * debian/patches/changeset_314012d.diff
+    - Fix converter test for MPL1.4 (Closes: #763709)
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Mon, 06 Oct 2014 11:53:42 -0400
+
+pandas (0.14.1-1) unstable; urgency=medium
+
+  * New upstream release
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Thu, 10 Jul 2014 23:38:49 -0400
+
+pandas (0.14.0+git393-g959e3e4-1) UNRELEASED; urgency=medium
+
+  * New upstream snapshot from v0.14.0-345-g8cd3dd6
+  * debian/rules
+    - disable running disabled tests to prevent clipboard tests failures
+      under kfreebsd kernels
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Mon, 07 Jul 2014 12:29:50 -0400
+
+pandas (0.14.0+git213-g741b2fa-1) experimental; urgency=medium
+
+  * New upstream snapshot from v0.14.0-213-g741b2fa.
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Thu, 19 Jun 2014 10:30:42 -0400
+
+pandas (0.14.0+git17-g3849d5d-1) unstable; urgency=medium
+
+  * New upstream snapshot from v0.14.0-17-g3849d5d -- has resolved a number
+    of bugs sneaked into 0.14.0 release, and caused FTBFS on some platforms
+    and backports
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Sun, 01 Jun 2014 00:54:34 -0400
+
+pandas (0.14.0-1) unstable; urgency=medium
+
+  * New upstream release
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Fri, 30 May 2014 08:45:35 -0400
+
+pandas (0.14.0~rc1+git79-g1fa5dd4-1) experimental; urgency=medium
+
+  * New upstream snapshot from v0.14.0rc1-73-g8793356
+  * debian/patches:
+    - dropped CPed changeset_*s
+    - added deb_disable_googleanalytics
+  * debian/control:
+    - boosted policy compliance to 3.9.5
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Tue, 27 May 2014 16:00:00 -0400
+
+pandas (0.13.1-2) unstable; urgency=low
+
+  * debian/patches/changeset_6d56e7300d66d3ba76684334bbb44b6cd0ea9f61.diff
+    to fix FTBFS of statsmodels due to failing tests (Closes: #735804)
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Sat, 08 Feb 2014 12:46:42 -0500
+
+pandas (0.13.1-1) unstable; urgency=low
+
+  * Fresh upstream release
+  * debian/patches
+    - deb_skip_test_pytables_failure to mitigate error while testing on
+      amd64 wheezy and ubuntu 12.04
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Tue, 04 Feb 2014 12:09:29 -0500
+
+pandas (0.13.0+git464-g15a8ff7-1) experimental; urgency=low
+
+  * Fresh pre-release snapshot
+  * debian/patches
+    - removed all cherry-picked patches (should have been upstreamed)
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Wed, 29 Jan 2014 21:27:45 -0500
+
+pandas (0.13.0-2) unstable; urgency=low
+
+  * debian/patches
+    - 0001-BLD-fix-cythonized-msgpack-extension-in-setup.py-GH5.patch
+      to resolve issue with building C++ Cython extension using
+      pre-generated sources
+    - 0001-Add-division-future-import-everywhere.patch
+      0002-remove-explicit-truediv-kwarg.patch
+      to resolve compatibility issues with elderly Numexpr
+    - 0001-BUG-Yahoo-finance-changed-ichart-url.-Fixed-here.patch
+    - deb_skip_sequencelike_on_armel to prevent FTBFS on armel due to failing
+      test: https://github.com/pydata/pandas/issues/4473
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Fri, 03 Jan 2014 23:13:48 -0500
+
+pandas (0.13.0-1) unstable; urgency=low
+
+  * Fresh upstream release
+    - resolved compatibility with matplotlib 1.3 (Closes: #733848)
+  * debian/{control,rules}
+    - use xvfb (added to build-depends together with xauth, and xclip)
+      for tests
+    - define http*_proxy to prevent downloads
+    - install .md files not .rst for docs -- were renamed upstream
+    - include .cpp Cython generated files into debian/cythonized-files*
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Wed, 01 Jan 2014 18:08:22 -0500
+
+pandas (0.12.0-2) unstable; urgency=low
+
+  [ Dmitry Shachnev ]
+  * DEP-8 tests improvements:
+    - Use Xvfb for running tests.
+    - Increase verbosity using -v flag.
+    - Fix printing interpreter version in unittests3.
+  * Fix indentaion in debian/control.
+
+  [ Yaroslav Halchenko ]
+  * debian/control
+    - place python3-matplotlib ahead of elderly python-matplotlib without
+      python3 support since now we have python3-matplotlib in sid
+  * debian/copyright
+    - go through reported missing copyright/license statements (Closes:
+      #700564) Thanks Luca Falavigna for the report
+  * debian/rules,patches
+    - exclude test test_bar_log due to incompatibility with matplotlib 1.3.0 (test
+      adjusted upstream and would be re-enabled for the new release).
+    - debian/patches/changeset_952c5f0bc433622d21df20ed761ee4cb728370eb.diff
+      adds matplotlib 1.3.0 compatibility
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Sat, 14 Sep 2013 20:02:58 -0400
+
+pandas (0.12.0-1) unstable; urgency=low
+
+  * New upstream release:
+    - should address failed tests on 32bit platforms
+  * debian/patches
+    - neurodebian: allow to build for jessie with outdated cython
+  * debian/control
+    - build for Python2 >= 2.7 due to some (probably temporary) incompatibilities
+      in tests with 2.6
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Wed, 24 Jul 2013 23:29:03 -0400
+
+pandas (0.12.0~rc1+git127-gec8920a-1) experimental; urgency=low
+
+  * New upstream snapshot from origin/master at v0.12.0rc1-127-gec8920a
+    - should address FTBFS due to failing tests on big endians
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Sat, 20 Jul 2013 09:23:04 -0400
+
+pandas (0.12.0~rc1+git112-gb79996c-1) experimental; urgency=low
+
+  * Fresh git snapshot of upstream candidate release. Experimental build
+    to verify functioning across the ports.
+  * debian/control
+    - dedented last "paragraph" to break it away from the 2nd one.
+      Thanks Beatrice Torracca for the detailed report (Closes: #712260)
+    - Depends on python-six now
+  * debian/{,tests/}control
+    - added python{,3}-bs4, python-html5lib to Build-Depends for more
+      thorough testing
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Thu, 18 Jul 2013 13:15:19 -0400
+
+pandas (0.11.0-2) unstable; urgency=low
+
+  [ Yaroslav Halchenko ]
+  * Upload to unstable -- this upstream release addressed Cython 0.19
+    compatibility issue (Closes: #710608)
+  * Recommends numexpr
+  * Re-cythonized using Cython 0.19
+
+  [ Dmitry Shachnev ]
+  * debian/tests/unittests3: use nosetests3 instead of nosetests-3.x.
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Mon, 03 Jun 2013 11:57:43 -0400
+
+pandas (0.11.0-1) experimental; urgency=low
+
+  * New upstream release
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Tue, 23 Apr 2013 22:40:15 -0400
+
+pandas (0.10.1-1) experimental; urgency=low
+
+  * New upstream release
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Tue, 22 Jan 2013 13:07:31 -0500
+
+pandas (0.10.0-1) experimental; urgency=low
+
+  * New upstream release
+    - drops python 2.5 support (we are dropping pyversions in favor of
+      X-Python-Version)
+  * debian/patches:
+    - all previous are in upstream now, dropped locally
+    - added -dsc-patch'es for systems without cython3
+  * debian/control:
+    - added python-statsmodels for the extended tests coverage
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Mon, 17 Dec 2012 12:27:25 -0500
+
+pandas (0.9.1-2) unstable; urgency=low
+
+  [ Julian Taylor ]
+  * Provide python3 packages
+  * Add autopkgtests
+  * debian/patches:
+    - relax-float-tests.patch:
+      replace float equality tests with almost equal
+    - fix-endian-tests.patch:
+      patch from upstream to fix the test failure on big endian machines
+
+  [ Yaroslav Halchenko ]
+  * Upload to unstable
+  * Dropping pysupport
+  * debian/rules:
+    - slight reduction of code duplication between python 2 and 3
+    - cythonize for both python 2 and 3 into separate directories
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Sat, 01 Dec 2012 22:57:47 -0500
+
+pandas (0.9.1-1) experimental; urgency=low
+
+  * New upstream release
+  * Boosted policy to 3.9.3 (no due changes)
+  * debian/rules
+    - Fixed up cleaning up of cythonized files
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Wed, 14 Nov 2012 09:44:14 -0500
+
+pandas (0.9.0-1) experimental; urgency=low
+
+  * New upstream release
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Sun, 07 Oct 2012 21:26:23 -0400
+
+pandas (0.9.0~rc2-1) experimental; urgency=low
+
+  * New upstream release candidate
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Fri, 21 Sep 2012 10:27:52 -0400
+
+pandas (0.8.1-1) unstable; urgency=low
+
+  * Primarily a bugfix upstream release.
+  * up_tag_yahoo_test_requiring_network patch removed.
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Sun, 22 Jul 2012 20:13:16 -0400
+
+pandas (0.8.0-2) unstable; urgency=medium
+
+  * up_tag_yahoo_test_requiring_network patch cherry-picked from upstream
+    GIT so that tests would not be excercised at package build time
+    (Closes: #681449)
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Fri, 13 Jul 2012 08:54:41 -0400
+
+pandas (0.8.0-1) unstable; urgency=low
+
+  * Fresh upstream release
+  * debian/control
+    - drop python-statsmodels from Build-Depends since it might not be yet
+      available on some architectures and is not critical for the test
+    - recommend python-statsmodels instead of deprecated
+      python-scikits.statsmodels
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Fri, 29 Jun 2012 13:02:28 -0400
+
+pandas (0.8.0~rc2+git26-g76c6351-1) experimental; urgency=low
+
+  * Fresh upstream release candidate
+    - all patches dropped (upstreamed)
+    - requires numpy >= 1.6
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Tue, 12 Jun 2012 13:23:27 -0400
+
+pandas (0.7.3-1) unstable; urgency=low
+
+  * Fresh upstream release
+    - few post-release patches (submitted upstream) to exclude unittests
+         requiring network access
+  * debian/control:
+    - python-openpyxl, python-xlwt, python-xlrd into Build-Depends
+      and Recommends
+  * debian/rules:
+    - exclude running tests marked with @network
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Thu, 12 Apr 2012 11:27:31 -0400
+
+pandas (0.7.1+git1-ga2e86c2-1) unstable; urgency=low
+
+  * New upstream release with a bugfix which followed
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Thu, 01 Mar 2012 22:28:10 -0500
+
+pandas (0.7.0-1) unstable; urgency=low
+
+  * New upstream release
+  * Updated pre-cythoned .c files for older Debian/Ubuntu releases.
+    Added a stamp file with upstream version to assure up-to-dateness
+    of the generated files
+  * Dropped all exclusions of unittests and patches -- shouldn't be necessary
+    any longer
+  * Build only for requested versions (not all supported) of Python
+  * Do nothing for build operation, rely on overloaded install
+    (to avoid undesired re-cythonization on elderly Ubuntus)
+  * Adjusted url in watch due to migration of repository under pydata
+    organization
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Mon, 16 Jan 2012 19:31:50 -0500
+
+pandas (0.6.1-1) UNRELEASED; urgency=low
+
+  * New upstream release
+  * python-tk into Build-Depends
+  * Create matplotlibrc with backend: Agg to allow tests run without $DISPLAY
+  * Carry pre-cythonized .c files for systems with older Cython
+  * Skip few tests known to fail
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Tue, 13 Dec 2011 18:36:11 -0500
+
+pandas (0.5.0+git7-gcf32be2-1) unstable; urgency=low
+
+  * New upstream release with post-release fixes
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Tue, 01 Nov 2011 21:15:06 -0400
+
+pandas (0.4.3-1) unstable; urgency=low
+
+  * New upstream release(s): primarily bugfixes and optimizations but also
+    with some minor API changes and new functionality
+  * Adjusted debian/watch to match new layout on github
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Tue, 18 Oct 2011 11:27:50 -0400
+
+pandas (0.4.1-1) unstable; urgency=low
+
+  * New upstream bugfix release
+    - incorporated all debian/patches
+  * debian/rules: 'clean' removes generated pandas/version.py
+  * debian/copyright: adjusted to become DEP-5 compliant
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Sun, 25 Sep 2011 21:48:30 -0400
+
+pandas (0.4.0-1) unstable; urgency=low
+
+  * Initial Debian release (Closes: #641464)
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Tue, 13 Sep 2011 12:24:05 -0400
diff --git a/contributors_list.txt b/contributors_list.txt
new file mode 100644 (file)
index 0000000..a32627a
--- /dev/null
@@ -0,0 +1,2304 @@
+Current to version 1.1.5 (generated by git shortlog -ns)
+There may be multiple entries for the same person if they have used more than one (form of their) name
+https://github.com/pandas-dev/pandas/graphs/contributors
+
+  3130 Wes McKinney
+  3043 jreback
+  2027 jbrockmendel
+  1689 Jeff Reback
+  1032 Joris Van den Bossche
+   943 y-p
+   743 Tom Augspurger
+   630 Chang She
+   607 Phillip Cloud
+   463 gfyoung
+   356 Simon Hawkins
+   344 sinhrks
+   327 Adam Klein
+   282 Matthew Roeschke
+   236 William Ayd
+   196 MomIsBestFriend
+   169 Marc Garcia
+   160 Andy Hayden
+   148 topper-123
+   128 Jeff Tratner
+   122 Jeffrey Tratner
+   119 MeeseeksMachine
+   109 Vytautas Jancauskas
+   106 Daniel Saxton
+    93 Jeremy Schendel
+    92 Pietro Battiston
+    89 Skipper Seabold
+    88 Terji Petersen
+    86 alimcmaster1
+    85 h-vetinari
+    84 Stephan Hoyer
+    81 Kaiqi Dong
+    76 Wouter Overmeire
+    70 jschendel
+    65 Sinhrks
+    62 Kevin Sheppard
+    62 Martin Winkel
+    61 TomAugspurger
+    58 Mortada Mehyar
+    57 Christopher Whelan
+    55 Chris
+    54 Thomas Kluyver
+    54 behzad nouri
+    49 Ka Wo Chen
+    45 Marco Gorelli
+    43 Kieran O'Mahony
+    42 Dieter Vandenbussche
+    38 Paul Reidy
+    34 chris-b1
+    33 Evan Wright
+    32 bwignall
+    31 Jan Schulz
+    31 Mak Sze Chun
+    29 Yaroslav Halchenko
+    29 immerrr
+    28 David Stephens
+    26 Gábor Lipták
+    26 Justin Zheng
+    25 Stephen Lin
+    25 Thein Oo
+    25 rockg
+    23 Fabian Haase
+    22 Licht Takeuchi
+    22 Ming Li
+    22 ganevgv
+    21 Ryan Nazareth
+    21 Thierry Moisan
+    20 Dan Birken
+    20 lexual
+    19 Abraham Flaxman
+    19 Artemy Kolchinsky
+    19 DSM
+    18 Farhan Reynaldo
+    18 Kerby Shedden
+    18 pilkibun
+    18 unutbu
+    17 Anthonios Partheniou
+    17 Nicolas Bonnotte
+    16 Matt Roeschke
+    16 Robert de Vries
+    16 Saurav Chakravorty
+    16 danielballan
+    16 onesandzeroes
+    15 Abdullah İhsan Seçer
+    15 Alex Kirko
+    15 Jiaxiang
+    15 Tobias Brandt
+    15 seth-p
+    14 Christopher C. Aycock
+    14 Dr. Irv
+    14 Gregory Rome
+    14 Irv Lustig
+    14 Maximilian Roos
+    14 Roy Hyunjin Han
+    14 Spencer Lyon
+    14 locojaydev
+    13 Alex Rothberg
+    13 John W. O'Brien
+    13 Jonathan Chambers
+    13 Todd Jennings
+    13 Vaibhav Vishal
+    13 patrick
+    13 rhshadrach
+    13 willpeppo
+    12 Alex Rychyk
+    12 Luca Beltrame
+    12 PKEuS
+    12 Richard T. Guy
+    12 Tommy
+    12 Wenhuan
+    11 Andrew Rosenfeld
+    11 Bharat Raghunathan
+    11 Daniel Himmelstein
+    11 Joe Jevnik
+    11 Keith Hughitt
+    11 Uwe L. Korn
+    11 anmyachev
+    11 proost
+    11 terrytangyuan
+    10 Aaron Critchley
+    10 Alexander Ponomaroff
+    10 Anjali2019
+    10 Dale Jung
+    10 Garrett Drapala
+    10 John McNamara
+    10 K.-Michael Aye
+    10 Kendall Masse
+    10 Martin Blais
+    10 Nick Eubank
+    10 Sam Foo
+    10 Tim Swast
+    10 cbertinato
+     9 3vts
+     9 Albert Villanova del Moral
+     9 Damien Garaud
+     9 Guillaume Gay
+     9 Jacob Schaer
+     9 Tong SHEN
+     9 Viktor Kerkez
+     8 Aly Sivji
+     8 Andrew Wieteska
+     8 Brandon Bradley
+     8 Dr-Irv
+     8 Hugh Kelley
+     8 Kalyan Gokhale
+     8 Michael Marino
+     8 Mike Kelly
+     8 Pandas Development Team
+     8 RaisaDZ
+     8 Shawn Heide
+     8 Varun
+     8 Vasily Litvinov
+     8 himanshu awasthi
+     8 jnmclarty
+     7 Adam J. Stewart
+     7 Benedikt Sauer
+     7 Dan Allan
+     7 Derek McCammond
+     7 Francis T. O'Donovan
+     7 Jason Sexauer
+     7 Joel Nothman
+     7 Kernc
+     7 Michael Mueller
+     7 OlivierLuG
+     7 Quang Nguyễn
+     7 Rushabh Vasani
+     7 Samesh Lakhotia
+     7 Takafumi Arakaki
+     7 Winterflower
+     7 Younggun Kim
+     7 cleconte987
+     7 dsm054
+     7 nipunreddevil
+     7 scls19fr
+     7 themien
+     6 ArtinSarraf
+     6 Benjamin Rowell
+     6 Brad Buran
+     6 Bran Yang
+     6 Brian Wignall
+     6 Chris Whelan
+     6 Chuanzhu Xu
+     6 David Bew
+     6 Fangchen Li
+     6 Garrett-R
+     6 Graham Inggs
+     6 HH-MWB
+     6 Jeff Carey
+     6 Kelsey Jordahl
+     6 Mateusz Woś
+     6 Matt Kirk
+     6 Neil Parley
+     6 Nicholaus E. Halecky
+     6 Piotr Jucha
+     6 Robin to Roxel
+     6 Rouz Azari
+     6 Stephen Hoover
+     6 Steve
+     6 Thomas A Caswell
+     6 Thomas Grainger
+     6 Tola A
+     6 Uddeshya Singh
+     6 Vincent Arel-Bundock
+     6 Wes Turner
+     6 ZhuBaohe
+     6 agijsberts
+     6 agraboso
+     6 ajcr
+     6 clham
+     6 ischwabacher
+     6 kernc
+     6 mproszewska
+     6 rbenes
+     6 rebecca-palmer
+     6 timmie
+     6 tmnhat2001
+     5 Adam Obeng
+     5 Addison Lynch
+     5 Ajay Saxena
+     5 Alan Velasco
+     5 Andrew
+     5 Ben Kandel
+     5 Chapman Siu
+     5 Clark Fitzgerald
+     5 Clemens Brunner
+     5 DataOmbudsman
+     5 David Cottrell
+     5 Deepyaman Datta
+     5 Douglas McNeil
+     5 Galuh Sahid
+     5 Gjelt
+     5 Janelle Zoutkamp
+     5 Jon Mease
+     5 Joris Vankerschaver
+     5 Josh
+     5 Ksenia
+     5 Lars Buitinck
+     5 LeakedMemory
+     5 Marc Abramowitz
+     5 Mark Wiebe
+     5 Matti Picus
+     5 Max Chen
+     5 Nicholas Musolino
+     5 Oğuzhan Öğreden
+     5 Pauli Virtanen
+     5 Prabakaran Kumaresshan
+     5 Prakhar Pandey
+     5 Roman Yurchak
+     5 Sangwoong Yoon
+     5 Scott E Lasley
+     5 Stijn Van Hoey
+     5 Sumanau Sareen
+     5 Tao He
+     5 Tarbo Fukazawa
+     5 Ted Petrou
+     5 Tomaz Berisa
+     5 TrigonaMinima
+     5 Troels Nielsen
+     5 WANG Aiyong
+     5 William Blan
+     5 Yuichiro Kaneko
+     5 avinashpancham
+     5 benjamin
+     5 dieterv77
+     5 dilex42
+     5 donK23
+     5 nrebena
+     5 pv8493013j
+     5 realead
+     5 tshauck
+     5 yui-knk
+     4 Adam Greenhall
+     4 Ali McMaster
+     4 Alvaro Tejero-Cantero
+     4 Andreas Würl
+     4 Armin Varshokar
+     4 Avi Sen
+     4 Benjamin Thyreau
+     4 Blake Hawkins
+     4 Bob Haffner
+     4 Brenda Moon
+     4 Brett Naul
+     4 Chalmer Lowe
+     4 Cheuk Ting Ho
+     4 Chris Billington
+     4 Chris Warth
+     4 Chris Zimmerman
+     4 Christian Hudon
+     4 DaanVanHauwermeiren
+     4 Dan Miller
+     4 Daniel Waeber
+     4 Dave Hughes
+     4 David Adrián Cañones Castellano
+     4 Dražen Lučanin
+     4 Erfan Nariman
+     4 Erik
+     4 Gianluca Rossi
+     4 Giftlin Rajaiah
+     4 Goyo
+     4 Gregg Lind
+     4 Guilherme Beltramini
+     4 Henning Sperr
+     4 Jacques Kvam
+     4 James Myatt
+     4 JennaVergeynst
+     4 Jev Kuznetsov
+     4 Jiang Yue
+     4 Jim Crist
+     4 John Zwinck
+     4 Junya Hayashi
+     4 Kevin Stone
+     4 Krishna
+     4 Kyle Meyer
+     4 Laura Collard, PhD
+     4 Loïc Estève
+     4 Mabel Villalba
+     4 Matias Heikkilä
+     4 Matt Wittmann
+     4 Matthew Gilbert
+     4 Max van Deursen
+     4 Nathan Abel
+     4 Nicholas Ver Halen
+     4 OXPHOS
+     4 Olivier Grisel
+     4 Oluokun Adedayo
+     4 Paul Ivanov
+     4 Ram Rachum
+     4 Robert Gieseke
+     4 Roger Thomas
+     4 Samuel Sinayoko
+     4 Shane Conway
+     4 Shivam Rana
+     4 Sofiane Mahiou
+     4 Srinivas Reddy Thatiparthy (శ్రీనివాస్  రెడ్డి తాటిపర్తి)
+     4 Stephen Rauch
+     4 Stéphan Taljaard
+     4 Thomas Li
+     4 Trent Hauck
+     4 Vincent La
+     4 Vladimir Filimonov
+     4 Vyomkesh Tripathi
+     4 Will Holmgren
+     4 akosel
+     4 cel4
+     4 cgohlke
+     4 chapman siu
+     4 gliptak
+     4 hugo
+     4 kota matsuoka
+     4 luzpaz
+     4 robbuckley
+     4 waitingkuo
+     4 wcwagner
+     3 Aaditya Panikath
+     3 Abhijeet Krishnan
+     3 Adam Hooper
+     3 Aleksey Bilogur
+     3 Alex Alekseyev
+     3 Alexander Buchkovsky
+     3 Alfonso MHC
+     3 Alp Arıbal
+     3 Andreas Winkler
+     3 Angelos Evripiotis
+     3 Aniruddha Bhattacharjee
+     3 Anjana S
+     3 Anthony Milbourne
+     3 Anton I. Sipos
+     3 Baurzhan Muftakhidinov
+     3 Ben Welsh
+     3 Benjamin Beier Liu
+     3 Bhavani Ravi
+     3 Big Head
+     3 Brandon M. Burroughs
+     3 Brock Mendel
+     3 Caleb Epstein
+     3 Carlos Souza
+     3 Chris Bertinato
+     3 Chris Mazzullo
+     3 Christoph Gohlke
+     3 Dave Hirschfeld
+     3 David Krych
+     3 Dillon Niederhut
+     3 Doug Latornell
+     3 Eric Chea
+     3 Francesc Via
+     3 Giacomo Ferroni
+     3 Giftlin
+     3 Grant Smith
+     3 Guillaume Lemaitre
+     3 Guillaume Poulin
+     3 Hammad Mashkoor
+     3 Haochen Wu
+     3 Harshavardhan Bachina
+     3 Hielke Walinga
+     3 Hubert
+     3 Hugues Valois
+     3 Hyukjin Kwon
+     3 Iain Barr
+     3 Ingolf Becker
+     3 Israel Saeta Pérez
+     3 Ivan Nazarov
+     3 Jack Bicknell
+     3 Jake VanderPlas
+     3 James Cobon-Kerr
+     3 Jan Rudolph
+     3 Jan-Philip Gehrcke
+     3 Jared Groves
+     3 Jean Helie
+     3 Jean-Mathieu Deschenes
+     3 Jeroen Kant
+     3 Jesper Dramsch
+     3 Jesse Farnham
+     3 Joel Ostblom
+     3 John Freeman
+     3 Joon Ro
+     3 Josh Dimarsky
+     3 Josh Klein
+     3 Josiah Baker
+     3 Karmel Allison
+     3 Kate Surta
+     3 Keshav Ramaswamy
+     3 Kyle Barron
+     3 Liam3851
+     3 Louis Huynh
+     3 MBrouns
+     3 Marian Denes
+     3 Markus Meier
+     3 Martina Oefelein
+     3 Mateusz
+     3 Mathis Felardos
+     3 Matt Braymer-Hayes
+     3 Matteo Santamaria
+     3 Matthew Brett
+     3 Maximiliano Greco
+     3 Mike Kutzma
+     3 Mitar
+     3 Myles Braithwaite
+     3 Naomi Bonnin
+     3 Nate Yoder
+     3 Nick Pentreath
+     3 Noam Hershtig
+     3 Pamela Wu
+     3 Patrick O'Brien
+     3 Paul
+     3 Piotr Niełacny
+     3 Prasanjit Prakash
+     3 Pulkit Maloo
+     3 Randy Carnevale
+     3 Riccardo Magliocchetti
+     3 Richard Höchenberger
+     3 Rik-de-Kort
+     3 Robin
+     3 Robin Wilson
+     3 Ryan
+     3 Safia Abdalla
+     3 Sahil Dua
+     3 SatheeshKumar Mohan
+     3 Sebastian Bank
+     3 Shorokhov Sergey
+     3 Simon Gibbons
+     3 Souvik Mandal
+     3 Sparkle Russell-Puleri
+     3 Stefania Delprete
+     3 Stefano Cianciulli
+     3 Thijs Damsma
+     3 Tjerk Santegoeds
+     3 Toby Dylan Hocking
+     3 Tom Ajamian
+     3 Tom Bird
+     3 Victoria Zdanovskaya
+     3 Yian
+     3 Yoshiki Vázquez Baeza
+     3 Zac Hatfield-Dodds
+     3 adneu
+     3 alphaCTzo7G
+     3 anomrake
+     3 davidshinn
+     3 dengemann
+     3 duozhang
+     3 fjetter
+     3 jdeschenes
+     3 jen w
+     3 joshuaar
+     3 linebp
+     3 lukasbk
+     3 mcjcode
+     3 miker985
+     3 nathalier
+     3 ogiaquino
+     3 partev
+     3 prossahl
+     3 rekcahpassyla
+     3 ri938
+     3 smartvinnetou
+     3 stonebig
+     3 thatneat
+     3 tv3141
+     3 unknown
+     3 za
+     3 zach powers
+     2 Aaron Staple
+     2 Achmad Syarif Hidayatullah
+     2 Adam Bull
+     2 Adam Marcus
+     2 Adrian Mastronardi
+     2 Aidan Montare
+     2 Alex Chase
+     2 Alex Gaudio
+     2 Alex Hall
+     2 Alex Volkov
+     2 Alex Watt
+     2 Alexander Michael Schade
+     2 Allen Downey
+     2 Andrew Burrows
+     2 Andy
+     2 Andy R. Terrel
+     2 Angela Ambroz
+     2 Anna Daglis
+     2 Antoine Mazières
+     2 Artem Bogachev
+     2 Atsushi Nukariya
+     2 Ayla Khan
+     2 Batalex
+     2 Ben Alex
+     2 Ben Schiller
+     2 Ben Thayer
+     2 Benjamin Adams
+     2 Bernard Willers
+     2 Bhuvana KA
+     2 Bill Letson
+     2 Bobae Kim
+     2 Camilo Cota
+     2 Carol Willing
+     2 Chamoun Saoma
+     2 Charalampos Papaloizou
+     2 Charles David
+     2 Chris Grinolds
+     2 Chris Reynolds
+     2 Chris Stadler
+     2 Chris Stoafer
+     2 Christer van der Meeren
+     2 Christian Chwala
+     2 Christos Petropoulos
+     2 CloseChoice
+     2 Cody
+     2 Dan Ringwalt
+     2 Daniel Grady
+     2 DanielFEvans
+     2 Data & Code Expert Experimenting with Code on Data
+     2 DavaIlhamHaeruzaman
+     2 Dave Willmer
+     2 David Arcos
+     2 David Cook
+     2 David Gwynne
+     2 David Stansby
+     2 Devin Petersohn
+     2 Devjeet Roy
+     2 Diane Trout
+     2 Diego Argueta
+     2 Dom
+     2 Doran Deluz
+     2 Douglas Rudd
+     2 Dražen Lučanin
+     2 Drew Seibert
+     2 Dror Atariah
+     2 EdAbati
+     2 Eduardo Schettino
+     2 Egor
+     2 Egor Panfilov
+     2 Elle
+     2 Elliott Sales de Andrade
+     2 Emiliano Jordan
+     2 Eric Chlebek
+     2 Fabian Retkowski
+     2 Fabian Rost
+     2 Fabio Zanini
+     2 Fred Reiss
+     2 Fábio Rosado
+     2 Gabriel Corona
+     2 Gabriel Tutui
+     2 George Hartzell
+     2 Geraint Duck
+     2 Gina
+     2 Gioia Ballin
+     2 Giovanni Lanzani
+     2 Graham Jeffries
+     2 Grant Roch
+     2 Guillaume Horel
+     2 Hamed Saljooghinejad
+     2 Hannah Ferchland
+     2 Hassan Kibirige
+     2 Henry Kleynhans
+     2 How Si Wei
+     2 HubertKl
+     2 HyunTruth
+     2 Hyungtae Kim
+     2 Ian Eaves
+     2 Ian Henriksen
+     2 Iblis Lin
+     2 Ignacio Santolin
+     2 Ilya V. Schurov
+     2 Ivan Smirnov
+     2 JDkuba
+     2 JMBurley
+     2 Jack Kelly
+     2 Jacopo Rota
+     2 Jaehoon Hwang
+     2 Jaidev Deshpande
+     2 James Draper
+     2 Jan Koch
+     2 Jan Škoda
+     2 Jaume Bonet
+     2 Javad Noorbakhsh
+     2 Jay Parlar
+     2 Jeff Knupp
+     2 Jeff Mellen
+     2 Jeffrey Gerard
+     2 Jethro Cao
+     2 Jimmy Callin
+     2 Jing Qiang Goh
+     2 Joao Victor Martinelli
+     2 Joaq Almirante
+     2 Joe Bradish
+     2 John David Reaver
+     2 John G Evans
+     2 John Liekezer
+     2 John-Colvin
+     2 Jon M. Mease
+     2 Jonas Abernot
+     2 Jonathan deWerd
+     2 Jordi Contestí
+     2 Jose Quinones
+     2 Juarez Bochi
+     2 Julia Evans
+     2 Julia Signell
+     2 Julien Danjou
+     2 Jung Dong Ho
+     2 Justin Bozonier
+     2 Justin Lecher
+     2 KOBAYASHI Ittoku
+     2 Kamil Kisiel
+     2 Kang Yoosam
+     2 Kara de la Marck
+     2 Karthigeyan
+     2 Katrin Leinweber
+     2 Kee Chong Tan
+     2 Kevin Bowey
+     2 Koustav Samaddar
+     2 Kunal Gosar
+     2 Kyle Kelley
+     2 Kyle Prestel
+     2 LJ
+     2 Leif Johnson
+     2 Leif Walsh
+     2 Leo Razoumov
+     2 Luca Scarabello
+     2 Lucas Kushner
+     2 Lucas Scarlato Astur
+     2 Luke
+     2 Mabroor Ahmed
+     2 Mahmoud Lababidi
+     2 Manan Pal Singh
+     2 Manraj Singh
+     2 Marc
+     2 Marco Hemken
+     2 Marco Neumann
+     2 Margaret Sy
+     2 Martina G. Vilas
+     2 Mason Gallo
+     2 Mats Maiwald
+     2 Matt Maybeno
+     2 Matthias Bussonnier
+     2 Max Bolingbroke
+     2 Maxim Veksler
+     2 Michael
+     2 Michael Charlton
+     2 Michael Odintsov
+     2 Michael Penkov
+     2 Michael Schatzow
+     2 Michael W Schatzow
+     2 Miguel
+     2 Min RK
+     2 Mitch Negus
+     2 Mohamed Amine ZGHAL
+     2 Mohammad Hasnain Mohsin Rajan
+     2 Monson Shao
+     2 Natalie Jann
+     2 Nathalie Rud
+     2 Nathan Pinger
+     2 Naveen Michaud-Agrawal
+     2 Nick Chmura
+     2 Nico Cernek
+     2 Nicolas Dickreuter
+     2 Nikhil Kumar Mengani
+     2 Nipun Batra
+     2 Oleg Shteynbuk
+     2 Oliver Hofkens
+     2 Ondrej Kokes
+     2 Ondřej Čertík
+     2 Paddy Mullen
+     2 Pankaj Pandey
+     2 Patrick Cando
+     2 Patrick O'Keeffe
+     2 Paul Ganssle
+     2 Paul Lee
+     2 Paul Sanders
+     2 Pawel Kordek
+     2 Pedro Reys
+     2 Peter Prettenhofer
+     2 Phan Duc Nhat Minh
+     2 Philipp A
+     2 Pierre Haessig
+     2 Piotr Chromiec
+     2 Piyush Aggarwal
+     2 Rafal Skolasinski
+     2 Rajib Mitra
+     2 Ravi Kumar Nimmi
+     2 Rick
+     2 Rinoc Johnson
+     2 Rob Levy
+     2 Robert Meyer
+     2 Roei.r
+     2 Roger Erens
+     2 Rohit Sanjay
+     2 Roman Pekar
+     2 Ronan Lamy
+     2 Roshni
+     2 RuiDC
+     2 Ruijing Li
+     2 Ryan Rehman
+     2 Sam Cohan
+     2 SanthoshBala18
+     2 Sarah Donehower
+     2 Saul Shanabrook
+     2 Sašo Stanovnik
+     2 Scott Sanderson
+     2 Seb
+     2 Sebastián Vanrell
+     2 Shadi Akiki
+     2 Shahul Hameed
+     2 Shantanu Gontia
+     2 Sheppard, Kevin
+     2 Sietse Brouwer
+     2 Simon-Martin Schröder
+     2 Simone Basso
+     2 SleepingPills
+     2 Soyoun(Rose) Kim
+     2 Stefaan Lippens
+     2 Stephen Childs
+     2 Stephen Pascoe
+     2 Stephen Simmons
+     2 Steve Cook
+     2 Suvayu Ali
+     2 Tan Tran
+     2 Tanya Jain
+     2 Thiviyan Thanapalasingam
+     2 Thomas J Fan
+     2 Thomas Smith
+     2 Tiago Antao
+     2 Tiago Requeijo
+     2 Tim D. Smith
+     2 Tim Hoffmann
+     2 Tobias Pitters
+     2 Todd DeLuca
+     2 Tomoyuki Suzuki
+     2 Tony Lorenzo
+     2 Tony Tao
+     2 Travis N. Vaught
+     2 Tushar Gupta
+     2 Tushar Mittal
+     2 Tux1
+     2 Tyler Reddy
+     2 Valentin Haenel
+     2 Varad Gunjal
+     2 Victor Villas
+     2 Vikram Bhandoh
+     2 Vipul Rai
+     2 Vu Le
+     2 Vytautas Jančauskas
+     2 WBare
+     2 Wilfred Hughes
+     2 Will Ayd
+     2 Will Furnass
+     2 WillAyd
+     2 Wuraola Oyewusi
+     2 Xbar
+     2 Yan Facai
+     2 Yimeng Zhang
+     2 Yoav Ram
+     2 Yuecheng Wu
+     2 Zach Angell
+     2 adatasetaday
+     2 akittredge
+     2 alm
+     2 andresmcneill
+     2 ante328
+     2 bashtage
+     2 bjonen
+     2 bolkedebruin
+     2 broessli
+     2 cgangwar11
+     2 charalampos papaloizou
+     2 conquistador1492
+     2 csfarkas
+     2 dahlbaek
+     2 dan1261
+     2 danielplawrence
+     2 dannyhyunkim
+     2 david-liu-brattle-1
+     2 davidwales
+     2 deflatSOCO
+     2 discort
+     2 dlovell
+     2 dwkenefick
+     2 elpres
+     2 fjdiod
+     2 froessler
+     2 gabrielvf1
+     2 gdex1
+     2 ghasemnaddaf
+     2 iamshwin
+     2 ianzur
+     2 jaimefrio
+     2 jlamborn324
+     2 jmorris0x0
+     2 jonaslb
+     2 keitakurita
+     2 killerontherun1
+     2 kpapdac
+     2 krsnik93
+     2 llllllllll
+     2 louispotok
+     2 mattip
+     2 michaelws
+     2 msund
+     2 mtrbean
+     2 neilkg
+     2 nlepleux
+     2 nsuresh
+     2 nullptr
+     2 ohad83
+     2 ottiP
+     2 pedrooa
+     2 phaebz
+     2 priyankjain
+     2 qudade
+     2 reidy-p
+     2 rjfs
+     2 roch
+     2 rvernica
+     2 s-scherrer
+     2 scotthavard92
+     2 springcoil
+     2 srib
+     2 ssikdar1
+     2 svenharris
+     2 taeold
+     2 tim smith
+     2 tobycheese
+     2 tolhassianipar
+     2 tomneep
+     2 tonywu1999
+     2 tsdlovell
+     2 tzinckgraf
+     2 westurner
+     2 xpvpc
+     2 yogendrasoni
+     1 1_x7
+     1 3553x
+     1 A Brooks
+     1 A. Flaxman
+     1 AJ Dyka
+     1 AJ Pryor, Ph.D
+     1 ARF
+     1 Aaron Barber
+     1 Aaron Schumacher
+     1 Aaron Toth
+     1 Abbie Popa
+     1 AbdealiJK
+     1 Acanthostega
+     1 Adam Chainz
+     1 Adam Gleave
+     1 Adam Kim
+     1 Adam Klaum
+     1 Adam Klimont
+     1 Adam Smith
+     1 Adam W Bagaskarta
+     1 AdamShamlian
+     1 Adrian
+     1 Adrian Liaw
+     1 Adrien Emery
+     1 Agustín Herranz
+     1 Aivengoe
+     1 Akash Tandon
+     1 Akbar Septriyan
+     1 Akos Furton
+     1 Alan Du
+     1 Alan Hogue
+     1 Alan Yee
+     1 Alastair James
+     1 Alejandro Giacometti
+     1 Alejandro Hall
+     1 Alejandro Hohmann
+     1 Aleksandr Drozd
+     1 Alessandro Amici
+     1 Alex B
+     1 Alex Itkes
+     1 Alex Lubbock
+     1 Alex Marchenko
+     1 Alex Radu
+     1 Alex Strick van Linschoten
+     1 Alex Vig
+     1 AlexTereshenkov
+     1 Alexander Hendorf
+     1 Alexander Hess
+     1 Alexander Lenail
+     1 Alexander Nordin
+     1 Alexandre Batisse
+     1 Alexandre Decan
+     1 Alexis Mignon
+     1 Alfredo Granja
+     1 Allen Riddell
+     1 AllenDowney
+     1 Allison Browne
+     1 Alok Singhal
+     1 Alvaro Aleman
+     1 Alyssa Fu Ward
+     1 Aman Thakral
+     1 Amol
+     1 Amol Agrawal
+     1 Amol K
+     1 Amol Kahat
+     1 Amy Graham
+     1 Andrea Bedini
+     1 Andreas Buhr
+     1 Andreas H.
+     1 Andreas Klostermann
+     1 Andreas Költringer
+     1 Andrew Bui
+     1 Andrew Fiore-Gartland
+     1 Andrew Gaspari
+     1 Andrew Gross
+     1 Andrew Kittredge
+     1 Andrew McPherson
+     1 Andrew Munch
+     1 Andrew Schonfeld
+     1 Andrew Shumanskiy
+     1 Andrew Spott
+     1 Andrew Wood
+     1 Andrew 亮
+     1 András Novoszáth
+     1 André Jonasson
+     1 Andy Craze
+     1 Andy Li
+     1 Anh Le
+     1 Aniket uttam
+     1 Anil Kumar Pallekonda
+     1 Anjali Singh
+     1 Ankit Dhankhar
+     1 Anthony O'Brien
+     1 Antoine Pitrou
+     1 Antoine Viscardi
+     1 Antonio Andraues Jr
+     1 Antonio Gutierrez
+     1 Antonio Linde
+     1 Antonio Molina
+     1 Antonio Quinonez
+     1 Antony Lee
+     1 Antti Kaihola
+     1 Anudeep Tubati
+     1 Arash Rouhani
+     1 Arco Bast
+     1 Arda Kosar
+     1 Ari Sosnovsky
+     1 Arjun Sharma
+     1 Arkadeep Adhikari
+     1 Arno Veenstra
+     1 Arunim Samudra
+     1 Ashish Singal
+     1 Ashkan
+     1 Ashwin Prakash Nalwade
+     1 Ashwin Srinath
+     1 Ashwini Chaudhary
+     1 Asish Mahapatra
+     1 Austin Hackett
+     1 Avi Kelman
+     1 Ayappan
+     1 AyowoleT
+     1 Azeez Oluwafemi
+     1 Barry Fitzgerald
+     1 Bart
+     1 Bart Aelterman
+     1 Bart Broere
+     1 Bas Nijholt
+     1 Bastiaan
+     1 Bayle Shanks
+     1 Becky Sweger
+     1 Ben
+     1 Ben Auffarth
+     1 Ben James
+     1 Ben Nelson
+     1 Ben North
+     1 Benjamin Fischer
+     1 Benjamin Gross
+     1 Benjamin Grove
+     1 Benjamin M. Gross
+     1 Benoit Paquet
+     1 Benoit Pointet
+     1 Benoît Vinot
+     1 Berkay
+     1 Bernhard Thiel
+     1 Bhavesh Poddar
+     1 BielStela
+     1 Bill Chambers
+     1 Bjorn Arneson
+     1 Blair
+     1 Bob Baxley
+     1 Boris Lau
+     1 BorisVerk
+     1 Bradley Dice
+     1 Brandon Rhodes
+     1 BrenBarn
+     1 Brendan Sullivan
+     1 Brett Randall
+     1 Brett Rosen
+     1 Brian
+     1 Brian Choi
+     1 Brian Granger
+     1 Brian J. McGuirk
+     1 Brian Jacobowski
+     1 Brian McFee
+     1 Brian Quistorff
+     1 Brian Strand
+     1 Brian Tu
+     1 Bruno P. Kinoshita
+     1 Bryan Cutler
+     1 Bryant Moscon
+     1 Bryce Guinta
+     1 C John Klehm
+     1 C.A.M. Gerlach
+     1 Caleb Braun
+     1 Carl Johan
+     1 Carlos Eduardo Moreira dos Santos
+     1 Carlos García Márquez
+     1 Carsten van Weelden
+     1 Carter Green
+     1 Cecilia
+     1 Cesar H
+     1 Chankey Pathak
+     1 Charlie Clark
+     1 Chase Albert
+     1 Chau Hoang
+     1 Chitrank Dixit
+     1 Chris Burr
+     1 Chris Carroux
+     1 Chris Catalfo
+     1 Chris Filo Gorgolewski
+     1 Chris Gilmer
+     1 Chris Ham
+     1 Chris Kerr
+     1 Chris M
+     1 Chris Mulligan
+     1 Chris Roberts
+     1 Chris Withers
+     1 ChrisRobo
+     1 Christian Berendt
+     1 Christian Geier
+     1 Christian Haege
+     1 Christian Perez
+     1 Christian Prinoth
+     1 Christian Stade-Schuldt
+     1 Christoph Moehl
+     1 Christoph Paulik
+     1 Christopher Scanlin
+     1 Chu Qing Hao
+     1 Cihan Ceyhan
+     1 Clearfield Christopher
+     1 Clemens Tolboom
+     1 Clément Robert
+     1 Cody Piersall
+     1 Colin
+     1 Connor Charles
+     1 Constantine Glen Evans
+     1 Cornelius Riemenschneider
+     1 Crystal Gong
+     1 CuylenE
+     1 D.S. McNeil
+     1 Da Cheezy Mobsta
+     1 Da Wang
+     1 DaCoEx
+     1 Damian Kula
+     1 Damini Satya
+     1 Dan Davison
+     1 Dan Dixey
+     1 DanBasson
+     1 Daniel Chen
+     1 Daniel Frank
+     1 Daniel Garrido
+     1 Daniel Hrisca
+     1 Daniel Hähnke
+     1 Daniel Julius Lasiman
+     1 Daniel Luis Costa
+     1 Daniel Ni
+     1 Daniel Sakuma
+     1 Daniel Shapiro
+     1 Daniel Siladji
+     1 Danilo Horta
+     1 Darcy Meyer
+     1 Darin Plutchok
+     1 Dav Clark
+     1 Dave Lewis
+     1 David BROCHART
+     1 David C Hall
+     1 David Fischer
+     1 David Hirschfeld
+     1 David Hoese
+     1 David Hoffman
+     1 David John Gagne
+     1 David Jung
+     1 David Kelly
+     1 David Liu
+     1 David Lutz
+     1 David Polo
+     1 David Rasch
+     1 David Read
+     1 David Rouquet
+     1 David S
+     1 David Wolever
+     1 David Zaslavsky
+     1 DavidRosen
+     1 Dean
+     1 Dean Langsam
+     1 Deepan Das
+     1 Denis Belavin
+     1 Dennis Bakhuis
+     1 Dennis Kamau
+     1 Diego Fernandez
+     1 Diego Torres
+     1 Dimitri
+     1 Dimitris Spathis
+     1 Dina
+     1 Dmitry L
+     1 Dobatymo
+     1 Dody Suria Wijaya
+     1 Dominik Stanczak
+     1 Donald Curtis
+     1 DorAmram
+     1 Dorothy Kabarozi
+     1 Dorozhko Anton
+     1 Doug Coleman
+     1 Dr. Leo
+     1 DrIrv
+     1 Drew Fustin
+     1 Drew Heenan
+     1 Drewrey Lupton
+     1 Dylan Dmitri Gray
+     1 ETF
+     1 Eduardo Blancas Reyes
+     1 Ehsan Azarnasab
+     1 Eliza Mae Saret
+     1 Elliot Marsden
+     1 Elliot S
+     1 Endre Mark Borza
+     1 Ennemoser Christoph
+     1 Enrico Rotundo
+     1 Eric Boxer
+     1 Eric Brassell
+     1 Eric Groszman
+     1 Eric Kisslinger
+     1 Eric O. LEBIGOT (EOL)
+     1 Eric Stein
+     1 Eric Wieser
+     1 Eric Wong
+     1 Erik Fredriksen
+     1 Erik Hasse
+     1 Erik M. Bray
+     1 Erik Nilsson
+     1 Erkam Uyanik
+     1 Ernesto Freitas
+     1 EternalLearner42
+     1 Eunseop Jeong
+     1 Evan
+     1 Evan D
+     1 Evan Kanter
+     1 Evan Livelo
+     1 Eyden Villanueva
+     1 FAN-GOD
+     1 Fabien Aulaire
+     1 Fabrizio Pollastri
+     1 Fakabbir Amin
+     1 Fei Phoon
+     1 Felix Divo
+     1 Felix Lawrence
+     1 Felix Marczinowski
+     1 Fer Sar
+     1 Fernando Margueirat
+     1 Fernando Perez
+     1 Filip Ter
+     1 Flavien Lambert
+     1 Florian Jetter
+     1 Florian Müller
+     1 Florian Rathgeber
+     1 Florian Wilhelm
+     1 Floris Kint
+     1 ForTimeBeing
+     1 Forbidden Donut
+     1 FragLegs
+     1 Francesc Alted
+     1 Francesco Brundu
+     1 Francesco Truzzi
+     1 Frank Cleary
+     1 Frank Hoang
+     1 Frank Pinter
+     1 Frans van Dunné
+     1 Fumito Hamamura
+     1 GYHHAHA
+     1 Gabe F
+     1 Gabe Fernando
+     1 Gabi Davar
+     1 Gabriel Araujo
+     1 Gabriel Monteiro
+     1 Gabriel Moreira
+     1 Gabriel Reid
+     1 Gabriel de Maeztu
+     1 Gaibo Zhang
+     1 Gaurav Chauhan
+     1 Gaëtan de Menten
+     1 George Kuan
+     1 Georgi Baychev
+     1 German Gomez-Herrero
+     1 Gianpaolo Macario
+     1 Gilberto Olimpio
+     1 Gim Seng
+     1 GiuPassarelli
+     1 Giulio Pepe
+     1 Giuseppe Romagnuolo
+     1 Gordon Blackadder
+     1 Gordon Chen
+     1 Gosuke Shibahara
+     1 Gouthaman Balaraman
+     1 Graham R. Jeffries
+     1 Graham Taylor
+     1 Graham Wetzler
+     1 Greg Reda
+     1 Greg Williams
+     1 Gregory Livschitz
+     1 Grigorios Giannakopoulos
+     1 Grzegorz Konefał
+     1 Guilherme Leite
+     1 Guilherme Salomé
+     1 Guilherme Samora
+     1 Guillem Borrell
+     1 Guillem Sánchez
+     1 Gyeongjae Choi
+     1 HHest
+     1 HagaiHargil
+     1 Haleemur Ali
+     1 Hamish Pitkeathly
+     1 Hanmin Qin
+     1 Hans
+     1 Hao Wu
+     1 Harsh Nisar
+     1 Harshit Patni
+     1 Harutaka Kawamura
+     1 Hassan Shamim
+     1 Hatem Nassrat
+     1 Hendrik Makait
+     1 Henry Hammond
+     1 Hissashi Rocha
+     1 Hsiaoming Yang
+     1 Huan Li
+     1 Hugo Herter
+     1 Huize Wang
+     1 Hussain Tamboli
+     1 Ian Dunn
+     1 Ian Hoegen
+     1 Ibrahim Sharaf ElDen
+     1 Ignacio Vergara Kausel
+     1 Ignasi Fosch
+     1 Igor Conrado Alves de Lima
+     1 Igor Filippov
+     1 Igor Shelvinskyi
+     1 Illia Polosukhin
+     1 Imanflow
+     1 Inevitable-Marzipan
+     1 Iqrar Agalosi Nureyza
+     1 Isaac Schwabacher
+     1 Isaac Slavitt
+     1 Isaac Virshup
+     1 IsvenC
+     1 Iulius Curt
+     1 Iva Koevska
+     1 Iva Laginja
+     1 Iva Miholic
+     1 Ivan Bessarabov
+     1 Iván Vallés Pérez
+     1 JElfner
+     1 Jack Greisman
+     1 Jackie Leng
+     1 Jacob Austin
+     1 Jacob Buckheit
+     1 Jacob Bundgaard
+     1 Jacob Deppen
+     1 Jacob Howard
+     1 Jacob Peacock
+     1 Jacob Wasserman
+     1 Jake Tae
+     1 Jake Torcasso
+     1 Jake Vanderplas
+     1 Jakob Jarmar
+     1 Jakub Nowacki
+     1 James Bourbeau
+     1 James Casbon
+     1 James Goppert
+     1 James Hiebert
+     1 James McBride
+     1 James Santucci
+     1 James Winegar
+     1 Jan F-F
+     1 Jan Novotný
+     1 Jan Pipek
+     1 Jan Wagner
+     1 Jan Werkmann
+     1 Jan Červenka
+     1 Jane Chen
+     1 Jarrod Millman
+     1 Jason Bandlow
+     1 Jason Kiley
+     1 Jason Swails
+     1 Jason Wolosonovich
+     1 Jasper J.F. van den Bosch
+     1 Javad
+     1 Jay Alammar
+     1 Jay Bourque
+     1 Jay Offerdahl
+     1 Jayanth Katuri
+     1 Jean-Baptiste Schiratti
+     1 Jean-Francois Zinque
+     1 Jeanderson Barros Candido
+     1 Jeff Blackburne
+     1 Jeff Hammerbacher
+     1 Jeffrey Starr
+     1 Jenn Olsen
+     1 Jeongmin Yu
+     1 Jered Dominguez-Trujillo
+     1 Jeremy Wagner
+     1 Jerod Estapa
+     1 Jesse Pardue
+     1 Jihwan Song
+     1 Jihyung Moon
+     1 Jim
+     1 Jim Jeon
+     1 JimStearns206
+     1 Jimmy Woo
+     1 Jinyang Zhou
+     1 Joachim Wagner
+     1 Joan Martin Miralles
+     1 Joaquim L. Viegas
+     1 Joerg Rittinger
+     1 Joeun Park
+     1 Johan von Forstner
+     1 John
+     1 John Bodley
+     1 John Cant
+     1 John Evans
+     1 John Fremlin
+     1 John Paton
+     1 John Tucker
+     1 John Ward
+     1 Johnny
+     1 Johnny Chiu
+     1 Johnny Gill
+     1 Johnny Metz
+     1 Jon Crall
+     1 Jon Thielen
+     1 Jonas
+     1 Jonas Buyl
+     1 Jonas Hoersch
+     1 Jonas Schulze
+     1 Jonathan J. Helmus
+     1 Jonathan Larkin
+     1 Jonathan Whitmore
+     1 Jonathan de Bruin
+     1 Jonathon Vandezande
+     1 Jongwony
+     1 Joost Kranendonk
+     1 Jop Vermeer
+     1 Jordan Erenrich
+     1 Jorge López Fueyo
+     1 Joschka zur Jacobsmühlen
+     1 Jose Manuel Martí
+     1 Jose Rivera-Rubio
+     1 Joseph Gulian
+     1 JosephWagner
+     1 Josh Friedlander
+     1 Josh Howes
+     1 Josh Levy-Kramer
+     1 Josh Owen
+     1 Joshua Bradt
+     1 Joshua Leahy
+     1 Joshua Smith
+     1 Joshua Storck
+     1 José F. R. Fonseca
+     1 Jovixe
+     1 Joy Bhalla
+     1 Jozef Brandys
+     1 João Veiga
+     1 Julian Kuhlmann
+     1 Julian Santander
+     1 Julien Marrec
+     1 Julio Martinez
+     1 Jun
+     1 Jun Kim
+     1 Juraj Niznan
+     1 Justin Berka
+     1 Justin C Johnson
+     1 Justin Cole
+     1 Justin Essert
+     1 Justin Lin
+     1 Justin Solinsky
+     1 Jörg Döpfert
+     1 Júlio
+     1 KD-dev-lab
+     1 Kacawi
+     1 Kamal Kamalaldin
+     1 Kamil Sindi
+     1 Kane
+     1 Kapil Patel
+     1 Karel De Brabandere
+     1 Karl Dunkle Werner
+     1 Karmanya Aggarwal
+     1 Karrie Kehoe
+     1 Karthik Mathur
+     1 Kassandra Keeton
+     1 Katherine Surta
+     1 Katherine Younglove
+     1 Katie Atkinson
+     1 Kaushal Rohit
+     1 Keiron Pizzey
+     1 Keith Kraus
+     1 Keith Webber
+     1 Keming Zhang
+     1 Ken Mankoff
+     1 Ken Van Haren
+     1 Kenneth
+     1 Kenny Huynh
+     1 Ketan
+     1 Kevin Anderson
+     1 Kevin Kuhl
+     1 Kevin Markham
+     1 Kevin Nguyen
+     1 Kilian Lieret
+     1 Kimi Li
+     1 Kirk Hansen
+     1 Kisekka David
+     1 Kodi Arfer
+     1 Koki Nishihara
+     1 Koushik
+     1 Krishna Chivukula
+     1 Kristian Holsheimer
+     1 Krzysztof Chomski
+     1 Ksenia Bobrova
+     1 Ksenia Gueletina
+     1 Kurtis Kerstein
+     1 Kyle
+     1 Kyle Boone
+     1 Kyle Hausmann
+     1 Kyle Kosic
+     1 Kyle McCahill
+     1 Laksh Arora
+     1 Larry Ren
+     1 Laurens Geffert
+     1 Laurent Gautier
+     1 Leon Yin
+     1 Lewis Cowles
+     1 Li Jin
+     1 Liam Marshall
+     1 Linda Chen
+     1 Line Pedersen
+     1 Linxiao Wu
+     1 LiuSeeker
+     1 Liudmila
+     1 Lorenzo Bolla
+     1 Lorenzo Cestaro
+     1 Lorenzo Stella
+     1 Loïc Séguin-C
+     1 Luca Donini
+     1 Lucca Delchiaro Costabile
+     1 Luciano Viola
+     1 Ludovico Russo
+     1 Luis Ortiz
+     1 Luiz Gustavo
+     1 Lukasz
+     1 Luke Lee
+     1 Luke Shepard
+     1 Luo Yicheng
+     1 MKhalusova
+     1 Maarten Rietbergen
+     1 Mac
+     1 Maciej J
+     1 Madhuri Palanivelu
+     1 Magnus Jöud
+     1 Mahdi Ben Jelloul
+     1 Makarov Andrey
+     1 Malcolm
+     1 Malgorzata Turzanska
+     1 Manu NALEPA
+     1 Manuel Leonhardt
+     1 Manuel Riel
+     1 Maoyuan Liu
+     1 Marco Farrugia
+     1 Maria del Mar Bibiloni
+     1 Mario Corchero
+     1 Marius Potgieter
+     1 Mark Mandel
+     1 Mark O'Leary
+     1 Mark Roth
+     1 Mark Sikora
+     1 Mark Woodbridge
+     1 Marlene Silva Marchena
+     1 MarsGuy
+     1 Martin Babka
+     1 Martin Bjeldbak Madsen
+     1 Martin Durant
+     1 Martin Fleischmann
+     1 Martin Jones
+     1 Martin Journois
+     1 Marvzinc
+     1 María Marino
+     1 MasonGallo
+     1 MatanCohe
+     1 Matheus Cardoso
+     1 Mathew Topper
+     1 Matt Bark
+     1 Matt Boggess
+     1 Matt Cooper
+     1 Matt Gambogi
+     1 Matt Savoie
+     1 Matt Suggit
+     1 Matt Williams
+     1 MattRijk
+     1 Matteo Felici
+     1 Matthew Kirk
+     1 Matthew Lurie
+     1 Matthew Rocklin
+     1 Matthew Tan
+     1 Matthias Kuhn
+     1 Matthieu Brucher
+     1 Matti Airas
+     1 Max Chang
+     1 Max Grender-Jones
+     1 Max Halford
+     1 Max Kanter
+     1 Max Kovalovs
+     1 Max Mikhaylov
+     1 MaxU
+     1 Mayank Asthana
+     1 Mayank Bisht
+     1 Megan Thong
+     1 Mehmet Ali "Mali" Akmanalp
+     1 Michael Davis
+     1 Michael Droettboom
+     1 Michael E. Gruen
+     1 Michael Felt
+     1 Michael Gasvoda
+     1 Michael Lamparski
+     1 Michael P. Moran
+     1 Michael Röttger
+     1 Michael Scherer
+     1 Michael Selik
+     1 Michael Silverstein
+     1 Michael Waskom
+     1 Michael-J-Ward
+     1 Michelangelo D'Agostino
+     1 Michiel Stock
+     1 Mickaël Schoentgen
+     1 Mie~~~
+     1 Miguel Marques
+     1 Miguel Sánchez de León Peque
+     1 Mike Cramblett
+     1 Mike Graham
+     1 Mikolaj Chwalisz
+     1 Milo
+     1 Min ho Kim
+     1 MinGyo Jung
+     1 MinRK
+     1 Miroslav Šedivý
+     1 Misha Veldhoen
+     1 Mohammad Jafar Mashhadi
+     1 Mohit Anand
+     1 Monica
+     1 Montana Low
+     1 Moonsoo Kim
+     1 Morgan Stuart
+     1 Morgan243
+     1 Moritz Münst
+     1 Morton Fox
+     1 Moussa Taifi
+     1 Muhammad Haseeb Tariq
+     1 Mukul Ashwath Ram
+     1 MusTheDataGuy
+     1 Mykola Golubyev
+     1 Nanda H Krishna
+     1 Nate Armstrong
+     1 Nate George
+     1 Nathan Ford
+     1 Nathan Sanders
+     1 Nathan Typanski
+     1 Nathanael
+     1 Navreet Gill
+     1 Nehil Jain
+     1 Nicholas Stahl
+     1 Nicholas Ursa
+     1 Nick Burns
+     1 Nick Foti
+     1 Nick Garvey
+     1 Nick Newman
+     1 Nick Stahl
+     1 Nico Schlömer
+     1 Nigel Markey
+     1 Niklas Weber
+     1 Nikoleta Glynatsi
+     1 Nikos Karagiannakis
+     1 Nipun Sadvilkar
+     1 Nis Martensen
+     1 Noah
+     1 Noah Spies
+     1 Nolan Nichols
+     1 Noora Husseini
+     1 Noritada Kobayashi
+     1 Noémi Éltető
+     1 ObliviousParadigm
+     1 Oktay Sabak
+     1 Olga Lyashevska
+     1 Olivier Bilodeau
+     1 Olivier Harris
+     1 Onno Eberhard
+     1 Osman
+     1 P-Tillmann
+     1 Pablo Ambrosio
+     1 Pan Deng / Zora
+     1 Parfait G
+     1 Pastafarianist
+     1 Patrick
+     1 Patrick Luo
+     1 Patrick O'Melveny
+     1 Patrick Park
+     1 Patrik Hlobil
+     1 Paul Lilley
+     1 Paul Mannino
+     1 Paul Masurel
+     1 Paul Mestemaker
+     1 Paul Reiners
+     1 Paul Siegel
+     1 Paul van Mulbregt
+     1 Paula
+     1 Paulo Roberto de Oliveira Castro
+     1 Pav A
+     1 Pearcekieser
+     1 Pedro Larroy
+     1 Peng Yu
+     1 Pepe Flores
+     1 Pete Huang
+     1 Peter
+     1 Peter Bull
+     1 Peter Csizsek
+     1 Peter Hoffmann
+     1 Peter Quackenbush
+     1 Peter Steinbach
+     1 Peter Waller
+     1 Peter Yanovich
+     1 Petio Petrov
+     1 Petr Baev
+     1 Petra Chong
+     1 Phil Kirlin
+     1 Phil Ngo
+     1 Phil Ruffwind
+     1 Phil Schaf
+     1 Philip Gura
+     1 Philippe Ombredanne
+     1 Pierre-Yves Bourguignon
+     1 Piotr Kasprzyk
+     1 Prabhjot Singh
+     1 Pradyumna Reddy Chinthala
+     1 Pranav Suri
+     1 Prashant Anand
+     1 Pratap Vardhan
+     1 Priyanka Ojha
+     1 Puneeth K
+     1 Puneetha Pai
+     1 Pyry Kovanen
+     1 README Bot
+     1 Rafael Jaimes III
+     1 Rafif
+     1 Raghav
+     1 RahulHP
+     1 Rajat
+     1 Rajhans Jadhao
+     1 Rajiv Bharadwaj
+     1 Rakshit Naidu
+     1 Ralph Bean
+     1 Ray Bell
+     1 Red
+     1 Redonnet Louis
+     1 RenzoBertocchi
+     1 Rhys Parry
+     1 Ricardo Alanis
+     1 Richard Eames
+     1 Richard Lewis
+     1 Richard Shadrach
+     1 Ridhwan Luthra
+     1 Rishipuri
+     1 Rob Forgione
+     1 Rob deCarvalho
+     1 Robert
+     1 Robert Bradshaw
+     1 Robert Gibboni
+     1 Robert Kern
+     1 Robin Kiplang'at
+     1 RobinFiveWords
+     1 Rodolfo Fernandez
+     1 Rohan Pandit
+     1 Rohith295
+     1 Rok Mihevc
+     1 RomainSa
+     1 Roman Imankulov
+     1 Roman Khomenko
+     1 Ror
+     1 Ross Petchler
+     1 Roy Keyes
+     1 Roymprog
+     1 Rupert Thompson
+     1 Russell Smith
+     1 Ryan Grout
+     1 Ryan Hendrickson
+     1 Ryan Joyce
+     1 Ryszard T. Kaleta
+     1 Rémy Léone
+     1 Rüdiger Busche
+     1 SAI SRAVAN MEDICHERLA
+     1 SEUNG HOON, SHIN
+     1 SHUBH CHATTERJEE
+     1 Sakar Panta
+     1 Sam Zhang
+     1 Sami Salonen
+     1 Samir Musali
+     1 Samira-g-js
+     1 Samuel Denny
+     1 Samyak Jain
+     1 Sandeep Pathak
+     1 Sandrine Pataut
+     1 Sandu Ursu
+     1 Sanghee Kim
+     1 Sangmin Park
+     1 Sanjiv Lobo
+     1 Santosh Kumar
+     1 Sarah Bird
+     1 Sarah Masud
+     1 SarahJessica
+     1 Sarma Tangirala
+     1 Sasidhar Kasturi
+     1 Saumitra Shahapure
+     1 Schaer, Jacob C
+     1 Scott Cole
+     1 Scott Gigante
+     1 Scott Lasley
+     1 Scott McAllister
+     1 Scott Talbert
+     1 SdgJlbl
+     1 Sean Chan
+     1 Sebastian Berg
+     1 Sebastian Gsänger
+     1 Sebastian Pölsterl
+     1 Sebastian Rubbert
+     1 Senthil Palanisami
+     1 Sereger13
+     1 Sergei Chipiga
+     1 Sergei Ivko
+     1 Sergey
+     1 Sergey Kopylov
+     1 Sergio Pascual
+     1 Shannon Wang
+     1 Sharad Vijalapuram
+     1 Shashank Agarwal
+     1 Shengpu Tang
+     1 ShilpaSugan
+     1 Shirish Kadam
+     1 Shubham Chaudhary
+     1 Shyam Saladi
+     1 SiYoungOh
+     1 Siddhesh Poyarekar
+     1 Sidharthan Nair
+     1 Simon Legner
+     1 Simon Riddell
+     1 SimonBaron
+     1 Siu Kwan Lam
+     1 Soham Tiwari
+     1 Song Wenhao
+     1 Sourav kumar
+     1 Soyoun Kim
+     1 Spencer Carrucciu
+     1 Spencer Clark
+     1 SplashDance
+     1 Stefan van der Walt
+     1 Stefano Miccoli
+     1 Steffen Rehberg
+     1 Steffen Schmitz
+     1 Sten
+     1 Stephen Cowley
+     1 Stephen Kappel
+     1 StephenVoland
+     1 Sterling Paramore
+     1 Steve Baker
+     1 Steve Choi
+     1 Steve Dower
+     1 Steven
+     1 Steven Cutting
+     1 Stewart Henderson
+     1 Stuart Berg
+     1 Sudarshan Konge
+     1 Sudeep
+     1 SultanOrazbayev
+     1 Sumin Byeon
+     1 SurajH1
+     1 Sven
+     1 Sylvain Corlay
+     1 Sylvia
+     1 Szymon Bednarek
+     1 Sébastien de Menten
+     1 Sören
+     1 T N
+     1 Taavi Burns
+     1 Takuya N
+     1 Talitha Pumar
+     1 Tamas Nagy
+     1 Tambe Tabitha Achere
+     1 Tang Heyi
+     1 Tanmay Daripa
+     1 Tara Adiseshan
+     1 Telt
+     1 Terry Santegoeds
+     1 Thiago Cordeiro da Fonseca
+     1 Thiago Serafim
+     1 ThibTrip
+     1 Thomas Kluiters
+     1 Thomas Lentali
+     1 Thomas Wiecki
+     1 Thoralf Gutierrez
+     1 Thouis (Ray) Jones
+     1 Thrasibule
+     1 Tilen Kusterle
+     1 Tim Akinbo
+     1 Tim Cera
+     1 Tim Gates
+     1 Tim Hopper
+     1 Tim McNamara
+     1 Tirth Jain
+     1 Tobias Gustafsson
+     1 Tom
+     1 Tom Farnbauer
+     1 Tom Neep
+     1 Tomasz Kluczkowski
+     1 Tommy Lynch
+     1 Tomáš Chvátal
+     1 Tong Shen
+     1 Travis
+     1 Triple0
+     1 Tuan
+     1 Tuhin Mahmud
+     1 Tulio Casagrande
+     1 Unprocessable
+     1 Upkar Lidder
+     1 Utkarsh Upadhyay
+     1 Uwe
+     1 Uwe Hoffmann
+     1 Vadym Barda
+     1 Valentin Iovene
+     1 Vandana Iyer
+     1 Vibhu Agarwal
+     1 Victor Chaves
+     1 Victor Maryama
+     1 Victor Salgado
+     1 Vijay Sai Mutyala
+     1 Vijayant
+     1 Vikas Pandey
+     1 Vikram Shirgur
+     1 Vikramjeet Das
+     1 Vince W
+     1 Vincent Davis
+     1 Vinícius Figueiredo
+     1 Vipin Kumar
+     1 Vishwak Srinivasan
+     1 Vishwam Pandya
+     1 Vitória Helena
+     1 Vivek
+     1 Vladimir Berkutov
+     1 Vladislav
+     1 Vyom Jain
+     1 Víctor Moron Tejero
+     1 Weiwen Gu
+     1 Weston Renoud
+     1 Wieland Hoffmann
+     1 Wiktor Tomczak
+     1 Wil Tan
+     1 Will Thompson
+     1 William
+     1 William Hogman
+     1 Wilson Lin
+     1 Winand
+     1 Wouter De Coster
+     1 XF
+     1 Xiang Zhang
+     1 YG-Riku
+     1 YaOzI
+     1 Yadunandan
+     1 Yago González
+     1 Yash Shukla
+     1 Yasin A
+     1 Yee Mey
+     1 Yeojin Kim
+     1 Yeongseon Choe
+     1 Yevgeniy Grechka
+     1 Yi Liu
+     1 Yitzhak Andrade
+     1 Yoann Goular
+     1 Yoong Kang Lim
+     1 Yosuke KOBAYASHI
+     1 Yosuke Nakabayashi
+     1 Young Joong Kim
+     1 Yu Wang
+     1 Yuan Tang (Terry)
+     1 Yuliya Dovzhenko
+     1 Yulong Yang
+     1 Yury Bayda
+     1 Yusei Tahara
+     1 Yuval Langer
+     1 Zach Dwiel
+     1 Zachary Lawrence
+     1 Zaky Bilfagih
+     1 Zeb Nicholls
+     1 Zeke
+     1 Zihao Zhao
+     1 aaron315
+     1 abaldenko
+     1 abarber4gh
+     1 aberres
+     1 acorbe
+     1 adrian-stepien
+     1 aeltanawy
+     1 aernlund
+     1 agustín méndez
+     1 ailchau
+     1 ajenkins-cargometrics
+     1 akielbowicz
+     1 alex argunov
+     1 alex arsenovic
+     1 alexander135
+     1 alexandercbooth
+     1 alinde1
+     1 amphy
+     1 amuta
+     1 andhikayusup
+     1 andymaheshw
+     1 ankostis
+     1 anton-d
+     1 araraonline
+     1 atbd
+     1 austinc
+     1 avelineg
+     1 aviolov
+     1 azuranski
+     1 azure-pipelines[bot]
+     1 babakkeyvani
+     1 bastewart
+     1 benabel
+     1 benarthur91
+     1 bernie gray
+     1 bertrandhaut
+     1 bganglia
+     1 biddwan09
+     1 bk521234
+     1 bkandel
+     1 bmagnusson
+     1 bmu
+     1 boombard
+     1 bpraggastis
+     1 bravech
+     1 brian-pantano
+     1 c123w
+     1 carlosdanielcsantos
+     1 cclauss
+     1 chaimdemulder
+     1 chappers
+     1 charlie0389
+     1 chebee7i
+     1 chernrick
+     1 chinhwee
+     1 chinskiy
+     1 chromy
+     1 claudiobertoldi
+     1 cmazzullo
+     1 conmai
+     1 cr3
+     1 cruzzoe
+     1 cxl923cc
+     1 cyrusmaher
+     1 d10genes
+     1 dajcs
+     1 dalgarno
+     1 daniel
+     1 daniellebrown
+     1 darke-spirits
+     1 david
+     1 david-cortes
+     1 davidjameshumphreys
+     1 davidmvalente
+     1 davidovitch
+     1 daydreamt
+     1 dequadras
+     1 derestle-htwg
+     1 dgram0
+     1 dhuettenmoser
+     1 dickreuter
+     1 dkamm
+     1 dmanikowski-reef
+     1 doosik_bae
+     1 dr-leo
+     1 dubourg
+     1 dylanchase
+     1 economy
+     1 eduardo naufel schettino
+     1 ejnens
+     1 elmonsomiat
+     1 elrubio
+     1 emilydolson
+     1 endenis
+     1 engstrom
+     1 enisnazif
+     1 epizzigoni
+     1 est271
+     1 euri10
+     1 evangelineliu
+     1 ezcitron
+     1 fabriziop
+     1 faic
+     1 fding253
+     1 fengyqf
+     1 fivemok
+     1 fl4p
+     1 fleimgruber
+     1 floydsoft
+     1 flying-sheep
+     1 francisco souza
+     1 funnycrab
+     1 gabrielclow
+     1 ganego
+     1 garanews
+     1 gfr
+     1 goldenbull
+     1 guru kiran
+     1 guygoldberg
+     1 gwrome
+     1 h-vishal
+     1 hack-c
+     1 haison
+     1 hannah-c
+     1 harisbal
+     1 harshul1610
+     1 hasnain2808
+     1 hcontrast
+     1 heckeop
+     1 helger
+     1 henriqueribeiro
+     1 herrfz
+     1 hesham.shabana@hotmail.com
+     1 hhuuggoo
+     1 hironow
+     1 hongshaoyang
+     1 hshimizu77
+     1 hsperr
+     1 huashuai
+     1 hunterowens
+     1 iamsimha
+     1 ian
+     1 ignamv
+     1 igorfassen
+     1 iulia
+     1 jackieleng
+     1 jalazbe
+     1 jalbritt
+     1 jamesoliverh
+     1 jamin-aws-ospo
+     1 jaredsnyder
+     1 jayfoad
+     1 jazzmuesli
+     1 jebob
+     1 jeps-journal
+     1 jeschwar
+     1 jfcorbett
+     1 jfoo
+     1 jh-wu
+     1 jjames34
+     1 jkovacevic
+     1 jnecus
+     1 jniznan
+     1 joaoavf
+     1 joders
+     1 jojomdt
+     1 josham
+     1 joy-rosie
+     1 jsexauer
+     1 juan huguet
+     1 juricast
+     1 justinchan23
+     1 kaustuv deolal
+     1 kdiether
+     1 kiwirob
+     1 kjford
+     1 klonuo
+     1 knuu
+     1 kotrfa
+     1 kpflugshaupt
+     1 krey
+     1 ksanghai
+     1 kylekeppler
+     1 l736x
+     1 larvian
+     1 leandermaben
+     1 leerssej
+     1 lenolib
+     1 lexy-lixinyu
+     1 lgautier
+     1 link2xt
+     1 lloydkirk
+     1 lodagro
+     1 lrjball
+     1 lucas
+     1 lucyleeow
+     1 maheshbapatu
+     1 majiang
+     1 manikbhandari
+     1 manoj_koneni
+     1 manu
+     1 manuels
+     1 marcosrullan
+     1 marydmit
+     1 masterpiga
+     1 matthiashuschle
+     1 mattrijk
+     1 maxalbert
+     1 maximilianr
+     1 maxwasserman
+     1 mazayo
+     1 mck619
+     1 mcocdawc
+     1 mdeboc
+     1 mgilbert
+     1 mglasder
+     1 miguelmorin
+     1 mikebailey
+     1 miquelcamprodon
+     1 mjlove12
+     1 moaraccounts
+     1 monicaBee
+     1 mpuels
+     1 mschmohl
+     1 mwaskom
+     1 naveenkaushik2504
+     1 nicolab100
+     1 nileracecrew
+     1 nmartensen
+     1 nprad
+     1 nuffe
+     1 ojdo
+     1 omtinez
+     1 orereta
+     1 ossdev07
+     1 paihu
+     1 pajachiet
+     1 pallav-fdsi
+     1 pan Jacek
+     1 pandas-docs-bot
+     1 parchd-1
+     1 paul-mannino
+     1 pbreach
+     1 peadarcoyle
+     1 peterpanmj
+     1 philipphanemann
+     1 pijucha
+     1 pizzathief
+     1 pmaxey83
+     1 pqzx
+     1 ptype
+     1 pvanhauw
+     1 rafarui
+     1 raguiar2
+     1 ranarag
+     1 raph-m
+     1 ratijas
+     1 rdk1024
+     1 readyready15728
+     1 rhstanton
+     1 ribonoous
+     1 rmihael
+     1 rmunjal29
+     1 robertzk
+     1 rs2
+     1 ruiann
+     1 s-weigand
+     1 sage
+     1 sagungrp
+     1 sakkemo
+     1 salem3358
+     1 saloni30
+     1 samghelms
+     1 sangarshanan
+     1 sanguineturtle
+     1 sardonick
+     1 saskakarsi
+     1 saurav2608
+     1 scriptomation
+     1 seales
+     1 sfoo
+     1 shaido987
+     1 shawnbrown
+     1 sideeye
+     1 silentquasar
+     1 skwbc
+     1 smartswdeveloper
+     1 someben
+     1 stahlous
+     1 stas-sl
+     1 stefansimik
+     1 step4me
+     1 stephenwlin
+     1 steveayers124
+     1 stijnvanhoey
+     1 sudhir mohanraj
+     1 surveymedia.ca
+     1 svaksha
+     1 syutbai
+     1 tadashigaki
+     1 tadeja
+     1 tamuhey
+     1 testvinder
+     1 thauck
+     1 the-nose-knows
+     1 theandygross
+     1 themrmax
+     1 thuske
+     1 timcera
+     1 timhunderwood
+     1 tlaytongoogle
+     1 tom-alcorn
+     1 tomascassidy
+     1 tomrod
+     1 tworec
+     1 venkateshdatta1993
+     1 verakai
+     1 vivikelapoutre
+     1 vkk800
+     1 vytas
+     1 wandersoncferreira
+     1 watercrossing
+     1 wavedatalab
+     1 willbowditch
+     1 willweil
+     1 winlu
+     1 xgdgsc
+     1 yehia67
+     1 yelite
+     1 yhaque1213
+     1 ym-pett
+     1 yrhooke
+     1 ysau
+     1 ywpark1
+     1 zachcp
+     1 zaki-indra
+     1 zertrin
+     1 zhanghui
+     1 zhangjinjie
+     1 zhezherun
+     1 znmean
+     1 zys5945
+     1 zzgao
+     1 Åsmund Hjulstad
+     1 Øystein S. Haaland
+     1 颜发才(Yan Facai)
+
+Debian packaging
+   323 Yaroslav Halchenko
+   256 Rebecca N. Palmer
+    49 Mo Zhou
+    25 Andreas Tille
+    25 Graham Inggs
+     4 Dmitry Shachnev
+     2 Julian Taylor
+     2 Yaroslav O Halchenko
+     1 Diane Trout
+     1 Ole Streicher
diff --git a/control b/control
new file mode 100644 (file)
index 0000000..07f2dbf
--- /dev/null
+++ b/control
@@ -0,0 +1,179 @@
+Source: pandas
+Section: python
+Priority: optional
+Maintainer: Debian Science Team <debian-science-maintainers@lists.alioth.debian.org>
+Uploaders: Yaroslav Halchenko <debian@onerussian.com>,
+           Michael Hanke <michael.hanke@gmail.com>,
+           Rebecca N. Palmer <rebecca_palmer@zoho.com>
+Build-Depends: debhelper-compat (= 13),
+               dh-python,
+               locales-all,
+               python3-all-dev,
+               cython3 (>= 0.29.21~),
+               python3-bottleneck (>= 1.2.1~) <!nocheck> <!nodoc>,
+               python3-bs4 <!nocheck> <!nodoc>,
+               python3-dask (>= 2.10.1~) <!nocheck> <!nodoc>,
+               python3-dateutil (>= 2.7.3~),
+               python3-html5lib <!nocheck> <!nodoc>,
+               python3-hypothesis <!nocheck> <!nodoc>,
+               python3-jinja2 <!nocheck> <!nodoc>,
+               python3-lxml <!nocheck> <!nodoc>,
+               python3-matplotlib [!hurd-i386],
+# armel, s390x numba crash, mipsel gives wrong answer, most ports don't have numba
+# re-add when #972246 is fixed               python3-numba (>= 0.46.0~) [amd64 arm64 armhf i386 mips64el mipsel ppc64el s390x] <!nocheck> <!nodoc>,
+               python3-numexpr (>= 2.6.2~) <!nocheck> <!nodoc>,
+               python3-numpy,
+               python3-odf <!nocheck> <!nodoc>,
+               python3-openpyxl <!nocheck> <!nodoc>,
+# upstream actually want pytest >= 5.0.1 but we don't have that
+               python3-pytest (>= 4.0.2~) <!nocheck> <!nodoc>,
+               python3-pytest-asyncio <!nocheck> <!nodoc>,
+               python3-pytest-forked <!nocheck> <!nodoc>,
+               python3-pytest-xdist (>= 1.21~) <!nocheck> <!nodoc>,
+               python3-scipy,
+               python3-setuptools,
+               python3-six,
+               python3-tables (>= 3.4.3~) <!nocheck> <!nodoc>,
+# too old in Debian python3-tabulate (>= 0.8.3~) <!nocheck> <!nodoc>,
+               python3-tk <!nocheck> <!nodoc>,
+               python3-tz <!nocheck> <!nodoc>,
+# broken - #976620               python3-xlrd <!nocheck> <!nodoc>,
+               python3-xlsxwriter <!nocheck> <!nodoc>,
+               python3-xlwt <!nocheck> <!nodoc>,
+               sphinx-common,
+               xvfb <!nocheck>,
+               xauth <!nocheck>,
+               xclip <!nocheck>,
+Build-Depends-Indep:
+ python3-sphinx <!nodoc>,
+ python3-ipykernel <!nodoc>,
+ python3-nbconvert (>= 5.4.1~) <!nodoc>,
+ python3-nbsphinx <!nodoc>,
+ python3-numpydoc <!nodoc>,
+ ipython3 (>= 7.11.1~) <!nodoc>,
+ jdupes <!nodoc>,
+# for style.ipynb
+ pandoc <!nodoc>,
+# for intersphinx inventories
+ python3-doc <!nodoc>,
+ python-numpy-doc <!nodoc>,
+ python-scipy-doc <!nodoc>,
+ python-matplotlib-doc <!nodoc>,
+ python-statsmodels-doc <!nodoc>,
+# these are for not having (as many) exception messages in documentation examples
+# so may be temporarily removed if they are broken or to break bootstrap cycles
+# not in Debian (not to be confused with python3-arrow) python3-pyarrow <!nodoc>,
+ python3-ipywidgets <!nodoc>,
+ python3-rpy2 <!nodoc>,
+ python3-seaborn <!nodoc>,
+ python3-sqlalchemy <!nodoc>,
+ python3-statsmodels <!nodoc>,
+ python3-xarray <!nodoc>,
+Standards-Version: 4.5.1
+Rules-Requires-Root: no
+Homepage: https://pandas.pydata.org/
+Vcs-Browser: https://salsa.debian.org/science-team/pandas
+Vcs-Git: https://salsa.debian.org/science-team/pandas.git
+
+Package: python3-pandas
+Architecture: all
+Depends: ${misc:Depends}, ${python3:Depends},
+         python3-numpy (>= 1:1.15~),
+         python3-dateutil (>= 2.7.3~),
+         python3-pandas-lib (>= ${source:Upstream-Version}),
+# should maybe have a python3-pandas-lib (<< ${source:Upstream-Version}.0), as well, but that leaves arch:all BD-Uninstallable if arch:amd64 builds first
+         python3-pkg-resources,
+         python3-six,
+Recommends: python3-scipy,
+            python3-matplotlib,
+            python3-tz,
+# for faster processing
+# see -lib for python3-numba
+            python3-bottleneck,
+            python3-numexpr,
+# for spreadsheet I/O
+            python3-odf,
+            python3-openpyxl,
+# broken - #976620            python3-xlrd,
+            python3-xlwt,
+# for HTML table I/O
+            python3-bs4,
+            python3-html5lib,
+            python3-lxml,
+# for HDF5 I/O
+            python3-tables,
+# for styled output
+            python3-jinja2,
+Suggests: python-pandas-doc,
+          python3-statsmodels
+Breaks:
+# 0.23 -> 0.25 API breaks, #931557
+        cnvkit (<< 0.9.6-2~),
+# 0.25 -> 1.0 API breaks, #950430
+        python3-biom-format (<< 2.1.8+dfsg-3.1~),
+        python3-feather-format (<< 0.3.1+dfsg1-4~),
+        python3-statsmodels (<< 0.11.0~),
+        python3-seaborn (<< 0.9.1~),
+        q2-demux (<< 2019.10.0-1.1~),
+        q2templates (<< 2019.10.0+dfsg-1.1~),
+        q2-types (<< 2019.10.0-1.1~),
+# 1.0 -> 1.1 API breaks, #969650
+        python3-dask (<< 2.11.0+dfsg-1.1~),
+        python3-skbio (<< 0.5.6-3~)
+Description: data structures for "relational" or "labeled" data
+ pandas is a Python package providing fast, flexible, and expressive
+ data structures designed to make working with "relational" or
+ "labeled" data both easy and intuitive. It aims to be the fundamental
+ high-level building block for doing practical, real world data
+ analysis in Python. pandas is well suited for many different kinds of
+ data:
+ .
+  - Tabular data with heterogeneously-typed columns, as in an SQL
+    table or Excel spreadsheet
+  - Ordered and unordered (not necessarily fixed-frequency) time
+    series data.
+  - Arbitrary matrix data (homogeneously typed or heterogeneous) with
+    row and column labels
+  - Any other form of observational / statistical data sets. The data
+    actually need not be labeled at all to be placed into a pandas
+    data structure
+ .
+ This package contains the Python 3 version.
+
+Package: python-pandas-doc
+Architecture: all
+Section: doc
+Depends: ${misc:Depends},
+         ${sphinxdoc:Depends}
+Suggests: python3-pandas
+Description: data structures for "relational" or "labeled" data - documentation
+ pandas is a Python package providing fast, flexible, and expressive
+ data structures designed to make working with "relational" or
+ "labeled" data both easy and intuitive. It aims to be the fundamental
+ high-level building block for doing practical, real world data
+ analysis in Python. pandas is well suited for many different kinds of
+ data:
+ .
+  - Tabular data with heterogeneously-typed columns, as in an SQL
+    table or Excel spreadsheet
+  - Ordered and unordered (not necessarily fixed-frequency) time
+    series data.
+  - Arbitrary matrix data (homogeneously typed or heterogeneous) with
+    row and column labels
+  - Any other form of observational / statistical data sets. The data
+    actually need not be labeled at all to be placed into a pandas
+    data structure
+ .
+ This package contains the documentation.
+
+Package: python3-pandas-lib
+Architecture: any
+Multi-Arch: same
+Depends: ${misc:Depends}, ${shlibs:Depends}, ${python3:Depends}, python3-numpy (>=1:1.15~)
+# this is here to allow it to be arch-specific, to avoid numba bugs on other architectures
+Recommends: python3-numba [amd64]
+Description: low-level implementations and bindings for pandas
+ This is a low-level package for python3-pandas providing
+ architecture-dependent extensions.
+ .
+ Users should not need to install it directly.
diff --git a/copyright b/copyright
new file mode 100644 (file)
index 0000000..75838fa
--- /dev/null
+++ b/copyright
@@ -0,0 +1,733 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: pandas
+Upstream-Contact: pandas-dev@python.org
+Source: https://github.com/pandas-dev/pandas
+Files-Excluded: doc/source/user_guide/cookbook.rst
+Comment: cookbook has around 100 Stack Overflow snippets (CC-BY-SA with possibly inadequate attribution), the Google pandas/io/auth.py referred to in LICENSES/OTHER was removed in upstream commit 1bad601
+
+Files: *
+Copyright: 2008-2011 AQR Capital Management, LLC
+           2011 Wes McKinney and pandas developers
+           2011-2020 Lambda Foundry, Inc. and PyData Development Team
+License: BSD-3
+Comment: The original source contains some CC-BY-SA snippets by Stack Overflow users (https://stackoverflow.com/users/1114/jeremy-banks, https://stackoverflow.com/users/387251/oliver, https://stackoverflow.com/users/3297752/noah-motion, https://stackoverflow.com/users/925671/bill, https://stackoverflow.com/users/1082349/foobar, https://stackoverflow.com/users/3089209/crantila, https://stackoverflow.com/users/2375855/ojdo, https://stackoverflow.com/users/487339/dsm, https://stackoverflow.com/users/2677943/swenzel), but these may be too small to be copyrightable, and the less trivial ones are patched out in this package
+
+Files: doc/sphinxext/*
+Copyright: 2008, Stefan van der Walt <stefan@mentat.za.net>, Pauli Virtanen <pav@iki.fi>
+License: BSD-2
+
+Files: doc/sphinxext/announce.py
+Copyright: 2001-2017 Enthought, Inc. and SciPy Developers.
+           2017-2020 Lambda Foundry, Inc. and PyData Development Team
+License: BSD-3
+Comment: it is possible that other code was also taken from Scipy
+
+Files: pandas/_libs/src/headers/portable.h
+Copyright: 2005-2014 Rich Felker and contributors
+           2008-2019, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
+License: Expat and BSD-3
+Origin: musl (partly)
+Comment: this might or might not be from a public domain part of musl
+
+Files: pandas/_libs/src/headers/ms_*
+Copyright: 2006-2008 Alexander Chemeris
+License: BSD-3
+
+Files: pandas/_libs/src/klib/*
+Copyright: 2008, 2009, 2011 by Attractive Chaos <attractor@live.co.uk>
+License: Expat
+
+Files: pandas/_libs/src/parser/tokenizer.*
+Copyright: 2002 Michael Ringgaard
+           2011-2012 Warren Weckesser
+           2001-2012 Python Software Foundation and Python contributors
+           2012-2020 Lambda Foundry, Inc. and PyData Development Team
+License: Python and BSD-3
+Origin: csv (Python standard library), github.com/WarrenWeckesser/textreader
+
+Files: pandas/_libs/src/skiplist.h
+Copyright: 2009, Raymond Hettinger
+           2011-2020 Wes McKinney and PyData Development Team
+License: Expat and BSD-3
+Origin: http://code.activestate.com/recipes/576930/
+Comment: it is a Cython code "inspired" by the original Python code by Raymond
+
+Files: pandas/_libs/src/ujson/*
+Copyright: 1988-1993 The Regents of the University of California
+           1994 Sun Microsystems, Inc.
+           2007 Nick Galbreath
+           2011-2013 ESN Social Software AB and Jonas Tarnstrom
+           2012-2020 Lambda Foundry, Inc. and PyData Development Team
+License: BSD-3 and Expat
+Origin: ultrajson
+
+Files: pandas/_libs/tslibs/parsing.pyx
+Copyright: 2003-2011 - Gustavo Niemeyer <gustavo@niemeyer.net>
+           2012-2014 - Tomi Pieviläinen <tomi.pievilainen@iki.fi>
+           2014-2016 - Yaron de Leeuw <me@jarondl.net>
+           2015-2017 - Paul Ganssle <paul@ganssle.io>
+           2015-2017 - dateutil contributors (see AUTHORS file)
+           2008-2020, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
+License: BSD-3
+Origin: dateutil (partly)
+
+Files: pandas/_libs/tslibs/src/datetime/*
+Copyright: 2005-2013, NumPy Developers
+License: BSD-3
+Origin: numpy
+Comment: Listed as derived from Numpy 1.7
+
+Files: pandas/_libs/window/aggregations.pyx
+       pandas/tests/window/moments/test_moments_rolling.py
+Copyright: 2010-2012 Archipel Asset Management AB
+           2011-2020 Lambda Foundry, Inc. and PyData Development Team
+License: BSD-3
+Origin: bottleneck (partly)
+Comment: Original was BSD-2, but BSD-2 and BSD-3 = BSD-3
+
+Files: pandas/compat/*
+Copyright: 2010-2013 Benjamin Peterson
+           2012-2020 Lambda Foundry, Inc. and PyData Development Team
+License: Expat and BSD-3
+Origin: six
+
+Files: pandas/core/accessor.py
+Copyright: 2014-2018 xarray developers
+           2018-2020 Lambda Foundry, Inc. and PyData Development Team
+License: Apache-2.0 and BSD-3
+Origin: xarray (partly)
+
+Files: pandas/io/clipboard/*
+Copyright: 2010-2017 Albert Sweigart and Pyperclip contributors
+           2016-2020 Lambda Foundry, Inc. and PyData Development Team
+License: BSD-3
+Origin: Pyperclip
+
+Files: pandas/io/sas/sas7bdat.py
+Copyright: 2015 Jared Hobbs
+           2016-2020 Lambda Foundry, Inc. and PyData Development Team
+Origin: https://bitbucket.org/jaredhobbs/sas7bdat
+License: Expat
+
+Files: pandas/tests/io/data/html/banklist.html
+       pandas/tests/io/data/csv/banklist.csv
+       pandas/tests/io/data/html/spam.html
+Copyright: None; by Federal Deposit Insurance Corporation and US Department of Agriculture
+License: public-domain
+
+Files: pandas/tests/io/data/html/wikipedia_states.html
+Copyright: 2002-2014 Wikipedia contributors (full list: https://en.wikipedia.org/w/index.php?title=List_of_U.S._states_and_territories_by_area&offset=20140630&action=history)
+License: CC-BY-SA-3.0
+
+Files: pandas/tests/io/data/spss/*
+Copyright: 2019 Hadley Wickham; RStudio; and Evan Miller
+License: Expat
+Origin: https://haven.tidyverse.org
+
+Files: setup.py
+Copyright: 2009-2012, Brian Granger, Min Ragan-Kelley (from pyzmq)
+           2004 Infrae (from lxml)
+           2008-2020, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
+License: BSD-3
+
+Files: debian/*
+Copyright: 2011-2018, Yaroslav Halchenko <debian@onerussian.com>
+           2019-2020, Debian Science Team
+License: BSD-3
+
+License: BSD-2
+  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 COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "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 COPYRIGHT
+  OWNER OR CONTRIBUTORS 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.
+
+License: BSD-3
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ .
+  * Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+  * 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.
+  * Neither the name of the copyright holder nor the names of any
+     contributors may be used to endorse or promote products derived
+     from this software without specific prior written permission.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS
+ "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 COPYRIGHT
+ OWNER OR CONTRIBUTORS 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.
+
+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, including
+ without 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.
+
+License: Apache-2.0
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+ .
+     http://www.apache.org/licenses/LICENSE-2.0
+ .
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ .
+ On Debian systems full text of the license could be found in
+ /usr/share/common-licenses/Apache-2.0 .
+
+License: Python
+ PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
+ --------------------------------------------
+ .
+ 1. This LICENSE AGREEMENT is between the Python Software Foundation
+ ("PSF"), and the Individual or Organization ("Licensee") accessing and
+ otherwise using this software ("Python") in source or binary form and
+ its associated documentation.
+ .
+ 2. Subject to the terms and conditions of this License Agreement, PSF hereby
+ grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce,
+ analyze, test, perform and/or display publicly, prepare derivative works,
+ distribute, and otherwise use Python alone or in any derivative version,
+ provided, however, that PSF's License Agreement and PSF's notice of copyright,
+ i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Python Software Foundation; All Rights Reserved" are retained in Python alone or
+ in any derivative version prepared by Licensee.
+ .
+ 3. In the event Licensee prepares a derivative work that is based on
+ or incorporates Python or any part thereof, and wants to make
+ the derivative work available to others as provided herein, then
+ Licensee hereby agrees to include in any such work a brief summary of
+ the changes made to Python.
+ .
+ 4. PSF is making Python available to Licensee on an "AS IS"
+ basis.  PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
+ IMPLIED.  BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
+ DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
+ FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT
+ INFRINGE ANY THIRD PARTY RIGHTS.
+ .
+ 5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
+ FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
+ A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON,
+ OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
+ .
+ 6. This License Agreement will automatically terminate upon a material
+ breach of its terms and conditions.
+ .
+ 7. Nothing in this License Agreement shall be deemed to create any
+ relationship of agency, partnership, or joint venture between PSF and
+ Licensee.  This License Agreement does not grant permission to use PSF
+ trademarks or trade name in a trademark sense to endorse or promote
+ products or services of Licensee, or any third party.
+ .
+ 8. By copying, installing or otherwise using Python, Licensee
+ agrees to be bound by the terms and conditions of this License
+ Agreement.
+
+License: public-domain
+ US federal government works
+
+License: CC-BY-SA-3.0
+ Creative Commons Attribution-ShareAlike 3.0 Unported
+ .
+ .
+ .
+         CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS
+         LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON
+         AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED,
+         AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE.
+ .
+         License
+ .
+ .
+ .
+      THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE
+         ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE
+         LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS
+         PROHIBITED.
+ .
+      BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS
+         LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE
+         RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
+ .
+ .
+ .
+ .
+ .
+ 1.
+          Definitions
+ .
+ .
+ .
+ .
+ a.
+            "Adaptation" means a work based upon the Work, or upon the Work and other
+               pre-existing works, such as a translation, adaptation, derivative work, arrangement of
+               music or other alterations of a literary or artistic work, or phonogram or performance and
+               includes cinematographic adaptations or any other form in which the Work may be recast,
+               transformed, or adapted including in any form recognizably derived from the original,
+               except that a work that constitutes a Collection will not be considered an Adaptation for
+               the purpose of this License. For the avoidance of doubt, where the Work is a musical work,
+               performance or phonogram, the synchronization of the Work in timed-relation with a moving
+               image ("synching") will be considered an Adaptation for the purpose of this
+               License.
+ .
+ .
+ .
+ b.
+            "Collection" means a collection of literary or artistic works, such as
+               encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works
+               or subject matter other than works listed in Section 1(f) below, which, by reason of the
+               selection and arrangement of their contents, constitute intellectual creations, in which
+               the Work is included in its entirety in unmodified form along with one or more other
+               contributions, each constituting separate and independent works in themselves, which
+               together are assembled into a collective whole. A work that constitutes a Collection will
+               not be considered an Adaptation (as defined below) for the purposes of this License.
+ .
+ .
+ .
+ c.
+            "Creative Commons Compatible License" means a license that is listed at
+               http://creativecommons.org/compatiblelicenses that has been approved by Creative Commons
+               as being essentially equivalent to this License, including, at a minimum, because that
+               license: (i) contains terms that have the same purpose, meaning and effect as the License
+               Elements of this License; and, (ii) explicitly permits the relicensing of adaptations of
+               works made available under that license under this License or a Creative Commons
+               jurisdiction license with the same License Elements as this License.
+ .
+ .
+ .
+ d.
+            "Distribute" means to make available to the public the original and copies of the
+               Work or Adaptation, as appropriate, through sale or other transfer of ownership.
+ .
+ .
+ .
+ e.
+            "License Elements" means the following high-level license attributes as selected by
+               Licensor and indicated in the title of this License: Attribution, ShareAlike.
+ .
+ .
+ .
+ f.
+            "Licensor" means the individual, individuals, entity or entities that offer(s) the
+               Work under the terms of this License.
+ .
+ .
+ .
+ g.
+            "Original Author" means, in the case of a literary or artistic work, the
+               individual, individuals, entity or entities who created the Work or if no individual or
+               entity can be identified, the publisher; and in addition (i) in the case of a performance
+               the actors, singers, musicians, dancers, and other persons who act, sing, deliver,
+               declaim, play in, interpret or otherwise perform literary or artistic works or expressions
+               of folklore; (ii) in the case of a phonogram the producer being the person or legal entity
+               who first fixes the sounds of a performance or other sounds; and, (iii) in the case of
+               broadcasts, the organization that transmits the broadcast.
+ .
+ .
+ .
+ h.
+            "Work" means the literary and/or artistic work offered under the terms of this
+               License including without limitation any production in the literary, scientific and
+               artistic domain, whatever may be the mode or form of its expression including digital
+               form, such as a book, pamphlet and other writing; a lecture, address, sermon or other work
+               of the same nature; a dramatic or dramatico-musical work; a choreographic work or
+               entertainment in dumb show; a musical composition with or without words; a cinematographic
+               work to which are assimilated works expressed by a process analogous to cinematography; a
+               work of drawing, painting, architecture, sculpture, engraving or lithography; a
+               photographic work to which are assimilated works expressed by a process analogous to
+               photography; a work of applied art; an illustration, map, plan, sketch or
+               three-dimensional work relative to geography, topography, architecture or science; a
+               performance; a broadcast; a phonogram; a compilation of data to the extent it is protected
+               as a copyrightable work; or a work performed by a variety or circus performer to the
+               extent it is not otherwise considered a literary or artistic work.
+ .
+ .
+ .
+ i.
+            "You" means an individual or entity exercising rights under this License who has
+               not previously violated the terms of this License with respect to the Work, or who has
+               received express permission from the Licensor to exercise rights under this License
+               despite a previous violation.
+ .
+ .
+ .
+ j.
+            "Publicly Perform" means to perform public recitations of the Work and to
+               communicate to the public those public recitations, by any means or process, including by
+               wire or wireless means or public digital performances; to make available to the public
+               Works in such a way that members of the public may access these Works from a place and at
+               a place individually chosen by them; to perform the Work to the public by any means or
+               process and the communication to the public of the performances of the Work, including by
+               public digital performance; to broadcast and rebroadcast the Work by any means including
+               signs, sounds or images.
+ .
+ .
+ .
+ k.
+            "Reproduce" means to make copies of the Work by any means including without
+               limitation by sound or visual recordings and the right of fixation and reproducing
+               fixations of the Work, including storage of a protected performance or phonogram in
+               digital form or other electronic medium.
+ .
+ .
+ .
+ .
+ .
+ 2.
+          Fair Dealing Rights. Nothing in this License is intended to reduce, limit, or restrict any uses
+             free from copyright or rights arising from limitations or exceptions that are provided for in
+             connection with the copyright protection under copyright law or other applicable laws.
+ .
+ .
+ .
+ 3.
+          License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a
+             worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable
+             copyright) license to exercise the rights in the Work as stated below:
+ .
+ .
+ .
+ .
+ a.
+            to Reproduce the Work, to incorporate the Work into one or more Collections, and to Reproduce
+               the Work as incorporated in the Collections;
+ .
+ .
+ .
+ b.
+            to create and Reproduce Adaptations provided that any such Adaptation, including any
+               translation in any medium, takes reasonable steps to clearly label, demarcate or otherwise
+               identify that changes were made to the original Work. For example, a translation could be
+               marked "The original work was translated from English to Spanish," or a
+               modification could indicate "The original work has been modified.";
+ .
+ .
+ .
+ c.
+            to Distribute and Publicly Perform the Work including as incorporated in Collections; and,
+ .
+ .
+ .
+ d.
+            to Distribute and Publicly Perform Adaptations.
+ .
+ .
+ .
+ e.
+            For the avoidance of doubt:
+ .
+ .
+ .
+ .
+ i.
+              Non-waivable Compulsory License Schemes. In those jurisdictions in which the right to
+                 collect royalties through any statutory or compulsory licensing scheme cannot be
+                 waived, the Licensor reserves the exclusive right to collect such royalties for any
+                 exercise by You of the rights granted under this License;
+ .
+ .
+ .
+ ii.
+              Waivable Compulsory License Schemes. In those jurisdictions in which the right to collect
+                 royalties through any statutory or compulsory licensing scheme can be waived, the
+                 Licensor waives the exclusive right to collect such royalties for any exercise by You
+                 of the rights granted under this License; and,
+ .
+ .
+ .
+ iii.
+              Voluntary License Schemes. The Licensor waives the right to collect royalties, whether
+                 individually or, in the event that the Licensor is a member of a collecting society
+                 that administers voluntary licensing schemes, via that society, from any exercise by
+                 You of the rights granted under this License.
+ .
+ .
+ .
+ .
+              The above rights may be exercised in all media and formats whether now known or hereafter
+                 devised. The above rights include the right to make such modifications as are
+                 technically necessary to exercise the rights in other media and formats. Subject to
+                 Section 8(f), all rights not expressly granted by Licensor are hereby reserved.
+ .
+ .
+ .
+ .
+ 4.
+          Restrictions. The license granted in Section 3 above is expressly made subject to and limited by
+             the following restrictions:
+ .
+ .
+ .
+ .
+ a.
+            You may Distribute or Publicly Perform the Work only under the terms of this License. You
+               must include a copy of, or the Uniform Resource Identifier (URI) for, this License with
+               every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any
+               terms on the Work that restrict the terms of this License or the ability of the recipient
+               of the Work to exercise the rights granted to that recipient under the terms of the
+               License. You may not sublicense the Work. You must keep intact all notices that refer to
+               this License and to the disclaimer of warranties with every copy of the Work You
+               Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may
+               not impose any effective technological measures on the Work that restrict the ability of a
+               recipient of the Work from You to exercise the rights granted to that recipient under the
+               terms of the License. This Section 4(a) applies to the Work as incorporated in a
+               Collection, but this does not require the Collection apart from the Work itself to be made
+               subject to the terms of this License. If You create a Collection, upon notice from any
+               Licensor You must, to the extent practicable, remove from the Collection any credit as
+               required by Section 4(c), as requested. If You create an Adaptation, upon notice from any
+               Licensor You must, to the extent practicable, remove from the Adaptation any credit as
+               required by Section 4(c), as requested.
+ .
+ .
+ .
+ b.
+            You may Distribute or Publicly Perform an Adaptation only under the terms of: (i) this
+               License; (ii) a later version of this License with the same License Elements as this
+               License; (iii) a Creative Commons jurisdiction license (either this or a later license
+               version) that contains the same License Elements as this License (e.g.,
+               Attribution-ShareAlike 3.0 US)); (iv) a Creative Commons Compatible License. If you
+               license the Adaptation under one of the licenses mentioned in (iv), you must comply with
+               the terms of that license. If you license the Adaptation under the terms of any of the
+               licenses mentioned in (i), (ii) or (iii) (the "Applicable License"), you must
+               comply with the terms of the Applicable License generally and the following provisions:
+               (I) You must include a copy of, or the URI for, the Applicable License with every copy of
+               each Adaptation You Distribute or Publicly Perform; (II) You may not offer or impose any
+               terms on the Adaptation that restrict the terms of the Applicable License or the ability
+               of the recipient of the Adaptation to exercise the rights granted to that recipient under
+               the terms of the Applicable License; (III) You must keep intact all notices that refer to
+               the Applicable License and to the disclaimer of warranties with every copy of the Work as
+               included in the Adaptation You Distribute or Publicly Perform; (IV) when You Distribute or
+               Publicly Perform the Adaptation, You may not impose any effective technological measures
+               on the Adaptation that restrict the ability of a recipient of the Adaptation from You to
+               exercise the rights granted to that recipient under the terms of the Applicable License.
+               This Section 4(b) applies to the Adaptation as incorporated in a Collection, but this does
+               not require the Collection apart from the Adaptation itself to be made subject to the
+               terms of the Applicable License.
+ .
+ .
+ .
+ c.
+            If You Distribute, or Publicly Perform the Work or any Adaptations or Collections, You must,
+               unless a request has been made pursuant to Section 4(a), keep intact all copyright notices
+               for the Work and provide, reasonable to the medium or means You are utilizing: (i) the
+               name of the Original Author (or pseudonym, if applicable) if supplied, and/or if the
+               Original Author and/or Licensor designate another party or parties (e.g., a sponsor
+               institute, publishing entity, journal) for attribution ("Attribution Parties")
+               in Licensor's copyright notice, terms of service or by other reasonable means, the
+               name of such party or parties; (ii) the title of the Work if supplied; (iii) to the extent
+               reasonably practicable, the URI, if any, that Licensor specifies to be associated with the
+               Work, unless such URI does not refer to the copyright notice or licensing information for
+               the Work; and (iv), consistent with 
+ Section
+               3(b), in the case of an Adaptation, a credit
+               identifying the use of the Work in the Adaptation (e.g., "French translation of the
+               Work by Original Author," or "Screenplay based on original Work by Original
+               Author"). The credit required by this Section 4(c) may be implemented in any
+               reasonable manner; provided, however, that in the case of a Adaptation or Collection, at a
+               minimum such credit will appear, if a credit for all contributing authors of the
+               Adaptation or Collection appears, then as part of these credits and in a manner at least
+               as prominent as the credits for the other contributing authors. For the avoidance of
+               doubt, You may only use the credit required by this Section for the purpose of attribution
+               in the manner set out above and, by exercising Your rights under this License, You may not
+               implicitly or explicitly assert or imply any connection with, sponsorship or endorsement
+               by the Original Author, Licensor and/or Attribution Parties, as appropriate, of You or
+               Your use of the Work, without the separate, express prior written permission of the
+               Original Author, Licensor and/or Attribution Parties.
+ .
+ .
+ .
+ d.
+            Except as otherwise agreed in writing by the Licensor or as may be otherwise permitted by
+               applicable law, if You Reproduce, Distribute or Publicly Perform the Work either by itself
+               or as part of any Adaptations or Collections, You must not distort, mutilate, modify or
+               take other derogatory action in relation to the Work which would be prejudicial to the
+               Original Author's honor or reputation. Licensor agrees that in those jurisdictions
+               (e.g. Japan), in which any exercise of the right granted in Section 3(b) of this License
+               (the right to make Adaptations) would be deemed to be a distortion, mutilation,
+               modification or other derogatory action prejudicial to the Original Author's honor
+               and reputation, the Licensor will waive or not assert, as appropriate, this Section, to
+               the fullest extent permitted by the applicable national law, to enable You to reasonably
+               exercise Your right under Section 3(b) of this License (right to make Adaptations) but not
+               otherwise.
+ .
+ .
+ .
+ .
+ .
+ 5.
+          Representations, Warranties and Disclaimer
+          UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND
+             MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED,
+             STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY,
+             FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS,
+             ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME
+             JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT
+             APPLY TO YOU.
+ .
+ .
+ .
+ .
+ 6.
+          Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL
+             LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL,
+             PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF
+             LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ .
+ .
+ .
+ 7.
+          Termination
+ .
+ .
+ .
+ .
+ a.
+            This License and the rights granted hereunder will terminate automatically upon any breach by
+               You of the terms of this License. Individuals or entities who have received Adaptations or
+               Collections from You under this License, however, will not have their licenses terminated
+               provided such individuals or entities remain in full compliance with those licenses.
+               Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License.
+ .
+ .
+ .
+ b.
+            Subject to the above terms and conditions, the license granted here is perpetual (for the
+               duration of the applicable copyright in the Work). Notwithstanding the above, Licensor
+               reserves the right to release the Work under different license terms or to stop
+               distributing the Work at any time; provided, however that any such election will not serve
+               to withdraw this License (or any other license that has been, or is required to be,
+               granted under the terms of this License), and this License will continue in full force and
+               effect unless terminated as stated above.
+ .
+ .
+ .
+ .
+ .
+ 8.
+          Miscellaneous
+ .
+ .
+ .
+ .
+ a.
+            Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to
+               the recipient a license to the Work on the same terms and conditions as the license
+               granted to You under this License.
+ .
+ .
+ .
+ b.
+            Each time You Distribute or Publicly Perform an Adaptation, Licensor offers to the recipient
+               a license to the original Work on the same terms and conditions as the license granted to
+               You under this License.
+ .
+ .
+ .
+ c.
+            If any provision of this License is invalid or unenforceable under applicable law, it shall
+               not affect the validity or enforceability of the remainder of the terms of this License,
+               and without further action by the parties to this agreement, such provision shall be
+               reformed to the minimum extent necessary to make such provision valid and enforceable.
+ .
+ .
+ .
+ d.
+            No term or provision of this License shall be deemed waived and no breach consented to unless
+               such waiver or consent shall be in writing and signed by the party to be charged with such
+               waiver or consent.
+ .
+ .
+ .
+ e.
+            This License constitutes the entire agreement between the parties with respect to the Work
+               licensed here. There are no understandings, agreements or representations with respect to
+               the Work not specified here. Licensor shall not be bound by any additional provisions that
+               may appear in any communication from You. This License may not be modified without the
+               mutual written agreement of the Licensor and You.
+ .
+ .
+ .
+ f.
+            The rights granted under, and the subject matter referenced, in this License were drafted
+               utilizing the terminology of the Berne Convention for the Protection of Literary and
+               Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO
+               Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the
+               Universal Copyright Convention (as revised on July 24, 1971). These rights and subject
+               matter take effect in the relevant jurisdiction in which the License terms are sought to
+               be enforced according to the corresponding provisions of the implementation of those
+               treaty provisions in the applicable national law. If the standard suite of rights granted
+               under applicable copyright law includes additional rights not granted under this License,
+               such additional rights are deemed to be included in the License; this License is not
+               intended to restrict the license of any rights under applicable law.
+ .
+ .
+ .
+ .
+      Creative Commons Notice
+ .
+      Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the
+         Work. Creative Commons will not be liable to You or any party on any legal theory for any damages
+         whatsoever, including without limitation any general, special, incidental or consequential damages
+         arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative
+         Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and
+         obligations of Licensor.
+ .
+      Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL,
+         Creative Commons does not authorize the use by either party of the trademark "Creative
+         Commons" or any related trademark or logo of Creative Commons without the prior written consent
+         of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current
+         trademark usage guidelines, as may be published on its website or otherwise made available upon
+         request from time to time. For the avoidance of doubt, this trademark restriction does not form part
+         of the License.
+ .
+      Creative Commons may be contacted at http://creativecommons.org/.
diff --git a/gbp.conf b/gbp.conf
new file mode 100644 (file)
index 0000000..9688b7a
--- /dev/null
+++ b/gbp.conf
@@ -0,0 +1,10 @@
+[DEFAULT]
+# the default branch for upstream sources:
+upstream-branch = master
+# the default branch for the debian patch:
+debian-branch = debian
+# the default tag formats used:
+upstream-tag = v%(version)s
+debian-tag = debian/%(version)s
+
+
diff --git a/patches/35080_plot_tests.patch b/patches/35080_plot_tests.patch
new file mode 100644 (file)
index 0000000..016e2e0
--- /dev/null
@@ -0,0 +1,35 @@
+Description: Clean up so test_ts_plot_with_tz doesn't fail
+
+Author: Steffen Rehberg, Rebecca N. Palmer <rebecca_palmer@zoho.com>
+Bug: https://github.com/pandas-dev/pandas/issues/35080
+Forwarded: no
+
+--- a/pandas/tests/plotting/test_converter.py
++++ b/pandas/tests/plotting/test_converter.py
+@@ -70,15 +70,17 @@ class TestRegistration:
+         # Set to the "warn" state, in case this isn't the first test run
+         register_matplotlib_converters()
+         ax.plot(s.index, s.values)
++        plt.clf()
+     def test_pandas_plots_register(self):
+-        pytest.importorskip("matplotlib.pyplot")
++        plt = pytest.importorskip("matplotlib.pyplot")
+         s = Series(range(12), index=date_range("2017", periods=12))
+         # Set to the "warn" state, in case this isn't the first test run
+         with tm.assert_produces_warning(None) as w:
+             s.plot()
+         assert len(w) == 0
++        plt.clf()
+     def test_matplotlib_formatters(self):
+         units = pytest.importorskip("matplotlib.units")
+@@ -108,6 +110,7 @@ class TestRegistration:
+         register_matplotlib_converters()
+         with ctx:
+             ax.plot(s.index, s.values)
++        plt.clf()
+     def test_registry_resets(self):
+         units = pytest.importorskip("matplotlib.units")
diff --git a/patches/968208_rounding.patch b/patches/968208_rounding.patch
new file mode 100644 (file)
index 0000000..1eb7fb6
--- /dev/null
@@ -0,0 +1,28 @@
+Description: Don't fail test for rounding difference on i386
+
+Author: Rebecca N. Palmer <rebecca_palmer@zoho.com>
+Bug-Debian: https://bugs.debian.org/968208
+Forwarded: no
+
+--- a/pandas/tests/window/moments/test_moments_rolling.py
++++ b/pandas/tests/window/moments/test_moments_rolling.py
+@@ -1,5 +1,8 @@
+ import copy
+ import warnings
++import sys
++import platform
++import re
+ import numpy as np
+ from numpy.random import randn
+@@ -829,7 +832,9 @@ def test_rolling_quantile_interpolation_
+     if np.isnan(q1):
+         assert np.isnan(q2)
+     else:
+-        assert q1 == q2
++        assert np.abs(q1-q2)<1e-15
++        if not (re.match('i.?86|x86',platform.uname()[4]) and sys.maxsize<2**33):
++            assert q1 == q2
+ def test_invalid_quantile_value():
diff --git a/patches/contributor_list_not_in_tarball.patch b/patches/contributor_list_not_in_tarball.patch
new file mode 100644 (file)
index 0000000..460313b
--- /dev/null
@@ -0,0 +1,28 @@
+Description: Don't try to read a contributor list from the git log
+
+Debian packages are built from tarballs, so there isn't a git log.
+
+Author: Rebecca N. Palmer <rebecca_palmer@zoho.com>
+Forwarded: not-needed
+
+--- a/doc/sphinxext/contributors.py
++++ b/doc/sphinxext/contributors.py
+@@ -14,10 +14,8 @@ use::
+ While the v0.23.1 tag does not exist, that will use the HEAD of the
+ branch as the end of the revision range.
+ """
+-from announce import build_components
+ from docutils import nodes
+ from docutils.parsers.rst import Directive
+-import git
+ class ContributorsDirective(Directive):
+@@ -25,6 +23,7 @@ class ContributorsDirective(Directive):
+     name = "contributors"
+     def run(self):
++        return [nodes.paragraph(), nodes.Text("For contributors, please see /usr/share/doc/contributors_list.txt or https://github.com/pandas-dev/pandas/graphs/contributors")]
+         range_ = self.arguments[0]
+         if range_.endswith("x..HEAD"):
+             return [nodes.paragraph(), nodes.bullet_list()]
diff --git a/patches/deb_disable_googleanalytics.patch b/patches/deb_disable_googleanalytics.patch
new file mode 100644 (file)
index 0000000..a541430
--- /dev/null
@@ -0,0 +1,82 @@
+Author: Yaroslav Halchenko <debian@onerussian.com>
+        Andreas Tille <tille@debian.org>
+        Rebecca N. Palmer <rebecca_palmer@zoho.com>
+Last-Update: Mon, 23 Oct 2017 08:55:28 +0200
+Description: Avoid privacy breach by Google Analytics
+Forwarded: not-needed
+
+--- a/pandas/tests/io/data/html/spam.html
++++ b/pandas/tests/io/data/html/spam.html
+@@ -27,45 +27,9 @@
+ <link rel="stylesheet" href="/ndb/static/css/main.css" />
+-              <script type="text/JavaScript">
+-               var _gaq = _gaq || [];
+-               // NAL
+-                _gaq.push(['_setAccount', 'UA-28627214-1']);
+-                _gaq.push(['_setDomainName', 'nal.usda.gov']);
+-                _gaq.push(['_setAllowLinker', true]);
+-                _gaq.push(['_trackPageview']);
+-               //
+-              // _gaq.push(['_setAccount', 'UA-3876418-1']);
+-              //  _gaq.push(['_trackPageview']);
+-                // for NDB
+-                _gaq.push(['_setAccount', 'UA-36442725-1']);
+-                _gaq.push(['_trackPageview']);
+-                      // USDA servers
+-                _gaq.push(['_setAccount', 'UA-466807-3']);
+-                _gaq.push(['_setDomainName', 'usda.gov']);
+-                _gaq.push(['_setAllowLinker', true]);
+-                _gaq.push(['_trackPageview']);
+-                //
+-                _gaq.push(['a._setAccount', 'UA-27627304-18']);
+-                _gaq.push(['a._setDomainName', 'usda.gov']);
+-                _gaq.push(['a._setAllowLinker', true]);
+-                _gaq.push(['a._trackPageview']);
+-                      //
+-                _gaq.push(['b._setAccount', 'UA-27627304-1']);
+-                _gaq.push(['b._setDomainName', 'usda.gov']);
+-                _gaq.push(['b._setAllowLinker', true]);
+-                _gaq.push(['b._trackPageview']);
+-
+-                (function() {
+-                  var ga = document.createElement('script'); ga.type =
+-              'text/javascript'; ga.async = true;
+-                  ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
+-              'http://www') + '.google-analytics.com/ga.js';
+-                  var s = document.getElementsByTagName('script')[0];
+-              s.parentNode.insertBefore(ga, s);
+-                })();
+-      </script>
+-
++<!-- google analytics snippet was completely removed by Debian maintainers.
++     See http://lintian.debian.org/tags/privacy-breach-google-adsense.html
++     for more information -->
+         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+@@ -794,4 +758,4 @@ handler: function() {this.cancel();},
+                       &nbsp;&nbsp;Software v.1.2.2
+               </div>
+     </body>
+-</html>
+\ No newline at end of file
++</html>
+--- a/web/pandas/_templates/layout.html
++++ b/web/pandas/_templates/layout.html
+@@ -1,14 +1,6 @@
+ <!DOCTYPE html>
+ <html>
+     <head>
+-        <script type="text/javascript">
+-            var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-27880019-2']); _gaq.push(['_trackPageview']);
+-            (function() {
+-                var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+-                ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+-                var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+-            })();
+-        </script>
+         <title>pandas - Python Data Analysis Library</title>
+         <meta charset="utf-8">
+         <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
diff --git a/patches/deb_doc_donotoverride_PYTHONPATH.patch b/patches/deb_doc_donotoverride_PYTHONPATH.patch
new file mode 100644 (file)
index 0000000..dc39d22
--- /dev/null
@@ -0,0 +1,21 @@
+Description: Don't try to import from the source directory
+
+Needed as we build the extension modules elsewhere
+
+Author: Yaroslav Halchenko
+Forwarded: not-needed
+
+--- a/doc/make.py
++++ b/doc/make.py
+@@ -339,8 +339,9 @@ def main():
+     # external libraries (namely Sphinx) to compile this module and resolve
+     # the import of `python_path` correctly. The latter is used to resolve
+     # the import within the module, injecting it into the global namespace
+-    os.environ["PYTHONPATH"] = args.python_path
+-    sys.path.insert(0, args.python_path)
++    # Debian: we set it outside
++    #os.environ["PYTHONPATH"] = args.python_path
++    #sys.path.insert(0, args.python_path)
+     globals()["pandas"] = importlib.import_module("pandas")
+     # Set the matplotlib backend to the non-interactive Agg backend for all
diff --git a/patches/deb_no_strict_data.patch b/patches/deb_no_strict_data.patch
new file mode 100644 (file)
index 0000000..890149b
--- /dev/null
@@ -0,0 +1,19 @@
+Description: Don't fail tests because we don't ship test data
+
+This applies to users running them; our build/autopkgtest re-enable
+this and use the data from the source tree
+
+Author: Yaroslav Halchenko
+Forwarded: no
+
+--- a/setup.cfg
++++ b/setup.cfg
+@@ -55,7 +55,7 @@ exclude =
+ minversion = 4.0.2
+ testpaths = pandas
+ doctest_optionflags = NORMALIZE_WHITESPACE IGNORE_EXCEPTION_DETAIL ELLIPSIS
+-addopts = --strict-data-files
++# addopts = --strict-data-files
+ xfail_strict = True
+ filterwarnings =
+     error:Sparse:FutureWarning
diff --git a/patches/deb_nonversioneer_version.patch b/patches/deb_nonversioneer_version.patch
new file mode 100644 (file)
index 0000000..42cb5fc
--- /dev/null
@@ -0,0 +1,46 @@
+Description: Don't try to use git to find the version number
+
+Needed as Debian buildds use tarballs
+
+Author: Yaroslav Halchenko
+Forwarded: not-needed
+
+--- a/pandas/__init__.py
++++ b/pandas/__init__.py
+@@ -177,13 +177,7 @@ from pandas.util._tester import test
+ import pandas.testing
+ import pandas.arrays
+-# use the closest tagged version if possible
+-from ._version import get_versions
+-
+-v = get_versions()
+-__version__ = v.get("closest-tag", v["version"])
+-__git_version__ = v.get("full-revisionid")
+-del get_versions, v
++from .__version import version as __version__
+ # GH 27101
+ # TODO: remove Panel compat in 1.0
+--- a/pandas/tests/api/test_api.py
++++ b/pandas/tests/api/test_api.py
+@@ -200,7 +200,7 @@ class TestPDApi(Base):
+         "_testing",
+         "_tslib",
+         "_typing",
+-        "_version",
++# not in Debian        "_version",
+     ]
+     def test_api(self):
+--- a/pandas/tests/test_common.py
++++ b/pandas/tests/test_common.py
+@@ -141,7 +141,7 @@ def test_standardize_mapping():
+     dd = collections.defaultdict(list)
+     assert isinstance(com.standardize_mapping(dd), partial)
+-
++@pytest.mark.xfail(reason="deb_nonversioneer_version patch")
+ def test_git_version():
+     # GH 21295
+     git_version = pd.__git_version__
diff --git a/patches/find_test_data.patch b/patches/find_test_data.patch
new file mode 100644 (file)
index 0000000..c2cc156
--- /dev/null
@@ -0,0 +1,56 @@
+Description: Allow tests to use the data files in the source tree
+
+We don't ship these in the package,
+but do want to run the tests that use them
+
+Author: Rebecca N. Palmer <rebecca_palmer@zoho.com>
+Forwarded: not-needed
+
+--- a/pandas/conftest.py
++++ b/pandas/conftest.py
+@@ -23,6 +23,7 @@ from datetime import date, time, timedel
+ from decimal import Decimal
+ import operator
+ import os
++import argparse
+ from dateutil.tz import tzlocal, tzutc
+ import hypothesis
+@@ -70,6 +71,7 @@ def pytest_addoption(parser):
+         action="store_true",
+         help="Fail if a test is skipped for missing data file.",
+     )
++    parser.addoption("--deb-data-root-dir",action="store",help=argparse.SUPPRESS)#for internal use of the Debian CI infrastructure, may change without warning.  Security note: test_pickle can run arbitrary code from this directory
+ def pytest_runtest_setup(item):
+@@ -785,7 +787,7 @@ def strict_data_files(pytestconfig):
+ @pytest.fixture
+-def datapath(strict_data_files):
++def datapath(strict_data_files,pytestconfig):
+     """
+     Get the path to a data file.
+@@ -803,7 +805,9 @@ def datapath(strict_data_files):
+     ValueError
+         If the path doesn't exist and the --strict-data-files option is set.
+     """
+-    BASE_PATH = os.path.join(os.path.dirname(__file__), "tests")
++    BASE_PATH = pytestconfig.getoption("--deb-data-root-dir",default=None)
++    if BASE_PATH is None:
++        BASE_PATH = os.path.join(os.path.dirname(__file__), "tests")
+     def deco(*args):
+         path = os.path.join(BASE_PATH, *args)
+--- a/pandas/tests/util/test_util.py
++++ b/pandas/tests/util/test_util.py
+@@ -57,6 +57,7 @@ def test_datapath_missing(datapath):
+         datapath("not_a_file")
++@pytest.mark.xfail(reason="--deb-data-root-dir intentionally breaks this",strict=False)
+ def test_datapath(datapath):
+     args = ("io", "data", "csv", "iris.csv")
diff --git a/patches/fix_random_seeds.patch b/patches/fix_random_seeds.patch
new file mode 100644 (file)
index 0000000..b6aa639
--- /dev/null
@@ -0,0 +1,35 @@
+Description: Use fixed seeds for reproducible pseudorandomness
+
+Author: Rebecca N. Palmer <rebecca_palmer@zoho.com>
+Forwarded: no
+
+--- a/doc/source/getting_started/comparison/comparison_with_r.rst
++++ b/doc/source/getting_started/comparison/comparison_with_r.rst
+@@ -226,6 +226,7 @@ In ``pandas`` we may use :meth:`~pandas.
+    import random
+    import string
++   random.seed(123456) # for reproducibility
+    baseball = pd.DataFrame(
+        {'team': ["team %d" % (x + 1) for x in range(5)] * 5,
+--- a/doc/source/user_guide/advanced.rst
++++ b/doc/source/user_guide/advanced.rst
+@@ -586,6 +586,7 @@ they need to be sorted. As with any inde
+ .. ipython:: python
+    import random
++   random.seed(123456) # for reproducibility
+    random.shuffle(tuples)
+    s = pd.Series(np.random.randn(8), index=pd.MultiIndex.from_tuples(tuples))
+    s
+--- a/doc/source/user_guide/visualization.rst
++++ b/doc/source/user_guide/visualization.rst
+@@ -991,6 +991,7 @@ are what constitutes the bootstrap plot.
+    :suppress:
+    np.random.seed(123456)
++   random.seed(123456) # for reproducibility - bootstrap_plot uses random.sample
+ .. ipython:: python
diff --git a/patches/fsspec_version.patch b/patches/fsspec_version.patch
new file mode 100644 (file)
index 0000000..3e258d1
--- /dev/null
@@ -0,0 +1,29 @@
+Description: Skip rather than fail tests if fsspec is too old
+
+(which it currently is in Debian)
+
+Author: Rebecca N. Palmer <rebecca_palmer@zoho.com>
+Forwarded: no
+
+--- a/pandas/tests/io/test_fsspec.py
++++ b/pandas/tests/io/test_fsspec.py
+@@ -20,7 +20,7 @@ text = df1.to_csv(index=False).encode()
+ @pytest.fixture
+ def cleared_fs():
+-    fsspec = pytest.importorskip("fsspec")
++    fsspec = pytest.importorskip("fsspec", "0.7.4")
+     memfs = fsspec.filesystem("memory")
+     yield memfs
+--- a/pandas/tests/io/test_pickle.py
++++ b/pandas/tests/io/test_pickle.py
+@@ -455,7 +455,7 @@ def test_pickle_generalurl_read(monkeypa
+         tm.assert_frame_equal(df, result)
+-@td.skip_if_no("fsspec")
++@td.skip_if_no("fsspec", "0.7.4")
+ def test_pickle_fsspec_roundtrip():
+     with tm.ensure_clean():
+         mockurl = "memory://afile"
diff --git a/patches/hurd_compat.patch b/patches/hurd_compat.patch
new file mode 100644 (file)
index 0000000..3513a22
--- /dev/null
@@ -0,0 +1,70 @@
+Description: Avoid test failures on Hurd
+
+Allow multiprocessing to be unavailable
+Accept any errno not just 2 for (intentionally) nonexistent files
+(Hurd appears to use 2**30+2)
+
+Author: Rebecca N. Palmer <rebecca_palmer@zoho.com>
+Forwarded: no
+
+--- a/pandas/tests/io/parser/test_common.py
++++ b/pandas/tests/io/parser/test_common.py
+@@ -961,7 +961,7 @@ def test_nonexistent_path(all_parsers):
+     parser = all_parsers
+     path = f"{tm.rands(10)}.csv"
+-    msg = r"\[Errno 2\]"
++    msg = r"\[Errno 2\]|\[Errno [0-9]+\] No such file or directory"
+     with pytest.raises(FileNotFoundError, match=msg) as e:
+         parser.read_csv(path)
+     assert path == e.value.filename
+--- a/pandas/tests/io/parser/test_multi_thread.py
++++ b/pandas/tests/io/parser/test_multi_thread.py
+@@ -3,7 +3,12 @@ Tests multithreading behaviour for readi
+ parsing files for each parser defined in parsers.py
+ """
+ from io import BytesIO
+-from multiprocessing.pool import ThreadPool
++import pytest
++try:
++    from multiprocessing.pool import ThreadPool
++    ThreadPool()
++except ImportError:
++    pytest.skip("multiprocessing not available",allow_module_level=True)
+ import numpy as np
+ import pytest
+--- a/pandas/tests/test_downstream.py
++++ b/pandas/tests/test_downstream.py
+@@ -30,6 +30,11 @@ def df():
+ def test_dask(df):
++    try:
++        from multiprocessing.pool import ThreadPool
++        ThreadPool()
++    except ImportError:
++        pytest.skip("multiprocessing not available")
+     toolz = import_module("toolz")  # noqa
+     dask = import_module("dask")  # noqa
+--- a/pandas/tests/io/test_common.py
++++ b/pandas/tests/io/test_common.py
+@@ -152,7 +152,7 @@ bar2,12,13,14,15
+         path = os.path.join(HERE, "data", "does_not_exist." + fn_ext)
+         msg1 = fr"File (b')?.+does_not_exist\.{fn_ext}'? does not exist"
+-        msg2 = fr"\[Errno 2\] No such file or directory: '.+does_not_exist\.{fn_ext}'"
++        msg2 = fr"\[Errno [0-9]+\] No such file or directory: '.+does_not_exist\.{fn_ext}'"
+         msg3 = "Expected object or value"
+         msg4 = "path_or_buf needs to be a string file path or file-like"
+         msg5 = (
+@@ -195,7 +195,7 @@ bar2,12,13,14,15
+         monkeypatch.setattr(icom, "_expand_user", lambda x: os.path.join("foo", x))
+         msg1 = fr"File (b')?.+does_not_exist\.{fn_ext}'? does not exist"
+-        msg2 = fr"\[Errno 2\] No such file or directory: '.+does_not_exist\.{fn_ext}'"
++        msg2 = fr"\[Errno [0-9]+\] No such file or directory: '.+does_not_exist\.{fn_ext}'"
+         msg3 = "Unexpected character found when decoding 'false'"
+         msg4 = "path_or_buf needs to be a string file path or file-like"
+         msg5 = (
diff --git a/patches/i386_time_overflow.patch b/patches/i386_time_overflow.patch
new file mode 100644 (file)
index 0000000..65f9bb6
--- /dev/null
@@ -0,0 +1,26 @@
+Description: Avoid year 2038 overflow in test
+
+https://tests.reproducible-builds.org/debian/rbuild/unstable/i386/pandas_1.1.4+dfsg-1.rbuild.log.gz
+
+Author: Rebecca N. Palmer <rebecca_palmer@zoho.com>
+Forwarded: no
+
+--- a/pandas/tests/indexes/datetimes/test_ops.py
++++ b/pandas/tests/indexes/datetimes/test_ops.py
+@@ -2,6 +2,7 @@ from datetime import datetime
+ import numpy as np
+ import pytest
++import sys
+ import pandas as pd
+ from pandas import (
+@@ -122,7 +123,7 @@ class TestDatetimeIndexOps:
+                 "microsecond",
+             ],
+         ):
+-            idx = pd.date_range(start="2013-04-01", periods=30, freq=freq, tz=tz)
++            idx = pd.date_range(start="2013-04-01", periods=10 if (sys.maxsize<2**33 and freq=='A') else 30, freq=freq, tz=tz)
+             assert idx.resolution == expected
+     def test_value_counts_unique(self, tz_naive_fixture):
diff --git a/patches/mathjax-path.patch b/patches/mathjax-path.patch
new file mode 100644 (file)
index 0000000..ff53e2f
--- /dev/null
@@ -0,0 +1,16 @@
+Description: Use Debian packaged mathjax
+
+Author: Andreas Tille <tille@debian.org>
+Forwarded: not-needed
+
+--- a/doc/source/conf.py
++++ b/doc/source/conf.py
+@@ -68,6 +68,8 @@ extensions = [
+     "contributors",  # custom pandas extension
+ ]
++mathjax_path="MathJax.js"
++
+ exclude_patterns = ["**.ipynb_checkpoints"]
+ try:
+     import nbconvert
diff --git a/patches/matplotlib33_compat.patch b/patches/matplotlib33_compat.patch
new file mode 100644 (file)
index 0000000..92ebc4f
--- /dev/null
@@ -0,0 +1,17 @@
+Description: Matplotlib 3.3 compatibility fixup
+
+Author: Rebecca N. Palmer <rebecca_palmer@zoho.com>
+Bug-Debian: https://bugs.debian.org/966393
+Forwarded: no
+
+--- a/pandas/tests/plotting/test_datetimelike.py
++++ b/pandas/tests/plotting/test_datetimelike.py
+@@ -1465,7 +1465,7 @@ class TestTSPlot(TestPlotBase):
+         s2.plot(ax=ax)
+         s1.plot(ax=ax)
+-    @pytest.mark.xfail(reason="GH9053 matplotlib does not use ax.xaxis.converter")
++    @pytest.mark.xfail(reason="GH9053 matplotlib does not use ax.xaxis.converter", strict=False)
+     def test_add_matplotlib_datetime64(self):
+         # GH9053 - ensure that a plot with PeriodConverter still understands
+         # datetime64 data. This still fails because matplotlib overrides the
diff --git a/patches/numba_fail_32bit.patch b/patches/numba_fail_32bit.patch
new file mode 100644 (file)
index 0000000..aa681ac
--- /dev/null
@@ -0,0 +1,123 @@
+Description: Allow some numba errors on non-amd64, warn on non-x86
+
+Specifying the exception type allows only explicit errors,
+not silently wrong answers
+
+Numba has been observed to give wrong answers on mipsel,
+and crash on armel (LLVM ERROR) and s390x (segfault).
+
+Author: Rebecca N. Palmer <rebecca_palmer@zoho.com>
+Forwarded: no
+
+--- a/pandas/tests/window/test_numba.py
++++ b/pandas/tests/window/test_numba.py
+@@ -6,9 +6,18 @@ import pandas.util._test_decorators as t
+ from pandas import Series, option_context
+ import pandas._testing as tm
+ from pandas.core.util.numba_ import NUMBA_FUNC_CACHE
++from pandas.compat import is_platform_32bit, is_platform_little_endian
++import platform
++import sys
++try:
++    from numba.core.errors import UnsupportedParforsError
++except ImportError:
++    UnsupportedParforsError = ImportError
+ @td.skip_if_no("numba", "0.46.0")
++@pytest.mark.xfail(condition=is_platform_32bit(), raises=UnsupportedParforsError, reason="some Numba functionality is not available on 32 bit systems", strict=False)
++@pytest.mark.xfail(condition=not is_platform_little_endian(), reason="Numba may crash on s390x", run=False, strict=False)
+ @pytest.mark.filterwarnings("ignore:\\nThe keyword argument")
+ # Filter warnings when parallel=True and the function can't be parallelized by Numba
+ class TestApply:
+@@ -37,6 +46,7 @@ class TestApply:
+         )
+         tm.assert_series_equal(result, expected)
++    @pytest.mark.xfail(condition='mips' in platform.uname()[4].lower() and sys.maxsize<2**33, reason="Numba may give wrong answers on mipsel", strict=False)
+     @pytest.mark.parametrize("jit", [True, False])
+     def test_cache(self, jit, nogil, parallel, nopython):
+         # Test that the functions are cached correctly if we switch functions
+@@ -78,6 +88,7 @@ class TestApply:
+ @td.skip_if_no("numba", "0.46.0")
++@pytest.mark.xfail(condition=not is_platform_little_endian(), reason="Numba may crash on s390x", run=False, strict=False)
+ def test_use_global_config():
+     def f(x):
+         return np.mean(x) + 2
+--- a/pandas/tests/window/conftest.py
++++ b/pandas/tests/window/conftest.py
+@@ -5,6 +5,7 @@ from numpy.random import randn
+ import pytest
+ import pandas.util._test_decorators as td
++from pandas.compat import is_platform_little_endian
+ from pandas import DataFrame, Series, bdate_range, notna
+@@ -85,7 +86,7 @@ def engine(request):
+ @pytest.fixture(
+     params=[
+-        pytest.param(("numba", True), marks=td.skip_if_no("numba", "0.46.0")),
++        pytest.param(("numba", True), marks=[pytest.mark.xfail(condition=not is_platform_little_endian(), reason="Numba may crash on s390x", run=False, strict=False),td.skip_if_no("numba", "0.46.0")]),
+         ("cython", True),
+         ("cython", False),
+     ]
+--- a/pandas/core/window/numba_.py
++++ b/pandas/core/window/numba_.py
+@@ -4,6 +4,10 @@ import numpy as np
+ from pandas._typing import Scalar
+ from pandas.compat._optional import import_optional_dependency
++import platform
++import re
++import warnings
++warn_numba_platform = "Non-x86 system detected, Numba may give wrong results or crash" if not bool(re.match('i.?86|x86',platform.uname()[4])) else False
+ from pandas.core.util.numba_ import (
+     check_kwargs_and_nopython,
+@@ -49,6 +53,8 @@ def generate_numba_apply_func(
+     numba_func = jit_user_function(func, nopython, nogil, parallel)
+     numba = import_optional_dependency("numba")
++    if warn_numba_platform:
++        warnings.warn(warn_numba_platform)
+     if parallel:
+         loop_range = numba.prange
+--- a/pandas/tests/groupby/transform/test_numba.py
++++ b/pandas/tests/groupby/transform/test_numba.py
+@@ -6,6 +6,7 @@ import pandas.util._test_decorators as t
+ from pandas import DataFrame, option_context
+ import pandas._testing as tm
+ from pandas.core.util.numba_ import NUMBA_FUNC_CACHE
++from pandas.compat import is_platform_little_endian
+ @td.skip_if_no("numba", "0.46.0")
+@@ -41,6 +42,7 @@ def test_check_nopython_kwargs():
+ @td.skip_if_no("numba", "0.46.0")
++@pytest.mark.xfail(condition=not is_platform_little_endian(), reason="Numba may crash on s390x", run=False, strict=False)
+ @pytest.mark.filterwarnings("ignore:\\nThe keyword argument")
+ # Filter warnings when parallel=True and the function can't be parallelized by Numba
+ @pytest.mark.parametrize("jit", [True, False])
+@@ -70,6 +72,7 @@ def test_numba_vs_cython(jit, pandas_obj
+ @td.skip_if_no("numba", "0.46.0")
++@pytest.mark.xfail(condition=not is_platform_little_endian(), reason="Numba may crash on s390x", run=False, strict=False)
+ @pytest.mark.filterwarnings("ignore:\\nThe keyword argument")
+ # Filter warnings when parallel=True and the function can't be parallelized by Numba
+ @pytest.mark.parametrize("jit", [True, False])
+@@ -115,6 +118,7 @@ def test_cache(jit, pandas_obj, nogil, p
+ @td.skip_if_no("numba", "0.46.0")
++@pytest.mark.xfail(condition=not is_platform_little_endian(), reason="Numba may crash on s390x", run=False, strict=False)
+ def test_use_global_config():
+     def func_1(values, index):
+         return values + 1
diff --git a/patches/privacy.patch b/patches/privacy.patch
new file mode 100644 (file)
index 0000000..93a95ec
--- /dev/null
@@ -0,0 +1,20 @@
+Description: Link to rather than embed Google calendar
+
+Author: Rebecca N. Palmer <rebecca_palmer@zoho.com>
+Forwarded: not-needed
+
+--- a/doc/source/development/meeting.rst
++++ b/doc/source/development/meeting.rst
+@@ -16,11 +16,7 @@ The minutes of past meetings are availab
+ Calendar
+ --------
+-This calendar shows all the developer meetings.
+-
+-.. raw:: html
+-
+-   <iframe src="https://calendar.google.com/calendar/embed?src=pgbn14p6poja8a1cf2dv2jhrmg%40group.calendar.google.com" style="border: 0" width="800" height="600" frameborder="0" scrolling="no"></iframe>
++`This calendar <https://calendar.google.com/calendar/embed?src=pgbn14p6poja8a1cf2dv2jhrmg%40group.calendar.google.com>`__ shows all the developer meetings.
+ You can subscribe to this calendar with the following links:
diff --git a/patches/python39_compat.patch b/patches/python39_compat.patch
new file mode 100644 (file)
index 0000000..753cc8f
--- /dev/null
@@ -0,0 +1,22 @@
+Description: Fix pytables expressions with Python 3.9
+
+ast.Index has been replaced by a bare value, so we need to do the
+conversion from Constant to int
+
+Author: Rebecca N. Palmer <rebecca_palmer@zoho.com>
+Bug-Debian: https://bugs.debian.org/972015
+Forwarded: https://github.com/pandas-dev/pandas/issues/37217
+
+--- a/pandas/core/computation/pytables.py
++++ b/pandas/core/computation/pytables.py
+@@ -425,6 +425,10 @@ class PyTablesExprVisitor(BaseExprVisito
+             value = value.value
+         except AttributeError:
+             pass
++        try:
++            slobj = slobj.value
++        except AttributeError:
++            pass
+         if isinstance(slobj, Term):
+             # In py39 np.ndarray lookups with Term containing int raise
diff --git a/patches/remove_ccbysa_snippets.patch b/patches/remove_ccbysa_snippets.patch
new file mode 100644 (file)
index 0000000..84cab8d
--- /dev/null
@@ -0,0 +1,243 @@
+Description: Remove code from Stack Overflow
+
+Stack Overflow content is CC-BY-SA licensed,
+which this package is not supposed to be.  These snippets may be
+too small to be copyrightable, but removing them to be safe.
+
+https://lists.debian.org/debian-legal/2020/04/threads.html#00018
+
+Author: Rebecca N. Palmer <rebecca_palmer@zoho.com>
+Forwarded: no - deletes some tests/examples without replacement
+
+--- /dev/null
++++ b/doc/source/user_guide/cookbook.rst
+@@ -0,0 +1,22 @@
++.. _cookbook:
++
++{{ header }}
++
++.. _cookbook.idioms:
++.. _cookbook.selection:
++.. _cookbook.multi_index:
++.. _cookbook.missing_data:
++.. _cookbook.grouping:
++.. _cookbook.pivot:
++.. _cookbook.resample:
++.. _cookbook.merge:
++.. _cookbook.plotting:
++.. _cookbook.csv:
++.. _cookbook.csv.multiple_files:
++.. _cookbook.sql:
++.. _cookbook.excel:
++.. _cookbook.html:
++.. _cookbook.hdf:
++.. _cookbook.binary:
++
++This page has been removed for copyright reasons.
+--- a/doc/source/user_guide/index.rst
++++ b/doc/source/user_guide/index.rst
+@@ -47,4 +47,3 @@ Further information on any specific meth
+     scale
+     sparse
+     gotchas
+-    cookbook
+--- a/pandas/io/sql.py
++++ b/pandas/io/sql.py
+@@ -1491,14 +1491,14 @@ def _get_valid_sqlite_name(name):
+     # Replace all " with "".
+     # Wrap the entire thing in double quotes.
+-    uname = _get_unicode_name(name)
+-    if not len(uname):
++    name = _get_unicode_name(name)
++    if not len(name):
+         raise ValueError("Empty table or column name specified")
+-    nul_index = uname.find("\x00")
+-    if nul_index >= 0:
++    if '\0' in name:
+         raise ValueError("SQLite identifier cannot contain NULs")
+-    return '"' + uname.replace('"', '""') + '"'
++    name = name.replace('"', '""')
++    return '"' + name + '"'
+ _SAFE_NAMES_WARNING = (
+--- a/pandas/tests/groupby/aggregate/test_other.py
++++ b/pandas/tests/groupby/aggregate/test_other.py
+@@ -24,30 +24,6 @@ from pandas.core.base import Specificati
+ from pandas.io.formats.printing import pprint_thing
+-def test_agg_api():
+-    # GH 6337
+-    # https://stackoverflow.com/questions/21706030/pandas-groupby-agg-function-column-dtype-error
+-    # different api for agg when passed custom function with mixed frame
+-
+-    df = DataFrame(
+-        {
+-            "data1": np.random.randn(5),
+-            "data2": np.random.randn(5),
+-            "key1": ["a", "a", "b", "b", "a"],
+-            "key2": ["one", "two", "one", "two", "one"],
+-        }
+-    )
+-    grouped = df.groupby("key1")
+-
+-    def peak_to_peak(arr):
+-        return arr.max() - arr.min()
+-
+-    expected = grouped.agg([peak_to_peak])
+-    expected.columns = ["data1", "data2"]
+-    result = grouped.agg(peak_to_peak)
+-    tm.assert_frame_equal(result, expected)
+-
+-
+ def test_agg_datetimes_mixed():
+     data = [[1, "2012-01-01", 1.0], [2, "2012-01-02", 2.0], [3, None, 3.0]]
+--- a/pandas/tests/groupby/test_categorical.py
++++ b/pandas/tests/groupby/test_categorical.py
+@@ -828,29 +828,6 @@ def test_groupby_empty_with_category():
+     tm.assert_series_equal(result, expected)
+-def test_sort():
+-
+-    # https://stackoverflow.com/questions/23814368/sorting-pandas-
+-    #        categorical-labels-after-groupby
+-    # This should result in a properly sorted Series so that the plot
+-    # has a sorted x axis
+-    # self.cat.groupby(['value_group'])['value_group'].count().plot(kind='bar')
+-
+-    df = DataFrame({"value": np.random.randint(0, 10000, 100)})
+-    labels = [f"{i} - {i+499}" for i in range(0, 10000, 500)]
+-    cat_labels = Categorical(labels, labels)
+-
+-    df = df.sort_values(by=["value"], ascending=True)
+-    df["value_group"] = pd.cut(
+-        df.value, range(0, 10500, 500), right=False, labels=cat_labels
+-    )
+-
+-    res = df.groupby(["value_group"], observed=False)["value_group"].count()
+-    exp = res[sorted(res.index, key=lambda x: float(x.split()[0]))]
+-    exp.index = CategoricalIndex(exp.index, name=exp.index.name)
+-    tm.assert_series_equal(res, exp)
+-
+-
+ def test_sort2():
+     # dataframe groupby sort was being ignored # GH 8868
+     df = DataFrame(
+--- a/pandas/tests/indexing/multiindex/test_chaining_and_caching.py
++++ b/pandas/tests/indexing/multiindex/test_chaining_and_caching.py
+@@ -6,28 +6,6 @@ import pandas._testing as tm
+ import pandas.core.common as com
+-def test_detect_chained_assignment():
+-    # Inplace ops, originally from:
+-    # https://stackoverflow.com/questions/20508968/series-fillna-in-a-multiindex-dataframe-does-not-fill-is-this-a-bug
+-    a = [12, 23]
+-    b = [123, None]
+-    c = [1234, 2345]
+-    d = [12345, 23456]
+-    tuples = [("eyes", "left"), ("eyes", "right"), ("ears", "left"), ("ears", "right")]
+-    events = {
+-        ("eyes", "left"): a,
+-        ("eyes", "right"): b,
+-        ("ears", "left"): c,
+-        ("ears", "right"): d,
+-    }
+-    multiind = MultiIndex.from_tuples(tuples, names=["part", "side"])
+-    zed = DataFrame(events, index=["a", "b"], columns=multiind)
+-
+-    msg = "A value is trying to be set on a copy of a slice from a DataFrame"
+-    with pytest.raises(com.SettingWithCopyError, match=msg):
+-        zed["eyes"]["right"].fillna(value=555, inplace=True)
+-
+-
+ def test_cache_updating():
+     # 5216
+     # make sure that we don't try to set a dead cache
+--- a/pandas/tests/indexing/multiindex/test_setitem.py
++++ b/pandas/tests/indexing/multiindex/test_setitem.py
+@@ -141,35 +141,7 @@ class TestMultiIndexSetItem:
+         with pytest.raises(TypeError, match=msg):
+             df.loc["bar"] *= 2
+-        # from SO
+-        # https://stackoverflow.com/questions/24572040/pandas-access-the-level-of-multiindex-for-inplace-operation
+-        df_orig = DataFrame.from_dict(
+-            {
+-                "price": {
+-                    ("DE", "Coal", "Stock"): 2,
+-                    ("DE", "Gas", "Stock"): 4,
+-                    ("DE", "Elec", "Demand"): 1,
+-                    ("FR", "Gas", "Stock"): 5,
+-                    ("FR", "Solar", "SupIm"): 0,
+-                    ("FR", "Wind", "SupIm"): 0,
+-                }
+-            }
+-        )
+-        df_orig.index = MultiIndex.from_tuples(
+-            df_orig.index, names=["Sit", "Com", "Type"]
+-        )
+-        expected = df_orig.copy()
+-        expected.iloc[[0, 2, 3]] *= 2
+-
+-        idx = pd.IndexSlice
+-        df = df_orig.copy()
+-        df.loc[idx[:, :, "Stock"], :] *= 2
+-        tm.assert_frame_equal(df, expected)
+-
+-        df = df_orig.copy()
+-        df.loc[idx[:, :, "Stock"], "price"] *= 2
+-        tm.assert_frame_equal(df, expected)
+     def test_multiindex_assignment(self):
+--- a/pandas/tests/indexing/test_chaining_and_caching.py
++++ b/pandas/tests/indexing/test_chaining_and_caching.py
+@@ -287,14 +287,6 @@ class TestChaining:
+         df["column1"] = df["column1"] + "c"
+         str(df)
+-        # from SO:
+-        # https://stackoverflow.com/questions/24054495/potential-bug-setting-value-for-undefined-column-using-iloc
+-        df = DataFrame(np.arange(0, 9), columns=["count"])
+-        df["group"] = "b"
+-
+-        with pytest.raises(com.SettingWithCopyError):
+-            df.iloc[0:5]["group"] = "a"
+-
+         # Mixed type setting but same dtype & changing dtype
+         df = DataFrame(
+             dict(
+--- a/pandas/tests/io/parser/test_common.py
++++ b/pandas/tests/io/parser/test_common.py
+@@ -1077,24 +1077,6 @@ def test_trailing_delimiters(all_parsers
+     tm.assert_frame_equal(result, expected)
+-def test_escapechar(all_parsers):
+-    # https://stackoverflow.com/questions/13824840/feature-request-for-
+-    # pandas-read-csv
+-    data = '''SEARCH_TERM,ACTUAL_URL
+-"bra tv bord","http://www.ikea.com/se/sv/catalog/categories/departments/living_room/10475/?se%7cps%7cnonbranded%7cvardagsrum%7cgoogle%7ctv_bord"
+-"tv p\xc3\xa5 hjul","http://www.ikea.com/se/sv/catalog/categories/departments/living_room/10475/?se%7cps%7cnonbranded%7cvardagsrum%7cgoogle%7ctv_bord"
+-"SLAGBORD, \\"Bergslagen\\", IKEA:s 1700-tals series","http://www.ikea.com/se/sv/catalog/categories/departments/living_room/10475/?se%7cps%7cnonbranded%7cvardagsrum%7cgoogle%7ctv_bord"'''  # noqa
+-
+-    parser = all_parsers
+-    result = parser.read_csv(
+-        StringIO(data), escapechar="\\", quotechar='"', encoding="utf-8"
+-    )
+-
+-    assert result["SEARCH_TERM"][2] == 'SLAGBORD, "Bergslagen", IKEA:s 1700-tals series'
+-
+-    tm.assert_index_equal(result.columns, Index(["SEARCH_TERM", "ACTUAL_URL"]))
+-
+-
+ def test_int64_min_issues(all_parsers):
+     # see gh-2599
+     parser = all_parsers
diff --git a/patches/series b/patches/series
new file mode 100644 (file)
index 0000000..1fc733d
--- /dev/null
@@ -0,0 +1,28 @@
+deb_nonversioneer_version.patch
+deb_doc_donotoverride_PYTHONPATH.patch
+xfail_tests_nonintel_io.patch
+deb_disable_googleanalytics.patch
+deb_no_strict_data.patch
+mathjax-path.patch
+xfail_tests_nonintel_nannat.patch
+skip_noencoding_locales.patch
+use_system_intersphinx.patch
+contributor_list_not_in_tarball.patch
+tests_dont_assume_endian.patch
+fix_random_seeds.patch
+xfail_c_locale.patch
+sphinx_no_pandas_theme.patch
+privacy.patch
+find_test_data.patch
+stable_test_urls.patch
+remove_ccbysa_snippets.patch
+numba_fail_32bit.patch
+hurd_compat.patch
+matplotlib33_compat.patch
+968208_rounding.patch
+fsspec_version.patch
+35080_plot_tests.patch
+skip_test_missing_required_dependency.patch
+python39_compat.patch
+xlrd_976620.patch
+i386_time_overflow.patch
diff --git a/patches/skip_noencoding_locales.patch b/patches/skip_noencoding_locales.patch
new file mode 100644 (file)
index 0000000..cf584d7
--- /dev/null
@@ -0,0 +1,25 @@
+Description: Don't test datetime in locales with no encoding
+
+Some datetime tests run the test in every available locale.
+If this set includes locales without an encoding (currently dsb_DE
+and sah_RU), it fails due to Python bug
+https://bugs.python.org/issue20088
+
+Failure log
+https://tests.reproducible-builds.org/debian/rbuild/buster/amd64/pandas_0.23.3+dfsg-3.rbuild.log.gz
+
+Author: Rebecca N. Palmer <rebecca_palmer@zoho.com>
+Bug: https://github.com/pandas-dev/pandas/issues/20957
+Forwarded: no
+
+--- a/pandas/_config/localization.py
++++ b/pandas/_config/localization.py
+@@ -98,6 +98,8 @@ def _valid_locales(locales, normalize):
+ def _default_locale_getter():
+     raw_locales = subprocess.check_output(["locale -a"], shell=True)
++    # skip locales without encoding, to avoid Python bug https://bugs.python.org/issue20088
++    raw_locales = raw_locales.replace(b'\ndsb_DE\n',b'\n').replace(b'\nsah_RU\n',b'\n').replace(b'\ncrh_UA\n',b'\n')
+     return raw_locales
diff --git a/patches/skip_test_missing_required_dependency.patch b/patches/skip_test_missing_required_dependency.patch
new file mode 100644 (file)
index 0000000..984fd81
--- /dev/null
@@ -0,0 +1,15 @@
+Description: Skip test that fails from outside the source tree
+
+Author: Rebecca N. Palmer <rebecca_palmer@zoho.com>
+Forwarded: not-needed
+
+--- a/pandas/tests/test_downstream.py
++++ b/pandas/tests/test_downstream.py
+@@ -146,6 +146,7 @@ def test_pyarrow(df):
+     tm.assert_frame_equal(result, df)
++@pytest.mark.skip(reason="Fails in an installed package as it can't find pandas")
+ def test_missing_required_dependency():
+     # GH 23868
+     # To ensure proper isolation, we pass these flags
diff --git a/patches/sphinx_no_pandas_theme.patch b/patches/sphinx_no_pandas_theme.patch
new file mode 100644 (file)
index 0000000..0050952
--- /dev/null
@@ -0,0 +1,18 @@
+Description: Don't require the pandas theme
+
+(TODO - package it - here as a multi-upstream-tarball package?)
+
+Author: Rebecca N. Palmer <rebecca_palmer@zoho.com>
+Forwarded: not-needed
+
+--- a/doc/source/conf.py
++++ b/doc/source/conf.py
+@@ -198,7 +198,7 @@ pygments_style = "sphinx"
+ # The theme to use for HTML and HTML Help pages.  Major themes that come with
+ # Sphinx are currently 'default' and 'sphinxdoc'.
+-html_theme = "pydata_sphinx_theme"
++html_theme = "nature"
+ # The style sheet to use for HTML and HTML Help pages. A file of that name
+ # must exist either in Sphinx' static/ path, or in one of the custom paths
diff --git a/patches/stable_test_urls.patch b/patches/stable_test_urls.patch
new file mode 100644 (file)
index 0000000..0d88049
--- /dev/null
@@ -0,0 +1,55 @@
+Description: Use test URLs that are less likely to disappear
+
+Avoid 404 errors in stable when upstream reorganize the test data
+(happened to two of these in 0.25 -> 1.0).
+
+It is _not_ necessary to update the tag version on every package release,
+only if these tests fail because they expect moved/changed data.
+
+Author: Rebecca N. Palmer <rebecca_palmer@zoho.com>
+Forwarded: not-needed
+
+--- a/pandas/tests/io/excel/test_readers.py
++++ b/pandas/tests/io/excel/test_readers.py
+@@ -636,7 +636,7 @@ class TestReaders:
+     @tm.network
+     def test_read_from_http_url(self, read_ext):
+         url = (
+-            "https://raw.githubusercontent.com/pandas-dev/pandas/master/"
++            "https://raw.githubusercontent.com/pandas-dev/pandas/v1.0.3/"
+             "pandas/tests/io/data/excel/test1" + read_ext
+         )
+         url_table = pd.read_excel(url)
+--- a/pandas/tests/io/parser/test_common.py
++++ b/pandas/tests/io/parser/test_common.py
+@@ -911,7 +911,7 @@ def test_url(all_parsers, csv_dir_path):
+     kwargs = dict(sep="\t")
+     url = (
+-        "https://raw.github.com/pandas-dev/pandas/master/"
++        "https://github.com/pandas-dev/pandas/raw/v1.0.3/"
+         "pandas/tests/io/parser/data/salaries.csv"
+     )
+     url_result = parser.read_csv(url, **kwargs)
+--- a/pandas/tests/io/parser/test_network.py
++++ b/pandas/tests/io/parser/test_network.py
+@@ -33,7 +33,7 @@ def check_compressed_urls(salaries_table
+     # test reading compressed urls with various engines and
+     # extension inference
+     base_url = (
+-        "https://github.com/pandas-dev/pandas/raw/master/"
++        "https://github.com/pandas-dev/pandas/raw/v1.0.3/"
+         "pandas/tests/io/parser/data/salaries.csv"
+     )
+--- a/pandas/tests/io/test_html.py
++++ b/pandas/tests/io/test_html.py
+@@ -147,7 +147,7 @@ class TestReadHtml:
+     @tm.network
+     def test_spam_url(self):
+         url = (
+-            "https://raw.githubusercontent.com/pandas-dev/pandas/master/"
++            "https://raw.githubusercontent.com/pandas-dev/pandas/v1.0.3/"
+             "pandas/tests/io/data/html/spam.html"
+         )
+         df1 = self.read_html(url, match=".*Water.*")
diff --git a/patches/tests_dont_assume_endian.patch b/patches/tests_dont_assume_endian.patch
new file mode 100644 (file)
index 0000000..d54e5c7
--- /dev/null
@@ -0,0 +1,119 @@
+Description: Fix or skip tests that assume the wrong endianness
+
+This is a bug in the tests not pandas itself -
+the expected values explicitly specify little-endian
+
+Author: Rebecca N. Palmer <rebecca_palmer@zoho.com>
+Forwarded: no
+
+--- a/pandas/tests/frame/methods/test_to_records.py
++++ b/pandas/tests/frame/methods/test_to_records.py
+@@ -12,6 +12,7 @@ from pandas import (
+     date_range,
+ )
+ import pandas._testing as tm
++from pandas.compat import is_platform_little_endian
+ class TestDataFrameToRecords:
+@@ -257,6 +258,7 @@ class TestDataFrameToRecords:
+             ),
+         ],
+     )
++    @pytest.mark.xfail(condition=not is_platform_little_endian(),reason="expected values assume little-endian",strict=False)
+     def test_to_records_dtype(self, kwargs, expected):
+         # see GH#18146
+         df = DataFrame({"A": [1, 2], "B": [0.2, 1.5], "C": ["a", "bc"]})
+@@ -330,11 +332,13 @@ class TestDataFrameToRecords:
+             ),
+         ],
+     )
++    @pytest.mark.xfail(condition=not is_platform_little_endian(),reason="expected values assume little-endian",strict=False)
+     def test_to_records_dtype_mi(self, df, kwargs, expected):
+         # see GH#18146
+         result = df.to_records(**kwargs)
+         tm.assert_almost_equal(result, expected)
++    @pytest.mark.xfail(condition=not is_platform_little_endian(),reason="expected values assume little-endian",strict=False)
+     def test_to_records_dict_like(self):
+         # see GH#18146
+         class DictLike:
+--- a/pandas/tests/scalar/timedelta/test_arithmetic.py
++++ b/pandas/tests/scalar/timedelta/test_arithmetic.py
+@@ -285,7 +285,7 @@ class TestTimedeltaAdditionSubtraction:
+         tm.assert_numpy_array_equal(np.array([2]) * td, expected)
+         msg = (
+             "ufunc '?multiply'? cannot use operands with types "
+-            r"dtype\('<m8\[ns\]'\) and dtype\('<m8\[ns\]'\)"
++            r"dtype\('[<>]m8\[ns\]'\) and dtype\('[<>]m8\[ns\]'\)"
+         )
+         with pytest.raises(TypeError, match=msg):
+             td * other
+--- a/pandas/tests/io/parser/test_c_parser_only.py
++++ b/pandas/tests/io/parser/test_c_parser_only.py
+@@ -129,7 +129,7 @@ nan 2
+             "the dtype timedelta64 is not supported for parsing",
+             dict(dtype={"A": "timedelta64", "B": "float64"}),
+         ),
+-        ("the dtype <U8 is not supported for parsing", dict(dtype={"A": "U8"})),
++        ("the dtype [<>]U8 is not supported for parsing", dict(dtype={"A": "U8"})),
+     ],
+     ids=["dt64-0", "dt64-1", "td64", "<U8"],
+ )
+--- a/pandas/tests/arrays/boolean/test_construction.py
++++ b/pandas/tests/arrays/boolean/test_construction.py
+@@ -5,6 +5,7 @@ import pandas as pd
+ import pandas._testing as tm
+ from pandas.arrays import BooleanArray
+ from pandas.core.arrays.boolean import coerce_to_array
++from pandas.compat import is_platform_little_endian
+ @pytest.fixture
+@@ -278,7 +279,7 @@ def test_to_numpy(box):
+     arr = con([True, False, None], dtype="boolean")
+     result = arr.to_numpy(dtype="str")
+-    expected = np.array([True, False, pd.NA], dtype="<U5")
++    expected = np.array([True, False, pd.NA], dtype="<U5" if is_platform_little_endian() else ">U5")
+     tm.assert_numpy_array_equal(result, expected)
+     # no missing values -> can convert to bool, otherwise raises
+--- a/pandas/tests/arrays/boolean/test_astype.py
++++ b/pandas/tests/arrays/boolean/test_astype.py
+@@ -3,6 +3,7 @@ import pytest
+ import pandas as pd
+ import pandas._testing as tm
++from pandas.compat import is_platform_little_endian
+ def test_astype():
+@@ -20,7 +21,7 @@ def test_astype():
+     tm.assert_numpy_array_equal(result, expected)
+     result = arr.astype("str")
+-    expected = np.array(["True", "False", "<NA>"], dtype="<U5")
++    expected = np.array(["True", "False", "<NA>"], dtype="<U5" if is_platform_little_endian() else ">U5")
+     tm.assert_numpy_array_equal(result, expected)
+     # no missing values
+--- a/pandas/tests/arrays/integer/test_dtypes.py
++++ b/pandas/tests/arrays/integer/test_dtypes.py
+@@ -2,6 +2,7 @@ import numpy as np
+ import pytest
+ from pandas.core.dtypes.generic import ABCIndexClass
++from pandas.compat import is_platform_little_endian
+ import pandas as pd
+ import pandas._testing as tm
+@@ -275,7 +276,7 @@ def test_to_numpy_na_raises(dtype):
+ def test_astype_str():
+     a = pd.array([1, 2, None], dtype="Int64")
+-    expected = np.array(["1", "2", "<NA>"], dtype="<U21")
++    expected = np.array(["1", "2", "<NA>"], dtype="<U21" if is_platform_little_endian() else ">U21")
+     tm.assert_numpy_array_equal(a.astype(str), expected)
+     tm.assert_numpy_array_equal(a.astype("str"), expected)
diff --git a/patches/use_system_intersphinx.patch b/patches/use_system_intersphinx.patch
new file mode 100644 (file)
index 0000000..29c008a
--- /dev/null
@@ -0,0 +1,29 @@
+Description: Use packaged intersphinx indexes
+
+Author: Rebecca N. Palmer <rebecca_palmer@zoho.com>
+Bug-Debian: https://bugs.debian.org/876417
+Forwarded: not-needed
+
+--- a/doc/source/conf.py
++++ b/doc/source/conf.py
+@@ -411,13 +411,13 @@ latex_documents = [
+ if pattern is None:
+     intersphinx_mapping = {
+         "dateutil": ("https://dateutil.readthedocs.io/en/latest/", None),
+-        "matplotlib": ("https://matplotlib.org/", None),
+-        "numpy": ("https://numpy.org/doc/stable/", None),
+-        "pandas-gbq": ("https://pandas-gbq.readthedocs.io/en/latest/", None),
+-        "py": ("https://pylib.readthedocs.io/en/latest/", None),
+-        "python": ("https://docs.python.org/3/", None),
+-        "scipy": ("https://docs.scipy.org/doc/scipy/reference/", None),
+-        "statsmodels": ("https://www.statsmodels.org/devel/", None),
++    "matplotlib": ("https://matplotlib.org/", "/usr/share/doc/python-matplotlib-doc/html/objects.inv"),
++    "numpy": ("https://numpy.org/doc/stable/", "/usr/share/doc/python-numpy-doc/html/objects.inv"),
++    "pandas-gbq": ("https://pandas-gbq.readthedocs.io/en/latest/", None), # not in Debian
++    "py": ("https://pylib.readthedocs.io/en/latest/", None), # no -doc in Debian
++    "python": ("https://docs.python.org/3/", "/usr/share/doc/python3-doc/html/objects.inv"),
++    "scipy": ("https://docs.scipy.org/doc/scipy/reference/", ("/usr/share/doc/python-scipy-doc/html/objects.inv","/usr/share/doc/python-scipy/html/objects.inv")),
++    "statsmodels": ("https://www.statsmodels.org/devel/", "/usr/share/doc/python-statsmodels-doc/html/objects.inv"),
+         "pyarrow": ("https://arrow.apache.org/docs/", None),
+     }
diff --git a/patches/xfail_c_locale.patch b/patches/xfail_c_locale.patch
new file mode 100644 (file)
index 0000000..518704a
--- /dev/null
@@ -0,0 +1,15 @@
+Description: Xfail a test that doesn't work in the C locale
+
+Author: Rebecca N. Palmer <rebecca_palmer@zoho.com>
+Forwarded: no
+
+--- a/pandas/tests/config/test_localization.py
++++ b/pandas/tests/config/test_localization.py
+@@ -95,6 +95,7 @@ def test_set_locale(lang, enc):
+     assert current_locale == _current_locale
++@pytest.mark.xfail(strict=False,reason="fails in C locale")
+ def test_encoding_detected():
+     system_locale = os.environ.get("LC_ALL")
+     system_encoding = system_locale.split(".")[-1] if system_locale else "utf-8"
diff --git a/patches/xfail_tests_nonintel_io.patch b/patches/xfail_tests_nonintel_io.patch
new file mode 100644 (file)
index 0000000..0dce0d6
--- /dev/null
@@ -0,0 +1,250 @@
+Description: HDF5 and Stata I/O are broken on some architectures
+
+Fix some issues, warn on use and xfail tests for the remainder
+
+armhf TestHDF5Store::test*encoding only sometimes crashes
+(1.1.3+dfsg-1 passed on build but failed autopkgtest)
+
+HDF5 and Stata are known to fail on big-endian architectures
+Stata also fails on qemu-ppc64el, but not real ppc64el
+
+Author: Andreas Tille <tille@debian.org>, Graham Inggs <ginggs@debian.org>, Yaroslav Halchenko <debian@onerussian.com>, Rebecca N. Palmer <rebecca_palmer@zoho.com>
+Bug-Debian: https://bugs.debian.org/877419
+Forwarded: no
+
+--- a/pandas/io/pytables.py
++++ b/pandas/io/pytables.py
+@@ -9,6 +9,10 @@ import os
+ import re
+ from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Type, Union
+ import warnings
++import platform
++import re
++from pandas.compat import is_platform_little_endian
++warn_hdf_platform = "Non-x86 system detected, HDF(5) format I/O may give wrong results (particularly on files created with older versions) or crash - https://bugs.debian.org/877419" if not bool(re.match('i.?86|x86',platform.uname()[4])) else False
+ import numpy as np
+@@ -527,6 +531,8 @@ class HDFStore:
+         fletcher32: bool = False,
+         **kwargs,
+     ):
++        if warn_hdf_platform:
++            warnings.warn(warn_hdf_platform)
+         if "format" in kwargs:
+             raise ValueError("format is not a defined argument for HDFStore")
+@@ -766,7 +772,10 @@ class HDFStore:
+             self._handle.flush()
+             if fsync:
+                 try:
+-                    os.fsync(self._handle.fileno())
++                    if is_platform_little_endian():
++                        os.fsync(self._handle.fileno())
++                    else:
++                        os.sync() # due to a pytables bad-cast bug, fileno is invalid on 64-bit big-endian
+                 except OSError:
+                     pass
+--- a/pandas/io/stata.py
++++ b/pandas/io/stata.py
+@@ -29,6 +29,9 @@ from typing import (
+     Union,
+ )
+ import warnings
++import platform
++import re
++warn_stata_platform = "Non-x86 system detected, Stata format I/O may give wrong results (particularly on strings) - https://bugs.debian.org/877419" if not bool(re.match('i.?86|x86',platform.uname()[4])) else False
+ from dateutil.relativedelta import relativedelta
+ import numpy as np
+@@ -875,6 +878,8 @@ class StataParser:
+         # NOTE: the byte type seems to be reserved for categorical variables
+         # with a label, but the underlying variable is -127 to 100
+         # we're going to drop the label and cast to int
++        if warn_stata_platform:
++            warnings.warn(warn_stata_platform)
+         self.DTYPE_MAP = dict(
+             list(zip(range(1, 245), [np.dtype("a" + str(i)) for i in range(1, 245)]))
+             + [
+--- a/pandas/tests/io/pytables/test_store.py
++++ b/pandas/tests/io/pytables/test_store.py
+@@ -54,6 +54,10 @@ from pandas.io.pytables import (
+ from pandas.io import pytables as pytables  # noqa: E402 isort:skip
+ from pandas.io.pytables import TableIterator  # noqa: E402 isort:skip
++import platform
++import re
++import sys
++is_crashing_arch=bool((platform.uname()[4].startswith('arm') or platform.uname()[4].startswith('aarch')) and sys.maxsize<2**33) # meant for armhf, though this form will also skip on armel - uname = kernel arch
+ _default_compressor = "blosc"
+@@ -1088,6 +1092,7 @@ class TestHDFStore:
+             check("table", index)
+             check("fixed", index)
++    @pytest.mark.xfail(condition=is_crashing_arch,reason="https://bugs.debian.org/790925",strict=False,run=False)
+     @pytest.mark.skipif(
+         not is_platform_little_endian(), reason="reason platform is not little endian"
+     )
+@@ -1120,6 +1125,7 @@ class TestHDFStore:
+         ],
+     )
+     @pytest.mark.parametrize("dtype", ["category", object])
++    @pytest.mark.xfail(condition=is_crashing_arch,reason="https://bugs.debian.org/790925",strict=False,run=False)
+     def test_latin_encoding(self, setup_path, dtype, val):
+         enc = "latin-1"
+         nan_rep = ""
+@@ -1305,6 +1311,7 @@ class TestHDFStore:
+                 # still read from it.
+                 pd.read_hdf(store, "k1")
++    @pytest.mark.xfail(condition=is_crashing_arch,reason="https://bugs.debian.org/790925",strict=False,run=False)
+     def test_append_frame_column_oriented(self, setup_path):
+         with ensure_clean_store(setup_path) as store:
+@@ -3921,6 +3928,7 @@ class TestHDFStore:
+             df.iloc[3:5, 1:3] = np.nan
+             df.iloc[8:10, -2] = np.nan
++    @pytest.mark.xfail(condition=is_crashing_arch,reason="https://bugs.debian.org/790925",strict=False,run=False)
+     def test_select_filter_corner(self, setup_path):
+         df = DataFrame(np.random.randn(50, 100))
+@@ -4177,6 +4185,7 @@ class TestHDFStore:
+             assert isinstance(d1, DataFrame)
+     @td.xfail_non_writeable
++    @pytest.mark.xfail(condition=not is_platform_little_endian(),reason="known failure of hdf on non-little endian",strict=False,raises=AttributeError)
+     def test_legacy_table_fixed_format_read_py2(self, datapath, setup_path):
+         # GH 24510
+         # legacy table with fixed format written in Python 2
+@@ -4191,6 +4200,7 @@ class TestHDFStore:
+             )
+             tm.assert_frame_equal(expected, result)
++    @pytest.mark.xfail(condition=not is_platform_little_endian(),reason="known failure of hdf on non-little endian",strict=False,raises=AttributeError)
+     def test_legacy_table_fixed_format_read_datetime_py2(self, datapath, setup_path):
+         # GH 31750
+         # legacy table with fixed format and datetime64 column written in Python 2
+@@ -4870,6 +4880,7 @@ class TestHDFStore:
+             with pd.HDFStore(path) as store:
+                 assert os.fspath(store) == str(path)
++    @pytest.mark.xfail(condition=not is_platform_little_endian(),reason="known failure of hdf on non-little endian",strict=False,raises=AttributeError)
+     def test_read_py2_hdf_file_in_py3(self, datapath):
+         # GH 16781
+--- a/pandas/tests/io/test_stata.py
++++ b/pandas/tests/io/test_stata.py
+@@ -29,6 +29,8 @@ from pandas.io.stata import (
+     read_stata,
+ )
++from pandas.compat import is_platform_little_endian
++pytestmark = pytest.mark.xfail(condition=not is_platform_little_endian(),reason="known failure of test_stata on non-little endian",strict=False)
+ @pytest.fixture()
+ def mixed_frame():
+@@ -203,7 +205,7 @@ class TestStata:
+             # parsed_113 = self.read_dta(self.dta2_113)
+             # Remove resource warnings
+-            w = [x for x in w if x.category is UserWarning]
++            w = [x for x in w if x.category is UserWarning and not "Non-x86 system detected" in str(x.message)]
+             # should get warning for each call to read_dta
+             assert len(w) == 3
+@@ -465,7 +467,7 @@ class TestStata:
+                 warnings.simplefilter("always", InvalidColumnName)
+                 original.to_stata(path, None, version=version)
+                 # should get a warning for that format.
+-                assert len(w) == 1
++                assert len([x for x in w if not "Non-x86 system detected" in str(x.message)]) == 1
+             written_and_read_again = self.read_dta(path)
+             tm.assert_frame_equal(written_and_read_again.set_index("index"), formatted)
+@@ -1788,8 +1790,9 @@ has been incorrectly encoded by Stata or
+ the string values returned are correct."""
+         with tm.assert_produces_warning(UnicodeWarning) as w:
+             encoded = read_stata(self.dta_encoding_118)
+-            assert len(w) == 151
+-            assert w[0].message.args[0] == msg
++            w2 = [x for x in w if not "Non-x86 system detected" in str(x.message)]
++            assert len(w2) == 151
++            assert w2[0].message.args[0] == msg
+         expected = pd.DataFrame([["Düsseldorf"]] * 151, columns=["kreis1849"])
+         tm.assert_frame_equal(encoded, expected)
+--- a/pandas/_testing.py
++++ b/pandas/_testing.py
+@@ -6,6 +6,8 @@ from functools import wraps
+ import gzip
+ import operator
+ import os
++import platform
++import re
+ from shutil import rmtree
+ import string
+ import tempfile
+@@ -2612,6 +2614,8 @@ def assert_produces_warning(
+                     )
+                     assert actual_warning.filename == caller.filename, msg
+             else:
++                if actual_warning.category==UserWarning and "Non-x86 system detected" in str(actual_warning.message) and not bool(re.match('i.?86|x86',platform.uname()[4])):
++                    continue
+                 extra_warnings.append(
+                     (
+                         actual_warning.category.__name__,
+--- a/pandas/tests/io/pytables/test_timezones.py
++++ b/pandas/tests/io/pytables/test_timezones.py
+@@ -4,6 +4,7 @@ import numpy as np
+ import pytest
+ import pandas.util._test_decorators as td
++from pandas.compat import is_platform_little_endian
+ import pandas as pd
+ from pandas import DataFrame, DatetimeIndex, Series, Timestamp, date_range
+@@ -311,6 +312,7 @@ def test_store_timezone(setup_path):
+         tm.assert_frame_equal(result, df)
++@pytest.mark.xfail(condition=not is_platform_little_endian(),reason="known failure of hdf on non-little endian",strict=False,raises=AttributeError)
+ def test_legacy_datetimetz_object(datapath, setup_path):
+     # legacy from < 0.17.0
+     # 8260
+@@ -362,6 +364,7 @@ def test_read_with_where_tz_aware_index(
+         tm.assert_frame_equal(result, expected)
++@pytest.mark.xfail(condition=not is_platform_little_endian(),reason="known failure of hdf on non-little endian",strict=False,raises=AttributeError)
+ def test_py2_created_with_datetimez(datapath, setup_path):
+     # The test HDF5 file was created in Python 2, but could not be read in
+     # Python 3.
+--- a/pandas/tests/io/test_common.py
++++ b/pandas/tests/io/test_common.py
+@@ -8,7 +8,7 @@ from pathlib import Path
+ import pytest
+-from pandas.compat import is_platform_windows
++from pandas.compat import is_platform_windows, is_platform_little_endian
+ import pandas.util._test_decorators as td
+ import pandas as pd
+@@ -230,11 +230,11 @@ bar2,12,13,14,15
+                 "pyarrow",
+                 ("io", "data", "feather", "feather-0_3_1.feather"),
+             ),
+-            (
++            pytest.param(
+                 pd.read_hdf,
+                 "tables",
+                 ("io", "data", "legacy_hdf", "datetimetz_object.h5"),
+-            ),
++            marks=pytest.mark.xfail(condition=not is_platform_little_endian(),reason="known failure of hdf on non-little endian",strict=False,raises=AttributeError)),
+             (pd.read_stata, "os", ("io", "data", "stata", "stata10_115.dta")),
+             (pd.read_sas, "os", ("io", "sas", "data", "test1.sas7bdat")),
+             (pd.read_json, "os", ("io", "json", "data", "tsframe_v012.json")),
diff --git a/patches/xfail_tests_nonintel_nannat.patch b/patches/xfail_tests_nonintel_nannat.patch
new file mode 100644 (file)
index 0000000..7e411f5
--- /dev/null
@@ -0,0 +1,194 @@
+Description: Xfail NaN <-> NaT tests on non-x86 and warn on cast
+
+pd.Series([np.nan]).astype('datetime64[ns]')[0] = pd.NaT on x86
+but 1970-01-01 on arm* because float NaN -> int is undefined:
+https://github.com/numpy/numpy/issues/8325
+https://github.com/pandas-dev/pandas/issues/17792
+https://github.com/pandas-dev/pandas/issues/26964
+
+On s390x it's the maximum _positive_ value (2**63-1 ns = year 2262)
+
+Author: Andreas Tille <tille@debian.org>, Graham Inggs <ginggs@debian.org>, Rebecca N. Palmer <rebecca_palmer@zoho.com>
+Bug-Debian: https://bugs.debian.org/877754
+Forwarded: no
+
+--- a/pandas/core/dtypes/cast.py
++++ b/pandas/core/dtypes/cast.py
+@@ -4,6 +4,10 @@ Routines for casting.
+ from datetime import date, datetime, timedelta
+ from typing import TYPE_CHECKING, Any, List, Optional, Tuple, Type
++import warnings
++import platform
++import re
++warn_nannat_platform = "Non-x86 system detected, float -> datetime/timedelta may not handle NaNs correctly - https://bugs.debian.org/877754" if not bool(re.match('i.?86|x86',platform.uname()[4])) else False
+ import numpy as np
+@@ -991,6 +995,8 @@ def astype_nansafe(arr, dtype, copy: boo
+             f"'{dtype.name}[ns]' instead."
+         )
+         raise ValueError(msg)
++    if warn_nannat_platform and (is_datetime64_dtype(dtype) or is_timedelta64_dtype(dtype)) and np.issubdtype(arr.dtype, np.floating) and not np.isfinite(arr).all():
++        warnings.warn(warn_nannat_platform)
+     if copy or is_object_dtype(arr) or is_object_dtype(dtype):
+         # Explicit copy, or required since NumPy can't view from / to object.
+@@ -1367,6 +1373,8 @@ def maybe_cast_to_datetime(value, dtype,
+                     value = iNaT
+             elif not is_sparse(value):
+                 value = np.array(value, copy=False)
++                if warn_nannat_platform and np.issubdtype(value.dtype, np.floating) and not np.isfinite(value).all():
++                    warnings.warn(warn_nannat_platform)
+                 # have a scalar array-like (e.g. NaT)
+                 if value.ndim == 0:
+--- a/pandas/tests/dtypes/cast/test_downcast.py
++++ b/pandas/tests/dtypes/cast/test_downcast.py
+@@ -7,6 +7,9 @@ from pandas.core.dtypes.cast import mayb
+ from pandas import DatetimeIndex, Series, Timestamp
+ import pandas._testing as tm
++import platform
++import re
++is_nannat_working=bool(re.match('i.?86|x86',platform.uname()[4]))
+ @pytest.mark.parametrize(
+@@ -77,6 +80,7 @@ def test_downcast_conversion_empty(any_r
+     tm.assert_numpy_array_equal(result, np.array([], dtype=np.int64))
++@pytest.mark.xfail(condition=not is_nannat_working,reason="https://bugs.debian.org/877754",strict=False)
+ @pytest.mark.parametrize("klass", [np.datetime64, np.timedelta64])
+ def test_datetime_likes_nan(klass):
+     dtype = klass.__name__ + "[ns]"
+--- a/pandas/tests/frame/indexing/test_where.py
++++ b/pandas/tests/frame/indexing/test_where.py
+@@ -8,6 +8,9 @@ from pandas.core.dtypes.common import is
+ import pandas as pd
+ from pandas import DataFrame, DatetimeIndex, Series, Timestamp, date_range, isna
+ import pandas._testing as tm
++import platform
++import re
++is_nannat_working=bool(re.match('i.?86|x86|s390|ppc',platform.uname()[4]))
+ @pytest.fixture(params=["default", "float_string", "mixed_float", "mixed_int"])
+@@ -352,6 +355,7 @@ class TestDataFrameIndexingWhere:
+         result = a.where(do_not_replace, b)
+         tm.assert_frame_equal(result, expected)
++    @pytest.mark.xfail(condition=not is_nannat_working,reason="https://bugs.debian.org/877754",strict=False)#not found
+     def test_where_datetime(self):
+         # GH 3311
+--- a/pandas/tests/frame/test_analytics.py
++++ b/pandas/tests/frame/test_analytics.py
+@@ -23,6 +23,9 @@ from pandas import (
+ import pandas._testing as tm
+ import pandas.core.algorithms as algorithms
+ import pandas.core.nanops as nanops
++import platform
++import re
++is_nannat_working=bool(re.match('i.?86|x86|s390|ppc',platform.uname()[4]))
+ def assert_stat_op_calc(
+@@ -802,6 +805,7 @@ class TestDataFrameAnalytics:
+         expected = pd.Series(result, index=["A", "B"])
+         tm.assert_series_equal(result, expected)
++    @pytest.mark.xfail(condition=not is_nannat_working,reason="https://bugs.debian.org/877754",strict=False)
+     def test_sum_nanops_timedelta(self):
+         # prod isn't defined on timedeltas
+         idx = ["a", "b", "c"]
+--- a/pandas/tests/indexes/datetimes/test_datetime.py
++++ b/pandas/tests/indexes/datetimes/test_datetime.py
+@@ -7,6 +7,9 @@ import pytest
+ import pandas as pd
+ from pandas import DataFrame, DatetimeIndex, Index, Timestamp, date_range, offsets
+ import pandas._testing as tm
++import platform
++import re
++is_nannat_working=bool(re.match('i.?86|x86|s390|ppc',platform.uname()[4]))
+ randn = np.random.randn
+@@ -95,6 +98,7 @@ class TestDatetimeIndex:
+         idx2 = pd.date_range(end="2000", periods=periods, freq="S")
+         assert len(idx2) == periods
++    @pytest.mark.xfail(condition=not is_nannat_working,reason="https://bugs.debian.org/877754",strict=False)
+     def test_nat(self):
+         assert DatetimeIndex([np.nan])[0] is pd.NaT
+--- a/pandas/tests/reductions/test_reductions.py
++++ b/pandas/tests/reductions/test_reductions.py
+@@ -23,6 +23,9 @@ from pandas import (
+ )
+ import pandas._testing as tm
+ from pandas.core import nanops
++import platform
++import re
++is_nannat_working=bool(re.match('i.?86|x86|s390|ppc',platform.uname()[4]))
+ def get_objs():
+@@ -1199,6 +1202,7 @@ class TestSeriesMode:
+         expected = Series(expected2, dtype=object)
+         tm.assert_series_equal(result, expected)
++    @pytest.mark.xfail(condition=not is_nannat_working,reason="https://bugs.debian.org/877754",strict=False)
+     @pytest.mark.parametrize(
+         "dropna, expected1, expected2",
+         [
+--- a/pandas/tests/series/test_constructors.py
++++ b/pandas/tests/series/test_constructors.py
+@@ -27,7 +27,9 @@ from pandas import (
+ )
+ import pandas._testing as tm
+ from pandas.core.arrays import IntervalArray, period_array
+-
++import platform
++import re
++is_nannat_working=bool(re.match('i.?86|x86|s390|ppc',platform.uname()[4]))
+ class TestSeriesConstructors:
+     @pytest.mark.parametrize(
+@@ -959,6 +961,7 @@ class TestSeriesConstructors:
+         tm.assert_series_equal(result, expected)
++    @pytest.mark.xfail(condition=not is_nannat_working,reason="https://bugs.debian.org/877754",strict=False)
+     @pytest.mark.parametrize("arg", ["2013-01-01 00:00:00", pd.NaT, np.nan, None])
+     def test_constructor_with_naive_string_and_datetimetz_dtype(self, arg):
+         # GH 17415: With naive string
+@@ -1289,6 +1292,7 @@ class TestSeriesConstructors:
+         series[2] = val
+         assert isna(series[2])
++    @pytest.mark.xfail(condition=not is_nannat_working,reason="https://bugs.debian.org/877754",strict=False)
+     def test_NaT_cast(self):
+         # GH10747
+         result = Series([np.nan]).astype("M8[ns]")
+--- a/pandas/tests/test_algos.py
++++ b/pandas/tests/test_algos.py
+@@ -34,6 +34,9 @@ import pandas._testing as tm
+ import pandas.core.algorithms as algos
+ from pandas.core.arrays import DatetimeArray
+ import pandas.core.common as com
++import platform
++import re
++is_nannat_working=bool(re.match('i.?86|x86|s390|ppc',platform.uname()[4]))
+ class TestFactorize:
+@@ -1144,6 +1147,7 @@ class TestValueCounts:
+             expected = Series([2, 1, 1], index=[5.0, 10.3, np.nan])
+             tm.assert_series_equal(result, expected)
++    @pytest.mark.xfail(condition=not is_nannat_working,reason="https://bugs.debian.org/877754",strict=False)
+     def test_value_counts_normalized(self):
+         # GH12558
+         s = Series([1, 2, np.nan, np.nan, np.nan])
diff --git a/patches/xlrd_976620.patch b/patches/xlrd_976620.patch
new file mode 100644 (file)
index 0000000..864ecf7
--- /dev/null
@@ -0,0 +1,296 @@
+Description: Default to openpyxl not xlrd for read_excel
+
+xlrd 1.2 fails if defusedxml (needed for odf) is installed
+
+Bug: https://github.com/pandas-dev/pandas/pull/35029
+Bug-Debian: https://bugs.debian.org/976620
+Origin: upstream b3a3932af6aafaa2fd41f17e9b7995643e5f92eb
+Author: Robert de Vries, Rebecca N. Palmer <rebecca_palmer@zoho.com>
+Forwarded: not-needed
+
+--- a/doc/source/whatsnew/v1.1.5.rst
++++ b/doc/source/whatsnew/v1.1.5.rst
+@@ -8,6 +8,16 @@ including other versions of pandas.
+ {{ header }}
++.. warning::
++
++   Previously, the default argument ``engine=None`` to ``pd.read_excel``
++   would result in using the `xlrd <https://xlrd.readthedocs.io/en/latest/>`_ engine in
++   many cases. The engine ``xlrd`` is no longer maintained, and may not work if ``defusedxml``
++   is installed.  Hence, from version 1.1.5 in Debian and 1.2.0 upstream,
++   if `openpyxl <https://pypi.org/project/openpyxl/>`_  is installed,
++   many of these  cases will now default to using the ``openpyxl`` engine. See the
++   :func:`read_excel` documentation for more details.
++
+ .. ---------------------------------------------------------------------------
+ .. _whatsnew_115.regressions:
+--- a/pandas/io/excel/_base.py
++++ b/pandas/io/excel/_base.py
+@@ -1,13 +1,16 @@
+ import abc
+ import datetime
++import inspect
+ from io import BufferedIOBase, BytesIO, RawIOBase
+ import os
+ from textwrap import fill
+ from typing import Union
++import warnings
+ from pandas._config import config
+ from pandas._libs.parsers import STR_NA_VALUES
++from pandas.compat._optional import import_optional_dependency
+ from pandas.errors import EmptyDataError
+ from pandas.util._decorators import Appender, deprecate_nonkeyword_arguments
+@@ -104,12 +107,32 @@ dtype : Type name or dict of column -> t
+     of dtype conversion.
+ engine : str, default None
+     If io is not a buffer or path, this must be set to identify io.
+-    Supported engines: "xlrd", "openpyxl", "odf", "pyxlsb", default "xlrd".
++    Supported engines: "xlrd", "openpyxl", "odf", "pyxlsb".
+     Engine compatibility :
++
+     - "xlrd" supports most old/new Excel file formats.
+     - "openpyxl" supports newer Excel file formats.
+     - "odf" supports OpenDocument file formats (.odf, .ods, .odt).
+     - "pyxlsb" supports Binary Excel files.
++
++    .. versionchanged:: 1.1.5 in Debian, 1.2.0 upstream
++        The engine `xlrd <https://xlrd.readthedocs.io/en/latest/>`_
++        is no longer maintained, and is not supported with
++        python >= 3.9. When ``engine=None``, the following logic will be
++        used to determine the engine.
++
++        - If ``path_or_buffer`` is an OpenDocument format (.odf, .ods, .odt),
++          then `odf <https://pypi.org/project/odfpy/>`_ will be used.
++        - Otherwise if ``path_or_buffer`` is a bytes stream, the file has the
++          extension ``.xls``, or is an ``xlrd`` Book instance, then ``xlrd`` will
++          be used.
++        - Otherwise if `openpyxl <https://pypi.org/project/openpyxl/>`_ is installed,
++          then ``openpyxl`` will be used.
++        - Otherwise ``xlrd`` will be used and a ``FutureWarning`` will be raised.
++
++        Specifying ``engine="xlrd"`` will continue to be allowed for the
++        indefinite future, but may require uninstalling (python3-)defusedxml.
++
+ converters : dict, default None
+     Dict of functions for converting values in certain columns. Keys can
+     either be integers or column labels, values are functions that take one
+@@ -823,13 +846,32 @@ class ExcelFile:
+         .xls, .xlsx, .xlsb, .xlsm, .odf, .ods, or .odt file.
+     engine : str, default None
+         If io is not a buffer or path, this must be set to identify io.
+-        Supported engines: ``xlrd``, ``openpyxl``, ``odf``, ``pyxlsb``,
+-        default ``xlrd``.
++        Supported engines: ``xlrd``, ``openpyxl``, ``odf``, ``pyxlsb``
+         Engine compatibility :
++
+         - ``xlrd`` supports most old/new Excel file formats.
+         - ``openpyxl`` supports newer Excel file formats.
+         - ``odf`` supports OpenDocument file formats (.odf, .ods, .odt).
+         - ``pyxlsb`` supports Binary Excel files.
++
++        .. versionchanged:: 1.1.5 in Debian, 1.2.0 upstream
++
++           The engine `xlrd <https://xlrd.readthedocs.io/en/latest/>`_
++           is no longer maintained, and is not supported with
++           python >= 3.9. When ``engine=None``, the following logic will be
++           used to determine the engine.
++
++           - If ``path_or_buffer`` is an OpenDocument format (.odf, .ods, .odt),
++             then `odf <https://pypi.org/project/odfpy/>`_ will be used.
++           - Otherwise if ``path_or_buffer`` is a bytes stream, the file has the
++             extension ``.xls``, or is an ``xlrd`` Book instance, then ``xlrd``
++             will be used.
++           - Otherwise if `openpyxl <https://pypi.org/project/openpyxl/>`_ is installed,
++             then ``openpyxl`` will be used.
++           - Otherwise ``xlrd`` will be used and a ``FutureWarning`` will be raised.
++
++           Specifying ``engine="xlrd"`` will continue to be allowed for the
++           indefinite future, but may require uninstalling (python3-)defusedxml.
+     """
+     from pandas.io.excel._odfreader import _ODFReader
+@@ -846,14 +888,59 @@ class ExcelFile:
+     def __init__(self, path_or_buffer, engine=None):
+         if engine is None:
+-            engine = "xlrd"
++            # Determine ext and use odf for ods stream/file
+             if isinstance(path_or_buffer, (BufferedIOBase, RawIOBase)):
++                ext = None
+                 if _is_ods_stream(path_or_buffer):
+                     engine = "odf"
+             else:
+                 ext = os.path.splitext(str(path_or_buffer))[-1]
+                 if ext == ".ods":
+                     engine = "odf"
++
++            if (
++                import_optional_dependency(
++                    "xlrd", raise_on_missing=False, on_version="ignore"
++                )
++                is not None
++            ):
++                from xlrd import Book
++
++                if isinstance(path_or_buffer, Book):
++                    engine = "xlrd"
++
++            # GH 35029 - Prefer openpyxl except for xls files
++            if engine is None:
++                if ext is None or isinstance(path_or_buffer, bytes) or ext == ".xls":
++                    engine = "xlrd"
++                elif (
++                    import_optional_dependency(
++                        "openpyxl", raise_on_missing=False, on_version="ignore"
++                    )
++                    is not None
++                ):
++                    engine = "openpyxl"
++                else:
++                    caller = inspect.stack()[1]
++                    if (
++                        caller.filename.endswith("pandas/io/excel/_base.py")
++                        and caller.function == "read_excel"
++                    ):
++                        stacklevel = 4
++                    else:
++                        stacklevel = 2
++                    warnings.warn(
++                        "The xlrd engine is no longer maintained and is not "
++                        "supported when using pandas with python >= 3.9. However, "
++                        "the engine xlrd will continue to be allowed for the "
++                        "indefinite future. The "
++                        "openpyxl engine will be used if it is installed and the "
++                        "engine argument is not specified. Either install openpyxl "
++                        "or specify engine='xlrd' to silence this warning.",
++                        FutureWarning,
++                        stacklevel=stacklevel,
++                    )
++                    engine = "xlrd"
+         if engine not in self._engines:
+             raise ValueError(f"Unknown engine: {engine}")
+--- a/pandas/tests/io/excel/test_readers.py
++++ b/pandas/tests/io/excel/test_readers.py
+@@ -599,6 +599,10 @@ class TestReaders:
+         if pd.read_excel.keywords["engine"] == "openpyxl":
+             pytest.xfail("Maybe not supported by openpyxl")
++        if pd.read_excel.keywords["engine"] is None:
++            # GH 35029
++            pytest.xfail("Defaults to openpyxl, maybe not supported")
++
+         result = pd.read_excel("testdateoverflow" + read_ext)
+         tm.assert_frame_equal(result, expected)
+@@ -1153,12 +1154,13 @@ class TestExcelFileRead:
+         actual = pd.read_excel(data, engine=engine)
+         tm.assert_frame_equal(expected, actual)
++    @td.skip_if_no("xlrd")
+     def test_excel_high_surrogate(self, engine):
+         # GH 23809
+         expected = pd.DataFrame(["\udc88"], columns=["Column1"])
+         # should not produce a segmentation violation
+-        actual = pd.read_excel("high_surrogate.xlsx")
++        actual = pd.read_excel("high_surrogate.xlsx", engine="xlrd")
+         tm.assert_frame_equal(expected, actual)
+     @pytest.mark.parametrize("filename", ["df_empty.xlsx", "df_equals.xlsx"])
+--- a/pandas/tests/io/excel/test_writers.py
++++ b/pandas/tests/io/excel/test_writers.py
+@@ -351,12 +351,15 @@ class TestExcelWriter:
+             msg = "sheet 0 not found"
+             with pytest.raises(ValueError, match=msg):
+                 pd.read_excel(xl, "0")
+-        else:
++        elif engine == "xlwt":
+             import xlrd
+             msg = "No sheet named <'0'>"
+             with pytest.raises(xlrd.XLRDError, match=msg):
+                 pd.read_excel(xl, sheet_name="0")
++        else:
++            with pytest.raises(KeyError, match="Worksheet 0 does not exist."):
++                pd.read_excel(xl, sheet_name="0")
+     def test_excel_writer_context_manager(self, frame, path):
+         with ExcelWriter(path) as writer:
+@@ -1195,7 +1198,9 @@ class TestExcelWriter:
+         write_frame = DataFrame({"A": datetimes})
+         write_frame.to_excel(path, "Sheet1")
+-        read_frame = pd.read_excel(path, sheet_name="Sheet1", header=0)
++        # GH 35029 - Default changed to openpyxl, but test is for odf/xlrd
++        engine = "odf" if path.endswith("ods") else "xlrd"
++        read_frame = pd.read_excel(path, sheet_name="Sheet1", header=0, engine=engine)
+         tm.assert_series_equal(write_frame["A"], read_frame["A"])
+--- a/pandas/tests/io/excel/test_xlrd.py
++++ b/pandas/tests/io/excel/test_xlrd.py
+@@ -1,5 +1,7 @@
+ import pytest
++from pandas.compat._optional import import_optional_dependency
++
+ import pandas as pd
+ import pandas._testing as tm
+@@ -38,6 +40,48 @@ def test_read_xlrd_book(read_ext, frame)
+ # TODO: test for openpyxl as well
+ def test_excel_table_sheet_by_index(datapath, read_ext):
+     path = datapath("io", "data", "excel", f"test1{read_ext}")
+-    with pd.ExcelFile(path) as excel:
++    with pd.ExcelFile(path, engine="xlrd") as excel:
+         with pytest.raises(xlrd.XLRDError):
+             pd.read_excel(excel, sheet_name="asdf")
++
++
++def test_excel_file_warning_with_xlsx_file(datapath):
++    # GH 29375
++    path = datapath("io", "data", "excel", "test1.xlsx")
++    has_openpyxl = (
++        import_optional_dependency(
++            "openpyxl", raise_on_missing=False, on_version="ignore"
++        )
++        is not None
++    )
++    if not has_openpyxl:
++        with tm.assert_produces_warning(
++            FutureWarning,
++            raise_on_extra_warnings=False,
++            match="The xlrd engine is no longer maintained",
++        ):
++            ExcelFile(path, engine=None)
++    else:
++        with tm.assert_produces_warning(None):
++            pd.read_excel(path, "Sheet1", engine=None)
++
++
++def test_read_excel_warning_with_xlsx_file(tmpdir, datapath):
++    # GH 29375
++    path = datapath("io", "data", "excel", "test1.xlsx")
++    has_openpyxl = (
++        import_optional_dependency(
++            "openpyxl", raise_on_missing=False, on_version="ignore"
++        )
++        is not None
++    )
++    if not has_openpyxl:
++        with tm.assert_produces_warning(
++            FutureWarning,
++            raise_on_extra_warnings=False,
++            match="The xlrd engine is no longer maintained",
++        ):
++            pd.read_excel(path, "Sheet1", engine=None)
++    else:
++        with tm.assert_produces_warning(None):
++            pd.read_excel(path, "Sheet1", engine=None)
diff --git a/python-pandas-doc.doc-base b/python-pandas-doc.doc-base
new file mode 100644 (file)
index 0000000..b29cae0
--- /dev/null
@@ -0,0 +1,7 @@
+Document: python3-pandas
+Title: pandas - powerful Python data analysis toolkit
+Section: Science/Data Analysis
+
+Format: HTML
+Index: /usr/share/doc/python-pandas-doc/html/index.html
+Files: /usr/share/doc/python-pandas-doc/html/*
diff --git a/python-pandas-doc.docs b/python-pandas-doc.docs
new file mode 100644 (file)
index 0000000..8137b04
--- /dev/null
@@ -0,0 +1 @@
+doc/build/html
diff --git a/python-pandas-doc.links b/python-pandas-doc.links
new file mode 100644 (file)
index 0000000..3ae4205
--- /dev/null
@@ -0,0 +1,2 @@
+usr/share/doc/python-pandas-doc/html/whatsnew/index.html.gz usr/share/doc/python-pandas-doc/NEWS.html.gz
+usr/share/doc/python-pandas-doc/html/whatsnew/index.html.gz usr/share/doc/python3-pandas/NEWS.html.gz
\ No newline at end of file
diff --git a/rules b/rules
new file mode 100755 (executable)
index 0000000..10a23d7
--- /dev/null
+++ b/rules
@@ -0,0 +1,115 @@
+#!/usr/bin/make -f
+# -*- mode: makefile; coding: utf-8 -*-
+
+export DEB_BUILD_MAINT_OPTIONS = hardening=+all
+DPKG_EXPORT_BUILDFLAGS = 1
+include /usr/share/dpkg/buildflags.mk
+include /usr/share/dpkg/pkg-info.mk
+
+PY3VERS := $(shell py3versions -vr)
+PY3VER := $(shell py3versions -vd)
+SOURCE_DATE:=$(shell date -u -d "@$(SOURCE_DATE_EPOCH)" "+%a, %d %b %Y" || echo "xxx, xx xxx xxxx")
+SOURCE_TIME:=$(shell date -u -d "@$(SOURCE_DATE_EPOCH)" "+%T" || echo "xx:xx:xx")
+
+UVER := $(shell echo $(DEB_VERSION_UPSTREAM) | sed -e 's,+dfsg,,g')
+# Python doesn't use ~ for rc
+UVER_PY := $(shell echo $(UVER) | sed -e 's,[~],,g')
+UVER_PYSHORT := $(shell echo $(UVER_PY) | sed -e 's,+git.*,,g')
+
+# Filter out tests with "marker expressions" and "keyword expressions". Ref: pytest(1)
+ifeq ($(DEB_HOST_ARCH),$(filter $(DEB_HOST_ARCH), amd64 i386 kfreebsd-amd64 kfreebsd-i386 x32))
+       PYTEST_MARKER := not network
+else
+       PYTEST_MARKER := not network and not slow
+endif
+# for matplotlib etc
+export HOME=$(CURDIR)/buildtmp
+
+# Split up the test suite to avoid running out of memory, use xvfb for plot tests, run but ignore potentially crashing tests; test_register_entrypoint expects an installed package
+export PYBUILD_TEST_ARGS=TEST_SUCCESS=true; cd {build_dir} ; for TEST_SUBSET in {build_dir}/pandas/tests/* ; do LOCALE_OVERRIDE=C xvfb-run -a -s "-screen 0 1280x1024x24 -noreset" {interpreter} -m pytest -s -v -m "$(PYTEST_MARKER)" -k "not test_register_entrypoint" --confcutdir={build_dir}/pandas --deb-data-root-dir={dir}/pandas/tests --strict-data-files $$TEST_SUBSET || test $$? = 5 || TEST_SUCCESS=false ; done ; LOCALE_OVERRIDE=C {interpreter} -m pytest -s -v -m "$(PYTEST_MARKER)" --forked --runxfail --confcutdir={build_dir}/pandas --deb-data-root-dir={dir}/pandas/tests --strict-data-files {build_dir}/pandas/tests/groupby/transform/test_numba.py {build_dir}/pandas/tests/window/test_numba.py {build_dir}/pandas/tests/window/test_apply.py || true ; $$TEST_SUCCESS
+
+export PYBUILD_EXT_DESTDIR=debian/python3-pandas-lib
+export PYBUILD_DESTDIR=debian/python3-pandas
+
+# try to prevent unsanctioned downloads
+export  http_proxy=http://127.0.0.1:9/
+export  https_proxy=http://127.0.0.1:9/
+
+export SHELL=/bin/bash
+
+# Mega rule
+%:
+       : # Explicit build system to avoid use of all-in-1 Makefile
+       dh $@ --buildsystem=pybuild --with python3,numpy3,sphinxdoc
+
+# The *cython* rules are provided to allow using pre-built Cython files in distributions without a new enough Cython; they are not (and must not be) used in official Debian builds (including -backports).  Use instructions:
+# on a system with new enough Cython, run debian/rules cythonize - this will add a directory under debian/
+# uncomment the _uncythonize rule dependency below
+# remove the cython3 Build-Depends from d/control
+# copy to the older system and build as normal
+# To upgrade to a new upstream version, this process must be repeated
+# Warning - has not been tested for some time
+_cythonize%: override_dh_clean # force removal of previous copies
+       python$(*:2=) setup.py cython
+       D=debian/cythonized-files$(*:2=) && \
+               git rm -rf $$D || rm -rf $$D; \
+               find pandas/ -regex '.*\.c\(\|pp\)' | while read f; do \
+                       grep -q 'Generated by Cython' "$$f" || continue; \
+                       mkdir -p "$$D/$$(dirname $$f)"; \
+                       cp "$$f" "$$D/$$(dirname $$f)"; \
+                       git add -f "$$D/$$f" || true; \
+               done; \
+               echo "$(UVER)" >| $$D/VERSION; git add $$D/VERSION || true
+
+_uncythonize%:
+       : # Make sure that cythonized sources are up-to-date
+       [ "$(UVER)" = "`cat debian/cythonized-files3/VERSION`" ]
+       echo "$*" | grep -q '^3' && PY=3 || PY= ; \
+               echo "I: Using pre-Cython-ed files for Python $*"; \
+               cd debian/cythonized-files$$PY/ ; \
+               find . -regex '.*\.c\(\|pp\)' | while read f; do cp $$f ../../$$f; done
+
+cythonize: _cythonize3
+
+override_dh_clean:
+       find pandas/ -regex '.*\.c\(\|pp\)' | xargs grep -l -e 'Generated by Cython'  | xargs -r rm -f
+       rm -rf build buildtmp doc/build *-stamp # pandas.egg-info pandas/datasets/__config__.py
+       dh_clean
+
+override_dh_auto_build-arch: # ${PY3VERS:%=_uncythonize%}
+       python3 $(CURDIR)/debian/uname_test.py || true
+       mkdir -p buildtmp
+       [ -e pandas/__version.py ] || \
+       echo -e "version = '$(UVER_PY)'\nshort_version = '$(UVER_PYSHORT)'" > pandas/__version.py
+       dh_auto_build
+
+override_dh_auto_build-indep: override_dh_auto_build-arch
+ifeq (,$(filter nodoc,$(DEB_BUILD_OPTIONS)))
+       : # Build Documentation
+       cd doc && PYTHONPATH=$(CURDIR)/.pybuild/cpython3_$(PY3VER)/build LC_ALL=C python3 make.py html
+       # strip build paths and statsmodels timestamps for reproducibility, and online Javascript for privacy
+       for html in `find doc/build/html -name _modules -prune -o -name "*.html" -o -name "*.ipynb"` ; do \
+           sed -i -e 's#$(CURDIR)/.pybuild/[^/]*/build/pandas/#/usr/lib/python3/dist-packages/pandas/#g' \
+           -e 's#$(CURDIR)/debian/python3-pandas/usr/lib/python3/dist-packages/pandas/#/usr/lib/python3/dist-packages/pandas/#g' \
+           -e 's#<script crossorigin="anonymous" integrity="sha256-Ae2Vz/4ePdIu6ZyI/5ZGsYnb+m0JlOmKPjt6XZ9JJkA=" type="text/javascript" src="https://cdnjs\.cloudflare\.com/ajax/libs/require\.js/2\.3\.4/require\.min\.js">#<script type="text/javascript" src="file:///usr/share/javascript/requirejs/require.min.js">#g' \
+           -e 's#\(Date:.*\)[A-Z][a-z]\+, \+[0-9]\+,\? \+[A-Z][a-z]\+,\? \+[0-9]\+#\1$(SOURCE_DATE)#g' \
+           -e 's#\(Time:.*\)[0-9][0-9]:[0-9][0-9]:[0-9][0-9]#\1$(SOURCE_TIME)#g' $${html} ; \
+       done
+endif
+
+override_dh_installdocs:
+       dh_installdocs -A *.md
+       # for NEWS.html.gz - put it here and use symlinks to avoid breaking internal links
+       gzip -c -n -9 debian/python-pandas-doc/usr/share/doc/python-pandas-doc/html/whatsnew/index.html > debian/python-pandas-doc/usr/share/doc/python-pandas-doc/html/whatsnew/index.html.gz || true
+       cp -av debian/contributors_list.txt debian/python-pandas-doc/usr/share/doc/python-pandas-doc || true
+       # deduplicate files - the ||true is because we only build-depend on jdupes if we're building documentation
+       jdupes -r -l debian/python-pandas-doc/usr/share/doc || true
+
+
+## immediately useable documentation and exemplar scripts/data
+override_dh_compress:
+       dh_compress -X.py -X.html -X.pdf -X.css -X.jpg -X.txt -X.js -X.json -X.rtc -Xobjects.inv
+
+# see PYBUILD_TEST_ARGS above
+override_dh_auto_test:
+       PYBUILD_SYSTEM=custom dh_auto_test
diff --git a/source/format b/source/format
new file mode 100644 (file)
index 0000000..163aaf8
--- /dev/null
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/source/lintian-overrides b/source/lintian-overrides
new file mode 100644 (file)
index 0000000..1ea38fc
--- /dev/null
@@ -0,0 +1,6 @@
+# nothing to do with the html files with lenthy lines.
+very-long-line-length-in-source-file
+# False positive triggered by very-long-line-length-in-source-file.
+#   https://lintian.debian.org/tags/source-is-missing.html
+# Anyway let's override this "feature".
+source-is-missing
diff --git a/source/options b/source/options
new file mode 100644 (file)
index 0000000..e558c0f
--- /dev/null
@@ -0,0 +1 @@
+extend-diff-ignore="^[^/]+\.egg-info/|pandas/__version.py"
diff --git a/tests/control b/tests/control
new file mode 100644 (file)
index 0000000..75aac0f
--- /dev/null
@@ -0,0 +1,48 @@
+# Check that the hard Depends are enough for import
+# cd to not-the-source-directory to get the installed pandas
+Test-Command: cd "$AUTOPKGTEST_TMP" && python3 -c "import pandas;a=pandas.DataFrame([[1,2],[3,4]])"
+Depends: python3-pandas
+Restrictions: allow-stderr
+
+# According to pandas/doc/source/install.rst, running the unit tests looks like:
+# `py.test-3 --skip-slow --skip-network /usr/lib/python3/dist-packages/pandas/ -v -rs`
+# Or simply `python3 -c "import pandas as pd; pd.test()"`, which doesn't require
+# us to specify the path (pandas.__path__) in command line.
+# See: pandas/util/_tester.py
+Tests: unittests3
+Depends: locales-all,
+         python3-all,
+         python3-bs4,
+         python3-dask (>= 2.10.1~),
+         python3-dateutil (>= 2.7.3~),
+         python3-html5lib,
+         python3-hypothesis,
+         python3-jinja2,
+         python3-lxml,
+         python3-matplotlib [!hurd-i386],
+# armel, s390x numba crash, mipsel gives wrong answer, most ports don't have numba
+# re-add when #972246 is fixed         python3-numba (>= 0.46.0~) [amd64 arm64 armhf i386 mips64el mipsel ppc64el s390x],
+         python3-numpy (>= 1:1.15~),
+         python3-odf,
+         python3-openpyxl,
+         python3-pandas,
+# upstream actually want pytest >= 5.0.1 but we don't have that
+         python3-pytest (>= 4.0.2~),
+         python3-pytest-asyncio,
+         python3-pytest-forked,
+         python3-pytest-xdist (>= 1.21~),
+         python3-scipy,
+         python3-six,
+         python3-statsmodels,
+         python3-tables (>= 3.4.3~),
+# too old in Debian python3-tabulate (>= 0.8.3~),
+         python3-tk,
+         python3-tz,
+         python3-xarray,
+# broken - #976620         python3-xlrd,
+         python3-xlsxwriter,
+         python3-xlwt,
+         xauth,
+         xvfb,
+         xclip,
+Restrictions: allow-stderr
diff --git a/tests/unittests3 b/tests/unittests3
new file mode 100755 (executable)
index 0000000..2ccebd0
--- /dev/null
@@ -0,0 +1,29 @@
+#!/bin/bash
+set -eu
+set -x
+
+arch=$(dpkg --print-architecture)
+pys="$(py3versions -r 2>/dev/null)"
+sourcetestroot="$PWD/pandas/tests"
+
+# Debian: Enable "slow" tests on x86 to keep the code coverage.
+# Ubuntu: Disable "slow" tests on ALL architectures.
+if (echo amd64 i386 | grep $arch >/dev/null) && [ "Debian" = $(dpkg-vendor --query vendor) ]; then
+       marker=''
+else
+       marker='not slow'
+fi
+
+cd "$AUTOPKGTEST_TMP"
+# Run in sections to avoid out-of-memory crash (#943732)
+# exit code 5 means no tests in this file
+TEST_SUCCESS=true
+for py in $pys; do
+       echo "=== $py ==="
+       modpath=$($py -c 'import pandas as pd; print(pd.__path__[0])')
+       for TEST_SUBSET in $modpath/tests/* ; do
+        LC_ALL=C.UTF-8 xvfb-run --auto-servernum --server-args="-screen 0 1024x768x24" \
+        $py -m pytest --tb=long -s -v -m "$marker" --deb-data-root-dir=$sourcetestroot --strict-data-files --confcutdir=$modpath $TEST_SUBSET 2>&1 || test $? == 5 || TEST_SUCCESS=false
+    done
+done
+$TEST_SUCCESS
diff --git a/uname_test.py b/uname_test.py
new file mode 100644 (file)
index 0000000..fdae279
--- /dev/null
@@ -0,0 +1,10 @@
+#!/usr/bin/python3
+
+# testing methods of finding the architecture, for e.g. #973584
+
+import sys
+import sysconfig
+import platform
+import struct
+
+print("973584 test - uname:",platform.uname(),"sysp:",sys.platform,"getplatform:",sysconfig.get_platform(),"pp:",platform.platform(),"parch:",platform.architecture(),"byteorder:",sys.byteorder,"maxsize:",sys.maxsize,"psize",struct.calcsize("P"))
diff --git a/upstream/metadata b/upstream/metadata
new file mode 100644 (file)
index 0000000..9dfc468
--- /dev/null
@@ -0,0 +1,12 @@
+Name: pandas
+Repository: https://github.com/pydata/pandas
+Documentation: https://pandas.pydata.org/pandas-docs/stable
+Bug-Database: https://github.com/pydata/pandas/issues
+Contact: https://pandas.pydata.org/community.html
+Reference:
+  Title: "pandas: a Foundational Python Library for Data Analysis and Statistics"
+  Eprint: https://www.scribd.com/doc/71048089/pandas-a-Foundational-Python-Library-for-Data-Analysis-and-Statistics
+  Author: McKinney, Wes
+  Booktitle: presented at PyHPC
+  Year: 2011
+Other-References: https://pandas.pydata.org/talks.html
diff --git a/watch b/watch
new file mode 100644 (file)
index 0000000..f808981
--- /dev/null
+++ b/watch
@@ -0,0 +1,3 @@
+version=4
+opts="dversionmangle=s/.dfsg[0-9]*$//,uversionmangle=s/v//;s/rc/~rc/,filenamemangle=s/.*\/(.*)/pandas-$1\.tar\.gz/,repacksuffix=+dfsg" \
+ https://github.com/pydata/pandas/tags .*archive/v?([\d\.rc]+).tar.gz