orchid-python-api 5.24.1__py3-none-any.whl → 5.24.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
ReleaseNotes.md CHANGED
@@ -13,6 +13,29 @@ the [Python grip utility](https://pypi.org/project/grip/). This application allo
13
13
  files before sending off to GitHub". Although you need not send any of these file to `GitHub`, by using `grip`
14
14
  to render the file, you can much more easily navigate the document links.
15
15
 
16
+ ### Release notes for 5.24.3
17
+
18
+ This release is the production release of the Orchid Python API corresponding to Orchid 5.24.3. We have made the necessary
19
+ updates to the Python API to remain compatible with the .NET API.
20
+
21
+ We have also updated dependencies on the Python side. Note that we skipped the 5.24.2 release as it was a smaller, quicker release.
22
+
23
+ #### Possible breaking .NET API changes
24
+
25
+ - None
26
+
27
+ #### Resolved Issues
28
+
29
+ - None
30
+
31
+ #### Features
32
+
33
+ - None
34
+
35
+ #### Known Issues
36
+
37
+ - None
38
+
16
39
  ### Release notes for 5.24.1
17
40
 
18
41
  This release is the production release of the Orchid Python API corresponding to Orchid 5.24.1. We have made the necessary
orchid/VERSION CHANGED
@@ -1 +1 @@
1
- 5.24.1
1
+ 5.24.3
orchid/configuration.py CHANGED
@@ -19,13 +19,12 @@ import glob
19
19
  import logging
20
20
  import os
21
21
  import pathlib
22
- from typing import Dict
22
+ from typing import Dict, Any
23
23
  import warnings
24
-
25
24
  import toolz.curried as toolz
26
25
  import yaml
27
26
 
28
- import orchid.version
27
+ from orchid.version import get_orchid_sdk_version
29
28
 
30
29
 
31
30
  _logger = logging.getLogger(__name__)
@@ -40,28 +39,20 @@ ORCHID_ROOT_ENV_VAR = 'ORCHID_ROOT'
40
39
  ORCHID_TRAINING_DATA_ENV_VAR = 'ORCHID_TRAINING_DATA'
41
40
 
42
41
 
43
- def get_environment_configuration() -> Dict:
42
+ def get_environment_configuration() -> Dict[str, Dict[str, str]]:
44
43
  """
45
44
  Gets the API configuration from the system environment.
46
45
 
47
46
  Returns:
48
47
  The configuration, if any, calculated from the system environment.
49
48
  """
50
- environment_configuration = {}
51
- if ORCHID_ROOT_ENV_VAR in os.environ and ORCHID_TRAINING_DATA_ENV_VAR in os.environ:
52
- environment_configuration = {'orchid': {'root': os.environ[ORCHID_ROOT_ENV_VAR],
53
- 'training_data': os.environ[ORCHID_TRAINING_DATA_ENV_VAR]}}
54
- elif ORCHID_ROOT_ENV_VAR in os.environ:
55
- environment_configuration = {'orchid': {'root': os.environ[ORCHID_ROOT_ENV_VAR]}}
56
- elif ORCHID_TRAINING_DATA_ENV_VAR in os.environ:
57
- environment_configuration = {'orchid': {'training_data': os.environ[ORCHID_TRAINING_DATA_ENV_VAR]}}
58
-
49
+ environment_configuration = {'orchid': {key: os.environ[env_var] for key, env_var in
50
+ [('root', ORCHID_ROOT_ENV_VAR), ('training_data', ORCHID_TRAINING_DATA_ENV_VAR)] if env_var in os.environ}}
59
51
  _logger.debug(f'environment configuration = {environment_configuration}')
60
-
61
52
  return environment_configuration
62
53
 
63
54
 
64
- def get_fallback_configuration() -> Dict:
55
+ def get_fallback_configuration() -> Dict[str, Dict[str, str]]:
65
56
  """
66
57
  Returns final fallback API configuration.
67
58
 
@@ -80,24 +71,25 @@ def get_fallback_configuration() -> Dict:
80
71
  # `$ProgramFiles/Reveal Energy Services, Inc/Orchid/<version-specific-directory>`. The following code
81
72
  # calculates an actual location by substituting the current version number for the symbol,
82
73
  # `<version-specific-directory>`.
83
- standard_orchid_dir = pathlib.Path(os.environ['ProgramFiles']).joinpath('Reveal Energy Services',
84
- 'Orchid')
85
- version_id = orchid.version.api_version()
86
- version_dirname = f'Orchid-{version_id.major}.{version_id.minor}.{version_id.micro}'
87
- glob_path = standard_orchid_dir.joinpath(f'{version_dirname}*', 'PythonApiLibs')
88
- candidate_directories = glob.glob(str(glob_path))
89
- if len(candidate_directories) == 1:
90
- fallback = {'orchid': {'root': str(candidate_directories[0])}}
91
- elif len(candidate_directories) == 0:
92
- fallback = {}
93
- else:
94
- fallback = {}
95
- warnings.warn(f'Fallback configuration found multiple matches for {str(glob_path)}')
96
- _logger.debug(f'fallback configuration={fallback}')
74
+ program_files_path = os.environ.get("ProgramFiles")
75
+ fallback = {}
76
+ if program_files_path is not None:
77
+ orchid_version = get_orchid_sdk_version() + '.*'
78
+ python_api_lib_pattern_path = os.path.join(program_files_path, 'Reveal Energy Services', 'Orchid', orchid_version, 'Orchid-'+orchid_version, 'PythonApiLibs')
79
+ matching_paths = glob.glob(python_api_lib_pattern_path)
80
+ if len(matching_paths) == 1:
81
+ python_api_lib_path = matching_paths[0]
82
+ _logger.info(f"PythonApiLibs path found : {python_api_lib_path}")
83
+ fallback = {'orchid': {'root': str(matching_paths[0])}}
84
+ elif len(matching_paths) == 0:
85
+ _logger.info(f"PythonApiLibs path not found for {str(python_api_lib_pattern_path)}")
86
+ else:
87
+ warnings.warn(f'Fallback configuration found multiple matches for {str(python_api_lib_pattern_path)}')
88
+ _logger.debug(f'fallback configuration={fallback}')
97
89
  return fallback
98
90
 
99
91
 
100
- def get_file_configuration() -> Dict:
92
+ def get_file_configuration() -> Dict[str, Any]:
101
93
  """
102
94
  Returns the API configuration read from the file system.
103
95
 
@@ -117,7 +109,7 @@ def get_file_configuration() -> Dict:
117
109
  return file
118
110
 
119
111
 
120
- def python_api() -> Dict[str, str]:
112
+ def get_configuration() -> Dict[str, Dict[str, Any]]:
121
113
  """
122
114
  Calculate the configuration for the Python API.
123
115
 
@@ -128,12 +120,15 @@ def python_api() -> Dict[str, str]:
128
120
  file_configuration = get_file_configuration()
129
121
  env_configuration = get_environment_configuration()
130
122
 
131
- result = merge_configurations(fallback_configuration, file_configuration, env_configuration)
132
- _logger.debug(f'result configuration={result}')
133
- return result
123
+ configuration_dict = merge_configurations(fallback_configuration, file_configuration, env_configuration)
124
+ if not configuration_dict.get('orchid') or (configuration_dict.get('orchid') and not configuration_dict['orchid'].get('root')):
125
+ raise ConfigurationError("You must create an environment variable ORCHID_ROOT or a config file to set up the path to the PythonApiLibs folder since it's not in the default location")
126
+
127
+ _logger.debug(f'result configuration={configuration_dict}')
128
+ return configuration_dict
134
129
 
135
130
 
136
- def merge_configurations(fallback_configuration, file_configuration, env_configuration):
131
+ def merge_configurations(fallback_configuration: Dict[str, Dict[str, str]], file_configuration: Dict[str, Dict[str, Any]], env_configuration: Dict[str, Dict[str, str]]) -> Dict[str, Dict[str, Any]]:
137
132
  # The rules for merging these configurations is not the same as a simple dictionary. The rules are:
138
133
  # - If two different configurations share a top-level key, merge the second level dictionaries.
139
134
  # - Then merge the distinct top-level keys.
@@ -163,5 +158,5 @@ def training_data_path() -> pathlib.Path:
163
158
  This function raises KeyError if the training directory path is not available from the package
164
159
  configuration.
165
160
  """
166
- result = pathlib.Path(toolz.get_in(['orchid', 'training_data'], python_api()))
161
+ result = pathlib.Path(toolz.get_in(['orchid', 'training_data'], get_configuration()))
167
162
  return result
orchid/dot_net.py CHANGED
@@ -54,8 +54,7 @@ def app_settings_path() -> str:
54
54
 
55
55
  :return: The required pathname.
56
56
  """
57
- result = os.fspath(pathlib.Path(toolz.get_in(['orchid', 'root'],
58
- orchid.configuration.python_api())).joinpath('appSettings.json'))
57
+ result = os.fspath(pathlib.Path(toolz.get_in(['orchid', 'root'], orchid.configuration.get_configuration())).joinpath('appSettings.json'))
59
58
  return result
60
59
 
61
60
 
@@ -13,6 +13,7 @@
13
13
  #
14
14
 
15
15
  import dataclasses
16
+ import traceback
16
17
  import uuid
17
18
  from typing import Iterable
18
19
 
@@ -227,9 +228,13 @@ def _table_row_to_dict(reader):
227
228
  except ValueError as ve:
228
229
  if 'DateTimeOffset.MinValue' in str(ve):
229
230
  raise DataFrameAdapterDateTimeOffsetMinValueError(column_no, column_name)
231
+ else:
232
+ raise Exception(f"Cannot read value from dot net data table column {column_no} named {column_name}, value {value}, {traceback.format_exc()}")
230
233
  except TypeError as te:
231
234
  if 'System.DateTime' in str(te):
232
235
  raise DataFrameAdapterDateTimeError(value.GetType())
236
+ else:
237
+ raise Exception(f"Cannot read value from dot net data table column {column_no} named {column_name}, value {value}, {traceback.format_exc()}")
233
238
 
234
239
  result = toolz.pipe(
235
240
  reader.FieldCount,
@@ -61,7 +61,7 @@ class NativeMonitorAdapter(dpo.DomProjectObject):
61
61
 
62
62
  Returns:
63
63
  The time range during which this monitor is active. The type of the returned value is
64
- `pendulum.Period`. See the [documentation](https://pendulum.eustace.io/docs/) to understand the
65
- methods available from a `pendulum.Period` instance.
64
+ `pendulum.Interval`. See the [documentation](https://pendulum.eustace.io/docs/) to understand the
65
+ methods available from a `pendulum.Interval` instance.
66
66
  """
67
- return pendulum.Period(self.start_time, self.stop_time)
67
+ return pendulum.Interval(self.start_time, self.stop_time)
@@ -141,10 +141,10 @@ class NativeStageAdapter(dpo.DomProjectObject):
141
141
  stop_time = dna.transformed_dom_property('stop_time', 'The stop time of the stage treatment',
142
142
  ndt.as_date_time)
143
143
 
144
- def _get_time_range(self) -> pdt.Period:
145
- return pdt.period(self.start_time, self.stop_time)
144
+ def _get_time_range(self) -> pdt.Interval:
145
+ return pdt.Interval(self.start_time, self.stop_time)
146
146
 
147
- def _set_time_range(self, to_time_range: pdt.Period):
147
+ def _set_time_range(self, to_time_range: pdt.Interval):
148
148
  to_start_net_time = ndt.as_net_date_time(to_time_range.start)
149
149
  to_stop_net_time = ndt.as_net_date_time(to_time_range.end)
150
150
  if len(self.stage_parts()) == 1:
@@ -486,7 +486,7 @@ class CreateStageDto:
486
486
  # issue with Orchid.
487
487
  #
488
488
  # Note supplying no value (an implicit `None`) results in the largest possible .NET time range.
489
- maybe_time_range: Optional[pdt.Period] = None
489
+ maybe_time_range: Optional[pdt.Interval] = None
490
490
  # WARNING: one must currently supply an ISIP for each stage; otherwise, Orchid fails to correctly load
491
491
  # the project saved with the added stages.
492
492
  maybe_isip: Optional[om.Quantity] = None # If not `None`, must be a pressure
orchid/net_date_time.py CHANGED
@@ -24,7 +24,6 @@ from typing import Tuple, Union
24
24
 
25
25
  import dateutil.tz as duz
26
26
  import pendulum as pdt
27
- import pendulum.tz as ptz
28
27
 
29
28
  from orchid import base
30
29
 
@@ -170,7 +169,7 @@ def _(net_time_point: DateTime) -> pdt.DateTime:
170
169
  return NAT
171
170
 
172
171
  if net_time_point.Kind == DateTimeKind.Utc:
173
- return _net_time_point_to_datetime(base.constantly(ptz.UTC), net_time_point)
172
+ return _net_time_point_to_datetime(base.constantly(pdt.UTC), net_time_point)
174
173
 
175
174
  if net_time_point.Kind == DateTimeKind.Unspecified:
176
175
  raise NetDateTimeUnspecifiedDateTimeKindError(net_time_point)
@@ -201,9 +200,9 @@ def _(net_time_point: DateTimeOffset) -> pdt.DateTime:
201
200
  def net_date_time_offset_to_timezone(ntp):
202
201
  integral_offset = int(ntp.Offset.TotalSeconds)
203
202
  if integral_offset == 0:
204
- return ptz.UTC
203
+ return pdt.UTC
205
204
 
206
- return ptz.timezone(integral_offset)
205
+ return pdt.timezone(integral_offset)
207
206
 
208
207
  return _net_time_point_to_datetime(net_date_time_offset_to_timezone, net_time_point)
209
208
 
@@ -227,7 +226,7 @@ def as_net_date_time(time_point: pdt.DateTime) -> DateTime:
227
226
  if time_point == NAT:
228
227
  return DateTime.MinValue
229
228
 
230
- if not time_point.tzinfo == ptz.UTC:
229
+ if not time_point.tzinfo == pdt.UTC:
231
230
  raise NetDateTimeNoTzInfoError(time_point)
232
231
 
233
232
  carry_seconds, milliseconds = microseconds_to_milliseconds_with_carry(time_point.microsecond)
@@ -32,7 +32,7 @@ def append_orchid_assemblies_directory_path() -> None:
32
32
  """
33
33
  Append the directory containing the required Orchid assemblies to `sys.path`.
34
34
  """
35
- orchid_bin_dir = toolz.get_in(['orchid', 'root'], orchid.configuration.python_api())
35
+ orchid_bin_dir = toolz.get_in(['orchid', 'root'], orchid.configuration.get_configuration())
36
36
  if orchid_bin_dir not in sys.path:
37
37
  sys.path.append(orchid_bin_dir)
38
38
 
orchid/version.py CHANGED
@@ -14,20 +14,24 @@
14
14
  #
15
15
  # This file is part of Orchid and related technologies.
16
16
  #
17
-
17
+ import re
18
18
  import pathlib
19
19
 
20
- import packaging.version as pv
21
-
22
20
 
23
- def api_version():
21
+ def get_orchid_sdk_version():
24
22
  """
25
23
  Calculate the Python API version.
26
24
 
27
25
  Returns:
28
26
  The Python API version read from the `VERSION` file.
29
27
  """
30
- with pathlib.Path(__file__).parent.joinpath('VERSION').open() as version_file:
31
- text_version = version_file.read()
32
- result = pv.parse(text_version)
33
- return result
28
+ try:
29
+ with pathlib.Path(__file__).parent.joinpath('VERSION').open() as version_file:
30
+ text_version = version_file.read()
31
+ version_match = re.search(r'\d+\.\d+\.\d+(?:\.\d+)?', text_version)
32
+ if version_match:
33
+ return version_match.group()
34
+ else:
35
+ raise ValueError("Cannot find a correct version number in VERSION file.")
36
+ except FileNotFoundError:
37
+ raise FileNotFoundError("Missing VERSION file")
@@ -41,11 +41,11 @@ def change_stage_time_range(project):
41
41
  # Start time before change
42
42
  ante_start_time = stage.start_time
43
43
  ante_stop_time = stage.stop_time
44
- logging.info(f'Stage time_range before {pendulum.Period(ante_start_time, ante_stop_time)}')
44
+ logging.info(f'Stage time_range before {pendulum.Interval(ante_start_time, ante_stop_time)}')
45
45
 
46
46
  post_start_time = ante_start_time.subtract(minutes=10)
47
47
  post_stop_time = ante_stop_time.add(minutes=10)
48
- stage.time_range = pendulum.Period(post_start_time, post_stop_time)
48
+ stage.time_range = pendulum.Interval(post_start_time, post_stop_time)
49
49
  logging.info(f'Stage time_range after {stage.time_range}')
50
50
 
51
51
 
@@ -74,7 +74,7 @@ class CreateStageDto:
74
74
  # issue with Orchid.
75
75
  #
76
76
  # Note supplying no value (an implicit `None`) results in the largest possible .NET time range.
77
- maybe_time_range: Optional[pendulum.Period] = None
77
+ maybe_time_range: Optional[pendulum.Interval] = None
78
78
 
79
79
  # WARNING: one must currently supply an ISIP for each stage; otherwise, Orchid fails to correctly load
80
80
  # the project saved with the added stages.
@@ -0,0 +1,8 @@
1
+ clr==1.0.3
2
+ matplotlib==3.9.1
3
+ numpy==2.0.1
4
+ pandas==2.2.2
5
+ pendulum==3.0.0
6
+ pythonnet==3.0.3
7
+ scipy==1.14.0
8
+ seaborn==0.13.2
@@ -1,15 +1,15 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: orchid-python-api
3
- Version: 5.24.1
3
+ Version: 5.24.3
4
4
  Summary: Defines and implements the Python API for Orchid*. (*Orchid is a mark of KAPPA.)
5
5
  Home-page: https://github.com/Reveal-Energy-Services/orchid-python-api
6
6
  License: Apache-2.0
7
7
  Keywords: Orchid Integration,Fracture Diagnostics
8
8
  Author: KAPPA.
9
- Author-email: support@reveal-energy.com
9
+ Author-email: support@kappaeng.com
10
10
  Maintainer: KAPPA.
11
- Maintainer-email: support@reveal-energy.com
12
- Requires-Python: >=3.10,<3.11
11
+ Maintainer-email: support@kappaeng.com
12
+ Requires-Python: >=3.10,<3.13
13
13
  Classifier: Development Status :: 5 - Production/Stable
14
14
  Classifier: Intended Audience :: Other Audience
15
15
  Classifier: Intended Audience :: Science/Research
@@ -18,20 +18,20 @@ Classifier: Operating System :: Microsoft :: Windows :: Windows 10
18
18
  Classifier: Programming Language :: Python
19
19
  Classifier: Programming Language :: Python :: 3
20
20
  Classifier: Programming Language :: Python :: 3.10
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
21
23
  Classifier: Programming Language :: Python :: Implementation :: CPython
22
24
  Classifier: Topic :: Scientific/Engineering
23
25
  Classifier: Topic :: Software Development :: Libraries
24
26
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
25
27
  Requires-Dist: deal (>=4.23.4,<5.0.0)
26
28
  Requires-Dist: ipython (>=8.7.0,<9.0.0)
27
- Requires-Dist: jupyter (>=1.0.0,<2.0.0)
28
- Requires-Dist: jupyterlab (>=3.5.1,<4.0.0)
29
29
  Requires-Dist: matplotlib (>=3.6.2,<4.0.0)
30
30
  Requires-Dist: numpy (>=1.23.5,<2.0.0)
31
31
  Requires-Dist: option (>=2.1.0,<3.0.0)
32
- Requires-Dist: packaging (>=22.0,<23.0)
33
- Requires-Dist: pandas (>=1.5.2,<2.0.0)
34
- Requires-Dist: pendulum (>=2.1.2,<3.0.0)
32
+ Requires-Dist: packaging (>=24.1,<25.0)
33
+ Requires-Dist: pandas (>=2.2.2,<3.0.0)
34
+ Requires-Dist: pendulum (>=3.0.0,<4.0.0)
35
35
  Requires-Dist: pint (>=0.20.1,<0.21.0)
36
36
  Requires-Dist: python-dateutil (>=2.8.2,<3.0.0)
37
37
  Requires-Dist: pythonnet (==3.0.3)
@@ -7,18 +7,18 @@ orchid/__init__.py,sha256=DZQM55ae8abL4hm-0zufIAIBXZvjnce6nk8PP8MC-Lg,1534
7
7
  orchid/__version__.py,sha256=GhY9zH6qTpnoNYT8S-RPs8ClExoUJCbA9nfxq_zposI,701
8
8
  orchid/base.py,sha256=uE6ZVi79z6PI2pRLXkDv5pHTULqWCsDCipFMSWUfQbo,1046
9
9
  orchid/base_time_series_adapter.py,sha256=V8MH32zEW0P7EUyA8Tq3-3x6AKCM3U2Y8EvvfqvVS1Q,3737
10
- orchid/configuration.py,sha256=MF9kSeLMn6P6xCWT6M5Nnz5PO3luKiIKfO2rDo3U1jQ,6788
10
+ orchid/configuration.py,sha256=WBslnq676suhmHpmVfKpIV2RWPuEqYuM4KQi0Ur7E6I,7127
11
11
  orchid/convert.py,sha256=_g5DRWl4jgncFvx6YsxaC582wUxsdJtMSJ0V4xdXYV0,1796
12
12
  orchid/core.py,sha256=-lr4CgcXobk3jOTCyIVANnWGsqQHqXfBAFY0ldRAgdE,6507
13
13
  orchid/dom_project_object.py,sha256=r1BrMYeMh-4PLgqSgOrYj9tOfyh72Cv5OD60gCYWwFs,1151
14
- orchid/dot_net.py,sha256=9VFJbVsVwk_jxyoyZg0910qv2zm44D3cwrJpJEppqEU,2394
14
+ orchid/dot_net.py,sha256=JU_lxQ9OjnsIfOQWdNdu6gHIyDc0vHsSnSEgOomATOs,2351
15
15
  orchid/dot_net_disposable.py,sha256=m2-SVvBz55wn9rWxj50VU5VOIvL2NKDiyOOgy7cvqV8,2126
16
16
  orchid/dot_net_dom_access.py,sha256=DMKnAhJPn3ckJSFRF6I72ELmNWqIiZOO2bDsNIye8_Q,10259
17
17
  orchid/measurement.py,sha256=zjqsHEcN0TXGcYi2kHjfjkun6D_jtv7agjnzzHYziaA,1386
18
- orchid/native_data_frame_adapter.py,sha256=SeMmLjB13nIv3LcB6cL1XaSloN5myxAJrq7Gsp8MvuY,8393
19
- orchid/native_monitor_adapter.py,sha256=4TdAO3OTZ8TgNCljOJPc6MnXU15k_mX1fJ6I2NUJzus,2820
18
+ orchid/native_data_frame_adapter.py,sha256=xtcth4mtrD7VgwxZBGZTvhUgo2mMh68Y6R9NtnxFgxk,8767
19
+ orchid/native_monitor_adapter.py,sha256=WozUnF1c8_aUUiPnkzGiL4hdh3dhJShC9ntEX-OXlp4,2826
20
20
  orchid/native_project_user_data_adapter.py,sha256=TulEORrnDJbw3tzcEtatS_YvDTj-Dp2XoOSrljnK_FM,6190
21
- orchid/native_stage_adapter.py,sha256=k1En_EFGLkGkvxS_wH4BcreIkQWD4iZGIbyob2u-wBU,30491
21
+ orchid/native_stage_adapter.py,sha256=H3Vm6UYFPeRqgro57ThFndJ9sIzQAFtOD0pt50kQ8YU,30499
22
22
  orchid/native_stage_part_adapter.py,sha256=Q4sD2rrj-_wN9M9wRErEUSg65G3IZHU9tb2VAy8g4dA,2064
23
23
  orchid/native_subsurface_point.py,sha256=RquX6mS24mEsCCRpnOZ-CiTwpaGjiUw3I6oTxBIYaqU,2593
24
24
  orchid/native_time_series_adapter.py,sha256=JLrYrzcmApRsI2Hrv0a7Bwm71Kk5Gr5BuFAH4FFzV7M,2068
@@ -26,7 +26,7 @@ orchid/native_trajectory_adapter.py,sha256=ay0zoIBA7aOoQmQ4-a2wMB7ByL4zq4ilI7Yet
26
26
  orchid/native_treatment_calculations.py,sha256=F1dWkosyw3o_ZC09YRVt_UNCnAoX3wAaPET3NOFQXZw,7435
27
27
  orchid/native_treatment_curve_adapter.py,sha256=rZXw75baWrHmyGlZkibL5Ra90S_La9dQnXxXtbRdsk8,2496
28
28
  orchid/native_well_adapter.py,sha256=6qhomHX2XL1mjNSlrmqeskXAOuJddI1JIF-VqDCvbn4,5404
29
- orchid/net_date_time.py,sha256=Lo-h1uVyNaBa5-QR_uZ3N756YBJQnDtCeku02QzNZik,10765
29
+ orchid/net_date_time.py,sha256=bn7UCkb27cX8Dw-BONT92gwDTb5-oKQtQmvK4aTbveU,10738
30
30
  orchid/net_enumerable.py,sha256=o7PzM8Ifl4AzZesuVZEUTcrbdtjFoSxlsPpkgOaLwWE,2285
31
31
  orchid/net_fracture_diagnostics_factory.py,sha256=NG7HQnsDjJc3icOCFzJbJ-mH5cDOYKNgoFpHLppW3rs,2091
32
32
  orchid/net_quantity.py,sha256=x_-Wbo3kWRZGmb5Oqj7AyX_9ok47HvnmBbJlSz6K_pg,27111
@@ -35,21 +35,21 @@ orchid/physical_quantity.py,sha256=pfsvHf8yy36vfx3eaHaJQpQ1yYomttIKKfXbe0pWKz8,1
35
35
  orchid/project.py,sha256=iiV3uCaaFfZkP5jqLZD_xs9gm6d1gXSFqr-v5Uuv_kQ,7029
36
36
  orchid/project_store.py,sha256=5ek5SYmok5btvy3YqVWmYIbR-kfg0VaCa9SNoTEsoVY,12458
37
37
  orchid/reference_origins.py,sha256=bD-28-GIQeq8yKNpYPOyJITKWFF7SzWupF4wYrBipdI,1417
38
- orchid/script_adapter_context.py,sha256=nlZDLcfynsFxfh1sCulowR5V97QNYN-Pyz0iQuYZdn4,2931
38
+ orchid/script_adapter_context.py,sha256=9ZznRTq6JxF9z-DEkcS9p_IYdmK4-UktHaP59ZTbs7A,2938
39
39
  orchid/searchable_data_frames.py,sha256=yy3tRMWgo1vTC0Rc1ySm-YXG0kujVjA91UZ_sBkWlAE,1718
40
40
  orchid/searchable_project_objects.py,sha256=ajyyMHhw4cCb2nMS8tTsOxKCeoUm82DDYsGfVCbV_uU,7520
41
41
  orchid/searchable_stage_parts.py,sha256=T1NMOkPZ4C8fnYQbh41pPPWTSQVL8Pkr7TajOdSICI4,2592
42
42
  orchid/searchable_stages.py,sha256=35QB-ROZ7MOM4AMS2BHxuHGlsvYGbO5rplKmvYpDWNo,1191
43
43
  orchid/unit_system.py,sha256=IPCnsuLHbnyVa00wNKCEvw_kL0JDvKFVie-Ydzsmi_A,6514
44
44
  orchid/validation.py,sha256=LQYnMJYq_T5r_ObsfZZfiNH5zQOFJ9dhZj7V4eMVL2I,1769
45
- orchid/VERSION,sha256=GBogjIbixF2_nEgPA6jNx1PjUlYw3DHqdUyS_JsZlgE,6
46
- orchid/version.py,sha256=-20XP2drP8ZCivNpChHnLxbooLGs9EGh3ehKV0LTxZA,1076
45
+ orchid/VERSION,sha256=L_g54uvvtPgooy_jbktZxOH_hsTivBxfAlruc7NQy38,6
46
+ orchid/version.py,sha256=44mNVXWCA6bvqXiq5x74kB1TgPfwv1f7Wm5QQm59ZxA,1372
47
47
  orchid_python_api/__init__.py,sha256=ChjT8IKA2QqJkRyJM4sKQq4F7Uk1fmk-JE2wMljr3vo,787
48
48
  orchid_python_api/examples/add_stages.py,sha256=HHaYrCZaURuemRbs3QWDWscGmarEz30oXRV2keYL2ms,6452
49
- orchid_python_api/examples/change_stage_times.py,sha256=cmeEBkkae7_z9EqAnQJumDl1_BpYCJFmjFi1INxF6V0,4365
49
+ orchid_python_api/examples/change_stage_times.py,sha256=hjjkQ6AtzX9_TNCHTAJQRDbZxsx2xhZSTi1565-nNwE,4369
50
50
  orchid_python_api/examples/completion_analysis.ipynb,sha256=RXJmwJ0wp162ffEcNwfr-vst4xn6hDWumjiLT7W6QFo,28645
51
51
  orchid_python_api/examples/completion_analysis.py,sha256=5PkEUEi7DFrEdDYFdDtg6mz2Iw47lpStGBaAoIWEdYo,16982
52
- orchid_python_api/examples/low_level/add_stages_low.py,sha256=4kEGSf0izWG5no_EQnuPV5UxQyYcxPx84VNPfUME3XY,11561
52
+ orchid_python_api/examples/low_level/add_stages_low.py,sha256=CsMMPRRqxihO4ESRa6bwt3cCA_qQcCy7YIMTb7Dx2Ss,11563
53
53
  orchid_python_api/examples/low_level/auto_pick.ipynb,sha256=M4Ka0cJxxps6pmlJ0lYXj-WjS5ESU9-cUHblB43DjLM,32026
54
54
  orchid_python_api/examples/low_level/auto_pick.py,sha256=FuVpnKCLXHdD9W4TnQkj83lNSyz9-J4UDJsCyKOxKqc,15899
55
55
  orchid_python_api/examples/low_level/auto_pick_and_create_stage_attribute.py,sha256=iVZL_v_jvrpzGE_rUGv3oZYLRUDqO4rL-RngiSgPwCc,18561
@@ -74,11 +74,12 @@ orchid_python_api/examples/search_data_frames.py,sha256=t-SFqvZWKsnLJC1qlftI7N8X
74
74
  orchid_python_api/examples/stage_qc_results.py,sha256=rCg--QJMUnV_-MB3skxueDdf3yuaZIm1isa_WeWy-0c,8578
75
75
  orchid_python_api/examples/volume_2_first_response.ipynb,sha256=JA1ZORrJZ-YSoj5sgD1xg51j2ohloC2OOGsZxvpYdUg,12843
76
76
  orchid_python_api/examples/volume_2_first_response.py,sha256=F40ldNyVeUchfbNgW2XCYGFS-TE29b1MOevZefWeOXg,8513
77
+ orchid_python_api/requirements.txt,sha256=TLanPPkr40ryZFRJr5wWfPKSXMerET0LYdJ5tThGKS0,127
77
78
  orchid_python_api/tutorials/dom_navigation_tutorial.ipynb,sha256=ZuU79s1yWus4OOy_kWJ5-92fGH1Nt9CWi4cjh2iMhGQ,24046
78
79
  orchid_python_api/tutorials/dom_navigation_tutorial.py,sha256=HqtqD2U7UgvtImunw-pBtfkyjdWux6u2-U6gAXPxEaI,19127
79
- ReleaseNotes.md,sha256=FKAbG5gXs0vNc9EOqRnfT13NDMQqV_ObLmX33rVeaWg,22029
80
- orchid_python_api-5.24.1.dist-info/entry_points.txt,sha256=QDAEsqjA8FIVbqp-PLzjucg0JZS7eGncMNeqWaaken4,243
81
- orchid_python_api-5.24.1.dist-info/LICENSE,sha256=lLkiRGL_3TH7GEiXwubGnfyfA_Zn2OKkWO1XswLfRoQ,10316
82
- orchid_python_api-5.24.1.dist-info/METADATA,sha256=N4Rg1DU0KBsPl4opEosV1VHr5H-p5F2aluZAu-K64h8,34404
83
- orchid_python_api-5.24.1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
84
- orchid_python_api-5.24.1.dist-info/RECORD,,
80
+ ReleaseNotes.md,sha256=W-HApaGteLzVCIgjEfmYbdwjJEPKp5Cz9Fs9YEx4ON0,22534
81
+ orchid_python_api-5.24.3.dist-info/entry_points.txt,sha256=QDAEsqjA8FIVbqp-PLzjucg0JZS7eGncMNeqWaaken4,243
82
+ orchid_python_api-5.24.3.dist-info/LICENSE,sha256=lLkiRGL_3TH7GEiXwubGnfyfA_Zn2OKkWO1XswLfRoQ,10316
83
+ orchid_python_api-5.24.3.dist-info/METADATA,sha256=FwrU7VZMcDq39qTkHtY5VJCFBed5C6j5m_TRPTAYl9s,34413
84
+ orchid_python_api-5.24.3.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
85
+ orchid_python_api-5.24.3.dist-info/RECORD,,