dataverse-utils 0.25.1__tar.gz → 0.25.3__tar.gz

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.
Files changed (25) hide show
  1. {dataverse_utils-0.25.1 → dataverse_utils-0.25.3}/PKG-INFO +1 -1
  2. {dataverse_utils-0.25.1 → dataverse_utils-0.25.3}/pyproject.toml +1 -1
  3. {dataverse_utils-0.25.1 → dataverse_utils-0.25.3}/src/dataverse_utils/__init__.py +1 -1
  4. {dataverse_utils-0.25.1 → dataverse_utils-0.25.3}/src/dataverse_utils/dataverse_utils.py +14 -3
  5. {dataverse_utils-0.25.1 → dataverse_utils-0.25.3}/src/dataverse_utils/dvdata.py +31 -3
  6. {dataverse_utils-0.25.1 → dataverse_utils-0.25.3}/LICENCE.md +0 -0
  7. {dataverse_utils-0.25.1 → dataverse_utils-0.25.3}/README.md +0 -0
  8. {dataverse_utils-0.25.1 → dataverse_utils-0.25.3}/src/dataverse_utils/archive.py +0 -0
  9. {dataverse_utils-0.25.1 → dataverse_utils-0.25.3}/src/dataverse_utils/collections.py +0 -0
  10. {dataverse_utils-0.25.1 → dataverse_utils-0.25.3}/src/dataverse_utils/data/LDC_EULA_general.md +0 -0
  11. {dataverse_utils-0.25.1 → dataverse_utils-0.25.3}/src/dataverse_utils/ldc.py +0 -0
  12. {dataverse_utils-0.25.1 → dataverse_utils-0.25.3}/src/dataverse_utils/scripts/dv_bagit.py +0 -0
  13. {dataverse_utils-0.25.1 → dataverse_utils-0.25.3}/src/dataverse_utils/scripts/dv_bulk_release.py +0 -0
  14. {dataverse_utils-0.25.1 → dataverse_utils-0.25.3}/src/dataverse_utils/scripts/dv_collection_info.py +0 -0
  15. {dataverse_utils-0.25.1 → dataverse_utils-0.25.3}/src/dataverse_utils/scripts/dv_del.py +0 -0
  16. {dataverse_utils-0.25.1 → dataverse_utils-0.25.3}/src/dataverse_utils/scripts/dv_ldc_uploader.py +0 -0
  17. {dataverse_utils-0.25.1 → dataverse_utils-0.25.3}/src/dataverse_utils/scripts/dv_list_files.py +0 -0
  18. {dataverse_utils-0.25.1 → dataverse_utils-0.25.3}/src/dataverse_utils/scripts/dv_manifest_gen.py +0 -0
  19. {dataverse_utils-0.25.1 → dataverse_utils-0.25.3}/src/dataverse_utils/scripts/dv_pg_facet_date.py +0 -0
  20. {dataverse_utils-0.25.1 → dataverse_utils-0.25.3}/src/dataverse_utils/scripts/dv_readme_creator.py +0 -0
  21. {dataverse_utils-0.25.1 → dataverse_utils-0.25.3}/src/dataverse_utils/scripts/dv_record_copy.py +0 -0
  22. {dataverse_utils-0.25.1 → dataverse_utils-0.25.3}/src/dataverse_utils/scripts/dv_release.py +0 -0
  23. {dataverse_utils-0.25.1 → dataverse_utils-0.25.3}/src/dataverse_utils/scripts/dv_replace_licence.py +0 -0
  24. {dataverse_utils-0.25.1 → dataverse_utils-0.25.3}/src/dataverse_utils/scripts/dv_study_migrator.py +0 -0
  25. {dataverse_utils-0.25.1 → dataverse_utils-0.25.3}/src/dataverse_utils/scripts/dv_upload_tsv.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dataverse-utils
3
- Version: 0.25.1
3
+ Version: 0.25.3
4
4
  Summary: Utilities for the Dataverse data respository system
5
5
  License: MIT
6
6
  License-File: LICENCE.md
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "dataverse-utils"
3
- version = "0.25.1"
3
+ version = "0.25.3"
4
4
  description = "Utilities for the Dataverse data respository system"
5
5
  authors = [
6
6
  {name = "Paul Lesack",email = "paul.lesack@ubc.ca"}
@@ -7,7 +7,7 @@ import pathlib
7
7
  import sys
8
8
  from dataverse_utils.dataverse_utils import *
9
9
 
10
- VERSION = (0, 25, 1)
10
+ VERSION = (0, 25, 3)
11
11
  __version__ = '.'.join([str(x) for x in VERSION])
12
12
 
13
13
  USERAGENT = (f'dataverse_utils/v{__version__} ({sys.platform.capitalize()}); '
@@ -328,7 +328,7 @@ def uningest_file(dv_url, fid, apikey, study='n/a'):
328
328
  LOGGER.error('Uningestion error: %s', uningest.reason)
329
329
  print(uningest.reason)
330
330
 
331
- def upload_file(fpath, hdl, **kwargs): #pylint:disable=too-many-locals, too-many-statements
331
+ def upload_file(fpath, hdl, **kwargs): #pylint:disable=too-many-locals, too-many-statements, too-many-branches
332
332
  '''
333
333
  Uploads file to Dataverse study and sets file metadata and tags.
334
334
 
@@ -388,6 +388,12 @@ def upload_file(fpath, hdl, **kwargs): #pylint:disable=too-many-locals, too-many
388
388
 
389
389
  override : bool, optional
390
390
  Ignore NOTAB (ie, NOTAB = [])
391
+
392
+ return_json : bool
393
+ Returns the JSON if you need it
394
+
395
+ print : bool
396
+ Print return JSON and file ID to console. Default = True
391
397
  '''
392
398
  #Why are SPSS files getting processed anyway?
393
399
  #Does SPSS detection happen *after* upload
@@ -431,7 +437,8 @@ def upload_file(fpath, hdl, **kwargs): #pylint:disable=too-many-locals, too-many
431
437
  params=params, headers=headers, data=multi,
432
438
  timeout=kwargs.get('timeout',1000))
433
439
  try:
434
- print(upload.json())
440
+ if kwargs.get('print', True):
441
+ print(upload.json())
435
442
  except json.decoder.JSONDecodeError as exc:
436
443
  #This can happend when Glassfish crashes
437
444
  LOGGER.critical(upload.text)
@@ -446,7 +453,8 @@ def upload_file(fpath, hdl, **kwargs): #pylint:disable=too-many-locals, too-many
446
453
  #SPSS files still process despite spoof, so there's
447
454
  #a forcible unlock check
448
455
  fid = upload.json()['data']['files'][0]['dataFile']['id']
449
- print(f'FID: {fid}')
456
+ if kwargs.get('print'):
457
+ print(f'FID: {fid}')
450
458
  if kwargs.get('nowait') and check_lock(dvurl, hdl, kwargs['apikey']):
451
459
  force_notab_unlock(hdl, dvurl, fid, kwargs['apikey'])
452
460
  else:
@@ -465,6 +473,9 @@ def upload_file(fpath, hdl, **kwargs): #pylint:disable=too-many-locals, too-many
465
473
 
466
474
  restrict_file(fid=fid, dv=dvurl, apikey=kwargs.get('apikey'),
467
475
  rest=kwargs.get('rest', False))
476
+ if kwargs.get('return_json'):
477
+ return upload.json()
478
+ return None
468
479
 
469
480
  def restrict_file(**kwargs):
470
481
  '''
@@ -116,8 +116,12 @@ class Study(dict): #pylint: disable=too-few-public-methods
116
116
  self.fix_licence()
117
117
  if self['source_version'] < 5.013 <= self['target_version']:
118
118
  self.fix_production_location()
119
- if self['source_version'] < 5.014 <= self['target_version']:
119
+ if (self['source_version'] < 5.014 <= self['target_version']
120
+ and self['target_version'] < 6.001):
120
121
  self.fix_series()
122
+ if (self['source_version'] < 5.014 <= self['target_version']
123
+ and self['target_version'] >= 6.001):
124
+ self.fix_series(to_series=['series', 'alternativeTitle'])
121
125
  if self['source_version'] < 6.008 <= self['target_version']:
122
126
  self.fix_geography()
123
127
 
@@ -218,6 +222,8 @@ class Study(dict): #pylint: disable=too-few-public-methods
218
222
  if not self['upload_json']['datasetVersion']['termsOfUse']:
219
223
  #This shouldn't happen, but UBC has datasets from the early 1970s
220
224
  self['upload_json']['datasetVersion']['termsOfUse'] = 'Not available'
225
+ if self['upload_json']['datasetVersion']['license'] == 'CC0':
226
+ self['upload_json']['datasetVersion'].update(self.fix_cc0())
221
227
 
222
228
  def fix_production_location(self)->None:
223
229
  '''
@@ -249,11 +255,10 @@ class Study(dict): #pylint: disable=too-few-public-methods
249
255
  ['metadataBlocks']['citation']\
250
256
  ['fields'][indy]['value']]
251
257
 
252
- def fix_series(self)->None:
258
+ def fix_series(self, to_series=['series'])->None:
253
259
  '''
254
260
  Turn series into a multiple (as of v5.14)
255
261
  '''
256
- to_series=['series'] # typeNames which must be converted
257
262
  indices = []
258
263
  for ind, val in enumerate(self['upload_json']['datasetVersion']\
259
264
  ['metadataBlocks']['citation']['fields']):
@@ -290,6 +295,29 @@ class Study(dict): #pylint: disable=too-few-public-methods
290
295
  newval['value'].append(newcoord)
291
296
  newfields.append(newval)
292
297
  self['upload_json']['datasetVersion']['metadataBlocks']['geospatial']['fields'] = newfields
298
+
299
+ def fix_cc0(self)->None:
300
+ '''
301
+ Returns CC0 licence, post v5.10
302
+ '''
303
+
304
+ cc0='''<p>
305
+ <img src="https://licensebuttons.net/p/zero/1.0/88x31.png" title="Creative Commons CC0 1.0 Universal Public Domain Dedication. " style="display:none" onload="this.style.display='inline'" />
306
+ <a href="http://creativecommons.org/publicdomain/zero/1.0" title="Creative Commons CC0 1.0 Universal Public Domain Dedication. " target="_blank">CC0 1.0</a>
307
+ </p>'''
308
+ #minimal, uncomment if it becomes a problem
309
+ ccjson = {'license':{'name': 'CC0 1.0',
310
+ 'uri': 'http://creativecommons.org/publicdomain/zero/1.0'#,
311
+ #'iconUri': 'https://licensebuttons.net/p/zero/1.0/88x31.png',
312
+ #'rightsIdentifier': 'CC0-1.0',
313
+ #'rightsIdentifierScheme': 'SPDX',
314
+ #'schemeUri': 'https://spdx.org/licenses/',
315
+ #'languageCode': 'en'
316
+ },
317
+ 'termsOfUse': cc0
318
+ }
319
+ return ccjson
320
+
293
321
  ############
294
322
  #END FIXES
295
323
  ############