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.
Files changed (146) hide show
  1. algorithm_nexus-0.2.2/.agents/skills/add-nexus-package/SKILL.md +142 -0
  2. algorithm_nexus-0.2.2/.agents/skills/update-lock-file/SKILL.md +67 -0
  3. algorithm_nexus-0.2.2/.copywrite.hcl +35 -0
  4. algorithm_nexus-0.2.2/.github/ISSUE_TEMPLATE/bug_report.md +39 -0
  5. algorithm_nexus-0.2.2/.github/ISSUE_TEMPLATE/feature_request.md +31 -0
  6. algorithm_nexus-0.2.2/.github/PULL_REQUEST_TEMPLATE/new_nexus_package.md +25 -0
  7. algorithm_nexus-0.2.2/.github/dco.yml +4 -0
  8. algorithm_nexus-0.2.2/.gitignore +76 -0
  9. algorithm_nexus-0.2.2/.markdownlint-cli2.yaml +45 -0
  10. algorithm_nexus-0.2.2/.pre-commit-config.yaml +95 -0
  11. algorithm_nexus-0.2.2/.prettierrc.toml +4 -0
  12. algorithm_nexus-0.2.2/.python-version +1 -0
  13. algorithm_nexus-0.2.2/.secrets.baseline +96 -0
  14. algorithm_nexus-0.2.2/.yamlfmt +14 -0
  15. algorithm_nexus-0.2.2/CHANGELOG.md +232 -0
  16. algorithm_nexus-0.2.2/CONTRIBUTING.md +149 -0
  17. algorithm_nexus-0.2.2/MAINTAINERS.md +10 -0
  18. {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/PKG-INFO +24 -24
  19. algorithm_nexus-0.2.2/benchmarks/.gitkeep +0 -0
  20. algorithm_nexus-0.2.2/docs/assets/images/favicon.ico +0 -0
  21. algorithm_nexus-0.2.2/docs/assets/images/logo-ibm-dark.png +0 -0
  22. algorithm_nexus-0.2.2/docs/assets/images/logo-ibm.png +0 -0
  23. algorithm_nexus-0.2.2/docs/contributing/add_benchmark.md +428 -0
  24. algorithm_nexus-0.2.2/docs/contributing/add_new_nexus_package.md +196 -0
  25. algorithm_nexus-0.2.2/docs/contributing/guidelines.md +1 -0
  26. algorithm_nexus-0.2.2/docs/contributing/index.md +12 -0
  27. algorithm_nexus-0.2.2/docs/contributing/owner_responsibilities.md +149 -0
  28. algorithm_nexus-0.2.2/docs/design/benchmark_integration_design.md +363 -0
  29. algorithm_nexus-0.2.2/docs/design/benchmark_metadata_convention.md +477 -0
  30. algorithm_nexus-0.2.2/docs/design/benchmark_system.md +239 -0
  31. algorithm_nexus-0.2.2/docs/design/dependency-resolution.md +299 -0
  32. algorithm_nexus-0.2.2/docs/design/index.md +14 -0
  33. algorithm_nexus-0.2.2/docs/design/nexus_package.md +197 -0
  34. algorithm_nexus-0.2.2/docs/design/project_release.md +56 -0
  35. algorithm_nexus-0.2.2/docs/getting-started/cli-reference.md +579 -0
  36. algorithm_nexus-0.2.2/docs/getting-started/index.md +25 -0
  37. algorithm_nexus-0.2.2/docs/getting-started/installation.md +60 -0
  38. algorithm_nexus-0.2.2/docs/index.md +38 -0
  39. algorithm_nexus-0.2.2/docs/requirements/benchmark.md +240 -0
  40. algorithm_nexus-0.2.2/docs/requirements/index.md +13 -0
  41. algorithm_nexus-0.2.2/docs/requirements/model_vllm.md +44 -0
  42. algorithm_nexus-0.2.2/docs/requirements/models_testing.md +70 -0
  43. algorithm_nexus-0.2.2/docs/requirements/nexus_package.md +94 -0
  44. algorithm_nexus-0.2.2/docs/requirements/packaging_and_dependency_reqs.md +189 -0
  45. algorithm_nexus-0.2.2/docs/stylesheets/extra.css +61 -0
  46. algorithm_nexus-0.2.2/docs/theme/favicon.ico +0 -0
  47. algorithm_nexus-0.2.2/docs/theme/logo-ibm-dark.png +0 -0
  48. algorithm_nexus-0.2.2/docs/theme/logo-ibm.png +0 -0
  49. algorithm_nexus-0.2.2/mendUnifiedAgent.config +1 -0
  50. algorithm_nexus-0.2.2/package.json +4 -0
  51. algorithm_nexus-0.2.2/packages/.gitkeep +0 -0
  52. algorithm_nexus-0.2.2/packages/bmfm-targets/models/biomed.rna.llama.32m.mlm.multitask.v1.vllm/model.yaml +8 -0
  53. algorithm_nexus-0.2.2/packages/bmfm-targets/models/biomed.rna.llama.32m.mlm.multitask.v1.vllm/usage.md +93 -0
  54. algorithm_nexus-0.2.2/packages/bmfm-targets/models/biomed.rna.llama.47m.wced.multitask.v1.vllm/model.yaml +8 -0
  55. algorithm_nexus-0.2.2/packages/bmfm-targets/models/biomed.rna.llama.47m.wced.multitask.v1.vllm/usage.md +93 -0
  56. algorithm_nexus-0.2.2/packages/bmfm-targets/nexus.yaml +4 -0
  57. algorithm_nexus-0.2.2/packages/gridfm-graphkit/nexus.yaml +2 -0
  58. algorithm_nexus-0.2.2/packages/terrakit/nexus.yaml +2 -0
  59. algorithm_nexus-0.2.2/packages/terratorch/models/prithvi/model.yaml +8 -0
  60. algorithm_nexus-0.2.2/packages/terratorch/models/prithvi/usage.md +154 -0
  61. algorithm_nexus-0.2.2/packages/terratorch/models/terramind_base_fire/model.yaml +7 -0
  62. algorithm_nexus-0.2.2/packages/terratorch/models/terramind_base_fire/usage.md +154 -0
  63. algorithm_nexus-0.2.2/packages/terratorch/models/terramind_base_flood/model.yaml +7 -0
  64. algorithm_nexus-0.2.2/packages/terratorch/models/terramind_base_flood/usage.md +162 -0
  65. algorithm_nexus-0.2.2/packages/terratorch/nexus.yaml +2 -0
  66. algorithm_nexus-0.2.2/packages/tokamind/models/tokamind-base-v2/model.yaml +2 -0
  67. algorithm_nexus-0.2.2/packages/tokamind/nexus.yaml +2 -0
  68. {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/pyproject.toml +17 -3
  69. algorithm_nexus-0.2.2/renovate.json +6 -0
  70. algorithm_nexus-0.2.2/requirements-candidate.txt +4223 -0
  71. algorithm_nexus-0.2.2/requirements-ecosystem.txt +3555 -0
  72. algorithm_nexus-0.2.2/requirements-product.txt +3784 -0
  73. algorithm_nexus-0.2.2/ruff.toml +97 -0
  74. algorithm_nexus-0.2.2/src/algorithm_nexus/__init__.py +8 -0
  75. algorithm_nexus-0.2.2/templates/nexus-package-template/README.md +90 -0
  76. algorithm_nexus-0.2.2/templates/nexus-package-template/benchmark_instances/example-benchmark/space.yaml +18 -0
  77. algorithm_nexus-0.2.2/templates/nexus-package-template/models/your-model-name/benchmark_instances/example-benchmark/space.yaml +18 -0
  78. algorithm_nexus-0.2.2/templates/nexus-package-template/models/your-model-name/model.yaml +21 -0
  79. algorithm_nexus-0.2.2/templates/nexus-package-template/nexus.yaml +20 -0
  80. algorithm_nexus-0.2.2/templates/packages/package-name/README.md +90 -0
  81. algorithm_nexus-0.2.2/templates/packages/package-name/benchmark_instances/example-benchmark/space.yaml +18 -0
  82. algorithm_nexus-0.2.2/templates/packages/package-name/models/model-name/benchmark_instances/example-benchmark/space.yaml +18 -0
  83. algorithm_nexus-0.2.2/templates/packages/package-name/models/model-name/model.yaml +21 -0
  84. algorithm_nexus-0.2.2/templates/packages/package-name/nexus.yaml +20 -0
  85. {algorithm_nexus-0.2.1/src/algorithm_nexus → algorithm_nexus-0.2.2/tests}/__init__.py +1 -1
  86. algorithm_nexus-0.2.2/tests/fixtures/logical_benchmarks/invalid_binding_id_mismatch.yaml +19 -0
  87. algorithm_nexus-0.2.2/tests/fixtures/logical_benchmarks/invalid_binding_unknown_metric.yaml +26 -0
  88. algorithm_nexus-0.2.2/tests/fixtures/logical_benchmarks/invalid_binding_unknown_property.yaml +24 -0
  89. algorithm_nexus-0.2.2/tests/fixtures/logical_benchmarks/invalid_missing_required_field.yaml +8 -0
  90. algorithm_nexus-0.2.2/tests/fixtures/logical_benchmarks/valid_full.yaml +50 -0
  91. algorithm_nexus-0.2.2/tests/fixtures/logical_benchmarks/valid_no_bindings.yaml +14 -0
  92. algorithm_nexus-0.2.2/tests/fixtures/packages/.gitignore +2 -0
  93. algorithm_nexus-0.2.2/tests/fixtures/packages/invalid-package/models/broken-model/model.yaml +19 -0
  94. algorithm_nexus-0.2.2/tests/fixtures/packages/invalid-package/models/undeclared-model/model.yaml +10 -0
  95. algorithm_nexus-0.2.2/tests/fixtures/packages/invalid-package/nexus.yaml +7 -0
  96. algorithm_nexus-0.2.2/tests/fixtures/packages/invalid-package-benchmarks/models/bad-model/benchmark_instances/missing-space-yaml/.gitkeep +0 -0
  97. algorithm_nexus-0.2.2/tests/fixtures/packages/invalid-package-benchmarks/models/bad-model/benchmark_instances/unregistered-experiment-test/space.yaml +5 -0
  98. algorithm_nexus-0.2.2/tests/fixtures/packages/invalid-package-benchmarks/models/bad-model/model.yaml +4 -0
  99. algorithm_nexus-0.2.2/tests/fixtures/packages/invalid-package-benchmarks/nexus.yaml +13 -0
  100. algorithm_nexus-0.2.2/tests/fixtures/packages/terratorch/benchmark_instances/base-test/space.yaml +13 -0
  101. algorithm_nexus-0.2.2/tests/fixtures/packages/terratorch/models/prithvi/benchmark_instances/fire-test/space.yaml +13 -0
  102. algorithm_nexus-0.2.2/tests/fixtures/packages/terratorch/models/prithvi/benchmark_instances/flood-test/config.json +5 -0
  103. algorithm_nexus-0.2.2/tests/fixtures/packages/terratorch/models/prithvi/benchmark_instances/flood-test/space.yaml +13 -0
  104. algorithm_nexus-0.2.2/tests/fixtures/packages/terratorch/models/prithvi/model.yaml +7 -0
  105. algorithm_nexus-0.2.2/tests/fixtures/packages/terratorch/nexus.yaml +7 -0
  106. algorithm_nexus-0.2.2/tests/fixtures/packages/tokamind/benchmark_instances/base-test/space.yaml +13 -0
  107. algorithm_nexus-0.2.2/tests/fixtures/packages/tokamind/nexus.yaml +7 -0
  108. algorithm_nexus-0.2.2/tests/fixtures/packages/valid-package/AGENTS.md +9 -0
  109. algorithm_nexus-0.2.2/tests/fixtures/packages/valid-package/models/example-model/model.yaml +9 -0
  110. algorithm_nexus-0.2.2/tests/fixtures/packages/valid-package/models/example-model/usage.md +24 -0
  111. algorithm_nexus-0.2.2/tests/fixtures/packages/valid-package/models/minimal-model/model.yaml +2 -0
  112. algorithm_nexus-0.2.2/tests/fixtures/packages/valid-package/nexus.yaml +2 -0
  113. algorithm_nexus-0.2.2/tests/fixtures/packages/valid-package-with-benchmarks/models/test-model/benchmark_instances/flood-segmentation-test/space.yaml +13 -0
  114. algorithm_nexus-0.2.2/tests/fixtures/packages/valid-package-with-benchmarks/models/test-model/benchmark_instances/performance-baseline/space.yaml +10 -0
  115. algorithm_nexus-0.2.2/tests/fixtures/packages/valid-package-with-benchmarks/models/test-model/model.yaml +4 -0
  116. algorithm_nexus-0.2.2/tests/fixtures/packages/valid-package-with-benchmarks/nexus.yaml +15 -0
  117. algorithm_nexus-0.2.2/tombi.toml +3 -0
  118. algorithm_nexus-0.2.2/uv.lock +9197 -0
  119. algorithm_nexus-0.2.2/zensical.toml +153 -0
  120. algorithm_nexus-0.2.1/setup.cfg +0 -4
  121. algorithm_nexus-0.2.1/src/algorithm_nexus.egg-info/PKG-INFO +0 -319
  122. algorithm_nexus-0.2.1/src/algorithm_nexus.egg-info/SOURCES.txt +0 -28
  123. algorithm_nexus-0.2.1/src/algorithm_nexus.egg-info/dependency_links.txt +0 -1
  124. algorithm_nexus-0.2.1/src/algorithm_nexus.egg-info/entry_points.txt +0 -2
  125. algorithm_nexus-0.2.1/src/algorithm_nexus.egg-info/requires.txt +0 -26
  126. algorithm_nexus-0.2.1/src/algorithm_nexus.egg-info/top_level.txt +0 -1
  127. {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/LICENSE +0 -0
  128. {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/README.md +0 -0
  129. {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/src/algorithm_nexus/cli.py +0 -0
  130. {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/src/algorithm_nexus/commands/__init__.py +0 -0
  131. {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/src/algorithm_nexus/commands/ado_validator.py +0 -0
  132. {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/src/algorithm_nexus/commands/benchmark_manager.py +0 -0
  133. {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/src/algorithm_nexus/commands/get.py +0 -0
  134. {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/src/algorithm_nexus/commands/list.py +0 -0
  135. {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/src/algorithm_nexus/commands/run.py +0 -0
  136. {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/src/algorithm_nexus/commands/utils.py +0 -0
  137. {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/src/algorithm_nexus/commands/validate.py +0 -0
  138. {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/src/algorithm_nexus/commands/venv_manager.py +0 -0
  139. {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/src/algorithm_nexus/models.py +0 -0
  140. {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/tests/test_cli_list_get.py +0 -0
  141. {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/tests/test_cli_run.py +0 -0
  142. {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/tests/test_cli_validation.py +0 -0
  143. {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/tests/test_models.py +0 -0
  144. {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/tests/test_utils.py +0 -0
  145. {algorithm_nexus-0.2.1 → algorithm_nexus-0.2.2}/tests/test_validate_benchmarks.py +0 -0
  146. {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,4 @@
1
+ # This enables DCO bot for you, please take a look https://github.com/probot/dco
2
+ # for more details.
3
+ require:
4
+ members: false
@@ -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,4 @@
1
+ # Prettier configuration
2
+ tabWidth = 4
3
+ useTabs = false
4
+ proseWrap = "always"
@@ -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