0.1.23
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 (
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, RandomParameter, RandomParameterInt
134except (AttributeError, ImportError):
135 # PlantArchitecture functions not available in current library
136 PlantArchitecture = None
137 PlantArchitectureError = None
139try:
140 from .LeafOptics import LeafOptics, LeafOpticsError, LeafOpticsProperties
141except (AttributeError, ImportError):
142 # LeafOptics functions not available in current library
143 LeafOptics = None
144 LeafOpticsError = None
145 LeafOpticsProperties = None
147try:
148 from .LiDARCloud import LiDARCloud, LiDARError, ScanPattern
149except (AttributeError, ImportError):
150 # LiDARCloud functions not available in current library
151 LiDARCloud = None
152 LiDARError = None
153 ScanPattern = None
155from .wrappers import DataTypes as DataTypes
156from . import dev_utils
157from .exceptions import (
158 HeliosError,
159 HeliosRuntimeError,
160 HeliosInvalidArgumentError,
161 HeliosUUIDNotFoundError,
162 HeliosFileIOError,
163 HeliosMemoryAllocationError,
164 HeliosGPUInitializationError,
165 HeliosPluginNotAvailableError,
166 HeliosUnknownError
167)
_get_version()
Get version with multiple fallback strategies.
Definition __init__.py:9