Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 15 Jan 2014 09:55:27 -0500 (EST)
From:      "John W. O'Brien" <john@saltant.com>
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   ports/185803: [MAINTAINER] math/py-pandas: Update to 0.13.0
Message-ID:  <20140115145527.17FADB05CE@drivel.saltant.net>
Resent-Message-ID: <201401151500.s0FF009j084919@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         185803
>Category:       ports
>Synopsis:       [MAINTAINER] math/py-pandas: Update to 0.13.0
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          maintainer-update
>Submitter-Id:   current-users
>Arrival-Date:   Wed Jan 15 15:00:00 UTC 2014
>Closed-Date:
>Last-Modified:
>Originator:     John W. O'Brien
>Release:        FreeBSD 9.2-STABLE amd64
>Organization:
Saltant Solutions
>Environment:
System: FreeBSD XXXX.saltant.net 9.2-STABLE FreeBSD 9.2-STABLE #1 r260112: Mon Dec 30 18:26:07 EST 2013     root@XXXX.saltant.net:/usr/obj/usr/src/sys/NARB  amd64
>Description:
Change log
==========

-   Update to 0.13.0
-   Abandon easy_install
-   Update pkg-message and TEST_DEPENDS to reflect current recommendations and
    port availability
-   Add erroneously-omitted lang/cython to TEST_DEPENDS (for 'build_ext -i')
-   Conform regression-test target to upstream test procedure

QA
==

portlint: looks fine.
nose: no errors, no failures.
>How-To-Repeat:
N/A
>Fix:
Apply attached patch.

--- patch-math_py-pandas-0.13.0.txt begins here ---
Index: /usr/ports/math/py-pandas/Makefile
===================================================================
--- /usr/ports/math/py-pandas/Makefile	(revision 339733)
+++ /usr/ports/math/py-pandas/Makefile	(working copy)
@@ -1,8 +1,7 @@
 # $FreeBSD$
 
 PORTNAME=	pandas
-PORTVERSION=	0.12.0
-PORTREVISION=	2
+PORTVERSION=	0.13.0
 CATEGORIES=	math devel python
 MASTER_SITES=	CHEESESHOP
 PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
@@ -18,6 +17,7 @@
 		${PYTHON_PKGNAMEPREFIX}pytz>0:${PORTSDIR}/devel/py-pytz \
 		${PYTHON_PKGNAMEPREFIX}sqlite3>0:${PORTSDIR}/databases/py-sqlite3
 TEST_DEPENDS=	nosetests:${PORTSDIR}/devel/py-nose \
+		cython:${PORTSDIR}/lang/cython \
 		${PYTHON_PKGNAMEPREFIX}numexpr>0:${PORTSDIR}/math/py-numexpr \
 		${PYTHON_PKGNAMEPREFIX}tables>0:${PORTSDIR}/devel/py-tables \
 		${PYTHON_PKGNAMEPREFIX}scipy>0:${PORTSDIR}/science/py-scipy \
@@ -25,6 +25,8 @@
 		${PYTHON_PKGNAMEPREFIX}xlrd>0:${PORTSDIR}/textproc/py-xlrd \
 		${PYTHON_PKGNAMEPREFIX}xlwt>0:${PORTSDIR}/textproc/py-xlwt \
 		${PYTHON_PKGNAMEPREFIX}openpyxl>0:${PORTSDIR}/textproc/py-openpyxl \
+		${PYTHON_PKGNAMEPREFIX}statsmodels>0:${PORTSDIR}/math/py-statsmodels \
+		${PYTHON_PKGNAMEPREFIX}bottleneck>0:${PORTSDIR}/math/py-bottleneck \
 		${PYTHON_PKGNAMEPREFIX}beautifulsoup>0:${PORTSDIR}/www/py-beautifulsoup \
 		${PYTHON_PKGNAMEPREFIX}html5lib>0:${PORTSDIR}/www/py-html5lib \
 		${PYTHON_PKGNAMEPREFIX}lxml>0:${PORTSDIR}/devel/py-lxml
@@ -32,9 +34,8 @@
 SUB_FILES=	pkg-message
 
 USE_PYTHON=		yes
-USE_PYDISTUTILS=	easy_install
+USE_PYDISTUTILS=	yes
 PYDISTUTILS_AUTOPLIST=	yes
-PYEASYINSTALL_ARCHDEP=	yes
 
 # Uncomment the following line to enable regression-test
 # on a headless (X11-less) host (eg: RedPorts)
@@ -43,7 +44,9 @@
 regression-test: build
 	@(cd ${WRKSRC} && \
 		${PYTHON_CMD} ${PYSETUP} build_ext --inplace && \
-		${PYTHON_CMD} ${PYSETUP} nosetests \
+		${PYTHON_CMD} ci/print_versions.py \
+		ci/script.sh \
+		${PYTHON_CMD} ci/print_skipped.py \
 	)
 
 .include <bsd.port.mk>
Index: /usr/ports/math/py-pandas/distinfo
===================================================================
--- /usr/ports/math/py-pandas/distinfo	(revision 339733)
+++ /usr/ports/math/py-pandas/distinfo	(working copy)
@@ -1,2 +1,2 @@
-SHA256 (pandas-0.12.0.tar.gz) = be9b4c3611801b366873531bc87a87dd16b19e7d78fa84c21898cd007931c86d
-SIZE (pandas-0.12.0.tar.gz) = 3155059
+SHA256 (pandas-0.13.0.tar.gz) = f034cd298e0d68fee24a2b0a68a9b8da41978d6f39474f908f7f352904ef7f3c
+SIZE (pandas-0.13.0.tar.gz) = 3572047
Index: /usr/ports/math/py-pandas/files/patch-MANIFEST.in
===================================================================
--- /usr/ports/math/py-pandas/files/patch-MANIFEST.in	(revision 339733)
+++ /usr/ports/math/py-pandas/files/patch-MANIFEST.in	(working copy)
@@ -1,12 +0,0 @@
---- ./MANIFEST.in.orig	2013-07-27 06:55:55.000000000 -0400
-+++ ./MANIFEST.in	2013-07-27 06:56:02.000000000 -0400
-@@ -2,9 +2,7 @@
- include LICENSE
- include RELEASE.md
- include README.rst
--include TODO.rst
- include setup.py
--include setupegg.py
- 
- graft doc
- prune doc/build
Index: /usr/ports/math/py-pandas/files/patch-pandas-issue4353-pullrequest4356
===================================================================
--- /usr/ports/math/py-pandas/files/patch-pandas-issue4353-pullrequest4356	(revision 339733)
+++ /usr/ports/math/py-pandas/files/patch-pandas-issue4353-pullrequest4356	(working copy)
@@ -1,162 +0,0 @@
-This patch is adapted from the following upstream commit.
-
-[PATCH] TST/BUG/CLN: make stata IO tests use temporary files for writing
-c98e09951f74bf3445f8144363afaa769be69940
-
---- pandas/io/tests/test_stata.py.orig
-+++ pandas/io/tests/test_stata.py
-@@ -10,9 +10,8 @@ import numpy as np
- 
- from pandas.core.frame import DataFrame, Series
- from pandas.io.parsers import read_csv
--from pandas.io.stata import read_stata, StataReader, StataWriter
-+from pandas.io.stata import read_stata, StataReader
- import pandas.util.testing as tm
--from pandas.util.testing import ensure_clean
- from pandas.util.misc import is_little_endian
- 
- 
-@@ -27,15 +26,12 @@ class StataTests(unittest.TestCase):
-         self.dta3 = os.path.join(self.dirpath, 'stata3.dta')
-         self.csv3 = os.path.join(self.dirpath, 'stata3.csv')
-         self.dta4 = os.path.join(self.dirpath, 'stata4.dta')
--        self.dta5 = os.path.join(self.dirpath, 'stata5.dta')
--        self.dta6 = os.path.join(self.dirpath, 'stata6.dta')
-         self.dta7 = os.path.join(self.dirpath, 'cancer.dta')
-         self.csv7 = os.path.join(self.dirpath, 'cancer.csv')
-         self.dta8 = os.path.join(self.dirpath, 'tbl19-3.dta')
-         self.csv8 = os.path.join(self.dirpath, 'tbl19-3.csv')
-         self.dta9 = os.path.join(self.dirpath, 'lbw.dta')
-         self.csv9 = os.path.join(self.dirpath, 'lbw.csv')
--        self.dta10 = os.path.join(self.dirpath, 'stata10.dta')
- 
-     def read_dta(self, file):
-         return read_stata(file, convert_dates=True)
-@@ -46,9 +42,11 @@ class StataTests(unittest.TestCase):
-     def test_read_dta1(self):
-         reader = StataReader(self.dta1)
-         parsed = reader.data()
--        # Pandas uses np.nan as missing value. Thus, all columns will be of type float, regardless of their name.
-+        # Pandas uses np.nan as missing value.
-+        # Thus, all columns will be of type float, regardless of their name.
-         expected = DataFrame([(np.nan, np.nan, np.nan, np.nan, np.nan)],
--                             columns=['float_miss', 'double_miss', 'byte_miss', 'int_miss', 'long_miss'])
-+                             columns=['float_miss', 'double_miss', 'byte_miss',
-+                                      'int_miss', 'long_miss'])
- 
-         for i, col in enumerate(parsed.columns):
-             np.testing.assert_almost_equal(
-@@ -90,7 +88,9 @@ class StataTests(unittest.TestCase):
-                     np.datetime64('NaT')
-                 )
-             ],
--            columns=['datetime_c', 'datetime_big_c', 'date', 'weekly_date', 'monthly_date', 'quarterly_date', 'half_yearly_date', 'yearly_date']
-+            columns=['datetime_c', 'datetime_big_c', 'date', 'weekly_date',
-+                     'monthly_date', 'quarterly_date', 'half_yearly_date',
-+                     'yearly_date']
-         )
- 
-         with warnings.catch_warnings(record=True) as w:
-@@ -125,34 +125,40 @@ class StataTests(unittest.TestCase):
-                 ["nine", "two", 9, np.nan, "nine"],
-                 ["ten", "one", "ten", np.nan, "ten"]
-             ],
--            columns=['fully_labeled', 'fully_labeled2', 'incompletely_labeled', 'labeled_with_missings', 'float_labelled'])
-+            columns=['fully_labeled', 'fully_labeled2', 'incompletely_labeled',
-+                     'labeled_with_missings', 'float_labelled'])
- 
-         tm.assert_frame_equal(parsed, expected)
- 
--    def test_write_dta5(self):
-+    def test_read_write_dta5(self):
-         if not is_little_endian():
--            raise nose.SkipTest("known failure of test_write_dta5 on non-little endian")
-+            raise nose.SkipTest("known failure of test_write_dta5 on "
-+                                "non-little endian")
- 
-         original = DataFrame([(np.nan, np.nan, np.nan, np.nan, np.nan)],
--                             columns=['float_miss', 'double_miss', 'byte_miss', 'int_miss', 'long_miss'])
-+                             columns=['float_miss', 'double_miss', 'byte_miss',
-+                                      'int_miss', 'long_miss'])
-         original.index.name = 'index'
- 
--        with ensure_clean(self.dta5) as path:
-+        with tm.ensure_clean() as path:
-             original.to_stata(path, None, False)
-             written_and_read_again = self.read_dta(path)
--            tm.assert_frame_equal(written_and_read_again.set_index('index'), original)
-+            tm.assert_frame_equal(written_and_read_again.set_index('index'),
-+                                  original)
- 
-     def test_write_dta6(self):
-         if not is_little_endian():
--            raise nose.SkipTest("known failure of test_write_dta6 on non-little endian")
-+            raise nose.SkipTest("known failure of test_write_dta6 on "
-+                                "non-little endian")
- 
-         original = self.read_csv(self.csv3)
-         original.index.name = 'index'
- 
--        with ensure_clean(self.dta6) as path:
-+        with tm.ensure_clean() as path:
-             original.to_stata(path, None, False)
-             written_and_read_again = self.read_dta(path)
--            tm.assert_frame_equal(written_and_read_again.set_index('index'), original)
-+            tm.assert_frame_equal(written_and_read_again.set_index('index'),
-+                                  original)
- 
-     @nose.tools.nottest
-     def test_read_dta7(self):
-@@ -190,29 +196,30 @@ class StataTests(unittest.TestCase):
-                 decimal=3
-             )
- 
--    def test_read_dta10(self):
-+    def test_read_write_dta10(self):
-         if not is_little_endian():
--            raise nose.SkipTest("known failure of test_write_dta10 on non-little endian")
-+            raise nose.SkipTest("known failure of test_write_dta10 on "
-+                                "non-little endian")
- 
--        original = DataFrame(
--            data=
--            [
--                ["string", "object", 1, 1.1, np.datetime64('2003-12-25')]
--            ],
--            columns=['string', 'object', 'integer', 'float', 'datetime'])
-+        original = DataFrame(data=[["string", "object", 1, 1.1,
-+                                    np.datetime64('2003-12-25')]],
-+                             columns=['string', 'object', 'integer', 'float',
-+                                      'datetime'])
-         original["object"] = Series(original["object"], dtype=object)
-         original.index.name = 'index'
- 
--        with ensure_clean(self.dta10) as path:
-+        with tm.ensure_clean() as path:
-             original.to_stata(path, {'datetime': 'tc'}, False)
-             written_and_read_again = self.read_dta(path)
--            tm.assert_frame_equal(written_and_read_again.set_index('index'), original)
-+            tm.assert_frame_equal(written_and_read_again.set_index('index'),
-+                                  original)
- 
-     def test_stata_doc_examples(self):
--        with ensure_clean(self.dta5) as path:
-+        with tm.ensure_clean() as path:
-             df = DataFrame(np.random.randn(10, 2), columns=list('AB'))
-             df.to_stata(path)
- 
-+
- if __name__ == '__main__':
-     nose.runmodule(argv=[__file__, '-vvs', '-x', '--pdb', '--pdb-failure'],
-                    exit=False)
---- pandas/util/testing.py.orig
-+++ pandas/util/testing.py
-@@ -86,7 +86,7 @@ def set_trace():
- #------------------------------------------------------------------------------
- # contextmanager to ensure the file cleanup
- @contextmanager
--def ensure_clean(filename = None):
-+def ensure_clean(filename=None):
-     # if we are not passed a filename, generate a temporary
-     if filename is None:
-         filename = tempfile.mkstemp()[1]
Index: /usr/ports/math/py-pandas/files/pkg-message.in
===================================================================
--- /usr/ports/math/py-pandas/files/pkg-message.in	(revision 339733)
+++ /usr/ports/math/py-pandas/files/pkg-message.in	(working copy)
@@ -2,16 +2,21 @@
 Note that the following ports are not strict dependencies but are highly
 recommended to get the most out of pandas. Install them as needed.
 
-numexpr		math/py-numexpr
-scipy		science/py-scipy
-pytables	devel/py-tables
-matplotlib	math/py-matplotlib
-xlrd		textproc/py-xlrd
-xlwt		textproc/py-xlwt
-openpyxl	textproc/py-openpyxl
+Library		Port origin		Purpose
+-------		-----------		-------
+boto		devel/py-boto		access Amazon S3
+pytables	devel/py-tables		necessary for HDF5-based storage
+bottleneck	math/py-bottleneck	accelerate certain NaN evals
+matplotlib	math/py-matplotlib	plotting
+numexpr		math/py-numexpr		accelerate certain numerical ops
+statsmodels	math/py-statsmodels	enables parts of pandas.stats
+scipy		science/py-scipy	misc. statistical functions
+openpyxl	textproc/py-openpyxl	Excel 2007+ I/O
+xlrd		textproc/py-xlrd	Excel input
+xlwt		textproc/py-xlwt	Excel output
 
-To use the HTML table parsing capabilities that are new to 0.12.0, you
-will need to install
+To use the HTML table parsing capabilities that were introduced in
+pandas 0.12.0, you will need to install
 
 beautifulsoup	www/py-beautifulsoup
 
@@ -23,9 +28,4 @@
 Please read the pandas documentation before deciding:
 
 http://pandas.pydata.org/pandas-docs/stable/gotchas.html#html-gotchas
-
-Also recommended, but not yet available in ports are:
-
-bottleneck		http://berkeleyanalytics.com/bottleneck/
-scikits.statsmodels	http://statsmodels.sourceforge.net/
 ===
--- patch-math_py-pandas-0.13.0.txt ends here ---

>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20140115145527.17FADB05CE>