dryad2dataverse 0.7.4__py3-none-any.whl → 0.7.5__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, 5)
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, 2)
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 '+
@@ -416,7 +432,8 @@ def email_log(mailhost, fromaddr, toaddrs, credentials, port=465, secure=(),
416
432
  '''
417
433
  #pylint: disable=too-many-arguments
418
434
  #Because consistency is for suckers and yahoo requires full hostname
419
- subject = 'Dryad to Dataverse transfer error'
435
+ #subject = 'Dryad to Dataverse transfer error'
436
+ subject = 'Dryad to Dataverse logger message'
420
437
  elog = logging.getLogger('email_log')
421
438
  mailer = SSLSMTPHandler(mailhost=(mailhost, port),
422
439
  fromaddr=fromaddr,
@@ -485,16 +502,13 @@ def checkwarn(val:int, **kwargs) -> None:
485
502
  {'warn_too_many': bool}
486
503
 
487
504
  '''
488
- print(kwargs)
489
- #print(vars(kwargs))
490
- return
491
505
  if not kwargs.get('warn_too_many'):
492
506
  return
493
507
  if val >= kwargs.get('warn',0):
494
508
  mess = ('Large number of updates detected. '
495
509
  f'{val} new studies exceeds threshold of {kwargs.get("warn", 0)}. '
496
510
  'Program execution halted.')
497
- subject = ('Dryad to Dataverse large update warning')
511
+ subject = 'Dryad to Dataverse large update warning'
498
512
  for logme in kwargs.get('loggers'):
499
513
  logme.warning(mess)
500
514
  notify(msgtxt=(subject, mess),
@@ -539,9 +553,18 @@ def main(log='/var/log/dryadd.log', level=logging.WARNING):
539
553
  monitor = dryad2dataverse.monitor.Monitor(args.dbase)
540
554
  #copy the database to make a backup, because paranoia is your friend
541
555
  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'))
556
+ bu_db = pathlib.Path(dryad2dataverse.constants.DBASE)
557
+ try:
558
+ shutil.copyfile( bu_db,
559
+ pathlib.Path(bu_db.parent,
560
+ bu_db.stem + '_' +
561
+ datetime.datetime.now().strftime('%Y-%m-%d-%H%M') +
562
+ bu_db.suffix)
563
+ )
564
+ except FileNotFoundError:
565
+ print(dryad2dataverse.constants.DBASE)
566
+ print(bu_db)
567
+ sys.exit()
545
568
  #list comprehension includes untimestamped dbase name, hence 2+
546
569
  fnames = glob.glob(os.path.abspath(dryad2dataverse.constants.DBASE)
547
570
  +'*')
@@ -557,15 +580,24 @@ def main(log='/var/log/dryadd.log', level=logging.WARNING):
557
580
  logger.info('Total new files: %s', len(updates))
558
581
  elog.info('Total new files: %s', len(updates))
559
582
 
560
- checkwarn(val=len(updates),
583
+ checkwarn(val=len(updates) if not args.testmode else
584
+ min(args.testlimit, len(updates)),
561
585
  loggers=[logger],
562
586
  **vars(args))
587
+ if args.testmode:
588
+ logger.warning('Test mode is ON - number of updates limited to %s', args.testlimit)
589
+ elog.warning('Test mode is ON - number of updates limited to %s', args.testlimit)
563
590
 
564
591
  #update all the new files
565
592
  verbo(args.verbosity, **{'Total to process': len(updates)})
593
+
566
594
  try:
567
595
  count = 0
596
+ testcount = 0
568
597
  for doi in updates:
598
+ if args.testmode and (testcount >= args.testlimit):
599
+ logger.info('Test limit of %s reached', args.testlimit)
600
+ break
569
601
  count += 1
570
602
  logger.info('Start processing %s of %s', count, len(updates))
571
603
  logger.info('DOI: %s, Dryad URL: https://datadryad.org/stash/dataset/%s',
@@ -611,6 +643,7 @@ def main(log='/var/log/dryadd.log', level=logging.WARNING):
611
643
  transfer.set_correct_date()
612
644
  notify(new_content(study),
613
645
  **vars(args))
646
+ testcount+=1
614
647
 
615
648
  elif update_type == 'updated':
616
649
  logger.info('Updated metadata: %s', doi[0])
@@ -674,23 +707,9 @@ def main(log='/var/log/dryadd.log', level=logging.WARNING):
674
707
  print(f'Error: {err}. Exiting. For details see log at {args.log}.')
675
708
  sys.exit()
676
709
 
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
710
  if __name__ == '__main__':
696
- main2()
711
+ main()
712
+ _parser = argp()
713
+ _args = _parser.parse_args()
714
+ print('This is what you would have done had you actually run this')
715
+ 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.5
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=RfOrzdCc9OUYlQfBAapkPy_D_SyHziQTob_N5EqAKEM,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=i_y5V0dLz32_nYUFsKfqD_Nz0HIsr4dLV-PQKKH1GhM,28126
9
+ dryad2dataverse-0.7.5.dist-info/METADATA,sha256=9VL4v5kgaGXdCGMV8x3kUS7LbLdZBJXDy7ZDw_Ybvb4,3299
10
+ dryad2dataverse-0.7.5.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
11
+ dryad2dataverse-0.7.5.dist-info/entry_points.txt,sha256=9kBsBa5SivAtfAox__vZGL7H-HI7Vd-jGztCh_eIJEc,63
12
+ dryad2dataverse-0.7.5.dist-info/top_level.txt,sha256=0X45AghpKfL69Oc51sRddeiHtq8o-OyOhFX3AMal6YI,16
13
+ dryad2dataverse-0.7.5.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (74.1.2)
2
+ Generator: setuptools (75.2.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5