pysal / pointpats

Planar Point Pattern Analysis in PySAL
https://pysal.org/pointpats/
BSD 3-Clause "New" or "Revised" License
83 stars 26 forks source link

[WIP] Migrate to GitHub Actions for testing #64

Closed jGaboardi closed 1 year ago

jGaboardi commented 4 years ago

This PR addresses #63.

Still needs attention from a maintainer:

jGaboardi commented 4 years ago

This is currently passing for Python 3.8 Ubuntu, before failing for Python 3.6 Ubuntu at test_ripley.py::test_primitives with INTERNALERROR> RecursionError: maximum recursion depth exceeded. Will try narrowing down the error source by restricting environments in unittests.yml.

jGaboardi commented 4 years ago

jGaboardi/pointpats passes on:

Python/OS macOS Ubuntu Windows
3.6
3.7
3.8
jGaboardi commented 4 years ago

Can confirm that the Python 3.6 test of test_ripley.py::test_primitives fails for every OS on GHA and also macOS locally with: No longer supporting Python 3.6

failures ``` pointpats/tests/test_ripley.py::test_primitives INTERNALERROR> Traceback (most recent call last): INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/_pytest/main.py", line 191, in wrap_session INTERNALERROR> session.exitstatus = doit(config, session) or 0 INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/_pytest/main.py", line 247, in _main INTERNALERROR> config.hook.pytest_runtestloop(session=session) INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/pluggy/hooks.py", line 286, in __call__ INTERNALERROR> return self._hookexec(self, self.get_hookimpls(), kwargs) INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/pluggy/manager.py", line 93, in _hookexec INTERNALERROR> return self._inner_hookexec(hook, methods, kwargs) INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/pluggy/manager.py", line 87, in INTERNALERROR> firstresult=hook.spec.opts.get("firstresult") if hook.spec else False, INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/pluggy/callers.py", line 203, in _multicall INTERNALERROR> gen.send(outcome) INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/pluggy/callers.py", line 80, in get_result INTERNALERROR> raise ex[1].with_traceback(ex[2]) INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/pluggy/callers.py", line 187, in _multicall INTERNALERROR> res = hook_impl.function(*args) INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/_pytest/main.py", line 272, in pytest_runtestloop INTERNALERROR> item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem) INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/pluggy/hooks.py", line 286, in __call__ INTERNALERROR> return self._hookexec(self, self.get_hookimpls(), kwargs) INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/pluggy/manager.py", line 93, in _hookexec INTERNALERROR> return self._inner_hookexec(hook, methods, kwargs) INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/pluggy/manager.py", line 87, in INTERNALERROR> firstresult=hook.spec.opts.get("firstresult") if hook.spec else False, INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/pluggy/callers.py", line 208, in _multicall INTERNALERROR> return outcome.get_result() INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/pluggy/callers.py", line 80, in get_result INTERNALERROR> raise ex[1].with_traceback(ex[2]) INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/pluggy/callers.py", line 187, in _multicall INTERNALERROR> res = hook_impl.function(*args) INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/_pytest/runner.py", line 85, in pytest_runtest_protocol INTERNALERROR> runtestprotocol(item, nextitem=nextitem) INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/_pytest/runner.py", line 100, in runtestprotocol INTERNALERROR> reports.append(call_and_report(item, "call", log)) INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/_pytest/runner.py", line 188, in call_and_report INTERNALERROR> report = hook.pytest_runtest_makereport(item=item, call=call) INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/pluggy/hooks.py", line 286, in __call__ INTERNALERROR> return self._hookexec(self, self.get_hookimpls(), kwargs) INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/pluggy/manager.py", line 93, in _hookexec INTERNALERROR> return self._inner_hookexec(hook, methods, kwargs) INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/pluggy/manager.py", line 87, in INTERNALERROR> firstresult=hook.spec.opts.get("firstresult") if hook.spec else False, INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/pluggy/callers.py", line 203, in _multicall INTERNALERROR> gen.send(outcome) INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/_pytest/skipping.py", line 129, in pytest_runtest_makereport INTERNALERROR> rep = outcome.get_result() INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/pluggy/callers.py", line 80, in get_result INTERNALERROR> raise ex[1].with_traceback(ex[2]) INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/pluggy/callers.py", line 187, in _multicall INTERNALERROR> res = hook_impl.function(*args) INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/_pytest/runner.py", line 260, in pytest_runtest_makereport INTERNALERROR> return TestReport.from_item_and_call(item, call) INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/_pytest/reports.py", line 294, in from_item_and_call INTERNALERROR> longrepr = item.repr_failure(excinfo) INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/_pytest/python.py", line 1511, in repr_failure INTERNALERROR> return self._repr_failure_py(excinfo, style=style) INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/_pytest/nodes.py", line 369, in _repr_failure_py INTERNALERROR> truncate_locals=truncate_locals, INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/_pytest/_code/code.py", line 635, in getrepr INTERNALERROR> return fmt.repr_excinfo(self) INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/_pytest/_code/code.py", line 880, in repr_excinfo INTERNALERROR> reprtraceback = self.repr_traceback(excinfo_) INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/_pytest/_code/code.py", line 824, in repr_traceback INTERNALERROR> reprentry = self.repr_traceback_entry(entry, einfo) INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/_pytest/_code/code.py", line 786, in repr_traceback_entry INTERNALERROR> s = self.get_source(source, line_index, excinfo, short=short) INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/_pytest/_code/code.py", line 725, in get_source INTERNALERROR> lines.extend(self.get_exconly(excinfo, indent=indent, markall=True)) INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/_pytest/_code/code.py", line 734, in get_exconly INTERNALERROR> exlines = excinfo.exconly(tryshort=True).split("\n") INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/_pytest/_code/code.py", line 558, in exconly INTERNALERROR> lines = format_exception_only(self.type, self.value) INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/traceback.py", line 140, in format_exception_only INTERNALERROR> return list(TracebackException(etype, value, None).format_exception_only()) INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/traceback.py", line 498, in __init__ INTERNALERROR> _seen=_seen) INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/traceback.py", line 498, in __init__ INTERNALERROR> _seen=_seen) INTERNALERROR> File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/traceback.py", line 498, in __init__ INTERNALERROR> _seen=_seen) INTERNALERROR> [Previous line repeated 233 more times] INTERNALERROR> RecursionError: maximum recursion depth exceeded ```
jGaboardi commented 4 years ago

After digging in here, it appears that pointpats.geometry.area(shape) is the culprit, specifically line 38 (return area(numpy.asarray(shape))), that is breaking in Python 3.6 tests. Not sure what the actually issue is here though. Any thoughts, @sjsrey, @ljwolf, @weikang9009, @shaohu? No longer supporting Python 3.6

jGaboardi commented 4 years ago

Something that I should have checked first, but did not, was the current status of TravisCI builds for pointpats... Seems that this has been a known issue for Python 3.6? No longer supporting Python 3.6

jGaboardi commented 4 years ago

And now I see the actual commit that addresses this issue. This is an issue specific to pytest?

jGaboardi commented 4 years ago

FWIW, dramatically increasing the recursion limit (sys.setrecursionlimit(25000)) does not solve the problem. Maybe the shape parameter is not being registered?

jGaboardi commented 4 years ago

The same tests also fail with nose, so this is not a pytest issue. Also, more nose gives more detailed (albeit messy) feedback and seems to confirm the problem with the return area(numpy.asarray(shape)) recursion. There also appear to be errors with missing positional arguments.

Full (truncated) traceback.
``` (py3_pointpats) USER:pointpats user$ nosetests pointpats -v Ripley's F function ... ERROR Ripley's G function ... ERROR Ripley's J function ... ERROR Ripley's K function ... ERROR Ripley's L function ... ERROR test_centrography_ellipse (pointpats.tests.test_centrography.TestCentrography) ... ok test_centrography_euclidean_median (pointpats.tests.test_centrography.TestCentrography) ... ok test_centrography_hull (pointpats.tests.test_centrography.TestCentrography) ... ok test_centrography_mar (pointpats.tests.test_centrography.TestCentrography) ... ok test_centrography_mbr (pointpats.tests.test_centrography.TestCentrography) ... ok test_centrography_mean_center (pointpats.tests.test_centrography.TestCentrography) ... ok test_centrography_std_distance (pointpats.tests.test_centrography.TestCentrography) ... ok test_distance_statistics_F (pointpats.tests.test_distance_statistics.TestDistanceStatistics) ... ok test_distance_statistics_G (pointpats.tests.test_distance_statistics.TestDistanceStatistics) ... ok test_distance_statistics_J (pointpats.tests.test_distance_statistics.TestDistanceStatistics) ... ok test_distance_statistics_K (pointpats.tests.test_distance_statistics.TestDistanceStatistics) ... ok test_distance_statistics_L (pointpats.tests.test_distance_statistics.TestDistanceStatistics) ... ok test_point_pattern_explode (pointpats.tests.test_pointpattern.TestPointPattern) ... ok test_point_pattern_find_pairs (pointpats.tests.test_pointpattern.TestPointPattern) ... ok test_point_pattern_flip_coordinates (pointpats.tests.test_pointpattern.TestPointPattern) ... ok test_point_pattern_hull_area (pointpats.tests.test_pointpattern.TestPointPattern) ... ok test_point_pattern_knn (pointpats.tests.test_pointpattern.TestPointPattern) ... ok test_point_pattern_knn_error (pointpats.tests.test_pointpattern.TestPointPattern) ... ok test_point_pattern_knn_other (pointpats.tests.test_pointpattern.TestPointPattern) ... ok test_point_pattern_knn_other_error (pointpats.tests.test_pointpattern.TestPointPattern) ... ok test_point_pattern_lambda_hull (pointpats.tests.test_pointpattern.TestPointPattern) ... ok test_point_pattern_lambda_mbb (pointpats.tests.test_pointpattern.TestPointPattern) ... ok test_point_pattern_max_nnd (pointpats.tests.test_pointpattern.TestPointPattern) ... ok test_point_pattern_mbb_area (pointpats.tests.test_pointpattern.TestPointPattern) ... ok test_point_pattern_mean_nnd (pointpats.tests.test_pointpattern.TestPointPattern) ... ok test_point_pattern_min_nnd (pointpats.tests.test_pointpattern.TestPointPattern) ... ok test_point_pattern_n (pointpats.tests.test_pointpattern.TestPointPattern) ... ok test_QStatistic (pointpats.tests.test_quadrat_statistics.TestQuadratStatistics) ... ok test_RectangleM1 (pointpats.tests.test_quadrat_statistics.TestQuadratStatistics) ... ok test_RectangleM2 (pointpats.tests.test_quadrat_statistics.TestQuadratStatistics) ... ok pointpats.tests.test_ripley.test_primitives ... ERROR pointpats.tests.test_ripley.test_tree_functions ... ok pointpats.tests.test_ripley.test_prepare ... ERROR pointpats.tests.test_ripley.test_simulate ... ERROR pointpats.tests.test_ripley.test_f ... ERROR pointpats.tests.test_ripley.test_g ... ERROR pointpats.tests.test_ripley.test_j ... ERROR pointpats.tests.test_ripley.test_k ... ERROR pointpats.tests.test_ripley.test_l ... ERROR test_jacquez (pointpats.tests.test_spacetime.Jacquez_Tester) ... /Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/libpysal/weights/weights.py:172: UserWarning: The weights matrix is not fully connected: There are 13 disconnected components. warnings.warn(message) /Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/libpysal/weights/weights.py:172: UserWarning: The weights matrix is not fully connected: There are 3 disconnected components. warnings.warn(message) ok test_knox (pointpats.tests.test_spacetime.Knox_Tester) ... ok test_mantel (pointpats.tests.test_spacetime.Mantel_Tester) ... ok test_modified_knox (pointpats.tests.test_spacetime.ModifiedKnox_Tester) ... ok test_modified_knox (pointpats.tests.test_spacetime.ModifiedKnox_Tester) ... ok test_SpaceTimeEvents (pointpats.tests.test_spacetime.SpaceTimeEvents_Tester) ... ok ====================================================================== ERROR: Ripley's F function ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/nose/case.py", line 197, in runTest self.test(*self.arg) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/nose/util.py", line 620, in newfunc return func(*arg, **kw) TypeError: f_test() missing 1 required positional argument: 'coordinates' ====================================================================== ERROR: Ripley's G function ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/nose/case.py", line 197, in runTest self.test(*self.arg) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/nose/util.py", line 620, in newfunc return func(*arg, **kw) TypeError: g_test() missing 1 required positional argument: 'coordinates' ====================================================================== ERROR: Ripley's J function ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/nose/case.py", line 197, in runTest self.test(*self.arg) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/nose/util.py", line 620, in newfunc return func(*arg, **kw) TypeError: j_test() missing 1 required positional argument: 'coordinates' ====================================================================== ERROR: Ripley's K function ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/nose/case.py", line 197, in runTest self.test(*self.arg) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/nose/util.py", line 620, in newfunc return func(*arg, **kw) TypeError: k_test() missing 1 required positional argument: 'coordinates' ====================================================================== ERROR: Ripley's L function ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/nose/case.py", line 197, in runTest self.test(*self.arg) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/nose/util.py", line 620, in newfunc return func(*arg, **kw) TypeError: l_test() missing 1 required positional argument: 'coordinates' ====================================================================== ERROR: pointpats.tests.test_ripley.test_primitives ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/nose/case.py", line 133, in run self.runTest(result) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/nose/case.py", line 151, in runTest test(result) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/unittest/case.py", line 653, in __call__ return self.run(*args, **kwds) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/unittest/case.py", line 613, in run self._feedErrorsToResult(result, outcome.errors) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/unittest/case.py", line 543, in _feedErrorsToResult result.addError(test, exc_info) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/nose/proxy.py", line 132, in addError self.result.addError(self.test, self._prepareErr(err)) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/nose/result.py", line 61, in addError exc_info = self._exc_info_to_string(err, test) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/nose/result.py", line 187, in _exc_info_to_string return _TextTestResult._exc_info_to_string(self, err, test) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/unittest/result.py", line 186, in _exc_info_to_string exctype, value, tb, limit=length, capture_locals=self.tb_locals) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/traceback.py", line 498, in __init__ _seen=_seen) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/traceback.py", line 498, in __init__ _seen=_seen) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/traceback.py", line 498, in __init__ _seen=_seen) [Previous line repeated 232 more times] RecursionError: maximum recursion depth exceeded ====================================================================== ERROR: pointpats.tests.test_ripley.test_prepare ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/nose/case.py", line 197, in runTest self.test(*self.arg) File "/Users/user/pointpats/pointpats/tests/test_ripley.py", line 100, in test_prepare tmp_bbox = ripley._prepare_hull(points, "bbox") File "/Users/user/pointpats/pointpats/geometry.py", line 398, in prepare_hull return bbox(coordinates) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/functools.py", line 807, in wrapper return dispatch(args[0].__class__)(*args, **kw) File "/Users/user/pointpats/pointpats/geometry.py", line 70, in bbox return bbox(numpy.asarray(shape)) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/functools.py", line 807, in wrapper return dispatch(args[0].__class__)(*args, **kw) File "/Users/user/pointpats/pointpats/geometry.py", line 70, in bbox return bbox(numpy.asarray(shape)) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/functools.py", line 807, in wrapper return dispatch(args[0].__class__)(*args, **kw) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/functools.py", line 778, in dispatch impl = dispatch_cache[cls] File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/weakref.py", line 394, in __getitem__ return self.data[ref(key)] RecursionError: maximum recursion depth exceeded while calling a Python object ====================================================================== ERROR: pointpats.tests.test_ripley.test_simulate ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/nose/case.py", line 197, in runTest self.test(*self.arg) File "/Users/user/pointpats/pointpats/tests/test_ripley.py", line 194, in test_simulate assert random.poisson(ashape).shape == (100, 2) File "/Users/user/pointpats/pointpats/random.py", line 145, in poisson bbox = _bbox(hull) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/functools.py", line 807, in wrapper return dispatch(args[0].__class__)(*args, **kw) File "/Users/user/pointpats/pointpats/geometry.py", line 70, in bbox return bbox(numpy.asarray(shape)) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/functools.py", line 807, in wrapper return dispatch(args[0].__class__)(*args, **kw) File "/Users/user/pointpats/pointpats/geometry.py", line 70, in bbox return bbox(numpy.asarray(shape)) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/functools.py", line 807, in wrapper return dispatch(args[0].__class__)(*args, **kw) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/functools.py", line 778, in dispatch impl = dispatch_cache[cls] File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/weakref.py", line 394, in __getitem__ return self.data[ref(key)] RecursionError: maximum recursion depth exceeded while calling a Python object ====================================================================== ERROR: pointpats.tests.test_ripley.test_f ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/nose/case.py", line 197, in runTest self.test(*self.arg) File "/Users/user/pointpats/pointpats/tests/test_ripley.py", line 218, in test_f nn_other = D_other.min(axis=0) NameError: name 'D_other' is not defined ====================================================================== ERROR: pointpats.tests.test_ripley.test_g ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/nose/case.py", line 197, in runTest self.test(*self.arg) File "/Users/user/pointpats/pointpats/tests/test_ripley.py", line 249, in test_g g_test = ripley.g_test(points, support=support, n_simulations=99) File "/Users/user/pointpats/pointpats/distance_statistics.py", line 722, in g_test n_simulations=n_simulations, File "/Users/user/pointpats/pointpats/distance_statistics.py", line 544, in _ripley_test hull = _prepare_hull(coordinates, hull) File "/Users/user/pointpats/pointpats/geometry.py", line 398, in prepare_hull return bbox(coordinates) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/functools.py", line 807, in wrapper return dispatch(args[0].__class__)(*args, **kw) File "/Users/user/pointpats/pointpats/geometry.py", line 70, in bbox return bbox(numpy.asarray(shape)) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/functools.py", line 807, in wrapper return dispatch(args[0].__class__)(*args, **kw) File "/Users/user/pointpats/pointpats/geometry.py", line 70, in bbox return bbox(numpy.asarray(shape)) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/functools.py", line 807, in wrapper return dispatch(args[0].__class__)(*args, **kw) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/functools.py", line 778, in dispatch impl = dispatch_cache[cls] File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/weakref.py", line 394, in __getitem__ return self.data[ref(key)] RecursionError: maximum recursion depth exceeded in comparison ====================================================================== ERROR: pointpats.tests.test_ripley.test_j ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/nose/case.py", line 197, in runTest self.test(*self.arg) File "/Users/user/pointpats/pointpats/tests/test_ripley.py", line 269, in test_j j_test = ripley.j_test(points, support=support, n_simulations=99) File "/Users/user/pointpats/pointpats/distance_statistics.py", line 786, in j_test truncate=truncate, File "/Users/user/pointpats/pointpats/distance_statistics.py", line 544, in _ripley_test hull = _prepare_hull(coordinates, hull) File "/Users/user/pointpats/pointpats/geometry.py", line 398, in prepare_hull return bbox(coordinates) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/functools.py", line 807, in wrapper return dispatch(args[0].__class__)(*args, **kw) File "/Users/user/pointpats/pointpats/geometry.py", line 70, in bbox return bbox(numpy.asarray(shape)) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/functools.py", line 807, in wrapper return dispatch(args[0].__class__)(*args, **kw) File "/Users/user/pointpats/pointpats/geometry.py", line 70, in bbox return bbox(numpy.asarray(shape)) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/functools.py", line 807, in wrapper return dispatch(args[0].__class__)(*args, **kw) File "/Users/user/pointpats/pointpats/geometry.py", line 70, in bbox return bbox(numpy.asarray(shape)) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/functools.py", line 807, in wrapper return dispatch(args[0].__class__)(*args, **kw) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/functools.py", line 778, in dispatch impl = dispatch_cache[cls] File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/weakref.py", line 394, in __getitem__ return self.data[ref(key)] RecursionError: maximum recursion depth exceeded in comparison ====================================================================== ERROR: pointpats.tests.test_ripley.test_k ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/nose/case.py", line 197, in runTest self.test(*self.arg) File "/Users/user/pointpats/pointpats/tests/test_ripley.py", line 293, in test_k k_test = ripley.k_test(points, support=support) File "/Users/user/pointpats/pointpats/distance_statistics.py", line 850, in k_test n_simulations=n_simulations, File "/Users/user/pointpats/pointpats/distance_statistics.py", line 544, in _ripley_test hull = _prepare_hull(coordinates, hull) File "/Users/user/pointpats/pointpats/geometry.py", line 398, in prepare_hull return bbox(coordinates) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/functools.py", line 807, in wrapper return dispatch(args[0].__class__)(*args, **kw) File "/Users/user/pointpats/pointpats/geometry.py", line 70, in bbox return bbox(numpy.asarray(shape)) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/functools.py", line 807, in wrapper return dispatch(args[0].__class__)(*args, **kw) File "/Users/user/pointpats/pointpats/geometry.py", line 70, in bbox return bbox(numpy.asarray(shape)) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/functools.py", line 807, in wrapper return dispatch(args[0].__class__)(*args, **kw) File "/Users/user/pointpats/pointpats/geometry.py", line 70, in bbox return bbox(numpy.asarray(shape)) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/functools.py", line 807, in wrapper return dispatch(args[0].__class__)(*args, **kw) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/functools.py", line 778, in dispatch impl = dispatch_cache[cls] File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/weakref.py", line 394, in __getitem__ return self.data[ref(key)] RecursionError: maximum recursion depth exceeded in comparison ====================================================================== ERROR: pointpats.tests.test_ripley.test_l ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/site-packages/nose/case.py", line 197, in runTest self.test(*self.arg) File "/Users/user/pointpats/pointpats/tests/test_ripley.py", line 307, in test_l _, k = ripley.k(points, support=support) File "/Users/user/pointpats/pointpats/distance_statistics.py", line 412, in k coordinates, support, distances, metric, None, edge_correction File "/Users/user/pointpats/pointpats/distance_statistics.py", line 60, in _prepare hull = _prepare_hull(coordinates, hull) File "/Users/user/pointpats/pointpats/geometry.py", line 398, in prepare_hull return bbox(coordinates) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/functools.py", line 807, in wrapper return dispatch(args[0].__class__)(*args, **kw) File "/Users/user/pointpats/pointpats/geometry.py", line 70, in bbox return bbox(numpy.asarray(shape)) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/functools.py", line 807, in wrapper return dispatch(args[0].__class__)(*args, **kw) File "/Users/user/pointpats/pointpats/geometry.py", line 70, in bbox return bbox(numpy.asarray(shape)) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/functools.py", line 807, in wrapper return dispatch(args[0].__class__)(*args, **kw) File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/functools.py", line 778, in dispatch impl = dispatch_cache[cls] File "/Users/user/miniconda3/envs/py3_pointpats/lib/python3.6/weakref.py", line 394, in __getitem__ return self.data[ref(key)] RecursionError: maximum recursion depth exceeded in comparison ---------------------------------------------------------------------- Ran 50 tests in 0.611s FAILED (errors=13) ```
jGaboardi commented 2 years ago

Looking at & updating this PR again; now getting 1 error for test_centrography, perhaps related to #69, but I couldn't pull up the job diagnostic because travis.org is no longer a thing (?).

jGaboardi commented 2 years ago

@sjsrey maybe you could grant @ljwolf and I maintainership? @shaohu would that be OK with you?

martinfleis commented 1 year ago

@jGaboardi I see that you have already started working on this some time ago. We shall probably move some stuff from here to #87 or to update this once that one gets merged. This got out-of-date in the meantime.

jGaboardi commented 1 year ago

I completely for got about this...

martinfleis commented 1 year ago

We should include .coveragerc in the pytest call.

jGaboardi commented 1 year ago

I'd love to get this merged and be done with it, but we still be enable codecov, etc...

codecov[bot] commented 1 year ago

Codecov Report

Merging #64 (54d0595) into master (6723b40) will decrease coverage by 10.68%. The diff coverage is n/a.

@@             Coverage Diff             @@
##           master      #64       +/-   ##
===========================================
- Coverage   63.15%   52.47%   -10.68%     
===========================================
  Files          19       12        -7     
  Lines        2266     1841      -425     
  Branches        0      315      +315     
===========================================
- Hits         1431      966      -465     
+ Misses        835      819       -16     
- Partials        0       56       +56     
Impacted Files Coverage Δ
pointpats/window.py 69.56% <0.00%> (-8.70%) :arrow_down:
pointpats/distance_statistics.py 75.00% <0.00%> (-8.42%) :arrow_down:
pointpats/quadrat_statistics.py 56.45% <0.00%> (-4.84%) :arrow_down:
pointpats/spacetime.py 89.37% <0.00%> (-3.75%) :arrow_down:
pointpats/_deprecated_distance_statistics.py 49.51% <0.00%> (-3.37%) :arrow_down:
pointpats/pointpattern.py 70.05% <0.00%> (-2.83%) :arrow_down:
pointpats/geometry.py 82.27% <0.00%> (-2.00%) :arrow_down:
pointpats/process.py 49.07% <0.00%> (-1.86%) :arrow_down:
pointpats/random.py 25.46% <0.00%> (-1.25%) :arrow_down:
pointpats/centrography.py 46.03% <0.00%> (-1.00%) :arrow_down:
... and 8 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

martinfleis commented 1 year ago

@jGaboardi merge when ready

jGaboardi commented 1 year ago

Yeah, I guess we can merge for now and then update README for codecov, etc. later.