Skip to content

Commit

Permalink
Drop support for Python 3.4 and update package/compiler minimum versions
Browse files Browse the repository at this point in the history
* Starting now, only Python >= 3.5 is support.

* Document numpy >= 1.12, scipy >= 0.19, matplotlib >= 2.0 requirements.

* Make CMake v3.1 requirement official.

* Require gcc 5 or clang 3.5 as the minimum compiler versions on Linux.
  This is a soft requirement: It's documented this way, but CI tests
  continue with GCC 4.8 in C++11 mode. It won't be possible to drop
  this and fully upgrade to C++14 until conda-forge updates their
  toolchain to GCC 5.
  • Loading branch information
dean0x7d committed Apr 4, 2017
1 parent 867a83e commit 43e8806
Show file tree
Hide file tree
Showing 10 changed files with 34 additions and 25 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.0)
cmake_minimum_required(VERSION 3.1)
project(pybinding)

if(NOT CMAKE_BUILD_TYPE)
Expand Down
9 changes: 9 additions & 0 deletions changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,15 @@

### v0.9.0 | in development

##### Updated requirements

* This version includes extensive internal improvements and raises the minimum requirements for
installation. Starting with this release, only Python >= 3.5 is supported. Newer versions of the
scientific Python packages are also required: numpy >= 1.12, scipy >= 0.19 and matplotlib >= 2.0.

* On Linux, the minimum compiler requirements have also been increased to get access to C++14 for
the core of the library. To compile from source, you'll need GCC >= 5.0 or clang >= 3.5.

##### New features

* Improved support for models with multiple orbitals, spins and any additional degrees of freedom.
Expand Down
2 changes: 1 addition & 1 deletion cppcore/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.0)
cmake_minimum_required(VERSION 3.1)
project(pybinding_cppcore)

list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
Expand Down
2 changes: 1 addition & 1 deletion cppmodule/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
set(PYBIND11_CPP_STANDARD ${PB_CPP_STANDARD} CACHE STRING "Match core library")
set(PYBIND11_PYTHON_VERSION 3.4 CACHE STRING "Minimum required Python version")
set(PYBIND11_PYTHON_VERSION 3.5 CACHE STRING "Minimum required Python version")
add_subdirectory(deps/pybind11 EXCLUDE_FROM_ALL)

pybind11_add_module(_pybinding THIN_LTO
Expand Down
2 changes: 1 addition & 1 deletion docs/benchmarks/system_build.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
The considered system sizes can be changed in the `__name__ == '__main__'` section at
the bottom.
Requires Python >= 3.4 and the following packages which can be installed using pip:
Requires Python >= 3.5 and the following packages which can be installed using pip:
- memory_profiler
- psutil (memory_profiler will be slow without it)
Expand Down
11 changes: 6 additions & 5 deletions docs/install/advanced.rst
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,10 @@ installing some dependencies.

Building Pybinding from source is the only option on Linux.

#. Make sure you have gcc and g++ v4.8 or newer. To check, run `g++ --version` in your terminal.
Refer to instruction from your Linux distribution in case you need to upgrade.
#. Install `CMake`_ >= v3.0 from their website or your package manager,
#. Make sure you have gcc and g++ v5.0 or newer. To check, run `g++ --version` in your terminal.
Refer to instruction from your Linux distribution in case you need to upgrade. Alternatively,
you can use clang v3.5 or newer for compilation instead of gcc.
#. Install `CMake`_ >= v3.1 from their website or your package manager,
e.g. `apt-get install cmake`.
#. Install numpy, scipy and matplotlib with the minimal versions as
:doc:`stated previously </install/index>`. The easiest way is to use your package manager,
Expand Down Expand Up @@ -73,8 +74,8 @@ Once you have everything, follow the steps below to compile and install Pybindin

.. rubric:: Linux

You'll need gcc/g++ >= v4.8 and CMake >= v3.0. See the previous section for details. If you have
everything, Pybinding can be installed from the latest source code using pip::
You'll need gcc/g++ >= v5.0 (or clang >= v3.5) and CMake >= v3.1. See the previous section for
details. If you have everything, Pybinding can be installed from the latest source code using pip::

pip3 install git+https://github.com/dean0x7d/pybinding.git

Expand Down
10 changes: 5 additions & 5 deletions docs/install/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@ Installation

Pybinding can be installed on Windows, Linux or Mac, with the following prerequisites:

* `Python`_ 3.4 or newer (Python 2.x is not supported)
* `Python`_ 3.5 or newer (Python 2.x is not supported)
* The `SciPy`_ stack of scientific packages, with required versions:

* numpy >= v1.9
* scipy >= v0.15
* matplotlib >= v1.5
* numpy >= v1.12
* scipy >= v0.19
* matplotlib >= v2.0

* If you're using Linux, you'll also need GCC >= v4.8 and CMake >= v3.0.
* If you're using Linux, you'll also need GCC >= v5.0 (or clang >= v3.5) and CMake >= v3.1.

You can install all of this in two ways:

Expand Down
5 changes: 2 additions & 3 deletions docs/install/quick.rst
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,12 @@ get started. To run a script file, e.g. `example1.py`, enter the following comma
Linux
-----

You will need gcc and g++ 4.8 or newer. To check, enter the following in terminal::
You will need gcc and g++ 5.0 or newer. To check, enter the following in terminal::

g++ --version

If your version is outdated, check with your Linux distribution on how to upgrade.
If you have version 4.8 or newer, proceed with the installation.
If you have version 5.8 or newer, proceed with the installation.

#. Download the Miniconda Python 3.x installer: `Miniconda3-latest-Linux-x86_64.sh`_. Run it
in your terminal window::
Expand Down Expand Up @@ -118,4 +118,3 @@ Troubleshooting

If you already had Python installed, having multiple distributions may cause trouble in some cases.
Check the `PATH` environment variable and make sure the Miniconda has priority.

10 changes: 5 additions & 5 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,12 @@ See the [documentation] for more details.

Pybinding can be installed on Windows, Linux or Mac, with the following prerequisites:

* [Python] 3.4 or newer (Python 2.x is not supported)
* [Python] 3.5 or newer (Python 2.x is not supported)
* The [SciPy] stack of scientific packages, with required versions:
* numpy >= v1.9
* scipy >= v0.15
* matplotlib >= v1.5
* If you're using Linux, you'll also need GCC >= v4.8 and CMake >= v3.0.
* numpy >= v1.12
* scipy >= v0.19
* matplotlib >= v2.0
* If you're using Linux, you'll also need GCC >= v5.0 (or clang >= v3.5) and CMake >= v3.1.

Detailed [install instructions] are part of the documentation, but if you already have all the
prerequisites, it's just a simple case of using `pip`, Python's usual package manager:
Expand Down
6 changes: 3 additions & 3 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
from setuptools.command.egg_info import manifest_maker


if sys.version_info[:2] < (3, 4):
print("Python >= 3.4 is required.")
if sys.version_info[:2] < (3, 5):
print("Python >= 3.5 is required.")
sys.exit(-1)


Expand Down Expand Up @@ -98,8 +98,8 @@ def changelog():
'License :: OSI Approved :: BSD License',
'Programming Language :: C++',
'Programming Language :: Python :: 3 :: Only',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: Implementation :: CPython',
],

Expand Down

0 comments on commit 43e8806

Please sign in to comment.