From e0e86ddc59998214f05a3443f858158209e110d4 Mon Sep 17 00:00:00 2001 From: ltenorio Date: Mon, 10 Jun 2024 15:43:38 +0200 Subject: [PATCH 1/5] fix job platform parse --- autosubmit_api/config/ymlConfigStrategy.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autosubmit_api/config/ymlConfigStrategy.py b/autosubmit_api/config/ymlConfigStrategy.py index 3f60ea00..9dbd6719 100644 --- a/autosubmit_api/config/ymlConfigStrategy.py +++ b/autosubmit_api/config/ymlConfigStrategy.py @@ -114,7 +114,7 @@ class ymlConfigStrategy(IConfigStrategy): def get_job_platform(self, section: str) -> str: # return the JOBS.
.PLATFORM or DEFAULT.HPCARCH - return self._conf_parser.jobs_data.get(section, {}).get("PLATFORM", self.get_platform()) + return self._conf_parser.jobs_data.get(section, {}).get("PLATFORM", self.get_platform()).upper() def get_platform_queue(self, platform: str) -> str: logger.debug("get_platform_queue") -- GitLab From ac36dbc4ba343fe0402e4e4e72660fce36723ace Mon Sep 17 00:00:00 2001 From: ltenorio Date: Mon, 17 Jun 2024 11:06:07 +0200 Subject: [PATCH 2/5] update minimum config parser version --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 06ebda7f..61c6dc8b 100644 --- a/setup.py +++ b/setup.py @@ -31,7 +31,7 @@ install_requires = [ "networkx~=2.6.3", "scipy~=1.7.3", "python-dotenv", - "autosubmitconfigparser~=1.0.48", + "autosubmitconfigparser>=1.0.65", "autosubmit>=3.13", "Flask-APScheduler", "gunicorn", -- GitLab From dc822a80d1126932c89ca39234ae1f9a2fdc3ed1 Mon Sep 17 00:00:00 2001 From: ltenorio Date: Fri, 21 Jun 2024 16:14:51 +0200 Subject: [PATCH 3/5] support python 3.12 & drop 3.8 --- autosubmit_api/config/IConfigStrategy.py | 17 ++++------------- autosubmit_api/config/basicConfig.py | 4 ++-- autosubmit_api/config/confConfigStrategy.py | 19 +++++-------------- autosubmit_api/config/config_common.py | 6 ++---- setup.py | 11 +++++------ tests/experiments/a6zj/tmp/LOG_a6zj/.gitkeep | 0 6 files changed, 18 insertions(+), 39 deletions(-) create mode 100644 tests/experiments/a6zj/tmp/LOG_a6zj/.gitkeep diff --git a/autosubmit_api/config/IConfigStrategy.py b/autosubmit_api/config/IConfigStrategy.py index cf552bdf..9fcdb8e0 100644 --- a/autosubmit_api/config/IConfigStrategy.py +++ b/autosubmit_api/config/IConfigStrategy.py @@ -17,15 +17,8 @@ # You should have received a copy of the GNU General Public License # along with Autosubmit. If not, see . -try: - # noinspection PyCompatibility - from configparser import SafeConfigParser - from autosubmitconfigparser.config.configcommon import AutosubmitConfig as Autosubmit4Config -except ImportError: - # noinspection PyCompatibility - from configparser import SafeConfigParser - - +from configparser import ConfigParser as PyConfigParser +from autosubmitconfigparser.config.configcommon import AutosubmitConfig as Autosubmit4Config import os import re import subprocess @@ -61,12 +54,11 @@ class IConfigStrategy(ABC): return self._exp_parser_file @abstractmethod - def platforms_parser(self): + def platforms_parser(self) -> PyConfigParser: """ Returns experiment's platforms parser object :return: platforms config parser object - :rtype: SafeConfigParser """ pass @@ -459,11 +451,10 @@ class IConfigStrategy(ABC): """ - def set_git_project_commit(self, as_conf): + def set_git_project_commit(self, as_conf: Autosubmit4Config): """ Function to register in the configuration the commit SHA of the git project version. :param as_conf: Configuration class for exteriment - :type as_conf: AutosubmitConfig """ def get_svn_project_url(self): diff --git a/autosubmit_api/config/basicConfig.py b/autosubmit_api/config/basicConfig.py index 95acbff2..c73a51e5 100644 --- a/autosubmit_api/config/basicConfig.py +++ b/autosubmit_api/config/basicConfig.py @@ -16,7 +16,7 @@ # You should have received a copy of the GNU General Public License # along with Autosubmit. If not, see . -from configparser import SafeConfigParser +from configparser import ConfigParser from autosubmitconfigparser.config.basicconfig import BasicConfig import os # from log.log import Log, AutosubmitError, AutosubmitCritical @@ -39,7 +39,7 @@ class APIBasicConfig(BasicConfig): if not os.path.isfile(file_path): return #Log.debug('Reading config from ' + file_path) - parser = SafeConfigParser() + parser = ConfigParser() parser.optionxform = str parser.read(file_path) diff --git a/autosubmit_api/config/confConfigStrategy.py b/autosubmit_api/config/confConfigStrategy.py index 2bbadb2e..46687a4b 100644 --- a/autosubmit_api/config/confConfigStrategy.py +++ b/autosubmit_api/config/confConfigStrategy.py @@ -17,14 +17,9 @@ # You should have received a copy of the GNU General Public License # along with Autosubmit. If not, see . -try: - # noinspection PyCompatibility - from configparser import SafeConfigParser - from autosubmitconfigparser.config.configcommon import AutosubmitConfig as Autosubmit4Config -except ImportError: - # noinspection PyCompatibility - from configparser import SafeConfigParser +from configparser import ConfigParser as PyConfigParser +from autosubmitconfigparser.config.configcommon import AutosubmitConfig as Autosubmit4Config import os import re @@ -104,12 +99,11 @@ class confConfigStrategy(IConfigStrategy): return self._exp_parser_file @property - def platforms_parser(self): + def platforms_parser(self) -> PyConfigParser: """ Returns experiment's platforms parser object :return: platforms config parser object - :rtype: SafeConfigParser """ return self._platforms_parser @@ -838,11 +832,10 @@ class confConfigStrategy(IConfigStrategy): '/')[-1].split('.')[-2] return value - def set_git_project_commit(self, as_conf): + def set_git_project_commit(self, as_conf: Autosubmit4Config): """ Function to register in the configuration the commit SHA of the git project version. :param as_conf: Configuration class for exteriment - :type as_conf: AutosubmitConfig """ full_project_path = as_conf.get_project_dir() try: @@ -1321,8 +1314,7 @@ class confConfigStrategy(IConfigStrategy): return origin_exists and (branch is not None or commit is not None) @staticmethod - def get_parser(parser_factory, file_path): - # type: (ConfigParserFactory, str) -> ConfigParser + def get_parser(parser_factory: ConfigParserFactory, file_path: str) -> PyConfigParser: """ Gets parser for given file @@ -1330,7 +1322,6 @@ class confConfigStrategy(IConfigStrategy): :param file_path: path to file to be parsed :type file_path: str :return: parser - :rtype: SafeConfigParser """ parser = parser_factory.create_parser() parser.optionxform = str diff --git a/autosubmit_api/config/config_common.py b/autosubmit_api/config/config_common.py index 1f2aad5e..567fb844 100644 --- a/autosubmit_api/config/config_common.py +++ b/autosubmit_api/config/config_common.py @@ -69,12 +69,11 @@ class AutosubmitConfigResolver(object): @property - def platforms_parser(self): + def platforms_parser(self)-> ConfigParser: """ Returns experiment's platforms parser object :return: platforms config parser object - :rtype: SafeConfigParser """ return self._configWrapper.platforms_parser @@ -818,7 +817,7 @@ class AutosubmitConfigResolver(object): return self._configWrapper.is_valid_git_repository() - def get_parser(self, parser_factory, file_path): + def get_parser(self, parser_factory, file_path) -> ConfigParser: # type: (ConfigParserFactory, str) -> ConfigParser """ Gets parser for given file @@ -827,7 +826,6 @@ class AutosubmitConfigResolver(object): :param file_path: path to file to be parsed :type file_path: str :return: parser - :rtype: SafeConfigParser """ # TODO: this was static method, check usages diff --git a/setup.py b/setup.py index 61c6dc8b..421e9235 100644 --- a/setup.py +++ b/setup.py @@ -22,14 +22,13 @@ def get_authors(): install_requires = [ "Flask~=2.2.5", "pyjwt~=2.8.0", - "requests~=2.28.1", + "requests>=2.28.1", "flask_cors~=3.0.10", "bscearth.utils~=0.5.2", - "pysqlite-binary", "pydotplus~=2.0.2", "portalocker~=2.6.0", - "networkx~=2.6.3", - "scipy~=1.7.3", + "networkx<=2.6.3", + "scipy~=1.11.4", "python-dotenv", "autosubmitconfigparser>=1.0.65", "autosubmit>=3.13", @@ -63,7 +62,7 @@ setup( license="GNU GPL", packages=find_packages(), keywords=["autosubmit", "API"], - python_requires=">=3.8", + python_requires=">=3.9", install_requires=install_requires, extras_require=extras_require, include_package_data=True, @@ -73,7 +72,7 @@ setup( "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Operating System :: POSIX :: Linux", - "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", ], entry_points={ "console_scripts": [ diff --git a/tests/experiments/a6zj/tmp/LOG_a6zj/.gitkeep b/tests/experiments/a6zj/tmp/LOG_a6zj/.gitkeep new file mode 100644 index 00000000..e69de29b -- GitLab From ca1b7975b5400b21f9d4dea0b5db640cf2d21cdc Mon Sep 17 00:00:00 2001 From: ltenorio Date: Wed, 3 Jul 2024 14:54:28 +0200 Subject: [PATCH 4/5] add ci pipeline --- .gitlab-ci.yml | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++ pytest.ini | 1 + setup.py | 2 +- 3 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 00000000..bbf169a2 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,54 @@ +before_script: + - export GIT_SSL_NO_VERIFY=1 + - export PATH="$HOME/miniconda2/bin:$PATH" + +stages: + - prepare + - docs + - test + - report + - clean + + +prepare: + stage: prepare + script: + - git submodule sync --recursive + - git submodule update --init --recursive + - conda update -n base -c defaults conda + - conda update conda + - conda create -n autosubmit_api python=3.9 + - conda install -n autosubmit_api graphviz pytest pytest-cov pytest-mock + - conda activate autosubmit_api + - pip install . + +test_python3: + stage: test + script: + - conda activate autosubmit_api + - pytest + coverage: '/(?i)total.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/' + # These artifacts are saved with every build in GitLab and can be reviewed later. If + # we have a folder with HTML files, as in this example, users can navigate with their + # browser. + artifacts: + reports: + coverage_report: + coverage_format: cobertura + path: coverage.xml + +# FIXME: Our GitLab worker has 3.7, but pydata-sphinx-theme requires 3.8+ +# docs: +# stage: docs +# script: +# - conda activate autosubmit3 +# - pip install -e . +# - cd docs +# - pip install -r requirements.txt +# - make html + + +clean: + stage: clean + script: + - conda clean --all --yes diff --git a/pytest.ini b/pytest.ini index da753392..3c0119a4 100644 --- a/pytest.ini +++ b/pytest.ini @@ -1,6 +1,7 @@ [pytest] addopts = --cov=autosubmit_api --cov-config=.coveragerc --cov-report=html + --cov-report=xml:coverage.xml testpaths = tests/ doctest_optionflags = diff --git a/setup.py b/setup.py index 421e9235..272f1918 100644 --- a/setup.py +++ b/setup.py @@ -22,7 +22,7 @@ def get_authors(): install_requires = [ "Flask~=2.2.5", "pyjwt~=2.8.0", - "requests>=2.28.1", + "requests~=2.28.1", "flask_cors~=3.0.10", "bscearth.utils~=0.5.2", "pydotplus~=2.0.2", -- GitLab From 9ba99baced5153c7dc1acb366b6ba479e0667344 Mon Sep 17 00:00:00 2001 From: ltenorio Date: Wed, 3 Jul 2024 16:09:23 +0200 Subject: [PATCH 5/5] update release info --- CHANGELOG.md | 5 +++++ autosubmit_api/__init__.py | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cf1bb5d3..ae775359 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # CHANGELOG +### Pre-release v4.0.0b9 - Release date: 2024-07-03 + +* Added support to Python 3.12 and dropped support to Python <= 3.8 +* Minor bug fixes + ### Pre-release v4.0.0b8 - Release date: 2024-05-28 * Fixed major bug: Prevent accidental `job_data_{expid}.db` file creation diff --git a/autosubmit_api/__init__.py b/autosubmit_api/__init__.py index a539f1b9..426bac53 100644 --- a/autosubmit_api/__init__.py +++ b/autosubmit_api/__init__.py @@ -17,6 +17,6 @@ # You should have received a copy of the GNU General Public License # along with Autosubmit. If not, see . -__version__ = "4.0.0b8" +__version__ = "4.0.0b9" __author__ = "Luiggi Tenorio, Bruno P. Kinoshita, Cristian GutiƩrrez, Julian Berlin, Wilmer Uruchi" __credits__ = "Barcelona Supercomputing Center" \ No newline at end of file -- GitLab