Skip to content
This repository was archived by the owner on Sep 14, 2022. It is now read-only.

Commit e2037ad

Browse files
authored
Move creation of python module to build_wheel crate (#29)
1 parent 7b9a064 commit e2037ad

7 files changed

Lines changed: 71 additions & 76 deletions

File tree

Cargo.toml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,12 @@ quantity = "0.5"
1717
feos-core = { git = "https://github.com/feos-org/feos-core" }
1818
feos-dft = { git = "https://github.com/feos-org/feos-dft", branch = "v0.2.0" }
1919
num-dual = "0.5"
20-
num = "0.4"
2120
num-traits = "0.2"
2221
ndarray = { version = "0.15", features=["approx"] }
2322
serde = { version = "1.0", features = ["derive"] }
2423
serde_json = "1.0"
2524
indexmap = "1.8"
2625
lazy_static = "1.4"
27-
thiserror = "1.0"
2826
numpy = { version = "0.16", optional = true }
2927
pyo3 = { version = "0.16", optional = true }
3028

build_wheel/Cargo.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,9 @@ edition = "2018"
99
crate-type = ["cdylib"]
1010

1111
[dependencies]
12+
quantity = "0.5"
13+
feos-core = { git = "https://github.com/feos-org/feos-core" }
14+
feos-dft = { git = "https://github.com/feos-org/feos-dft", branch = "v0.2.0" }
1215
feos-pcsaft = { path = "..", features = ["python"] }
1316
pyo3 = { version = "0.16", features = ["extension-module", "abi3", "abi3-py37"] }
17+
numpy = "0.16"
Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
1-
use super::parameters::*;
2-
use crate::dft::PcSaftFunctional;
31
use feos_core::utils::{
42
DataSet, EquilibriumLiquidDensity, Estimator, LiquidDensity, VaporPressure,
53
};
64
use feos_core::*;
75
use feos_dft::adsorption::*;
6+
use feos_dft::fundamental_measure_theory::FMTVersion;
87
use feos_dft::interface::*;
98
use feos_dft::python::*;
109
use feos_dft::solvation::*;
1110
use feos_dft::*;
11+
use feos_pcsaft::python::*;
12+
use feos_pcsaft::PcSaftFunctional;
1213
use numpy::*;
1314
use pyo3::exceptions::PyValueError;
1415
use pyo3::prelude::*;
@@ -54,10 +55,10 @@ impl PyPcSaftFunctional {
5455
/// PcSaftFunctional
5556
#[staticmethod]
5657
#[pyo3(text_signature = "(parameters, fmt_version)")]
57-
fn new_full(parameters: PyPcSaftParameters, fmt_version: PyFMTVersion) -> Self {
58+
fn new_full(parameters: PyPcSaftParameters, fmt_version: FMTVersion) -> Self {
5859
Self(Rc::new(PcSaftFunctional::new_full(
5960
parameters.0,
60-
fmt_version.0,
61+
fmt_version,
6162
)))
6263
}
6364
}
@@ -88,7 +89,7 @@ pub fn dft(py: Python<'_>, m: &PyModule) -> PyResult<()> {
8889
m.add_class::<PyPhaseDiagramHetero>()?;
8990
m.add_class::<PyPhaseEquilibrium>()?;
9091
m.add_class::<PyPlanarInterface>()?;
91-
m.add_class::<PyGeometry>()?;
92+
m.add_class::<Geometry>()?;
9293
m.add_class::<PyPore1D>()?;
9394
m.add_class::<PyPore3D>()?;
9495
m.add_class::<PyPairCorrelation>()?;
@@ -98,7 +99,7 @@ pub fn dft(py: Python<'_>, m: &PyModule) -> PyResult<()> {
9899
m.add_class::<PySurfaceTensionDiagram>()?;
99100
m.add_class::<PyDFTSolver>()?;
100101
m.add_class::<PySolvationProfile>()?;
101-
m.add_class::<PyFMTVersion>()?;
102+
m.add_class::<FMTVersion>()?;
102103

103104
let utils = PyModule::new(py, "utils")?;
104105
utils.add_class::<PyDataSet>()?;
Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
1-
use super::parameters::PyPcSaftParameters;
2-
use crate::eos::polar::DQVariants;
3-
use crate::eos::{PcSaft, PcSaftOptions};
41
use feos_core::utils::{
52
DataSet, EquilibriumLiquidDensity, Estimator, LiquidDensity, VaporPressure,
63
};
74
use feos_core::*;
5+
use feos_pcsaft::python::PyPcSaftParameters;
6+
use feos_pcsaft::{PcSaft, PcSaftOptions};
87
use numpy::convert::ToPyArray;
98
use numpy::{PyArray1, PyArray2};
109
use pyo3::exceptions::PyValueError;
@@ -14,16 +13,6 @@ use quantity::si::*;
1413
use std::collections::HashMap;
1514
use std::rc::Rc;
1615

17-
impl From<&str> for DQVariants {
18-
fn from(str: &str) -> Self {
19-
match str {
20-
"dq35" => Self::DQ35,
21-
"dq44" => Self::DQ44,
22-
_ => panic!("dq_variant must be either \"dq35\" or \"dq44\""),
23-
}
24-
}
25-
}
26-
2716
/// Initialize PC-SAFT equation of state.
2817
///
2918
/// Parameters

build_wheel/src/lib.rs

Lines changed: 47 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,51 @@
1-
use feos_pcsaft::python::feos_pcsaft;
1+
use feos_core::python::joback::PyJobackRecord;
2+
use feos_core::python::parameter::*;
3+
use feos_core::{Contributions, Verbosity};
4+
use feos_pcsaft::python::*;
25
use pyo3::prelude::*;
6+
use pyo3::wrap_pymodule;
7+
use quantity::python::__PYO3_PYMODULE_DEF_QUANTITY;
8+
9+
mod dft;
10+
mod eos;
11+
use dft::__PYO3_PYMODULE_DEF_DFT;
12+
use eos::__PYO3_PYMODULE_DEF_EOS;
313

414
#[pymodule]
5-
pub fn build_wheel(py: Python<'_>, m: &PyModule) -> PyResult<()> {
6-
feos_pcsaft(py, m)
15+
pub fn feos_pcsaft(py: Python<'_>, m: &PyModule) -> PyResult<()> {
16+
m.add_class::<PyIdentifier>()?;
17+
m.add_class::<Verbosity>()?;
18+
m.add_class::<Contributions>()?;
19+
m.add_class::<PyChemicalRecord>()?;
20+
m.add_class::<PyJobackRecord>()?;
21+
22+
m.add_class::<PyPcSaftRecord>()?;
23+
m.add_class::<PyPureRecord>()?;
24+
m.add_class::<PySegmentRecord>()?;
25+
m.add_class::<PyBinaryRecord>()?;
26+
m.add_class::<PyBinarySegmentRecord>()?;
27+
m.add_class::<PyPcSaftParameters>()?;
28+
29+
m.add_wrapped(wrap_pymodule!(eos))?;
30+
m.add_wrapped(wrap_pymodule!(dft))?;
31+
m.add_wrapped(wrap_pymodule!(quantity))?;
32+
33+
py.run(
34+
"\
35+
import sys
36+
sys.modules['feos_pcsaft.eos'] = eos
37+
sys.modules['feos_pcsaft.eos.utils'] = eos.utils
38+
sys.modules['feos_pcsaft.dft'] = dft
39+
sys.modules['feos_pcsaft.dft.utils'] = dft.utils
40+
quantity.SINumber.__module__ = 'feos_pcsaft.si'
41+
quantity.SIArray1.__module__ = 'feos_pcsaft.si'
42+
quantity.SIArray2.__module__ = 'feos_pcsaft.si'
43+
quantity.SIArray3.__module__ = 'feos_pcsaft.si'
44+
quantity.SIArray4.__module__ = 'feos_pcsaft.si'
45+
sys.modules['feos_pcsaft.si'] = quantity
46+
",
47+
None,
48+
Some(m.dict()),
49+
)?;
50+
Ok(())
751
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use crate::eos::polar::DQVariants;
12
use crate::parameters::{PcSaftParameters, PcSaftRecord};
23
use feos_core::joback::JobackRecord;
34
use feos_core::parameter::{
@@ -11,6 +12,16 @@ use pyo3::prelude::*;
1112
use std::convert::TryFrom;
1213
use std::rc::Rc;
1314

15+
impl From<&str> for DQVariants {
16+
fn from(str: &str) -> Self {
17+
match str {
18+
"dq35" => Self::DQ35,
19+
"dq44" => Self::DQ44,
20+
_ => panic!("dq_variant must be either \"dq35\" or \"dq44\""),
21+
}
22+
}
23+
}
24+
1425
/// Create a set of PC-Saft parameters from records.
1526
#[pyclass(name = "PcSaftRecord", unsendable)]
1627
#[pyo3(

src/python/mod.rs

Lines changed: 0 additions & 52 deletions
This file was deleted.

0 commit comments

Comments
 (0)