Skip to content

Commit

Permalink
abstracted builder checks and added draft examples
Browse files Browse the repository at this point in the history
  • Loading branch information
Gorkowski committed May 25, 2024
1 parent ae8f689 commit 355c4b4
Show file tree
Hide file tree
Showing 6 changed files with 1,176 additions and 90 deletions.
412 changes: 412 additions & 0 deletions docs/documentation/next/next_gas.ipynb

Large diffs are not rendered by default.

553 changes: 553 additions & 0 deletions docs/documentation/next/next_gas_species.ipynb

Large diffs are not rendered by default.

19 changes: 13 additions & 6 deletions docs/documentation/next/next_vapor_pressure.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -168,19 +168,27 @@
},
{
"cell_type": "code",
"execution_count": 3,
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"[ERROR|vapor_pressure_builders|L106]: Missing parameters: b, c\n"
]
},
{
"ename": "ValueError",
"evalue": "Missing coefficients: c",
"evalue": "Missing parameters: b, c",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[1;32mIn[3], line 6\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m# failed build due to missing parameters\u001b[39;00m\n\u001b[0;32m 2\u001b[0m styrene_fail \u001b[38;5;241m=\u001b[39m (\n\u001b[0;32m 3\u001b[0m \u001b[43mvapor_pressure_builders\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mAntoineBuilder\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 4\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mset_a\u001b[49m\u001b[43m(\u001b[49m\u001b[43mstyrene_coefficients\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43ma\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 5\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mset_b\u001b[49m\u001b[43m(\u001b[49m\u001b[43mstyrene_coefficients\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mb\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m----> 6\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbuild\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 7\u001b[0m )\n",
"File \u001b[1;32mC:\\GitHub\\particula\\particula\\next\\gas\\vapor_pressure_builders.py:91\u001b[0m, in \u001b[0;36mAntoineBuilder.build\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 89\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m [\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39ma, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mb, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mc]:\n\u001b[0;32m 90\u001b[0m missing \u001b[38;5;241m=\u001b[39m [p \u001b[38;5;28;01mfor\u001b[39;00m p \u001b[38;5;129;01min\u001b[39;00m [\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ma\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mb\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mc\u001b[39m\u001b[38;5;124m'\u001b[39m] \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mgetattr\u001b[39m(\u001b[38;5;28mself\u001b[39m, p) \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m]\n\u001b[1;32m---> 91\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mMissing coefficients: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m, \u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;241m.\u001b[39mjoin(missing)\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 92\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m AntoineVaporPressureStrategy(\n\u001b[0;32m 93\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39ma, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mb, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mc)\n",
"\u001b[1;31mValueError\u001b[0m: Missing coefficients: c"
"Cell \u001b[1;32mIn[5], line 5\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m# failed build due to missing parameters\u001b[39;00m\n\u001b[0;32m 2\u001b[0m styrene_fail \u001b[38;5;241m=\u001b[39m (\n\u001b[0;32m 3\u001b[0m \u001b[43mvapor_pressure_builders\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mAntoineBuilder\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 4\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mset_a\u001b[49m\u001b[43m(\u001b[49m\u001b[43mstyrene_coefficients\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43ma\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m----> 5\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbuild\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 6\u001b[0m )\n",
"File \u001b[1;32mC:\\GitHub\\particula\\particula\\next\\gas\\vapor_pressure_builders.py:198\u001b[0m, in \u001b[0;36mAntoineBuilder.build\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 193\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"Build the AntoineVaporPressureStrategy object with the set\u001b[39;00m\n\u001b[0;32m 194\u001b[0m \u001b[38;5;124;03mcoefficients.\"\"\"\u001b[39;00m\n\u001b[0;32m 195\u001b[0m \u001b[38;5;66;03m# if None in [self.a, self.b, self.c]:\u001b[39;00m\n\u001b[0;32m 196\u001b[0m \u001b[38;5;66;03m# missing = [p for p in ['a', 'b', 'c'] if getattr(self, p) is None]\u001b[39;00m\n\u001b[0;32m 197\u001b[0m \u001b[38;5;66;03m# raise ValueError(f\"Missing coefficients: {', '.join(missing)}\")\u001b[39;00m\n\u001b[1;32m--> 198\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpre_build_check\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 199\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m AntoineVaporPressureStrategy(\n\u001b[0;32m 200\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39ma, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mb, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mc)\n",
"File \u001b[1;32mC:\\GitHub\\particula\\particula\\next\\gas\\vapor_pressure_builders.py:107\u001b[0m, in \u001b[0;36mBuilderBase.pre_build_check\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 105\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m missing:\n\u001b[0;32m 106\u001b[0m logger\u001b[38;5;241m.\u001b[39merror(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mMissing parameters: \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m, \u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;241m.\u001b[39mjoin(missing))\n\u001b[1;32m--> 107\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mMissing parameters: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m, \u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;241m.\u001b[39mjoin(missing)\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n",
"\u001b[1;31mValueError\u001b[0m: Missing parameters: b, c"
]
}
],
Expand All @@ -189,7 +197,6 @@
"styrene_fail = (\n",
" vapor_pressure_builders.AntoineBuilder()\n",
" .set_a(styrene_coefficients['a'])\n",
" .set_b(styrene_coefficients['b'])\n",
" .build()\n",
")"
]
Expand Down
10 changes: 6 additions & 4 deletions particula/next/gas/tests/vapor_pressure_builders_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,15 @@ def test_antoine_set_parameters_with_missing_key():
builder = AntoineBuilder()
with pytest.raises(ValueError) as excinfo:
builder.set_parameters({'a': 10, 'b': 2000})
assert "Missing coefficient 'c'." in str(excinfo.value)
assert "Missing required parameter(s): c" in str(excinfo.value)


def test_antoine_build_without_all_coefficients():
"""Test building the strategy without all coefficients set."""
builder = AntoineBuilder().set_a(10).set_b(2000)
with pytest.raises(ValueError) as excinfo:
builder.build()
assert "Missing coefficients: c" in str(excinfo.value)
assert "Required parameter(s) not set: c" in str(excinfo.value)


def test_clausius_set_latent_heat_positive():
Expand Down Expand Up @@ -118,7 +118,8 @@ def test_clausius_build_failure():
builder.set_latent_heat(2260, 'J/kg').set_temperature_initial(373, 'K')
with pytest.raises(ValueError) as excinfo:
builder.build()
assert "Missing parameters: pressure_initial" in str(excinfo.value)
assert "Required parameter(s) not set: pressure_initial" in str(
excinfo.value)


def test_constant_set_vapor_pressure_positive():
Expand Down Expand Up @@ -159,7 +160,8 @@ def test_constant_build_failure():
builder = ConstantBuilder()
with pytest.raises(ValueError) as excinfo:
builder.build()
assert "Missing parameter: vapor_pressure" in str(excinfo.value)
assert "Required parameter(s) not set: vapor_pressure" in str(
excinfo.value)


def test_build_water_buck():
Expand Down
2 changes: 1 addition & 1 deletion particula/next/gas/tests/vapor_pressure_factories_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,4 +72,4 @@ def test_factory_with_incomplete_parameters():
with pytest.raises(ValueError) as excinfo:
vapor_pressure_factory(strategy="antoine", parameters=parameters)
# Assuming builders check and raise for missing params
assert "Missing coefficient 'c'." in str(excinfo.value)
assert "Missing required parameter(s): c" in str(excinfo.value)
Loading

0 comments on commit 355c4b4

Please sign in to comment.