CodeEntropy 1.0.6__tar.gz → 1.1.0__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 (228) hide show
  1. {codeentropy-1.0.6 → codeentropy-1.1.0}/.github/CONTRIBUTING.md +16 -16
  2. codeentropy-1.1.0/.github/ISSUE_TEMPLATE/bug_report.md +70 -0
  3. codeentropy-1.1.0/.github/ISSUE_TEMPLATE/config.yml +22 -0
  4. codeentropy-1.1.0/.github/ISSUE_TEMPLATE/documentation.md +19 -0
  5. codeentropy-1.1.0/.github/ISSUE_TEMPLATE/feature_request.md +28 -0
  6. codeentropy-1.1.0/.github/ISSUE_TEMPLATE/general_report.md +13 -0
  7. {codeentropy-1.0.6 → codeentropy-1.1.0}/.github/PULL_REQUEST_TEMPLATE.md +4 -4
  8. {codeentropy-1.0.6 → codeentropy-1.1.0}/.github/renovate.json +6 -6
  9. codeentropy-1.1.0/.github/workflows/daily.yaml +38 -0
  10. codeentropy-1.1.0/.github/workflows/pr.yaml +175 -0
  11. {codeentropy-1.0.6 → codeentropy-1.1.0}/.github/workflows/release.yaml +52 -10
  12. codeentropy-1.1.0/.github/workflows/update-copyright-years-in-license-file.yaml +17 -0
  13. codeentropy-1.1.0/.github/workflows/weekly-docs.yaml +49 -0
  14. codeentropy-1.1.0/.github/workflows/weekly-regression.yaml +52 -0
  15. {codeentropy-1.0.6 → codeentropy-1.1.0}/.gitignore +5 -0
  16. codeentropy-1.1.0/.pre-commit-config.yaml +37 -0
  17. {codeentropy-1.0.6 → codeentropy-1.1.0}/CITATION.cff +2 -2
  18. {codeentropy-1.0.6 → codeentropy-1.1.0}/CODE_OF_CONDUCT.md +1 -1
  19. {codeentropy-1.0.6 → codeentropy-1.1.0}/CodeEntropy/__init__.py +1 -1
  20. codeentropy-1.1.0/CodeEntropy/__main__.py +6 -0
  21. codeentropy-1.1.0/CodeEntropy/cli.py +35 -0
  22. codeentropy-1.1.0/CodeEntropy/config/argparse.py +439 -0
  23. codeentropy-1.1.0/CodeEntropy/config/runtime.py +390 -0
  24. codeentropy-1.1.0/CodeEntropy/core/logging.py +220 -0
  25. codeentropy-1.1.0/CodeEntropy/entropy/__init__.py +0 -0
  26. codeentropy-1.1.0/CodeEntropy/entropy/configurational.py +266 -0
  27. codeentropy-1.1.0/CodeEntropy/entropy/graph.py +141 -0
  28. codeentropy-1.1.0/CodeEntropy/entropy/nodes/__init__.py +0 -0
  29. codeentropy-1.1.0/CodeEntropy/entropy/nodes/aggregate.py +85 -0
  30. codeentropy-1.1.0/CodeEntropy/entropy/nodes/configurational.py +229 -0
  31. codeentropy-1.1.0/CodeEntropy/entropy/nodes/vibrational.py +431 -0
  32. codeentropy-1.1.0/CodeEntropy/entropy/orientational.py +158 -0
  33. codeentropy-1.1.0/CodeEntropy/entropy/vibrational.py +252 -0
  34. codeentropy-1.1.0/CodeEntropy/entropy/water.py +243 -0
  35. codeentropy-1.1.0/CodeEntropy/entropy/workflow.py +359 -0
  36. codeentropy-1.1.0/CodeEntropy/levels/__init__.py +0 -0
  37. codeentropy-1.1.0/CodeEntropy/levels/axes.py +638 -0
  38. codeentropy-1.1.0/CodeEntropy/levels/dihedrals.py +492 -0
  39. codeentropy-1.1.0/CodeEntropy/levels/forces.py +311 -0
  40. codeentropy-1.1.0/CodeEntropy/levels/frame_dag.py +116 -0
  41. codeentropy-1.1.0/CodeEntropy/levels/hierarchy.py +142 -0
  42. codeentropy-1.1.0/CodeEntropy/levels/level_dag.py +340 -0
  43. codeentropy-1.1.0/CodeEntropy/levels/linalg.py +107 -0
  44. codeentropy-1.1.0/CodeEntropy/levels/mda.py +294 -0
  45. codeentropy-1.1.0/CodeEntropy/levels/nodes/__init__.py +0 -0
  46. codeentropy-1.1.0/CodeEntropy/levels/nodes/accumulators.py +193 -0
  47. codeentropy-1.1.0/CodeEntropy/levels/nodes/beads.py +231 -0
  48. codeentropy-1.1.0/CodeEntropy/levels/nodes/conformations.py +116 -0
  49. codeentropy-1.1.0/CodeEntropy/levels/nodes/covariance.py +701 -0
  50. codeentropy-1.1.0/CodeEntropy/levels/nodes/detect_levels.py +65 -0
  51. codeentropy-1.1.0/CodeEntropy/levels/nodes/detect_molecules.py +108 -0
  52. codeentropy-1.1.0/CodeEntropy/molecules/__init__.py +0 -0
  53. codeentropy-1.1.0/CodeEntropy/molecules/grouping.py +204 -0
  54. codeentropy-1.1.0/CodeEntropy/results/__init__.py +0 -0
  55. codeentropy-1.1.0/CodeEntropy/results/reporter.py +551 -0
  56. {codeentropy-1.0.6 → codeentropy-1.1.0}/LICENSE +1 -1
  57. codeentropy-1.1.0/PKG-INFO +80 -0
  58. codeentropy-1.1.0/README.md +27 -0
  59. codeentropy-1.1.0/conda-recipe/meta.yaml +47 -0
  60. {codeentropy-1.0.6 → codeentropy-1.1.0}/docs/Makefile +1 -1
  61. {codeentropy-1.0.6 → codeentropy-1.1.0}/docs/README.md +1 -2
  62. {codeentropy-1.0.6 → codeentropy-1.1.0}/docs/_static/README.md +2 -2
  63. {codeentropy-1.0.6 → codeentropy-1.1.0}/docs/_static/custom.css +1 -1
  64. codeentropy-1.1.0/docs/_static/logos/biosim-codeentropy_logo_dark.png +0 -0
  65. codeentropy-1.1.0/docs/_static/logos/biosim-codeentropy_logo_light.png +0 -0
  66. {codeentropy-1.0.6 → codeentropy-1.1.0}/docs/_templates/README.md +2 -2
  67. codeentropy-1.1.0/docs/api/CodeEntropy.cli.rst +7 -0
  68. codeentropy-1.1.0/docs/api/CodeEntropy.config.argparse.rst +7 -0
  69. codeentropy-1.1.0/docs/api/CodeEntropy.config.rst +16 -0
  70. codeentropy-1.1.0/docs/api/CodeEntropy.config.runtime.rst +7 -0
  71. codeentropy-1.1.0/docs/api/CodeEntropy.core.logging.rst +7 -0
  72. codeentropy-1.1.0/docs/api/CodeEntropy.core.rst +15 -0
  73. codeentropy-1.1.0/docs/api/CodeEntropy.entropy.configurational.rst +7 -0
  74. codeentropy-1.1.0/docs/api/CodeEntropy.entropy.graph.rst +7 -0
  75. codeentropy-1.1.0/docs/api/CodeEntropy.entropy.nodes.aggregate.rst +7 -0
  76. codeentropy-1.1.0/docs/api/CodeEntropy.entropy.nodes.configurational.rst +7 -0
  77. codeentropy-1.1.0/docs/api/CodeEntropy.entropy.nodes.rst +17 -0
  78. codeentropy-1.1.0/docs/api/CodeEntropy.entropy.nodes.vibrational.rst +7 -0
  79. codeentropy-1.1.0/docs/api/CodeEntropy.entropy.orientational.rst +7 -0
  80. codeentropy-1.1.0/docs/api/CodeEntropy.entropy.rst +28 -0
  81. codeentropy-1.1.0/docs/api/CodeEntropy.entropy.vibrational.rst +7 -0
  82. codeentropy-1.1.0/docs/api/CodeEntropy.entropy.water.rst +7 -0
  83. codeentropy-1.1.0/docs/api/CodeEntropy.entropy.workflow.rst +7 -0
  84. codeentropy-1.1.0/docs/api/CodeEntropy.levels.axes.rst +7 -0
  85. codeentropy-1.1.0/docs/api/CodeEntropy.levels.dihedrals.rst +7 -0
  86. codeentropy-1.1.0/docs/api/CodeEntropy.levels.forces.rst +7 -0
  87. codeentropy-1.1.0/docs/api/CodeEntropy.levels.frame_dag.rst +7 -0
  88. codeentropy-1.1.0/docs/api/CodeEntropy.levels.hierarchy.rst +7 -0
  89. codeentropy-1.1.0/docs/api/CodeEntropy.levels.level_dag.rst +7 -0
  90. codeentropy-1.1.0/docs/api/CodeEntropy.levels.linalg.rst +7 -0
  91. codeentropy-1.1.0/docs/api/CodeEntropy.levels.mda.rst +7 -0
  92. codeentropy-1.1.0/docs/api/CodeEntropy.levels.nodes.accumulators.rst +7 -0
  93. codeentropy-1.1.0/docs/api/CodeEntropy.levels.nodes.beads.rst +7 -0
  94. codeentropy-1.1.0/docs/api/CodeEntropy.levels.nodes.conformations.rst +7 -0
  95. codeentropy-1.1.0/docs/api/CodeEntropy.levels.nodes.covariance.rst +7 -0
  96. codeentropy-1.1.0/docs/api/CodeEntropy.levels.nodes.detect_levels.rst +7 -0
  97. codeentropy-1.1.0/docs/api/CodeEntropy.levels.nodes.detect_molecules.rst +7 -0
  98. codeentropy-1.1.0/docs/api/CodeEntropy.levels.nodes.rst +20 -0
  99. codeentropy-1.1.0/docs/api/CodeEntropy.levels.rst +30 -0
  100. codeentropy-1.1.0/docs/api/CodeEntropy.molecules.grouping.rst +7 -0
  101. codeentropy-1.1.0/docs/api/CodeEntropy.molecules.rst +15 -0
  102. codeentropy-1.1.0/docs/api/CodeEntropy.results.reporter.rst +7 -0
  103. codeentropy-1.1.0/docs/api/CodeEntropy.results.rst +15 -0
  104. codeentropy-1.1.0/docs/api/CodeEntropy.rst +28 -0
  105. codeentropy-1.1.0/docs/api/modules.rst +7 -0
  106. codeentropy-1.1.0/docs/conf.py +120 -0
  107. {codeentropy-1.0.6 → codeentropy-1.1.0}/docs/config.yaml +1 -1
  108. codeentropy-1.1.0/docs/developer_guide.rst +197 -0
  109. {codeentropy-1.0.6 → codeentropy-1.1.0}/docs/faq.rst +6 -6
  110. codeentropy-1.1.0/docs/getting_started.rst +333 -0
  111. {codeentropy-1.0.6 → codeentropy-1.1.0}/docs/index.rst +1 -1
  112. {codeentropy-1.0.6 → codeentropy-1.1.0}/docs/science.rst +9 -9
  113. {codeentropy-1.0.6 → codeentropy-1.1.0}/pyproject.toml +38 -35
  114. {codeentropy-1.0.6 → codeentropy-1.1.0}/readthedocs.yml +1 -1
  115. codeentropy-1.1.0/tests/pytest.ini +10 -0
  116. codeentropy-1.1.0/tests/regression/baselines/benzaldehyde.json +43 -0
  117. codeentropy-1.1.0/tests/regression/baselines/benzene.json +43 -0
  118. codeentropy-1.1.0/tests/regression/baselines/cyclohexane.json +43 -0
  119. codeentropy-1.1.0/tests/regression/baselines/dna.json +58 -0
  120. codeentropy-1.1.0/tests/regression/baselines/ethyl-acetate.json +43 -0
  121. codeentropy-1.1.0/tests/regression/baselines/methane.json +40 -0
  122. codeentropy-1.1.0/tests/regression/baselines/methanol.json +43 -0
  123. codeentropy-1.1.0/tests/regression/baselines/octonol.json +43 -0
  124. codeentropy-1.1.0/tests/regression/configs/benzaldehyde/config.yaml +12 -0
  125. codeentropy-1.1.0/tests/regression/configs/benzene/config.yaml +12 -0
  126. codeentropy-1.1.0/tests/regression/configs/cyclohexane/config.yaml +12 -0
  127. codeentropy-1.1.0/tests/regression/configs/dna/config.yaml +10 -0
  128. codeentropy-1.1.0/tests/regression/configs/ethyl-acetate/config.yaml +12 -0
  129. codeentropy-1.1.0/tests/regression/configs/methane/config.yaml +13 -0
  130. codeentropy-1.1.0/tests/regression/configs/methanol/config.yaml +12 -0
  131. codeentropy-1.1.0/tests/regression/configs/octonol/config.yaml +12 -0
  132. codeentropy-1.1.0/tests/regression/conftest.py +46 -0
  133. codeentropy-1.1.0/tests/regression/helpers.py +407 -0
  134. codeentropy-1.1.0/tests/regression/test_regression.py +154 -0
  135. codeentropy-1.1.0/tests/unit/CodeEntropy/cli/test___main__.py +13 -0
  136. codeentropy-1.1.0/tests/unit/CodeEntropy/cli/test_cli.py +38 -0
  137. codeentropy-1.1.0/tests/unit/CodeEntropy/config/argparse/conftest.py +50 -0
  138. codeentropy-1.1.0/tests/unit/CodeEntropy/config/argparse/test_argparse_build_parser.py +39 -0
  139. codeentropy-1.1.0/tests/unit/CodeEntropy/config/argparse/test_argparse_load_config.py +50 -0
  140. codeentropy-1.1.0/tests/unit/CodeEntropy/config/argparse/test_argparse_resolve.py +77 -0
  141. codeentropy-1.1.0/tests/unit/CodeEntropy/config/argparse/test_argparse_str2bool.py +30 -0
  142. codeentropy-1.1.0/tests/unit/CodeEntropy/config/argparse/test_argparse_validate_inputs.py +59 -0
  143. codeentropy-1.1.0/tests/unit/CodeEntropy/config/runtime/conftest.py +10 -0
  144. codeentropy-1.1.0/tests/unit/CodeEntropy/config/runtime/test_build_universe_branches.py +33 -0
  145. codeentropy-1.1.0/tests/unit/CodeEntropy/config/runtime/test_citation_data.py +23 -0
  146. codeentropy-1.1.0/tests/unit/CodeEntropy/config/runtime/test_create_job_folder.py +51 -0
  147. codeentropy-1.1.0/tests/unit/CodeEntropy/config/runtime/test_print_args_table.py +22 -0
  148. codeentropy-1.1.0/tests/unit/CodeEntropy/config/runtime/test_required_args.py +28 -0
  149. codeentropy-1.1.0/tests/unit/CodeEntropy/config/runtime/test_run_entropy_workflow_branches.py +158 -0
  150. codeentropy-1.1.0/tests/unit/CodeEntropy/config/runtime/test_runtime_properties.py +7 -0
  151. codeentropy-1.1.0/tests/unit/CodeEntropy/config/runtime/test_show_splash.py +46 -0
  152. codeentropy-1.1.0/tests/unit/CodeEntropy/config/runtime/test_unit_conversions.py +6 -0
  153. codeentropy-1.1.0/tests/unit/CodeEntropy/config/runtime/test_universe_io.py +28 -0
  154. codeentropy-1.1.0/tests/unit/CodeEntropy/core/logging/conftest.py +23 -0
  155. codeentropy-1.1.0/tests/unit/CodeEntropy/core/logging/test_configure_loggers.py +26 -0
  156. codeentropy-1.1.0/tests/unit/CodeEntropy/core/logging/test_error_filter.py +23 -0
  157. codeentropy-1.1.0/tests/unit/CodeEntropy/core/logging/test_export_console.py +17 -0
  158. codeentropy-1.1.0/tests/unit/CodeEntropy/core/logging/test_get_console_singleton.py +19 -0
  159. codeentropy-1.1.0/tests/unit/CodeEntropy/core/logging/test_handlers_setup.py +41 -0
  160. codeentropy-1.1.0/tests/unit/CodeEntropy/core/logging/test_set_level.py +27 -0
  161. codeentropy-1.1.0/tests/unit/CodeEntropy/entropy/conftest.py +76 -0
  162. codeentropy-1.1.0/tests/unit/CodeEntropy/entropy/nodes/test_aggregate_node.py +22 -0
  163. codeentropy-1.1.0/tests/unit/CodeEntropy/entropy/nodes/test_configurational_node.py +72 -0
  164. codeentropy-1.1.0/tests/unit/CodeEntropy/entropy/nodes/test_vibrational_node.py +382 -0
  165. codeentropy-1.1.0/tests/unit/CodeEntropy/entropy/test_configurational_edges.py +90 -0
  166. codeentropy-1.1.0/tests/unit/CodeEntropy/entropy/test_configurational_entropy_math.py +120 -0
  167. codeentropy-1.1.0/tests/unit/CodeEntropy/entropy/test_graph.py +79 -0
  168. codeentropy-1.1.0/tests/unit/CodeEntropy/entropy/test_orientational_entropy.py +54 -0
  169. codeentropy-1.1.0/tests/unit/CodeEntropy/entropy/test_vibrational_entropy_math.py +161 -0
  170. codeentropy-1.1.0/tests/unit/CodeEntropy/entropy/test_water_entropy.py +188 -0
  171. codeentropy-1.1.0/tests/unit/CodeEntropy/entropy/test_workflow.py +426 -0
  172. codeentropy-1.1.0/tests/unit/CodeEntropy/levels/conftest.py +58 -0
  173. codeentropy-1.1.0/tests/unit/CodeEntropy/levels/nodes/test_build_beads_node.py +190 -0
  174. codeentropy-1.1.0/tests/unit/CodeEntropy/levels/nodes/test_conformations_node.py +30 -0
  175. codeentropy-1.1.0/tests/unit/CodeEntropy/levels/nodes/test_detect_levels_node.py +19 -0
  176. codeentropy-1.1.0/tests/unit/CodeEntropy/levels/nodes/test_detect_molecules_node.py +45 -0
  177. codeentropy-1.1.0/tests/unit/CodeEntropy/levels/nodes/test_frame_covariance_node.py +634 -0
  178. codeentropy-1.1.0/tests/unit/CodeEntropy/levels/nodes/test_init_covariance_accumulators_node.py +23 -0
  179. codeentropy-1.1.0/tests/unit/CodeEntropy/levels/test_axes.py +701 -0
  180. codeentropy-1.1.0/tests/unit/CodeEntropy/levels/test_dihedrals.py +619 -0
  181. codeentropy-1.1.0/tests/unit/CodeEntropy/levels/test_forces_force_torque_calculator.py +238 -0
  182. codeentropy-1.1.0/tests/unit/CodeEntropy/levels/test_frame_graph.py +50 -0
  183. codeentropy-1.1.0/tests/unit/CodeEntropy/levels/test_hierarchy_builder.py +108 -0
  184. codeentropy-1.1.0/tests/unit/CodeEntropy/levels/test_level_dag_orchestration.py +381 -0
  185. codeentropy-1.1.0/tests/unit/CodeEntropy/levels/test_level_dag_reduce.py +208 -0
  186. codeentropy-1.1.0/tests/unit/CodeEntropy/levels/test_level_dag_reduction.py +91 -0
  187. codeentropy-1.1.0/tests/unit/CodeEntropy/levels/test_linalg_matrix_utils.py +57 -0
  188. codeentropy-1.1.0/tests/unit/CodeEntropy/levels/test_mda_universe_operations.py +217 -0
  189. codeentropy-1.1.0/tests/unit/CodeEntropy/molecules/test_grouping.py +127 -0
  190. codeentropy-1.1.0/tests/unit/CodeEntropy/results/test_reporter.py +549 -0
  191. codeentropy-1.0.6/.github/dependabot.yml +0 -14
  192. codeentropy-1.0.6/.github/workflows/mdanalysis-compatibility-failure.md +0 -11
  193. codeentropy-1.0.6/.github/workflows/mdanalysis-compatibility.yaml +0 -49
  194. codeentropy-1.0.6/.github/workflows/project-ci.yaml +0 -71
  195. codeentropy-1.0.6/.pre-commit-config.yaml +0 -28
  196. codeentropy-1.0.6/CodeEntropy/config/arg_config_manager.py +0 -272
  197. codeentropy-1.0.6/CodeEntropy/config/data_logger.py +0 -109
  198. codeentropy-1.0.6/CodeEntropy/config/logging_config.py +0 -164
  199. codeentropy-1.0.6/CodeEntropy/dihedral_tools.py +0 -392
  200. codeentropy-1.0.6/CodeEntropy/entropy.py +0 -1112
  201. codeentropy-1.0.6/CodeEntropy/group_molecules.py +0 -106
  202. codeentropy-1.0.6/CodeEntropy/levels.py +0 -919
  203. codeentropy-1.0.6/CodeEntropy/main.py +0 -28
  204. codeentropy-1.0.6/CodeEntropy/mda_universe_operations.py +0 -159
  205. codeentropy-1.0.6/CodeEntropy/run.py +0 -343
  206. codeentropy-1.0.6/PKG-INFO +0 -81
  207. codeentropy-1.0.6/README.md +0 -31
  208. codeentropy-1.0.6/docs/api.rst +0 -70
  209. codeentropy-1.0.6/docs/conf.py +0 -193
  210. codeentropy-1.0.6/docs/developer_guide.rst +0 -136
  211. codeentropy-1.0.6/docs/getting_started.rst +0 -183
  212. codeentropy-1.0.6/docs/images/biosim-codeentropy_logo_grey.svg +0 -1
  213. codeentropy-1.0.6/tests/data/md_A4_dna.tpr +0 -0
  214. codeentropy-1.0.6/tests/data/md_A4_dna_xf.trr +0 -0
  215. codeentropy-1.0.6/tests/test_CodeEntropy/test_arg_config_manager.py +0 -601
  216. codeentropy-1.0.6/tests/test_CodeEntropy/test_base.py +0 -45
  217. codeentropy-1.0.6/tests/test_CodeEntropy/test_data_logger.py +0 -136
  218. codeentropy-1.0.6/tests/test_CodeEntropy/test_dihedral_tools.py +0 -571
  219. codeentropy-1.0.6/tests/test_CodeEntropy/test_entropy.py +0 -1936
  220. codeentropy-1.0.6/tests/test_CodeEntropy/test_group_molecules.py +0 -78
  221. codeentropy-1.0.6/tests/test_CodeEntropy/test_levels.py +0 -1278
  222. codeentropy-1.0.6/tests/test_CodeEntropy/test_logging_config.py +0 -103
  223. codeentropy-1.0.6/tests/test_CodeEntropy/test_main.py +0 -134
  224. codeentropy-1.0.6/tests/test_CodeEntropy/test_mda_universe_operations.py +0 -315
  225. codeentropy-1.0.6/tests/test_CodeEntropy/test_run.py +0 -632
  226. {codeentropy-1.0.6 → codeentropy-1.1.0}/CodeEntropy/config/__init__.py +0 -0
  227. {codeentropy-1.0.6/tests/data → codeentropy-1.1.0/CodeEntropy/core}/__init__.py +0 -0
  228. {codeentropy-1.0.6 → codeentropy-1.1.0}/tests/__init__.py +0 -0
@@ -10,7 +10,7 @@ This guide explains how to set up your environment, make changes, and submit the
10
10
 
11
11
  ## Getting Started
12
12
 
13
- Before contributing, please review the [Developer Guide](https://codeentropy.readthedocs.io/en/latest/developer_guide.html).
13
+ Before contributing, please review the [Developer Guide](https://codeentropy.readthedocs.io/en/latest/developer_guide.html).
14
14
  It covers CodeEntropy’s architecture, setup instructions, and contribution workflow.
15
15
 
16
16
  If you’re new to the project, we also recommend:
@@ -23,19 +23,19 @@ If you’re new to the project, we also recommend:
23
23
 
24
24
  When you’re ready to submit your work:
25
25
 
26
- 1. **Push your branch** to GitHub.
27
- 2. **Open a [pull request](https://help.github.com/articles/using-pull-requests/)** against the `main` branch.
26
+ 1. **Push your branch** to GitHub.
27
+ 2. **Open a [pull request](https://help.github.com/articles/using-pull-requests/)** against the `main` branch.
28
28
  3. **Fill out the PR template**, including:
29
- - A concise summary of what your PR does
30
- - A list of all changes introduced
31
- - Details on how these changes affect the repository (features, tests, documentation, etc.)
29
+ - A concise summary of what your PR does
30
+ - A list of all changes introduced
31
+ - Details on how these changes affect the repository (features, tests, documentation, etc.)
32
32
  4. **Verify before submission**:
33
- - All tests pass
34
- - Pre-commit checks succeed
35
- - Documentation is updated where applicable
33
+ - All tests pass
34
+ - Pre-commit checks succeed
35
+ - Documentation is updated where applicable
36
36
  5. **Review process**:
37
- - Your PR will be reviewed by the core development team.
38
- - At least **one approval** is required before merging.
37
+ - Your PR will be reviewed by the core development team.
38
+ - At least **one approval** is required before merging.
39
39
 
40
40
  We aim to provide constructive feedback quickly and appreciate your patience during the review process.
41
41
 
@@ -45,12 +45,12 @@ We aim to provide constructive feedback quickly and appreciate your patience dur
45
45
 
46
46
  Found a bug or have a feature request?
47
47
 
48
- 1. **Open a new issue** on GitHub.
49
- 2. Provide a **clear and descriptive title**.
48
+ 1. **Open a new issue** on GitHub.
49
+ 2. Provide a **clear and descriptive title**.
50
50
  3. Include:
51
- - Steps to reproduce the issue (if applicable)
52
- - Expected vs. actual behavior
53
- - Relevant logs, screenshots, or input files
51
+ - Steps to reproduce the issue (if applicable)
52
+ - Expected vs. actual behavior
53
+ - Relevant logs, screenshots, or input files
54
54
 
55
55
  Well-documented issues help us address problems faster and keep CodeEntropy stable and robust.
56
56
 
@@ -0,0 +1,70 @@
1
+ ---
2
+ name: Bug report
3
+ about: Create a report to help us improve CodeEntropy
4
+ title: '[Bug]: '
5
+ labels: bug
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ # Bug Report
11
+ <!-- A clear and concise description of the issue. -->
12
+
13
+ ---
14
+
15
+ ## To Reproduce
16
+ <!-- Provide the YAML configuration and the exact CLI command that reproduces the issue. -->
17
+
18
+ ### YAML configuration
19
+ <!-- Paste the YAML file or the smallest excerpt that reproduces the issue.
20
+ Remove unrelated fields to make it minimal. -->
21
+ ```yaml
22
+ # Paste the YAML snippet here
23
+ ```
24
+
25
+ ### CLI command used
26
+ <!-- Write the exact command used, for example: -->
27
+ ```bash
28
+ # Paste the CLI command here
29
+ ```
30
+
31
+ ### Actual output
32
+ <!-- Paste the output, logs, or error messages here -->
33
+ ```bash
34
+ # Paste the output, logs, or error messages here
35
+ ```
36
+
37
+ ### Expected output
38
+ <!-- Describe what you expected to see instead -->
39
+
40
+ ---
41
+
42
+ ## Environment and Versions
43
+
44
+ - Operating System:
45
+ - CodeEntropy Version:
46
+ - Python Version:
47
+ - Package list:
48
+ - If using conda, run: `conda list > packages.txt` and paste the contents here.
49
+
50
+ ``` bash
51
+ # Paste packages.txt here
52
+ ```
53
+
54
+ - If using venv/pip, run: `pip list > packages.txt` and paste the contents here.
55
+
56
+ ``` bash
57
+ # Paste packages.txt here
58
+ ```
59
+
60
+ ---
61
+
62
+ ## Screenshots or Logs
63
+
64
+ <!-- Attach any relevant screenshots, logs, or stack traces. -->
65
+
66
+ ---
67
+
68
+ ## Additional Context
69
+
70
+ <!-- Include anything else that might help reproduce or understand the bug, such as changes from a previously working version. -->
@@ -0,0 +1,22 @@
1
+ blank_issues_enabled: false
2
+ issue_templates:
3
+ - name: "Bug Report"
4
+ description: "Report a bug in CodeEntropy."
5
+ title: "[Bug]: "
6
+ labels: ["bug"]
7
+ body: "./ISSUE_TEMPLATE/bug_report.md"
8
+ - name: "Feature Request"
9
+ description: "Propose a new feature or improvement."
10
+ title: "[Feature]: "
11
+ labels: ["enhancement"]
12
+ body: "./ISSUE_TEMPLATE/feature_request.md"
13
+ - name: "Documentation"
14
+ description: "Suggest updates or additions to the documentation."
15
+ title: "[Docs]: "
16
+ labels: ["documentation"]
17
+ body: "./ISSUE_TEMPLATE/documentation.md"
18
+ - name: "General Report"
19
+ description: "Provide general feedback or inquiries."
20
+ title: "[General]: "
21
+ labels: ["general"]
22
+ body: "./ISSUE_TEMPLATE/general_report.md"
@@ -0,0 +1,19 @@
1
+ ---
2
+ name: Documentation
3
+ about: Suggest updates or additions to documentation
4
+ title: "[Docs]: "
5
+ labels: documentation
6
+ assignees: ''
7
+ ---
8
+
9
+ ### Documentation Update
10
+ <!-- What part of the documentation needs to be updated or added? -->
11
+
12
+ ### Why Is This Needed?
13
+ <!-- Explain the importance of this update. -->
14
+
15
+ ### Suggested Changes
16
+ <!-- Provide a detailed description of the changes. -->
17
+
18
+ ### Additional Context
19
+ <!-- Include any related resources. -->
@@ -0,0 +1,28 @@
1
+ ---
2
+ name: Feature request
3
+ about: Suggest an idea for CodeEntropy
4
+ title: '[Feature]: '
5
+ labels: 'enhancement'
6
+ assignees: ''
7
+ ---
8
+
9
+ # Feature Request
10
+
11
+ ## Problem / Motivation
12
+ <!-- Describe the problem you want to solve or the motivation for this feature. -->
13
+
14
+ ## Proposed Solution
15
+ <!-- Describe the feature you would like to see implemented. Include examples if applicable. -->
16
+
17
+ ## Alternatives Considered
18
+ - <!-- Alternative 1 -->
19
+ - <!-- Alternative 2 -->
20
+
21
+ ## Expected Impact
22
+ <!-- How this feature would affect the codebase or workflow -->
23
+ - <!-- Impact 1 -->
24
+ - <!-- Impact 2 -->
25
+
26
+ ## Additional Context
27
+ <!-- Add any other context, screenshots, or references for the feature request here. -->
28
+ - <!-- Further context -->
@@ -0,0 +1,13 @@
1
+ ---
2
+ name: General Report
3
+ about: Provide general feedback or inquiries
4
+ title: "[General]: "
5
+ labels: general
6
+ assignees: ''
7
+ ---
8
+
9
+ ### Feedback or Inquiry
10
+ <!-- Provide your feedback or inquiry. -->
11
+
12
+ ### Additional Information
13
+ <!-- Add any other relevant details here. -->
@@ -5,16 +5,16 @@
5
5
  <!-- List all the changes introduced in this PR. -->
6
6
  ### Change 1 <!-- Rename Change 1 to reflect change title -->:
7
7
  - <!-- Bullet point the changes in update 1. -->
8
- -
8
+ -
9
9
 
10
10
  ### Change 2 <!-- Rename Change 2 to reflect change title -->:
11
11
  - <!-- Bullet point the changes in update 2. -->
12
- -
12
+ -
13
13
 
14
14
  ### Change 3 <!-- Rename Change 3 to reflect change title -->:
15
15
  - <!-- Bullet point the changes in update 3. -->
16
- -
16
+ -
17
17
 
18
18
  ## Impact
19
19
  - <!-- Bullet point the expected impact this PR will have on the codebase. -->
20
- -
20
+ -
@@ -1,21 +1,21 @@
1
1
  {
2
2
  "extends": [
3
3
  "config:best-practices",
4
- ":pinAllExceptPeerDependencies",
5
4
  ":dependencyDashboard",
6
5
  "group:monorepos",
7
6
  "group:recommended"
8
7
  ],
9
- "rangeStrategy": "pin",
10
- "schedule": ["* 8 * * 1-5"],
11
- "labels": ["dependencies"],
12
- "lockFileMaintenance": {
8
+ "enabledManagers": ["pep621"],
9
+ "pep621": {
13
10
  "enabled": true
14
11
  },
12
+ "rangeStrategy": "replace",
13
+ "schedule": ["* 8 * * 1-5"],
14
+ "labels": ["dependencies"],
15
15
  "packageRules": [
16
16
  {
17
17
  "matchUpdateTypes": ["minor", "patch"],
18
18
  "automerge": false
19
19
  }
20
20
  ]
21
- }
21
+ }
@@ -0,0 +1,38 @@
1
+ name: Daily Unit Tests
2
+
3
+ on:
4
+ schedule:
5
+ - cron: '0 8 * * 1-5'
6
+ workflow_dispatch:
7
+
8
+ concurrency:
9
+ group: daily-${{ github.ref }}
10
+ cancel-in-progress: true
11
+
12
+ jobs:
13
+ unit:
14
+ name: Unit (${{ matrix.os }}, ${{ matrix.python-version }})
15
+ runs-on: ${{ matrix.os }}
16
+ timeout-minutes: 30
17
+ strategy:
18
+ fail-fast: false
19
+ matrix:
20
+ os: [ubuntu-24.04, macos-15, windows-2025]
21
+ python-version: ["3.12", "3.13", "3.14"]
22
+ steps:
23
+ - name: Checkout
24
+ uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
25
+
26
+ - name: Set up Python ${{ matrix.python-version }}
27
+ uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
28
+ with:
29
+ python-version: ${{ matrix.python-version }}
30
+ cache: pip
31
+
32
+ - name: Install (testing)
33
+ run: |
34
+ python -m pip install --upgrade pip
35
+ python -m pip install -e .[testing]
36
+
37
+ - name: Pytest (unit) • ${{ matrix.os }} • py${{ matrix.python-version }}
38
+ run: python -m pytest tests/unit -q
@@ -0,0 +1,175 @@
1
+ name: Pull Request CI
2
+
3
+ on:
4
+ pull_request:
5
+
6
+ concurrency:
7
+ group: pr-${{ github.ref }}
8
+ cancel-in-progress: true
9
+
10
+ jobs:
11
+ unit:
12
+ name: Unit
13
+ runs-on: ${{ matrix.os }}
14
+ timeout-minutes: 25
15
+ strategy:
16
+ fail-fast: false
17
+ matrix:
18
+ os: [ubuntu-24.04, macos-15, windows-2025]
19
+ python-version: ["3.12", "3.13", "3.14"]
20
+ steps:
21
+ - name: Checkout
22
+ uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
23
+
24
+ - name: Set up Python ${{ matrix.python-version }}
25
+ uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
26
+ with:
27
+ python-version: ${{ matrix.python-version }}
28
+ cache: pip
29
+
30
+ - name: Install testing dependencies
31
+ run: |
32
+ python -m pip install --upgrade pip
33
+ python -m pip install -e .[testing]
34
+
35
+ - name: Pytest (unit) • ${{ matrix.os }}, ${{ matrix.python-version }}
36
+ run: python -m pytest tests/unit -q
37
+
38
+ regression-quick:
39
+ name: Regression (quick)
40
+ needs: unit
41
+ runs-on: ubuntu-24.04
42
+ timeout-minutes: 35
43
+ steps:
44
+ - name: Checkout
45
+ uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
46
+
47
+ - name: Set up Python 3.14
48
+ uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
49
+ with:
50
+ python-version: "3.14"
51
+ cache: pip
52
+
53
+ - name: Cache testdata
54
+ uses: actions/cache@v4
55
+ with:
56
+ path: .testdata
57
+ key: codeentropy-testdata-v1-${{ runner.os }}-py3.14
58
+
59
+ - name: Install (testing)
60
+ run: |
61
+ python -m pip install --upgrade pip
62
+ python -m pip install -e .[testing]
63
+
64
+ - name: Pytest (regression quick)
65
+ run: python -m pytest tests/regression -q
66
+
67
+ - name: Upload artifacts (failure)
68
+ if: failure()
69
+ uses: actions/upload-artifact@v4
70
+ with:
71
+ name: quick-regression-failure
72
+ path: |
73
+ .testdata/**
74
+ tests/regression/**/.pytest_cache/**
75
+ /tmp/pytest-of-*/pytest-*/**/config.yaml
76
+ /tmp/pytest-of-*/pytest-*/**/codeentropy_stdout.txt
77
+ /tmp/pytest-of-*/pytest-*/**/codeentropy_stderr.txt
78
+ /tmp/pytest-of-*/pytest-*/**/codeentropy_output.json
79
+
80
+ docs:
81
+ name: Docs
82
+ needs: unit
83
+ runs-on: ubuntu-24.04
84
+ timeout-minutes: 25
85
+
86
+ steps:
87
+ - name: Checkout
88
+ uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
89
+
90
+ - name: Set up Python 3.14
91
+ uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
92
+ with:
93
+ python-version: "3.14"
94
+ cache: pip
95
+
96
+ - name: Install
97
+ run: |
98
+ python -m pip install --upgrade pip
99
+ python -m pip install -e .[docs]
100
+
101
+ - name: Build docs
102
+ run: |
103
+ make -C docs clean
104
+ make -C docs html SPHINXOPTS="-W --keep-going"
105
+
106
+ - name: Upload docs artifact
107
+ if: always()
108
+ uses: actions/upload-artifact@v4
109
+ with:
110
+ name: docs-html
111
+ path: docs/_build/html
112
+
113
+ pre-commit:
114
+ name: Pre-commit
115
+ runs-on: ubuntu-24.04
116
+ timeout-minutes: 15
117
+ steps:
118
+ - name: Checkout
119
+ uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
120
+
121
+ - name: Set up Python 3.14
122
+ uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
123
+ with:
124
+ python-version: "3.14"
125
+ cache: pip
126
+
127
+ - name: Install (pre-commit)
128
+ run: |
129
+ python -m pip install --upgrade pip
130
+ python -m pip install -e .[pre-commit]
131
+
132
+ - name: Run pre-commit
133
+ shell: bash
134
+ run: |
135
+ pre-commit install
136
+ pre-commit run --all-files || {
137
+ git status --short
138
+ git diff
139
+ exit 1
140
+ }
141
+
142
+ coverage:
143
+ name: Coverage
144
+ needs: unit
145
+ runs-on: ubuntu-24.04
146
+ timeout-minutes: 30
147
+ steps:
148
+ - name: Checkout repo
149
+ uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
150
+
151
+ - name: Set up Python 3.14
152
+ uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
153
+ with:
154
+ python-version: "3.14"
155
+ cache: pip
156
+
157
+ - name: Install (testing)
158
+ run: |
159
+ python -m pip install --upgrade pip
160
+ python -m pip install -e .[testing]
161
+
162
+ - name: Run unit test suite with coverage
163
+ run: |
164
+ pytest tests/unit \
165
+ --cov CodeEntropy \
166
+ --cov-report term-missing \
167
+ --cov-report xml \
168
+ -q
169
+
170
+ - name: Upload to Coveralls
171
+ uses: coverallsapp/github-action@5cbfd81b66ca5d10c19b062c04de0199c215fb6e
172
+ with:
173
+ github-token: ${{ secrets.GITHUB_TOKEN }}
174
+ file: coverage.xml
175
+ fail-on-error: false
@@ -1,4 +1,4 @@
1
- name: release
1
+ name: Release CodeEntropy
2
2
 
3
3
  on:
4
4
  workflow_dispatch:
@@ -18,10 +18,10 @@ jobs:
18
18
  steps:
19
19
  - name: Checkout repository
20
20
  id: repo
21
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6
21
+ uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
22
22
 
23
23
  - name: Set up Python
24
- uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
24
+ uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
25
25
  with:
26
26
  python-version: 3.14.0
27
27
 
@@ -46,7 +46,7 @@ jobs:
46
46
  steps:
47
47
 
48
48
  - name: checkout
49
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6
49
+ uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
50
50
 
51
51
  - name: Change version in repo and CITATION.cff
52
52
  run: |
@@ -61,7 +61,7 @@ jobs:
61
61
 
62
62
  - name: send PR
63
63
  id: pr_id
64
- uses: peter-evans/create-pull-request@84ae59a2cdc2258d6fa0732dd66352dddae2a412 # v7.0.9
64
+ uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v8.1.0
65
65
  with:
66
66
  commit-message: Update version to ${{ github.event.inputs.version }}
67
67
  branch: version-update
@@ -95,7 +95,7 @@ jobs:
95
95
  runs-on: ubuntu-24.04
96
96
  steps:
97
97
  - name: Checkout repository
98
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6
98
+ uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
99
99
  with:
100
100
  ref: main
101
101
 
@@ -113,7 +113,7 @@ jobs:
113
113
  steps:
114
114
 
115
115
  - name: create release
116
- uses: softprops/action-gh-release@5be0e66d93ac7ed76da52eca8bb058f665c3a5fe # v2.4.2
116
+ uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2.5.0
117
117
  with:
118
118
  name: v${{ github.event.inputs.version }}
119
119
  generate_release_notes: true
@@ -126,12 +126,12 @@ jobs:
126
126
  steps:
127
127
 
128
128
  - name: checkout
129
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6
129
+ uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
130
130
  with:
131
131
  ref: main
132
132
 
133
133
  - name: Set up Python
134
- uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
134
+ uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
135
135
  with:
136
136
  python-version: 3.14.0
137
137
 
@@ -146,4 +146,46 @@ jobs:
146
146
  env:
147
147
  FLIT_USERNAME: __token__
148
148
  FLIT_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
149
-
149
+
150
+ conda:
151
+ name: publish conda to anaconda.org
152
+ needs: [tag, release]
153
+ runs-on: ubuntu-24.04
154
+
155
+ steps:
156
+ - name: Checkout
157
+ uses: actions/checkout@v4
158
+ with:
159
+ ref: main
160
+
161
+ - name: Set version in conda recipe
162
+ run: |
163
+ sed -i -E "s/^{% set version = \".*\" %}$/{% set version = \"${{ github.event.inputs.version }}\" %}/" conda-recipe/meta.yaml
164
+
165
+ - name: Setup Conda
166
+ uses: conda-incubator/setup-miniconda@v3
167
+ with:
168
+ miniforge-variant: Miniforge3
169
+ python-version: "3.12"
170
+ auto-activate-base: false
171
+
172
+ - name: Install build tools
173
+ shell: bash -l {0}
174
+ run: |
175
+ conda install -y conda-build anaconda-client
176
+ conda config --add channels conda-forge
177
+ conda config --set channel_priority strict
178
+ conda config --set anaconda_upload no
179
+
180
+ - name: Build package
181
+ shell: bash -l {0}
182
+ run: |
183
+ conda build conda-recipe
184
+
185
+ - name: Upload to Anaconda
186
+ shell: bash -l {0}
187
+ env:
188
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_TOKEN }}
189
+ run: |
190
+ PKG_PATH=$(conda build conda-recipe --output)
191
+ anaconda -t "$ANACONDA_API_TOKEN" upload "$PKG_PATH" --user CCPBioSim --force
@@ -0,0 +1,17 @@
1
+ name: Update copyright year(s) in license file
2
+
3
+ on:
4
+ schedule:
5
+ - cron: '0 3 1 1 *' # 03:00 AM on January 1
6
+ workflow_dispatch:
7
+
8
+ jobs:
9
+ update-license-year:
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - uses: actions/checkout@v6
13
+ with:
14
+ fetch-depth: 0
15
+ - uses: FantasticFiasco/action-update-license-year@v3
16
+ with:
17
+ token: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,49 @@
1
+ name: Weekly Docs Build
2
+
3
+ on:
4
+ schedule:
5
+ - cron: '0 8 * * 1'
6
+ workflow_dispatch:
7
+
8
+ concurrency:
9
+ group: weekly-docs-${{ github.ref }}
10
+ cancel-in-progress: true
11
+
12
+ jobs:
13
+ docs:
14
+ name: Docs build (${{ matrix.os }}, python ${{ matrix.python-version }})
15
+ runs-on: ${{ matrix.os }}
16
+ strategy:
17
+ fail-fast: false
18
+ matrix:
19
+ os: [ubuntu-24.04, windows-2025, macos-15]
20
+ python-version: ["3.12", "3.13", "3.14"]
21
+ timeout-minutes: 30
22
+
23
+ steps:
24
+ - name: Checkout repo
25
+ uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
26
+
27
+ - name: Set up Python ${{ matrix.python-version }}
28
+ uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
29
+ with:
30
+ python-version: ${{ matrix.python-version }}
31
+ cache: pip
32
+
33
+ - name: Install python dependencies
34
+ run: |
35
+ python -m pip install --upgrade pip
36
+ python -m pip install -e .[docs]
37
+
38
+ - name: Build docs (warnings as errors)
39
+ run: |
40
+ make -C docs clean
41
+ make -C docs html SPHINXOPTS="-W --keep-going"
42
+
43
+ - name: Upload docs artifacts on failure
44
+ if: failure()
45
+ uses: actions/upload-artifact@v4
46
+ with:
47
+ name: docs-${{ matrix.os }}-py${{ matrix.python-version }}-failure
48
+ path: |
49
+ docs/_build/**