Comments (9)
@jhkennedy, here's what we're up against, I'm afraid. A lot of CDAT packages (those from the CDAT channel) aren't built with python 3.7 yet. I think both processflow
and zstash
are strictly python 2.7 right now.
from e3sm-unified.
@jgfouca didn't CIME use six.py to help support both python 2 and python 3? Maybe that could help here.
from e3sm-unified.
@rljacob, thanks for the tip. I think we have a pretty good handle on the process for making packages work with both. @jhkennedy and I have both done this with LIVVKit and MPAS-Analysis, respectively. I think @zshaheen and @chengzhuzhang have also done this with e3sm_diags.
The remaining work falls into two categories:
- A lot of CDAT packages (on the
cdat
channel) were built with python 3.6 but not 3.7. With some help from @doutriaux1 or someone else on the CDAT team, this shouldn't be too hard to address processflow
andzstash
were written in python 2.7. It's just a matter of @sterlingbaldwin and @zshaheen putting in the time to make them python-3 compatible, which is partly a question of priorities. @jhkennedy and I are happy to help with that (as I think everyone involved knows).
from e3sm-unified.
As a fallback, all of the packages we need from the cdat
channel do support python 3.6. So if we get to a point where processflow
and zstash
are ready to go but cdat
stuff isn't, we could do the first py3 version with 3.6.
from e3sm-unified.
It sounds like the various cdat
packages will have a v8.1 release early next week, including python 3.7 support! So that will take care of most of this.
from e3sm-unified.
Q: what does it mean to "support" python 3.6 vs. 3.7? Are python minor versions so different that code is not forward portable? Like going from 2 to 3?
from e3sm-unified.
@rljacob in the conda context, it means there is a compatible build for that specific version of python. For example, e3sm_nex
has a build matrix that includes py27, py36, win, osx, and linux, which you can see reflected in the file names here: https://anaconda.org/cdat/e3sm_nex/files
So supporting python 3.7 just requires someone to build a 3.7 version (or building a noarch package that works on any python, if possible).
The major benefit of conda-forge is that the build matrix is handled automatically by CI tools, so if it's possible to get a package on conda-forge, that should be what's done.
(@xylar I think that mostly covers it, did I miss anything? )
from e3sm-unified.
And python minor versions should be backwards compatible, so if it works in 3.(x) it should work in 3.(x+1).
See PEP 387
from e3sm-unified.
Thanks @jhkennedy, that covers it and I was in the process of writing essentially the same thing.
As @jhkennedy said, it's not necessarily about changing the code (I didn't have to do anything in MPAS-Analysis to support 3.6 and 3.7 once I got set up for python 3.5) but each package has to either be specifically built for each python major and minor version or it has to say that it works with all supported versions (on conda-forge, this is currently 2.7, 3.6, 3.7) without any differences in build.
from e3sm-unified.
Related Issues (20)
- Deploy to a new path on acme1 LLNL HOT 11
- Mac OSX build of e3sm-unified HOT 12
- e3sm-unified no longer supports high res analysis (cdf5 not supported) HOT 3
- Anvil/Blues is getting upgraded to slurm and LMod (yay!) HOT 1
- not able to add latest processflow and e3sm_unified versions HOT 1
- many packages in e3sm-unified are cobbering other packages HOT 1
- problem packages for e3sm-unified 1.2.6
- mpi4py on HPC HOT 6
- CI for building containers is currently broken HOT 2
- Enable better CI HOT 3
- e3sm_diags doesn't work in sysmpi environment HOT 1
- Build failing due to Dask dependency HOT 1
- v1.3.0 not building with numpy 1.18.1
- Change from acme to e3sm on NERSC HOT 2
- cdscan fails on grib control files HOT 27
- latest ncremap failed with vertical interpolation HOT 9
- slow on NERSC compute nodes HOT 7
- Tempest-extreme in e3sm-unified HOT 12
- MPI_Init error running ilamb on LCRC HOT 8
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from e3sm-unified.