From 4825e718704d01c37545db183909b8edafc65f47 Mon Sep 17 00:00:00 2001 From: Daniel Rasmussen Date: Tue, 11 Jul 2023 15:03:03 -0300 Subject: [PATCH 1/2] Add support for TensorFlow 2.13 --- CHANGES.rst | 4 +--- keras_lmu/layers.py | 26 +++++++++++++++++++++----- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 298b7487..b6c44b24 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -22,9 +22,7 @@ Release history 0.6.1 (unreleased) ================== -*Compatible with TensorFlow 2.4 - 2.11* - - +*Compatible with TensorFlow 2.4 - 2.13* 0.6.0 (May 5, 2023) =================== diff --git a/keras_lmu/layers.py b/keras_lmu/layers.py index 62999175..62f51ca2 100644 --- a/keras_lmu/layers.py +++ b/keras_lmu/layers.py @@ -11,13 +11,17 @@ from tensorflow.python.keras.layers.recurrent import DropoutRNNCellMixin elif version.parse(tf.__version__) < version.parse("2.9.0rc0"): from keras.layers.recurrent import DropoutRNNCellMixin -else: +elif version.parse(tf.__version__) < version.parse("2.13.0rc0"): from keras.layers.rnn.dropout_rnn_cell_mixin import DropoutRNNCellMixin +else: + from keras.src.layers.rnn.dropout_rnn_cell_mixin import DropoutRNNCellMixin if version.parse(tf.__version__) < version.parse("2.8.0rc0"): from tensorflow.keras.layers import Layer as BaseRandomLayer -else: +elif version.parse(tf.__version__) < version.parse("2.13.0rc0"): from keras.engine.base_layer import BaseRandomLayer +else: + from keras.src.engine.base_layer import BaseRandomLayer @tf.keras.utils.register_keras_serializable("keras-lmu") @@ -450,7 +454,11 @@ def get_config(self): def from_config(cls, config): """Load model from serialized config.""" - config["hidden_cell"] = tf.keras.layers.deserialize(config["hidden_cell"]) + config["hidden_cell"] = ( + None + if config["hidden_cell"] is None + else tf.keras.layers.deserialize(config["hidden_cell"]) + ) return super().from_config(config) @@ -714,7 +722,11 @@ def get_config(self): def from_config(cls, config): """Load model from serialized config.""" - config["hidden_cell"] = tf.keras.layers.deserialize(config["hidden_cell"]) + config["hidden_cell"] = ( + None + if config["hidden_cell"] is None + else tf.keras.layers.deserialize(config["hidden_cell"]) + ) return super().from_config(config) @@ -1065,5 +1077,9 @@ def get_config(self): def from_config(cls, config): """Load model from serialized config.""" - config["hidden_cell"] = tf.keras.layers.deserialize(config["hidden_cell"]) + config["hidden_cell"] = ( + None + if config["hidden_cell"] is None + else tf.keras.layers.deserialize(config["hidden_cell"]) + ) return super().from_config(config) From b0710c79c63585e3430bf50b29544e3592ca9890 Mon Sep 17 00:00:00 2001 From: Daniel Rasmussen Date: Thu, 13 Jul 2023 13:56:23 -0300 Subject: [PATCH 2/2] Change minimum python version to 3.8 --- .github/workflows/ci.yml | 7 +++++-- .nengobones.yml | 7 ++++--- CHANGES.rst | 9 ++++++++- docs/getting-started.rst | 2 +- keras_lmu/version.py | 2 +- pyproject.toml | 2 +- setup.py | 5 +++-- 7 files changed, 23 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 15e2228c..b41953aa 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -39,16 +39,19 @@ jobs: coverage-name: remote tf-version: tensorflow==2.10 - script: test + python-version: "3.11" coverage-name: latest - script: test tf-version: tensorflow==2.4.4 - python-version: "3.7" + python-version: "3.8" coverage-name: oldest - script: test tf-version: tensorflow~=2.6.0 + python-version: "3.8" coverage-name: tf-2.6 - script: remote-docs tf-version: tensorflow==2.10 + python-version: "3.9" - script: remote-examples tf-version: tensorflow==2.10 fail-fast: false @@ -60,7 +63,7 @@ jobs: steps: - uses: nengo/nengo-bones/actions/setup@main with: - python-version: ${{ matrix.python-version || '3.9' }} + python-version: ${{ matrix.python-version || '3.10' }} - uses: nengo/nengo-bones/actions/generate-and-check@main - name: Write secrets to file run: | diff --git a/.nengobones.yml b/.nengobones.yml index 04d165c5..f00b364d 100644 --- a/.nengobones.yml +++ b/.nengobones.yml @@ -36,9 +36,10 @@ setup_py: - "Intended Audience :: Science/Research" - "Operating System :: OS Independent" - "Programming Language :: Python " - - "Programming Language :: Python :: 3.7" - "Programming Language :: Python :: 3.8" - "Programming Language :: Python :: 3.9" + - "Programming Language :: Python :: 3.10" + - "Programming Language :: Python :: 3.11" - "Topic :: Scientific/Engineering " - "Topic :: Scientific/Engineering :: Artificial Intelligence" @@ -108,6 +109,6 @@ pyproject_toml: {} version_py: type: semver major: 0 - minor: 6 - patch: 1 + minor: 7 + patch: 0 release: False diff --git a/CHANGES.rst b/CHANGES.rst index b6c44b24..6a8fc8c5 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -19,11 +19,18 @@ Release history - Removed - Fixed -0.6.1 (unreleased) +0.7.0 (unreleased) ================== *Compatible with TensorFlow 2.4 - 2.13* +**Changed** + +- Minimum supported Python version is now 3.8 (3.7 reached end of life in June 2023). + (`#54`_) + +.. _#54: https://github.com/nengo/keras-lmu/pull/54 + 0.6.0 (May 5, 2023) =================== diff --git a/docs/getting-started.rst b/docs/getting-started.rst index c83b3dc3..da85583d 100644 --- a/docs/getting-started.rst +++ b/docs/getting-started.rst @@ -14,7 +14,7 @@ To install KerasLMU, we recommend using ``pip``. Requirements ------------ -KerasLMU works with Python 3.6 or later. After installing NumPy and TensorFlow, ``pip`` +KerasLMU works with Python 3.8 or later. After installing NumPy and TensorFlow, ``pip`` will do its best to install all of the package's other requirements when it installs KerasLMU. However, if anything goes wrong during this process, you can install each required package manually and then try to ``pip install keras-lmu`` again. diff --git a/keras_lmu/version.py b/keras_lmu/version.py index cb635909..8addae1c 100644 --- a/keras_lmu/version.py +++ b/keras_lmu/version.py @@ -11,7 +11,7 @@ tagged with the version. """ -version_info = (0, 6, 1) +version_info = (0, 7, 0) name = "keras-lmu" dev = 0 diff --git a/pyproject.toml b/pyproject.toml index 0d544a09..e2903542 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ requires = ["setuptools<64", "wheel"] [tool.black] -target-version = ['py36'] +target-version = ['py38'] [tool.isort] profile = "black" diff --git a/setup.py b/setup.py index 1dd4e117..13d8bbf7 100644 --- a/setup.py +++ b/setup.py @@ -68,14 +68,15 @@ def read(*filenames, **kwargs): "optional": optional_req, "tests": tests_req, }, - python_requires=">=3.6", + python_requires=">=3.8", classifiers=[ "Development Status :: 3 - Alpha", "Intended Audience :: Science/Research", "License :: Free for non-commercial use", "Operating System :: OS Independent", "Programming Language :: Python ", - "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Topic :: Scientific/Engineering ",