dcicutils 8.13.3.1b22__py3-none-any.whl → 8.13.3.1b24__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
dcicutils/misc_utils.py CHANGED
@@ -1005,16 +1005,12 @@ _MULTIPLIER_T = 1000 * _MULTIPLIER_G
1005
1005
 
1006
1006
  _MULTIPLIER_SUFFIXES = {
1007
1007
  "K": _MULTIPLIER_K,
1008
- "Kb": _MULTIPLIER_K,
1009
1008
  "KB": _MULTIPLIER_K,
1010
1009
  "M": _MULTIPLIER_M,
1011
- "Mb": _MULTIPLIER_M,
1012
1010
  "MB": _MULTIPLIER_M,
1013
1011
  "G": _MULTIPLIER_G,
1014
- "Gb": _MULTIPLIER_G,
1015
1012
  "GB": _MULTIPLIER_G,
1016
1013
  "T": _MULTIPLIER_T,
1017
- "Tb": _MULTIPLIER_T,
1018
1014
  "TB": _MULTIPLIER_T
1019
1015
  }
1020
1016
 
@@ -1022,17 +1018,17 @@ _MULTIPLIER_SUFFIXES = {
1022
1018
  def to_number(value: str,
1023
1019
  allow_commas: bool = False,
1024
1020
  allow_multiplier_suffix: bool = False,
1025
- as_float: bool = False,
1021
+ allow_float: bool = False,
1026
1022
  fallback: Optional[Union[int, float]] = None) -> Optional[Union[int, float]]:
1027
1023
 
1028
1024
  """
1029
- Converts the give string value to an int, or float if as_float is True.
1025
+ Converts the give string value to an int, or possibly float if allow_float is True.
1030
1026
  If allow_commas is True (default: False) then allow commas (only) every three digits.
1031
1027
  If allow_multiplier_suffix is True (default: False) allow any of K, Kb, KB; or M, Mb, MB;
1032
1028
  or G, Gb, or GB; or T, Tb, TB, to mean multiply value by one thousand; one million;
1033
- one billion; or one trillion; respectively. If as_float is True (default: False)
1029
+ one billion; or one trillion; respectively. If allow_float is True (default: False)
1034
1030
  allow the value to be floating point (i.e. with a decimal point and a fractional part),
1035
- in which case the returned value will be of type float rather than int.
1031
+ in which case the returned value will be of type float, if it needs to be, and not int.
1036
1032
  If the string is not well formated then returns None.
1037
1033
  """
1038
1034
  if not (isinstance(value, str) and (value := value.strip())):
@@ -1051,17 +1047,19 @@ def to_number(value: str,
1051
1047
  return fallback
1052
1048
 
1053
1049
  if allow_multiplier_suffix is True:
1050
+ value_upper = value.upper()
1054
1051
  for suffix in _MULTIPLIER_SUFFIXES:
1055
- if value.endswith(suffix):
1052
+ if value_upper.endswith(suffix):
1056
1053
  value_multiplier *= _MULTIPLIER_SUFFIXES[suffix]
1057
1054
  if not (value := value[:-len(suffix)].strip()):
1058
1055
  return fallback
1059
1056
  break
1060
1057
 
1061
- if as_float is True:
1058
+ if allow_float is True:
1062
1059
  if (dot_index := value.rfind(".")) >= 0:
1063
1060
  if value_fraction := value[dot_index + 1:].strip():
1064
1061
  try:
1062
+ # value_fraction = float(f"0.{value_fraction}")
1065
1063
  value_fraction = float(f"0.{value_fraction}")
1066
1064
  except Exception:
1067
1065
  return fallback
@@ -1075,15 +1073,21 @@ def to_number(value: str,
1075
1073
  if not value.isdigit():
1076
1074
  return fallback
1077
1075
 
1078
- result = int(value) * value_multiplier
1076
+ result = int(value)
1079
1077
 
1080
1078
  if value_fraction:
1081
1079
  result += value_fraction
1082
1080
 
1081
+ result *= value_multiplier
1082
+
1083
1083
  if value_negative:
1084
1084
  result = -result
1085
1085
 
1086
- return float(result) if as_float is True else result
1086
+ if allow_float is True:
1087
+ if result == int(result):
1088
+ result = int(result)
1089
+
1090
+ return result
1087
1091
 
1088
1092
 
1089
1093
  def to_float(value: str, fallback: Optional[Any] = None) -> Optional[Any]:
@@ -727,7 +727,7 @@ class Schema(SchemaBase):
727
727
  allow_multiplier_suffix = typeinfo.get("allow_multiplier_suffix") is True
728
728
  def map_integer(value: str, src: Optional[str]) -> Any: # noqa
729
729
  nonlocal allow_commas, allow_multiplier_suffix
730
- return to_number(value, fallback=value, as_float=False,
730
+ return to_number(value, fallback=value, allow_float=False,
731
731
  allow_commas=allow_commas,
732
732
  allow_multiplier_suffix=allow_multiplier_suffix)
733
733
  return map_integer
@@ -737,7 +737,7 @@ class Schema(SchemaBase):
737
737
  allow_multiplier_suffix = typeinfo.get("allow_multiplier_suffix") is True
738
738
  def map_number(value: str, src: Optional[str]) -> Any: # noqa
739
739
  nonlocal allow_commas, allow_multiplier_suffix
740
- return to_number(value, fallback=value, as_float=True,
740
+ return to_number(value, fallback=value, allow_float=True,
741
741
  allow_commas=allow_commas,
742
742
  allow_multiplier_suffix=allow_multiplier_suffix)
743
743
  return map_number
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dcicutils
3
- Version: 8.13.3.1b22
3
+ Version: 8.13.3.1b24
4
4
  Summary: Utility package for interacting with the 4DN Data Portal and other 4DN resources
5
5
  Home-page: https://github.com/4dn-dcic/utils
6
6
  License: MIT
@@ -45,7 +45,7 @@ dcicutils/license_policies/park-lab-gpl-pipeline.jsonc,sha256=vLZkwm3Js-kjV44nug
45
45
  dcicutils/license_policies/park-lab-pipeline.jsonc,sha256=9qlY0ASy3iUMQlr3gorVcXrSfRHnVGbLhkS427UaRy4,283
46
46
  dcicutils/license_utils.py,sha256=2Yxnh1T1iuMe6wluwbvpFO_zYSGPxB4-STAMc-vz-YM,47202
47
47
  dcicutils/log_utils.py,sha256=7pWMc6vyrorUZQf-V-M3YC6zrPgNhuV_fzm9xqTPph0,10883
48
- dcicutils/misc_utils.py,sha256=rrkqUEWkqGeHMyosxASyzNhgSlBk0ZbWYnmWUVtfPtY,112809
48
+ dcicutils/misc_utils.py,sha256=IIppGKxdEZmKQKFQnUFylLZIg1YUYjAkMslnUhA4h54,112926
49
49
  dcicutils/obfuscation_utils.py,sha256=fo2jOmDRC6xWpYX49u80bVNisqRRoPskFNX3ymFAmjw,5963
50
50
  dcicutils/opensearch_utils.py,sha256=V2exmFYW8Xl2_pGFixF4I2Cc549Opwe4PhFi5twC0M8,1017
51
51
  dcicutils/portal_object_utils.py,sha256=Az3n1aL-PQkN5gOFE6ZqC2XkYsqiwKlq7-tZggs1QN4,11062
@@ -66,7 +66,7 @@ dcicutils/secrets_utils.py,sha256=8dppXAsiHhJzI6NmOcvJV5ldvKkQZzh3Fl-cb8Wm7MI,19
66
66
  dcicutils/sheet_utils.py,sha256=VlmzteONW5VF_Q4vo0yA5vesz1ViUah1MZ_yA1rwZ0M,33629
67
67
  dcicutils/snapshot_utils.py,sha256=YDeI3vD-MhAtHwKDzfEm2q-n3l-da2yRpRR3xp0Ah1M,23021
68
68
  dcicutils/ssl_certificate_utils.py,sha256=F0ifz_wnRRN9dfrfsz7aCp4UDLgHEY8LaK7PjnNvrAQ,9707
69
- dcicutils/structured_data.py,sha256=emhb9QzV46BTT3292Y-4B2dFGxSQphRlG9YdqjO9EvY,66151
69
+ dcicutils/structured_data.py,sha256=OfGV92SxUosCuh3hwvRJGwreGx1Q43q73mryIZurrxk,66157
70
70
  dcicutils/submitr/progress_constants.py,sha256=5bxyX77ql8qEJearfHEvsvXl7D0GuUODW0T65mbRmnE,2895
71
71
  dcicutils/submitr/ref_lookup_strategy.py,sha256=VJN-Oo0LLna6Vo2cu47eC-eU-yUC9NFlQP29xajejVU,4741
72
72
  dcicutils/task_utils.py,sha256=MF8ujmTD6-O2AC2gRGPHyGdUrVKgtr8epT5XU8WtNjk,8082
@@ -75,8 +75,8 @@ dcicutils/trace_utils.py,sha256=g8kwV4ebEy5kXW6oOrEAUsurBcCROvwtZqz9fczsGRE,1769
75
75
  dcicutils/validation_utils.py,sha256=cMZIU2cY98FYtzK52z5WUYck7urH6JcqOuz9jkXpqzg,14797
76
76
  dcicutils/variant_utils.py,sha256=2H9azNx3xAj-MySg-uZ2SFqbWs4kZvf61JnK6b-h4Qw,4343
77
77
  dcicutils/zip_utils.py,sha256=_Y9EmL3D2dUZhxucxHvrtmmlbZmK4FpSsHEb7rGSJLU,3265
78
- dcicutils-8.13.3.1b22.dist-info/LICENSE.txt,sha256=qnwSmfnEWMl5l78VPDEzAmEbLVrRqQvfUQiHT0ehrOo,1102
79
- dcicutils-8.13.3.1b22.dist-info/METADATA,sha256=7GUY7CfkTa_avDD5ClPxWFaVjKJvK0JmqjDgqrRqBpQ,3440
80
- dcicutils-8.13.3.1b22.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
81
- dcicutils-8.13.3.1b22.dist-info/entry_points.txt,sha256=W6kEWdUJk9tQ4myAgpehPdebcwvCAZ7UgB-wyPgDUMg,335
82
- dcicutils-8.13.3.1b22.dist-info/RECORD,,
78
+ dcicutils-8.13.3.1b24.dist-info/LICENSE.txt,sha256=qnwSmfnEWMl5l78VPDEzAmEbLVrRqQvfUQiHT0ehrOo,1102
79
+ dcicutils-8.13.3.1b24.dist-info/METADATA,sha256=Z2pf6DW_2O_gZWUcenMJmDRknNzA3BpQ6C63aybr-kk,3440
80
+ dcicutils-8.13.3.1b24.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
81
+ dcicutils-8.13.3.1b24.dist-info/entry_points.txt,sha256=W6kEWdUJk9tQ4myAgpehPdebcwvCAZ7UgB-wyPgDUMg,335
82
+ dcicutils-8.13.3.1b24.dist-info/RECORD,,