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