deriva 1.7.0__py3-none-any.whl → 1.7.3__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.
- deriva/config/annotation_config.py +2 -2
- deriva/core/__init__.py +1 -1
- deriva/core/catalog_cli.py +83 -39
- deriva/core/datapath.py +519 -26
- deriva/core/ermrest_catalog.py +103 -23
- deriva/core/ermrest_model.py +387 -7
- deriva/core/hatrac_cli.py +5 -3
- deriva/core/utils/globus_auth_utils.py +3 -1
- deriva/transfer/__init__.py +4 -2
- deriva/transfer/download/__init__.py +4 -0
- deriva/transfer/download/deriva_download.py +33 -13
- deriva/transfer/download/deriva_download_cli.py +3 -2
- deriva/transfer/download/processors/query/base_query_processor.py +9 -4
- deriva/transfer/upload/__init__.py +4 -0
- deriva/transfer/upload/deriva_upload.py +9 -2
- deriva/transfer/upload/deriva_upload_cli.py +2 -2
- {deriva-1.7.0.dist-info → deriva-1.7.3.dist-info}/METADATA +2 -2
- {deriva-1.7.0.dist-info → deriva-1.7.3.dist-info}/RECORD +23 -23
- tests/deriva/core/test_datapath.py +24 -2
- {deriva-1.7.0.dist-info → deriva-1.7.3.dist-info}/LICENSE +0 -0
- {deriva-1.7.0.dist-info → deriva-1.7.3.dist-info}/WHEEL +0 -0
- {deriva-1.7.0.dist-info → deriva-1.7.3.dist-info}/entry_points.txt +0 -0
- {deriva-1.7.0.dist-info → deriva-1.7.3.dist-info}/top_level.txt +0 -0
|
@@ -7,7 +7,8 @@ import requests
|
|
|
7
7
|
from requests.exceptions import HTTPError, ConnectionError
|
|
8
8
|
from deriva.transfer import GenericDownloader
|
|
9
9
|
from deriva.transfer.download import DerivaDownloadError, DerivaDownloadConfigurationError, \
|
|
10
|
-
DerivaDownloadAuthenticationError, DerivaDownloadAuthorizationError, DerivaDownloadTimeoutError
|
|
10
|
+
DerivaDownloadAuthenticationError, DerivaDownloadAuthorizationError, DerivaDownloadTimeoutError, \
|
|
11
|
+
DerivaDownloadBaggingError
|
|
11
12
|
from deriva.core import BaseCLI, KeyValuePairArgs, format_credential, format_exception, urlparse
|
|
12
13
|
|
|
13
14
|
|
|
@@ -71,7 +72,7 @@ class DerivaDownloadCLI(BaseCLI):
|
|
|
71
72
|
raise DerivaDownloadAuthorizationError(
|
|
72
73
|
"A requested operation was forbidden. Server responded: %s" % e)
|
|
73
74
|
except (DerivaDownloadError, DerivaDownloadConfigurationError, DerivaDownloadAuthenticationError,
|
|
74
|
-
DerivaDownloadAuthorizationError, DerivaDownloadTimeoutError) as e:
|
|
75
|
+
DerivaDownloadAuthorizationError, DerivaDownloadTimeoutError, DerivaDownloadBaggingError) as e:
|
|
75
76
|
sys.stderr.write(("\n" if not args.quiet else "") + format_exception(e))
|
|
76
77
|
if args.debug:
|
|
77
78
|
traceback.print_exc()
|
|
@@ -21,8 +21,8 @@ class BaseQueryProcessor(BaseProcessor):
|
|
|
21
21
|
self.catalog = kwargs["catalog"]
|
|
22
22
|
self.store = kwargs["store"]
|
|
23
23
|
self.base_path = kwargs["base_path"]
|
|
24
|
-
self.query = self.parameters
|
|
25
|
-
if self.envars:
|
|
24
|
+
self.query = self.parameters.get("query_path", "")
|
|
25
|
+
if self.query and self.envars:
|
|
26
26
|
self.query = self.query.format(**self.envars)
|
|
27
27
|
self.sub_path = self.parameters.get("output_path")
|
|
28
28
|
self.output_filename = self.parameters.get("output_filename")
|
|
@@ -59,6 +59,9 @@ class BaseQueryProcessor(BaseProcessor):
|
|
|
59
59
|
return self.outputs
|
|
60
60
|
|
|
61
61
|
def catalogQuery(self, headers=None, as_file=True):
|
|
62
|
+
if not self.query:
|
|
63
|
+
return {}
|
|
64
|
+
|
|
62
65
|
if not headers:
|
|
63
66
|
headers = self.HEADERS.copy()
|
|
64
67
|
else:
|
|
@@ -175,8 +178,9 @@ class BaseQueryProcessor(BaseProcessor):
|
|
|
175
178
|
envars=self.envars)
|
|
176
179
|
|
|
177
180
|
def __del__(self):
|
|
178
|
-
|
|
179
|
-
session.
|
|
181
|
+
if self.sessions:
|
|
182
|
+
for session in self.sessions.values():
|
|
183
|
+
session.close()
|
|
180
184
|
|
|
181
185
|
|
|
182
186
|
class CSVQueryProcessor(BaseQueryProcessor):
|
|
@@ -232,3 +236,4 @@ class CreateDirProcessor(JSONEnvUpdateProcessor):
|
|
|
232
236
|
self.create_default_paths()
|
|
233
237
|
make_dirs(self.output_abspath)
|
|
234
238
|
|
|
239
|
+
return self.outputs
|
|
@@ -233,8 +233,11 @@ class DerivaUpload(object):
|
|
|
233
233
|
self.credentials = credentials
|
|
234
234
|
self.catalog.set_credentials(self.credentials, host)
|
|
235
235
|
self.store.set_credentials(self.credentials, host)
|
|
236
|
-
|
|
237
|
-
|
|
236
|
+
try:
|
|
237
|
+
attributes = self.catalog.get_authn_session().json()
|
|
238
|
+
self.identity = attributes.get("client", self.identity)
|
|
239
|
+
except Exception as e:
|
|
240
|
+
logger.warning("Unable to determine user identity: %s" % e)
|
|
238
241
|
|
|
239
242
|
def setConfig(self, config_file):
|
|
240
243
|
if not config_file:
|
|
@@ -557,6 +560,10 @@ class DerivaUpload(object):
|
|
|
557
560
|
return None, None, None
|
|
558
561
|
|
|
559
562
|
def uploadFiles(self, status_callback=None, file_callback=None):
|
|
563
|
+
if not self.identity:
|
|
564
|
+
raise DerivaUploadAuthenticationError("Unable to determine user identity for %s. "
|
|
565
|
+
"Please ensure that you are authenticated successfully." %
|
|
566
|
+
self.server_url)
|
|
560
567
|
completed = 0
|
|
561
568
|
for group, assets in self.file_list.items():
|
|
562
569
|
if self.cancelled:
|
|
@@ -3,7 +3,7 @@ import sys
|
|
|
3
3
|
import json
|
|
4
4
|
import traceback
|
|
5
5
|
from deriva.transfer import DerivaUpload, DerivaUploadError, DerivaUploadConfigurationError, \
|
|
6
|
-
DerivaUploadCatalogCreateError, DerivaUploadCatalogUpdateError
|
|
6
|
+
DerivaUploadCatalogCreateError, DerivaUploadCatalogUpdateError, DerivaUploadAuthenticationError
|
|
7
7
|
from deriva.core import BaseCLI, write_config, format_credential, format_exception, urlparse
|
|
8
8
|
|
|
9
9
|
|
|
@@ -95,7 +95,7 @@ class DerivaUploadCLI(BaseCLI):
|
|
|
95
95
|
args.dry_run,
|
|
96
96
|
args.output_file)
|
|
97
97
|
except (RuntimeError, FileNotFoundError, DerivaUploadError, DerivaUploadConfigurationError,
|
|
98
|
-
DerivaUploadCatalogCreateError, DerivaUploadCatalogUpdateError) as e:
|
|
98
|
+
DerivaUploadCatalogCreateError, DerivaUploadCatalogUpdateError, DerivaUploadAuthenticationError) as e:
|
|
99
99
|
sys.stderr.write(("\n" if not args.quiet else "") + format_exception(e))
|
|
100
100
|
if args.debug:
|
|
101
101
|
traceback.print_exc()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: deriva
|
|
3
|
-
Version: 1.7.
|
|
3
|
+
Version: 1.7.3
|
|
4
4
|
Summary: Python APIs and CLIs (Command-Line Interfaces) for the DERIVA platform.
|
|
5
5
|
Home-page: https://github.com/informatics-isi-edu/deriva-py
|
|
6
6
|
Author: USC Information Sciences Institute, Informatics Systems Research Division
|
|
@@ -29,7 +29,7 @@ Requires-Dist: certifi
|
|
|
29
29
|
Requires-Dist: pika
|
|
30
30
|
Requires-Dist: urllib3 <3,>=1.26
|
|
31
31
|
Requires-Dist: portalocker >=1.2.1
|
|
32
|
-
Requires-Dist: bdbag >=1.7.
|
|
32
|
+
Requires-Dist: bdbag >=1.7.3
|
|
33
33
|
Requires-Dist: globus-sdk <4,>=3
|
|
34
34
|
Requires-Dist: fair-research-login >=0.3.1
|
|
35
35
|
Requires-Dist: fair-identifiers-client >=0.5.1
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
deriva/__init__.py,sha256=h-QyvMVzDNpT3jyVskcSbUVFXxGCRxieFPrvTveZG9k,64
|
|
2
2
|
deriva/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
3
|
deriva/config/acl_config.py,sha256=yZ0g_Cwv1MZXajUP2sVbc928XakUDu5Q97w9aK3VCCE,23946
|
|
4
|
-
deriva/config/annotation_config.py,sha256=
|
|
4
|
+
deriva/config/annotation_config.py,sha256=sWcJnRfS5vcb85IdUOd420cmFHRyb4br5OxLCOssbec,11714
|
|
5
5
|
deriva/config/annotation_validate.py,sha256=ZN0jq6As49hfsAmWONUxAStqFG9TeYzvCmRU9TQ-zD8,5228
|
|
6
6
|
deriva/config/base_config.py,sha256=Y5sFotuAWWyo-LZvzbzVY2ZDaC-zhwbMXusgBF1OJYM,20724
|
|
7
7
|
deriva/config/dump_catalog_annotations.py,sha256=QzaWDLfWIAQ0eWVV11zeceWgwDBOYIePJnDQgRydwTE,9362
|
|
8
8
|
deriva/config/rollback_annotation.py,sha256=EMVpuaMh2VaXXoHhsr3ldc7g7e92ngszEswdGNEmGFQ,3020
|
|
9
9
|
deriva/config/examples/group_owner_policy.json,sha256=8v3GWM1F_BWnYD9x_f6Eo4kBDvyy8g7mRqujfoEKLNc,2408
|
|
10
10
|
deriva/config/examples/self_serve_policy.json,sha256=pW-cqWz4rJNNXwY4eVZFkQ8gKCHclC9yDa22ylfcDqY,1676
|
|
11
|
-
deriva/core/__init__.py,sha256=
|
|
11
|
+
deriva/core/__init__.py,sha256=ZjDR3suQoZV7qrKaA7JdSLjopu6XDHXRC7_yfM6rgmE,4945
|
|
12
12
|
deriva/core/annotation.py,sha256=PkAkPkxX1brQsb8_drR1Qj5QjQA5mjkpXhkq9NuZ1g8,13432
|
|
13
13
|
deriva/core/base_cli.py,sha256=EkLXOTeaFWUbPaYV-eLuLGga1PbkFVWi3Jjo-e_Vb-U,2681
|
|
14
|
-
deriva/core/catalog_cli.py,sha256
|
|
15
|
-
deriva/core/datapath.py,sha256=
|
|
14
|
+
deriva/core/catalog_cli.py,sha256=-6Bo6GLWFWap7y3VxkzPs73HAe_XzRXIJMW-Ri84m3M,23273
|
|
15
|
+
deriva/core/datapath.py,sha256=HmmV3dZtEe9lHr2b9dYyyVdvzZwy6p07ZUF9ocbFvo0,89248
|
|
16
16
|
deriva/core/deriva_binding.py,sha256=_sA9HGrcVRqT-OhrneMDMOquyVOFOxLq3WzBQhasLIM,12970
|
|
17
17
|
deriva/core/deriva_server.py,sha256=nsW3gwg1sIaHl3BTf-nL41AkSj3dEpcEBlatvjvN8CQ,200
|
|
18
|
-
deriva/core/ermrest_catalog.py,sha256=
|
|
19
|
-
deriva/core/ermrest_model.py,sha256=
|
|
20
|
-
deriva/core/hatrac_cli.py,sha256=
|
|
18
|
+
deriva/core/ermrest_catalog.py,sha256=_eqQg16i1aA95R99B7tLZxHWQlYk-rLpN_0zghfNWRc,54991
|
|
19
|
+
deriva/core/ermrest_model.py,sha256=pf8HC_ecm2NiMF0rg6UjbAuTR4ZKMhf5o5JmMYYuV8I,101855
|
|
20
|
+
deriva/core/hatrac_cli.py,sha256=J8Vg2BPMqNrRC3egr0IUml-_Eo3UxuhCvk_dInjbCiw,14554
|
|
21
21
|
deriva/core/hatrac_store.py,sha256=t7gEsZ3SJqt1RefSGc3728PQoVs9E5UWEBNGGbbG6Bw,22582
|
|
22
22
|
deriva/core/polling_ermrest_catalog.py,sha256=KsjiFqPQaHWnJZCVF5i77sdzfubqZHgMBbQ1p8V8D3s,10351
|
|
23
23
|
deriva/core/schemas/app_links.schema.json,sha256=AxrkC2scxomM6N7jyjtdYA73BbZzPrmuqU8PYWe7okI,954
|
|
@@ -44,7 +44,7 @@ deriva/core/schemas/visible_foreign_keys.schema.json,sha256=K-oa2qzj5EbmJCEyN6mN
|
|
|
44
44
|
deriva/core/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
45
45
|
deriva/core/utils/__init__.py,sha256=XSbGaWe44hebxYvoh5huFzZkMY6TSKPOCRSjUOvaY70,124
|
|
46
46
|
deriva/core/utils/core_utils.py,sha256=5xUjJ-1QrPFKOiwfSWFDdH8Hm5a-AEhzCvy2GJPjx4A,19500
|
|
47
|
-
deriva/core/utils/globus_auth_utils.py,sha256=
|
|
47
|
+
deriva/core/utils/globus_auth_utils.py,sha256=huPzKSr0d2NirpLzyp6CSyR1gIAdlRuP-X0jRo5W_p8,55732
|
|
48
48
|
deriva/core/utils/hash_utils.py,sha256=JqUYVB3jXusCQYX9fkKmweUKBC0WQi8ZI2N8m-uKygQ,2299
|
|
49
49
|
deriva/core/utils/mime_utils.py,sha256=ZT7pMjY2kQWBsgsGC3jY6kjfygdsIyiYW3BKNw_pPyg,1128
|
|
50
50
|
deriva/core/utils/version_utils.py,sha256=HWNUQAZrPXu0oGjhG6gMNm3kWtfa3nR50vfH2uQxBA0,2954
|
|
@@ -52,15 +52,15 @@ deriva/core/utils/webauthn_utils.py,sha256=rD0HQZAjUKp4NfqHQG1FhH3x7uKog2et7w7LB
|
|
|
52
52
|
deriva/seo/__init__.py,sha256=dYn48A7blbeYf40b4T3KVofrQK4u5K5MfxXWfIGloig,54
|
|
53
53
|
deriva/seo/sitemap_builder.py,sha256=Ht_AbodEERDofIoCcd4kPlrl1pVW670WN5dT4cc05LQ,13948
|
|
54
54
|
deriva/seo/sitemap_cli.py,sha256=miCqRfpSj5Dx5BfJGSd8Pi2e4OOQjotDzP_JubukhCM,2654
|
|
55
|
-
deriva/transfer/__init__.py,sha256=
|
|
55
|
+
deriva/transfer/__init__.py,sha256=Xbp-s9vmzFbumJZ743PEXE8rI1s6-s234F66C_ioC_E,1172
|
|
56
56
|
deriva/transfer/backup/__init__.py,sha256=vxsZiDLMTJQPybXT89G-07GsUoLhnItTCbLdXcDSyeA,465
|
|
57
57
|
deriva/transfer/backup/__main__.py,sha256=dT12--8C6sKGEtMhsYuy013ebXKpVnBJfhcQNlVtv6Y,361
|
|
58
58
|
deriva/transfer/backup/deriva_backup.py,sha256=IO9Tmzx6jHfUCkP-41nSsAeOFLn9T-0HwQcpRLpM_zs,5228
|
|
59
59
|
deriva/transfer/backup/deriva_backup_cli.py,sha256=T0tvPKWniRinMQt0qG7FI8AoK3GgtlT6EyBZmZCAjL8,2157
|
|
60
|
-
deriva/transfer/download/__init__.py,sha256=
|
|
60
|
+
deriva/transfer/download/__init__.py,sha256=Pr7Zud4AFsIWwopTxeC_pupslgCG_lzycO9w9Xyh88Q,350
|
|
61
61
|
deriva/transfer/download/__main__.py,sha256=YUg7AZ07t_xaOgtfJnU_l1nkEHCCPR8sU5X-l1An6SY,363
|
|
62
|
-
deriva/transfer/download/deriva_download.py,sha256=
|
|
63
|
-
deriva/transfer/download/deriva_download_cli.py,sha256=
|
|
62
|
+
deriva/transfer/download/deriva_download.py,sha256=9WHX0iBUsXv3iT0pEy95kpVN-Oh4vc6ywI5tYmJWpfk,17145
|
|
63
|
+
deriva/transfer/download/deriva_download_cli.py,sha256=wN8tyQDv1AIE_aDqjECbmkoEWN050vlEdJyteYbdgSs,3940
|
|
64
64
|
deriva/transfer/download/processors/__init__.py,sha256=evLp36tZn-Z_AMshdfV3JJO8w1es5owsnRN0IFJUwIo,4507
|
|
65
65
|
deriva/transfer/download/processors/base_processor.py,sha256=R6IIHSa_euv4X2Dyhd8fvQAiVYDGJTWMQtPoukHQn-Q,3837
|
|
66
66
|
deriva/transfer/download/processors/postprocess/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -69,7 +69,7 @@ deriva/transfer/download/processors/postprocess/transfer_post_processor.py,sha25
|
|
|
69
69
|
deriva/transfer/download/processors/postprocess/url_post_processor.py,sha256=s68iIYqQSZHtbv4y-fCG8pjhApAeMEG6hYcKx2Pvf5Y,2745
|
|
70
70
|
deriva/transfer/download/processors/query/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
71
71
|
deriva/transfer/download/processors/query/bag_fetch_query_processor.py,sha256=tiQtfuy01YgOFFD5b_sP7TGjMnt0Jqcg2gp1KNWqeLE,5645
|
|
72
|
-
deriva/transfer/download/processors/query/base_query_processor.py,sha256=
|
|
72
|
+
deriva/transfer/download/processors/query/base_query_processor.py,sha256=oM1pbsbpnPV12h3FLtxo8Sp0OCUQYiRhg22AVqf4N50,10327
|
|
73
73
|
deriva/transfer/download/processors/query/file_download_query_processor.py,sha256=Hg1NbKsaGJh9cB86yIyL7Fm7ywSNVop837Dv8aFXUes,7257
|
|
74
74
|
deriva/transfer/download/processors/transform/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
75
75
|
deriva/transfer/download/processors/transform/base_transform_processor.py,sha256=Ddw5gsNpDANeuLvUaF4utp8psaxOtAzlgXtOg8gb-Pc,4109
|
|
@@ -83,10 +83,10 @@ deriva/transfer/restore/__init__.py,sha256=l_VNbzpfjL8aVSASctsqSMbWO6m_9aVhkq5Lq
|
|
|
83
83
|
deriva/transfer/restore/__main__.py,sha256=iGGSF4_q3gUTLU3pPHYL9PNi9T6XNRHOBeTf1obhOjc,364
|
|
84
84
|
deriva/transfer/restore/deriva_restore.py,sha256=s0h7cXit2USSdjrIfrj0dr7BJ0rrHHMxYr6AxsuoDiI,30298
|
|
85
85
|
deriva/transfer/restore/deriva_restore_cli.py,sha256=2ViZ1Lyl5ndXPKeJFCHHGnwzkg3DfHhTuRa_bN7eJm8,5603
|
|
86
|
-
deriva/transfer/upload/__init__.py,sha256=
|
|
86
|
+
deriva/transfer/upload/__init__.py,sha256=4mlc_iUX-v7SpXzlCZmhxQtSiW5JeDGb2FX7bb1E6tY,304
|
|
87
87
|
deriva/transfer/upload/__main__.py,sha256=hqnXtGpRqPthwpO6uvrnf_TQm7McheeyOt960hStSMY,340
|
|
88
|
-
deriva/transfer/upload/deriva_upload.py,sha256=
|
|
89
|
-
deriva/transfer/upload/deriva_upload_cli.py,sha256
|
|
88
|
+
deriva/transfer/upload/deriva_upload.py,sha256=GuQb_-PBKR0JstEifXqSOZpF1zTyaPLfM0PCDlu2Qw8,60500
|
|
89
|
+
deriva/transfer/upload/deriva_upload_cli.py,sha256=-Q6xgiYabQziTQcMQdGNDAv-eLxCCHO-BCSo4umbDE4,5082
|
|
90
90
|
deriva/transfer/upload/processors/__init__.py,sha256=sMM5xdJ82UIRdB1lGMKk7ft0BgtjS2oJ0sI4SQSqiIU,2481
|
|
91
91
|
deriva/transfer/upload/processors/archive_processor.py,sha256=ID0lDwDn4vPe5nbxy6m28Ssj_TsZpK4df2xRrM6nJRQ,2015
|
|
92
92
|
deriva/transfer/upload/processors/base_processor.py,sha256=Nsr-BP_0TvCtW7sb7s2QbYDEJoijONpQDDdnkVcbmng,666
|
|
@@ -97,10 +97,10 @@ deriva/transfer/upload/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NM
|
|
|
97
97
|
deriva/utils/__init__.py,sha256=jv2YF__bseklT3OWEzlqJ5qE24c4aWd5F4r0TTjOrWQ,65
|
|
98
98
|
tests/deriva/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
99
99
|
tests/deriva/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
100
|
-
tests/deriva/core/test_datapath.py,sha256=
|
|
101
|
-
deriva-1.7.
|
|
102
|
-
deriva-1.7.
|
|
103
|
-
deriva-1.7.
|
|
104
|
-
deriva-1.7.
|
|
105
|
-
deriva-1.7.
|
|
106
|
-
deriva-1.7.
|
|
100
|
+
tests/deriva/core/test_datapath.py,sha256=hC5PqyL9zqNOV4ydY5L4pHdt8r7Or7OgZnX-F52P2nU,37308
|
|
101
|
+
deriva-1.7.3.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
|
|
102
|
+
deriva-1.7.3.dist-info/METADATA,sha256=u8fofL_SdxidGBInnPPmjbb5qDgZWN6iBFzFwGvsJT0,1623
|
|
103
|
+
deriva-1.7.3.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
104
|
+
deriva-1.7.3.dist-info/entry_points.txt,sha256=72BEmEE4Bes5QhVxUHrl7EvUARrgISWxI2KGa8BbNZ8,786
|
|
105
|
+
deriva-1.7.3.dist-info/top_level.txt,sha256=_LHDie5-O53wFlexfrxjewpVkf04oydf3CqX5h75DXE,13
|
|
106
|
+
deriva-1.7.3.dist-info/RECORD,,
|
|
@@ -12,7 +12,8 @@ import os
|
|
|
12
12
|
import unittest
|
|
13
13
|
import sys
|
|
14
14
|
from deriva.core import DerivaServer, get_credential, ermrest_model as _em, __version__
|
|
15
|
-
from deriva.core.datapath import DataPathException, Min, Max, Sum, Avg, Cnt, CntD, Array, ArrayD, Bin
|
|
15
|
+
from deriva.core.datapath import DataPathException, Min, Max, Sum, Avg, Cnt, CntD, Array, ArrayD, Bin, \
|
|
16
|
+
simple_denormalization_with_whole_entities
|
|
16
17
|
|
|
17
18
|
try:
|
|
18
19
|
from pandas import DataFrame
|
|
@@ -129,11 +130,12 @@ def populate_test_catalog(catalog):
|
|
|
129
130
|
"""Populate the test catalog."""
|
|
130
131
|
paths = catalog.getPathBuilder()
|
|
131
132
|
logger.debug("Inserting project...")
|
|
132
|
-
logger.debug("Inserting experiment types...")
|
|
133
133
|
proj_table = paths.schemas[SNAME_ISA].tables[TNAME_PROJECT]
|
|
134
|
+
logger.debug("Inserting investigators...")
|
|
134
135
|
proj_table.insert([
|
|
135
136
|
{"Investigator": TEST_PROJ_INVESTIGATOR, "Num": TEST_PROJ_NUM}
|
|
136
137
|
])
|
|
138
|
+
logger.debug("Inserting experiment types...")
|
|
137
139
|
type_table = paths.schemas[SNAME_VOCAB].tables[TNAME_EXPERIMENT_TYPE]
|
|
138
140
|
types = type_table.insert([
|
|
139
141
|
{"Name": "{}".format(name), "Description": "NA"} for name in range(TEST_EXPTYPE_MAX)
|
|
@@ -806,6 +808,26 @@ class DatapathTests (unittest.TestCase):
|
|
|
806
808
|
self.assertEqual(path.context._name, path3.context._name, "Context of composed paths should equal far right-hand path's context")
|
|
807
809
|
self.assertGreater(len(path.Experiment.entities()), 0, "Should have returned results")
|
|
808
810
|
|
|
811
|
+
def test_simple_denormalization(self):
|
|
812
|
+
entities = self.experiment.entities()
|
|
813
|
+
results = self.experiment.denormalize()
|
|
814
|
+
self.assertEqual(len(entities), len(results))
|
|
815
|
+
self.assertNotEqual(entities[0].keys(), results[0].keys())
|
|
816
|
+
self.assertIn('Type', results[0])
|
|
817
|
+
self.assertTrue(entities[0]['Type'].startswith('TEST:'))
|
|
818
|
+
self.assertTrue(results[0]['Type'])
|
|
819
|
+
self.assertFalse(results[0]['Type'].startswith('TEST:'))
|
|
820
|
+
|
|
821
|
+
def test_simple_denormalization_w_entities(self):
|
|
822
|
+
entities = self.experiment.entities()
|
|
823
|
+
results = self.experiment.denormalize(heuristic=simple_denormalization_with_whole_entities)
|
|
824
|
+
self.assertEqual(len(entities), len(results))
|
|
825
|
+
self.assertLess(len(entities[0].keys()), len(results[0].keys()))
|
|
826
|
+
self.assertIn('Experiment_Project Investigator_Project_Num_fkey', results[0])
|
|
827
|
+
self.assertIsInstance(results[0]['Experiment_Project Investigator_Project_Num_fkey'], list)
|
|
828
|
+
self.assertIsInstance(results[0]['Experiment_Project Investigator_Project_Num_fkey'][0], dict)
|
|
829
|
+
self.assertIn('RID', results[0]['Experiment_Project Investigator_Project_Num_fkey'][0])
|
|
830
|
+
|
|
809
831
|
|
|
810
832
|
if __name__ == '__main__':
|
|
811
833
|
sys.exit(unittest.main())
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|