algorhino-anemone 0.1.9__tar.gz → 0.1.10__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 (89) hide show
  1. {algorhino_anemone-0.1.9/src/algorhino_anemone.egg-info → algorhino_anemone-0.1.10}/PKG-INFO +3 -3
  2. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/pyproject.toml +7 -7
  3. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10/src/algorhino_anemone.egg-info}/PKG-INFO +3 -3
  4. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/algorhino_anemone.egg-info/requires.txt +2 -2
  5. algorhino_anemone-0.1.10/src/anemone/basics.py +23 -0
  6. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/factory.py +3 -7
  7. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/node_factory/algorithm_node_factory.py +1 -1
  8. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/tree_and_value_branch_selector.py +2 -2
  9. algorhino_anemone-0.1.9/src/anemone/basics.py +0 -6
  10. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/LICENSE +0 -0
  11. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/README.md +0 -0
  12. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/setup.cfg +0 -0
  13. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/algorhino_anemone.egg-info/SOURCES.txt +0 -0
  14. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/algorhino_anemone.egg-info/dependency_links.txt +0 -0
  15. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/algorhino_anemone.egg-info/top_level.txt +0 -0
  16. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/__init__.py +0 -0
  17. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/indices/__init__.py +0 -0
  18. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/indices/index_manager/__init__.py +0 -0
  19. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/indices/index_manager/factory.py +0 -0
  20. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/indices/index_manager/node_exploration_manager.py +0 -0
  21. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/indices/node_indices/__init__.py +0 -0
  22. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/indices/node_indices/factory.py +0 -0
  23. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/indices/node_indices/index_data.py +0 -0
  24. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/indices/node_indices/index_types.py +0 -0
  25. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/nn/torch_evaluator.py +0 -0
  26. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/node_evaluation/__init__.py +0 -0
  27. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/node_evaluation/node_direct_evaluation/__init__.py +0 -0
  28. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/node_evaluation/node_direct_evaluation/factory.py +0 -0
  29. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/node_evaluation/node_direct_evaluation/node_direct_evaluator.py +0 -0
  30. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/node_evaluation/node_tree_evaluation/node_minmax_evaluation.py +0 -0
  31. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/node_evaluation/node_tree_evaluation/node_tree_evaluation.py +0 -0
  32. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/node_evaluation/node_tree_evaluation/node_tree_evaluation_factory.py +0 -0
  33. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/node_factory/__init__.py +0 -0
  34. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/node_factory/base.py +0 -0
  35. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/node_selector/__init__.py +0 -0
  36. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/node_selector/branch_explorer.py +0 -0
  37. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/node_selector/factory.py +0 -0
  38. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/node_selector/node_selector.py +0 -0
  39. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/node_selector/node_selector_args.py +0 -0
  40. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/node_selector/node_selector_types.py +0 -0
  41. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/node_selector/notations_and_statics.py +0 -0
  42. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/node_selector/opening_instructions.py +0 -0
  43. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/node_selector/recurzipf/__init__.py +0 -0
  44. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/node_selector/recurzipf/recur_zipf_base.py +0 -0
  45. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/node_selector/sequool/__init__.py +0 -0
  46. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/node_selector/sequool/factory.py +0 -0
  47. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/node_selector/sequool/sequool.py +0 -0
  48. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/node_selector/uniform/__init__.py +0 -0
  49. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/node_selector/uniform/uniform.py +0 -0
  50. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/nodes/__init__.py +0 -0
  51. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/nodes/algorithm_node/__init__.py +0 -0
  52. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/nodes/algorithm_node/algorithm_node.py +0 -0
  53. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/nodes/itree_node.py +0 -0
  54. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/nodes/tree_node.py +0 -0
  55. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/nodes/tree_traversal.py +0 -0
  56. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/nodes/utils.py +0 -0
  57. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/progress_monitor/__init__.py +0 -0
  58. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/progress_monitor/progress_monitor.py +0 -0
  59. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/recommender_rule/__init__.py +0 -0
  60. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/recommender_rule/recommender_rule.py +0 -0
  61. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/search_factory/__init__.py +0 -0
  62. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/search_factory/search_factory.py +0 -0
  63. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/state_transition.py +0 -0
  64. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/tree_exploration.py +0 -0
  65. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/tree_manager/__init__.py +0 -0
  66. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/tree_manager/algorithm_node_tree_manager.py +0 -0
  67. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/tree_manager/factory.py +0 -0
  68. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/tree_manager/tree_expander.py +0 -0
  69. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/tree_manager/tree_manager.py +0 -0
  70. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/trees/__init__.py +0 -0
  71. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/trees/descendants.py +0 -0
  72. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/trees/factory.py +0 -0
  73. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/trees/tree.py +0 -0
  74. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/trees/tree_visualization.py +0 -0
  75. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/updates/__init__.py +0 -0
  76. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/updates/algorithm_node_updater.py +0 -0
  77. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/updates/factory.py +0 -0
  78. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/updates/index_block.py +0 -0
  79. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/updates/index_updater.py +0 -0
  80. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/updates/minmax_evaluation_updater.py +0 -0
  81. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/updates/updates_file.py +0 -0
  82. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/updates/value_block.py +0 -0
  83. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/utils/comparable.py +0 -0
  84. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/utils/dataclass.py +0 -0
  85. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/utils/dict_of_numbered_dict_with_pointer_on_max.py +0 -0
  86. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/utils/logger.py +0 -0
  87. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/utils/my_value_sorted_dict.py +0 -0
  88. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/src/anemone/utils/small_tools.py +0 -0
  89. {algorhino_anemone-0.1.9 → algorhino_anemone-0.1.10}/tests/test_indices.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: algorhino-anemone
3
- Version: 0.1.9
3
+ Version: 0.1.10
4
4
  Summary: anemone searches trees
5
5
  Author-email: Victor Gabillon <victorgabillon@gmail.com>
6
6
  License-Expression: GPL-3.0-only
@@ -12,8 +12,8 @@ Classifier: Operating System :: OS Independent
12
12
  Requires-Python: >=3.13
13
13
  Description-Content-Type: text/markdown
14
14
  License-File: LICENSE
15
- Requires-Dist: valanga>=0.1.10
16
- Requires-Dist: atomheart>=0.1.2
15
+ Requires-Dist: valanga>=0.1.13
16
+ Requires-Dist: atomheart>=0.1.6
17
17
  Requires-Dist: rich
18
18
  Requires-Dist: sortedcollections>=2.1.0
19
19
  Requires-Dist: graphviz
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
5
5
 
6
6
  [project]
7
7
  name = "algorhino-anemone"
8
- version = "0.1.9"
8
+ version = "0.1.10"
9
9
  description = "anemone searches trees"
10
10
  keywords = ["tree", "search"]
11
11
  classifiers = [
@@ -14,8 +14,8 @@ classifiers = [
14
14
  ]
15
15
  requires-python = ">=3.13"
16
16
  dependencies = [
17
- "valanga>=0.1.10",
18
- "atomheart>=0.1.2",
17
+ "valanga>=0.1.13",
18
+ "atomheart>=0.1.6",
19
19
  "rich",
20
20
  "sortedcollections>=2.1.0",
21
21
  "graphviz",
@@ -265,8 +265,8 @@ description = "ruff + pylint (fast, no package build/install)"
265
265
  package = "skip"
266
266
  deps = [
267
267
  # runtime deps needed for pylint imports (match [project].dependencies)
268
- "valanga>=0.1.10",
269
- "atomheart>=0.1.2",
268
+ "valanga>=0.1.13",
269
+ "atomheart>=0.1.6",
270
270
  "rich",
271
271
  "sortedcollections>=2.1.0",
272
272
  "graphviz",
@@ -290,8 +290,8 @@ description = "mypy + pyright (fast, no package build/install)"
290
290
  package = "skip"
291
291
  deps = [
292
292
  # runtime deps for import resolution
293
- "valanga>=0.1.10",
294
- "atomheart>=0.1.2",
293
+ "valanga>=0.1.13",
294
+ "atomheart>=0.1.6",
295
295
  "rich",
296
296
  "sortedcollections>=2.1.0",
297
297
  "graphviz",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: algorhino-anemone
3
- Version: 0.1.9
3
+ Version: 0.1.10
4
4
  Summary: anemone searches trees
5
5
  Author-email: Victor Gabillon <victorgabillon@gmail.com>
6
6
  License-Expression: GPL-3.0-only
@@ -12,8 +12,8 @@ Classifier: Operating System :: OS Independent
12
12
  Requires-Python: >=3.13
13
13
  Description-Content-Type: text/markdown
14
14
  License-File: LICENSE
15
- Requires-Dist: valanga>=0.1.10
16
- Requires-Dist: atomheart>=0.1.2
15
+ Requires-Dist: valanga>=0.1.13
16
+ Requires-Dist: atomheart>=0.1.6
17
17
  Requires-Dist: rich
18
18
  Requires-Dist: sortedcollections>=2.1.0
19
19
  Requires-Dist: graphviz
@@ -1,5 +1,5 @@
1
- valanga>=0.1.10
2
- atomheart>=0.1.2
1
+ valanga>=0.1.13
2
+ atomheart>=0.1.6
3
3
  rich
4
4
  sortedcollections>=2.1.0
5
5
  graphviz
@@ -0,0 +1,23 @@
1
+ """Basic types and protocols for Anemone."""
2
+
3
+ from typing import Annotated, Protocol
4
+
5
+ from valanga import Color, HasTurn, State
6
+
7
+ type Seed = Annotated[int, "seed"]
8
+ type TreeDepth = Annotated[int, "Depth level of a node in a tree structure"]
9
+
10
+
11
+ class StateWithTurn(State, HasTurn, Protocol):
12
+ """A `valanga.State` that also exposes turn information."""
13
+
14
+ ...
15
+
16
+
17
+ class HasBlackAndWhiteTurn(Protocol):
18
+ """Protocol for state that has black and white turns."""
19
+
20
+ @property
21
+ def turn(self) -> Color:
22
+ """Return the current player's turn color."""
23
+ ...
@@ -7,11 +7,7 @@ from queue import Queue
7
7
  from random import Random
8
8
  from typing import Literal, Type
9
9
 
10
- from valanga import (
11
- RepresentationFactory,
12
- StateModifications,
13
- TurnState,
14
- )
10
+ from valanga import RepresentationFactory, StateModifications, TurnState
15
11
  from valanga.evaluator_types import EvaluatorInput
16
12
 
17
13
  from anemone import node_factory
@@ -62,7 +58,7 @@ def create_tree_and_value_branch_selector[StateT: TurnState](
62
58
  random_generator: Random,
63
59
  master_state_evaluator: MasterStateEvaluator,
64
60
  state_representation_factory: RepresentationFactory[
65
- StateT, StateModifications, EvaluatorInput
61
+ StateT, EvaluatorInput, StateModifications
66
62
  ]
67
63
  | None,
68
64
  queue_progress_player: Queue[IsDataclass] | None,
@@ -94,7 +90,7 @@ def create_tree_and_value_branch_selector_with_tree_eval_factory[StateT: TurnSta
94
90
  random_generator: Random,
95
91
  master_state_evaluator: MasterStateEvaluator,
96
92
  state_representation_factory: RepresentationFactory[
97
- StateT, StateModifications, EvaluatorInput
93
+ StateT, EvaluatorInput, StateModifications
98
94
  ]
99
95
  | None,
100
96
  node_tree_evaluation_factory: NodeTreeEvaluationFactory[StateT],
@@ -39,7 +39,7 @@ class AlgorithmNodeFactory[StateT: State = State]:
39
39
 
40
40
  tree_node_factory: TreeNodeFactory[AlgorithmNode[StateT], StateT]
41
41
  state_representation_factory: (
42
- RepresentationFactory[StateT, StateModifications, EvaluatorInput] | None
42
+ RepresentationFactory[StateT, EvaluatorInput, StateModifications] | None
43
43
  )
44
44
  node_tree_evaluation_factory: NodeTreeEvaluationFactory[StateT]
45
45
  exploration_index_data_create: node_indices.ExplorationIndexDataFactory[
@@ -44,7 +44,7 @@ class TreeAndValueBranchSelector[StateT: TurnState = TurnState]:
44
44
  recommend_branch_after_exploration: recommender_rule.AllRecommendFunctionsArgs
45
45
  queue_progress_player: Queue[IsDataclass] | None
46
46
 
47
- def select_branch(self, state: StateT, selection_seed: Seed) -> Recommendation:
47
+ def recommend(self, state: StateT, seed: Seed) -> Recommendation:
48
48
  """
49
49
  Selects the best branch based on the tree and value strategy.
50
50
 
@@ -56,7 +56,7 @@ class TreeAndValueBranchSelector[StateT: TurnState = TurnState]:
56
56
  - The recommended branch based on the tree and value strategy.
57
57
  """
58
58
  tree_exploration: TreeExploration = self.create_tree_exploration(state=state)
59
- self.random_generator.seed(selection_seed)
59
+ self.random_generator.seed(seed)
60
60
 
61
61
  branch_recommendation: Recommendation = tree_exploration.explore(
62
62
  random_generator=self.random_generator
@@ -1,6 +0,0 @@
1
- """Basic types and protocols for Anemone."""
2
-
3
- from typing import Annotated
4
-
5
- type Seed = Annotated[int, "seed"]
6
- type TreeDepth = Annotated[int, "Depth level of a node in a tree structure"]