15.2.121. camcops_server.cc_modules.cc_pythonversion

camcops_server/cc_modules/cc_pythonversion.py


Copyright (C) 2012-2020 Rudolf Cardinal (rudolf@pobox.com).

This file is part of CamCOPS.

CamCOPS is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

CamCOPS is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with CamCOPS. If not, see <https://www.gnu.org/licenses/>.


Single place to determine the Python version required.

Currently that is a minimum of v3.6 (as of CamCOPS v2.3.1, 2019). That enables:

  • f-strings (v3.6)

but not, amongst other features:

  • dataclasses (v3.7)

  • assignment expressions, the “walrus” operator, := (v3.8)

  • positional-only parameters, / (v3.8)

  • f-string = syntax to debug a variable (v3.8)

  • new dictionary merge/update syntax (v3.9)

  • string prefix/suffix removal functions (v3.9)

  • use of generics like list (not just List) for type hinting (v3.9)

Note that one can set the environment variable PYTHONDEVMODE=1 to enable extra checks, such as whether there are deprecation warnings with newer Python versions.

Note that Python versions are referred to in:

  • this file

  • .github/workflows

  • server/setup.py

  • server/docker/dockerfiles/camcops.Dockerfile

  • server/tools/MAKE_LINUX_PACKAGES.py

and separately (not necessarily within a CamCOPS virtual environment) in

  • server/tools/install_virtualenv.py

  • tablet_qt/tools/build_qt.py

camcops_server.cc_modules.cc_pythonversion.assert_minimum_python_version()[source]

Asserts that this version of Python meets our minimum requirements. This function should be used except in installation environments where CamCOPS modules are unavailable.

Raises

AssertionError

Note that this module/function should use only Python 2 syntax!