solverforge 0.2.2__tar.gz → 0.2.3__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.
- {solverforge-0.2.2 → solverforge-0.2.3}/Cargo.lock +5 -5
- {solverforge-0.2.2 → solverforge-0.2.3}/Cargo.toml +1 -1
- {solverforge-0.2.2 → solverforge-0.2.3}/PKG-INFO +1 -1
- {solverforge-0.2.2 → solverforge-0.2.3}/pyproject.toml +1 -1
- {solverforge-0.2.2 → solverforge-0.2.3}/python/solverforge/__init__.py +60 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-python/python/solverforge/__init__.py +60 -0
- solverforge-0.2.3/solverforge-python/src/lib.rs +148 -0
- solverforge-0.2.2/solverforge-python/src/lib.rs +0 -72
- {solverforge-0.2.2 → solverforge-0.2.3}/README.md +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/Cargo.toml +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/README.md +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/analysis/explanation.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/analysis/manager.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/analysis/mod.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/bridge.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/constraints/collectors.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/constraints/constraint.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/constraints/joiners.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/constraints/mod.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/constraints/stream.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/domain/annotations.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/domain/class.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/domain/constraint_config.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/domain/mod.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/domain/model.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/domain/shadow.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/error.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/handles.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/lib.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/score/bendable.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/score/hard_soft.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/score/hard_soft_decimal.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/score/mod.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/score/simple.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/score/simple_decimal.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/solver/builder.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/solver/client.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/solver/config.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/solver/environment.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/solver/factory.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/solver/mod.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/solver/request.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/solver/response.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/solver/termination.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/traits.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/value.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/wasm/expr_builder.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/wasm/expression.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/wasm/generator.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/wasm/host_functions.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/wasm/memory.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-core/src/wasm/mod.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-python/Cargo.toml +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-python/README.md +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-python/src/annotations.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-python/src/bridge.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-python/src/collectors.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-python/src/decorators.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-python/src/joiners.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-python/src/lambda_analyzer.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-python/src/score.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-python/src/solver.rs +0 -0
- {solverforge-0.2.2 → solverforge-0.2.3}/solverforge-python/src/stream.rs +0 -0
|
@@ -1507,7 +1507,7 @@ dependencies = [
|
|
|
1507
1507
|
|
|
1508
1508
|
[[package]]
|
|
1509
1509
|
name = "solverforge"
|
|
1510
|
-
version = "0.2.
|
|
1510
|
+
version = "0.2.3"
|
|
1511
1511
|
dependencies = [
|
|
1512
1512
|
"solverforge-core",
|
|
1513
1513
|
"solverforge-derive",
|
|
@@ -1516,7 +1516,7 @@ dependencies = [
|
|
|
1516
1516
|
|
|
1517
1517
|
[[package]]
|
|
1518
1518
|
name = "solverforge-core"
|
|
1519
|
-
version = "0.2.
|
|
1519
|
+
version = "0.2.3"
|
|
1520
1520
|
dependencies = [
|
|
1521
1521
|
"base64",
|
|
1522
1522
|
"indexmap",
|
|
@@ -1532,7 +1532,7 @@ dependencies = [
|
|
|
1532
1532
|
|
|
1533
1533
|
[[package]]
|
|
1534
1534
|
name = "solverforge-derive"
|
|
1535
|
-
version = "0.2.
|
|
1535
|
+
version = "0.2.3"
|
|
1536
1536
|
dependencies = [
|
|
1537
1537
|
"proc-macro2",
|
|
1538
1538
|
"quote",
|
|
@@ -1544,7 +1544,7 @@ dependencies = [
|
|
|
1544
1544
|
|
|
1545
1545
|
[[package]]
|
|
1546
1546
|
name = "solverforge-python"
|
|
1547
|
-
version = "0.2.
|
|
1547
|
+
version = "0.2.3"
|
|
1548
1548
|
dependencies = [
|
|
1549
1549
|
"log",
|
|
1550
1550
|
"pyo3",
|
|
@@ -1557,7 +1557,7 @@ dependencies = [
|
|
|
1557
1557
|
|
|
1558
1558
|
[[package]]
|
|
1559
1559
|
name = "solverforge-service"
|
|
1560
|
-
version = "0.2.
|
|
1560
|
+
version = "0.2.3"
|
|
1561
1561
|
dependencies = [
|
|
1562
1562
|
"base64",
|
|
1563
1563
|
"chrono",
|
|
@@ -35,6 +35,36 @@ from solverforge._solverforge import (
|
|
|
35
35
|
build_domain_model,
|
|
36
36
|
DomainClass,
|
|
37
37
|
DomainModel,
|
|
38
|
+
constraint_provider,
|
|
39
|
+
ConstraintProvider,
|
|
40
|
+
# Solver runtime
|
|
41
|
+
TerminationConfig,
|
|
42
|
+
DiminishedReturnsConfig,
|
|
43
|
+
EnvironmentMode,
|
|
44
|
+
MoveThreadCount,
|
|
45
|
+
SolverConfig,
|
|
46
|
+
SolveHandle,
|
|
47
|
+
SolveState,
|
|
48
|
+
ScoreDto,
|
|
49
|
+
SolveStatus,
|
|
50
|
+
SolveResponse,
|
|
51
|
+
SolverFactory,
|
|
52
|
+
Solver,
|
|
53
|
+
# Constraint streams
|
|
54
|
+
ConstraintFactory,
|
|
55
|
+
UniConstraintStream,
|
|
56
|
+
BiConstraintStream,
|
|
57
|
+
TriConstraintStream,
|
|
58
|
+
UniConstraintBuilder,
|
|
59
|
+
BiConstraintBuilder,
|
|
60
|
+
TriConstraintBuilder,
|
|
61
|
+
Constraint,
|
|
62
|
+
# Joiners
|
|
63
|
+
Joiner,
|
|
64
|
+
Joiners,
|
|
65
|
+
# Collectors
|
|
66
|
+
Collector,
|
|
67
|
+
ConstraintCollectors,
|
|
38
68
|
)
|
|
39
69
|
|
|
40
70
|
__all__ = [
|
|
@@ -62,4 +92,34 @@ __all__ = [
|
|
|
62
92
|
"build_domain_model",
|
|
63
93
|
"DomainClass",
|
|
64
94
|
"DomainModel",
|
|
95
|
+
"constraint_provider",
|
|
96
|
+
"ConstraintProvider",
|
|
97
|
+
# Solver runtime
|
|
98
|
+
"TerminationConfig",
|
|
99
|
+
"DiminishedReturnsConfig",
|
|
100
|
+
"EnvironmentMode",
|
|
101
|
+
"MoveThreadCount",
|
|
102
|
+
"SolverConfig",
|
|
103
|
+
"SolveHandle",
|
|
104
|
+
"SolveState",
|
|
105
|
+
"ScoreDto",
|
|
106
|
+
"SolveStatus",
|
|
107
|
+
"SolveResponse",
|
|
108
|
+
"SolverFactory",
|
|
109
|
+
"Solver",
|
|
110
|
+
# Constraint streams
|
|
111
|
+
"ConstraintFactory",
|
|
112
|
+
"UniConstraintStream",
|
|
113
|
+
"BiConstraintStream",
|
|
114
|
+
"TriConstraintStream",
|
|
115
|
+
"UniConstraintBuilder",
|
|
116
|
+
"BiConstraintBuilder",
|
|
117
|
+
"TriConstraintBuilder",
|
|
118
|
+
"Constraint",
|
|
119
|
+
# Joiners
|
|
120
|
+
"Joiner",
|
|
121
|
+
"Joiners",
|
|
122
|
+
# Collectors
|
|
123
|
+
"Collector",
|
|
124
|
+
"ConstraintCollectors",
|
|
65
125
|
]
|
|
@@ -35,6 +35,36 @@ from solverforge._solverforge import (
|
|
|
35
35
|
build_domain_model,
|
|
36
36
|
DomainClass,
|
|
37
37
|
DomainModel,
|
|
38
|
+
constraint_provider,
|
|
39
|
+
ConstraintProvider,
|
|
40
|
+
# Solver runtime
|
|
41
|
+
TerminationConfig,
|
|
42
|
+
DiminishedReturnsConfig,
|
|
43
|
+
EnvironmentMode,
|
|
44
|
+
MoveThreadCount,
|
|
45
|
+
SolverConfig,
|
|
46
|
+
SolveHandle,
|
|
47
|
+
SolveState,
|
|
48
|
+
ScoreDto,
|
|
49
|
+
SolveStatus,
|
|
50
|
+
SolveResponse,
|
|
51
|
+
SolverFactory,
|
|
52
|
+
Solver,
|
|
53
|
+
# Constraint streams
|
|
54
|
+
ConstraintFactory,
|
|
55
|
+
UniConstraintStream,
|
|
56
|
+
BiConstraintStream,
|
|
57
|
+
TriConstraintStream,
|
|
58
|
+
UniConstraintBuilder,
|
|
59
|
+
BiConstraintBuilder,
|
|
60
|
+
TriConstraintBuilder,
|
|
61
|
+
Constraint,
|
|
62
|
+
# Joiners
|
|
63
|
+
Joiner,
|
|
64
|
+
Joiners,
|
|
65
|
+
# Collectors
|
|
66
|
+
Collector,
|
|
67
|
+
ConstraintCollectors,
|
|
38
68
|
)
|
|
39
69
|
|
|
40
70
|
__all__ = [
|
|
@@ -62,4 +92,34 @@ __all__ = [
|
|
|
62
92
|
"build_domain_model",
|
|
63
93
|
"DomainClass",
|
|
64
94
|
"DomainModel",
|
|
95
|
+
"constraint_provider",
|
|
96
|
+
"ConstraintProvider",
|
|
97
|
+
# Solver runtime
|
|
98
|
+
"TerminationConfig",
|
|
99
|
+
"DiminishedReturnsConfig",
|
|
100
|
+
"EnvironmentMode",
|
|
101
|
+
"MoveThreadCount",
|
|
102
|
+
"SolverConfig",
|
|
103
|
+
"SolveHandle",
|
|
104
|
+
"SolveState",
|
|
105
|
+
"ScoreDto",
|
|
106
|
+
"SolveStatus",
|
|
107
|
+
"SolveResponse",
|
|
108
|
+
"SolverFactory",
|
|
109
|
+
"Solver",
|
|
110
|
+
# Constraint streams
|
|
111
|
+
"ConstraintFactory",
|
|
112
|
+
"UniConstraintStream",
|
|
113
|
+
"BiConstraintStream",
|
|
114
|
+
"TriConstraintStream",
|
|
115
|
+
"UniConstraintBuilder",
|
|
116
|
+
"BiConstraintBuilder",
|
|
117
|
+
"TriConstraintBuilder",
|
|
118
|
+
"Constraint",
|
|
119
|
+
# Joiners
|
|
120
|
+
"Joiner",
|
|
121
|
+
"Joiners",
|
|
122
|
+
# Collectors
|
|
123
|
+
"Collector",
|
|
124
|
+
"ConstraintCollectors",
|
|
65
125
|
]
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
//! Python bindings for SolverForge constraint solver
|
|
2
|
+
//!
|
|
3
|
+
//! This crate provides Python bindings using PyO3, offering a 1:1 compatible API
|
|
4
|
+
//! with Timefold's Python bindings.
|
|
5
|
+
|
|
6
|
+
use pyo3::prelude::*;
|
|
7
|
+
|
|
8
|
+
mod annotations;
|
|
9
|
+
mod bridge;
|
|
10
|
+
mod collectors;
|
|
11
|
+
mod decorators;
|
|
12
|
+
mod joiners;
|
|
13
|
+
mod lambda_analyzer;
|
|
14
|
+
mod score;
|
|
15
|
+
mod solver;
|
|
16
|
+
mod stream;
|
|
17
|
+
|
|
18
|
+
pub use annotations::{
|
|
19
|
+
PyDeepPlanningClone, PyInverseRelationShadowVariable, PyPlanningEntityCollectionProperty,
|
|
20
|
+
PyPlanningEntityProperty, PyPlanningId, PyPlanningListVariable, PyPlanningPin, PyPlanningScore,
|
|
21
|
+
PyPlanningVariable, PyProblemFactCollectionProperty, PyProblemFactProperty,
|
|
22
|
+
PyValueRangeProvider,
|
|
23
|
+
};
|
|
24
|
+
pub use bridge::{PyBridge, PythonBridge};
|
|
25
|
+
pub use collectors::{PyCollector, PyConstraintCollectors};
|
|
26
|
+
pub use decorators::{PyConstraintProvider, PyDomainClass, PyDomainModel};
|
|
27
|
+
pub use joiners::{PyJoiner, PyJoiners};
|
|
28
|
+
pub use lambda_analyzer::{analyze_lambda, generate_lambda_name, LambdaInfo};
|
|
29
|
+
pub use score::{PyHardMediumSoftScore, PyHardSoftScore, PySimpleScore};
|
|
30
|
+
pub use solver::{
|
|
31
|
+
PyDiminishedReturnsConfig, PyEnvironmentMode, PyMoveThreadCount, PySolveHandle,
|
|
32
|
+
PySolveResponse, PySolveStatus, PySolver, PySolverConfig, PySolverFactory, PyTerminationConfig,
|
|
33
|
+
};
|
|
34
|
+
pub use stream::{
|
|
35
|
+
PyBiConstraintBuilder, PyBiConstraintStream, PyConstraint, PyConstraintFactory,
|
|
36
|
+
PyTriConstraintBuilder, PyTriConstraintStream, PyUniConstraintBuilder, PyUniConstraintStream,
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
/// SolverForge Python module
|
|
40
|
+
///
|
|
41
|
+
/// Provides constraint solving capabilities with an API compatible with Timefold.
|
|
42
|
+
#[pymodule]
|
|
43
|
+
fn _solverforge(m: &Bound<'_, PyModule>) -> PyResult<()> {
|
|
44
|
+
// Version info
|
|
45
|
+
m.add("__version__", env!("CARGO_PKG_VERSION"))?;
|
|
46
|
+
|
|
47
|
+
// Bridge for Python-Rust object interop
|
|
48
|
+
m.add_class::<PyBridge>()?;
|
|
49
|
+
|
|
50
|
+
// Annotation marker classes
|
|
51
|
+
annotations::register_annotations(m)?;
|
|
52
|
+
|
|
53
|
+
// Score types
|
|
54
|
+
score::register_scores(m)?;
|
|
55
|
+
|
|
56
|
+
// Decorators
|
|
57
|
+
decorators::register_decorators(m)?;
|
|
58
|
+
|
|
59
|
+
// Constraint streams
|
|
60
|
+
stream::register_streams(m)?;
|
|
61
|
+
|
|
62
|
+
// Joiners
|
|
63
|
+
joiners::register_joiners(m)?;
|
|
64
|
+
|
|
65
|
+
// Collectors
|
|
66
|
+
collectors::register_collectors(m)?;
|
|
67
|
+
|
|
68
|
+
// Solver
|
|
69
|
+
solver::register_solver(m)?;
|
|
70
|
+
|
|
71
|
+
Ok(())
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
#[cfg(test)]
|
|
75
|
+
mod tests {
|
|
76
|
+
use super::*;
|
|
77
|
+
|
|
78
|
+
/// Verify that all solver runtime types are accessible from lib.rs exports
|
|
79
|
+
#[test]
|
|
80
|
+
fn test_solver_runtime_types_exported() {
|
|
81
|
+
// These type assertions verify the types are publicly re-exported
|
|
82
|
+
fn assert_type<T>() {}
|
|
83
|
+
|
|
84
|
+
assert_type::<PySolverConfig>();
|
|
85
|
+
assert_type::<PyTerminationConfig>();
|
|
86
|
+
assert_type::<PySolverFactory>();
|
|
87
|
+
assert_type::<PySolver>();
|
|
88
|
+
assert_type::<PySolveHandle>();
|
|
89
|
+
assert_type::<PySolveResponse>();
|
|
90
|
+
assert_type::<PySolveStatus>();
|
|
91
|
+
assert_type::<PyEnvironmentMode>();
|
|
92
|
+
assert_type::<PyMoveThreadCount>();
|
|
93
|
+
assert_type::<PyDiminishedReturnsConfig>();
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/// Verify that all constraint stream types are accessible
|
|
97
|
+
#[test]
|
|
98
|
+
fn test_constraint_stream_types_exported() {
|
|
99
|
+
fn assert_type<T>() {}
|
|
100
|
+
|
|
101
|
+
assert_type::<PyConstraintFactory>();
|
|
102
|
+
assert_type::<PyUniConstraintStream>();
|
|
103
|
+
assert_type::<PyBiConstraintStream>();
|
|
104
|
+
assert_type::<PyTriConstraintStream>();
|
|
105
|
+
assert_type::<PyUniConstraintBuilder>();
|
|
106
|
+
assert_type::<PyBiConstraintBuilder>();
|
|
107
|
+
assert_type::<PyTriConstraintBuilder>();
|
|
108
|
+
assert_type::<PyConstraint>();
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/// Verify that joiner types are accessible
|
|
112
|
+
#[test]
|
|
113
|
+
fn test_joiner_types_exported() {
|
|
114
|
+
fn assert_type<T>() {}
|
|
115
|
+
|
|
116
|
+
assert_type::<PyJoiner>();
|
|
117
|
+
assert_type::<PyJoiners>();
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/// Verify that collector types are accessible
|
|
121
|
+
#[test]
|
|
122
|
+
fn test_collector_types_exported() {
|
|
123
|
+
fn assert_type<T>() {}
|
|
124
|
+
|
|
125
|
+
assert_type::<PyCollector>();
|
|
126
|
+
assert_type::<PyConstraintCollectors>();
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/// Verify that decorator types are accessible
|
|
130
|
+
#[test]
|
|
131
|
+
fn test_decorator_types_exported() {
|
|
132
|
+
fn assert_type<T>() {}
|
|
133
|
+
|
|
134
|
+
assert_type::<PyConstraintProvider>();
|
|
135
|
+
assert_type::<PyDomainClass>();
|
|
136
|
+
assert_type::<PyDomainModel>();
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/// Verify that score types are accessible
|
|
140
|
+
#[test]
|
|
141
|
+
fn test_score_types_exported() {
|
|
142
|
+
fn assert_type<T>() {}
|
|
143
|
+
|
|
144
|
+
assert_type::<PySimpleScore>();
|
|
145
|
+
assert_type::<PyHardSoftScore>();
|
|
146
|
+
assert_type::<PyHardMediumSoftScore>();
|
|
147
|
+
}
|
|
148
|
+
}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
//! Python bindings for SolverForge constraint solver
|
|
2
|
-
//!
|
|
3
|
-
//! This crate provides Python bindings using PyO3, offering a 1:1 compatible API
|
|
4
|
-
//! with Timefold's Python bindings.
|
|
5
|
-
|
|
6
|
-
use pyo3::prelude::*;
|
|
7
|
-
|
|
8
|
-
mod annotations;
|
|
9
|
-
mod bridge;
|
|
10
|
-
mod collectors;
|
|
11
|
-
mod decorators;
|
|
12
|
-
mod joiners;
|
|
13
|
-
mod lambda_analyzer;
|
|
14
|
-
mod score;
|
|
15
|
-
mod solver;
|
|
16
|
-
mod stream;
|
|
17
|
-
|
|
18
|
-
pub use annotations::{
|
|
19
|
-
PyDeepPlanningClone, PyInverseRelationShadowVariable, PyPlanningEntityCollectionProperty,
|
|
20
|
-
PyPlanningEntityProperty, PyPlanningId, PyPlanningListVariable, PyPlanningPin, PyPlanningScore,
|
|
21
|
-
PyPlanningVariable, PyProblemFactCollectionProperty, PyProblemFactProperty,
|
|
22
|
-
PyValueRangeProvider,
|
|
23
|
-
};
|
|
24
|
-
pub use bridge::{PyBridge, PythonBridge};
|
|
25
|
-
pub use collectors::{PyCollector, PyConstraintCollectors};
|
|
26
|
-
pub use decorators::{PyConstraintProvider, PyDomainClass, PyDomainModel};
|
|
27
|
-
pub use joiners::{PyJoiner, PyJoiners};
|
|
28
|
-
pub use lambda_analyzer::{analyze_lambda, generate_lambda_name, LambdaInfo};
|
|
29
|
-
pub use score::{PyHardMediumSoftScore, PyHardSoftScore, PySimpleScore};
|
|
30
|
-
pub use solver::{
|
|
31
|
-
PyDiminishedReturnsConfig, PyEnvironmentMode, PyMoveThreadCount, PySolveHandle,
|
|
32
|
-
PySolveResponse, PySolveStatus, PySolver, PySolverConfig, PySolverFactory, PyTerminationConfig,
|
|
33
|
-
};
|
|
34
|
-
pub use stream::{
|
|
35
|
-
PyBiConstraintBuilder, PyBiConstraintStream, PyConstraint, PyConstraintFactory,
|
|
36
|
-
PyTriConstraintBuilder, PyTriConstraintStream, PyUniConstraintBuilder, PyUniConstraintStream,
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
/// SolverForge Python module
|
|
40
|
-
///
|
|
41
|
-
/// Provides constraint solving capabilities with an API compatible with Timefold.
|
|
42
|
-
#[pymodule]
|
|
43
|
-
fn _solverforge(m: &Bound<'_, PyModule>) -> PyResult<()> {
|
|
44
|
-
// Version info
|
|
45
|
-
m.add("__version__", env!("CARGO_PKG_VERSION"))?;
|
|
46
|
-
|
|
47
|
-
// Bridge for Python-Rust object interop
|
|
48
|
-
m.add_class::<PyBridge>()?;
|
|
49
|
-
|
|
50
|
-
// Annotation marker classes
|
|
51
|
-
annotations::register_annotations(m)?;
|
|
52
|
-
|
|
53
|
-
// Score types
|
|
54
|
-
score::register_scores(m)?;
|
|
55
|
-
|
|
56
|
-
// Decorators
|
|
57
|
-
decorators::register_decorators(m)?;
|
|
58
|
-
|
|
59
|
-
// Constraint streams
|
|
60
|
-
stream::register_streams(m)?;
|
|
61
|
-
|
|
62
|
-
// Joiners
|
|
63
|
-
joiners::register_joiners(m)?;
|
|
64
|
-
|
|
65
|
-
// Collectors
|
|
66
|
-
collectors::register_collectors(m)?;
|
|
67
|
-
|
|
68
|
-
// Solver
|
|
69
|
-
solver::register_solver(m)?;
|
|
70
|
-
|
|
71
|
-
Ok(())
|
|
72
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|