Open rsvp opened 6 years ago
Home for our Jupyter notebooks shall remain at fecon235
due to their bulky size.
Migration to the python3 kernel should present no problems
since fecon235 is compatible with both python27 and python3.
End users will be able to simply import fecon236 as fe
as a drop-in replacement.
Version 10 of fecon236 represents the refactoring of only the fecon235 v5.18.0312 library code (not the Jupyter notebooks). It shall maintain compatibility with both python27 and python34.
After 2019-01-01, our official support for python27 will discontinue (like numpy and pandas), however, straddling code may still continue to work.
Version 11 of fecon236 will signal when our Travis builds under python27 fail, and at that point we expect to require at least Python 3.6.
Note the change in repository OWNERSHIP from INDIVIDUAL rsvp to ORGANIZATION MathSci for fecon236 in order to accommodate team permissions.
Starting January 1, 2019, all releases will be Python 3 only.
https://github.com/pandas-dev/pandas/pull/20540/files
Note that this date is one year before Python 3 itself.
Since we depend heavily on numpy
and pandas
,
fecon235 and fecon236 shall also follow this schedule.
Porting to Python 3 guide: https://docs.python.org/3/howto/pyporting.html
The gist is to use Miniconda3 as base for python3
, e.g.
wget http://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh
bash miniconda.sh -b -p $HOME/miniconda
export PATH="$HOME/miniconda/bin:$PATH"
conda config --set always_yes yes --set changeps1 no
conda config --add channels pandas
conda update -q conda
conda info -a
conda install numpy pytz python-dateutil
conda install pandas=0.22
# ^Example: install specific version.
conda install matplotlib
conda list
Then add the few dependencies from the scientific numpy/pandas stack. This avoids the huge bloat to the Docker image size from the alternate, but full, Anaconda distribution (astropy, bokeh, etc.). Take a look at https://hub.docker.com/r/rsvp/fecon235 where eventually we will directly install fecon236 modules.
(Also, this is the way the environment for fecon236 continuous integration
will be built. The .travis.yml
file will appear shortly with more details.)
Major version change for fecon235 from v5 to v6 signaling our integration with fecon236 which was spun-off from our source code.
Henceforth, fecon235 becomes a repository solely of Jupyter notebooks. The old Python source code at fecon235 will remain for archival purposes, while new code development shifts over to fecon236. Please see https://git.io/econ for details.
Revise docs/fecon235-00-README.ipynb to introduce fecon236. Function names have been retained, but under fecon236 the call routing is expected to be more explicit than casual, i.e. modules names are more significant. Please see https://git.io/fecon-intro
Description of specific issue
Our code, currently compatible with both python27 and python3 series, is characterized as "straddling."
We have pledged to drop support for Python 2.7 no later than 2020. Please see https://python3statement.org for details on the transition in the Python ecosystem.
pip install --pre fecon236
Miniconda3-latest-Linux-x86_64.sh
as baseExpected behavior
The transition should be smooth, and we will take the opportunity to refactor and re-organize the code from top-down. Users using the Anaconda distribution based on python27 will have to install a new distribution based on python3. For the fecon235 Docker image, the transition will be announced and automatically be set up for you.
Installation by pip
We have intentionally avoided the
pip
because optimal installation of fecon235 dependencies has been difficult, esp. for binaries and newbies. Unfortunately,pip
is incapable of true dependency resolution (whereas Anacondaconda
installs are reliable). This may change towards the year 2020, where only python3 is involved, andpipenv
matures. The major annoyances are summarized here: https://python3statement.org/practicalities -- and minor details, not mentioned, are even more tedious.