0.1.33
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, VertexNormalSource, VertexWeldMode
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 (
55 RadiationModel,
56 RadiationModelError,
57 CameraProperties,
58 CameraMetadata,
59 SIFCameraProperties,
60 )
61except (AttributeError, ImportError):
62 # RadiationModel functions not available in current library
63 RadiationModel = None
64 CameraProperties = None
65 CameraMetadata = None
66 RadiationModelError = None
67 SIFCameraProperties = None
69try:
70 from .EnergyBalance import EnergyBalanceModel, EnergyBalanceModelError
71except (AttributeError, ImportError):
72 # EnergyBalanceModel functions not available in current library
73 EnergyBalanceModel = None
74 EnergyBalanceModelError = None
76try:
77 from .Visualizer import Visualizer, VisualizerError
78except (AttributeError, ImportError):
79 # Visualizer functions not available in current library
80 Visualizer = None
81 VisualizerError = None
83try:
84 from .SolarPosition import SolarPosition, SolarPositionError
85except (AttributeError, ImportError):
86 # SolarPosition functions not available in current library
87 SolarPosition = None
88 SolarPositionError = None
90try:
91 from .StomatalConductance import (
92 StomatalConductanceModel,
93 StomatalConductanceModelError,
94 BWBCoefficients,
95 BBLCoefficients,
96 MOPTCoefficients,
97 BMFCoefficients,
98 BBCoefficients
99 )
100except (AttributeError, ImportError):
101 # StomatalConductanceModel functions not available in current library
102 StomatalConductanceModel = None
103 StomatalConductanceModelError = None
104 BWBCoefficients = None
105 BBLCoefficients = None
106 MOPTCoefficients = None
107 BMFCoefficients = None
108 BBCoefficients = None
110try:
111 from .BoundaryLayerConductance import (
112 BoundaryLayerConductanceModel,
113 BoundaryLayerConductanceModelError
114 )
115except (AttributeError, ImportError):
116 # BoundaryLayerConductanceModel functions not available in current library
117 BoundaryLayerConductanceModel = None
118 BoundaryLayerConductanceModelError = None
120try:
121 from .PhotosynthesisModel import (
122 PhotosynthesisModel,
123 PhotosynthesisModelError,
124 AVAILABLE_C4_SPECIES,
125 )
126except (AttributeError, ImportError):
127 # PhotosynthesisModel functions not available in current library
128 PhotosynthesisModel = None
129 PhotosynthesisModelError = None
130 AVAILABLE_C4_SPECIES = []
132try:
133 from .PlantArchitecture import PlantArchitecture, PlantArchitectureError
134except (AttributeError, ImportError):
135 # PlantArchitecture functions not available in current library
136 PlantArchitecture = None
137 PlantArchitectureError = None
139# Typed plant architecture parameter model (pure Python, always importable)
140from .plant_architecture_params import (
141 BudState,
142 RandomParameter,
143 RandomParameterFloat,
144 RandomParameterInt,
145 LeafPrototype,
146 InternodeParameters,
147 PetioleParameters,
148 LeafParameters,
149 PeduncleParameters,
150 InflorescenceParameters,
151 PhytomerParameters,
152 ShootParameters,
153 CarbohydrateParameters,
154 NitrogenParameters,
155 LEAF_EXPANSION_RATE_UNSET,
156)
157
158try:
159 from .LeafOptics import LeafOptics, LeafOpticsError, LeafOpticsProperties
160except (AttributeError, ImportError):
161 # LeafOptics functions not available in current library
162 LeafOptics = None
163 LeafOpticsError = None
164 LeafOpticsProperties = None
166try:
167 from .LiDARCloud import (
168 LiDARCloud, LiDARError, ScanPattern,
169 ScanMode, ReturnMode, SingleReturnSelection, RisleyPrism,
170 )
171except (AttributeError, ImportError):
172 # LiDARCloud functions not available in current library
173 LiDARCloud = None
174 LiDARError = None
175 ScanPattern = None
176 ScanMode = None
177 ReturnMode = None
178 SingleReturnSelection = None
179 RisleyPrism = None
181try:
182 from .ParameterOptimization import (
183 ParameterOptimization, ParameterOptimizationError, OptimizationResult,
184 ConstrainedResult, make_constrained_simulation,
185 Parameter, ParameterType,
186 GeneticAlgorithm, BayesianOptimization, CMAES, Adam, LBFGS, BOBYQA, SLSQP,
187 BLXAlphaCrossover, BLXPCACrossover,
188 PerGeneMutation, IsotropicMutation, HybridMutation,
189 )
190except (AttributeError, ImportError):
191 # ParameterOptimization functions not available in current library
192 ParameterOptimization = None
193 ParameterOptimizationError = None
194 OptimizationResult = None
195 ConstrainedResult = None
196 make_constrained_simulation = None
197 Parameter = None
198 ParameterType = None
199 GeneticAlgorithm = None
200 BayesianOptimization = None
201 CMAES = None
202 Adam = None
203 LBFGS = None
204 BOBYQA = None
205 SLSQP = None
206 BLXAlphaCrossover = None
207 BLXPCACrossover = None
208 PerGeneMutation = None
209 IsotropicMutation = None
210 HybridMutation = None
212from .wrappers import DataTypes as DataTypes
213from . import dev_utils
214from .exceptions import (
215 HeliosError,
216 HeliosRuntimeError,
217 HeliosInvalidArgumentError,
218 HeliosUUIDNotFoundError,
219 HeliosFileIOError,
220 HeliosMemoryAllocationError,
221 HeliosGPUInitializationError,
222 HeliosPluginNotAvailableError,
223 HeliosUnknownError
224)
_get_version()
Get version with multiple fallback strategies.
Definition __init__.py:9