dcicutils 8.7.0.1b31__tar.gz → 8.7.0.1b33__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/PKG-INFO +1 -1
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/file_utils.py +12 -10
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/portal_object_utils.py +13 -9
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/structured_data.py +1 -1
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/pyproject.toml +1 -1
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/LICENSE.txt +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/README.rst +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/__init__.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/base.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/beanstalk_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/bundle_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/cloudformation_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/codebuild_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/command_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/common.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/contribution_scripts.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/contribution_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/creds_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/data_readers.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/data_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/deployment_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/diff_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/docker_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/ecr_scripts.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/ecr_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/ecs_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/env_base.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/env_manager.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/env_scripts.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/env_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/env_utils_legacy.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/es_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/exceptions.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/ff_mocks.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/ff_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/function_cache_decorator.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/glacier_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/jh_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/kibana/dashboards.json +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/kibana/readme.md +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/lang_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/license_policies/c4-infrastructure.jsonc +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/license_policies/c4-python-infrastructure.jsonc +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/license_policies/park-lab-common-server.jsonc +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/license_policies/park-lab-common.jsonc +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/license_policies/park-lab-gpl-pipeline.jsonc +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/license_policies/park-lab-pipeline.jsonc +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/license_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/log_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/misc_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/obfuscation_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/opensearch_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/portal_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/project_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/qa_checkers.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/qa_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/redis_tools.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/redis_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/s3_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/schema_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/scripts/publish_to_pypi.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/scripts/run_license_checker.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/secrets_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/sheet_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/snapshot_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/ssl_certificate_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/task_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/tmpfile_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/trace_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/validation_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/variant_utils.py +0 -0
- {dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/zip_utils.py +0 -0
@@ -6,19 +6,21 @@ from typing import List, Optional, Union
|
|
6
6
|
|
7
7
|
def search_for_file(file: str,
|
8
8
|
location: Union[str, Optional[List[str]]] = None,
|
9
|
-
|
10
|
-
|
9
|
+
recursive: bool = False,
|
10
|
+
single: bool = False) -> Union[List[str], Optional[str]]:
|
11
11
|
"""
|
12
|
-
Searches for the
|
12
|
+
Searches for the existence of the given file name, first directly in the given directory or list
|
13
13
|
of directories, if specified, and if not then just in the current (working) directory; if the
|
14
14
|
given recursive flag is True then also searches all sub-directories of these directories;
|
15
|
-
returns the full path name to the file if found
|
15
|
+
returns the full path name to the file if found. If the single flag is True then just the
|
16
|
+
first file which is found is returns (as a string), or None if none; if the single flag
|
17
|
+
is False, then all matched files are returned in a list, or and empty list if none.
|
16
18
|
"""
|
17
19
|
if file and isinstance(file, (str, pathlib.PosixPath)):
|
18
20
|
if os.path.isabs(file):
|
19
21
|
if os.path.exists(file):
|
20
|
-
return file if
|
21
|
-
return None if
|
22
|
+
return file if single else [file]
|
23
|
+
return None if single else []
|
22
24
|
files_found = []
|
23
25
|
if not location:
|
24
26
|
location = ["."]
|
@@ -29,7 +31,7 @@ def search_for_file(file: str,
|
|
29
31
|
for directory in location:
|
30
32
|
if isinstance(directory, (str, pathlib.PosixPath)) and os.path.exists(os.path.join(directory, file)):
|
31
33
|
file_found = os.path.abspath(os.path.normpath(os.path.join(directory, file)))
|
32
|
-
if
|
34
|
+
if single:
|
33
35
|
return file_found
|
34
36
|
if file_found not in files_found:
|
35
37
|
files_found.append(file_found)
|
@@ -43,10 +45,10 @@ def search_for_file(file: str,
|
|
43
45
|
if files:
|
44
46
|
for file_found in files:
|
45
47
|
file_found = os.path.abspath(file_found)
|
46
|
-
if
|
48
|
+
if single:
|
47
49
|
return file_found
|
48
50
|
if file_found not in files_found:
|
49
51
|
files_found.append(file_found)
|
50
52
|
if files_found:
|
51
|
-
return files_found[0] if
|
52
|
-
return None if
|
53
|
+
return files_found[0] if single else files_found
|
54
|
+
return None if single else []
|
@@ -8,9 +8,13 @@ class PortalObject:
|
|
8
8
|
|
9
9
|
def __init__(self, portal: Portal, portal_object: dict, portal_object_type: Optional[str] = None) -> None:
|
10
10
|
self._portal = portal
|
11
|
-
self.
|
11
|
+
self._data = portal_object
|
12
12
|
self._type = portal_object_type if isinstance(portal_object_type, str) and portal_object_type else None
|
13
13
|
|
14
|
+
@property
|
15
|
+
def data(self):
|
16
|
+
return self._data
|
17
|
+
|
14
18
|
@property
|
15
19
|
@lru_cache(maxsize=1)
|
16
20
|
def schema(self):
|
@@ -19,12 +23,12 @@ class PortalObject:
|
|
19
23
|
@property
|
20
24
|
@lru_cache(maxsize=1)
|
21
25
|
def schema_type(self):
|
22
|
-
return self._type or Portal.get_schema_type(self.
|
26
|
+
return self._type or Portal.get_schema_type(self._data)
|
23
27
|
|
24
28
|
@property
|
25
29
|
@lru_cache(maxsize=1)
|
26
30
|
def schema_types(self):
|
27
|
-
return self._type or Portal.get_schema_types(self.
|
31
|
+
return self._type or Portal.get_schema_types(self._data)
|
28
32
|
|
29
33
|
@property
|
30
34
|
@lru_cache(maxsize=1)
|
@@ -36,7 +40,7 @@ class PortalObject:
|
|
36
40
|
@property
|
37
41
|
@lru_cache(maxsize=1)
|
38
42
|
def uuid(self) -> Optional[str]:
|
39
|
-
return PortalObject.get_uuid(self.
|
43
|
+
return PortalObject.get_uuid(self._data)
|
40
44
|
|
41
45
|
@staticmethod
|
42
46
|
def get_uuid(portal_object: dict) -> Optional[str]:
|
@@ -53,13 +57,13 @@ class PortalObject:
|
|
53
57
|
identifying_properties = []
|
54
58
|
for identifying_property in self.schema_identifying_properties:
|
55
59
|
if identifying_property not in ["uuid", "identifier", "aliases"]:
|
56
|
-
if self.
|
60
|
+
if self._data.get(identifying_property):
|
57
61
|
identifying_properties.append(identifying_property)
|
58
|
-
if self.
|
62
|
+
if self._data.get("identifier"):
|
59
63
|
identifying_properties.insert(0, "identifier")
|
60
|
-
if self.
|
64
|
+
if self._data.get("uuid"):
|
61
65
|
identifying_properties.insert(0, "uuid")
|
62
|
-
if "aliases" in self.schema_identifying_properties and self.
|
66
|
+
if "aliases" in self.schema_identifying_properties and self._data.get("aliases"):
|
63
67
|
identifying_properties.append("aliases")
|
64
68
|
return identifying_properties
|
65
69
|
|
@@ -73,7 +77,7 @@ class PortalObject:
|
|
73
77
|
return []
|
74
78
|
identifying_paths = []
|
75
79
|
for identifying_property in identifying_properties:
|
76
|
-
if (identifying_value := self.
|
80
|
+
if (identifying_value := self._data.get(identifying_property)):
|
77
81
|
if identifying_property == "uuid":
|
78
82
|
identifying_paths.append(f"/{identifying_value}")
|
79
83
|
# For now at least we include the path both with and without the schema type component
|
@@ -116,7 +116,7 @@ class StructuredDataSet:
|
|
116
116
|
location: Union[str, Optional[List[str]]] = None, recursive: bool = False) -> List[str]:
|
117
117
|
upload_files = copy.deepcopy(self.upload_files)
|
118
118
|
for upload_file in upload_files:
|
119
|
-
if file_path := search_for_file(upload_file["file"], location,
|
119
|
+
if file_path := search_for_file(upload_file["file"], location, recursive=recursive, single=True):
|
120
120
|
upload_file["path"] = file_path
|
121
121
|
return upload_files
|
122
122
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "dcicutils"
|
3
|
-
version = "8.7.0.
|
3
|
+
version = "8.7.0.1b33" # TODO: To become 8.7.1
|
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
|
{dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/license_policies/c4-infrastructure.jsonc
RENAMED
File without changes
|
File without changes
|
File without changes
|
{dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/license_policies/park-lab-common.jsonc
RENAMED
File without changes
|
{dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/dcicutils/license_policies/park-lab-gpl-pipeline.jsonc
RENAMED
File without changes
|
{dcicutils-8.7.0.1b31 → dcicutils-8.7.0.1b33}/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
|