0.1.8
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
55except (AttributeError, ImportError):
56 # RadiationModel functions not available in current library
57 RadiationModel = None
58 CameraProperties = None
59 RadiationModelError = None
61try:
62 from .EnergyBalance import EnergyBalanceModel, EnergyBalanceModelError
63except (AttributeError, ImportError):
64 # EnergyBalanceModel functions not available in current library
65 EnergyBalanceModel = None
66 EnergyBalanceModelError = None
68try:
69 from .Visualizer import Visualizer, VisualizerError
70except (AttributeError, ImportError):
71 # Visualizer functions not available in current library
72 Visualizer = None
73 VisualizerError = None
75try:
76 from .SolarPosition import SolarPosition, SolarPositionError
77except (AttributeError, ImportError):
78 # SolarPosition functions not available in current library
79 SolarPosition = None
80 SolarPositionError = None
82try:
83 from .StomatalConductance import (
84 StomatalConductanceModel,
85 StomatalConductanceModelError,
86 BWBCoefficients,
87 BBLCoefficients,
88 MOPTCoefficients,
89 BMFCoefficients,
90 BBCoefficients
91 )
92except (AttributeError, ImportError):
93 # StomatalConductanceModel functions not available in current library
94 StomatalConductanceModel = None
95 StomatalConductanceModelError = None
96 BWBCoefficients = None
97 BBLCoefficients = None
98 MOPTCoefficients = None
99 BMFCoefficients = None
100 BBCoefficients = None
102try:
103 from .BoundaryLayerConductance import (
104 BoundaryLayerConductanceModel,
105 BoundaryLayerConductanceModelError
106 )
107except (AttributeError, ImportError):
108 # BoundaryLayerConductanceModel functions not available in current library
109 BoundaryLayerConductanceModel = None
110 BoundaryLayerConductanceModelError = None
112try:
113 from .PhotosynthesisModel import PhotosynthesisModel, PhotosynthesisModelError
114except (AttributeError, ImportError):
115 # PhotosynthesisModel functions not available in current library
116 PhotosynthesisModel = None
117 PhotosynthesisModelError = None
119try:
120 from .PlantArchitecture import PlantArchitecture, PlantArchitectureError
121except (AttributeError, ImportError):
122 # PlantArchitecture functions not available in current library
123 PlantArchitecture = None
124 PlantArchitectureError = None
125from .wrappers import DataTypes as DataTypes
126from . import dev_utils
127from .exceptions import (
128 HeliosError,
129 HeliosRuntimeError,
130 HeliosInvalidArgumentError,
131 HeliosUUIDNotFoundError,
132 HeliosFileIOError,
133 HeliosMemoryAllocationError,
134 HeliosGPUInitializationError,
135 HeliosPluginNotAvailableError,
136 HeliosUnknownError
137)
_get_version()
Get version with multiple fallback strategies.
Definition __init__.py:9