geolysis 0.8.0__py3-none-any.whl → 0.9.0__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.
geolysis/__init__.py CHANGED
@@ -1,5 +1,5 @@
1
1
  from . import foundation, soil_classifier, spt
2
2
 
3
- __version__ = "0.8.0"
3
+ __version__ = "0.9.0"
4
4
 
5
5
  __all__ = ["foundation", "soil_classifier", "spt"]
@@ -1,7 +1,6 @@
1
1
  from abc import ABC, abstractmethod
2
2
 
3
- from geolysis.foundation import FoundationSize
4
- from geolysis.utils import exceptions as exc
3
+ from geolysis.foundation import Foundation
5
4
  from geolysis.utils import validators
6
5
 
7
6
 
@@ -11,7 +10,7 @@ class AllowableBearingCapacity(ABC):
11
10
 
12
11
  def __init__(self, corrected_spt_n_value: float,
13
12
  tol_settlement: float,
14
- foundation_size: FoundationSize) -> None:
13
+ foundation_size: Foundation) -> None:
15
14
  self.corrected_spt_n_value = corrected_spt_n_value
16
15
  self.tol_settlement = tol_settlement
17
16
  self.foundation_size = foundation_size
@@ -32,7 +31,7 @@ class AllowableBearingCapacity(ABC):
32
31
  return self._tol_settlement
33
32
 
34
33
  @tol_settlement.setter
35
- @validators.le(25.4, exc_type=exc.SettlementError)
34
+ @validators.le(25.4)
36
35
  def tol_settlement(self, tol_settlement: float) -> None:
37
36
  self._tol_settlement = tol_settlement
38
37
 
@@ -1,4 +1,4 @@
1
- from geolysis.foundation import FoundationSize
1
+ from geolysis.foundation import Foundation
2
2
  from geolysis.utils import round_
3
3
 
4
4
  from ._core import AllowableBearingCapacity
@@ -34,7 +34,7 @@ class BowlesABC4PadFoundation(AllowableBearingCapacity):
34
34
 
35
35
  def __init__(self, corrected_spt_n_value: float,
36
36
  tol_settlement: float,
37
- foundation_size: FoundationSize) -> None:
37
+ foundation_size: Foundation) -> None:
38
38
  """
39
39
  :param corrected_spt_n_value: Statistical average of corrected SPT
40
40
  N-value (55% energy with overburden
@@ -46,7 +46,7 @@ class BowlesABC4PadFoundation(AllowableBearingCapacity):
46
46
  :type tol_settlement: float
47
47
 
48
48
  :param foundation_size: Size of the foundation.
49
- :type foundation_size: FoundationSize
49
+ :type foundation_size: Foundation
50
50
  """
51
51
  super().__init__(corrected_spt_n_value=corrected_spt_n_value,
52
52
  tol_settlement=tol_settlement,
@@ -1,4 +1,4 @@
1
- from geolysis.foundation import FoundationSize
1
+ from geolysis.foundation import Foundation
2
2
  from geolysis.utils import round_
3
3
 
4
4
  from ._core import AllowableBearingCapacity
@@ -33,7 +33,7 @@ class MeyerhofABC4PadFoundation(AllowableBearingCapacity):
33
33
 
34
34
  def __init__(self, corrected_spt_n_value: float,
35
35
  tol_settlement: float,
36
- foundation_size: FoundationSize):
36
+ foundation_size: Foundation):
37
37
  """
38
38
  :param corrected_spt_n_value: Average uncorrected SPT N-value (60%
39
39
  energy with dilatancy (water) correction
@@ -46,7 +46,7 @@ class MeyerhofABC4PadFoundation(AllowableBearingCapacity):
46
46
  :type tol_settlement: float
47
47
 
48
48
  :param foundation_size: Size of the foundation.
49
- :type foundation_size: FoundationSize
49
+ :type foundation_size: Foundation
50
50
  """
51
51
  super().__init__(corrected_spt_n_value=corrected_spt_n_value,
52
52
  tol_settlement=tol_settlement,
@@ -1,4 +1,4 @@
1
- from geolysis.foundation import FoundationSize
1
+ from geolysis.foundation import Foundation
2
2
  from geolysis.utils import round_
3
3
 
4
4
  from ._core import AllowableBearingCapacity
@@ -40,7 +40,7 @@ class TerzaghiABC4PadFoundation(AllowableBearingCapacity):
40
40
 
41
41
  def __init__(self, corrected_spt_n_value: float,
42
42
  tol_settlement: float,
43
- foundation_size: FoundationSize) -> None:
43
+ foundation_size: Foundation) -> None:
44
44
  """
45
45
  :param corrected_spt_n_value: Lowest (or average) uncorrected SPT
46
46
  N-value (60% energy) within the foundation
@@ -52,7 +52,7 @@ class TerzaghiABC4PadFoundation(AllowableBearingCapacity):
52
52
  :type tol_settlement: float
53
53
 
54
54
  :param foundation_size: Size of the foundation.
55
- :type foundation_size: FoundationSize
55
+ :type foundation_size: Foundation
56
56
  """
57
57
  super().__init__(corrected_spt_n_value=corrected_spt_n_value,
58
58
  tol_settlement=tol_settlement,
@@ -135,6 +135,7 @@ def create_ultimate_bearing_capacity(friction_angle: float,
135
135
  width=width,
136
136
  length=length,
137
137
  eccentricity=eccentricity,
138
+ load_angle=load_angle,
138
139
  ground_water_level=ground_water_level,
139
140
  shape=shape)
140
141
 
@@ -147,6 +148,5 @@ def create_ultimate_bearing_capacity(friction_angle: float,
147
148
  cohesion=cohesion,
148
149
  moist_unit_wgt=moist_unit_wgt,
149
150
  foundation_size=fnd_size,
150
- load_angle=load_angle,
151
151
  apply_local_shear=apply_local_shear)
152
152
  return ubc
@@ -1,6 +1,6 @@
1
1
  from abc import ABC, abstractmethod
2
2
 
3
- from geolysis.foundation import FoundationSize
3
+ from geolysis.foundation import Foundation
4
4
  from geolysis.utils import arctan, round_, tan, validators
5
5
 
6
6
 
@@ -8,8 +8,8 @@ class UltimateBearingCapacity(ABC):
8
8
  def __init__(self, friction_angle: float,
9
9
  cohesion: float,
10
10
  moist_unit_wgt: float,
11
- foundation_size: FoundationSize,
12
- load_angle: float = 0.0,
11
+ foundation_size: Foundation,
12
+ # load_angle: float = 0.0,
13
13
  apply_local_shear: bool = False) -> None:
14
14
  r"""
15
15
  :param friction_angle: Internal angle of friction for general shear
@@ -23,11 +23,7 @@ class UltimateBearingCapacity(ABC):
23
23
  :type moist_unit_wgt: float
24
24
 
25
25
  :param foundation_size: Size of the foundation.
26
- :type foundation_size: FoundationSize
27
-
28
- :param load_angle: Inclination of the applied load with the vertical
29
- (:math:`\alpha^{\circ}`), defaults to 0.0.
30
- :type load_angle: float, optional
26
+ :type foundation_size: Foundation
31
27
 
32
28
  :param apply_local_shear: Indicate whether bearing capacity failure is
33
29
  general shear or local shear failure,
@@ -37,7 +33,6 @@ class UltimateBearingCapacity(ABC):
37
33
  self.friction_angle = friction_angle
38
34
  self.cohesion = cohesion
39
35
  self.moist_unit_wgt = moist_unit_wgt
40
- self.load_angle = load_angle
41
36
  self.foundation_size = foundation_size
42
37
  self.apply_local_shear = apply_local_shear
43
38
 
@@ -97,15 +92,9 @@ class UltimateBearingCapacity(ABC):
97
92
  self._moist_unit_wgt = val
98
93
 
99
94
  @property
100
- def load_angle(self) -> float:
95
+ def load_angle(self):
101
96
  """Inclination of the applied load with the vertical."""
102
- return self._load_angle
103
-
104
- @load_angle.setter
105
- @validators.le(90.0)
106
- @validators.ge(0.0)
107
- def load_angle(self, val: float):
108
- self._load_angle = val
97
+ return self.foundation_size.load_angle
109
98
 
110
99
  @property
111
100
  def s_c(self) -> float:
geolysis/foundation.py CHANGED
@@ -8,7 +8,7 @@ from .utils import enum_repr, inf, isclose, validators
8
8
  from .utils.exceptions import ErrorMsg, ValidationError
9
9
 
10
10
  __all__ = ["create_foundation",
11
- "FoundationSize",
11
+ "Foundation",
12
12
  "FoundationType",
13
13
  "Shape",
14
14
  "StripFooting",
@@ -216,15 +216,16 @@ class RectangularFooting(FootingSize):
216
216
  self._length = val
217
217
 
218
218
 
219
- class FoundationSize:
219
+ class Foundation:
220
220
  """A simple class representing a foundation structure."""
221
221
 
222
222
  def __init__(self, depth: float,
223
223
  footing_size: FootingSize,
224
224
  eccentricity: float = 0.0,
225
+ load_angle: float = 0.0,
225
226
  ground_water_level: Optional[float] = None,
226
227
  foundation_type: FoundationType = FoundationType.PAD) -> None:
227
- """
228
+ r"""
228
229
  :param depth: Depth of foundation (m).
229
230
  :type depth: float
230
231
 
@@ -238,6 +239,10 @@ class FoundationSize:
238
239
  foundation footing.
239
240
  :type eccentricity: float, optional
240
241
 
242
+ :param load_angle: Inclination of the applied load with the vertical
243
+ (:math:`\alpha^{\circ}`), defaults to 0.0.
244
+ :type load_angle: float, optional
245
+
241
246
  :param ground_water_level: Depth of the water below ground level (m),
242
247
  defaults to None.
243
248
  :type ground_water_level: float, optional
@@ -249,6 +254,7 @@ class FoundationSize:
249
254
  self.depth = depth
250
255
  self.footing_size = footing_size
251
256
  self.eccentricity = eccentricity
257
+ self.load_angle = load_angle
252
258
 
253
259
  self._ground_water_level = ground_water_level
254
260
  self._foundation_type = foundation_type
@@ -298,6 +304,17 @@ class FoundationSize:
298
304
  def eccentricity(self, val: float) -> None:
299
305
  self._eccentricity = val
300
306
 
307
+ @property
308
+ def load_angle(self) -> float:
309
+ """Inclination of the applied load with the vertical."""
310
+ return self._load_angle
311
+
312
+ @load_angle.setter
313
+ @validators.le(90.0)
314
+ @validators.ge(0.0)
315
+ def load_angle(self, val: float):
316
+ self._load_angle = val
317
+
301
318
  @property
302
319
  def ground_water_level(self) -> Optional[float]:
303
320
  """Depth of the water below ground level (m)."""
@@ -336,10 +353,11 @@ def create_foundation(depth: float,
336
353
  width: float,
337
354
  length: Optional[float] = None,
338
355
  eccentricity: float = 0.0,
356
+ load_angle: float = 0.0,
339
357
  ground_water_level: Optional[float] = None,
340
358
  foundation_type: FoundationType = FoundationType.PAD,
341
- shape: Shape | str = Shape.SQUARE) -> FoundationSize:
342
- """A factory function that encapsulate the creation of a foundation.
359
+ shape: Shape | str = Shape.SQUARE) -> Foundation:
360
+ r"""A factory function that encapsulate the creation of a foundation.
343
361
 
344
362
  :param depth: Depth of foundation (m).
345
363
  :type depth: float
@@ -358,6 +376,10 @@ def create_foundation(depth: float,
358
376
  foundation footing .
359
377
  :type eccentricity: float, optional
360
378
 
379
+ :param load_angle: Inclination of the applied load with the vertical
380
+ (:math:`\alpha^{\circ}`), defaults to 0.0.
381
+ :type load_angle: float, optional
382
+
361
383
  :param ground_water_level: Depth of the water below ground level (m),
362
384
  defaults to None.
363
385
  :type ground_water_level: float, optional
@@ -398,8 +420,9 @@ def create_foundation(depth: float,
398
420
  raise ValidationError(msg)
399
421
  footing_size = RectangularFooting(width=width, length=length)
400
422
 
401
- return FoundationSize(depth=depth,
402
- eccentricity=eccentricity,
403
- ground_water_level=ground_water_level,
404
- foundation_type=foundation_type,
405
- footing_size=footing_size)
423
+ return Foundation(depth=depth,
424
+ eccentricity=eccentricity,
425
+ load_angle=load_angle,
426
+ ground_water_level=ground_water_level,
427
+ foundation_type=foundation_type,
428
+ footing_size=footing_size)
@@ -117,9 +117,6 @@ class AtterbergLimits:
117
117
  3mm thick. (molded without breaking)
118
118
  :type plastic_limit: float
119
119
  """
120
- if liquid_limit < plastic_limit:
121
- raise ValueError("liquid_limit cannot be less than plastic_limit")
122
-
123
120
  self.liquid_limit = liquid_limit
124
121
  self.plastic_limit = plastic_limit
125
122
 
@@ -141,6 +138,14 @@ class AtterbergLimits:
141
138
  @plastic_limit.setter
142
139
  @validators.ge(0.0)
143
140
  def plastic_limit(self, val: float) -> None:
141
+ if self.liquid_limit < val:
142
+ msg = ErrorMsg(param_name="plastic_limit",
143
+ param_value=val,
144
+ param_value_bound=f"<{self.liquid_limit}",
145
+ msg=f"plastic_limit: {val} cannot be greater than "
146
+ f"liquid_limit: {self.liquid_limit}")
147
+ raise ValidationError(msg)
148
+
144
149
  self._plastic_limit = val
145
150
 
146
151
  @property
@@ -421,12 +426,12 @@ class AASHTO:
421
426
  plasticity_idx = self.atterberg_limits.plasticity_index
422
427
  fines = self.fines
423
428
 
424
- var_a = 1.0 if (x_0 := fines - 35.0) < 0.0 else min(x_0, 40.0)
425
- var_b = 1.0 if (x_0 := liquid_lmt - 40.0) < 0.0 else min(x_0, 20.0)
426
- var_c = 1.0 if (x_0 := fines - 15.0) < 0.0 else min(x_0, 40.0)
427
- var_d = 1.0 if (x_0 := plasticity_idx - 10.0) < 0.0 else min(x_0, 20.0)
429
+ x_1 = 1.0 if (x_0 := fines - 35.0) < 0.0 else min(x_0, 40.0)
430
+ x_2 = 1.0 if (x_0 := liquid_lmt - 40.0) < 0.0 else min(x_0, 20.0)
431
+ x_3 = 1.0 if (x_0 := fines - 15.0) < 0.0 else min(x_0, 40.0)
432
+ x_4 = 1.0 if (x_0 := plasticity_idx - 10.0) < 0.0 else min(x_0, 20.0)
428
433
 
429
- return var_a * (0.2 + 0.005 * var_b) + 0.01 * var_c * var_d
434
+ return x_1 * (0.2 + 0.005 * x_2) + 0.01 * x_3 * x_4
430
435
 
431
436
  def classify(self) -> SoilClf:
432
437
  """Return the AASHTO classification of the soil."""
@@ -67,18 +67,19 @@ def enum_repr(cls):
67
67
  return cls
68
68
 
69
69
 
70
- def round_(ndigits: int | Callable[..., SupportsRound]) -> Callable:
70
+ def round_(ndigits: int) -> Callable:
71
71
  """A decorator that rounds the result of a callable to a specified number
72
72
  of decimal places.
73
73
 
74
74
  The returned value of the callable should support the ``__round__`` dunder
75
- method and should be a numeric value. ``ndigits`` can either be an int
76
- which will indicate the number of decimal places to round to or a
77
- callable. If ``ndigits`` is callable the default decimal places is 2.
75
+ method and should be a numeric value.
78
76
 
79
- TypeError is raised when ``ndigits`` is neither an int nor a callable.
77
+ TypeError is raised when ``ndigits`` is not an int.
80
78
  """
81
79
 
80
+ if not isinstance(ndigits, int):
81
+ raise TypeError("ndigits must be an int")
82
+
82
83
  def dec(fn) -> Callable[..., float]:
83
84
  @functools.wraps(fn)
84
85
  def wrapper(*args, **kwargs) -> float:
@@ -2,8 +2,8 @@ from collections import UserString
2
2
  from typing import Any
3
3
 
4
4
 
5
- class _ErrorMsg(UserString):
6
- def __init__(self, param_name: str = None,
5
+ class ErrorMsg(UserString):
6
+ def __init__(self, *, param_name: str = None,
7
7
  param_value: Any = None,
8
8
  symbol: str = None,
9
9
  param_value_bound: Any = None,
@@ -11,31 +11,47 @@ class _ErrorMsg(UserString):
11
11
  if not msg:
12
12
  msg = f"{param_name}: {param_value!r} must be {symbol} {param_value_bound}"
13
13
 
14
+ super().__init__(msg)
15
+
14
16
  self.param_name = param_name
15
17
  self.param_value = param_value
16
18
  self.symbol = symbol
17
19
  self.param_value_bound = param_value_bound
18
- self.msg = msg
19
20
 
20
- super().__init__(msg)
21
+ @property
22
+ def msg(self):
23
+ return self.data
21
24
 
22
25
  def __add__(self, other):
23
- if isinstance(other, str):
24
- self.data = self.data + other
25
- self.msg = self.data
26
- return self
27
- return NotImplemented
26
+ msg = self.msg + str(other)
27
+ return self.__class__(param_name=self.param_name,
28
+ param_value=self.param_value,
29
+ symbol=self.symbol,
30
+ param_value_bound=self.param_value_bound,
31
+ msg=msg)
28
32
 
29
33
  def __radd__(self, other):
30
- if isinstance(other, str):
31
- self.data = other + self.data
32
- self.msg = self.data
33
- return self
34
- return NotImplemented
34
+ msg = str(other) + self.msg
35
+ return self.__class__(param_name=self.param_name,
36
+ param_value=self.param_value,
37
+ symbol=self.symbol,
38
+ param_value_bound=self.param_value_bound,
39
+ msg=msg)
35
40
 
41
+ def __repr__(self) -> str:
42
+ return f"ErrorMsg(param_name={self.param_name}, " \
43
+ f"param_value={self.param_value}, " \
44
+ f"symbol={self.symbol}, " \
45
+ f"param_value_bound={self.param_value_bound}, msg={self.msg!r})"
36
46
 
37
- class ErrorMsg(_ErrorMsg):
38
- pass
47
+ def to_dict(self) -> dict:
48
+ return {
49
+ "param_name": self.param_name,
50
+ "param_value": self.param_value,
51
+ "symbol": self.symbol,
52
+ "param_value_bound": self.param_value_bound,
53
+ "message": self.msg
54
+ }
39
55
 
40
56
 
41
57
  class ValidationError(ValueError):
@@ -45,8 +61,5 @@ class ValidationError(ValueError):
45
61
  super().__init__(error)
46
62
  self.error = error
47
63
 
48
-
49
- class SettlementError(ValidationError):
50
- """Raised when tolerable settlement is greater than the maximum
51
- allowable settlement.
52
- """
64
+ def __repr__(self):
65
+ return f"ValidationError(error={self.error!r})"
@@ -1,7 +1,7 @@
1
1
  """validators"""
2
2
  import operator
3
3
  from functools import wraps
4
- from typing import Any, Callable, Iterable, TypeAlias
4
+ from typing import Any, Callable, Iterable, TypeAlias, List, Tuple, Sequence
5
5
 
6
6
  from .exceptions import ErrorMsg, ValidationError
7
7
 
@@ -12,67 +12,65 @@ class _Validator:
12
12
 
13
13
  def __init__(self, bound: Any, /, *,
14
14
  symbol: str,
15
- func: Callable,
15
+ check: Callable,
16
16
  exc_type: Callable,
17
17
  err_msg: str):
18
- """
19
-
20
- """
21
18
  self.bound = bound
22
19
  self.symbol = symbol
23
- self.func = func
20
+ self.check = check
24
21
  self.exc_type = exc_type
25
22
  self.err_msg = err_msg
26
23
 
27
-
28
- class _NumValidator(_Validator):
29
-
30
- def _check_val(self, v: Number, fname: str):
31
- if not self.func(v, self.bound):
32
- msg = ErrorMsg(msg=self.err_msg,
33
- param_name=fname,
34
- param_value=v,
35
- symbol=self.symbol,
36
- param_value_bound=self.bound)
37
- raise self.exc_type(msg)
24
+ def check_val(self, val, fname: str):
25
+ raise NotImplementedError
38
26
 
39
27
  def __call__(self, fn):
40
28
  @wraps(fn)
41
29
  def wrapper(obj, val):
42
- if isinstance(val, Iterable):
30
+ if isinstance(val, List | Tuple):
43
31
  for v in val:
44
- self._check_val(v, fn.__name__)
32
+ self.check_val(v, fn.__name__)
45
33
  else:
46
- self._check_val(val, fn.__name__)
34
+ self.check_val(val, fn.__name__)
47
35
 
48
36
  fn(obj, val)
49
37
 
50
38
  return wrapper
51
39
 
52
40
 
53
- class _LenValidator(_Validator):
54
- def _check_val(self, v: Iterable[Any], fname: str):
55
- if not self.func(len(v), self.bound):
41
+ class _NumValidator(_Validator):
42
+
43
+ def check_val(self, v: Number, fname: str):
44
+ if not self.check(v, self.bound):
56
45
  msg = ErrorMsg(msg=self.err_msg,
57
46
  param_name=fname,
58
47
  param_value=v,
59
48
  symbol=self.symbol,
60
49
  param_value_bound=self.bound)
61
- msg = "Length of " + msg
62
50
  raise self.exc_type(msg)
63
51
 
52
+
53
+ class _LenValidator(_Validator):
54
+
64
55
  def __call__(self, fn):
65
56
  @wraps(fn)
66
- def wrapper(obj, val: Iterable):
67
- self._check_val(val, fn.__name__)
57
+ def wrapper(obj, val: Sequence):
58
+ if not self.check(len(val), self.bound):
59
+ msg = ErrorMsg(msg=self.err_msg,
60
+ param_name=fn.__name__,
61
+ param_value=val,
62
+ symbol=self.symbol,
63
+ param_value_bound=self.bound)
64
+ msg = "Length of " + msg
65
+ raise self.exc_type(msg)
68
66
  fn(obj, val)
69
67
 
70
68
  return wrapper
71
69
 
72
70
 
73
71
  class _InValidator(_Validator):
74
- def _check_val(self, v, fname):
75
- if not self.func(self.bound, v):
72
+ def check_val(self, v, fname):
73
+ if not self.check(self.bound, v):
76
74
  msg = ErrorMsg(msg=self.err_msg,
77
75
  param_name=fname,
78
76
  param_value=v,
@@ -80,50 +78,42 @@ class _InValidator(_Validator):
80
78
  param_value_bound=self.bound)
81
79
  raise self.exc_type(msg)
82
80
 
83
- def __call__(self, fn):
84
- @wraps(fn)
85
- def wrapper(obj, val):
86
- self._check_val(val, fn.__name__)
87
- fn(obj, val)
88
-
89
- return wrapper
90
-
91
81
 
92
- def in_(val: Iterable[Any], /, *, exc_type=ValidationError, err_msg=None):
93
- return _InValidator(val, symbol="in", func=operator.contains,
82
+ def in_(bound: Iterable[Any], /, *, exc_type=ValidationError, err_msg=None):
83
+ return _InValidator(bound, symbol="in", check=operator.contains,
94
84
  exc_type=exc_type, err_msg=err_msg)
95
85
 
96
86
 
97
- def min_len(val: int, /, *, exc_type=ValidationError, err_msg=None):
98
- return _LenValidator(val, symbol=">=", func=operator.ge,
87
+ def min_len(bound: int, /, *, exc_type=ValidationError, err_msg=None):
88
+ return _LenValidator(bound, symbol=">=", check=operator.ge,
99
89
  exc_type=exc_type, err_msg=err_msg)
100
90
 
101
91
 
102
- def lt(val: Number, /, *, exc_type=ValidationError, err_msg=None):
103
- return _NumValidator(val, symbol="<", func=operator.lt,
92
+ def lt(bound: Number, /, *, exc_type=ValidationError, err_msg=None):
93
+ return _NumValidator(bound, symbol="<", check=operator.lt,
104
94
  exc_type=exc_type, err_msg=err_msg)
105
95
 
106
96
 
107
- def le(val: Number, /, *, exc_type=ValidationError, err_msg=None):
108
- return _NumValidator(val, symbol="<=", func=operator.le,
97
+ def le(bound: Number, /, *, exc_type=ValidationError, err_msg=None):
98
+ return _NumValidator(bound, symbol="<=", check=operator.le,
109
99
  exc_type=exc_type, err_msg=err_msg)
110
100
 
111
101
 
112
- def eq(val: Number, /, *, exc_type=ValidationError, err_msg=None):
113
- return _NumValidator(val, symbol="==", func=operator.eq,
102
+ def eq(bound: Number, /, *, exc_type=ValidationError, err_msg=None):
103
+ return _NumValidator(bound, symbol="==", check=operator.eq,
114
104
  exc_type=exc_type, err_msg=err_msg)
115
105
 
116
106
 
117
- def ne(val: Number, /, *, exc_type=ValidationError, err_msg=None):
118
- return _NumValidator(val, symbol="!=", func=operator.ne,
107
+ def ne(bound: Number, /, *, exc_type=ValidationError, err_msg=None):
108
+ return _NumValidator(bound, symbol="!=", check=operator.ne,
119
109
  exc_type=exc_type, err_msg=err_msg)
120
110
 
121
111
 
122
- def ge(val: Number, /, *, exc_type=ValidationError, err_msg=None):
123
- return _NumValidator(val, symbol=">=", func=operator.ge,
112
+ def ge(bound: Number, /, *, exc_type=ValidationError, err_msg=None):
113
+ return _NumValidator(bound, symbol=">=", check=operator.ge,
124
114
  exc_type=exc_type, err_msg=err_msg)
125
115
 
126
116
 
127
- def gt(val: Number, /, *, exc_type=ValidationError, err_msg=None):
128
- return _NumValidator(val, symbol=">", func=operator.gt,
117
+ def gt(bound: Number, /, *, exc_type=ValidationError, err_msg=None):
118
+ return _NumValidator(bound, symbol=">", check=operator.gt,
129
119
  exc_type=exc_type, err_msg=err_msg)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: geolysis
3
- Version: 0.8.0
3
+ Version: 0.9.0
4
4
  Summary: geolysis is an opensource software for geotechnical engineering analysis and modeling.
5
5
  Author-email: Patrick Boateng <boatengpato.pb@gmail.com>
6
6
  License: MIT License
@@ -0,0 +1,24 @@
1
+ geolysis/__init__.py,sha256=kFx0nIRRC4FkGDiad710EjGzxkIbTO7HgbwZ9DRgrXc,122
2
+ geolysis/foundation.py,sha256=tnoDycRLMl0W_6QDM2fwPmosrxVwhGH3b88PIy0zPks,12661
3
+ geolysis/soil_classifier.py,sha256=J4N_0jmOcrPJZop_CyIlAk1hDqfFO-AdBi_TtpQLRNw,27274
4
+ geolysis/spt.py,sha256=ix0kHhOXeaIRhfqxq3CTueDpLRlPCfeSz8KyqQSwF8k,18208
5
+ geolysis/bearing_capacity/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
+ geolysis/bearing_capacity/abc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
+ geolysis/bearing_capacity/abc/cohl/__init__.py,sha256=En8EQMz8LV0rCy8EZZXHkUOfBe7KBnw2Kz-Q8SpU7HM,5454
8
+ geolysis/bearing_capacity/abc/cohl/_core.py,sha256=C1sZM5kVwXv_dqZfKdd7OHNH-q44pz87GNI2vcmdzYI,1570
9
+ geolysis/bearing_capacity/abc/cohl/bowles_abc.py,sha256=7oet6fhiMHI9dPV9EYFNaW_-RPeGGlFuJnpWFOEoI2I,4084
10
+ geolysis/bearing_capacity/abc/cohl/meyerhof_abc.py,sha256=1JUuCCrsh374ZltTl9OQmFsCYmVm2_8-jlZlFHbwWuE,4044
11
+ geolysis/bearing_capacity/abc/cohl/terzaghi_abc.py,sha256=_EKKVh7WWx76fBNFtDcby6Dwtzg3H0kaVxjkVuBr_Xc,5296
12
+ geolysis/bearing_capacity/ubc/__init__.py,sha256=bJryzgkY5DvjCU0YKzAsCp_rxO3E2lNpUqP9QE6ro0I,6052
13
+ geolysis/bearing_capacity/ubc/_core.py,sha256=fee8DNd8QmcMv55u3dXR4iYAa0xHIGCbYNz1ixpsg_4,5802
14
+ geolysis/bearing_capacity/ubc/hansen_ubc.py,sha256=exkYLUG4W8AecJVbYC4lnE58KbssVUsjI0lJ7Mu5pqw,7170
15
+ geolysis/bearing_capacity/ubc/terzaghi_ubc.py,sha256=TokZUUlP62R9zFtokzZVY57M6cEoKy1-T5wy0hvQxGU,6513
16
+ geolysis/bearing_capacity/ubc/vesic_ubc.py,sha256=zlFI26tY_L1LCb6T7q4NY4E0pTivdjYyTttp-VcIlvk,7405
17
+ geolysis/utils/__init__.py,sha256=PTfn4PLXmGASjuFEUFCDbled8MjD9BwNsvgGoW_DaG0,2200
18
+ geolysis/utils/exceptions.py,sha256=PPOQRujje053r1jHzjpiwy11P98LGhm9t1dlfzR11is,2165
19
+ geolysis/utils/validators.py,sha256=yePaIt7eo5rjlCb18WJfQGjgbSD5DHeyz0ztNTpwS7s,3899
20
+ geolysis-0.9.0.dist-info/licenses/LICENSE.txt,sha256=ap6sMs3lT7ICbEXBhgihwH1BTCVcjmCQkIkwVnil1Ak,1065
21
+ geolysis-0.9.0.dist-info/METADATA,sha256=spL4OqYV4oW1TzJiBrJ-X_VCTNn3LVuAopyayas3O9s,7211
22
+ geolysis-0.9.0.dist-info/WHEEL,sha256=zaaOINJESkSfm_4HQVc5ssNzHCPXhJm0kEUakpsEHaU,91
23
+ geolysis-0.9.0.dist-info/top_level.txt,sha256=9mnQgOaCRr11dtXff8X-q3FfXjRONd6kHseSy5q2y8g,9
24
+ geolysis-0.9.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.1.0)
2
+ Generator: setuptools (80.8.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,24 +0,0 @@
1
- geolysis/__init__.py,sha256=bn4Oh6O9s3McKkLWpVE_XT6DYNMWK-aqLHviet6uFoY,122
2
- geolysis/foundation.py,sha256=jo6jBP1V4WZRgJOkgR_MI4b3c1AgCeBq246bCZJxTCc,11856
3
- geolysis/soil_classifier.py,sha256=4wEZo3E2CvJt7WQh2V3KMjPvbqoyWeFkb_kCgQtR85Q,27018
4
- geolysis/spt.py,sha256=ix0kHhOXeaIRhfqxq3CTueDpLRlPCfeSz8KyqQSwF8k,18208
5
- geolysis/bearing_capacity/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- geolysis/bearing_capacity/abc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
- geolysis/bearing_capacity/abc/cohl/__init__.py,sha256=En8EQMz8LV0rCy8EZZXHkUOfBe7KBnw2Kz-Q8SpU7HM,5454
8
- geolysis/bearing_capacity/abc/cohl/_core.py,sha256=LpXXaIGfq8jafSSi5b6tdTbdy1SMAtV_vm5id9ZeRVI,1653
9
- geolysis/bearing_capacity/abc/cohl/bowles_abc.py,sha256=kUAZWR5exvRNoOB6pXoxmyOiQorPNtnZwBoaXCk9z0I,4096
10
- geolysis/bearing_capacity/abc/cohl/meyerhof_abc.py,sha256=3iriC_pQCKRf_4QtDm8163lnKNZUvJ9M7c7ZyRRrID8,4056
11
- geolysis/bearing_capacity/abc/cohl/terzaghi_abc.py,sha256=EOGfA7_IM0vCa5gLBaBOiEgop4nKBtghoA5EZC7k9dM,5308
12
- geolysis/bearing_capacity/ubc/__init__.py,sha256=e87E_V13rZM80mXPzZKCqcftUX2es_222r17uMR7qGc,6039
13
- geolysis/bearing_capacity/ubc/_core.py,sha256=xia-ygcbjF3a9eVh6hzp61LPVJfHHCiztb1J8_W2apE,6177
14
- geolysis/bearing_capacity/ubc/hansen_ubc.py,sha256=exkYLUG4W8AecJVbYC4lnE58KbssVUsjI0lJ7Mu5pqw,7170
15
- geolysis/bearing_capacity/ubc/terzaghi_ubc.py,sha256=TokZUUlP62R9zFtokzZVY57M6cEoKy1-T5wy0hvQxGU,6513
16
- geolysis/bearing_capacity/ubc/vesic_ubc.py,sha256=zlFI26tY_L1LCb6T7q4NY4E0pTivdjYyTttp-VcIlvk,7405
17
- geolysis/utils/__init__.py,sha256=713rJNWVFLrP4CNon4i-xUf5rF5eA40Ydg-F1UV8o-0,2339
18
- geolysis/utils/exceptions.py,sha256=4tsB3e7k_FzYSSqEWd0KungaRviqiBoYkLh4ipAyFeA,1387
19
- geolysis/utils/validators.py,sha256=vgQLreUdKXB0mBCZrfto9o2Z8rqgtPXJ8XQPzhjAT3w,4012
20
- geolysis-0.8.0.dist-info/licenses/LICENSE.txt,sha256=ap6sMs3lT7ICbEXBhgihwH1BTCVcjmCQkIkwVnil1Ak,1065
21
- geolysis-0.8.0.dist-info/METADATA,sha256=vLwq6Zl56dxwYw-ry_dA6XovKHm5-KH1BJgKyFuciNg,7211
22
- geolysis-0.8.0.dist-info/WHEEL,sha256=wXxTzcEDnjrTwFYjLPcsW_7_XihufBwmpiBeiXNBGEA,91
23
- geolysis-0.8.0.dist-info/top_level.txt,sha256=9mnQgOaCRr11dtXff8X-q3FfXjRONd6kHseSy5q2y8g,9
24
- geolysis-0.8.0.dist-info/RECORD,,