As specified in the requirements.txt and setup.py.
They are needed by plpy procedural language, which uses the python
system installation and python modules that must be installed at system
level with their c/c++ bindings.
We have some experience with those: getting a working installation is
easy, but getting it right is not obvious at all.
These are the tested and packages versions, so for the moment I'm
pinning to those.
This solves a problem with the Markov analysis. Otherwise, with some
inputs it gives the following error:
```
Analysis A2 failed:
ValueError: operands could not be broadcast together with shapes (5) (3)
```
The stack trace is the following:
```
ERROR: ValueError: operands could not be broadcast together with shapes (5) (2)
CONTEXT: Traceback (most recent call last):
PL/Python function "cdb_spatialmarkovtrend", line 7, in <module>
return markov.spatial_trend(subquery, time_cols, num_classes, w_type, num_ngbrs, permutations, geom_col, id_col)
PL/Python function "cdb_spatialmarkovtrend", line 76, in spatial_trend
PL/Python function "cdb_spatialmarkovtrend", line 416, in __init__
PL/Python function "cdb_spatialmarkovtrend", line 498, in _mn_test
PL/Python function "cdb_spatialmarkovtrend", line 526, in _ssmnp_test
PL/Python function "cdb_spatialmarkovtrend"
```
and here is the line where it actually fails:
https://github.com/pysal/pysal/blob/v1.11.2/pysal/spatial_dynamics/markov.py#L526
In v1.14.3, the `shtest` is opt-in. So this gives us a chance to curate data if we wanted to apply that test, optionally, instead of crashing:
https://github.com/pysal/pysal/blob/v1.14.3/pysal/spatial_dynamics/markov.py#L490