dcicutils 8.8.3.1b7__tar.gz → 8.8.3.1b9__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/PKG-INFO +1 -1
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/progress_bar.py +17 -9
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/structured_data.py +33 -4
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/pyproject.toml +1 -1
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/LICENSE.txt +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/README.rst +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/__init__.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/base.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/beanstalk_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/bundle_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/captured_output.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/cloudformation_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/codebuild_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/command_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/common.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/contribution_scripts.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/contribution_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/creds_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/data_readers.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/data_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/datetime_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/deployment_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/diff_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/docker_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/ecr_scripts.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/ecr_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/ecs_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/env_base.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/env_manager.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/env_scripts.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/env_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/env_utils_legacy.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/es_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/exceptions.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/ff_mocks.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/ff_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/file_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/function_cache_decorator.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/glacier_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/jh_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/kibana/dashboards.json +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/kibana/readme.md +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/lang_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/license_policies/c4-infrastructure.jsonc +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/license_policies/c4-python-infrastructure.jsonc +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/license_policies/park-lab-common-server.jsonc +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/license_policies/park-lab-common.jsonc +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/license_policies/park-lab-gpl-pipeline.jsonc +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/license_policies/park-lab-pipeline.jsonc +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/license_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/log_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/misc_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/obfuscation_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/opensearch_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/portal_object_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/portal_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/project_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/qa_checkers.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/qa_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/redis_tools.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/redis_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/s3_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/schema_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/scripts/publish_to_pypi.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/scripts/run_license_checker.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/scripts/view_portal_object.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/secrets_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/sheet_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/snapshot_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/ssl_certificate_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/submitr/progress_constants.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/submitr/ref_lookup_strategy.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/task_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/tmpfile_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/trace_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/validation_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/variant_utils.py +0 -0
- {dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/zip_utils.py +0 -0
@@ -106,7 +106,7 @@ class ProgressBar:
|
|
106
106
|
return True
|
107
107
|
return False
|
108
108
|
|
109
|
-
def set_total(self, value: int) -> None:
|
109
|
+
def set_total(self, value: int, _norefresh: bool = False) -> None:
|
110
110
|
if value == self._total:
|
111
111
|
# If the total has not changed since last set then do nothing.
|
112
112
|
return
|
@@ -117,13 +117,15 @@ class ProgressBar:
|
|
117
117
|
# the total during the course of a single ProgressBar instance.
|
118
118
|
self._bar.reset()
|
119
119
|
self._bar.total = value
|
120
|
-
|
120
|
+
if not _norefresh:
|
121
|
+
self._bar.refresh()
|
121
122
|
|
122
|
-
def set_progress(self, value: int) -> None:
|
123
|
+
def set_progress(self, value: int, _norefresh: bool = False) -> None:
|
123
124
|
if isinstance(value, int) and value >= 0:
|
124
125
|
if (self._bar is not None) or self._initialize():
|
125
126
|
self._bar.n = value
|
126
|
-
|
127
|
+
if not _norefresh:
|
128
|
+
self._bar.refresh()
|
127
129
|
|
128
130
|
def increment_progress(self, value: int) -> None:
|
129
131
|
if isinstance(value, int) and value > 0:
|
@@ -131,6 +133,13 @@ class ProgressBar:
|
|
131
133
|
self._bar.update(value)
|
132
134
|
self._bar.refresh()
|
133
135
|
|
136
|
+
def set_description(self, value: str) -> None:
|
137
|
+
if isinstance(value, str):
|
138
|
+
self._description = self._format_description(value)
|
139
|
+
if self._bar is not None:
|
140
|
+
# FYI: tqdm.set_description seems to imply a refresh.
|
141
|
+
self._bar.set_description(self._description)
|
142
|
+
|
134
143
|
def reset_eta(self) -> None:
|
135
144
|
# Since set_total does nothing if total is the same, provide
|
136
145
|
# a way to reset the ETA if starting over with the same total.
|
@@ -142,11 +151,10 @@ class ProgressBar:
|
|
142
151
|
self._bar.n = progress
|
143
152
|
self._bar.refresh()
|
144
153
|
|
145
|
-
def
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
self._bar.set_description(self._description)
|
154
|
+
def reset(self, total: int, progress: int = 0, description: Optional[str] = None) -> None:
|
155
|
+
self.set_total(total, _norefresh=True)
|
156
|
+
self.set_progress(progress, _norefresh=True)
|
157
|
+
self.set_description(description)
|
150
158
|
|
151
159
|
def done(self, description: Optional[str] = None) -> None:
|
152
160
|
if self._done or self._bar is None:
|
@@ -154,7 +154,32 @@ class StructuredDataSet:
|
|
154
154
|
|
155
155
|
@property
|
156
156
|
def resolved_refs_with_uuids(self) -> List[str]:
|
157
|
-
return list([{"path": resolved_ref[0],
|
157
|
+
return list([{"path": resolved_ref[0],
|
158
|
+
"uuid": resolved_ref[1] if len(resolved_ref) >= 2 else None}
|
159
|
+
for resolved_ref in self._resolved_refs])
|
160
|
+
|
161
|
+
@property
|
162
|
+
def unchecked_refs(self) -> List[str]:
|
163
|
+
"""
|
164
|
+
Returns list of unchecked (for existence) references, grouped by reference path;
|
165
|
+
each object in the list has a path property and a srcs property which is a list of
|
166
|
+
src objects containing the type, column and row of the reference to the reference.
|
167
|
+
Note that this is only populated if the norefs option is specified.
|
168
|
+
"""
|
169
|
+
def load_json(value: str) -> Optional[dict]:
|
170
|
+
try:
|
171
|
+
return json.loads(value)
|
172
|
+
except Exception:
|
173
|
+
return None
|
174
|
+
result = []
|
175
|
+
if self._norefs:
|
176
|
+
for ref in self._resolved_refs:
|
177
|
+
if len(ref) >= 3 and (ref_path := ref[0]) and (ref_src := load_json(ref[2])):
|
178
|
+
if existing_ref := [item for item in result if item.get("path") == ref_path]:
|
179
|
+
existing_ref[0]["srcs"].append(ref_src)
|
180
|
+
else:
|
181
|
+
result.append({"path": ref_path, "srcs": [ref_src]})
|
182
|
+
return result
|
158
183
|
|
159
184
|
@property
|
160
185
|
def upload_files(self) -> List[str]:
|
@@ -653,10 +678,14 @@ class Schema(SchemaBase):
|
|
653
678
|
def map_ref(value: str, link_to: str, portal: Optional[Portal], src: Optional[str]) -> Any:
|
654
679
|
nonlocal self, typeinfo
|
655
680
|
if self._norefs:
|
681
|
+
# Here the caller has specified the (StructuredDataSet) norefs option
|
682
|
+
# which means we do not check for the existence of references at all.
|
656
683
|
if value:
|
657
|
-
# Dump the src because
|
658
|
-
# this is ONLY used for smaht-submitr/submit-metadata-bundle --info --refs.
|
659
|
-
|
684
|
+
# Dump the src as a JSON string because a dictionary cannot be added to a set; note
|
685
|
+
# that this is ONLY used for smaht-submitr/submit-metadata-bundle --info --refs.
|
686
|
+
# This info can be gotten at using StructureDataSet.unchecked_refs.
|
687
|
+
self._resolved_refs.add((f"/{link_to}/{value}", None,
|
688
|
+
json.dumps(src) if isinstance(src, dict) else None))
|
660
689
|
return value
|
661
690
|
if not value:
|
662
691
|
if (column := typeinfo.get("column")) and column in self.data.get("required", []):
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "dcicutils"
|
3
|
-
version = "8.8.3.
|
3
|
+
version = "8.8.3.1b9" # TODO: To become 8.8.4
|
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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/license_policies/c4-infrastructure.jsonc
RENAMED
File without changes
|
File without changes
|
{dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/license_policies/park-lab-common-server.jsonc
RENAMED
File without changes
|
{dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/license_policies/park-lab-common.jsonc
RENAMED
File without changes
|
{dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/dcicutils/license_policies/park-lab-gpl-pipeline.jsonc
RENAMED
File without changes
|
{dcicutils-8.8.3.1b7 → dcicutils-8.8.3.1b9}/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
|