PyHelios 0.1.11
Loading...
Searching...
No Matches
__init__.py
Go to the documentation of this file.
1from .Global import Global
2from .Logger import Logger
3from .Context import Context, PrimitiveType
4
5# Version information with robust fallback strategies
6def _get_version():
7 """Get version with multiple fallback strategies."""
8 try:
9 from ._version import version
10 return version
11 except ImportError:
12 pass
13
14 try:
15 # Try setuptools-scm directly for development installs
16 from setuptools_scm import get_version
17 from pathlib import Path
18 return get_version(root=Path(__file__).parent.parent)
19 except (ImportError, LookupError):
20 pass
21
22 try:
23 # Try pkg_resources/importlib.metadata as final fallback
24 try:
25 from importlib.metadata import version
26 except ImportError:
27 # Python < 3.8 fallback
28 from importlib_metadata import version
29 return version('pyhelios')
30 except Exception:
31 pass
32
33 return "unknown"
34
35__version__ = _get_version()
36
37# Initialize asset paths for C++ plugins
38try:
39 from .assets import initialize_asset_paths
40 initialize_asset_paths()
41except Exception as e:
42 import logging
43 logging.getLogger(__name__).warning(f"Failed to initialize asset paths: {e}")
44
45# Optional plugin imports - only load if the native functions are available
46try:
47 from .WeberPennTree import WeberPennTree, WPTType
48except (AttributeError, ImportError):
49 # WeberPennTree functions not available in current library
50 WeberPennTree = None
51 WPTType = None
53try:
54 from .RadiationModel import RadiationModel, RadiationModelError, CameraProperties, CameraMetadata
55except (AttributeError, ImportError):
56 # RadiationModel functions not available in current library
57 RadiationModel = None
58 CameraProperties = None
59 CameraMetadata = None
60 RadiationModelError = None
62try:
63 from .EnergyBalance import EnergyBalanceModel, EnergyBalanceModelError
64except (AttributeError, ImportError):
65 # EnergyBalanceModel functions not available in current library
66 EnergyBalanceModel = None
67 EnergyBalanceModelError = None
69try:
70 from .Visualizer import Visualizer, VisualizerError
71except (AttributeError, ImportError):
72 # Visualizer functions not available in current library
73 Visualizer = None
74 VisualizerError = None
76try:
77 from .SolarPosition import SolarPosition, SolarPositionError
78except (AttributeError, ImportError):
79 # SolarPosition functions not available in current library
80 SolarPosition = None
81 SolarPositionError = None
83try:
84 from .StomatalConductance import (
85 StomatalConductanceModel,
86 StomatalConductanceModelError,
87 BWBCoefficients,
88 BBLCoefficients,
89 MOPTCoefficients,
90 BMFCoefficients,
91 BBCoefficients
92 )
93except (AttributeError, ImportError):
94 # StomatalConductanceModel functions not available in current library
95 StomatalConductanceModel = None
96 StomatalConductanceModelError = None
97 BWBCoefficients = None
98 BBLCoefficients = None
99 MOPTCoefficients = None
100 BMFCoefficients = None
101 BBCoefficients = None
103try:
104 from .BoundaryLayerConductance import (
105 BoundaryLayerConductanceModel,
106 BoundaryLayerConductanceModelError
107 )
108except (AttributeError, ImportError):
109 # BoundaryLayerConductanceModel functions not available in current library
110 BoundaryLayerConductanceModel = None
111 BoundaryLayerConductanceModelError = None
113try:
114 from .PhotosynthesisModel import PhotosynthesisModel, PhotosynthesisModelError
115except (AttributeError, ImportError):
116 # PhotosynthesisModel functions not available in current library
117 PhotosynthesisModel = None
118 PhotosynthesisModelError = None
120try:
121 from .PlantArchitecture import PlantArchitecture, PlantArchitectureError
122except (AttributeError, ImportError):
123 # PlantArchitecture functions not available in current library
124 PlantArchitecture = None
125 PlantArchitectureError = None
127try:
128 from .LeafOptics import LeafOptics, LeafOpticsError, LeafOpticsProperties
129except (AttributeError, ImportError):
130 # LeafOptics functions not available in current library
131 LeafOptics = None
132 LeafOpticsError = None
133 LeafOpticsProperties = None
134from .wrappers import DataTypes as DataTypes
135from . import dev_utils
136from .exceptions import (
137 HeliosError,
138 HeliosRuntimeError,
139 HeliosInvalidArgumentError,
140 HeliosUUIDNotFoundError,
141 HeliosFileIOError,
142 HeliosMemoryAllocationError,
143 HeliosGPUInitializationError,
144 HeliosPluginNotAvailableError,
145 HeliosUnknownError
146)
_get_version()
Get version with multiple fallback strategies.
Definition __init__.py:9