diff --git a/.ci/check_travis_tag.py b/.ci/check_travis_tag.py index a5c556c..d87eb2e 100755 --- a/.ci/check_travis_tag.py +++ b/.ci/check_travis_tag.py @@ -7,8 +7,6 @@ # For further information on the license, see the LICENSE.txt file. # ############################################################################### """Check travis tag""" -from __future__ import print_function -from __future__ import absolute_import import os import sys diff --git a/.docker/opt/add-codes.sh b/.docker/opt/add-codes.sh index b23ffc5..059c397 100755 --- a/.docker/opt/add-codes.sh +++ b/.docker/opt/add-codes.sh @@ -22,4 +22,4 @@ fi unset __conda_setup # Install raspa code. -verdi code show raspa@localhost || verdi code setup --config /opt/aiida-raspa/.docker/raspa-code.yml --non-interactive \ No newline at end of file +verdi code show raspa@localhost || verdi code setup --config /opt/aiida-raspa/.docker/raspa-code.yml --non-interactive diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f1b3e02..b68d1ee 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,17 +1,6 @@ # # Install pre-commit hooks via # pre-commit install -# modernizer: make sure our code-base is Python 3 ready -- repo: https://github.com/python-modernize/python-modernize.git - sha: a234ce4e185cf77a55632888f1811d83b4ad9ef2 - hooks: - - id: python-modernize - exclude: ^docs/ - args: - - --write - - --nobackups - - --nofix=dict_six - - repo: local hooks: # yapf = yet another python formatter diff --git a/.pylintrc b/.pylintrc index 87a4320..f7fadec 100644 --- a/.pylintrc +++ b/.pylintrc @@ -275,7 +275,6 @@ init-import=no # List of qualified module names which can have objects that can redefine # builtins. -redefining-builtins-modules=six.moves,future.builtins [MISCELLANEOUS] diff --git a/aiida_raspa/__init__.py b/aiida_raspa/__init__.py index 2f5556d..dc31334 100644 --- a/aiida_raspa/__init__.py +++ b/aiida_raspa/__init__.py @@ -9,4 +9,4 @@ ############################################################################## """AiiDA-RASPA plugins, parsers, workflows, etc ...""" -__version__ = "1.0.0" +__version__ = "1.1.0" diff --git a/aiida_raspa/calculations/__init__.py b/aiida_raspa/calculations/__init__.py index ec3317d..60ebf3d 100644 --- a/aiida_raspa/calculations/__init__.py +++ b/aiida_raspa/calculations/__init__.py @@ -1,10 +1,7 @@ # -*- coding: utf-8 -*- """Raspa input plugin.""" -from __future__ import absolute_import import os from shutil import copyfile, copytree -import six -from six.moves import map, range from aiida.orm import Dict, FolderData, List, RemoteData, SinglefileData from aiida.common import CalcInfo, CodeInfo, InputValidationError @@ -31,7 +28,7 @@ class RaspaCalculation(CalcJob): @classmethod def define(cls, spec): - super(RaspaCalculation, cls).define(spec) + super().define(spec) #Input parameters spec.input('parameters', valid_type=Dict, required=True, help='Input parameters') @@ -55,7 +52,7 @@ def define(cls, spec): valid_type=FolderData, required=False, help='To use an old calculation as a starting poing for a new one.') - spec.input('metadata.options.parser_name', valid_type=six.string_types, default=cls.DEFAULT_PARSER, non_db=True) + spec.input('metadata.options.parser_name', valid_type=str, default=cls.DEFAULT_PARSER, non_db=True) # Output parameters spec.output('output_parameters', valid_type=Dict, required=True, help="The results of a calculation") diff --git a/aiida_raspa/parsers/__init__.py b/aiida_raspa/parsers/__init__.py index 975e432..97513af 100644 --- a/aiida_raspa/parsers/__init__.py +++ b/aiida_raspa/parsers/__init__.py @@ -1,8 +1,6 @@ # -*- coding: utf-8 -*- """Raspa output parser.""" -from __future__ import absolute_import import os -from six.moves import range from aiida.common import NotExistent, OutputParsingError from aiida.engine import ExitCode diff --git a/aiida_raspa/utils/__init__.py b/aiida_raspa/utils/__init__.py index 17ac359..9a578ce 100644 --- a/aiida_raspa/utils/__init__.py +++ b/aiida_raspa/utils/__init__.py @@ -1,6 +1,5 @@ # -*- coding: utf-8 -*- """Raspa utils.""" -from __future__ import absolute_import from .base_parser import parse_base_output from .base_input_generator import RaspaInput from .inspection_tools import check_widom_convergence, check_gcmc_convergence, check_gemc_convergence diff --git a/aiida_raspa/utils/base_input_generator.py b/aiida_raspa/utils/base_input_generator.py index 4eff26f..de85525 100644 --- a/aiida_raspa/utils/base_input_generator.py +++ b/aiida_raspa/utils/base_input_generator.py @@ -1,8 +1,6 @@ # -*- coding: utf-8 -*- """Basic raspa input generator.""" -from __future__ import absolute_import from copy import deepcopy -import six ORDERED_ITEMS_COMPONENT_SECTION = [ "NumberOfIdentityChanges", @@ -63,7 +61,7 @@ def render(self): molecule["BlockPocketsFileName"] = bps molecule["BlockPockets"] = ["yes" if bp else "no" for bp in bps] - elif isinstance(molecule["BlockPocketsFileName"], six.string_types): + elif isinstance(molecule["BlockPocketsFileName"], str): molecule["BlockPockets"] = "yes" if "CreateNumberOfMolecules" in molecule: diff --git a/aiida_raspa/utils/base_parser.py b/aiida_raspa/utils/base_parser.py index 364c686..3b4725f 100644 --- a/aiida_raspa/utils/base_parser.py +++ b/aiida_raspa/utils/base_parser.py @@ -1,12 +1,8 @@ # -*- coding: utf-8 -*- """Basic raspa output parser.""" -from __future__ import absolute_import -from __future__ import print_function import re from math import isnan, isinf -from six.moves import range -from six.moves import zip float_base = float # pylint: disable=invalid-name @@ -147,8 +143,13 @@ def parse_base_output(output_abs_path, system_name, ncomponents): component_names = [] res_cmp = res_per_component[0] for line in fobj: - if "Component" in line and "(Adsorbate molecule)" in line: + if "Component" in line and "molecule)" in line: component_names.append(line.split()[2][1:-1]) + if "(Adsorbate" in line: + res_cmp['molecule_type'] = 'adsorbate' + elif "(Cation" in line: + res_cmp['molecule_type'] = 'cation' + # Consider to change it with parse_line() if "Conversion factor molecules/unit cell -> mol/kg:" in line: res_cmp['conversion_factor_molec_uc_to_mol_kg'] = float(line.split()[6]) diff --git a/aiida_raspa/utils/inspection_tools.py b/aiida_raspa/utils/inspection_tools.py index 98d2ee2..ab84948 100644 --- a/aiida_raspa/utils/inspection_tools.py +++ b/aiida_raspa/utils/inspection_tools.py @@ -1,9 +1,5 @@ # -*- coding: utf-8 -*- """RASPA inspection tools""" -from __future__ import print_function -from __future__ import absolute_import - -from six.moves import range from aiida.engine import calcfunction from aiida.orm import Dict, Int, Str, Float diff --git a/aiida_raspa/utils/other_utilities.py b/aiida_raspa/utils/other_utilities.py index e934219..dfe527c 100644 --- a/aiida_raspa/utils/other_utilities.py +++ b/aiida_raspa/utils/other_utilities.py @@ -1,6 +1,5 @@ # -*- coding: utf-8 -*- """Other utilities.""" -from __future__ import absolute_import from collections import namedtuple from functools import wraps diff --git a/aiida_raspa/workchains/aiida_base_restart.py b/aiida_raspa/workchains/aiida_base_restart.py index 164aff4..ddc4a9e 100644 --- a/aiida_raspa/workchains/aiida_base_restart.py +++ b/aiida_raspa/workchains/aiida_base_restart.py @@ -1,7 +1,6 @@ # -*- coding: utf-8 -*- # pylint: disable=inconsistent-return-statements,no-member """Base implementation of `WorkChain` class that implements a simple automated restart mechanism for calculations.""" -from __future__ import absolute_import from aiida import orm from aiida.common import exceptions @@ -58,7 +57,7 @@ class BaseRestartWorkChain(WorkChain): def __init__(self, *args, **kwargs): """Construct the instance.""" - super(BaseRestartWorkChain, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) if self._calculation_class is None or not issubclass(self._calculation_class, CalcJob): raise ValueError('no valid CalcJob class defined for `_calculation_class` attribute') @@ -72,7 +71,7 @@ def load_instance_state(self, saved_state, load_context): :param saved_state: saved state of existing process instance :param load_context: context for loading instance state """ - super(BaseRestartWorkChain, self).load_instance_state(saved_state, load_context) + super().load_instance_state(saved_state, load_context) self._load_error_handlers() def _load_error_handlers(self): @@ -91,10 +90,10 @@ def _load_error_handlers(self): def define(cls, spec): """Define the process specification.""" # yapf: disable - super(BaseRestartWorkChain, cls).define(spec) + super().define(spec) spec.input('max_iterations', valid_type=orm.Int, default=lambda: orm.Int(5), help='Maximum number of iterations the work chain will restart the calculation to finish successfully.') - spec.input('clean_workdir', valid_type=orm.Bool, default=orm.Bool(False), + spec.input('clean_workdir', valid_type=orm.Bool, default=lambda: orm.Bool(False), help='If `True`, work directories of all called calculation will be cleaned at the end of execution.') spec.input_namespace('fixers', valid_type=tuple, required=False, help="Fixers you want to apply to the outputs of every calculation.", dynamic=True) @@ -222,7 +221,7 @@ def results(self): def on_terminated(self): """Clean the working directories of all child calculations if `clean_workdir=True` in the inputs.""" - super(BaseRestartWorkChain, self).on_terminated() + super().on_terminated() if self.inputs.clean_workdir.value is False: self.report('remote folders will not be cleaned') diff --git a/aiida_raspa/workchains/base.py b/aiida_raspa/workchains/base.py index e2be883..9a8a37c 100644 --- a/aiida_raspa/workchains/base.py +++ b/aiida_raspa/workchains/base.py @@ -1,6 +1,5 @@ # -*- coding: utf-8 -*- """Base workchain to run a RASPA calculation""" -from __future__ import absolute_import from aiida.common import AttributeDict from aiida.engine import while_ @@ -20,7 +19,7 @@ class RaspaBaseWorkChain(BaseRestartWorkChain): @classmethod def define(cls, spec): - super(RaspaBaseWorkChain, cls).define(spec) + super().define(spec) spec.expose_inputs(RaspaCalculation, namespace='raspa') spec.outline( cls.setup, @@ -35,9 +34,9 @@ def define(cls, spec): def setup(self): """Call the `setup` of the `BaseRestartWorkChain` and then create the inputs dictionary in `self.ctx.inputs`. This `self.ctx.inputs` dictionary will be used by the `BaseRestartWorkChain` to submit the calculations in the - internal loop. - """ - super(RaspaBaseWorkChain, self).setup() + internal loop.""" + + super().setup() self.ctx.inputs = AttributeDict(self.exposed_inputs(RaspaCalculation, 'raspa')) if "WriteBinaryRestartFileEvery" not in self.ctx.inputs.parameters["GeneralSettings"]: self.ctx.inputs.parameters = add_write_binary_restart(self.ctx.inputs.parameters, Int(1000)) diff --git a/conftest.py b/conftest.py index ae104fb..355b2d3 100644 --- a/conftest.py +++ b/conftest.py @@ -1,7 +1,6 @@ """ For pytest initialise a test database and profile """ -from __future__ import absolute_import import pytest pytest_plugins = ['aiida.manage.tests.pytest_fixtures'] # pylint: disable=invalid-name diff --git a/docs/source/conf.py b/docs/source/conf.py index 59b0e9f..e37f850 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -96,7 +96,7 @@ master_doc = 'index' # General information about the project. -project = u'aiida-raspa' +project = 'aiida-raspa' copyright_first_year = "2019" copyright_owners = "The AiiDA Team" @@ -104,7 +104,7 @@ copyright_year_string = current_year if current_year == copyright_first_year else "{}-{}".format( copyright_first_year, current_year) # pylint: disable=redefined-builtin -copyright = u'{}, {}. All rights reserved'.format(copyright_year_string, copyright_owners) +copyright = '{}, {}. All rights reserved'.format(copyright_year_string, copyright_owners) # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the diff --git a/examples/simple_calculations/example_base.py b/examples/simple_calculations/example_base.py index 46dc2b9..11567ec 100755 --- a/examples/simple_calculations/example_base.py +++ b/examples/simple_calculations/example_base.py @@ -1,8 +1,6 @@ # -*- coding: utf-8 -*- """Run simple RASPA calculation.""" -from __future__ import print_function -from __future__ import absolute_import import os import sys import click diff --git a/examples/simple_calculations/example_base_restart.py b/examples/simple_calculations/example_base_restart.py index 5021833..2eddae3 100755 --- a/examples/simple_calculations/example_base_restart.py +++ b/examples/simple_calculations/example_base_restart.py @@ -1,8 +1,6 @@ # -*- coding: utf-8 -*- """Restart from simple RASPA calculation.""" -from __future__ import print_function -from __future__ import absolute_import import os import sys import click diff --git a/examples/simple_calculations/example_binary_mixture.py b/examples/simple_calculations/example_binary_mixture.py index 41b83b2..60bde7d 100755 --- a/examples/simple_calculations/example_binary_mixture.py +++ b/examples/simple_calculations/example_binary_mixture.py @@ -1,8 +1,6 @@ # -*- coding: utf-8 -*- """Run RASPA calculation with components mixture.""" -from __future__ import print_function -from __future__ import absolute_import import sys import click diff --git a/examples/simple_calculations/example_block_pockets_2frameworks_2molecules.py b/examples/simple_calculations/example_block_pockets_2frameworks_2molecules.py index 0b2361c..319c948 100755 --- a/examples/simple_calculations/example_block_pockets_2frameworks_2molecules.py +++ b/examples/simple_calculations/example_block_pockets_2frameworks_2molecules.py @@ -1,7 +1,5 @@ # -*- coding: utf-8 -*- """Run RASPA calculation with blocked pockets.""" -from __future__ import print_function -from __future__ import absolute_import import os import sys import click diff --git a/examples/simple_calculations/example_block_pockets_simple.py b/examples/simple_calculations/example_block_pockets_simple.py index 9ff976e..ca53c94 100755 --- a/examples/simple_calculations/example_block_pockets_simple.py +++ b/examples/simple_calculations/example_block_pockets_simple.py @@ -1,7 +1,5 @@ # -*- coding: utf-8 -*- """Run RASPA calculation with blocked pockets.""" -from __future__ import print_function -from __future__ import absolute_import import os import sys import click diff --git a/examples/simple_calculations/example_ff_files.py b/examples/simple_calculations/example_ff_files.py index ae12ae9..c19e14b 100755 --- a/examples/simple_calculations/example_ff_files.py +++ b/examples/simple_calculations/example_ff_files.py @@ -1,8 +1,6 @@ # -*- coding: utf-8 -*- """Run RASPA calculation using Local force field""" -from __future__ import print_function -from __future__ import absolute_import import sys import os import click diff --git a/examples/simple_calculations/example_framework_box.py b/examples/simple_calculations/example_framework_box.py index eedcacb..ab10a69 100755 --- a/examples/simple_calculations/example_framework_box.py +++ b/examples/simple_calculations/example_framework_box.py @@ -2,8 +2,6 @@ # -*- coding: utf-8 -*- """Run simple RASPA calculation.""" -from __future__ import print_function -from __future__ import absolute_import import os import sys import click diff --git a/examples/simple_calculations/example_framework_box_restart.py b/examples/simple_calculations/example_framework_box_restart.py index 81c3ba3..adc510d 100755 --- a/examples/simple_calculations/example_framework_box_restart.py +++ b/examples/simple_calculations/example_framework_box_restart.py @@ -1,8 +1,6 @@ # -*- coding: utf-8 -*- """Run simple RASPA calculation.""" -from __future__ import print_function -from __future__ import absolute_import import os import sys import click diff --git a/examples/simple_calculations/example_gemc_single_comp.py b/examples/simple_calculations/example_gemc_single_comp.py index 7ad8948..d7ba3fa 100755 --- a/examples/simple_calculations/example_gemc_single_comp.py +++ b/examples/simple_calculations/example_gemc_single_comp.py @@ -1,8 +1,6 @@ # -*- coding: utf-8 -*- """Run RASPA single-component GEMC calculation""" -from __future__ import print_function -from __future__ import absolute_import import sys import click import pytest diff --git a/examples/simple_calculations/example_gemc_single_comp_restart.py b/examples/simple_calculations/example_gemc_single_comp_restart.py index 5500a2d..c4b8ea3 100755 --- a/examples/simple_calculations/example_gemc_single_comp_restart.py +++ b/examples/simple_calculations/example_gemc_single_comp_restart.py @@ -1,8 +1,6 @@ # -*- coding: utf-8 -*- """Run RASPA single-component GEMC calculation -- Restart""" -from __future__ import print_function -from __future__ import absolute_import import sys import click import pytest diff --git a/examples/simple_calculations/example_henry.py b/examples/simple_calculations/example_henry.py index 9534fbd..9614a83 100755 --- a/examples/simple_calculations/example_henry.py +++ b/examples/simple_calculations/example_henry.py @@ -1,7 +1,5 @@ # -*- coding: utf-8 -*- """Run RASPA calculation to compute Henry coefficient.""" -from __future__ import print_function -from __future__ import absolute_import import os import sys import click diff --git a/examples/simple_calculations/example_identity.py b/examples/simple_calculations/example_identity.py index 8125c50..92840b6 100755 --- a/examples/simple_calculations/example_identity.py +++ b/examples/simple_calculations/example_identity.py @@ -1,8 +1,6 @@ # -*- coding: utf-8 -*- """Run simple RASPA calculation.""" -from __future__ import print_function -from __future__ import absolute_import import os import sys import click diff --git a/examples/simple_calculations/fixme_base_binary_restart.py b/examples/simple_calculations/fixme_base_binary_restart.py index e70e8ea..f8a5591 100755 --- a/examples/simple_calculations/fixme_base_binary_restart.py +++ b/examples/simple_calculations/fixme_base_binary_restart.py @@ -1,8 +1,6 @@ # -*- coding: utf-8 -*- """Restart from simple RASPA calculation.""" -from __future__ import print_function -from __future__ import absolute_import import os import sys import click diff --git a/examples/workchains/example_base_restart_timeout.py b/examples/workchains/example_base_restart_timeout.py index 704b7d8..da5a520 100644 --- a/examples/workchains/example_base_restart_timeout.py +++ b/examples/workchains/example_base_restart_timeout.py @@ -1,8 +1,6 @@ # -*- coding: utf-8 -*- """Example for RaspaBaseWorkChain.""" -from __future__ import absolute_import -from __future__ import print_function import os import sys import click diff --git a/examples/workchains/example_base_workchain_gcmc_2comp.py b/examples/workchains/example_base_workchain_gcmc_2comp.py index 6ba74ab..d8c3ef6 100644 --- a/examples/workchains/example_base_workchain_gcmc_2comp.py +++ b/examples/workchains/example_base_workchain_gcmc_2comp.py @@ -1,8 +1,6 @@ # -*- coding: utf-8 -*- """Two-component GCMC through RaspaBaseWorkChain""" -from __future__ import absolute_import -from __future__ import print_function import os import sys import click diff --git a/examples/workchains/example_base_workchain_gemc_1comp.py b/examples/workchains/example_base_workchain_gemc_1comp.py index c6d9043..4fba88a 100644 --- a/examples/workchains/example_base_workchain_gemc_1comp.py +++ b/examples/workchains/example_base_workchain_gemc_1comp.py @@ -1,8 +1,6 @@ # -*- coding: utf-8 -*- """One-component GEMC through RaspaBaseWorkChain""" -from __future__ import absolute_import -from __future__ import print_function import sys import click diff --git a/examples/workchains/example_base_workchain_widom_1comp.py b/examples/workchains/example_base_workchain_widom_1comp.py index f4d2654..5d1da79 100644 --- a/examples/workchains/example_base_workchain_widom_1comp.py +++ b/examples/workchains/example_base_workchain_widom_1comp.py @@ -1,8 +1,6 @@ # -*- coding: utf-8 -*- """One-component Widom particle insertion through RaspaBaseWorkChain""" -from __future__ import absolute_import -from __future__ import print_function import os import sys import click diff --git a/examples/workchains/example_base_workchain_widom_2comp.py b/examples/workchains/example_base_workchain_widom_2comp.py index 5c43225..f13db44 100644 --- a/examples/workchains/example_base_workchain_widom_2comp.py +++ b/examples/workchains/example_base_workchain_widom_2comp.py @@ -1,8 +1,6 @@ # -*- coding: utf-8 -*- """Two-component Widom insertion through RaspaBaseWorkChain""" -from __future__ import absolute_import -from __future__ import print_function import os import sys import click diff --git a/setup.json b/setup.json index acbf126..640564f 100644 --- a/setup.json +++ b/setup.json @@ -1,6 +1,6 @@ { "name": "aiida-raspa", - "version": "1.0.0", + "version": "1.1.0", "author": "Aliaksandr Yakutovich", "author_email": "aliaksandr.yakutovich@epfl.ch", "description": "AiiDA plugin for RASPA code", @@ -8,7 +8,6 @@ "license": "MIT License", "classifiers": [ "License :: OSI Approved :: MIT License", - "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Framework :: AiiDA", diff --git a/setup.py b/setup.py index 7732961..e7f87d8 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,5 @@ # -*- coding: utf-8 -*- """Setting up RASPA plugin for AiiDA""" -from __future__ import print_function -from __future__ import absolute_import import json from setuptools import setup, find_packages diff --git a/tests/test_input_generator.py b/tests/test_input_generator.py index 818ce6e..c778cd4 100644 --- a/tests/test_input_generator.py +++ b/tests/test_input_generator.py @@ -1,7 +1,5 @@ """Test Raspa input generator""" -from __future__ import absolute_import - import pytest from aiida_raspa.utils import RaspaInput diff --git a/tests/test_output_parser.py b/tests/test_output_parser.py index 72d41fd..08717be 100644 --- a/tests/test_output_parser.py +++ b/tests/test_output_parser.py @@ -1,7 +1,5 @@ """Test Raspa output parser""" -from __future__ import absolute_import - import os from aiida_raspa.utils import parse_base_output diff --git a/tests/test_version_agreement.py b/tests/test_version_agreement.py index e9974d6..287b855 100644 --- a/tests/test_version_agreement.py +++ b/tests/test_version_agreement.py @@ -1,7 +1,5 @@ # -*- coding: utf-8 -*- """Check versions""" -from __future__ import print_function -from __future__ import absolute_import import sys import json