algorithm-nexus 0.2.1__tar.gz → 0.2.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.
- algorithm_nexus-0.2.2/.agents/skills/add-nexus-package/SKILL.md +142 -0
- algorithm_nexus-0.2.2/.agents/skills/update-lock-file/SKILL.md +67 -0
- algorithm_nexus-0.2.2/.copywrite.hcl +35 -0
- algorithm_nexus-0.2.2/.github/ISSUE_TEMPLATE/bug_report.md +39 -0
- algorithm_nexus-0.2.2/.github/ISSUE_TEMPLATE/feature_request.md +31 -0
- algorithm_nexus-0.2.2/.github/PULL_REQUEST_TEMPLATE/new_nexus_package.md +25 -0
- algorithm_nexus-0.2.2/.github/dco.yml +4 -0
- algorithm_nexus-0.2.2/.gitignore +76 -0
- algorithm_nexus-0.2.2/.markdownlint-cli2.yaml +45 -0
- algorithm_nexus-0.2.2/.pre-commit-config.yaml +95 -0
- algorithm_nexus-0.2.2/.prettierrc.toml +4 -0
- algorithm_nexus-0.2.2/.python-version +1 -0
- algorithm_nexus-0.2.2/.secrets.baseline +96 -0
- algorithm_nexus-0.2.2/.yamlfmt +14 -0
- algorithm_nexus-0.2.2/CHANGELOG.md +232 -0
- algorithm_nexus-0.2.2/CONTRIBUTING.md +149 -0
- algorithm_nexus-0.2.2/MAINTAINERS.md +10 -0
- {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/PKG-INFO +24 -24
- algorithm_nexus-0.2.2/benchmarks/.gitkeep +0 -0
- algorithm_nexus-0.2.2/docs/assets/images/favicon.ico +0 -0
- algorithm_nexus-0.2.2/docs/assets/images/logo-ibm-dark.png +0 -0
- algorithm_nexus-0.2.2/docs/assets/images/logo-ibm.png +0 -0
- algorithm_nexus-0.2.2/docs/contributing/add_benchmark.md +428 -0
- algorithm_nexus-0.2.2/docs/contributing/add_new_nexus_package.md +196 -0
- algorithm_nexus-0.2.2/docs/contributing/guidelines.md +1 -0
- algorithm_nexus-0.2.2/docs/contributing/index.md +12 -0
- algorithm_nexus-0.2.2/docs/contributing/owner_responsibilities.md +149 -0
- algorithm_nexus-0.2.2/docs/design/benchmark_integration_design.md +363 -0
- algorithm_nexus-0.2.2/docs/design/benchmark_metadata_convention.md +477 -0
- algorithm_nexus-0.2.2/docs/design/benchmark_system.md +239 -0
- algorithm_nexus-0.2.2/docs/design/dependency-resolution.md +299 -0
- algorithm_nexus-0.2.2/docs/design/index.md +14 -0
- algorithm_nexus-0.2.2/docs/design/nexus_package.md +197 -0
- algorithm_nexus-0.2.2/docs/design/project_release.md +56 -0
- algorithm_nexus-0.2.2/docs/getting-started/cli-reference.md +579 -0
- algorithm_nexus-0.2.2/docs/getting-started/index.md +25 -0
- algorithm_nexus-0.2.2/docs/getting-started/installation.md +60 -0
- algorithm_nexus-0.2.2/docs/index.md +38 -0
- algorithm_nexus-0.2.2/docs/requirements/benchmark.md +240 -0
- algorithm_nexus-0.2.2/docs/requirements/index.md +13 -0
- algorithm_nexus-0.2.2/docs/requirements/model_vllm.md +44 -0
- algorithm_nexus-0.2.2/docs/requirements/models_testing.md +70 -0
- algorithm_nexus-0.2.2/docs/requirements/nexus_package.md +94 -0
- algorithm_nexus-0.2.2/docs/requirements/packaging_and_dependency_reqs.md +189 -0
- algorithm_nexus-0.2.2/docs/stylesheets/extra.css +61 -0
- algorithm_nexus-0.2.2/docs/theme/favicon.ico +0 -0
- algorithm_nexus-0.2.2/docs/theme/logo-ibm-dark.png +0 -0
- algorithm_nexus-0.2.2/docs/theme/logo-ibm.png +0 -0
- algorithm_nexus-0.2.2/mendUnifiedAgent.config +1 -0
- algorithm_nexus-0.2.2/package.json +4 -0
- algorithm_nexus-0.2.2/packages/.gitkeep +0 -0
- algorithm_nexus-0.2.2/packages/bmfm-targets/models/biomed.rna.llama.32m.mlm.multitask.v1.vllm/model.yaml +8 -0
- algorithm_nexus-0.2.2/packages/bmfm-targets/models/biomed.rna.llama.32m.mlm.multitask.v1.vllm/usage.md +93 -0
- algorithm_nexus-0.2.2/packages/bmfm-targets/models/biomed.rna.llama.47m.wced.multitask.v1.vllm/model.yaml +8 -0
- algorithm_nexus-0.2.2/packages/bmfm-targets/models/biomed.rna.llama.47m.wced.multitask.v1.vllm/usage.md +93 -0
- algorithm_nexus-0.2.2/packages/bmfm-targets/nexus.yaml +4 -0
- algorithm_nexus-0.2.2/packages/gridfm-graphkit/nexus.yaml +2 -0
- algorithm_nexus-0.2.2/packages/terrakit/nexus.yaml +2 -0
- algorithm_nexus-0.2.2/packages/terratorch/models/prithvi/model.yaml +8 -0
- algorithm_nexus-0.2.2/packages/terratorch/models/prithvi/usage.md +154 -0
- algorithm_nexus-0.2.2/packages/terratorch/models/terramind_base_fire/model.yaml +7 -0
- algorithm_nexus-0.2.2/packages/terratorch/models/terramind_base_fire/usage.md +154 -0
- algorithm_nexus-0.2.2/packages/terratorch/models/terramind_base_flood/model.yaml +7 -0
- algorithm_nexus-0.2.2/packages/terratorch/models/terramind_base_flood/usage.md +162 -0
- algorithm_nexus-0.2.2/packages/terratorch/nexus.yaml +2 -0
- algorithm_nexus-0.2.2/packages/tokamind/models/tokamind-base-v2/model.yaml +2 -0
- algorithm_nexus-0.2.2/packages/tokamind/nexus.yaml +2 -0
- {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/pyproject.toml +17 -3
- algorithm_nexus-0.2.2/renovate.json +6 -0
- algorithm_nexus-0.2.2/requirements-candidate.txt +4223 -0
- algorithm_nexus-0.2.2/requirements-ecosystem.txt +3555 -0
- algorithm_nexus-0.2.2/requirements-product.txt +3784 -0
- algorithm_nexus-0.2.2/ruff.toml +97 -0
- algorithm_nexus-0.2.2/src/algorithm_nexus/__init__.py +8 -0
- algorithm_nexus-0.2.2/templates/nexus-package-template/README.md +90 -0
- algorithm_nexus-0.2.2/templates/nexus-package-template/benchmark_instances/example-benchmark/space.yaml +18 -0
- algorithm_nexus-0.2.2/templates/nexus-package-template/models/your-model-name/benchmark_instances/example-benchmark/space.yaml +18 -0
- algorithm_nexus-0.2.2/templates/nexus-package-template/models/your-model-name/model.yaml +21 -0
- algorithm_nexus-0.2.2/templates/nexus-package-template/nexus.yaml +20 -0
- algorithm_nexus-0.2.2/templates/packages/package-name/README.md +90 -0
- algorithm_nexus-0.2.2/templates/packages/package-name/benchmark_instances/example-benchmark/space.yaml +18 -0
- algorithm_nexus-0.2.2/templates/packages/package-name/models/model-name/benchmark_instances/example-benchmark/space.yaml +18 -0
- algorithm_nexus-0.2.2/templates/packages/package-name/models/model-name/model.yaml +21 -0
- algorithm_nexus-0.2.2/templates/packages/package-name/nexus.yaml +20 -0
- {algorithm_nexus-0.2.1/src/algorithm_nexus → algorithm_nexus-0.2.2/tests}/__init__.py +1 -1
- algorithm_nexus-0.2.2/tests/fixtures/logical_benchmarks/invalid_binding_id_mismatch.yaml +19 -0
- algorithm_nexus-0.2.2/tests/fixtures/logical_benchmarks/invalid_binding_unknown_metric.yaml +26 -0
- algorithm_nexus-0.2.2/tests/fixtures/logical_benchmarks/invalid_binding_unknown_property.yaml +24 -0
- algorithm_nexus-0.2.2/tests/fixtures/logical_benchmarks/invalid_missing_required_field.yaml +8 -0
- algorithm_nexus-0.2.2/tests/fixtures/logical_benchmarks/valid_full.yaml +50 -0
- algorithm_nexus-0.2.2/tests/fixtures/logical_benchmarks/valid_no_bindings.yaml +14 -0
- algorithm_nexus-0.2.2/tests/fixtures/packages/.gitignore +2 -0
- algorithm_nexus-0.2.2/tests/fixtures/packages/invalid-package/models/broken-model/model.yaml +19 -0
- algorithm_nexus-0.2.2/tests/fixtures/packages/invalid-package/models/undeclared-model/model.yaml +10 -0
- algorithm_nexus-0.2.2/tests/fixtures/packages/invalid-package/nexus.yaml +7 -0
- algorithm_nexus-0.2.2/tests/fixtures/packages/invalid-package-benchmarks/models/bad-model/benchmark_instances/missing-space-yaml/.gitkeep +0 -0
- algorithm_nexus-0.2.2/tests/fixtures/packages/invalid-package-benchmarks/models/bad-model/benchmark_instances/unregistered-experiment-test/space.yaml +5 -0
- algorithm_nexus-0.2.2/tests/fixtures/packages/invalid-package-benchmarks/models/bad-model/model.yaml +4 -0
- algorithm_nexus-0.2.2/tests/fixtures/packages/invalid-package-benchmarks/nexus.yaml +13 -0
- algorithm_nexus-0.2.2/tests/fixtures/packages/terratorch/benchmark_instances/base-test/space.yaml +13 -0
- algorithm_nexus-0.2.2/tests/fixtures/packages/terratorch/models/prithvi/benchmark_instances/fire-test/space.yaml +13 -0
- algorithm_nexus-0.2.2/tests/fixtures/packages/terratorch/models/prithvi/benchmark_instances/flood-test/config.json +5 -0
- algorithm_nexus-0.2.2/tests/fixtures/packages/terratorch/models/prithvi/benchmark_instances/flood-test/space.yaml +13 -0
- algorithm_nexus-0.2.2/tests/fixtures/packages/terratorch/models/prithvi/model.yaml +7 -0
- algorithm_nexus-0.2.2/tests/fixtures/packages/terratorch/nexus.yaml +7 -0
- algorithm_nexus-0.2.2/tests/fixtures/packages/tokamind/benchmark_instances/base-test/space.yaml +13 -0
- algorithm_nexus-0.2.2/tests/fixtures/packages/tokamind/nexus.yaml +7 -0
- algorithm_nexus-0.2.2/tests/fixtures/packages/valid-package/AGENTS.md +9 -0
- algorithm_nexus-0.2.2/tests/fixtures/packages/valid-package/models/example-model/model.yaml +9 -0
- algorithm_nexus-0.2.2/tests/fixtures/packages/valid-package/models/example-model/usage.md +24 -0
- algorithm_nexus-0.2.2/tests/fixtures/packages/valid-package/models/minimal-model/model.yaml +2 -0
- algorithm_nexus-0.2.2/tests/fixtures/packages/valid-package/nexus.yaml +2 -0
- algorithm_nexus-0.2.2/tests/fixtures/packages/valid-package-with-benchmarks/models/test-model/benchmark_instances/flood-segmentation-test/space.yaml +13 -0
- algorithm_nexus-0.2.2/tests/fixtures/packages/valid-package-with-benchmarks/models/test-model/benchmark_instances/performance-baseline/space.yaml +10 -0
- algorithm_nexus-0.2.2/tests/fixtures/packages/valid-package-with-benchmarks/models/test-model/model.yaml +4 -0
- algorithm_nexus-0.2.2/tests/fixtures/packages/valid-package-with-benchmarks/nexus.yaml +15 -0
- algorithm_nexus-0.2.2/tombi.toml +3 -0
- algorithm_nexus-0.2.2/uv.lock +9197 -0
- algorithm_nexus-0.2.2/zensical.toml +153 -0
- algorithm_nexus-0.2.1/setup.cfg +0 -4
- algorithm_nexus-0.2.1/src/algorithm_nexus.egg-info/PKG-INFO +0 -319
- algorithm_nexus-0.2.1/src/algorithm_nexus.egg-info/SOURCES.txt +0 -28
- algorithm_nexus-0.2.1/src/algorithm_nexus.egg-info/dependency_links.txt +0 -1
- algorithm_nexus-0.2.1/src/algorithm_nexus.egg-info/entry_points.txt +0 -2
- algorithm_nexus-0.2.1/src/algorithm_nexus.egg-info/requires.txt +0 -26
- algorithm_nexus-0.2.1/src/algorithm_nexus.egg-info/top_level.txt +0 -1
- {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/LICENSE +0 -0
- {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/README.md +0 -0
- {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/src/algorithm_nexus/cli.py +0 -0
- {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/src/algorithm_nexus/commands/__init__.py +0 -0
- {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/src/algorithm_nexus/commands/ado_validator.py +0 -0
- {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/src/algorithm_nexus/commands/benchmark_manager.py +0 -0
- {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/src/algorithm_nexus/commands/get.py +0 -0
- {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/src/algorithm_nexus/commands/list.py +0 -0
- {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/src/algorithm_nexus/commands/run.py +0 -0
- {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/src/algorithm_nexus/commands/utils.py +0 -0
- {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/src/algorithm_nexus/commands/validate.py +0 -0
- {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/src/algorithm_nexus/commands/venv_manager.py +0 -0
- {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/src/algorithm_nexus/models.py +0 -0
- {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/tests/test_cli_list_get.py +0 -0
- {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/tests/test_cli_run.py +0 -0
- {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/tests/test_cli_validation.py +0 -0
- {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/tests/test_models.py +0 -0
- {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/tests/test_utils.py +0 -0
- {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/tests/test_validate_benchmarks.py +0 -0
- {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/tests/test_validate_logical_benchmarks.py +0 -0
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: add-nexus-package
|
|
3
|
+
description:
|
|
4
|
+
Step-by-step guidance for contributing a new algorithm stack python package to
|
|
5
|
+
Algorithm Nexus. It ensures all configuration files are properly created,
|
|
6
|
+
validates the structure of the required nexus package, and helps classify and
|
|
7
|
+
add the algorithm stack package as a dependency. Use when users want to create
|
|
8
|
+
a Nexus package for their python library or add their python library to
|
|
9
|
+
algorithm nexus.
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Adding an Algorithm Stack Package to Algorithm Nexus
|
|
13
|
+
|
|
14
|
+
## Prerequisites
|
|
15
|
+
|
|
16
|
+
To add an algorithm stack package to Algorithm Nexus the below package level
|
|
17
|
+
information is required:
|
|
18
|
+
|
|
19
|
+
- `package_name` (string, required): Name of the Nexus package to be added as
|
|
20
|
+
per the
|
|
21
|
+
[prerequisites](../../../docs/contributing/add_new_nexus_package.md#prerequisites)
|
|
22
|
+
in the _Contributing a python algorithm package to Algorithm Nexus_.
|
|
23
|
+
- `package_url` (string, required): URL of the python package repository on
|
|
24
|
+
GitHub.
|
|
25
|
+
- `package_version` (string, required): GitHub release version of the python
|
|
26
|
+
package to be added to the dependencies.
|
|
27
|
+
- `is vllm and optional dependency`: The python package can be installed without
|
|
28
|
+
vLLM in the dependencies, or with vLLM via an optional dependency group.
|
|
29
|
+
|
|
30
|
+
If this information is not available stop.
|
|
31
|
+
|
|
32
|
+
It is optional to include models information in the package. However, for a
|
|
33
|
+
model to be included, the following information is required:
|
|
34
|
+
|
|
35
|
+
- `huggingface_id` (string, required): Hugging Face model repository identifier.
|
|
36
|
+
- `name` (string, required): Name of the model to be used as folder name.
|
|
37
|
+
- `owner` (string, optional): GitHub username of model owner
|
|
38
|
+
- `requires_vllm` (boolean, required): Whether the model uses vLLM for serving
|
|
39
|
+
- `vllm_plugins` (string, required): If the model uses vLLM it might also
|
|
40
|
+
require a set of vlLM plugins.
|
|
41
|
+
- `general` (string, optional): name of the general plugin required for
|
|
42
|
+
loading the model with vLLM
|
|
43
|
+
- `io_processors` (list of strings, optional): list of io processor plugins
|
|
44
|
+
that the model supports for pre/post processing with vLLM
|
|
45
|
+
|
|
46
|
+
If a model has been specified to be added and the above information is not
|
|
47
|
+
available, stop.
|
|
48
|
+
|
|
49
|
+
## Steps
|
|
50
|
+
|
|
51
|
+
Follow the below steps to create the Nexus Package:
|
|
52
|
+
|
|
53
|
+
1. **Inspect the Algorithm Stack Package Source**: Inspect the code to extract
|
|
54
|
+
information about the package.
|
|
55
|
+
2. **Identify the Nexus Variant**: Identify which nexus variant should the
|
|
56
|
+
python package be added to.
|
|
57
|
+
3. **Create Nexus Package Structure**: Create the necessary Nexus package folder
|
|
58
|
+
structure and populate config files.
|
|
59
|
+
4. **Validate the Nexus Package**: Run `nexus validate package` to check structure.
|
|
60
|
+
5. **Add Algorithm Stack Package as an Algorithm Nexus Dependency**: Use
|
|
61
|
+
`uv add` with correct variant classification.
|
|
62
|
+
6. **Write Report**: Write a report of the changes made and any errors
|
|
63
|
+
encountered.
|
|
64
|
+
|
|
65
|
+
## 1. Inspect the Algorithm Stack Package Source
|
|
66
|
+
|
|
67
|
+
If the python package repository is not checked out locally, clone the
|
|
68
|
+
repository to a temporary location.
|
|
69
|
+
|
|
70
|
+
Inspect the source code to identify:
|
|
71
|
+
|
|
72
|
+
- Available models and their Hugging Face ID.
|
|
73
|
+
- No two models can have the same Hugging Face ID. If that's the case, stop.
|
|
74
|
+
- Extract the model name from the Hugging Face ID, i.e. model-name in
|
|
75
|
+
"org/model-name".
|
|
76
|
+
- Whether the package requires vLLM or not, and if it does whether vLLM is a
|
|
77
|
+
mandatory or optional requirement.
|
|
78
|
+
- The GitHub release version of the python package to be installed.
|
|
79
|
+
- If no specific GitHub release version is provided by the user, inspect the
|
|
80
|
+
repository to identify the latest GitHub release.
|
|
81
|
+
- If no GitHub release is available, stop and inform the user that a GitHub
|
|
82
|
+
release is required.
|
|
83
|
+
|
|
84
|
+
## 2. Identify the Nexus Variant
|
|
85
|
+
|
|
86
|
+
Using the prerequisite information you can infer the distribution variant the
|
|
87
|
+
algorithm stack package should be added to by following the instructions in the
|
|
88
|
+
[_Variant Association Rules_ section](../../../docs/design/dependency-resolution.md#4-variant-association-rules)
|
|
89
|
+
of the dependency resolution design document.
|
|
90
|
+
|
|
91
|
+
No algorithm stack package can be added to the `product` variant.
|
|
92
|
+
|
|
93
|
+
## 3. Create Nexus Package Structure
|
|
94
|
+
|
|
95
|
+
Using the prerequisite information create the Nexus package structure as
|
|
96
|
+
outlined in the
|
|
97
|
+
[_Create a Nexus package for your algorithm_ section](../../../docs/contributing/add_new_nexus_package.md#step-3-create-a-nexus-package-for-your-algorithm)
|
|
98
|
+
of the _Contributing a python algorithm package to Algorithm Nexus_ document. If
|
|
99
|
+
models are to be included, follow the instructions in
|
|
100
|
+
[_Describe the Models in Your Algorithm Package_ section](../../../docs/contributing/add_new_nexus_package.md#describe-the-models-in-your-algorithm-package)
|
|
101
|
+
of the _Contributing a python algorithm package to Algorithm Nexus_ documentat.
|
|
102
|
+
|
|
103
|
+
## 4. Validate the Nexus Package
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
uv run nexus validate package packages/<package-name>
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
If the validation is successful, the tool will print a success message
|
|
110
|
+
`Validation Successful`. Continue to the next step.
|
|
111
|
+
|
|
112
|
+
If the validation is not successful, it will print `Validation Failed` followed
|
|
113
|
+
by a list of the errors.
|
|
114
|
+
|
|
115
|
+
There are two main reasons for a failure:
|
|
116
|
+
|
|
117
|
+
1. A file is missing from the package or models directory.
|
|
118
|
+
2. A Pydantic failure indicating the schema for the package or one of the model
|
|
119
|
+
configuration files is not correct.
|
|
120
|
+
|
|
121
|
+
For pydantic failures, iterate on the validation until the failures are
|
|
122
|
+
resolved. If a failure is related to a missing file, check the instructions in
|
|
123
|
+
step 2 to identify and add the missing file, and run the validation again.
|
|
124
|
+
|
|
125
|
+
## 5. Add Algorithm Stack Package as an Algorithm Nexus Dependency
|
|
126
|
+
|
|
127
|
+
For each variant the algorithm stack package was identified as belonging to in
|
|
128
|
+
step 1, follow the instructions in
|
|
129
|
+
[`Step 2: Add your algorithm package to the Algorithm Nexus dependencies`](../../../docs/contributing/add_new_nexus_package.md#step-2-add-your-algorithm-package-to-the-algorithm-nexus-dependencies).
|
|
130
|
+
|
|
131
|
+
In case of failure with uv when adding the algorithm stack package to a variant:
|
|
132
|
+
|
|
133
|
+
- Report the error with some suggested fixes.
|
|
134
|
+
- Do not attempt changing the dependencies of the project to fix the errors.
|
|
135
|
+
- Skip this variant and continue to the next variant if any.
|
|
136
|
+
|
|
137
|
+
## 6. Write Report
|
|
138
|
+
|
|
139
|
+
Generate a report of the changes and unresolved issues following the
|
|
140
|
+
[New Nexus Package PR template](../../../.github/PULL_REQUEST_TEMPLATE/new_nexus_package.md).
|
|
141
|
+
Only add a summary of the changes, without including the rationale behind the
|
|
142
|
+
changes. Save the report as a markdown in a file.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: update-lock-file
|
|
3
|
+
description: >
|
|
4
|
+
Use when the user wants to update the project lock file and requirements
|
|
5
|
+
files. Syncs uv.lock with origin/main, regenerates lock, and exports all
|
|
6
|
+
requirement files, then commits the result.
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Update Lock File and Requirements Files
|
|
10
|
+
|
|
11
|
+
Follow these steps in order to update the project lock file and requirement
|
|
12
|
+
files.
|
|
13
|
+
|
|
14
|
+
## 1. Verify the Branch is Up-to-Date with origin/main
|
|
15
|
+
|
|
16
|
+
Run the following command to check how many commits the current branch is behind
|
|
17
|
+
`origin/main`:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
git fetch origin main && git rev-list --count HEAD..origin/main
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
- If the count is **0**, the branch is up-to-date. Continue to Step 2.
|
|
24
|
+
- If the count is **greater than 0**, the branch is behind. Inform the user and
|
|
25
|
+
ask whether they would like you to rebase the current branch on top of
|
|
26
|
+
`origin/main`. Wait for their response before proceeding.
|
|
27
|
+
- If the user says **yes**, run:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
git rebase origin/main
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
If the rebase exits with a non-zero status, stop and report the error to
|
|
34
|
+
the user — do not attempt to resolve conflicts automatically.
|
|
35
|
+
|
|
36
|
+
- If the user says **no**, stop here and let the user update the branch
|
|
37
|
+
before retrying.
|
|
38
|
+
|
|
39
|
+
## 2. Perform the Dependency Update
|
|
40
|
+
|
|
41
|
+
Run the following commands **in order**, one at a time. Stop and report any
|
|
42
|
+
failure before proceeding to the next command.
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
git restore --source origin/main -- uv.lock
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
uv lock
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
uv run pre-commit run uv-export -a
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## 3. Commit the Updated Files
|
|
57
|
+
|
|
58
|
+
Stage and commit the lock file and all three requirements files:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
git add uv.lock requirements-candidate.txt requirements-ecosystem.txt requirements-product.txt
|
|
62
|
+
git commit -m "chore(dependencies): Updated lock file and requirement files"
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
If there are no files to be committed it means the project dependencies are
|
|
66
|
+
already up-to date, inform the user and stop. Otherwise, commit the changes and
|
|
67
|
+
confirm to the user that the commit was created successfully.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
schema_version = 1
|
|
2
|
+
|
|
3
|
+
project {
|
|
4
|
+
license = "Apache-2.0"
|
|
5
|
+
copyright_year = 2026
|
|
6
|
+
|
|
7
|
+
header_ignore = [
|
|
8
|
+
# Ignore generated files
|
|
9
|
+
"**/*.md",
|
|
10
|
+
"**/*.json",
|
|
11
|
+
"**/*.yaml",
|
|
12
|
+
"**/*.yml",
|
|
13
|
+
"**/*.toml",
|
|
14
|
+
"**/*.txt",
|
|
15
|
+
"**/*.lock",
|
|
16
|
+
|
|
17
|
+
# Ignore directories
|
|
18
|
+
".venv/**",
|
|
19
|
+
".tox/**",
|
|
20
|
+
"**/__pycache__/**",
|
|
21
|
+
"*.egg-info/**",
|
|
22
|
+
"dist/**",
|
|
23
|
+
"build/**",
|
|
24
|
+
".pytest_cache/**",
|
|
25
|
+
".ruff_cache/**",
|
|
26
|
+
".mypy_cache/**",
|
|
27
|
+
|
|
28
|
+
# Ignore specific files
|
|
29
|
+
"LICENSE",
|
|
30
|
+
".gitignore",
|
|
31
|
+
".secrets.baseline",
|
|
32
|
+
".pre-commit-config.yaml",
|
|
33
|
+
".copywrite.hcl",
|
|
34
|
+
]
|
|
35
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Bug report
|
|
3
|
+
about: Create a report to help us improve
|
|
4
|
+
title: "bug: "
|
|
5
|
+
labels: bug
|
|
6
|
+
assignees: ""
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Issue Description
|
|
10
|
+
|
|
11
|
+
A clear and concise description of what the bug is.
|
|
12
|
+
|
|
13
|
+
## Steps to Reproduce
|
|
14
|
+
|
|
15
|
+
1. Go to '...'
|
|
16
|
+
2. Click on '....'
|
|
17
|
+
3. Scroll down to '....'
|
|
18
|
+
4. See error
|
|
19
|
+
|
|
20
|
+
## Expected behaviour
|
|
21
|
+
|
|
22
|
+
A clear and concise description of what you expected to happen.
|
|
23
|
+
|
|
24
|
+
## Screenshots/Logs
|
|
25
|
+
|
|
26
|
+
If applicable, add screenshots and logs to help explain your problem.
|
|
27
|
+
|
|
28
|
+
## Python/system info
|
|
29
|
+
|
|
30
|
+
Please include the output of:
|
|
31
|
+
|
|
32
|
+
```terminaloutput
|
|
33
|
+
python --version
|
|
34
|
+
Your OS
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Additional context
|
|
38
|
+
|
|
39
|
+
Add any other context about the problem here.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Feature request
|
|
3
|
+
about: Suggest an idea for this project
|
|
4
|
+
title: "feat: "
|
|
5
|
+
labels: enhancement
|
|
6
|
+
assignees: ""
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Description
|
|
10
|
+
|
|
11
|
+
A clear and concise description of the feature you'd like to see implemented.
|
|
12
|
+
|
|
13
|
+
## Motivation
|
|
14
|
+
|
|
15
|
+
Explain why this feature would be useful. What problem does it solve?
|
|
16
|
+
|
|
17
|
+
## Proposed Solution
|
|
18
|
+
|
|
19
|
+
Describe the solution you'd like to see implemented.
|
|
20
|
+
|
|
21
|
+
## Alternatives Considered
|
|
22
|
+
|
|
23
|
+
Describe any alternative solutions or features you've considered.
|
|
24
|
+
|
|
25
|
+
## Additional Context
|
|
26
|
+
|
|
27
|
+
Add any other context, screenshots, or examples about the feature request here.
|
|
28
|
+
|
|
29
|
+
## Implementation Notes
|
|
30
|
+
|
|
31
|
+
If you have ideas about how this could be implemented, please share them here.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: New Nexus Package
|
|
3
|
+
about: Submit a new Nexus package to Algorithm Nexus
|
|
4
|
+
title: "feat(package): Add [package-name] Nexus package"
|
|
5
|
+
labels: "nexus-package"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Description
|
|
9
|
+
|
|
10
|
+
<!-- Briefly describe the PR -->
|
|
11
|
+
|
|
12
|
+
## Additional Information
|
|
13
|
+
|
|
14
|
+
<!-- Add any additional context, notes, or special considerations for reviewers -->
|
|
15
|
+
|
|
16
|
+
## I need help with this PR
|
|
17
|
+
|
|
18
|
+
<!-- If you are unable to pass the dependencies resolution (i.e., you have tried to
|
|
19
|
+
fix it yourself, and still it does not work), describe your issue by providing the
|
|
20
|
+
uv logs and any other information that could help the maintainers addressing your
|
|
21
|
+
specific problem.-->
|
|
22
|
+
|
|
23
|
+
## Related Issues
|
|
24
|
+
|
|
25
|
+
<!-- Link any related issues, e.g., Closes #123 -->
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
*.so
|
|
6
|
+
|
|
7
|
+
# Virtual environments
|
|
8
|
+
.venv/
|
|
9
|
+
venv/
|
|
10
|
+
ENV/
|
|
11
|
+
env/
|
|
12
|
+
|
|
13
|
+
# UV package manager
|
|
14
|
+
.uv/
|
|
15
|
+
|
|
16
|
+
# Distribution / packaging
|
|
17
|
+
build/
|
|
18
|
+
dist/
|
|
19
|
+
*.egg-info/
|
|
20
|
+
.eggs/
|
|
21
|
+
|
|
22
|
+
# Testing
|
|
23
|
+
.pytest_cache/
|
|
24
|
+
.coverage
|
|
25
|
+
.coverage.*
|
|
26
|
+
htmlcov/
|
|
27
|
+
.tox/
|
|
28
|
+
.hypothesis/
|
|
29
|
+
coverage.xml
|
|
30
|
+
*.cover
|
|
31
|
+
|
|
32
|
+
# Type checking
|
|
33
|
+
.mypy_cache/
|
|
34
|
+
.pytype/
|
|
35
|
+
.pyre/
|
|
36
|
+
|
|
37
|
+
# Linting
|
|
38
|
+
.ruff_cache/
|
|
39
|
+
|
|
40
|
+
# Pre-commit
|
|
41
|
+
.pre-commit-cache/
|
|
42
|
+
|
|
43
|
+
# IDEs
|
|
44
|
+
.vscode/
|
|
45
|
+
.idea/
|
|
46
|
+
*.swp
|
|
47
|
+
*.swo
|
|
48
|
+
*~
|
|
49
|
+
|
|
50
|
+
# OS files
|
|
51
|
+
.DS_Store
|
|
52
|
+
Thumbs.db
|
|
53
|
+
|
|
54
|
+
# Jupyter Notebook
|
|
55
|
+
.ipynb_checkpoints
|
|
56
|
+
|
|
57
|
+
# Environment variables
|
|
58
|
+
.env
|
|
59
|
+
.env.local
|
|
60
|
+
|
|
61
|
+
# Logs
|
|
62
|
+
*.log
|
|
63
|
+
|
|
64
|
+
# Temporary files
|
|
65
|
+
*.tmp
|
|
66
|
+
*.bak
|
|
67
|
+
*.orig
|
|
68
|
+
|
|
69
|
+
# Website build output
|
|
70
|
+
site/
|
|
71
|
+
.cache/
|
|
72
|
+
.gh-pages/
|
|
73
|
+
|
|
74
|
+
# Node.js
|
|
75
|
+
node_modules/
|
|
76
|
+
package-lock.json
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Markdownlint-cli2 configuration
|
|
2
|
+
# See https://github.com/DavidAnson/markdownlint-cli2
|
|
3
|
+
|
|
4
|
+
# Markdownlint configuration
|
|
5
|
+
config:
|
|
6
|
+
# Default state for all rules
|
|
7
|
+
default: true
|
|
8
|
+
|
|
9
|
+
# MD001/heading-increment - Heading levels should only increment by one level at a time
|
|
10
|
+
MD001: false
|
|
11
|
+
|
|
12
|
+
# MD024/no-duplicate-heading - Multiple headings with the same content
|
|
13
|
+
MD024:
|
|
14
|
+
siblings_only: true
|
|
15
|
+
|
|
16
|
+
# MD007/ul-indent - Unordered list indentation
|
|
17
|
+
MD007:
|
|
18
|
+
indent: 4
|
|
19
|
+
|
|
20
|
+
# MD013/line-length - Line length
|
|
21
|
+
MD013:
|
|
22
|
+
line_length: 120
|
|
23
|
+
heading_line_length: 120
|
|
24
|
+
code_block_line_length: 120
|
|
25
|
+
code_blocks: false
|
|
26
|
+
tables: false
|
|
27
|
+
headings: true
|
|
28
|
+
strict: false
|
|
29
|
+
stern: false
|
|
30
|
+
|
|
31
|
+
# MD033/no-inline-html - Inline HTML
|
|
32
|
+
MD033:
|
|
33
|
+
allowed_elements:
|
|
34
|
+
- br
|
|
35
|
+
- details
|
|
36
|
+
- summary
|
|
37
|
+
- img
|
|
38
|
+
- a
|
|
39
|
+
- sup
|
|
40
|
+
|
|
41
|
+
# MD041/first-line-heading - First line in file should be a top level heading
|
|
42
|
+
MD041: false
|
|
43
|
+
|
|
44
|
+
# MD046/code-block-style - Code block style
|
|
45
|
+
MD046: false
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Pre-commit hooks configuration
|
|
2
|
+
# See https://pre-commit.com for more information
|
|
3
|
+
|
|
4
|
+
default_install_hook_types:
|
|
5
|
+
- pre-commit
|
|
6
|
+
- commit-msg
|
|
7
|
+
|
|
8
|
+
default_stages: [pre-commit]
|
|
9
|
+
|
|
10
|
+
repos:
|
|
11
|
+
# detect-secrets - Detect secrets in code
|
|
12
|
+
- repo: https://github.com/ibm/detect-secrets
|
|
13
|
+
rev: 0.13.1+ibm.64.dss
|
|
14
|
+
hooks:
|
|
15
|
+
- id: detect-secrets
|
|
16
|
+
args: [--baseline, .secrets.baseline, --use-all-plugins, --fail-on-unaudited]
|
|
17
|
+
|
|
18
|
+
# Ruff - Python linter and formatter
|
|
19
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
20
|
+
rev: v0.15.20
|
|
21
|
+
hooks:
|
|
22
|
+
- id: ruff
|
|
23
|
+
args: [--fix]
|
|
24
|
+
- id: ruff-format
|
|
25
|
+
|
|
26
|
+
# Conventional commits
|
|
27
|
+
- repo: https://github.com/compilerla/conventional-pre-commit
|
|
28
|
+
rev: v4.4.0
|
|
29
|
+
hooks:
|
|
30
|
+
- id: conventional-pre-commit
|
|
31
|
+
stages: [commit-msg]
|
|
32
|
+
args:
|
|
33
|
+
- --no-color
|
|
34
|
+
- --verbose
|
|
35
|
+
|
|
36
|
+
# Codespell - Check for common misspellings
|
|
37
|
+
- repo: https://github.com/codespell-project/codespell
|
|
38
|
+
rev: v2.4.2
|
|
39
|
+
hooks:
|
|
40
|
+
- id: codespell
|
|
41
|
+
additional_dependencies: ["tomli"]
|
|
42
|
+
args: ["--toml", "pyproject.toml"]
|
|
43
|
+
|
|
44
|
+
# UV lock check
|
|
45
|
+
- repo: https://github.com/astral-sh/uv-pre-commit
|
|
46
|
+
rev: 0.11.26
|
|
47
|
+
hooks:
|
|
48
|
+
- id: uv-lock
|
|
49
|
+
- id: uv-export
|
|
50
|
+
alias: "uv-export-ecosystem"
|
|
51
|
+
args: ["--frozen", "--no-emit-project", "--no-default-groups", "--no-header", "--extra=ecosystem", "--output-file=requirements-ecosystem.txt"]
|
|
52
|
+
- id: uv-export
|
|
53
|
+
alias: "uv-export-candidate"
|
|
54
|
+
args: ["--frozen", "--no-emit-project", "--no-default-groups", "--no-header", "--extra=candidate", "--output-file=requirements-candidate.txt"]
|
|
55
|
+
- id: uv-export
|
|
56
|
+
alias: "uv-export-product"
|
|
57
|
+
args: ["--frozen", "--no-emit-project", "--no-default-groups", "--no-header", "--extra=product", "--output-file=requirements-product.txt"]
|
|
58
|
+
|
|
59
|
+
# Copywrite - License header management
|
|
60
|
+
- repo: https://github.com/hashicorp/copywrite
|
|
61
|
+
rev: v0.25.3
|
|
62
|
+
hooks:
|
|
63
|
+
- id: add-headers
|
|
64
|
+
|
|
65
|
+
# Markdownlint - Markdown linting
|
|
66
|
+
- repo: https://github.com/DavidAnson/markdownlint-cli2
|
|
67
|
+
rev: v0.23.0
|
|
68
|
+
hooks:
|
|
69
|
+
- id: markdownlint-cli2
|
|
70
|
+
|
|
71
|
+
# Yamlfmt - YAML formatting
|
|
72
|
+
- repo: https://github.com/google/yamlfmt
|
|
73
|
+
rev: v0.21.0
|
|
74
|
+
hooks:
|
|
75
|
+
- id: yamlfmt
|
|
76
|
+
|
|
77
|
+
# Tombi - TOML formatting
|
|
78
|
+
- repo: https://github.com/tombi-toml/tombi-pre-commit
|
|
79
|
+
rev: v1.2.0
|
|
80
|
+
hooks:
|
|
81
|
+
- id: tombi-format
|
|
82
|
+
args: ["--offline"]
|
|
83
|
+
|
|
84
|
+
# Standard pre-commit hooks
|
|
85
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
86
|
+
rev: v6.0.0
|
|
87
|
+
hooks:
|
|
88
|
+
- id: trailing-whitespace
|
|
89
|
+
- id: end-of-file-fixer
|
|
90
|
+
- id: check-yaml
|
|
91
|
+
- id: check-added-large-files
|
|
92
|
+
- id: check-merge-conflict
|
|
93
|
+
- id: check-toml
|
|
94
|
+
- id: check-json
|
|
95
|
+
- id: mixed-line-ending
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.12
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
{
|
|
2
|
+
"exclude": {
|
|
3
|
+
"files": "^.secrets$|^.secrets.baseline$",
|
|
4
|
+
"lines": null
|
|
5
|
+
},
|
|
6
|
+
"generated_at": "2026-07-16T22:04:38Z",
|
|
7
|
+
"plugins_used": [
|
|
8
|
+
{
|
|
9
|
+
"name": "AWSKeyDetector"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"name": "ArtifactoryDetector"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"name": "AzureStorageKeyDetector"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"base64_limit": 4.5,
|
|
19
|
+
"name": "Base64HighEntropyString"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"name": "BasicAuthDetector"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "BoxDetector"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"name": "CloudantDetector"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"ghe_instance": "github.ibm.com",
|
|
32
|
+
"name": "GheDetector"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"name": "GitHubTokenDetector"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"hex_limit": 3,
|
|
39
|
+
"name": "HexHighEntropyString"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"name": "IbmCloudIamDetector"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"name": "IbmCosHmacDetector"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "JwtTokenDetector"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"keyword_exclude": null,
|
|
52
|
+
"name": "KeywordDetector"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"name": "MailchimpDetector"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"name": "NpmDetector"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"name": "PrivateKeyDetector"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"name": "SlackDetector"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"name": "SoftlayerDetector"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"name": "SquareOAuthDetector"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"name": "StripeDetector"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"name": "TwilioKeyDetector"
|
|
77
|
+
}
|
|
78
|
+
],
|
|
79
|
+
"results": {
|
|
80
|
+
"requirements-ecosystem.txt": [
|
|
81
|
+
{
|
|
82
|
+
"hashed_secret": "07c7e5dca0db66092ee9e80cdb352d4f58a3d38a",
|
|
83
|
+
"is_secret": false,
|
|
84
|
+
"is_verified": false,
|
|
85
|
+
"line_number": 666,
|
|
86
|
+
"type": "Secret Keyword",
|
|
87
|
+
"verified_result": null
|
|
88
|
+
}
|
|
89
|
+
]
|
|
90
|
+
},
|
|
91
|
+
"version": "0.13.1+ibm.64.dss",
|
|
92
|
+
"word_list": {
|
|
93
|
+
"file": null,
|
|
94
|
+
"hash": null
|
|
95
|
+
}
|
|
96
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# yamlfmt configuration
|
|
2
|
+
# See https://github.com/google/yamlfmt
|
|
3
|
+
|
|
4
|
+
formatter:
|
|
5
|
+
type: basic
|
|
6
|
+
indent: 2
|
|
7
|
+
include_document_start: false
|
|
8
|
+
line_ending: lf
|
|
9
|
+
retain_line_breaks: true
|
|
10
|
+
max_line_length: 120
|
|
11
|
+
scan_folded_as_literal: false
|
|
12
|
+
indentless_arrays: false
|
|
13
|
+
drop_merge_tag: false
|
|
14
|
+
pad_line_comments: 2
|