Source code for aiida_vasp.utils.temp_profile
"""
Code for getting a temporary profile for testing purposes.
"""
import os
from pathlib import Path
from subprocess import check_output
from aiida import load_profile, manage, orm
from aiida.manage import Profile
from aiida.storage.sqlite_temp import SqliteTempBackend
from aiida_vasp.utils.mock_code import VaspMockRegistry
__all__ = ('VaspMockRegistry', 'load_temp_profile', 'orm')
[docs]
def load_temp_profile(force: bool = True) -> Profile:
"""Load a temporary profile for testing/demo purposes."""
profile = load_profile(
SqliteTempBackend.create_profile('myprofile', options={'runner.poll.interval': 1}, debug=False),
allow_switch=True,
)
config = manage.get_config()
config.add_profile(profile)
# Enable caching
config.set_option('caching.enabled_for', ['aiida.calculations:vasp.vasp'])
return profile
[docs]
def load_temp_profile_with_mock(force: bool = True) -> Profile:
"""Load a temporary profile with mock VASP codes for testing/demo purposes."""
# Skip creation
profile = load_temp_profile()
# Register mock codes
comp = orm.Computer('localhost', 'localhost', transport_type='core.local', scheduler_type='core.direct')
comp.store()
comp.set_workdir('/tmp/aiida_run/')
comp.configure()
vasp_path = check_output(['which', 'mock-vasp'], universal_newlines=True).strip()
vasp_code = orm.InstalledCode(comp, vasp_path[0], default_calc_job_plugin='vasp.vasp')
print(vasp_path[0])
vasp_code.label = 'vasp'
vasp_code.store()
vasp_code = orm.InstalledCode(comp, vasp_path[0], default_calc_job_plugin='vasp.vasp')
print(vasp_path[0])
vasp_code.label = 'mock-vasp'
vasp_code.store()
os.environ['MOCK_VASP_REG_BASE'] = str((Path() / 'mock_registry').absolute())
os.environ['MOCK_VASP_UPLOAD_PREFIX'] = 'singlepoint'
return profile