deriva 1.7.7__py3-none-any.whl → 1.7.8__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/core/__init__.py CHANGED
@@ -1,4 +1,4 @@
1
- __version__ = "1.7.7"
1
+ __version__ = "1.7.8"
2
2
 
3
3
  from deriva.core.utils.core_utils import *
4
4
  from deriva.core.base_cli import BaseCLI, KeyValuePairArgs
@@ -4,8 +4,8 @@ from deriva.transfer.download.deriva_download import DerivaDownload, GenericDown
4
4
  from deriva.transfer.download.deriva_download_cli import DerivaDownloadCLI
5
5
  from deriva.transfer.download.deriva_export import DerivaExport, DerivaExportCLI
6
6
 
7
- from deriva.transfer.upload.deriva_upload import DerivaUpload, GenericUploader, DerivaUploadError, DerivaUploadError, \
8
- DerivaUploadConfigurationError, DerivaUploadCatalogCreateError, DerivaUploadCatalogUpdateError, \
7
+ from deriva.transfer.upload.deriva_upload import DerivaUpload, GenericUploader, UploadState, DerivaUploadError, \
8
+ DerivaUploadError, DerivaUploadConfigurationError, DerivaUploadCatalogCreateError, DerivaUploadCatalogUpdateError, \
9
9
  DerivaUploadAuthenticationError
10
10
  from deriva.transfer.upload.deriva_upload_cli import DerivaUploadCLI
11
11
 
@@ -5,7 +5,6 @@ import traceback
5
5
  import requests
6
6
  import argparse
7
7
  import logging
8
- import certifi
9
8
  import datetime
10
9
  from collections.abc import Mapping, Iterable
11
10
  from requests.exceptions import HTTPError, ConnectionError, Timeout
@@ -125,7 +124,7 @@ class DerivaExport:
125
124
 
126
125
  filename = parse_content_disposition(content_disposition)
127
126
  output_path = os.path.abspath(os.path.join(self.output_dir, filename))
128
- with self.session.get(url, stream=True, verify=certifi.where()) as r:
127
+ with self.session.get(url, stream=True) as r:
129
128
  if r.status_code != 200:
130
129
  file_error = "File [%s] transfer failed." % output_path
131
130
  url_error = 'HTTP GET Failed for url: %s' % url
@@ -1,6 +1,5 @@
1
1
  import os
2
2
  import errno
3
- import certifi
4
3
  import requests
5
4
  from deriva.core import urlsplit, get_new_requests_session, stob, make_dirs, format_exception, DEFAULT_SESSION_CONFIG
6
5
  from deriva.transfer.download import DerivaDownloadError, DerivaDownloadConfigurationError, \
@@ -162,7 +161,7 @@ class BaseQueryProcessor(BaseProcessor):
162
161
  if cookies:
163
162
  session.cookies.update(cookies)
164
163
  if login_params and auth_url:
165
- r = session.post(auth_url, data=login_params, verify=certifi.where())
164
+ r = session.post(auth_url, data=login_params)
166
165
  if r.status_code > 203:
167
166
  raise DerivaDownloadError(
168
167
  'GetExternalSession Failed with Status Code: %s\n%s\n' % (r.status_code, r.text))
@@ -4,7 +4,6 @@ import uuid
4
4
  import datetime
5
5
  import logging
6
6
  import requests
7
- import certifi
8
7
  from bdbag import bdbag_ro as ro
9
8
  from deriva.core import urlsplit, format_exception, get_transfer_summary, make_dirs, DEFAULT_CHUNK_SIZE
10
9
  from deriva.core.utils.mime_utils import parse_content_disposition
@@ -39,7 +38,7 @@ class FileDownloadQueryProcessor(BaseQueryProcessor):
39
38
  else:
40
39
  headers.update(self.HEADERS)
41
40
  session = self.getExternalSession(host)
42
- with session.get(url, headers=headers, stream=True, verify=certifi.where()) as r:
41
+ with session.get(url, headers=headers, stream=True) as r:
43
42
  if r.status_code != 200:
44
43
  file_error = "File [%s] transfer failed." % output_path
45
44
  url_error = 'HTTP GET Failed for url: %s' % url
@@ -157,8 +157,12 @@ class DerivaUpload(object):
157
157
 
158
158
  # determine identity
159
159
  if self.credentials:
160
- attributes = self.catalog.get_authn_session().json()
161
- self.identity = attributes.get("client", self.identity)
160
+ try:
161
+ attributes = self.catalog.get_authn_session().json()
162
+ self.identity = attributes.get("client", self.identity)
163
+ except Exception as e:
164
+ # not a big deal since the credential token being used could be expired
165
+ logger.debug("Unable to determine user identity from existing credential (may be expired): %s" % e)
162
166
 
163
167
  # init dcctx cid to a default
164
168
  self.set_dcctx_cid(self.dcctx_cid)
@@ -342,7 +346,7 @@ class DerivaUpload(object):
342
346
  return '%s:%s' % (urlquote(schema_name), urlquote(table_name))
343
347
 
344
348
  @staticmethod
345
- def interpolateDict(src, dst, allowNone=False):
349
+ def interpolateDict(src, dst, allow_none=False, allow_none_column_list=[]):
346
350
  if not (isinstance(src, dict) and isinstance(dst, dict)):
347
351
  raise ValueError("Invalid input parameter type(s): (src = %s, dst = %s), expected (dict, dict)" % (
348
352
  type(src).__name__, type(dst).__name__))
@@ -362,10 +366,10 @@ class DerivaUpload(object):
362
366
  if value.startswith('{') and value.endswith('}'):
363
367
  value = None
364
368
  dst.update({k: value})
365
- # remove all None valued entries in the dest, if disallowed
366
- if not allowNone:
367
- empty = [k for k, v in dst.items() if v is None]
368
- for k in empty:
369
+ # remove all None valued entries in the dest, if globally disallowed or the column is not explicitly allowed
370
+ empty = [k for k, v in dst.items() if v is None]
371
+ for k in empty:
372
+ if not allow_none or (allow_none and k not in allow_none_column_list):
369
373
  del dst[k]
370
374
 
371
375
  return dst
@@ -720,7 +724,9 @@ class DerivaUpload(object):
720
724
 
721
725
  # 8. Update an existing record, if necessary
722
726
  column_map = asset_mapping.get("column_map", {})
723
- updated_record = self.interpolateDict(self.metadata, column_map)
727
+ allow_none_col_list = asset_mapping.get("allow_empty_columns_on_update", [])
728
+ allow_none = True if allow_none_col_list else False
729
+ updated_record = self.interpolateDict(self.metadata, column_map, allow_none, allow_none_col_list)
724
730
  if updated_record != record:
725
731
  record_update_template = asset_mapping.get("record_update_template")
726
732
  require_record_update_template = stob(asset_mapping.get("require_record_update_template", False))
@@ -794,7 +800,7 @@ class DerivaUpload(object):
794
800
  if result:
795
801
  record = result[0]
796
802
  self._updateFileMetadata(record)
797
- return self.interpolateDict(self.metadata, column_map, allowNone=True), record
803
+ return self.interpolateDict(self.metadata, column_map, allow_none=True), record
798
804
 
799
805
  def _urlEncodeMetadata(self, safe_overrides=None):
800
806
  urlencoded = dict()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: deriva
3
- Version: 1.7.7
3
+ Version: 1.7.8
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
@@ -25,7 +25,6 @@ Description-Content-Type: text/markdown
25
25
  License-File: LICENSE
26
26
  Requires-Dist: packaging
27
27
  Requires-Dist: requests
28
- Requires-Dist: certifi
29
28
  Requires-Dist: pika
30
29
  Requires-Dist: urllib3 <3,>=1.26
31
30
  Requires-Dist: portalocker >=1.2.1
@@ -8,7 +8,7 @@ deriva/config/dump_catalog_annotations.py,sha256=QzaWDLfWIAQ0eWVV11zeceWgwDBOYIe
8
8
  deriva/config/rollback_annotation.py,sha256=vqrIcen-KZX8LDpu2OVNivzIHpQoQgWkZAChZJctvtk,3015
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=D7aya8r3BTbewaSUmhbb4DB-Ltwe2aXV10CMfPo13rI,4945
11
+ deriva/core/__init__.py,sha256=ijQ1wwJffdlUmiyyLSKYYj1aNWZAZfw8U_j1FMO8lBk,4945
12
12
  deriva/core/annotation.py,sha256=PkAkPkxX1brQsb8_drR1Qj5QjQA5mjkpXhkq9NuZ1g8,13432
13
13
  deriva/core/base_cli.py,sha256=78Ilf3_f2xREQb3IIj6q0jwWAiXSObZszG0JURs36lA,2902
14
14
  deriva/core/catalog_cli.py,sha256=-6Bo6GLWFWap7y3VxkzPs73HAe_XzRXIJMW-Ri84m3M,23273
@@ -53,7 +53,7 @@ deriva/core/utils/webauthn_utils.py,sha256=rD0HQZAjUKp4NfqHQG1FhH3x7uKog2et7w7LB
53
53
  deriva/seo/__init__.py,sha256=dYn48A7blbeYf40b4T3KVofrQK4u5K5MfxXWfIGloig,54
54
54
  deriva/seo/sitemap_builder.py,sha256=Ht_AbodEERDofIoCcd4kPlrl1pVW670WN5dT4cc05LQ,13948
55
55
  deriva/seo/sitemap_cli.py,sha256=miCqRfpSj5Dx5BfJGSd8Pi2e4OOQjotDzP_JubukhCM,2654
56
- deriva/transfer/__init__.py,sha256=3a01U6e68kBEnFUp0dRMFLRDj2p50iIJF9RZaG3TXVI,1253
56
+ deriva/transfer/__init__.py,sha256=VRxmElD5SIOGzrB1biUU8bP3_iXPMvJuau-9alU5oy0,1266
57
57
  deriva/transfer/backup/__init__.py,sha256=vxsZiDLMTJQPybXT89G-07GsUoLhnItTCbLdXcDSyeA,465
58
58
  deriva/transfer/backup/__main__.py,sha256=dT12--8C6sKGEtMhsYuy013ebXKpVnBJfhcQNlVtv6Y,361
59
59
  deriva/transfer/backup/deriva_backup.py,sha256=IO9Tmzx6jHfUCkP-41nSsAeOFLn9T-0HwQcpRLpM_zs,5228
@@ -62,7 +62,7 @@ deriva/transfer/download/__init__.py,sha256=Pr7Zud4AFsIWwopTxeC_pupslgCG_lzycO9w
62
62
  deriva/transfer/download/__main__.py,sha256=YUg7AZ07t_xaOgtfJnU_l1nkEHCCPR8sU5X-l1An6SY,363
63
63
  deriva/transfer/download/deriva_download.py,sha256=ulFrHHEDj3oJA2pAo7MGvGyDF9rA3l8yCUoK3FMvHEk,17100
64
64
  deriva/transfer/download/deriva_download_cli.py,sha256=wN8tyQDv1AIE_aDqjECbmkoEWN050vlEdJyteYbdgSs,3940
65
- deriva/transfer/download/deriva_export.py,sha256=R6f08eJSt1iBeDNNQhThN3W1l4UwE0xzy2DjXbqNskE,13085
65
+ deriva/transfer/download/deriva_export.py,sha256=unL3PNgmvZ64ruGjzRigx45LQstvySfDgi0-2lOxo_w,13046
66
66
  deriva/transfer/download/processors/__init__.py,sha256=evLp36tZn-Z_AMshdfV3JJO8w1es5owsnRN0IFJUwIo,4507
67
67
  deriva/transfer/download/processors/base_processor.py,sha256=R6IIHSa_euv4X2Dyhd8fvQAiVYDGJTWMQtPoukHQn-Q,3837
68
68
  deriva/transfer/download/processors/postprocess/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -71,8 +71,8 @@ deriva/transfer/download/processors/postprocess/transfer_post_processor.py,sha25
71
71
  deriva/transfer/download/processors/postprocess/url_post_processor.py,sha256=s68iIYqQSZHtbv4y-fCG8pjhApAeMEG6hYcKx2Pvf5Y,2745
72
72
  deriva/transfer/download/processors/query/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
73
  deriva/transfer/download/processors/query/bag_fetch_query_processor.py,sha256=tiQtfuy01YgOFFD5b_sP7TGjMnt0Jqcg2gp1KNWqeLE,5645
74
- deriva/transfer/download/processors/query/base_query_processor.py,sha256=0tGxTJKCEqm7ecdOcfd8szA94muc2jbYwbqYvTGwAac,10465
75
- deriva/transfer/download/processors/query/file_download_query_processor.py,sha256=Hg1NbKsaGJh9cB86yIyL7Fm7ywSNVop837Dv8aFXUes,7257
74
+ deriva/transfer/download/processors/query/base_query_processor.py,sha256=CLP18cFdh7fXJDoizHHHrB0CFQehClu2vOm-DPaoY0c,10426
75
+ deriva/transfer/download/processors/query/file_download_query_processor.py,sha256=NRuwqr8LAO-I8Jmliu7RfVSb15YeAXs3eiZM09W3Dlk,7218
76
76
  deriva/transfer/download/processors/transform/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77
77
  deriva/transfer/download/processors/transform/base_transform_processor.py,sha256=Ddw5gsNpDANeuLvUaF4utp8psaxOtAzlgXtOg8gb-Pc,4109
78
78
  deriva/transfer/download/processors/transform/column_transform_processor.py,sha256=X98XSwpGrw0xhSlQ4i7_EPMvqU0Zz5aZp9Dam2AgYRU,2627
@@ -87,7 +87,7 @@ deriva/transfer/restore/deriva_restore.py,sha256=s0h7cXit2USSdjrIfrj0dr7BJ0rrHHM
87
87
  deriva/transfer/restore/deriva_restore_cli.py,sha256=2ViZ1Lyl5ndXPKeJFCHHGnwzkg3DfHhTuRa_bN7eJm8,5603
88
88
  deriva/transfer/upload/__init__.py,sha256=4mlc_iUX-v7SpXzlCZmhxQtSiW5JeDGb2FX7bb1E6tY,304
89
89
  deriva/transfer/upload/__main__.py,sha256=hqnXtGpRqPthwpO6uvrnf_TQm7McheeyOt960hStSMY,340
90
- deriva/transfer/upload/deriva_upload.py,sha256=_kndWxoAHb9vKJERCC9tjExp2EWISrOzhBXnSEbFIKI,60766
90
+ deriva/transfer/upload/deriva_upload.py,sha256=aFSO_BY1TM-5cO-uCDQZoXTRmIZVVUivrNK5a5ACp9o,61335
91
91
  deriva/transfer/upload/deriva_upload_cli.py,sha256=-Q6xgiYabQziTQcMQdGNDAv-eLxCCHO-BCSo4umbDE4,5082
92
92
  deriva/transfer/upload/processors/__init__.py,sha256=sMM5xdJ82UIRdB1lGMKk7ft0BgtjS2oJ0sI4SQSqiIU,2481
93
93
  deriva/transfer/upload/processors/archive_processor.py,sha256=ID0lDwDn4vPe5nbxy6m28Ssj_TsZpK4df2xRrM6nJRQ,2015
@@ -108,9 +108,9 @@ tests/deriva/core/mmo/test_mmo_find.py,sha256=PcUN76sik68B3XKg0G3wHVpKcPEld_6Rtb
108
108
  tests/deriva/core/mmo/test_mmo_prune.py,sha256=4pYtYL8g1BgadlewNPVpVA5lT_gV6SPTDYf04ZKzBTA,6851
109
109
  tests/deriva/core/mmo/test_mmo_rename.py,sha256=4oSR1G3Od701Ss3AnolI1Z7CbMxKuQF2uSr2_IcoR6s,8512
110
110
  tests/deriva/core/mmo/test_mmo_replace.py,sha256=w-66LWyiQ_ajC7Ipmhc4kAKwIloPdQELeUPsvelTdX8,8439
111
- deriva-1.7.7.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
112
- deriva-1.7.7.dist-info/METADATA,sha256=V1dOlM-ESgLHfPMX_EOZ-kI6jvouKBIIzBcwwZ_bnnM,1623
113
- deriva-1.7.7.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
114
- deriva-1.7.7.dist-info/entry_points.txt,sha256=HmYCHlgbjYQ_aZX_j4_4tApH4tDTbYtS66jKlfytbn8,850
115
- deriva-1.7.7.dist-info/top_level.txt,sha256=_LHDie5-O53wFlexfrxjewpVkf04oydf3CqX5h75DXE,13
116
- deriva-1.7.7.dist-info/RECORD,,
111
+ deriva-1.7.8.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
112
+ deriva-1.7.8.dist-info/METADATA,sha256=DfdN4u_GvxraP96KY24vO5hu-GDmdRAw7nCeVAPMJp0,1599
113
+ deriva-1.7.8.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
114
+ deriva-1.7.8.dist-info/entry_points.txt,sha256=HmYCHlgbjYQ_aZX_j4_4tApH4tDTbYtS66jKlfytbn8,850
115
+ deriva-1.7.8.dist-info/top_level.txt,sha256=_LHDie5-O53wFlexfrxjewpVkf04oydf3CqX5h75DXE,13
116
+ deriva-1.7.8.dist-info/RECORD,,
File without changes