lmod-toolkit 0.0.1__tar.gz → 0.0.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {lmod_toolkit-0.0.1 → lmod_toolkit-0.0.2}/.github/workflows/publish-to-test-pypi.yml +5 -5
- lmod_toolkit-0.0.2/.gitignore +216 -0
- {lmod_toolkit-0.0.1 → lmod_toolkit-0.0.2}/PKG-INFO +4 -4
- {lmod_toolkit-0.0.1 → lmod_toolkit-0.0.2}/pyproject.toml +15 -5
- {lmod_toolkit-0.0.1 → lmod_toolkit-0.0.2}/setup.sh +17 -20
- lmod_toolkit-0.0.2/src/lmod_toolkit/__init__.py +1 -0
- lmod_toolkit-0.0.2/src/lmod_toolkit/_version.py +24 -0
- {lmod_toolkit-0.0.1/src/lmod-toolkit → lmod_toolkit-0.0.2/src/lmod_toolkit}/build_helper.py +7 -0
- lmod_toolkit-0.0.2/src/lmod_toolkit/lmod_config.py +34 -0
- {lmod_toolkit-0.0.1 → lmod_toolkit-0.0.2}/src/lmod_toolkit.egg-info/PKG-INFO +4 -4
- {lmod_toolkit-0.0.1 → lmod_toolkit-0.0.2}/src/lmod_toolkit.egg-info/SOURCES.txt +6 -3
- {lmod_toolkit-0.0.1 → lmod_toolkit-0.0.2}/src/lmod_toolkit.egg-info/scm_file_list.json +5 -3
- lmod_toolkit-0.0.2/src/lmod_toolkit.egg-info/scm_version.json +8 -0
- lmod_toolkit-0.0.2/src/lmod_toolkit.egg-info/top_level.txt +1 -0
- lmod_toolkit-0.0.2/utils/quickstart.sh +81 -0
- lmod_toolkit-0.0.1/src/lmod-toolkit/__init__.py +0 -0
- lmod_toolkit-0.0.1/src/lmod-toolkit/lmod_config.py +0 -4
- lmod_toolkit-0.0.1/src/lmod_toolkit.egg-info/scm_version.json +0 -8
- lmod_toolkit-0.0.1/src/lmod_toolkit.egg-info/top_level.txt +0 -1
- {lmod_toolkit-0.0.1 → lmod_toolkit-0.0.2}/README.md +0 -0
- {lmod_toolkit-0.0.1 → lmod_toolkit-0.0.2}/README.pypi +0 -0
- {lmod_toolkit-0.0.1 → lmod_toolkit-0.0.2}/setup.cfg +0 -0
- {lmod_toolkit-0.0.1 → lmod_toolkit-0.0.2}/src/lmod_toolkit.egg-info/dependency_links.txt +0 -0
- {lmod_toolkit-0.0.1 → lmod_toolkit-0.0.2}/utils/uv_installer.sh +0 -0
|
@@ -13,13 +13,13 @@ jobs:
|
|
|
13
13
|
runs-on: ubuntu-latest
|
|
14
14
|
|
|
15
15
|
steps:
|
|
16
|
-
- uses: actions/checkout@
|
|
16
|
+
- uses: actions/checkout@v7
|
|
17
17
|
with:
|
|
18
18
|
persist-credentials: false
|
|
19
19
|
fetch-depth: 0 # Fetch all history for all branches and tags
|
|
20
20
|
|
|
21
21
|
- name: Set up Python
|
|
22
|
-
uses: actions/setup-python@
|
|
22
|
+
uses: actions/setup-python@v7
|
|
23
23
|
with:
|
|
24
24
|
python-version: "3.x"
|
|
25
25
|
|
|
@@ -34,7 +34,7 @@ jobs:
|
|
|
34
34
|
run: python3 -m build
|
|
35
35
|
|
|
36
36
|
- name: Store the distribution packages
|
|
37
|
-
uses: actions/upload-artifact@
|
|
37
|
+
uses: actions/upload-artifact@v7
|
|
38
38
|
with:
|
|
39
39
|
name: python-package-distributions
|
|
40
40
|
path: dist/
|
|
@@ -54,7 +54,7 @@ jobs:
|
|
|
54
54
|
id-token: write # IMPORTANT: mandatory for trusted publishing
|
|
55
55
|
steps:
|
|
56
56
|
- name: Download all the dists
|
|
57
|
-
uses: actions/download-artifact@
|
|
57
|
+
uses: actions/download-artifact@v8
|
|
58
58
|
with:
|
|
59
59
|
name: python-package-distributions
|
|
60
60
|
path: dist/
|
|
@@ -78,7 +78,7 @@ jobs:
|
|
|
78
78
|
|
|
79
79
|
steps:
|
|
80
80
|
- name: Download all the dists
|
|
81
|
-
uses: actions/download-artifact@
|
|
81
|
+
uses: actions/download-artifact@v8
|
|
82
82
|
with:
|
|
83
83
|
name: python-package-distributions
|
|
84
84
|
path: dist/
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
# Custom
|
|
2
|
+
*.pyc
|
|
3
|
+
*~
|
|
4
|
+
.DS_Store
|
|
5
|
+
*.swp
|
|
6
|
+
*.old
|
|
7
|
+
_version.py
|
|
8
|
+
|
|
9
|
+
# Byte-compiled / optimized / DLL files
|
|
10
|
+
__pycache__/
|
|
11
|
+
*.py[codz]
|
|
12
|
+
*$py.class
|
|
13
|
+
|
|
14
|
+
# C extensions
|
|
15
|
+
*.so
|
|
16
|
+
|
|
17
|
+
# Distribution / packaging
|
|
18
|
+
.Python
|
|
19
|
+
build/
|
|
20
|
+
develop-eggs/
|
|
21
|
+
dist/
|
|
22
|
+
downloads/
|
|
23
|
+
eggs/
|
|
24
|
+
.eggs/
|
|
25
|
+
lib/
|
|
26
|
+
lib64/
|
|
27
|
+
parts/
|
|
28
|
+
sdist/
|
|
29
|
+
var/
|
|
30
|
+
wheels/
|
|
31
|
+
share/python-wheels/
|
|
32
|
+
*.egg-info/
|
|
33
|
+
.installed.cfg
|
|
34
|
+
*.egg
|
|
35
|
+
MANIFEST
|
|
36
|
+
|
|
37
|
+
# PyInstaller
|
|
38
|
+
# Usually these files are written by a python script from a template
|
|
39
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
40
|
+
*.manifest
|
|
41
|
+
*.spec
|
|
42
|
+
|
|
43
|
+
# Installer logs
|
|
44
|
+
pip-log.txt
|
|
45
|
+
pip-delete-this-directory.txt
|
|
46
|
+
|
|
47
|
+
# Unit test / coverage reports
|
|
48
|
+
htmlcov/
|
|
49
|
+
.tox/
|
|
50
|
+
.nox/
|
|
51
|
+
.coverage
|
|
52
|
+
.coverage.*
|
|
53
|
+
.cache
|
|
54
|
+
nosetests.xml
|
|
55
|
+
coverage.xml
|
|
56
|
+
*.cover
|
|
57
|
+
*.py.cover
|
|
58
|
+
.hypothesis/
|
|
59
|
+
.pytest_cache/
|
|
60
|
+
cover/
|
|
61
|
+
|
|
62
|
+
# Translations
|
|
63
|
+
*.mo
|
|
64
|
+
*.pot
|
|
65
|
+
|
|
66
|
+
# Django stuff:
|
|
67
|
+
*.log
|
|
68
|
+
local_settings.py
|
|
69
|
+
db.sqlite3
|
|
70
|
+
db.sqlite3-journal
|
|
71
|
+
|
|
72
|
+
# Flask stuff:
|
|
73
|
+
instance/
|
|
74
|
+
.webassets-cache
|
|
75
|
+
|
|
76
|
+
# Scrapy stuff:
|
|
77
|
+
.scrapy
|
|
78
|
+
|
|
79
|
+
# Sphinx documentation
|
|
80
|
+
docs/_build/
|
|
81
|
+
|
|
82
|
+
# PyBuilder
|
|
83
|
+
.pybuilder/
|
|
84
|
+
target/
|
|
85
|
+
|
|
86
|
+
# Jupyter Notebook
|
|
87
|
+
.ipynb_checkpoints
|
|
88
|
+
|
|
89
|
+
# IPython
|
|
90
|
+
profile_default/
|
|
91
|
+
ipython_config.py
|
|
92
|
+
|
|
93
|
+
# pyenv
|
|
94
|
+
# For a library or package, you might want to ignore these files since the code is
|
|
95
|
+
# intended to run in multiple environments; otherwise, check them in:
|
|
96
|
+
# .python-version
|
|
97
|
+
|
|
98
|
+
# pipenv
|
|
99
|
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
|
100
|
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
|
101
|
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
|
102
|
+
# install all needed dependencies.
|
|
103
|
+
#Pipfile.lock
|
|
104
|
+
|
|
105
|
+
# UV
|
|
106
|
+
# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
|
|
107
|
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
|
108
|
+
# commonly ignored for libraries.
|
|
109
|
+
#uv.lock
|
|
110
|
+
|
|
111
|
+
# poetry
|
|
112
|
+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
|
113
|
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
|
114
|
+
# commonly ignored for libraries.
|
|
115
|
+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
|
116
|
+
#poetry.lock
|
|
117
|
+
#poetry.toml
|
|
118
|
+
|
|
119
|
+
# pdm
|
|
120
|
+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
|
121
|
+
# pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
|
|
122
|
+
# https://pdm-project.org/en/latest/usage/project/#working-with-version-control
|
|
123
|
+
#pdm.lock
|
|
124
|
+
#pdm.toml
|
|
125
|
+
.pdm-python
|
|
126
|
+
.pdm-build/
|
|
127
|
+
|
|
128
|
+
# pixi
|
|
129
|
+
# Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
|
|
130
|
+
#pixi.lock
|
|
131
|
+
# Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
|
|
132
|
+
# in the .venv directory. It is recommended not to include this directory in version control.
|
|
133
|
+
.pixi
|
|
134
|
+
|
|
135
|
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
|
136
|
+
__pypackages__/
|
|
137
|
+
|
|
138
|
+
# Celery stuff
|
|
139
|
+
celerybeat-schedule
|
|
140
|
+
celerybeat.pid
|
|
141
|
+
|
|
142
|
+
# SageMath parsed files
|
|
143
|
+
*.sage.py
|
|
144
|
+
|
|
145
|
+
# Environments
|
|
146
|
+
.env
|
|
147
|
+
.envrc
|
|
148
|
+
.venv
|
|
149
|
+
env/
|
|
150
|
+
venv/
|
|
151
|
+
ENV/
|
|
152
|
+
env.bak/
|
|
153
|
+
venv.bak/
|
|
154
|
+
|
|
155
|
+
# Spyder project settings
|
|
156
|
+
.spyderproject
|
|
157
|
+
.spyproject
|
|
158
|
+
|
|
159
|
+
# Rope project settings
|
|
160
|
+
.ropeproject
|
|
161
|
+
|
|
162
|
+
# mkdocs documentation
|
|
163
|
+
/site
|
|
164
|
+
|
|
165
|
+
# mypy
|
|
166
|
+
.mypy_cache/
|
|
167
|
+
.dmypy.json
|
|
168
|
+
dmypy.json
|
|
169
|
+
|
|
170
|
+
# Pyre type checker
|
|
171
|
+
.pyre/
|
|
172
|
+
|
|
173
|
+
# pytype static type analyzer
|
|
174
|
+
.pytype/
|
|
175
|
+
|
|
176
|
+
# Cython debug symbols
|
|
177
|
+
cython_debug/
|
|
178
|
+
|
|
179
|
+
# PyCharm
|
|
180
|
+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
|
181
|
+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
|
182
|
+
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
|
183
|
+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
|
184
|
+
#.idea/
|
|
185
|
+
|
|
186
|
+
# Abstra
|
|
187
|
+
# Abstra is an AI-powered process automation framework.
|
|
188
|
+
# Ignore directories containing user credentials, local state, and settings.
|
|
189
|
+
# Learn more at https://abstra.io/docs
|
|
190
|
+
.abstra/
|
|
191
|
+
|
|
192
|
+
# Visual Studio Code
|
|
193
|
+
# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
|
|
194
|
+
# that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
|
|
195
|
+
# and can be added to the global gitignore or merged into this file. However, if you prefer,
|
|
196
|
+
# you could uncomment the following to ignore the entire vscode folder
|
|
197
|
+
# .vscode/
|
|
198
|
+
|
|
199
|
+
# Ruff stuff:
|
|
200
|
+
.ruff_cache/
|
|
201
|
+
|
|
202
|
+
# PyPI configuration file
|
|
203
|
+
.pypirc
|
|
204
|
+
|
|
205
|
+
# Cursor
|
|
206
|
+
# Cursor is an AI-powered code editor. `.cursorignore` specifies files/directories to
|
|
207
|
+
# exclude from AI features like autocomplete and code analysis. Recommended for sensitive data
|
|
208
|
+
# refer to https://docs.cursor.com/context/ignore-files
|
|
209
|
+
.cursorignore
|
|
210
|
+
.cursorindexingignore
|
|
211
|
+
|
|
212
|
+
# Marimo
|
|
213
|
+
marimo/_static/
|
|
214
|
+
marimo/_lsp/
|
|
215
|
+
__marimo__/
|
|
216
|
+
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
|
-
Name:
|
|
3
|
-
Version: 0.0.
|
|
2
|
+
Name: lmod-toolkit
|
|
3
|
+
Version: 0.0.2
|
|
4
4
|
Summary: ACCESS Lmod Toolkit
|
|
5
|
-
Author-email: Andy Loftus <aloftus@illinois.
|
|
5
|
+
Author-email: Andy Loftus <aloftus@illinois.edu>, Eric Blau <blau@globus.org>
|
|
6
6
|
Project-URL: Repository, https://github.com/access-ci-org/lmod-toolkit
|
|
7
7
|
Keywords: monitoring,information,gathering,publishing
|
|
8
8
|
Classifier: Development Status :: 1 - Planning
|
|
9
9
|
Classifier: Programming Language :: Python :: 3
|
|
10
10
|
Classifier: Topic :: System :: Monitoring
|
|
11
|
-
Requires-Python:
|
|
11
|
+
Requires-Python: >=3.14
|
|
12
12
|
Description-Content-Type: text/markdown
|
|
13
13
|
|
|
14
14
|
# lmod toolkit (LMTK)
|
|
@@ -5,8 +5,8 @@ build-backend = "setuptools.build_meta:__legacy__"
|
|
|
5
5
|
# see also https://setuptools-git-versioning.readthedocs.io/en/stable/options/version_callback.html
|
|
6
6
|
|
|
7
7
|
[project]
|
|
8
|
-
name = "
|
|
9
|
-
requires-python = "
|
|
8
|
+
name = "lmod-toolkit"
|
|
9
|
+
requires-python = ">=3.14"
|
|
10
10
|
dependencies = [
|
|
11
11
|
]
|
|
12
12
|
dynamic = [
|
|
@@ -27,7 +27,7 @@ keywords = [
|
|
|
27
27
|
"publishing",
|
|
28
28
|
]
|
|
29
29
|
authors = [
|
|
30
|
-
{name = "Andy Loftus", email = "aloftus@illinois.
|
|
30
|
+
{name = "Andy Loftus", email = "aloftus@illinois.edu"},
|
|
31
31
|
{name = "Eric Blau", email = "blau@globus.org"},
|
|
32
32
|
]
|
|
33
33
|
|
|
@@ -37,7 +37,17 @@ Repository = "https://github.com/access-ci-org/lmod-toolkit"
|
|
|
37
37
|
[tool.setuptools.dynamic]
|
|
38
38
|
readme = {file = ["README.pypi"], content-type = "text/markdown"}
|
|
39
39
|
|
|
40
|
+
|
|
41
|
+
# needed because the package name (lmod-toolkit)
|
|
42
|
+
# doesn't match the import name (lmod_toolkit)
|
|
43
|
+
# [tool.setuptools.packages.find]
|
|
44
|
+
# where = ["src"]
|
|
45
|
+
# include = ["lmod_toolkit*"]
|
|
46
|
+
[tool.setuptools]
|
|
47
|
+
package-dir = {"" = "src"}
|
|
48
|
+
|
|
49
|
+
|
|
40
50
|
[tool.setuptools_scm]
|
|
41
|
-
version_file = "lmod_toolkit/_version.py"
|
|
42
|
-
version_scheme = "ipf.build_helper:mk_version"
|
|
51
|
+
version_file = "src/lmod_toolkit/_version.py"
|
|
52
|
+
version_scheme = "ipf.build_helper:mk_version" # a published version must exist in pypi
|
|
43
53
|
local_scheme = "no-local-version" # local version component not allowed on pypi
|
|
@@ -68,11 +68,14 @@ install_uv() {
|
|
|
68
68
|
export UV_UNMANAGED_INSTALL="${UV_DIR}"
|
|
69
69
|
UV_URL=https://raw.githubusercontent.com/"${GH_USER}"/"${GH_REPO}"/refs/heads/"${GH_BRANCH}"/utils/uv_installer.sh
|
|
70
70
|
# allow override of UV_URL (uv installer script)
|
|
71
|
-
|
|
71
|
+
[[ -n "${LMTK_UV_URL}" ]] && UV_URL="${LMTK_UV_URL}"
|
|
72
72
|
UV_INSTALLER="${UV_DIR}"/uv_installer.sh
|
|
73
73
|
curl -LsSf --create-dirs "${UV_URL}" -o "${UV_INSTALLER}"
|
|
74
74
|
sh "${UV_INSTALLER}" || die 'failed to install uv'
|
|
75
75
|
}
|
|
76
|
+
#TODO - would it be useful to have a uv.toml file in {INSTALL_DIR}
|
|
77
|
+
#TODO - maybe also replace uv with a bash alias to use
|
|
78
|
+
# "uv --config-file <PATH_TO_UV_TOML>"
|
|
76
79
|
}
|
|
77
80
|
|
|
78
81
|
|
|
@@ -83,7 +86,7 @@ mk_venv() {
|
|
|
83
86
|
export UV_NO_CACHE=1
|
|
84
87
|
export UV_MANAGED_PYTHON=1
|
|
85
88
|
# allow override python version
|
|
86
|
-
|
|
89
|
+
[[ -n "${LMTK_UV_PYTHON}" ]] && UV_PYTHON="${LMTK_UV_PYTHON}"
|
|
87
90
|
export UV_PYTHON
|
|
88
91
|
"$UV" venv "$VENV"
|
|
89
92
|
success "Python venv created at '$VENV'"
|
|
@@ -115,26 +118,18 @@ is_pre_release_allowed() {
|
|
|
115
118
|
}
|
|
116
119
|
|
|
117
120
|
|
|
118
|
-
install_pre_release() {
|
|
119
|
-
[[ $DEBUG -eq $YES ]] && set -x
|
|
120
|
-
is_pre_release_allowed || return
|
|
121
|
-
"${V_PYTHON}" -m pip install \
|
|
122
|
-
--upgrade \
|
|
123
|
-
--no-cache-dir \
|
|
124
|
-
--pre \
|
|
125
|
-
--no-deps \
|
|
126
|
-
--index-url https://test.pypi.org/simple/ \
|
|
127
|
-
lmod_toolkit"${LMTK_INSTALL_VERSION:+==$LMTK_INSTALL_VERSION}" \
|
|
128
|
-
&& success "Installed dev version of lmod_toolkit"
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
|
|
132
121
|
install_lmod_toolkit() {
|
|
133
122
|
[[ $DEBUG -eq $YES ]] && set -x
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
123
|
+
export UV_DEFAULT_INDEX=https://pypi.org/simple
|
|
124
|
+
is_pre_release_allowed && {
|
|
125
|
+
export UV_INDEX=https://test.pypi.org/simple
|
|
126
|
+
export UV_PRERELEASE=allow
|
|
127
|
+
}
|
|
128
|
+
pushd "${INSTALL_DIR}"
|
|
129
|
+
"${UV}" pip install \
|
|
130
|
+
lmod-toolkit"${LMTK_INSTALL_VERSION:+==$LMTK_INSTALL_VERSION}"
|
|
131
|
+
popd
|
|
132
|
+
|
|
138
133
|
}
|
|
139
134
|
|
|
140
135
|
|
|
@@ -176,6 +171,8 @@ install_uv
|
|
|
176
171
|
|
|
177
172
|
mk_venv
|
|
178
173
|
|
|
174
|
+
install_lmod_toolkit
|
|
175
|
+
|
|
179
176
|
# update_files
|
|
180
177
|
|
|
181
178
|
# mk_symlinks
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from . import lmod_config
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# file generated by vcs-versioning
|
|
2
|
+
# don't change, don't track in version control
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
__all__ = [
|
|
6
|
+
"__version__",
|
|
7
|
+
"__version_tuple__",
|
|
8
|
+
"version",
|
|
9
|
+
"version_tuple",
|
|
10
|
+
"__commit_id__",
|
|
11
|
+
"commit_id",
|
|
12
|
+
]
|
|
13
|
+
|
|
14
|
+
version: str
|
|
15
|
+
__version__: str
|
|
16
|
+
__version_tuple__: tuple[int | str, ...]
|
|
17
|
+
version_tuple: tuple[int | str, ...]
|
|
18
|
+
commit_id: str | None
|
|
19
|
+
__commit_id__: str | None
|
|
20
|
+
|
|
21
|
+
__version__ = version = '0.0.2'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 0, 2)
|
|
23
|
+
|
|
24
|
+
__commit_id__ = commit_id = 'gdfb2970e9'
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
from setuptools_scm.version import ScmVersion, guess_next_version
|
|
2
2
|
import time
|
|
3
|
+
|
|
4
|
+
# import this module as part of build-system requires in pyproject.toml
|
|
5
|
+
# It must already exist on pypi as a published pkg for the build-system
|
|
6
|
+
# to be able to inlcude it...
|
|
7
|
+
# so for the very first time, use a different one (such as from ipf)
|
|
8
|
+
# in pyproject.toml, then once published, update pyproject.toml to use this one
|
|
9
|
+
|
|
3
10
|
def mk_version( version: ScmVersion ) -> str:
|
|
4
11
|
# setuptools_scm template options
|
|
5
12
|
# see also https://github.com/pypa/setuptools-scm/blob/main/setuptools-scm/src/setuptools_scm/version.py especially "def meta( ... )"
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import json
|
|
2
|
+
import subprocess
|
|
3
|
+
import pprint
|
|
4
|
+
import functools
|
|
5
|
+
|
|
6
|
+
__all__ = [
|
|
7
|
+
'Lmod_Config',
|
|
8
|
+
]
|
|
9
|
+
|
|
10
|
+
class Lmod_Config :
|
|
11
|
+
def __init__( self ):
|
|
12
|
+
self.raw = None
|
|
13
|
+
self.config = None
|
|
14
|
+
self._load()
|
|
15
|
+
|
|
16
|
+
def _load( self ):
|
|
17
|
+
cmds = [ 'bash', '-l', '-c', 'module --config_json' ]
|
|
18
|
+
result = subprocess.run(
|
|
19
|
+
cmds,
|
|
20
|
+
capture_output=True, # Captures both stdout and stderr
|
|
21
|
+
text=True # Returns strings instead of bytes
|
|
22
|
+
)
|
|
23
|
+
# pprint.pprint( ['STDOUT', result.stdout] )
|
|
24
|
+
# pprint.pprint( ['STDERR', result.stderr] )
|
|
25
|
+
self.config = json.loads( result.stderr )
|
|
26
|
+
|
|
27
|
+
@functools.cached_property
|
|
28
|
+
def get_key( self, key ):
|
|
29
|
+
return self.config[ key ]
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
if __name__ == '__main__':
|
|
33
|
+
lmc = Lmod_Config()
|
|
34
|
+
pprint.pprint( lmc.config )
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
|
-
Name:
|
|
3
|
-
Version: 0.0.
|
|
2
|
+
Name: lmod-toolkit
|
|
3
|
+
Version: 0.0.2
|
|
4
4
|
Summary: ACCESS Lmod Toolkit
|
|
5
|
-
Author-email: Andy Loftus <aloftus@illinois.
|
|
5
|
+
Author-email: Andy Loftus <aloftus@illinois.edu>, Eric Blau <blau@globus.org>
|
|
6
6
|
Project-URL: Repository, https://github.com/access-ci-org/lmod-toolkit
|
|
7
7
|
Keywords: monitoring,information,gathering,publishing
|
|
8
8
|
Classifier: Development Status :: 1 - Planning
|
|
9
9
|
Classifier: Programming Language :: Python :: 3
|
|
10
10
|
Classifier: Topic :: System :: Monitoring
|
|
11
|
-
Requires-Python:
|
|
11
|
+
Requires-Python: >=3.14
|
|
12
12
|
Description-Content-Type: text/markdown
|
|
13
13
|
|
|
14
14
|
# lmod toolkit (LMTK)
|
|
@@ -1,15 +1,18 @@
|
|
|
1
|
+
.gitignore
|
|
1
2
|
README.md
|
|
2
3
|
README.pypi
|
|
3
4
|
pyproject.toml
|
|
4
5
|
setup.sh
|
|
5
6
|
.github/workflows/publish-to-test-pypi.yml
|
|
6
|
-
src/
|
|
7
|
-
src/
|
|
8
|
-
src/
|
|
7
|
+
src/lmod_toolkit/__init__.py
|
|
8
|
+
src/lmod_toolkit/_version.py
|
|
9
|
+
src/lmod_toolkit/build_helper.py
|
|
10
|
+
src/lmod_toolkit/lmod_config.py
|
|
9
11
|
src/lmod_toolkit.egg-info/PKG-INFO
|
|
10
12
|
src/lmod_toolkit.egg-info/SOURCES.txt
|
|
11
13
|
src/lmod_toolkit.egg-info/dependency_links.txt
|
|
12
14
|
src/lmod_toolkit.egg-info/scm_file_list.json
|
|
13
15
|
src/lmod_toolkit.egg-info/scm_version.json
|
|
14
16
|
src/lmod_toolkit.egg-info/top_level.txt
|
|
17
|
+
utils/quickstart.sh
|
|
15
18
|
utils/uv_installer.sh
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"files": [
|
|
3
3
|
".github/workflows/publish-to-test-pypi.yml",
|
|
4
|
+
".gitignore",
|
|
4
5
|
"README.md",
|
|
5
6
|
"README.pypi",
|
|
6
7
|
"pyproject.toml",
|
|
7
8
|
"setup.sh",
|
|
8
|
-
"src/
|
|
9
|
-
"src/
|
|
10
|
-
"src/
|
|
9
|
+
"src/lmod_toolkit/__init__.py",
|
|
10
|
+
"src/lmod_toolkit/build_helper.py",
|
|
11
|
+
"src/lmod_toolkit/lmod_config.py",
|
|
12
|
+
"utils/quickstart.sh",
|
|
11
13
|
"utils/uv_installer.sh"
|
|
12
14
|
]
|
|
13
15
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
lmod_toolkit
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
#!/usr/bin/bash
|
|
2
|
+
|
|
3
|
+
set -x
|
|
4
|
+
|
|
5
|
+
# =========================
|
|
6
|
+
# customize these as needed
|
|
7
|
+
# =========================
|
|
8
|
+
|
|
9
|
+
# where to save the installer script
|
|
10
|
+
LMTK_SETUP="${HOME}"/lmtk-setup.sh
|
|
11
|
+
|
|
12
|
+
# set to an absolute path (default is $HOME/ipf)
|
|
13
|
+
LMTK_INSTALL_DIR="${HOME}"/lmod-toolkit
|
|
14
|
+
|
|
15
|
+
# dont actually do anything, just print out a list of commands
|
|
16
|
+
# that can be run manually
|
|
17
|
+
# MANUAL=yes
|
|
18
|
+
|
|
19
|
+
# set to "yes" or leave unset (defaults to latest)
|
|
20
|
+
LMTK_ALLOW_PRE_RELEASE=yes
|
|
21
|
+
|
|
22
|
+
# specify an exact version of LMTK
|
|
23
|
+
# get version string from
|
|
24
|
+
# https://pypi.org/project/lmod-toolkit/#history (production releases)
|
|
25
|
+
# OR https://test.pypi.org/project/lmod-toolkit/#history (pre-release versions)
|
|
26
|
+
# LMTK_INSTALL_VERSION=0.0.2.dev1794287670
|
|
27
|
+
# LMTK_INSTALL_VERSION=0.0.2
|
|
28
|
+
|
|
29
|
+
# either a branch name or leave unset (defaults to main)
|
|
30
|
+
LMTK_GIT_BRANCH=poc
|
|
31
|
+
|
|
32
|
+
# specify a specific version of python if needed
|
|
33
|
+
# LMTK_UV_PYTHON=3.15
|
|
34
|
+
|
|
35
|
+
# =====================================
|
|
36
|
+
# shouldn't need to touch anything else
|
|
37
|
+
# =====================================
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
[[ -z "${LMTK_GIT_BRANCH}" ]] && LMTK_GIT_BRANCH=main
|
|
41
|
+
URL_BASE='https://raw.githubusercontent.com/access-ci-org/lmod-toolkit/refs/heads'
|
|
42
|
+
LMTK_SETUP_URL="${URL_BASE}"/"${LMTK_GIT_BRANCH}"/setup.sh
|
|
43
|
+
LMTK_UV_URL="${URL_BASE}"/"${LMTK_GIT_BRANCH}"/utils/uv_installer.sh
|
|
44
|
+
# LMTK_BIN="${LMTK_INSTALL_DIR}"/bin
|
|
45
|
+
VENV="${LMTK_INSTALL_DIR}"/.venv
|
|
46
|
+
|
|
47
|
+
###
|
|
48
|
+
# MAIN
|
|
49
|
+
###
|
|
50
|
+
|
|
51
|
+
# make exports (used by setup script)
|
|
52
|
+
export LMTK_UV_URL
|
|
53
|
+
export LMTK_INSTALL_DIR
|
|
54
|
+
[[ -n "${LMTK_ALLOW_PRE_RELEASE}" ]] && export LMTK_ALLOW_PRE_RELEASE
|
|
55
|
+
[[ -n "${LMTK_UV_PYTHON}" ]] && export LMTK_UV_PYTHON
|
|
56
|
+
[[ -n "${LMTK_INSTALL_VERSION}" ]] && export LMTK_INSTALL_VERSION
|
|
57
|
+
|
|
58
|
+
# set ACTION if doing manual run
|
|
59
|
+
if [[ -n "${MANUAL}" ]] ; then
|
|
60
|
+
ACTION=echo
|
|
61
|
+
set +x
|
|
62
|
+
echo 'COMMANDS THAT WOULD HAVE BEEN RUN'
|
|
63
|
+
echo '---------------------------------'
|
|
64
|
+
fi
|
|
65
|
+
|
|
66
|
+
# stop anything running
|
|
67
|
+
# [[ -x "${IPF_BIN}"/wfm ]] && ${ACTION} bash "${IPF_BIN}"/wfm stop
|
|
68
|
+
|
|
69
|
+
# cleanup any existing installs
|
|
70
|
+
${ACTION} rm -rf "${LMTK_INSTALL_DIR}"
|
|
71
|
+
# ${ACTION} rm -rf "${HOME}"/.cache/pip #shouldn't need this anymore since switched to UV
|
|
72
|
+
|
|
73
|
+
# get new setup script
|
|
74
|
+
${ACTION} rm -f "${LMTK_SETUP}"
|
|
75
|
+
${ACTION} curl -o "${LMTK_SETUP}" "${LMTK_SETUP_URL}"
|
|
76
|
+
# and run it
|
|
77
|
+
${ACTION} bash "${LMTK_SETUP}"
|
|
78
|
+
|
|
79
|
+
# validate install
|
|
80
|
+
# ${ACTION} "${VENV}"/bin/python --version
|
|
81
|
+
# ${ACTION} "${VENV}"/bin/python -m pip freeze
|
|
File without changes
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
lmod-toolkit
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|