View | Details | Raw Unified | Return to bug 190850
Collapse All | Expand All

(-)math/py-pandas/Makefile (-5 / +45 lines)
Lines 1-8 Link Here
1
# $FreeBSD$
1
# $FreeBSD$
2
2
3
PORTNAME=	pandas
3
PORTNAME=	pandas
4
PORTVERSION=	0.13.1
4
PORTVERSION=	0.14.0
5
PORTREVISION=	1
6
CATEGORIES=	math devel python
5
CATEGORIES=	math devel python
7
MASTER_SITES=	CHEESESHOP
6
MASTER_SITES=	CHEESESHOP
8
PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
7
PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
Lines 17-23 Link Here
17
		${PYTHON_PKGNAMEPREFIX}dateutil>0:${PORTSDIR}/devel/py-dateutil \
16
		${PYTHON_PKGNAMEPREFIX}dateutil>0:${PORTSDIR}/devel/py-dateutil \
18
		${PYTHON_PKGNAMEPREFIX}pytz>0:${PORTSDIR}/devel/py-pytz \
17
		${PYTHON_PKGNAMEPREFIX}pytz>0:${PORTSDIR}/devel/py-pytz \
19
		${PYTHON_PKGNAMEPREFIX}sqlite3>0:${PORTSDIR}/databases/py-sqlite3
18
		${PYTHON_PKGNAMEPREFIX}sqlite3>0:${PORTSDIR}/databases/py-sqlite3
20
TEST_DEPENDS=	${RUN_DEPENDS} \
19
TEST_DEPENDS:=	${RUN_DEPENDS} \
21
		nosetests:${PORTSDIR}/devel/py-nose \
20
		nosetests:${PORTSDIR}/devel/py-nose \
22
		cython:${PORTSDIR}/lang/cython \
21
		cython:${PORTSDIR}/lang/cython \
23
		${PYTHON_PKGNAMEPREFIX}boto>0:${PORTSDIR}/devel/py-boto \
22
		${PYTHON_PKGNAMEPREFIX}boto>0:${PORTSDIR}/devel/py-boto \
Lines 27-33 Link Here
27
		${PYTHON_PKGNAMEPREFIX}matplotlib>0:${PORTSDIR}/math/py-matplotlib \
26
		${PYTHON_PKGNAMEPREFIX}matplotlib>0:${PORTSDIR}/math/py-matplotlib \
28
		${PYTHON_PKGNAMEPREFIX}numexpr>0:${PORTSDIR}/math/py-numexpr \
27
		${PYTHON_PKGNAMEPREFIX}numexpr>0:${PORTSDIR}/math/py-numexpr \
29
		${PYTHON_PKGNAMEPREFIX}scipy>0:${PORTSDIR}/science/py-scipy \
28
		${PYTHON_PKGNAMEPREFIX}scipy>0:${PORTSDIR}/science/py-scipy \
30
		${PYTHON_PKGNAMEPREFIX}openpyxl>0:${PORTSDIR}/textproc/py-openpyxl \
29
		${PYTHON_PKGNAMEPREFIX}openpyxl<2.0.0:${PORTSDIR}/textproc/py-openpyxl1 \
31
		${PYTHON_PKGNAMEPREFIX}xlrd>0:${PORTSDIR}/textproc/py-xlrd \
30
		${PYTHON_PKGNAMEPREFIX}xlrd>0:${PORTSDIR}/textproc/py-xlrd \
32
		${PYTHON_PKGNAMEPREFIX}xlwt>0:${PORTSDIR}/textproc/py-xlwt \
31
		${PYTHON_PKGNAMEPREFIX}xlwt>0:${PORTSDIR}/textproc/py-xlwt \
33
		${PYTHON_PKGNAMEPREFIX}beautifulsoup>0:${PORTSDIR}/www/py-beautifulsoup \
32
		${PYTHON_PKGNAMEPREFIX}beautifulsoup>0:${PORTSDIR}/www/py-beautifulsoup \
Lines 35-40 Link Here
35
# Note: we cannot include math/py-statsmodels in TEST_DEPENDS because it
34
# Note: we cannot include math/py-statsmodels in TEST_DEPENDS because it
36
# depends upon us for BUILD and RUN.
35
# depends upon us for BUILD and RUN.
37
36
37
OPTIONS_DEFINE=		MPL SCIPY
38
OPTIONS_GROUP=		ACCEL STORAGE HTML EXCEL
39
OPTIONS_GROUP_ACCEL=	BTLNCK NUMEXPR
40
OPTIONS_GROUP_STORAGE=	BOTO TABLES
41
OPTIONS_GROUP_HTML=	LXML HTML5LIB
42
OPTIONS_GROUP_EXCEL=	OPENPYXL XLRD XLWT
43
44
MPL_DESC=	Support graphical plotting output via math/py-matplotlib
45
SCIPY_DESC=	Support various statistical functions via science/py-scipy
46
BTLNCK_DESC=	Accelerate certain NaN evals via math/py-bottleneck
47
NUMEXPR_DESC=	Accelerate certain numerical ops via math/py-numexpr
48
BOTO_DESC=	Support Amazon S3 storage via devel/py-boto
49
TABLES_DESC=	Support HDF5-based storage via devel/py-tables
50
LXML_DESC=	Parse HTML with devel/py-lxml and www/py-beautifulsoup
51
HTML5LIB_DESC=	Parse HTML with www/py-html5lib and www/py-beautifulsoup
52
OPENPYXL_DESC=	Read/write MS Excel 2007+ with textproc/py-openpyxl1
53
XLRD_DESC=	Read MS Excel with textproc/py-xlrd
54
XLWT_DESC=	Write MS Excel with textproc/py-xlwt
55
ACCEL_DESC=	Computation Acceleration Add-ons
56
STORAGE_DESC=	Data Storage Add-ons
57
HTML_DESC=	HTML Parsing Add-ons
58
EXCEL_DESC=	MS Excel I/O Add-ons
59
60
MPL_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}matplotlib>0:${PORTSDIR}/math/py-matplotlib
61
SCIPY_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}scipy>0:${PORTSDIR}/science/py-scipy
62
BTLNCK_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}bottleneck>0:${PORTSDIR}/math/py-bottleneck
63
NUMEXPR_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}numexpr>0:${PORTSDIR}/math/py-numexpr
64
BOTO_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}boto>0:${PORTSDIR}/devel/py-boto
65
TABLES_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}tables>0:${PORTSDIR}/devel/py-tables
66
LXML_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}lxml>0:${PORTSDIR}/devel/py-lxml
67
HTML5LIB_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}html5lib>0:${PORTSDIR}/www/py-html5lib
68
OPENPYXL_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}openpyxl<2.0.0:${PORTSDIR}/textproc/py-openpyxl1
69
XLRD_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}xlrd>0:${PORTSDIR}/textproc/py-xlrd
70
XLWT_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}xlwt>0:${PORTSDIR}/textproc/py-xlwt
71
72
.include <bsd.port.options.mk>
73
74
.if ${PORT_OPTIONS:MLXML} || ${PORT_OPTIONS:MHTML5LIB}
75
RUN_DEPENDS+=	${PYTHON_PKGNAMEPREFIX}beautifulsoup>0:${PORTSDIR}/www/py-beautifulsoup
76
.endif
77
38
SUB_FILES=	pkg-message
78
SUB_FILES=	pkg-message
39
79
40
USE_PYTHON=		yes
80
USE_PYTHON=		yes
Lines 54-60 Link Here
54
		${PYTHON_CMD} ${PYSETUP} build_ext --inplace && \
94
		${PYTHON_CMD} ${PYSETUP} build_ext --inplace && \
55
		${PYTHON_CMD} -c 'import pandas.util.print_versions as pv; pv.show_versions()' && \
95
		${PYTHON_CMD} -c 'import pandas.util.print_versions as pv; pv.show_versions()' && \
56
		( ${SETENV} ${NOSE_ENV} nosetests ${NOSE_ARGS} || ${TRUE} ) && \
96
		( ${SETENV} ${NOSE_ENV} nosetests ${NOSE_ARGS} || ${TRUE} ) && \
57
		${PYTHON_CMD} ${SCRIPTDIR}/print_skipped.py ${XUNITFILE}
97
		${PYTHON_CMD} ${SCRIPTDIR}/print_skipped.py ${XUNITFILE} \
58
	)
98
	)
59
99
60
.include <bsd.port.mk>
100
.include <bsd.port.mk>
(-)math/py-pandas/distinfo (-2 / +2 lines)
Lines 1-2 Link Here
1
SHA256 (pandas-0.13.1.tar.gz) = 6813746caa796550969ed98069f16627f070f6d8d60686cfb3fa0e66c2e0312b
1
SHA256 (pandas-0.14.0.tar.gz) = f7997debca756c4dd5ccdf5a010dfe3d1c7dac98ee706b715d994cf7c9d35528
2
SIZE (pandas-0.13.1.tar.gz) = 6096890
2
SIZE (pandas-0.14.0.tar.gz) = 6526846
(-)math/py-pandas/files/pkg-message.in (-29 / +1 lines)
Lines 1-31 Link Here
1
===
1
===
2
Note that the following ports are not strict dependencies but are highly
2
If you wish, install math/py-statsmodels to enable parts of pandas.stats.
3
recommended to get the most out of pandas. Install them as needed.
4
5
Library		Port origin		Purpose
6
-------		-----------		-------
7
boto		devel/py-boto		access Amazon S3
8
pytables	devel/py-tables		necessary for HDF5-based storage
9
bottleneck	math/py-bottleneck	accelerate certain NaN evals
10
matplotlib	math/py-matplotlib	plotting
11
numexpr		math/py-numexpr		accelerate certain numerical ops
12
statsmodels	math/py-statsmodels	enables parts of pandas.stats
13
scipy		science/py-scipy	misc. statistical functions
14
openpyxl	textproc/py-openpyxl	Excel 2007+ I/O
15
xlrd		textproc/py-xlrd	Excel input
16
xlwt		textproc/py-xlwt	Excel output
17
18
To use the HTML table parsing capabilities that were introduced in
19
pandas 0.12.0, you will need to install
20
21
beautifulsoup	www/py-beautifulsoup
22
23
and one or the other or both of
24
25
html5lib	www/py-html5lib
26
lxml		devel/py-lxml
27
28
Please read the pandas documentation before deciding:
29
30
http://pandas.pydata.org/pandas-docs/stable/gotchas.html#html-gotchas
31
===
3
===
(-)math/py-pandas/files/print_skipped.py (-51 lines)
Lines 1-51 Link Here
1
#!/usr/bin/env python
2
3
import sys
4
import math
5
import xml.etree.ElementTree as et
6
7
8
def parse_results(filename):
9
    tree = et.parse(filename)
10
    root = tree.getroot()
11
    skipped = []
12
13
    current_class = old_class = ''
14
    i = 1
15
    assert i - 1 == len(skipped)
16
    for el in root.findall('testcase'):
17
        cn = el.attrib['classname']
18
        for sk in el.findall('skipped'):
19
            old_class = current_class
20
            current_class = cn
21
            name = '{classname}.{name}'.format(classname=current_class,
22
                                               name=el.attrib['name'])
23
            msg = sk.attrib['message']
24
            out = ''
25
            if old_class != current_class:
26
                ndigits = int(math.log(i, 10) + 1)
27
                out += ('-' * (len(name + msg) + 4 + ndigits) + '\n') # 4 for : + space + # + space
28
            out += '#{i} {name}: {msg}'.format(i=i, name=name, msg=msg)
29
            skipped.append(out)
30
            i += 1
31
            assert i - 1 == len(skipped)
32
    assert i - 1 == len(skipped)
33
    assert len(skipped) == int(root.attrib['skip'])
34
    return '\n'.join(skipped)
35
36
37
def main(args):
38
    print('SKIPPED TESTS:')
39
    print(parse_results(args.filename))
40
    return 0
41
42
43
def parse_args():
44
    import argparse
45
    parser = argparse.ArgumentParser()
46
    parser.add_argument('filename', help='XUnit file to parse')
47
    return parser.parse_args()
48
49
50
if __name__ == '__main__':
51
    sys.exit(main(parse_args()))
(-)math/py-pandas/scripts/print_skipped.py (+51 lines)
Line 0 Link Here
1
#!/usr/bin/env python
2
3
import sys
4
import math
5
import xml.etree.ElementTree as et
6
7
8
def parse_results(filename):
9
    tree = et.parse(filename)
10
    root = tree.getroot()
11
    skipped = []
12
13
    current_class = old_class = ''
14
    i = 1
15
    assert i - 1 == len(skipped)
16
    for el in root.findall('testcase'):
17
        cn = el.attrib['classname']
18
        for sk in el.findall('skipped'):
19
            old_class = current_class
20
            current_class = cn
21
            name = '{classname}.{name}'.format(classname=current_class,
22
                                               name=el.attrib['name'])
23
            msg = sk.attrib['message']
24
            out = ''
25
            if old_class != current_class:
26
                ndigits = int(math.log(i, 10) + 1)
27
                out += ('-' * (len(name + msg) + 4 + ndigits) + '\n') # 4 for : + space + # + space
28
            out += '#{i} {name}: {msg}'.format(i=i, name=name, msg=msg)
29
            skipped.append(out)
30
            i += 1
31
            assert i - 1 == len(skipped)
32
    assert i - 1 == len(skipped)
33
    assert len(skipped) == int(root.attrib['skip'])
34
    return '\n'.join(skipped)
35
36
37
def main(args):
38
    print('SKIPPED TESTS:')
39
    print(parse_results(args.filename))
40
    return 0
41
42
43
def parse_args():
44
    import argparse
45
    parser = argparse.ArgumentParser()
46
    parser.add_argument('filename', help='XUnit file to parse')
47
    return parser.parse_args()
48
49
50
if __name__ == '__main__':
51
    sys.exit(main(parse_args()))

Return to bug 190850