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.
Files changed (37) hide show
  1. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/PKG-INFO +1 -1
  2. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/PyGeoModel.egg-info/PKG-INFO +1 -1
  3. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/pygeomodel/__init__.py +1 -1
  4. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/pygeomodel/models.py +8 -2
  5. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/pygeomodel/results.py +5 -20
  6. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/setup.py +1 -1
  7. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/tests/test_core_api.py +4 -3
  8. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/LICENSE +0 -0
  9. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/MANIFEST.in +0 -0
  10. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/PyGeoModel.egg-info/SOURCES.txt +0 -0
  11. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/PyGeoModel.egg-info/dependency_links.txt +0 -0
  12. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/PyGeoModel.egg-info/requires.txt +0 -0
  13. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/PyGeoModel.egg-info/top_level.txt +0 -0
  14. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/README.md +0 -0
  15. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/ogmsServer2/__init__.py +0 -0
  16. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/ogmsServer2/base.py +0 -0
  17. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/ogmsServer2/constants.py +0 -0
  18. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/ogmsServer2/openModel.py +0 -0
  19. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/ogmsServer2/openUtils/__init__.py +0 -0
  20. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/ogmsServer2/openUtils/exceptions.py +0 -0
  21. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/ogmsServer2/openUtils/http_client.py +0 -0
  22. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/ogmsServer2/openUtils/mdlUtils.py +0 -0
  23. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/ogmsServer2/openUtils/parameterValidator.py +0 -0
  24. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/ogmsServer2/openUtils/stateManager.py +0 -0
  25. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/pygeomodel/client.py +0 -0
  26. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/pygeomodel/config.py +0 -0
  27. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/pygeomodel/consensus.py +0 -0
  28. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/pygeomodel/context.py +0 -0
  29. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/pygeomodel/data/__init__.py +0 -0
  30. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/pygeomodel/data/computeModel.json +0 -0
  31. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/pygeomodel/data/modelContext.txt +0 -0
  32. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/pygeomodel/modeler.py +0 -0
  33. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/pygeomodel/notebook.py +0 -0
  34. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/pygeomodel/qa.py +0 -0
  35. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/pygeomodel/recommendation.py +0 -0
  36. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/scripts.py +0 -0
  37. {pygeomodel-1.0.9 → pygeomodel-1.0.10}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyGeoModel
3
- Version: 1.0.9
3
+ Version: 1.0.10
4
4
  Summary: A Python package for integrating OpenGMS geographic model services.
5
5
  Home-page: https://github.com/MpLebron/PyGeoModel
6
6
  Author: Peilong Ma
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyGeoModel
3
- Version: 1.0.9
3
+ Version: 1.0.10
4
4
  Summary: A Python package for integrating OpenGMS geographic model services.
5
5
  Home-page: https://github.com/MpLebron/PyGeoModel
6
6
  Author: Peilong Ma
@@ -5,7 +5,7 @@ from .modeler import GeoModeler
5
5
  from .models import ModelInput, ModelOutput, ModelService, ModelSummary
6
6
  from .results import QAResult, RecommendationResult, TaskResult
7
7
 
8
- __version__ = "1.0.9"
8
+ __version__ = "1.0.10"
9
9
 
10
10
  __all__ = [
11
11
  "GeoModeler",
@@ -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
- return float(value)
204
+ try:
205
+ return float(value)
206
+ except (TypeError, ValueError):
207
+ return value
205
208
  if dtype in {"INT", "INTEGER"}:
206
- return int(value)
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.9"
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
- ) -> "TaskResult":
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
- badge = '<span class="pygeomodel-rec-badge">Recommended</span>' if is_primary else ""
693
+ rank_label = f"&#9733; 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
- Rank {rank}
713
- {badge}
698
+ {rank_label}
714
699
  </div>
715
700
  <div>
716
701
  <div class="pygeomodel-rec-name">{name}</div>
@@ -11,7 +11,7 @@ def read_readme():
11
11
 
12
12
  setup(
13
13
  name="PyGeoModel",
14
- version="1.0.9",
14
+ version="1.0.10",
15
15
  author="Peilong Ma",
16
16
  author_email="mpl_gis@nnu.edu.cn",
17
17
  description="A Python package for integrating OpenGMS geographic model services.",
@@ -356,7 +356,7 @@ class CoreApiTests(unittest.TestCase):
356
356
  finally:
357
357
  client_module.download_output_files = original_downloader
358
358
 
359
- self.assertIs(returned, result)
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.assertIs(returned, result)
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("Recommended", html)
543
+ self.assertIn("&#9733; 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