CodeEntropy 2.5.0__tar.gz → 2.6.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 (375) hide show
  1. {codeentropy-2.5.0 → codeentropy-2.6.0}/.github/renovate.json +3 -3
  2. {codeentropy-2.5.0 → codeentropy-2.6.0}/.github/workflows/coveralls-main.yaml +1 -1
  3. codeentropy-2.6.0/.github/workflows/dependency-floors.yaml +50 -0
  4. {codeentropy-2.5.0 → codeentropy-2.6.0}/.github/workflows/pr.yaml +20 -7
  5. {codeentropy-2.5.0 → codeentropy-2.6.0}/.github/workflows/release.yaml +3 -3
  6. {codeentropy-2.5.0 → codeentropy-2.6.0}/.github/workflows/update_regression_baselines.yaml +1 -1
  7. {codeentropy-2.5.0 → codeentropy-2.6.0}/.github/workflows/weekly-docs.yaml +1 -1
  8. {codeentropy-2.5.0 → codeentropy-2.6.0}/.github/workflows/weekly-regression.yaml +3 -3
  9. {codeentropy-2.5.0 → codeentropy-2.6.0}/CITATION.cff +2 -2
  10. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/__init__.py +1 -1
  11. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/cli.py +12 -4
  12. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/config/argparse.py +6 -0
  13. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/config/runtime.py +9 -7
  14. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/levels/dihedrals/conformational_state_builder.py +15 -5
  15. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/levels/dihedrals/state_assignment.py +9 -6
  16. {codeentropy-2.5.0 → codeentropy-2.6.0}/PKG-INFO +7 -7
  17. {codeentropy-2.5.0 → codeentropy-2.6.0}/README.md +1 -1
  18. {codeentropy-2.5.0 → codeentropy-2.6.0}/conda-recipe/meta.yaml +16 -16
  19. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/developer_guide.rst +21 -0
  20. {codeentropy-2.5.0 → codeentropy-2.6.0}/pyproject.toml +5 -5
  21. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/benzaldehyde/axes_off.json +4 -4
  22. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/benzaldehyde/combined_forcetorque_false.json +3 -3
  23. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/benzaldehyde/default.json +3 -3
  24. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/benzaldehyde/frame_window.json +2 -2
  25. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/benzaldehyde/grouping_each.json +12 -12
  26. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/benzaldehyde/rad.json +3 -3
  27. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/benzaldehyde/selection_subset.json +3 -3
  28. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/benzene/axes_off.json +4 -4
  29. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/benzene/combined_forcetorque_off.json +3 -3
  30. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/benzene/default.json +4 -4
  31. codeentropy-2.6.0/tests/regression/baselines/benzene/frame_window.json +16 -0
  32. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/benzene/grouping_each.json +22 -22
  33. codeentropy-2.6.0/tests/regression/baselines/benzene/rad.json +16 -0
  34. codeentropy-2.6.0/tests/regression/baselines/benzene/selection_subset.json +16 -0
  35. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/cyclohexane/axes_off.json +4 -4
  36. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/cyclohexane/combined_forcetorque_off.json +4 -4
  37. codeentropy-2.6.0/tests/regression/baselines/cyclohexane/default.json +16 -0
  38. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/cyclohexane/frame_window.json +4 -4
  39. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/cyclohexane/grouping_each.json +20 -20
  40. codeentropy-2.6.0/tests/regression/baselines/cyclohexane/rad.json +16 -0
  41. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/cyclohexane/selection_subset.json +3 -3
  42. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/dna/axes_off.json +6 -6
  43. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/dna/combined_forcetorque_off.json +8 -8
  44. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/dna/default.json +5 -5
  45. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/dna/frame_window.json +6 -6
  46. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/dna/grouping_each.json +5 -5
  47. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/dna/selection_subset.json +5 -5
  48. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/ethyl-acetate/axes_off.json +2 -2
  49. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/ethyl-acetate/combined_forcetorque_off.json +4 -4
  50. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/ethyl-acetate/default.json +2 -2
  51. codeentropy-2.6.0/tests/regression/baselines/ethyl-acetate/frame_window.json +16 -0
  52. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/ethyl-acetate/grouping_each.json +17 -17
  53. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/ethyl-acetate/rad.json +3 -3
  54. codeentropy-2.6.0/tests/regression/baselines/ethyl-acetate/selection_subset.json +16 -0
  55. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/methane/axes_off.json +2 -2
  56. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/methane/combined_forcetorque_off.json +3 -3
  57. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/methane/default.json +3 -3
  58. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/methane/grouping_each.json +27 -27
  59. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/methane/rad.json +3 -3
  60. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/methane/selection_subset.json +3 -3
  61. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/methanol/axes_off.json +4 -4
  62. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/methanol/combined_forcetorque_off.json +4 -4
  63. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/methanol/default.json +3 -3
  64. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/methanol/frame_window.json +3 -3
  65. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/methanol/grouping_each.json +23 -23
  66. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/methanol/rad.json +3 -3
  67. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/methanol/selection_subset.json +4 -4
  68. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/octonol/axes_off.json +1 -1
  69. codeentropy-2.6.0/tests/regression/baselines/octonol/combined_forcetorque_off.json +16 -0
  70. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/octonol/default.json +3 -3
  71. codeentropy-2.6.0/tests/regression/baselines/octonol/frame_window.json +16 -0
  72. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/octonol/grouping_each.json +16 -16
  73. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/octonol/rad.json +3 -3
  74. codeentropy-2.6.0/tests/regression/baselines/octonol/selection_subset.json +16 -0
  75. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/water/axes_off.json +2 -2
  76. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/water/grouping_each.json +17 -17
  77. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/water/rad.json +2 -2
  78. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/cli/test_cli.py +14 -0
  79. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/config/argparse/test_argparse_build_parser.py +13 -0
  80. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/config/runtime/test_show_splash.py +8 -3
  81. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/levels/dihedrals/test_conformational_state_builder.py +6 -6
  82. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/levels/dihedrals/test_state_assignment.py +5 -4
  83. codeentropy-2.5.0/tests/regression/baselines/benzene/frame_window.json +0 -16
  84. codeentropy-2.5.0/tests/regression/baselines/benzene/rad.json +0 -16
  85. codeentropy-2.5.0/tests/regression/baselines/benzene/selection_subset.json +0 -16
  86. codeentropy-2.5.0/tests/regression/baselines/cyclohexane/default.json +0 -16
  87. codeentropy-2.5.0/tests/regression/baselines/cyclohexane/rad.json +0 -16
  88. codeentropy-2.5.0/tests/regression/baselines/ethyl-acetate/frame_window.json +0 -16
  89. codeentropy-2.5.0/tests/regression/baselines/ethyl-acetate/selection_subset.json +0 -16
  90. codeentropy-2.5.0/tests/regression/baselines/octonol/combined_forcetorque_off.json +0 -16
  91. codeentropy-2.5.0/tests/regression/baselines/octonol/frame_window.json +0 -16
  92. codeentropy-2.5.0/tests/regression/baselines/octonol/selection_subset.json +0 -16
  93. {codeentropy-2.5.0 → codeentropy-2.6.0}/.github/CONTRIBUTING.md +0 -0
  94. {codeentropy-2.5.0 → codeentropy-2.6.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  95. {codeentropy-2.5.0 → codeentropy-2.6.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  96. {codeentropy-2.5.0 → codeentropy-2.6.0}/.github/ISSUE_TEMPLATE/documentation.md +0 -0
  97. {codeentropy-2.5.0 → codeentropy-2.6.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  98. {codeentropy-2.5.0 → codeentropy-2.6.0}/.github/ISSUE_TEMPLATE/general_report.md +0 -0
  99. {codeentropy-2.5.0 → codeentropy-2.6.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  100. {codeentropy-2.5.0 → codeentropy-2.6.0}/.github/workflows/daily.yaml +0 -0
  101. {codeentropy-2.5.0 → codeentropy-2.6.0}/.github/workflows/update-copyright-years-in-license-file.yaml +0 -0
  102. {codeentropy-2.5.0 → codeentropy-2.6.0}/.gitignore +0 -0
  103. {codeentropy-2.5.0 → codeentropy-2.6.0}/.pre-commit-config.yaml +0 -0
  104. {codeentropy-2.5.0 → codeentropy-2.6.0}/CODE_OF_CONDUCT.md +0 -0
  105. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/__main__.py +0 -0
  106. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/config/__init__.py +0 -0
  107. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/core/__init__.py +0 -0
  108. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/core/dask_clusters.py +0 -0
  109. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/core/logging.py +0 -0
  110. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/entropy/__init__.py +0 -0
  111. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/entropy/configurational.py +0 -0
  112. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/entropy/graph.py +0 -0
  113. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/entropy/nodes/__init__.py +0 -0
  114. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/entropy/nodes/aggregate.py +0 -0
  115. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/entropy/nodes/configurational.py +0 -0
  116. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/entropy/nodes/orientational.py +0 -0
  117. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/entropy/nodes/vibrational.py +0 -0
  118. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/entropy/orientational.py +0 -0
  119. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/entropy/vibrational.py +0 -0
  120. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/entropy/water.py +0 -0
  121. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/entropy/workflow.py +0 -0
  122. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/levels/__init__.py +0 -0
  123. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/levels/axes.py +0 -0
  124. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/levels/dihedrals/__init__.py +0 -0
  125. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/levels/dihedrals/angle_observations.py +0 -0
  126. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/levels/dihedrals/kernels.py +0 -0
  127. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/levels/dihedrals/peak_detection.py +0 -0
  128. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/levels/dihedrals/topology.py +0 -0
  129. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/levels/execution/__init__.py +0 -0
  130. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/levels/execution/chunks.py +0 -0
  131. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/levels/execution/policy.py +0 -0
  132. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/levels/execution/reducers.py +0 -0
  133. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/levels/execution/scheduler.py +0 -0
  134. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/levels/execution/tasks.py +0 -0
  135. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/levels/forces.py +0 -0
  136. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/levels/graph/__init__.py +0 -0
  137. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/levels/graph/conformation_dag.py +0 -0
  138. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/levels/graph/frame_dag.py +0 -0
  139. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/levels/graph/level_dag.py +0 -0
  140. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/levels/hierarchy.py +0 -0
  141. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/levels/linalg.py +0 -0
  142. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/levels/neighbors.py +0 -0
  143. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/levels/nodes/__init__.py +0 -0
  144. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/levels/nodes/accumulators.py +0 -0
  145. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/levels/nodes/axes_topology.py +0 -0
  146. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/levels/nodes/beads.py +0 -0
  147. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/levels/nodes/covariance.py +0 -0
  148. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/levels/nodes/detect_levels.py +0 -0
  149. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/levels/nodes/detect_molecules.py +0 -0
  150. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/levels/search.py +0 -0
  151. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/molecules/__init__.py +0 -0
  152. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/molecules/grouping.py +0 -0
  153. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/results/__init__.py +0 -0
  154. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/results/reporter.py +0 -0
  155. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/trajectory/__init__.py +0 -0
  156. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/trajectory/frames.py +0 -0
  157. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/trajectory/mda.py +0 -0
  158. {codeentropy-2.5.0 → codeentropy-2.6.0}/CodeEntropy/trajectory/source.py +0 -0
  159. {codeentropy-2.5.0 → codeentropy-2.6.0}/LICENSE +0 -0
  160. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/Makefile +0 -0
  161. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/README.md +0 -0
  162. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/_static/README.md +0 -0
  163. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/_static/custom.css +0 -0
  164. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/_static/logos/biosim-codeentropy_logo_dark.png +0 -0
  165. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/_static/logos/biosim-codeentropy_logo_light.png +0 -0
  166. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/_templates/README.md +0 -0
  167. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.cli.rst +0 -0
  168. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.config.argparse.rst +0 -0
  169. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.config.rst +0 -0
  170. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.config.runtime.rst +0 -0
  171. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.core.dask_clusters.rst +0 -0
  172. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.core.logging.rst +0 -0
  173. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.core.rst +0 -0
  174. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.entropy.configurational.rst +0 -0
  175. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.entropy.graph.rst +0 -0
  176. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.entropy.nodes.aggregate.rst +0 -0
  177. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.entropy.nodes.configurational.rst +0 -0
  178. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.entropy.nodes.orientational.rst +0 -0
  179. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.entropy.nodes.rst +0 -0
  180. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.entropy.nodes.vibrational.rst +0 -0
  181. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.entropy.orientational.rst +0 -0
  182. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.entropy.rst +0 -0
  183. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.entropy.vibrational.rst +0 -0
  184. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.entropy.water.rst +0 -0
  185. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.entropy.workflow.rst +0 -0
  186. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.levels.axes.rst +0 -0
  187. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.levels.dihedrals.angle_observations.rst +0 -0
  188. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.levels.dihedrals.conformational_state_builder.rst +0 -0
  189. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.levels.dihedrals.kernels.rst +0 -0
  190. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.levels.dihedrals.peak_detection.rst +0 -0
  191. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.levels.dihedrals.rst +0 -0
  192. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.levels.dihedrals.state_assignment.rst +0 -0
  193. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.levels.dihedrals.topology.rst +0 -0
  194. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.levels.execution.chunks.rst +0 -0
  195. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.levels.execution.policy.rst +0 -0
  196. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.levels.execution.reducers.rst +0 -0
  197. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.levels.execution.rst +0 -0
  198. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.levels.execution.scheduler.rst +0 -0
  199. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.levels.execution.tasks.rst +0 -0
  200. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.levels.forces.rst +0 -0
  201. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.levels.graph.conformation_dag.rst +0 -0
  202. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.levels.graph.frame_dag.rst +0 -0
  203. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.levels.graph.level_dag.rst +0 -0
  204. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.levels.graph.rst +0 -0
  205. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.levels.hierarchy.rst +0 -0
  206. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.levels.linalg.rst +0 -0
  207. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.levels.neighbors.rst +0 -0
  208. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.levels.nodes.accumulators.rst +0 -0
  209. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.levels.nodes.axes_topology.rst +0 -0
  210. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.levels.nodes.beads.rst +0 -0
  211. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.levels.nodes.covariance.rst +0 -0
  212. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.levels.nodes.detect_levels.rst +0 -0
  213. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.levels.nodes.detect_molecules.rst +0 -0
  214. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.levels.nodes.rst +0 -0
  215. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.levels.rst +0 -0
  216. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.levels.search.rst +0 -0
  217. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.molecules.grouping.rst +0 -0
  218. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.molecules.rst +0 -0
  219. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.results.reporter.rst +0 -0
  220. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.results.rst +0 -0
  221. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.rst +0 -0
  222. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.trajectory.frames.rst +0 -0
  223. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.trajectory.mda.rst +0 -0
  224. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.trajectory.rst +0 -0
  225. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/CodeEntropy.trajectory.source.rst +0 -0
  226. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/api/modules.rst +0 -0
  227. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/conf.py +0 -0
  228. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/config.yaml +0 -0
  229. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/faq.rst +0 -0
  230. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/getting_started.rst +0 -0
  231. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/index.rst +0 -0
  232. {codeentropy-2.5.0 → codeentropy-2.6.0}/docs/science.rst +0 -0
  233. {codeentropy-2.5.0 → codeentropy-2.6.0}/readthedocs.yml +0 -0
  234. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/__init__.py +0 -0
  235. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/methane/frame_window.json +0 -0
  236. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/water/combined_forcetorque_off.json +0 -0
  237. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/water/default.json +0 -0
  238. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/water/frame_window.json +0 -0
  239. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/water/selection_subset.json +0 -0
  240. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/baselines/water/water_off.json +0 -0
  241. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/cases.py +0 -0
  242. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/benzaldehyde/axes_off.yaml +0 -0
  243. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/benzaldehyde/combined_forcetorque_false.yaml +0 -0
  244. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/benzaldehyde/default.yaml +0 -0
  245. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/benzaldehyde/frame_window.yaml +0 -0
  246. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/benzaldehyde/grouping_each.yaml +0 -0
  247. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/benzaldehyde/rad.yaml +0 -0
  248. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/benzaldehyde/selection_subset.yaml +0 -0
  249. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/benzene/axes_off.yaml +0 -0
  250. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/benzene/combined_forcetorque_off.yaml +0 -0
  251. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/benzene/default.yaml +0 -0
  252. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/benzene/frame_window.yaml +0 -0
  253. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/benzene/grouping_each.yaml +0 -0
  254. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/benzene/rad.yaml +0 -0
  255. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/benzene/selection_subset.yaml +0 -0
  256. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/cyclohexane/axes_off.yaml +0 -0
  257. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/cyclohexane/combined_forcetorque_off.yaml +0 -0
  258. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/cyclohexane/default.yaml +0 -0
  259. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/cyclohexane/frame_window.yaml +0 -0
  260. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/cyclohexane/grouping_each.yaml +0 -0
  261. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/cyclohexane/rad.yaml +0 -0
  262. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/cyclohexane/selection_subset.yaml +0 -0
  263. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/dna/axes_off.yaml +0 -0
  264. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/dna/combined_forcetorque_off.yaml +0 -0
  265. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/dna/default.yaml +0 -0
  266. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/dna/frame_window.yaml +0 -0
  267. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/dna/grouping_each.yaml +0 -0
  268. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/dna/selection_subset.yaml +0 -0
  269. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/ethyl-acetate/axes_off.yaml +0 -0
  270. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/ethyl-acetate/combined_forcetorque_off.yaml +0 -0
  271. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/ethyl-acetate/default.yaml +0 -0
  272. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/ethyl-acetate/frame_window.yaml +0 -0
  273. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/ethyl-acetate/grouping_each.yaml +0 -0
  274. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/ethyl-acetate/rad.yaml +0 -0
  275. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/ethyl-acetate/selection_subset.yaml +0 -0
  276. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/methane/axes_off.yaml +0 -0
  277. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/methane/combined_forcetorque_off.yaml +0 -0
  278. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/methane/default.yaml +0 -0
  279. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/methane/frame_window.yaml +0 -0
  280. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/methane/grouping_each.yaml +0 -0
  281. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/methane/rad.yaml +0 -0
  282. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/methane/selection_subset.yaml +0 -0
  283. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/methanol/axes_off.yaml +0 -0
  284. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/methanol/combined_forcetorque_off.yaml +0 -0
  285. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/methanol/default.yaml +0 -0
  286. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/methanol/frame_window.yaml +0 -0
  287. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/methanol/grouping_each.yaml +0 -0
  288. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/methanol/rad.yaml +0 -0
  289. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/methanol/selection_subset.yaml +0 -0
  290. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/octonol/axes_off.yaml +0 -0
  291. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/octonol/combined_forcetorque_off.yaml +0 -0
  292. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/octonol/default.yaml +0 -0
  293. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/octonol/frame_window.yaml +0 -0
  294. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/octonol/grouping_each.yaml +0 -0
  295. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/octonol/rad.yaml +0 -0
  296. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/octonol/selection_subset.yaml +0 -0
  297. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/water/axes_off.yaml +0 -0
  298. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/water/combined_forcetorque_off.yaml +0 -0
  299. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/water/default.yaml +0 -0
  300. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/water/frame_window.yaml +0 -0
  301. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/water/grouping_each.yaml +0 -0
  302. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/water/rad.yaml +0 -0
  303. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/water/selection_subset.yaml +0 -0
  304. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/configs/water/water_off.yaml +0 -0
  305. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/conftest.py +0 -0
  306. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/helpers.py +0 -0
  307. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/list_systems.py +0 -0
  308. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/regression/test_regression.py +0 -0
  309. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/cli/test___main__.py +0 -0
  310. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/config/argparse/conftest.py +0 -0
  311. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/config/argparse/test_argparse_load_config.py +0 -0
  312. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/config/argparse/test_argparse_resolve.py +0 -0
  313. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/config/argparse/test_argparse_str2bool.py +0 -0
  314. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/config/argparse/test_argparse_validate_inputs.py +0 -0
  315. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/config/runtime/conftest.py +0 -0
  316. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/config/runtime/test_build_universe_branches.py +0 -0
  317. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/config/runtime/test_citation_data.py +0 -0
  318. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/config/runtime/test_create_job_folder.py +0 -0
  319. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/config/runtime/test_print_args_table.py +0 -0
  320. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/config/runtime/test_required_args.py +0 -0
  321. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/config/runtime/test_run_entropy_workflow_branches.py +0 -0
  322. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/config/runtime/test_runtime_properties.py +0 -0
  323. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/config/runtime/test_unit_conversions.py +0 -0
  324. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/config/runtime/test_universe_io.py +0 -0
  325. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/core/dask_clusters/test_dask_clusters.py +0 -0
  326. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/core/logging/conftest.py +0 -0
  327. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/core/logging/test_configure_loggers.py +0 -0
  328. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/core/logging/test_error_filter.py +0 -0
  329. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/core/logging/test_export_console.py +0 -0
  330. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/core/logging/test_get_console_singleton.py +0 -0
  331. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/core/logging/test_handlers_setup.py +0 -0
  332. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/core/logging/test_set_level.py +0 -0
  333. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/entropy/conftest.py +0 -0
  334. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/entropy/nodes/test_aggregate_node.py +0 -0
  335. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/entropy/nodes/test_configurational_node.py +0 -0
  336. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/entropy/nodes/test_orientational_node.py +0 -0
  337. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/entropy/nodes/test_vibrational_node.py +0 -0
  338. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/entropy/test_configurational_edges.py +0 -0
  339. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/entropy/test_configurational_entropy_math.py +0 -0
  340. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/entropy/test_graph.py +0 -0
  341. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/entropy/test_orientational_entropy.py +0 -0
  342. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/entropy/test_vibrational_entropy_math.py +0 -0
  343. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/entropy/test_water_entropy.py +0 -0
  344. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/entropy/test_workflow.py +0 -0
  345. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/levels/conftest.py +0 -0
  346. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/levels/dihedrals/test_angle_observations.py +0 -0
  347. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/levels/dihedrals/test_kernels.py +0 -0
  348. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/levels/dihedrals/test_peak_detection.py +0 -0
  349. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/levels/dihedrals/test_topology.py +0 -0
  350. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/levels/execution/test_chunks.py +0 -0
  351. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/levels/execution/test_policy.py +0 -0
  352. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/levels/execution/test_reducers.py +0 -0
  353. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/levels/execution/test_scheduler.py +0 -0
  354. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/levels/execution/test_tasks.py +0 -0
  355. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/levels/nodes/test_axes_topology.py +0 -0
  356. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/levels/nodes/test_beads_node.py +0 -0
  357. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/levels/nodes/test_covariance_node.py +0 -0
  358. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/levels/nodes/test_detect_levels_node.py +0 -0
  359. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/levels/nodes/test_detect_molecules_node.py +0 -0
  360. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/levels/nodes/test_init_covariance_accumulators_node.py +0 -0
  361. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/levels/test_axes.py +0 -0
  362. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/levels/test_conformation_dag.py +0 -0
  363. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/levels/test_forces_force_torque_calculator.py +0 -0
  364. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/levels/test_frame_graph.py +0 -0
  365. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/levels/test_hierarchy_builder.py +0 -0
  366. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/levels/test_level_dag.py +0 -0
  367. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/levels/test_linalg_matrix_utils.py +0 -0
  368. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/levels/test_mda_universe_operations.py +0 -0
  369. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/levels/test_neighbors.py +0 -0
  370. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/levels/test_search.py +0 -0
  371. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/molecules/test_grouping.py +0 -0
  372. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/results/test_reporter.py +0 -0
  373. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/trajectory/test_frames.py +0 -0
  374. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/CodeEntropy/trajectory/test_source.py +0 -0
  375. {codeentropy-2.5.0 → codeentropy-2.6.0}/tests/unit/conftest.py +0 -0
@@ -7,7 +7,7 @@
7
7
  "timezone": "Europe/London",
8
8
  "schedule": ["after 9am and before 5pm every weekday"],
9
9
  "dependencyDashboard": true,
10
- "assignees": ["harryswift01", "jimboid"],
10
+ "reviewers": ["harryswift01", "jimboid"],
11
11
  "minimumReleaseAge": "3 days",
12
12
  "packageRules": [
13
13
  {
@@ -16,14 +16,14 @@
16
16
  "addLabels": ["ci", "dependencies"]
17
17
  },
18
18
  {
19
- "matchManagers": ["pep621"],
19
+ "matchManagers": ["poetry", "pep621"],
20
20
  "matchDepTypes": ["project.dependencies"],
21
21
  "rangeStrategy": "widen",
22
22
  "groupName": "Software Production Dependencies",
23
23
  "addLabels": ["python", "production-deps"]
24
24
  },
25
25
  {
26
- "matchManagers": ["pep621"],
26
+ "matchManagers": ["poetry", "pep621"],
27
27
  "matchDepTypes": ["project.optional-dependencies", "build-system.requires"],
28
28
  "rangeStrategy": "replace",
29
29
  "groupName": "Python CI and Dev Tools",
@@ -31,7 +31,7 @@ jobs:
31
31
  - name: Set up Python 3.14
32
32
  uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
33
33
  with:
34
- python-version: "3.14"
34
+ python-version: "3.15"
35
35
 
36
36
  - name: Install testing dependencies
37
37
  run: |
@@ -0,0 +1,50 @@
1
+ name: Dependency Floors
2
+
3
+ on:
4
+ schedule:
5
+ - cron: '0 8 * * 1'
6
+ workflow_dispatch:
7
+
8
+ permissions:
9
+ contents: read
10
+
11
+ concurrency:
12
+ group: dependency-floors-${{ github.ref }}
13
+ cancel-in-progress: true
14
+
15
+ jobs:
16
+ lowest:
17
+ name: Lowest dependencies (${{ matrix.os }}, py${{ matrix.python-version }})
18
+ runs-on: ${{ matrix.os }}
19
+ timeout-minutes: 30
20
+
21
+ strategy:
22
+ fail-fast: false
23
+ matrix:
24
+ os: [ubuntu-26.04, macos-26, windows-2025-vs2026]
25
+ python-version: ["3.12", "3.13", "3.14"]
26
+
27
+ steps:
28
+ - name: Checkout
29
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
30
+
31
+ - name: Set up Python ${{ matrix.python-version }}
32
+ uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
33
+ with:
34
+ python-version: ${{ matrix.python-version }}
35
+
36
+ - name: Install uv
37
+ run: |
38
+ python -m pip install --upgrade pip
39
+ python -m pip install uv
40
+
41
+ - name: Resolve lowest dependencies as wheels
42
+ run: |
43
+ uv pip compile pyproject.toml --resolution lowest-direct --only-binary :all: --output-file lowest.txt
44
+ cat lowest.txt
45
+
46
+ - name: Install lowest dependencies
47
+ run: uv pip install --system --resolution lowest-direct -e ".[testing]"
48
+
49
+ - name: Run unit tests
50
+ run: python -m pytest tests/unit
@@ -38,6 +38,19 @@ jobs:
38
38
  - name: Pytest unit • ${{ matrix.os }}, ${{ matrix.python-version }}
39
39
  run: python -m pytest tests/unit
40
40
 
41
+ - name: Install uv
42
+ run: python -m pip install uv
43
+
44
+ - name: Resolve lowest dependencies as wheels
45
+ run: |
46
+ uv pip compile pyproject.toml --resolution lowest-direct --only-binary :all: --output-file lowest.txt
47
+
48
+ - name: Install lowest dependencies
49
+ run: uv pip install --system --reinstall --resolution lowest-direct -e ".[testing]"
50
+
51
+ - name: Pytest unit at lowest dependencies • ${{ matrix.os }}, ${{ matrix.python-version }}
52
+ run: python -m pytest tests/unit
53
+
41
54
  discover-systems:
42
55
  name: Discover regression systems
43
56
  runs-on: ubuntu-26.04
@@ -51,7 +64,7 @@ jobs:
51
64
  - name: Set up Python 3.14
52
65
  uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
53
66
  with:
54
- python-version: "3.14"
67
+ python-version: "3.15"
55
68
 
56
69
  - name: Install testing dependencies
57
70
  run: |
@@ -82,7 +95,7 @@ jobs:
82
95
  - name: Set up Python 3.14
83
96
  uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
84
97
  with:
85
- python-version: "3.14"
98
+ python-version: "3.15"
86
99
 
87
100
  - name: Install testing dependencies
88
101
  run: |
@@ -99,7 +112,7 @@ jobs:
99
112
 
100
113
  - name: Upload artifacts on failure
101
114
  if: failure()
102
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
115
+ uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
103
116
  with:
104
117
  name: quick-regression-failure-${{ matrix.system }}
105
118
  path: |
@@ -119,7 +132,7 @@ jobs:
119
132
  - name: Set up Python 3.14
120
133
  uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
121
134
  with:
122
- python-version: "3.14"
135
+ python-version: "3.15"
123
136
 
124
137
  - name: Install docs dependencies
125
138
  run: |
@@ -133,7 +146,7 @@ jobs:
133
146
 
134
147
  - name: Upload docs artifact
135
148
  if: always()
136
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
149
+ uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
137
150
  with:
138
151
  name: docs-html
139
152
  path: docs/_build/html
@@ -151,7 +164,7 @@ jobs:
151
164
  - name: Set up Python 3.14
152
165
  uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
153
166
  with:
154
- python-version: "3.14"
167
+ python-version: "3.15"
155
168
 
156
169
  - name: Install pre-commit dependencies
157
170
  run: |
@@ -186,7 +199,7 @@ jobs:
186
199
  - name: Set up Python 3.14
187
200
  uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
188
201
  with:
189
- python-version: "3.14"
202
+ python-version: "3.15"
190
203
 
191
204
  - name: Install testing dependencies
192
205
  run: |
@@ -23,7 +23,7 @@ jobs:
23
23
  - name: Set up Python
24
24
  uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
25
25
  with:
26
- python-version: 3.14.8
26
+ python-version: 3.15.0
27
27
 
28
28
  - name: Get latest release from pip
29
29
  id: latestreleased
@@ -169,7 +169,7 @@ jobs:
169
169
  - name: Set up Python
170
170
  uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
171
171
  with:
172
- python-version: 3.14.8
172
+ python-version: 3.15.0
173
173
 
174
174
  - name: Install flit
175
175
  run: |
@@ -203,7 +203,7 @@ jobs:
203
203
  uses: conda-incubator/setup-miniconda@be893c923ea9cf1cf7cd510fbdde27c7e18cbdcb # v4.1.0
204
204
  with:
205
205
  miniforge-variant: Miniforge3
206
- python-version: "3.14"
206
+ python-version: "3.15"
207
207
  auto-activate: true
208
208
  activate-environment: base
209
209
  conda-remove-defaults: true
@@ -25,7 +25,7 @@ jobs:
25
25
  - name: Set up Python
26
26
  uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
27
27
  with:
28
- python-version: "3.14"
28
+ python-version: "3.15"
29
29
 
30
30
  - name: Install testing dependencies
31
31
  run: |
@@ -41,7 +41,7 @@ jobs:
41
41
 
42
42
  - name: Upload docs artifacts on failure
43
43
  if: failure()
44
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
44
+ uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
45
45
  with:
46
46
  name: docs-${{ matrix.os }}-py${{ matrix.python-version }}-failure
47
47
  path: |
@@ -24,7 +24,7 @@ jobs:
24
24
  - name: Set up Python 3.14
25
25
  uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
26
26
  with:
27
- python-version: "3.14"
27
+ python-version: "3.15"
28
28
 
29
29
  - name: Install testing dependencies
30
30
  run: |
@@ -55,7 +55,7 @@ jobs:
55
55
  - name: Set up Python 3.14
56
56
  uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
57
57
  with:
58
- python-version: "3.14"
58
+ python-version: "3.15"
59
59
 
60
60
  - name: Install testing dependencies
61
61
  run: |
@@ -72,7 +72,7 @@ jobs:
72
72
 
73
73
  - name: Upload regression artifacts (failure)
74
74
  if: failure()
75
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
75
+ uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
76
76
  with:
77
77
  name: regression-${{ matrix.system }}-artifacts
78
78
  path: |
@@ -76,5 +76,5 @@ keywords:
76
76
  - biomolecular simulations
77
77
  - protein flexibility
78
78
  license: MIT
79
- version: 2.5.0
80
- date-released: '2026-10-09'
79
+ version: 2.6.0
80
+ date-released: '2026-10-14'
@@ -8,4 +8,4 @@ entropy estimates, supporting a wide range of applications in molecular simulati
8
8
  and statistical mechanics.
9
9
  """
10
10
 
11
- __version__ = "2.5.0"
11
+ __version__ = "2.6.0"
@@ -4,16 +4,18 @@ This module provides the CLI entry point used to run the multiscale cell
4
4
  correlation entropy workflow.
5
5
 
6
6
  The entry point is intentionally small and only responsible for:
7
- 1) Creating a job folder.
8
- 2) Constructing a CodeEntropyRunner.
9
- 3) Executing the entropy workflow.
10
- 4) Handling fatal errors with a non-zero exit code.
7
+ 1) Handling informational flags such as ``--version``.
8
+ 2) Creating a job folder.
9
+ 3) Constructing a CodeEntropyRunner.
10
+ 4) Executing the entropy workflow.
11
+ 5) Handling fatal errors with a non-zero exit code.
11
12
  """
12
13
 
13
14
  from __future__ import annotations
14
15
 
15
16
  import logging
16
17
 
18
+ from CodeEntropy.config.argparse import ConfigResolver
17
19
  from CodeEntropy.config.runtime import CodeEntropyRunner
18
20
 
19
21
  logger = logging.getLogger(__name__)
@@ -22,9 +24,15 @@ logger = logging.getLogger(__name__)
22
24
  def main() -> None:
23
25
  """Run the entropy workflow.
24
26
 
27
+ Arguments are parsed before any side effects so that informational flags such
28
+ as ``--version`` and ``--help`` exit without creating a job folder or
29
+ rendering the splash screen.
30
+
25
31
  Raises:
26
32
  SystemExit: Exits with status code 1 on any unhandled exception.
27
33
  """
34
+ ConfigResolver().build_parser().parse_known_args()
35
+
28
36
  folder = CodeEntropyRunner.create_job_folder()
29
37
 
30
38
  try:
@@ -31,6 +31,7 @@ from typing import Any
31
31
 
32
32
  import yaml
33
33
 
34
+ from CodeEntropy import __version__
34
35
  from CodeEntropy.core.dask_clusters import HPCDaskManager
35
36
 
36
37
  logger = logging.getLogger(__name__)
@@ -318,6 +319,11 @@ class ConfigResolver:
318
319
  parser = argparse.ArgumentParser(
319
320
  description="CodeEntropy: entropy calculation with the MCC method."
320
321
  )
322
+ parser.add_argument(
323
+ "--version",
324
+ action="version",
325
+ version=f"CodeEntropy {__version__}",
326
+ )
321
327
 
322
328
  for name, spec in self._arg_specs.items():
323
329
  arg_name = f"--{name}"
@@ -32,6 +32,7 @@ from rich.rule import Rule
32
32
  from rich.table import Table
33
33
  from rich.text import Text
34
34
 
35
+ from CodeEntropy import __version__
35
36
  from CodeEntropy.config.argparse import ConfigResolver
36
37
  from CodeEntropy.core.dask_clusters import HPCDaskManager
37
38
  from CodeEntropy.core.logging import LoggingConfig
@@ -135,20 +136,21 @@ class CodeEntropyRunner:
135
136
  return None
136
137
 
137
138
  def show_splash(self) -> None:
138
- """Render a Rich splash screen with optional citation metadata."""
139
+ """Render a Rich splash screen.
140
+
141
+ The version shown is that of the locally installed package. Remaining
142
+ metadata (authors, description, URL) comes from the online citation file
143
+ when it is reachable.
144
+ """
139
145
  citation = self.load_citation_data()
146
+ version_text = Align.center(Text(f"Version {__version__}", style="green"))
140
147
 
141
148
  if citation:
142
149
  ascii_title = text2art(citation.get("title", "CodeEntropy"))
143
150
  ascii_render = Align.center(Text(ascii_title, style="bold white"))
144
151
 
145
- version = citation.get("version", "?")
146
- release_date = citation.get("date-released", "?")
147
152
  url = citation.get("url", citation.get("repository-code", ""))
148
153
 
149
- version_text = Align.center(
150
- Text(f"Version {version} | Released {release_date}", style="green")
151
- )
152
154
  url_text = Align.center(Text(url, style="blue underline"))
153
155
 
154
156
  abstract = citation.get("abstract", "No description available.")
@@ -193,7 +195,7 @@ class CodeEntropyRunner:
193
195
  else:
194
196
  ascii_title = text2art("CodeEntropy")
195
197
  ascii_render = Align.center(Text(ascii_title, style="bold white"))
196
- splash_content = Group(ascii_render)
198
+ splash_content = Group(ascii_render, Rule(style="cyan"), version_text)
197
199
 
198
200
  splash_panel = Panel(
199
201
  splash_content,
@@ -46,7 +46,12 @@ class ConformationStateBuilder(ConformationPeakDetector, ConformationStateAssign
46
46
  frame_selection: FrameSelection,
47
47
  progress: _RichProgressSink | None = None,
48
48
  chunk_size: int | None = None,
49
- ) -> tuple[dict[UAKey, list[str]], list[list[str]], dict[UAKey, int], list[int]]:
49
+ ) -> tuple[
50
+ dict[UAKey, list[str]],
51
+ dict[int, list[str]],
52
+ dict[UAKey, int],
53
+ dict[int, int],
54
+ ]:
50
55
  """Build conformational state labels from selected trajectory frames.
51
56
 
52
57
  Args:
@@ -87,7 +92,12 @@ class ConformationStateBuilder(ConformationPeakDetector, ConformationStateAssign
87
92
  frame_selection: FrameSelection,
88
93
  chunk_size: int,
89
94
  progress: _RichProgressSink | None = None,
90
- ) -> tuple[dict[UAKey, list[str]], list[list[str]], dict[UAKey, int], list[int]]:
95
+ ) -> tuple[
96
+ dict[UAKey, list[str]],
97
+ dict[int, list[str]],
98
+ dict[UAKey, int],
99
+ dict[int, int],
100
+ ]:
91
101
  """Build conformational states with serial frame-chunk map-reduce.
92
102
 
93
103
  Args:
@@ -108,11 +118,10 @@ class ConformationStateBuilder(ConformationPeakDetector, ConformationStateAssign
108
118
  if chunk_size < 1:
109
119
  raise ValueError("chunk_size must be >= 1")
110
120
 
111
- number_groups = len(groups)
112
121
  states_ua: dict[UAKey, list[str]] = {}
113
- states_res: list[list[str]] = [[] for _ in range(number_groups)]
122
+ states_res: dict[int, list[str]] = {}
114
123
  flexible_ua: dict[UAKey, int] = {}
115
- flexible_res: list[int] = []
124
+ flexible_res: dict[int, int] = {}
116
125
 
117
126
  task: TaskID | None = None
118
127
  if progress is not None:
@@ -186,6 +195,7 @@ class ConformationStateBuilder(ConformationPeakDetector, ConformationStateAssign
186
195
  state_data = self._reduce_state_partials(state_partials)
187
196
 
188
197
  self._merge_group_state_data(
198
+ group_id=group_id,
189
199
  state_data=state_data,
190
200
  states_ua=states_ua,
191
201
  states_res=states_res,
@@ -170,20 +170,23 @@ class ConformationStateAssigner:
170
170
 
171
171
  @staticmethod
172
172
  def _merge_group_state_data(
173
+ group_id: int,
173
174
  state_data: ConformationStateData,
174
175
  states_ua: dict[UAKey, list[str]],
175
- states_res: list[list[str]],
176
+ states_res: dict[int, list[str]],
176
177
  flexible_ua: dict[UAKey, int],
177
- flexible_res: list[int],
178
+ flexible_res: dict[int, int],
178
179
  ) -> None:
179
180
  """Merge one group's state data into final output accumulators.
180
181
 
181
182
  Args:
183
+ group_id: Id of the group the state data belongs to.
182
184
  state_data: Serial conformational state data for one group.
183
185
  states_ua: UA state accumulator to mutate.
184
- states_res: Residue state accumulator to mutate.
186
+ states_res: Residue state accumulator, keyed by group id, to mutate.
185
187
  flexible_ua: UA flexible-dihedral accumulator to mutate.
186
- flexible_res: Residue flexible-dihedral accumulator to mutate.
188
+ flexible_res: Residue flexible-dihedral accumulator, keyed by group id,
189
+ to mutate.
187
190
 
188
191
  Returns:
189
192
  None. Mutates the provided accumulators.
@@ -199,8 +202,8 @@ class ConformationStateAssigner:
199
202
  state_data.flexible_ua_updates[key],
200
203
  )
201
204
 
202
- states_res.append(state_data.state_res)
203
- flexible_res.append(state_data.flex_res)
205
+ states_res[group_id] = state_data.state_res
206
+ flexible_res[group_id] = state_data.flex_res
204
207
 
205
208
  def _process_conformations_from_angles(
206
209
  self,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: CodeEntropy
3
- Version: 2.5.0
3
+ Version: 2.6.0
4
4
  Summary: CodeEntropy is a Python package for computing the configurational entropy of macromolecular systems using forces sampled from molecular dynamics (MD) simulations. It implements the multiscale cell correlation method to provide accurate and efficient entropy estimates, supporting a wide range of applications in molecular simulation and statistical mechanics.
5
5
  Keywords: entropy,macromolecular systems,MD simulation
6
6
  Author-email: Arghya 'Argo' Chakravorty <arghyac@umich.edu>, Donald Chung-HK <donald.chung@stfc.ac.uk>, Sarah Fegan <sarah.fegan@stfc.ac.uk>, James Gebbie-Rayet <james.gebbie@stfc.ac.uk>, Sarah Harris <sarah.harris@sheffield.ac.uk>, Richard Henchman <rhen7213@uni.sydney.edu.au>, Jonathan Higham <j.higham4@lancaster.ac.uk>, Jas Kalayan <jas.kalayan@stfc.ac.uk>, Ioana Papa <iapapa1@sheffield.ac.uk>
@@ -16,21 +16,21 @@ Classifier: License :: OSI Approved :: MIT License
16
16
  Classifier: Natural Language :: English
17
17
  Classifier: Development Status :: 5 - Production/Stable
18
18
  License-File: LICENSE
19
- Requires-Dist: numpy>=2.3.2,<2.5.0
19
+ Requires-Dist: numpy>=2.3.5,<2.6.0
20
20
  Requires-Dist: mdanalysis>=2.10,<3.0
21
21
  Requires-Dist: pandas>=2.3.3,<4.0
22
- Requires-Dist: psutil>=5.9.4,<8.0
22
+ Requires-Dist: psutil>=7.1.3,<8.0
23
23
  Requires-Dist: PyYAML>=6.0.3,<7.0
24
24
  Requires-Dist: rich>=13.0.0,<16.0
25
25
  Requires-Dist: art>=5.0,<7.0
26
26
  Requires-Dist: networkx>=2.8,<4.0
27
27
  Requires-Dist: waterEntropy>=2,<3.0
28
28
  Requires-Dist: requests>=2.32.2,<3.0
29
- Requires-Dist: rdkit>=2025.3.4,<2026
29
+ Requires-Dist: rdkit>=2025.3.4,<2027
30
30
  Requires-Dist: numba>=0.63.0,<0.70
31
- Requires-Dist: dask>=2025.4.0,<2027.1.0
31
+ Requires-Dist: dask>=2025.7.0,<2027.1.0
32
32
  Requires-Dist: dask-jobqueue>=0.9.0,<1.0
33
- Requires-Dist: distributed>=2025.4.0,<2027.1.0
33
+ Requires-Dist: distributed>=2025.7.0,<2027.1.0
34
34
  Requires-Dist: sphinx>=8.0.0,<10.0 ; extra == "docs"
35
35
  Requires-Dist: nbsphinx>=0.9.3,<1.0 ; extra == "docs"
36
36
  Requires-Dist: sphinx_copybutton>=0.5,<1.0 ; extra == "docs"
@@ -56,7 +56,7 @@ CodeEntropy
56
56
 
57
57
  | Category | Badges |
58
58
  |----------------|--------|
59
- | **Build** | [![PR Checks](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/pr.yaml/badge.svg)](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/pr.yaml) [![Daily Tests](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/daily.yaml/badge.svg)](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/daily.yaml) |
59
+ | **Build** | [![PR Checks](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/pr.yaml/badge.svg)](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/pr.yaml) [![Daily Tests](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/daily.yaml/badge.svg)](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/daily.yaml) [![Dependency Floors](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/dependency-floors.yaml/badge.svg)](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/dependency-floors.yaml) |
60
60
  | **Regression** | [![Weekly Regression](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/weekly-regression.yaml/badge.svg)](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/weekly-regression.yaml) |
61
61
  | **Documentation** | [![Weekly Docs](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/weekly-docs.yaml/badge.svg)](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/weekly-docs.yaml) [![Docs - Status](https://app.readthedocs.org/projects/codeentropy/badge/?version=latest)](https://codeentropy.readthedocs.io/en/latest/?badge=latest) |
62
62
  | **Citation** | [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.17570721.svg)](https://doi.org/10.5281/zenodo.17570721) |
@@ -3,7 +3,7 @@ CodeEntropy
3
3
 
4
4
  | Category | Badges |
5
5
  |----------------|--------|
6
- | **Build** | [![PR Checks](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/pr.yaml/badge.svg)](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/pr.yaml) [![Daily Tests](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/daily.yaml/badge.svg)](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/daily.yaml) |
6
+ | **Build** | [![PR Checks](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/pr.yaml/badge.svg)](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/pr.yaml) [![Daily Tests](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/daily.yaml/badge.svg)](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/daily.yaml) [![Dependency Floors](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/dependency-floors.yaml/badge.svg)](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/dependency-floors.yaml) |
7
7
  | **Regression** | [![Weekly Regression](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/weekly-regression.yaml/badge.svg)](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/weekly-regression.yaml) |
8
8
  | **Documentation** | [![Weekly Docs](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/weekly-docs.yaml/badge.svg)](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/weekly-docs.yaml) [![Docs - Status](https://app.readthedocs.org/projects/codeentropy/badge/?version=latest)](https://codeentropy.readthedocs.io/en/latest/?badge=latest) |
9
9
  | **Citation** | [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.17570721.svg)](https://doi.org/10.5281/zenodo.17570721) |
@@ -1,5 +1,12 @@
1
1
  {% set name = "codeentropy" %}
2
2
  {% set version = "0.0.0" %}
3
+ {% set pyproject = load_file_data("../pyproject.toml", from_recipe_dir=True) %}
4
+ {% set pip_only = namespace(water_entropy="") %}
5
+ {% for dependency in pyproject["project"]["dependencies"] %}
6
+ {% if dependency.startswith("waterEntropy") %}
7
+ {% set pip_only.water_entropy = dependency %}
8
+ {% endif %}
9
+ {% endfor %}
3
10
 
4
11
  package:
5
12
  name: {{ name }}
@@ -12,7 +19,7 @@ build:
12
19
  noarch: python
13
20
  script: |
14
21
  python -m pip install . -vv --no-deps
15
- PIP_NO_INDEX=0 python -m pip install -vv --index-url https://pypi.org/simple "waterEntropy>=2,<3.0"
22
+ PIP_NO_INDEX=0 python -m pip install -vv --index-url https://pypi.org/simple "{{ pip_only.water_entropy }}"
16
23
  entry_points:
17
24
  - CodeEntropy=CodeEntropy.cli:main
18
25
 
@@ -22,21 +29,14 @@ requirements:
22
29
  - pip
23
30
  - flit-core >=4,<5
24
31
  run:
25
- - python >=3.12
26
- - numpy >=2.3.2,<2.5.0
27
- - mdanalysis >=2.10,<3.0
28
- - pandas >=2.3.3,<4.0
29
- - psutil >=5.9.4,<8.0
30
- - pyyaml >=6.0.3,<7.0
31
- - rich >=13.0.0,<16.0
32
- - python-art >=5.0,<7.0
33
- - networkx >=2.8,<4.0
34
- - requests >=2.32.2,<3.0
35
- - rdkit >=2025.3.4,<2026
36
- - dask >=2025.4.0,<2027.1.0
37
- - distributed >=2025.4.0,<2027.1.0
38
- - dask-jobqueue >=0.9.0,<1.0
39
- - numba >=0.63.0,<0.70
32
+ - python {{ pyproject["project"]["requires-python"] }}
33
+ {% for dependency in pyproject["project"]["dependencies"] %}
34
+ {% if dependency.startswith("art>") %}
35
+ - python-{{ dependency }}
36
+ {% elif not dependency.startswith("waterEntropy") %}
37
+ - {{ dependency | lower }}
38
+ {% endif %}
39
+ {% endfor %}
40
40
 
41
41
  test:
42
42
  imports:
@@ -167,9 +167,30 @@ Weekly workflows:
167
167
 
168
168
  - Full regression suite including slow tests
169
169
  - Documentation build across all Python versions
170
+ - Dependency floor checks (see :ref:`dependency-policy`)
170
171
 
171
172
  CI also caches regression datasets to improve performance.
172
173
 
174
+ .. _dependency-policy:
175
+
176
+ Dependency Policy
177
+ -----------------
178
+
179
+ Runtime dependencies in ``pyproject.toml`` are declared as ranges. The lower
180
+ bound (floor) is the oldest release CodeEntropy is known to work with, so that it
181
+ stays installable alongside other scientific packages. Floors are only raised
182
+ when the code needs a newer release. Upper bounds are widened by Renovate.
183
+
184
+ The unit job in the pull request workflow and the weekly ``dependency-floors.yaml``
185
+ workflow check this. They check that the lowest allowed versions resolve to
186
+ installable wheels on each platform and Python version, and that the unit tests
187
+ pass with them installed.
188
+
189
+ Run the same checks locally with `uv <https://docs.astral.sh/uv/>`_::
190
+
191
+ uv pip install --resolution lowest-direct -e ".[testing]"
192
+ python -m pytest tests/unit
193
+
173
194
  Building Documentation
174
195
  ----------------------
175
196
 
@@ -37,21 +37,21 @@ classifiers = [
37
37
  keywords = ["entropy", "macromolecular systems", "MD simulation"]
38
38
  requires-python = ">=3.12"
39
39
  dependencies = [
40
- "numpy>=2.3.2,<2.5.0",
40
+ "numpy>=2.3.5,<2.6.0",
41
41
  "mdanalysis>=2.10,<3.0",
42
42
  "pandas>=2.3.3,<4.0",
43
- "psutil>=5.9.4,<8.0",
43
+ "psutil>=7.1.3,<8.0",
44
44
  "PyYAML>=6.0.3,<7.0",
45
45
  "rich>=13.0.0,<16.0",
46
46
  "art>=5.0,<7.0",
47
47
  "networkx>=2.8,<4.0",
48
48
  "waterEntropy>=2,<3.0",
49
49
  "requests>=2.32.2,<3.0",
50
- "rdkit>=2025.3.4,<2026",
50
+ "rdkit>=2025.3.4,<2027",
51
51
  "numba>=0.63.0,<0.70",
52
- "dask>=2025.4.0,<2027.1.0",
52
+ "dask>=2025.7.0,<2027.1.0",
53
53
  "dask-jobqueue>=0.9.0,<1.0",
54
- "distributed>=2025.4.0,<2027.1.0",
54
+ "distributed>=2025.7.0,<2027.1.0",
55
55
  ]
56
56
 
57
57
  [project.urls]
@@ -3,14 +3,14 @@
3
3
  "0": {
4
4
  "components": {
5
5
  "united_atom:Transvibrational": 0.06950663196232491,
6
- "united_atom:Rovibrational": 35.19655714759131,
7
- "residue:FTmat-Transvibrational": 86.6413638447789,
8
- "residue:FTmat-Rovibrational": 62.24303760058523,
6
+ "united_atom:Rovibrational": 35.19655714759134,
7
+ "residue:FTmat-Transvibrational": 86.64136384477892,
8
+ "residue:FTmat-Rovibrational": 62.24303760058521,
9
9
  "united_atom:Conformational": 0.0,
10
10
  "residue:Conformational": 0.0,
11
11
  "residue:Orientational": 20.481571492615355
12
12
  },
13
- "total": 204.6320367175331
13
+ "total": 204.63203671753317
14
14
  }
15
15
  }
16
16
  }