PyGeoModel 1.0.9__tar.gz → 1.0.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.
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/PKG-INFO +1 -1
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/PyGeoModel.egg-info/PKG-INFO +1 -1
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/pygeomodel/__init__.py +1 -1
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/pygeomodel/models.py +8 -2
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/pygeomodel/results.py +5 -20
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/setup.py +1 -1
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/tests/test_core_api.py +4 -3
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/LICENSE +0 -0
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/MANIFEST.in +0 -0
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/PyGeoModel.egg-info/SOURCES.txt +0 -0
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/PyGeoModel.egg-info/dependency_links.txt +0 -0
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/PyGeoModel.egg-info/requires.txt +0 -0
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/PyGeoModel.egg-info/top_level.txt +0 -0
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/README.md +0 -0
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/ogmsServer2/__init__.py +0 -0
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/ogmsServer2/base.py +0 -0
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/ogmsServer2/constants.py +0 -0
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/ogmsServer2/openModel.py +0 -0
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/ogmsServer2/openUtils/__init__.py +0 -0
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/ogmsServer2/openUtils/exceptions.py +0 -0
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/ogmsServer2/openUtils/http_client.py +0 -0
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/ogmsServer2/openUtils/mdlUtils.py +0 -0
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/ogmsServer2/openUtils/parameterValidator.py +0 -0
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/ogmsServer2/openUtils/stateManager.py +0 -0
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/pygeomodel/client.py +0 -0
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/pygeomodel/config.py +0 -0
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/pygeomodel/consensus.py +0 -0
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/pygeomodel/context.py +0 -0
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/pygeomodel/data/__init__.py +0 -0
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/pygeomodel/data/computeModel.json +0 -0
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/pygeomodel/data/modelContext.txt +0 -0
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/pygeomodel/modeler.py +0 -0
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/pygeomodel/notebook.py +0 -0
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/pygeomodel/qa.py +0 -0
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/pygeomodel/recommendation.py +0 -0
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/scripts.py +0 -0
- {pygeomodel-1.0.9 → pygeomodel-1.0.10}/setup.cfg +0 -0
|
@@ -201,9 +201,15 @@ class ModelService:
|
|
|
201
201
|
return str(value)
|
|
202
202
|
dtype = (item.data_type or "").upper()
|
|
203
203
|
if dtype in {"REAL", "DOUBLE", "FLOAT"}:
|
|
204
|
-
|
|
204
|
+
try:
|
|
205
|
+
return float(value)
|
|
206
|
+
except (TypeError, ValueError):
|
|
207
|
+
return value
|
|
205
208
|
if dtype in {"INT", "INTEGER"}:
|
|
206
|
-
|
|
209
|
+
try:
|
|
210
|
+
return int(value)
|
|
211
|
+
except (TypeError, ValueError):
|
|
212
|
+
return value
|
|
207
213
|
if dtype in {"BOOL", "BOOLEAN"}:
|
|
208
214
|
if isinstance(value, str):
|
|
209
215
|
return value.strip().lower() in {"true", "1", "yes", "y"}
|
|
@@ -30,7 +30,7 @@ class TaskResult:
|
|
|
30
30
|
params: dict[str, Any] = field(default_factory=dict)
|
|
31
31
|
uploaded_inputs: dict[str, Any] = field(default_factory=dict)
|
|
32
32
|
endpoint: str | None = None
|
|
33
|
-
pygeomodel_version: str = "1.0.
|
|
33
|
+
pygeomodel_version: str = "1.0.10"
|
|
34
34
|
execution_time: float | None = None
|
|
35
35
|
record_path: str | None = None
|
|
36
36
|
created_at: float = field(default_factory=time.time)
|
|
@@ -52,12 +52,12 @@ class TaskResult:
|
|
|
52
52
|
self,
|
|
53
53
|
output_dir: str | Path | None = None,
|
|
54
54
|
record_path: str | Path | None = None,
|
|
55
|
-
) ->
|
|
55
|
+
) -> list[str]:
|
|
56
56
|
if output_dir is not None:
|
|
57
57
|
self.download(output_dir)
|
|
58
58
|
if record_path is not None:
|
|
59
59
|
self.to_json(record_path)
|
|
60
|
-
return self
|
|
60
|
+
return self.downloaded_outputs
|
|
61
61
|
|
|
62
62
|
def _repr_markdown_(self) -> str:
|
|
63
63
|
return f"Model run: {self.model_name}\n\nStatus: {self.status}\n\nTask ID: {self.task_id or 'Not returned'}"
|
|
@@ -583,20 +583,6 @@ def _recommendation_to_html(result: RecommendationResult) -> str:
|
|
|
583
583
|
line-height: 1.4;
|
|
584
584
|
white-space: nowrap;
|
|
585
585
|
}}
|
|
586
|
-
.pygeomodel-rec-badge {{
|
|
587
|
-
display: inline-block;
|
|
588
|
-
margin-top: 6px;
|
|
589
|
-
border-radius: 999px;
|
|
590
|
-
border: 1px solid #bfdbfe;
|
|
591
|
-
background: #dbeafe;
|
|
592
|
-
color: #1d4ed8;
|
|
593
|
-
padding: 2px 7px;
|
|
594
|
-
font-size: 11px;
|
|
595
|
-
font-weight: 700;
|
|
596
|
-
line-height: 1.4;
|
|
597
|
-
text-transform: none;
|
|
598
|
-
letter-spacing: 0;
|
|
599
|
-
}}
|
|
600
586
|
.pygeomodel-rec-name {{
|
|
601
587
|
color: #0f172a;
|
|
602
588
|
font-size: 13px;
|
|
@@ -704,13 +690,12 @@ def _recommendation_candidate_row(candidate: dict[str, Any]) -> str:
|
|
|
704
690
|
rank = html.escape(str(candidate.get("rank") or ""))
|
|
705
691
|
is_primary = bool(candidate.get("is_primary"))
|
|
706
692
|
primary_class = " primary" if is_primary else ""
|
|
707
|
-
|
|
693
|
+
rank_label = f"★ Rank {rank}" if is_primary else f"Rank {rank}"
|
|
708
694
|
|
|
709
695
|
return f"""
|
|
710
696
|
<div class="pygeomodel-rec-row{primary_class}">
|
|
711
697
|
<div class="pygeomodel-rec-rank">
|
|
712
|
-
|
|
713
|
-
{badge}
|
|
698
|
+
{rank_label}
|
|
714
699
|
</div>
|
|
715
700
|
<div>
|
|
716
701
|
<div class="pygeomodel-rec-name">{name}</div>
|
|
@@ -356,7 +356,7 @@ class CoreApiTests(unittest.TestCase):
|
|
|
356
356
|
finally:
|
|
357
357
|
client_module.download_output_files = original_downloader
|
|
358
358
|
|
|
359
|
-
self.
|
|
359
|
+
self.assertEqual(returned, [str(tmpdir / "outputs" / "SolarCalculation-roofSloar.zip")])
|
|
360
360
|
self.assertEqual(
|
|
361
361
|
result.downloaded_outputs,
|
|
362
362
|
[str(tmpdir / "outputs" / "SolarCalculation-roofSloar.zip")],
|
|
@@ -389,7 +389,7 @@ class CoreApiTests(unittest.TestCase):
|
|
|
389
389
|
finally:
|
|
390
390
|
client_module.download_output_files = original_downloader
|
|
391
391
|
|
|
392
|
-
self.
|
|
392
|
+
self.assertEqual(returned, [str(tmpdir / "outputs" / "SolarCalculation-roofSloar.zip")])
|
|
393
393
|
self.assertEqual(
|
|
394
394
|
result.downloaded_outputs,
|
|
395
395
|
[str(tmpdir / "outputs" / "SolarCalculation-roofSloar.zip")],
|
|
@@ -540,7 +540,8 @@ class CoreApiTests(unittest.TestCase):
|
|
|
540
540
|
|
|
541
541
|
html = result._repr_html_()
|
|
542
542
|
|
|
543
|
-
self.assertIn("
|
|
543
|
+
self.assertIn("★ Rank 1", html)
|
|
544
|
+
self.assertNotIn("Recommended</span>", html)
|
|
544
545
|
self.assertIn("Solar Potential Analysis Model", html)
|
|
545
546
|
self.assertIn("Rooftop Suitability Model", html)
|
|
546
547
|
self.assertIn("Relevant Data", html)
|
|
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
|