dryad2dataverse 0.7.4__py3-none-any.whl → 0.7.6__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.
@@ -24,7 +24,7 @@ Modules included:
24
24
  '''
25
25
  import sys
26
26
 
27
- VERSION = (0, 7, 4)
27
+ VERSION = (0, 7, 6)
28
28
  __version__ = '.'.join([str(x) for x in VERSION])
29
29
  USERAGENT = (f'dryad2dataverse/v{__version__} ({sys.platform.capitalize()}); '
30
30
  f'Python {sys.version[:sys.version.find("(")-1]}')
@@ -14,6 +14,7 @@ import glob
14
14
  import logging
15
15
  import logging.handlers
16
16
  import os
17
+ import pathlib
17
18
  import shutil
18
19
  import smtplib
19
20
  import sys
@@ -27,7 +28,7 @@ import dryad2dataverse.serializer
27
28
  import dryad2dataverse.transfer
28
29
  from dryad2dataverse.handlers import SSLSMTPHandler
29
30
 
30
- VERSION = (0, 5, 4)
31
+ VERSION = (0, 6, 3)
31
32
  __version__ = '.'.join([str(x) for x in VERSION])
32
33
 
33
34
  DRY = 'https://datadryad.org/api/v2'
@@ -372,6 +373,21 @@ def argp():
372
373
  type=int,
373
374
  dest='warn',
374
375
  default=15)
376
+ parser.add_argument('--testmode-on',
377
+ help=('Turn on test mode. '
378
+ 'Number of transfers will be limited '
379
+ 'to the value in --testmode-limit '
380
+ 'or 5 if you don\'t set --testmode-limit '),
381
+ action='store_true',
382
+ dest='testmode')
383
+ parser.add_argument('--testmode-limit',
384
+ help=('Test mode - only transfer first [n] '
385
+ 'of the total number of (new) records. Old ones will '
386
+ 'still be updated, though. '
387
+ 'Default: 5'),
388
+ type=int,
389
+ default=5,
390
+ dest='testlimit')
375
391
  parser.add_argument('--version', action='version',
376
392
  version='%(prog)s '+__version__
377
393
  +'; dryad2dataverse '+
@@ -391,6 +407,8 @@ def set_constants(args):
391
407
  dryad2dataverse.constants.DVURL = args.url
392
408
  if args.dbase:
393
409
  dryad2dataverse.constants.DBASE = args.dbase
410
+ if args.tmp:
411
+ dryad2dataverse.constants.TMP = args.tmp
394
412
 
395
413
  def email_log(mailhost, fromaddr, toaddrs, credentials, port=465, secure=(),
396
414
  level=logging.WARNING, timeout=100):
@@ -416,7 +434,8 @@ def email_log(mailhost, fromaddr, toaddrs, credentials, port=465, secure=(),
416
434
  '''
417
435
  #pylint: disable=too-many-arguments
418
436
  #Because consistency is for suckers and yahoo requires full hostname
419
- subject = 'Dryad to Dataverse transfer error'
437
+ #subject = 'Dryad to Dataverse transfer error'
438
+ subject = 'Dryad to Dataverse logger message'
420
439
  elog = logging.getLogger('email_log')
421
440
  mailer = SSLSMTPHandler(mailhost=(mailhost, port),
422
441
  fromaddr=fromaddr,
@@ -485,16 +504,13 @@ def checkwarn(val:int, **kwargs) -> None:
485
504
  {'warn_too_many': bool}
486
505
 
487
506
  '''
488
- print(kwargs)
489
- #print(vars(kwargs))
490
- return
491
507
  if not kwargs.get('warn_too_many'):
492
508
  return
493
509
  if val >= kwargs.get('warn',0):
494
510
  mess = ('Large number of updates detected. '
495
511
  f'{val} new studies exceeds threshold of {kwargs.get("warn", 0)}. '
496
512
  'Program execution halted.')
497
- subject = ('Dryad to Dataverse large update warning')
513
+ subject = 'Dryad to Dataverse large update warning'
498
514
  for logme in kwargs.get('loggers'):
499
515
  logme.warning(mess)
500
516
  notify(msgtxt=(subject, mess),
@@ -539,9 +555,18 @@ def main(log='/var/log/dryadd.log', level=logging.WARNING):
539
555
  monitor = dryad2dataverse.monitor.Monitor(args.dbase)
540
556
  #copy the database to make a backup, because paranoia is your friend
541
557
  if os.path.exists(dryad2dataverse.constants.DBASE):
542
- shutil.copyfile(dryad2dataverse.constants.DBASE,
543
- dryad2dataverse.constants.DBASE+'.'+
544
- datetime.datetime.now().strftime('%Y-%m-%d-%H%M'))
558
+ bu_db = pathlib.Path(dryad2dataverse.constants.DBASE)
559
+ try:
560
+ shutil.copyfile( bu_db,
561
+ pathlib.Path(bu_db.parent,
562
+ bu_db.stem + '_' +
563
+ datetime.datetime.now().strftime('%Y-%m-%d-%H%M') +
564
+ bu_db.suffix)
565
+ )
566
+ except FileNotFoundError:
567
+ print(dryad2dataverse.constants.DBASE)
568
+ print(bu_db)
569
+ sys.exit()
545
570
  #list comprehension includes untimestamped dbase name, hence 2+
546
571
  fnames = glob.glob(os.path.abspath(dryad2dataverse.constants.DBASE)
547
572
  +'*')
@@ -557,15 +582,24 @@ def main(log='/var/log/dryadd.log', level=logging.WARNING):
557
582
  logger.info('Total new files: %s', len(updates))
558
583
  elog.info('Total new files: %s', len(updates))
559
584
 
560
- checkwarn(val=len(updates),
585
+ checkwarn(val=len(updates) if not args.testmode else
586
+ min(args.testlimit, len(updates)),
561
587
  loggers=[logger],
562
588
  **vars(args))
589
+ if args.testmode:
590
+ logger.warning('Test mode is ON - number of updates limited to %s', args.testlimit)
591
+ elog.warning('Test mode is ON - number of updates limited to %s', args.testlimit)
563
592
 
564
593
  #update all the new files
565
594
  verbo(args.verbosity, **{'Total to process': len(updates)})
595
+
566
596
  try:
567
597
  count = 0
598
+ testcount = 0
568
599
  for doi in updates:
600
+ if args.testmode and (testcount >= args.testlimit):
601
+ logger.info('Test limit of %s reached', args.testlimit)
602
+ break
569
603
  count += 1
570
604
  logger.info('Start processing %s of %s', count, len(updates))
571
605
  logger.info('DOI: %s, Dryad URL: https://datadryad.org/stash/dataset/%s',
@@ -611,6 +645,7 @@ def main(log='/var/log/dryadd.log', level=logging.WARNING):
611
645
  transfer.set_correct_date()
612
646
  notify(new_content(study),
613
647
  **vars(args))
648
+ testcount+=1
614
649
 
615
650
  elif update_type == 'updated':
616
651
  logger.info('Updated metadata: %s', doi[0])
@@ -674,23 +709,9 @@ def main(log='/var/log/dryadd.log', level=logging.WARNING):
674
709
  print(f'Error: {err}. Exiting. For details see log at {args.log}.')
675
710
  sys.exit()
676
711
 
677
- def main2(log='/var/log/dryadd.log', level=logging.WARNING):
678
- '''
679
- Main Dryad transfer daemon
680
-
681
- log : str
682
- path to logfile
683
- level : int
684
- log level, usually one of logging.LOGLEVEL (ie, logging.warning)
685
- '''
686
- #pylint: disable=too-many-branches
687
- #pylint: disable=too-many-statements
688
- #pylint: disable=too-many-locals
689
- parser = argp()
690
- args = parser.parse_args()
691
- print(args)
692
- checkwarn(val=26,
693
- loggers=[],
694
- **vars(args))
695
712
  if __name__ == '__main__':
696
- main2()
713
+ main()
714
+ _parser = argp()
715
+ _args = _parser.parse_args()
716
+ print('This is what you would have done had you actually run this')
717
+ print(_args)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dryad2dataverse
3
- Version: 0.7.4
3
+ Version: 0.7.6
4
4
  Summary: Utility for copying and syncing data from a Dryad data repository to a Dataverse repository
5
5
  Author-email: Paul Lesack <paul.lesack@ubc.ca>
6
6
  Project-URL: Homepage, https://ubc-library-rc.github.io/dryad2dataverse
@@ -1,13 +1,13 @@
1
- dryad2dataverse/__init__.py,sha256=13WoiArwE8vvmWq4vGGDVH8BHhn0QEZrPVFE8boCFd4,865
1
+ dryad2dataverse/__init__.py,sha256=jAPJzOKbatarco3wW4I_BI9wbfR8tqcOk-ePPq5VQig,865
2
2
  dryad2dataverse/constants.py,sha256=ZfD2N0f742nnP8NPUV0QsDdVVAbrW-3Py8Lg9al1Z5c,1429
3
3
  dryad2dataverse/exceptions.py,sha256=oIP1_fSEvLF3HpK6gOYb05vUisY-IAxwXZDeNoAvCPM,1008
4
4
  dryad2dataverse/handlers.py,sha256=Xb0vvs1HE92qaK6g-Gu3eyHkLrSwU0-RQjLcl6FZPUY,1487
5
5
  dryad2dataverse/monitor.py,sha256=KOyWCpPTZLYRStB-RN0e5kgHTfbxHsByD72K1VtEPP8,26406
6
6
  dryad2dataverse/serializer.py,sha256=DoIjHYKtoH047X5Gd-WUdoLpL-kvTtSAPg-lUElCx8c,33865
7
7
  dryad2dataverse/transfer.py,sha256=83tju_o4DSgSkF7JDLsgTpAwm03b0CMb0OjcKAEACuY,37548
8
- dryad2dataverse/scripts/dryadd.py,sha256=rv8waNgJ7sdVF-nfiPCNa1_5p568CfSvBWUWwYYRP_A,26836
9
- dryad2dataverse-0.7.4.dist-info/METADATA,sha256=Er-lR8tTWTOKGC0QhT7sKWX9F894DaJXL46kfjADBy0,3299
10
- dryad2dataverse-0.7.4.dist-info/WHEEL,sha256=cVxcB9AmuTcXqmwrtPhNK88dr7IR_b6qagTj0UvIEbY,91
11
- dryad2dataverse-0.7.4.dist-info/entry_points.txt,sha256=9kBsBa5SivAtfAox__vZGL7H-HI7Vd-jGztCh_eIJEc,63
12
- dryad2dataverse-0.7.4.dist-info/top_level.txt,sha256=0X45AghpKfL69Oc51sRddeiHtq8o-OyOhFX3AMal6YI,16
13
- dryad2dataverse-0.7.4.dist-info/RECORD,,
8
+ dryad2dataverse/scripts/dryadd.py,sha256=WQUbibzbeNamRntMyJBFYLXSk5qVjgJffQSRQuIls0I,28192
9
+ dryad2dataverse-0.7.6.dist-info/METADATA,sha256=yqKN__bCVpVu2ImSIwwSSVLjetF1DX3HQDoHOHvvL78,3299
10
+ dryad2dataverse-0.7.6.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
11
+ dryad2dataverse-0.7.6.dist-info/entry_points.txt,sha256=9kBsBa5SivAtfAox__vZGL7H-HI7Vd-jGztCh_eIJEc,63
12
+ dryad2dataverse-0.7.6.dist-info/top_level.txt,sha256=0X45AghpKfL69Oc51sRddeiHtq8o-OyOhFX3AMal6YI,16
13
+ dryad2dataverse-0.7.6.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (74.1.2)
2
+ Generator: setuptools (75.3.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5