dcicutils 8.13.3.1b13__tar.gz → 8.13.3.1b15__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/PKG-INFO +1 -1
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/misc_utils.py +88 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/pyproject.toml +1 -1
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/LICENSE.txt +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/README.rst +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/__init__.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/base.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/beanstalk_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/bundle_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/captured_output.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/cloudformation_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/codebuild_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/command_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/common.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/contribution_scripts.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/contribution_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/creds_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/data_readers.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/data_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/datetime_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/deployment_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/diff_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/docker_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/ecr_scripts.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/ecr_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/ecs_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/env_base.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/env_manager.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/env_scripts.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/env_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/env_utils_legacy.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/es_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/exceptions.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/ff_mocks.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/ff_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/file_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/function_cache_decorator.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/glacier_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/hack_for_elasticsearch_numpy_usage.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/http_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/jh_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/kibana/dashboards.json +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/kibana/readme.md +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/lang_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/license_policies/c4-infrastructure.jsonc +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/license_policies/c4-python-infrastructure.jsonc +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/license_policies/park-lab-common-server.jsonc +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/license_policies/park-lab-common.jsonc +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/license_policies/park-lab-gpl-pipeline.jsonc +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/license_policies/park-lab-pipeline.jsonc +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/license_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/log_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/obfuscation_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/opensearch_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/portal_object_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/portal_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/progress_bar.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/project_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/qa_checkers.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/qa_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/redis_tools.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/redis_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/s3_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/schema_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/scripts/publish_to_pypi.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/scripts/run_license_checker.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/scripts/update_portal_object.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/scripts/view_portal_object.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/secrets_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/sheet_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/snapshot_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/ssl_certificate_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/structured_data.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/submitr/progress_constants.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/submitr/ref_lookup_strategy.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/task_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/tmpfile_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/trace_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/validation_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/variant_utils.py +0 -0
- {dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/zip_utils.py +0 -0
@@ -997,6 +997,94 @@ def to_integer(value: str, fallback: Optional[Any] = None, strict: bool = False)
|
|
997
997
|
return fallback
|
998
998
|
|
999
999
|
|
1000
|
+
_MULTIPLIER_K = 1000
|
1001
|
+
_MULTIPLIER_M = 1000 * _MULTIPLIER_K
|
1002
|
+
_MULTIPLIER_G = 1000 * _MULTIPLIER_M
|
1003
|
+
_MULTIPLIER_T = 1000 * _MULTIPLIER_G
|
1004
|
+
|
1005
|
+
_MULTIPLIER_SUFFIXES = {
|
1006
|
+
"K": _MULTIPLIER_K,
|
1007
|
+
"Kb": _MULTIPLIER_K,
|
1008
|
+
"KB": _MULTIPLIER_K,
|
1009
|
+
"M": _MULTIPLIER_M,
|
1010
|
+
"Mb": _MULTIPLIER_M,
|
1011
|
+
"MB": _MULTIPLIER_M,
|
1012
|
+
"G": _MULTIPLIER_G,
|
1013
|
+
"Gb": _MULTIPLIER_G,
|
1014
|
+
"GB": _MULTIPLIER_G,
|
1015
|
+
"T": _MULTIPLIER_T,
|
1016
|
+
"Tb": _MULTIPLIER_T,
|
1017
|
+
"TB": _MULTIPLIER_T
|
1018
|
+
}
|
1019
|
+
|
1020
|
+
|
1021
|
+
def to_number(value: str,
|
1022
|
+
allow_commas: bool = False,
|
1023
|
+
allow_suffix: bool = False,
|
1024
|
+
allow_float: bool = False) -> Optional[Union[int, float]]:
|
1025
|
+
|
1026
|
+
"""
|
1027
|
+
Converts the give string value to an int, or possibly float if allow_float is True.
|
1028
|
+
If allow_commas is True (default: False) then allow commas (only) every three digits.
|
1029
|
+
If allow_suffix is True (default: False) allow any of K, Kb, KB; or M, Mb, MB; or
|
1030
|
+
G, Gb, or GB; or T, Tb, TB, to mean multiply value by one thousand; one million;
|
1031
|
+
one billion; or one trillion; respectively. If allow_float is True (default: False)
|
1032
|
+
allow the value to be floating point (i.e. with a decimal point and a fractional part),
|
1033
|
+
in which case the returned value will be of type float rather than int.
|
1034
|
+
If the string is not well formated then returns None.
|
1035
|
+
"""
|
1036
|
+
if not (isinstance(value, str) and (value := value.strip())):
|
1037
|
+
return value if isinstance(value, (int, float)) else None
|
1038
|
+
|
1039
|
+
value_multiplier = 1
|
1040
|
+
value_negative = False
|
1041
|
+
value_fraction = None
|
1042
|
+
|
1043
|
+
if value.startswith("-"):
|
1044
|
+
if not (value := value[1:].strip()):
|
1045
|
+
return None
|
1046
|
+
value_negative = True
|
1047
|
+
elif value.startswith("+"):
|
1048
|
+
if not (value := value[1:].strip()):
|
1049
|
+
return None
|
1050
|
+
|
1051
|
+
if allow_suffix is True:
|
1052
|
+
for suffix in _MULTIPLIER_SUFFIXES:
|
1053
|
+
if value.endswith(suffix):
|
1054
|
+
value_multiplier *= _MULTIPLIER_SUFFIXES[suffix]
|
1055
|
+
if not (value := value[:-len(suffix)].strip()):
|
1056
|
+
return None
|
1057
|
+
break
|
1058
|
+
|
1059
|
+
if allow_float is True:
|
1060
|
+
if dot_index := value.rindex("."):
|
1061
|
+
if value_fraction := value[dot_index + 1:].strip():
|
1062
|
+
try:
|
1063
|
+
value_fraction = float(f"0.{value_fraction}")
|
1064
|
+
except Exception:
|
1065
|
+
return None
|
1066
|
+
value = value[:dot_index].strip()
|
1067
|
+
pass
|
1068
|
+
|
1069
|
+
if allow_commas is True:
|
1070
|
+
if not re.fullmatch(r"(-?\d{1,3}(,\d{3})*)", value):
|
1071
|
+
return None
|
1072
|
+
value = value.replace(",", "")
|
1073
|
+
|
1074
|
+
if not value.isdigit():
|
1075
|
+
return None
|
1076
|
+
|
1077
|
+
result = int(value) * value_multiplier
|
1078
|
+
|
1079
|
+
if value_fraction:
|
1080
|
+
result += value_fraction
|
1081
|
+
|
1082
|
+
if value_negative:
|
1083
|
+
result = -result
|
1084
|
+
|
1085
|
+
return result
|
1086
|
+
|
1087
|
+
|
1000
1088
|
def to_float(value: str, fallback: Optional[Any] = None) -> Optional[Any]:
|
1001
1089
|
try:
|
1002
1090
|
return float(value)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "dcicutils"
|
3
|
-
version = "8.13.3.
|
3
|
+
version = "8.13.3.1b15" # TODO: To become 8.14.0
|
4
4
|
description = "Utility package for interacting with the 4DN Data Portal and other 4DN resources"
|
5
5
|
authors = ["4DN-DCIC Team <support@4dnucleome.org>"]
|
6
6
|
license = "MIT"
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/hack_for_elasticsearch_numpy_usage.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/license_policies/c4-infrastructure.jsonc
RENAMED
File without changes
|
File without changes
|
File without changes
|
{dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/license_policies/park-lab-common.jsonc
RENAMED
File without changes
|
File without changes
|
{dcicutils-8.13.3.1b13 → dcicutils-8.13.3.1b15}/dcicutils/license_policies/park-lab-pipeline.jsonc
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|