Skip to content

ReubenVandezande/hatch-modulefile

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

hatch_modulefile

PyPI - Version PyPI - Python Version


This provides automatic modulefile generation for EnvironmentModules. Modulefiles are created with a basic template which:

  1. Loads any modules listed in requires
  2. Sources the activate script of the installed packages (assumes venv installation). Does this by setting VIRUTAL_ENV and prepending the bin folder to PATH
  3. Sets extra environment variables defined in extra-paths

Table of Contents

Installation

pip install hatch-modulefile

Example

Example use case. Note that requires is a list of modulefiles available on your system through environment modules. Extra paths defines modulefile environment manipulations.

[build.hooks.modulefile] requires = [ "module1/1.0.0", "module2/3.1.2", "module3/2.0.0", ] extra-paths = [ { type="setenv", variable="NUMEXPR_MAX_THREADS", value="8" }, { type="prepend-path", variable="PATH", value="/custom/path" }, ]

This would generate a modulefile which looks like this:

#%Module

# Gets the folder two folders up from this file
set              venv                    [file dirname [file dirname [file dirname [file normalize $ModulesCurrentModulefile/___]]]]
set              site_packages           [glob $venv/lib/python*/site-packages]

set     necessary       {
  module1/1.0.0
  module2/3.1.2
  module3/2.0.0
}

foreach mod $necessary {
    set splitList [split $mod "/"]
    set mod_name [lindex $splitList 0]
    if { [ is-loaded $mod_name ] } {
        module switch $mod
    } else {
        module load $mod
    }
}

setenv VIRTUAL_ENV $venv
prepend-path PATH $venv/bin

# Extra module path requirements
setenv          NUMEXPR_MAX_THREADS     8
prepend-path    PATH                    /custom/path

License

hatch-modulefile is distributed under the terms of the MIT license.

About

Hatch plugin for use in Modulefiles environments

Resources

License

Stars

Watchers

Forks

Packages

No packages published