dryad2dataverse 0.6.2__tar.gz → 0.7.4__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 (208) hide show
  1. {dryad2dataverse-0.6.2/src/dryad2dataverse.egg-info → dryad2dataverse-0.7.4}/PKG-INFO +9 -1
  2. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/api_reference.md +274 -34
  3. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/requirements.txt +2 -1
  4. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/src/dryad2dataverse/__init__.py +4 -2
  5. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/src/dryad2dataverse/monitor.py +4 -1
  6. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/src/dryad2dataverse/scripts/dryadd.py +24 -3
  7. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/src/dryad2dataverse/serializer.py +9 -1
  8. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/src/dryad2dataverse/transfer.py +101 -21
  9. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4/src/dryad2dataverse.egg-info}/PKG-INFO +9 -1
  10. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/src/dryad2dataverse.egg-info/requires.txt +2 -1
  11. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/.gitignore +0 -0
  12. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/README.md +0 -0
  13. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/_config.yml +0 -0
  14. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/changelog.md +0 -0
  15. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/compiling.md +0 -0
  16. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/credits.md +0 -0
  17. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/css/extra.css +0 -0
  18. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/anomalies.html +0 -0
  19. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/anomalies.js +0 -0
  20. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/admin-lte/bootstrap/css/bootstrap-theme.css +0 -0
  21. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/admin-lte/bootstrap/css/bootstrap-theme.css.map +0 -0
  22. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/admin-lte/bootstrap/css/bootstrap-theme.min.css +0 -0
  23. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/admin-lte/bootstrap/css/bootstrap-theme.min.css.map +0 -0
  24. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/admin-lte/bootstrap/css/bootstrap.css +0 -0
  25. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/admin-lte/bootstrap/css/bootstrap.css.map +0 -0
  26. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/admin-lte/bootstrap/css/bootstrap.min.css +0 -0
  27. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/admin-lte/bootstrap/css/bootstrap.min.css.map +0 -0
  28. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/admin-lte/bootstrap/fonts/glyphicons-halflings-regular.eot +0 -0
  29. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/admin-lte/bootstrap/fonts/glyphicons-halflings-regular.svg +0 -0
  30. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/admin-lte/bootstrap/fonts/glyphicons-halflings-regular.ttf +0 -0
  31. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/admin-lte/bootstrap/fonts/glyphicons-halflings-regular.woff +0 -0
  32. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/admin-lte/bootstrap/fonts/glyphicons-halflings-regular.woff2 +0 -0
  33. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/admin-lte/bootstrap/js/bootstrap.js +0 -0
  34. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/admin-lte/bootstrap/js/bootstrap.min.js +0 -0
  35. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/admin-lte/bootstrap/js/npm.js +0 -0
  36. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/admin-lte/plugins/fastclick/fastclick.js +0 -0
  37. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/admin-lte/plugins/fastclick/fastclick.min.js +0 -0
  38. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/admin-lte/plugins/jQuery/jquery-2.2.3.min.js +0 -0
  39. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/admin-lte/plugins/jQueryUI/jquery-ui.js +0 -0
  40. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/admin-lte/plugins/jQueryUI/jquery-ui.min.js +0 -0
  41. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/admin-lte/plugins/slimScroll/jquery.slimscroll.js +0 -0
  42. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/admin-lte/plugins/slimScroll/jquery.slimscroll.min.js +0 -0
  43. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/anchor-js/anchor.min.js +0 -0
  44. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/codemirror/codemirror.css +0 -0
  45. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/codemirror/codemirror.js +0 -0
  46. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/codemirror/sql.js +0 -0
  47. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/datatables.net/jquery.dataTables.min.js +0 -0
  48. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/datatables.net-bs/css/dataTables.bootstrap.css +0 -0
  49. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/datatables.net-bs/css/dataTables.bootstrap.min.css +0 -0
  50. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/datatables.net-bs/js/dataTables.bootstrap.js +0 -0
  51. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/datatables.net-bs/js/dataTables.bootstrap.min.js +0 -0
  52. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/datatables.net-buttons/buttons.colVis.js +0 -0
  53. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/datatables.net-buttons/buttons.colVis.min.js +0 -0
  54. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/datatables.net-buttons/buttons.flash.js +0 -0
  55. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/datatables.net-buttons/buttons.flash.min.js +0 -0
  56. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/datatables.net-buttons/buttons.html5.js +0 -0
  57. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/datatables.net-buttons/buttons.html5.min.js +0 -0
  58. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/datatables.net-buttons/buttons.print.js +0 -0
  59. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/datatables.net-buttons/buttons.print.min.js +0 -0
  60. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/datatables.net-buttons/dataTables.buttons.js +0 -0
  61. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/datatables.net-buttons/dataTables.buttons.min.js +0 -0
  62. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/datatables.net-buttons-bs/css/buttons.bootstrap.css +0 -0
  63. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/datatables.net-buttons-bs/css/buttons.bootstrap.min.css +0 -0
  64. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/datatables.net-buttons-bs/js/buttons.bootstrap.js +0 -0
  65. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/datatables.net-buttons-bs/js/buttons.bootstrap.min.js +0 -0
  66. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/font-awesome/css/font-awesome.css +0 -0
  67. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/font-awesome/css/font-awesome.css.map +0 -0
  68. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/font-awesome/css/font-awesome.min.css +0 -0
  69. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/font-awesome/fonts/FontAwesome.otf +0 -0
  70. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/font-awesome/fonts/fontawesome-webfont.eot +0 -0
  71. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/font-awesome/fonts/fontawesome-webfont.svg +0 -0
  72. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
  73. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/font-awesome/fonts/fontawesome-webfont.woff +0 -0
  74. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/font-awesome/fonts/fontawesome-webfont.woff2 +0 -0
  75. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/html5shiv/html5shiv.min.js +0 -0
  76. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/ionicons/css/ionicons.css +0 -0
  77. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/ionicons/css/ionicons.min.css +0 -0
  78. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/ionicons/fonts/ionicons.eot +0 -0
  79. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/ionicons/fonts/ionicons.svg +0 -0
  80. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/ionicons/fonts/ionicons.ttf +0 -0
  81. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/ionicons/fonts/ionicons.woff +0 -0
  82. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/jquery/jquery.js +0 -0
  83. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/js-xlsx/xlsx.full.min.js +0 -0
  84. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/pdfmake/pdfmake.min.js +0 -0
  85. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/pdfmake/vfs_fonts.js +0 -0
  86. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/respond/respond.min.js +0 -0
  87. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/salvattore/salvattore.css +0 -0
  88. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/bower/salvattore/salvattore.min.js +0 -0
  89. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/column.js +0 -0
  90. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/columns.html +0 -0
  91. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/constraint.js +0 -0
  92. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/constraints.html +0 -0
  93. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/deletionOrder.txt +0 -0
  94. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/diagrams/orphans/orphans.dot +0 -0
  95. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/diagrams/orphans/orphans.png +0 -0
  96. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/diagrams/summary/relationships.real.compact.dot +0 -0
  97. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/diagrams/summary/relationships.real.compact.png +0 -0
  98. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/diagrams/summary/relationships.real.large.dot +0 -0
  99. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/diagrams/summary/relationships.real.large.png +0 -0
  100. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/diagrams/tables/dryadFiles.1degree.dot +0 -0
  101. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/diagrams/tables/dryadFiles.1degree.png +0 -0
  102. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/diagrams/tables/dryadFiles.2degrees.dot +0 -0
  103. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/diagrams/tables/dryadFiles.2degrees.png +0 -0
  104. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/diagrams/tables/dryadStudy.1degree.dot +0 -0
  105. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/diagrams/tables/dryadStudy.1degree.png +0 -0
  106. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/diagrams/tables/dvFiles.1degree.dot +0 -0
  107. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/diagrams/tables/dvFiles.1degree.png +0 -0
  108. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/diagrams/tables/dvFiles.2degrees.dot +0 -0
  109. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/diagrams/tables/dvFiles.2degrees.png +0 -0
  110. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/diagrams/tables/dvStudy.1degree.dot +0 -0
  111. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/diagrams/tables/dvStudy.1degree.png +0 -0
  112. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/diagrams/tables/dvStudy.2degrees.dot +0 -0
  113. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/diagrams/tables/dvStudy.2degrees.png +0 -0
  114. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/diagrams/tables/failed_uploads.1degree.dot +0 -0
  115. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/diagrams/tables/failed_uploads.1degree.png +0 -0
  116. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/diagrams/tables/failed_uploads.2degrees.dot +0 -0
  117. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/diagrams/tables/failed_uploads.2degrees.png +0 -0
  118. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/diagrams/tables/lastcheck.1degree.dot +0 -0
  119. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/diagrams/tables/lastcheck.1degree.png +0 -0
  120. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/dryad_dataverse_monitor.sqlite3.%.xml +0 -0
  121. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/favicon.png +0 -0
  122. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/indieflower/indie-flower-v8-latin-regular.eot +0 -0
  123. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/indieflower/indie-flower-v8-latin-regular.svg +0 -0
  124. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/indieflower/indie-flower-v8-latin-regular.ttf +0 -0
  125. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/indieflower/indie-flower-v8-latin-regular.woff +0 -0
  126. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/indieflower/indie-flower-v8-latin-regular.woff2 +0 -0
  127. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/indieflower/indie-flower.css +0 -0
  128. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/source-sans-pro/source-sans-pro-v10-latin-300.eot +0 -0
  129. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/source-sans-pro/source-sans-pro-v10-latin-300.svg +0 -0
  130. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/source-sans-pro/source-sans-pro-v10-latin-300.ttf +0 -0
  131. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/source-sans-pro/source-sans-pro-v10-latin-300.woff +0 -0
  132. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/source-sans-pro/source-sans-pro-v10-latin-300.woff2 +0 -0
  133. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/source-sans-pro/source-sans-pro-v10-latin-300italic.eot +0 -0
  134. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/source-sans-pro/source-sans-pro-v10-latin-300italic.svg +0 -0
  135. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/source-sans-pro/source-sans-pro-v10-latin-300italic.ttf +0 -0
  136. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/source-sans-pro/source-sans-pro-v10-latin-300italic.woff +0 -0
  137. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/source-sans-pro/source-sans-pro-v10-latin-300italic.woff2 +0 -0
  138. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/source-sans-pro/source-sans-pro-v10-latin-600.eot +0 -0
  139. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/source-sans-pro/source-sans-pro-v10-latin-600.svg +0 -0
  140. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/source-sans-pro/source-sans-pro-v10-latin-600.ttf +0 -0
  141. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/source-sans-pro/source-sans-pro-v10-latin-600.woff +0 -0
  142. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/source-sans-pro/source-sans-pro-v10-latin-600.woff2 +0 -0
  143. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/source-sans-pro/source-sans-pro-v10-latin-600italic.eot +0 -0
  144. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/source-sans-pro/source-sans-pro-v10-latin-600italic.svg +0 -0
  145. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/source-sans-pro/source-sans-pro-v10-latin-600italic.ttf +0 -0
  146. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/source-sans-pro/source-sans-pro-v10-latin-600italic.woff +0 -0
  147. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/source-sans-pro/source-sans-pro-v10-latin-600italic.woff2 +0 -0
  148. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/source-sans-pro/source-sans-pro-v10-latin-700.eot +0 -0
  149. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/source-sans-pro/source-sans-pro-v10-latin-700.svg +0 -0
  150. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/source-sans-pro/source-sans-pro-v10-latin-700.ttf +0 -0
  151. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/source-sans-pro/source-sans-pro-v10-latin-700.woff +0 -0
  152. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/source-sans-pro/source-sans-pro-v10-latin-700.woff2 +0 -0
  153. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/source-sans-pro/source-sans-pro-v10-latin-regular.eot +0 -0
  154. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/source-sans-pro/source-sans-pro-v10-latin-regular.svg +0 -0
  155. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/source-sans-pro/source-sans-pro-v10-latin-regular.ttf +0 -0
  156. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/source-sans-pro/source-sans-pro-v10-latin-regular.woff +0 -0
  157. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/source-sans-pro/source-sans-pro-v10-latin-regular.woff2 +0 -0
  158. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/fonts/source-sans-pro/source-sans-pro.css +0 -0
  159. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/images/foreignKey.png +0 -0
  160. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/images/foreignKeys.png +0 -0
  161. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/images/primaryKey.png +0 -0
  162. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/images/primaryKeys.png +0 -0
  163. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/index.html +0 -0
  164. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/info-html.txt +0 -0
  165. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/insertionOrder.txt +0 -0
  166. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/main.js +0 -0
  167. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/orphans.html +0 -0
  168. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/relationships.html +0 -0
  169. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/relationships.js +0 -0
  170. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/routines/routine.js +0 -0
  171. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/routines.html +0 -0
  172. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/routines.js +0 -0
  173. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/schemaSpy.css +0 -0
  174. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/schemaSpy.js +0 -0
  175. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/tables/dryadFiles.html +0 -0
  176. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/tables/dryadStudy.html +0 -0
  177. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/tables/dvFiles.html +0 -0
  178. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/tables/dvStudy.html +0 -0
  179. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/tables/failed_uploads.html +0 -0
  180. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/tables/lastcheck.html +0 -0
  181. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/dbase_structure/tables/table.js +0 -0
  182. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/faq.md +0 -0
  183. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/images/dryad2dataverseLogo.png +0 -0
  184. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/images/dryad2dataverseLogo.svg +0 -0
  185. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/index.md +0 -0
  186. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/installation.md +0 -0
  187. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/other_utils.md +0 -0
  188. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/pydoc-markdown.yml +0 -0
  189. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/reference.md +0 -0
  190. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/script.md +0 -0
  191. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/docs/track.md +0 -0
  192. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/license.md +0 -0
  193. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/mkdocs.yml +0 -0
  194. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/pyproject.toml +0 -0
  195. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/setup.cfg +0 -0
  196. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/setup.py +0 -0
  197. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/src/dryad2dataverse/constants.py +0 -0
  198. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/src/dryad2dataverse/exceptions.py +0 -0
  199. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/src/dryad2dataverse/handlers.py +0 -0
  200. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/src/dryad2dataverse.egg-info/SOURCES.txt +0 -0
  201. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/src/dryad2dataverse.egg-info/dependency_links.txt +0 -0
  202. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/src/dryad2dataverse.egg-info/entry_points.txt +0 -0
  203. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/src/dryad2dataverse.egg-info/top_level.txt +0 -0
  204. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/tests/__init__.py +0 -0
  205. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/tests/badURL.json +0 -0
  206. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/tests/tests_monitor.py +0 -0
  207. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/tests/tests_serializer.py +0 -0
  208. {dryad2dataverse-0.6.2 → dryad2dataverse-0.7.4}/tests/tests_transfer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dryad2dataverse
3
- Version: 0.6.2
3
+ Version: 0.7.4
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
@@ -17,6 +17,14 @@ Classifier: Topic :: Internet :: WWW/HTTP :: Site Management
17
17
  Classifier: Topic :: Utilities
18
18
  Requires-Python: >=3.6
19
19
  Description-Content-Type: text/markdown
20
+ Requires-Dist: certifi>=2022.12.7
21
+ Requires-Dist: charset-normalizer>=2.0.4
22
+ Requires-Dist: chardet>=3.0.4
23
+ Requires-Dist: idna>=2.10.0
24
+ Requires-Dist: pycryptodome>=3.20.0
25
+ Requires-Dist: requests>=2.26.0
26
+ Requires-Dist: requests-toolbelt>=0.9.1
27
+ Requires-Dist: urllib3>=1.26.6
20
28
 
21
29
  # dryad2dataverse
22
30
 
@@ -6,8 +6,6 @@ nav_order: 15
6
6
 
7
7
  # Complete API reference
8
8
 
9
- <a name="dryad2dataverse"></a>
10
-
11
9
  <a id="dryad2dataverse"></a>
12
10
 
13
11
  ## dryad2dataverse
@@ -279,14 +277,14 @@ to discover Dataverse file ids for deletion.
279
277
  filelist : list
280
278
  — List of Dryad file tuples: eg:
281
279
 
282
- ```
283
- [('https://datadryad.org/api/v2/files/385819/download',
284
- 'GCB_ACG_Mortality_2020.zip',
285
- 'application/x-zip-compressed', 23787587),
286
- ('https://datadryad.org/api/v2/files/385820/download',
287
- 'Readme_ACG_Mortality.txt',
288
- 'text/plain', 1350)]
289
- ```
280
+ ```
281
+ [('https://datadryad.org/api/v2/files/385819/download',
282
+ 'GCB_ACG_Mortality_2020.zip',
283
+ 'application/x-zip-compressed', 23787587),
284
+ ('https://datadryad.org/api/v2/files/385820/download',
285
+ 'Readme_ACG_Mortality.txt',
286
+ 'text/plain', 1350)]
287
+ ```
290
288
  ----------------------------------------
291
289
 
292
290
  <a id="dryad2dataverse.monitor.Monitor.get_json_dvfids"></a>
@@ -368,6 +366,12 @@ required to transfer data from Dryad to Dataverse.
368
366
  "Constants" may be a bit strong, but the only constant is the
369
367
  presence of change.
370
368
 
369
+ <a id="dryad2dataverse.constants.MAX_UPLOAD"></a>
370
+
371
+ ##### MAX\_UPLOAD
372
+
373
+ Max 3GB upload
374
+
371
375
  <a id="dryad2dataverse.handlers"></a>
372
376
 
373
377
  ## dryad2dataverse.handlers
@@ -625,37 +629,44 @@ Supplying a `targetDv` kwarg creates a new study and supplying a
625
629
  ##### download\_file
626
630
 
627
631
  ```python
628
- def download_file(url, filename, tmp=None, size=None, chk=None, timeout=45)
632
+ def download_file(url=None,
633
+ filename=None,
634
+ tmp=None,
635
+ size=None,
636
+ chk=None,
637
+ timeout=45,
638
+ **kwargs)
629
639
  ```
630
640
 
631
641
  Downloads a file via requests streaming and saves to constants.TMP.
632
- returns md5sum on success and an exception on failure.
642
+ returns checksum on success and an exception on failure.
633
643
 
634
644
  ----------------------------------------
645
+ Required keyword arguments:
635
646
 
636
- **Arguments**:
647
+ url : str
648
+ — URL of download.
637
649
 
638
-
639
- url : str
640
- — URL of download.
641
-
642
- filename : str
643
- — Output file name.
644
-
645
- timeout : int
646
- Requests timeout.
647
-
648
- tmp : str
649
- Temporary directory for downloads.
650
- Defaults to dryad2dataverse.constants.TMP.
651
-
652
- size : int
653
- Reported file size in bytes.
654
- Defaults to dryad2dataverse.constants.MAX_UPLOAD.
655
-
656
- chk : str
657
- - md5 sum of file (if available and known).
658
- ----------------------------------------
650
+ filename : str
651
+ Output file name.
652
+
653
+ timeout : int
654
+ Requests timeout.
655
+
656
+ tmp : str
657
+ Temporary directory for downloads.
658
+ Defaults to dryad2dataverse.constants.TMP.
659
+
660
+ size : int
661
+ Reported file size in bytes.
662
+ Defaults to dryad2dataverse.constants.MAX_UPLOAD.
663
+
664
+ digest_type: str
665
+ checksum type (ie, md5, sha-256, etc)
666
+
667
+ chk : str
668
+ checksum of file (if available and known).
669
+ ----------------------------------------
659
670
 
660
671
  <a id="dryad2dataverse.transfer.Transfer.download_files"></a>
661
672
 
@@ -935,6 +946,235 @@ a Dataverse installation.
935
946
  — API key for Dataverse. Defaults to dryad2dataverse.constants.APIKEY.
936
947
  ----------------------------------------
937
948
 
949
+ <a id="dryad2dataverse.scripts.dryadd"></a>
950
+
951
+ ## dryad2dataverse.scripts.dryadd
952
+
953
+ Dryad daemon for monitoring and automatically uploading studies associated with a particular ROR
954
+
955
+ Requires Python 3.6+ and requests library
956
+
957
+ <a id="dryad2dataverse.scripts.dryadd.new_content"></a>
958
+
959
+ ##### new\_content
960
+
961
+ ```python
962
+ def new_content(serial)
963
+ ```
964
+
965
+ Creates content for new study upload message (potentially redundant
966
+ with Dataverse emailer).
967
+ serial : dryad2dataverse.serializer.Serializer instance
968
+
969
+ <a id="dryad2dataverse.scripts.dryadd.changed_content"></a>
970
+
971
+ ##### changed\_content
972
+
973
+ ```python
974
+ def changed_content(serial, monitor)
975
+ ```
976
+
977
+ Creates content for file update message.
978
+ serial : dryad2dataverse.serializer.Serializer instance
979
+ monitor : dryad2dataverse.monitor.Monitor instance
980
+
981
+ <a id="dryad2dataverse.scripts.dryadd.notify"></a>
982
+
983
+ ##### notify
984
+
985
+ ```python
986
+ def notify(msgtxt, width=100, **kwargs)
987
+ ```
988
+
989
+ Basic email change notifier. Will sent email outlining metadata changes
990
+ to recipient. Uses SSL.
991
+
992
+ Has only really been tested with Gmail (although it should work with anything,
993
+ and Gmail requires 'Allow less secure apps' or whatever they call it.
994
+ If you are having troubles with GMail:
995
+
996
+ 1. Enable less secure access
997
+
998
+ 2. Disable the CAPTCHA:
999
+ https://accounts.google.com/DisplayUnlockCaptcha
1000
+
1001
+ Note: Google will automatically revert settings after some arbitrary period
1002
+ of time. You have been warned.
1003
+
1004
+ If your application worked before but suddenly it crashes with authenication
1005
+ errors, this is why.
1006
+
1007
+ msgtext : tuple
1008
+ Tuple containing strings of ('subject', 'message content')
1009
+ width : int
1010
+ Maximum line length. Max 1000
1011
+
1012
+ From the argument parser these keys and values are required:
1013
+ email : str
1014
+ From address for account
1015
+ user : str
1016
+ User name for email account
1017
+ pwd : str
1018
+ Password for email account
1019
+ mailserv : str
1020
+ SMTP server for sending mail
1021
+ port : int
1022
+ Mailserver port. Default 465
1023
+ recipients : list
1024
+ List of email addresses of recipients
1025
+
1026
+ <a id="dryad2dataverse.scripts.dryadd.get_records"></a>
1027
+
1028
+ ##### get\_records
1029
+
1030
+ ```python
1031
+ def get_records(ror: 'str', mod_date=None, verbosity=True, timeout=100)
1032
+ ```
1033
+
1034
+ returns a tuple of ((doi, metadata), ...). Dryad searches return complete
1035
+ study metadata from the search, surprisingly.
1036
+
1037
+ ror : str
1038
+ ROR string including http. To find your ROR, see
1039
+ https://ror.org/
1040
+
1041
+ mod_date : str
1042
+ UTC datetime string in the format suitable for the Dryad API.
1043
+ eg. 2021-01-21T21:42:40Z
1044
+ or .strftime('%Y-%m-%dT%H:%M:%SZ')
1045
+ if no mod_date is passed, all studies will be retrieved
1046
+
1047
+ verbosity : bool
1048
+ Output some data to stdout
1049
+
1050
+ timeout : int
1051
+ request timeout in seconds
1052
+
1053
+ <a id="dryad2dataverse.scripts.dryadd.argp"></a>
1054
+
1055
+ ##### argp
1056
+
1057
+ ```python
1058
+ def argp()
1059
+ ```
1060
+
1061
+ Argument parser
1062
+
1063
+ <a id="dryad2dataverse.scripts.dryadd.set_constants"></a>
1064
+
1065
+ ##### set\_constants
1066
+
1067
+ ```python
1068
+ def set_constants(args)
1069
+ ```
1070
+
1071
+ Set the appropriate dryad2dataverse constants
1072
+
1073
+ <a id="dryad2dataverse.scripts.dryadd.email_log"></a>
1074
+
1075
+ ##### email\_log
1076
+
1077
+ ```python
1078
+ def email_log(mailhost,
1079
+ fromaddr,
1080
+ toaddrs,
1081
+ credentials,
1082
+ port=465,
1083
+ secure=(),
1084
+ level=logging.WARNING,
1085
+ timeout=100)
1086
+ ```
1087
+
1088
+ Emails log error messages to recipient
1089
+
1090
+ mailhost : str
1091
+ Address of mail server. Eg. smtp.gmail.com
1092
+ fromaddr : str
1093
+ "From" address for email
1094
+ toaddrs :
1095
+ Recipient of email
1096
+ credentials : tuple
1097
+ (Username, password) tuple
1098
+ port : Mailserver port. Default 465
1099
+ secure : tuple
1100
+ The tuple should be either an empty tuple, or a single-value tuple with
1101
+ the name of a keyfile, or a 2-value tuple with the names of the keyfile
1102
+ and certificate file.
1103
+ See https://docs.python.org/3/library/logging.handlers.html
1104
+ level : int
1105
+ logging level. Default logging.WARNING
1106
+
1107
+ <a id="dryad2dataverse.scripts.dryadd.rotating_log"></a>
1108
+
1109
+ ##### rotating\_log
1110
+
1111
+ ```python
1112
+ def rotating_log(path, level)
1113
+ ```
1114
+
1115
+ Create log of transactions
1116
+
1117
+ path : str
1118
+ Complete path to log
1119
+ level : logging.LOGLEVEL
1120
+ logging level (eg, logging.DEBUG)
1121
+
1122
+ <a id="dryad2dataverse.scripts.dryadd.checkwarn"></a>
1123
+
1124
+ ##### checkwarn
1125
+
1126
+ ```python
1127
+ def checkwarn(val: int, **kwargs) -> None
1128
+ ```
1129
+
1130
+ Halt program execution before processing if threshold value of modified
1131
+ Dryad studies exceeded. Useful for checking if the Dryad API has changed
1132
+ and caused havoc.
1133
+
1134
+ val: int
1135
+ Number of modified or new studies
1136
+ kwargs: dict
1137
+ Email notification information.
1138
+ {'user': user email,
1139
+ 'recipients':[list of recipients],
1140
+ 'pwd' ; email server password],
1141
+ 'mailserv' : smtp mail server,
1142
+ 'warn': Threshold for number of warnings (int)}
1143
+ see dryadd.notify for full details of parameters.
1144
+
1145
+ Include log info:
1146
+ {loggers: [logging.logger, logging.logger,...]}
1147
+ Skip check
1148
+ {'warn_too_many': bool}
1149
+
1150
+ <a id="dryad2dataverse.scripts.dryadd.verbo"></a>
1151
+
1152
+ ##### verbo
1153
+
1154
+ ```python
1155
+ def verbo(verbosity: bool, **kwargs) -> None
1156
+ ```
1157
+
1158
+ verbosity: bool
1159
+ if True, print dict
1160
+ kwargs : dict
1161
+ Dictionary to print out
1162
+
1163
+ <a id="dryad2dataverse.scripts.dryadd.main"></a>
1164
+
1165
+ ##### main
1166
+
1167
+ ```python
1168
+ def main(log='/var/log/dryadd.log', level=logging.WARNING)
1169
+ ```
1170
+
1171
+ Main Dryad transfer daemon
1172
+
1173
+ log : str
1174
+ path to logfile
1175
+ level : int
1176
+ log level, usually one of logging.LOGLEVEL (ie, logging.warning)
1177
+
938
1178
  <a id="dryad2dataverse.serializer"></a>
939
1179
 
940
1180
  ## dryad2dataverse.serializer
@@ -1,7 +1,8 @@
1
1
  certifi>=2022.12.7
2
2
  charset-normalizer>=2.0.4
3
3
  chardet>=3.0.4
4
- idna>=2.10
4
+ idna>=2.10.0
5
+ pycryptodome>=3.20.0
5
6
  requests>=2.26.0
6
7
  requests-toolbelt>=0.9.1
7
8
  urllib3>=1.26.6
@@ -22,7 +22,9 @@ Modules included:
22
22
 
23
23
  dryad2dataverse.exceptions : Custom exceptions.
24
24
  '''
25
+ import sys
25
26
 
26
- VERSION = (0, 6, 2)
27
-
27
+ VERSION = (0, 7, 4)
28
28
  __version__ = '.'.join([str(x) for x in VERSION])
29
+ USERAGENT = (f'dryad2dataverse/v{__version__} ({sys.platform.capitalize()}); '
30
+ f'Python {sys.version[:sys.version.find("(")-1]}')
@@ -325,7 +325,10 @@ class Monitor():
325
325
  # because of code duplication below.
326
326
  for f in oldFiles:
327
327
  #Download links are not persistent. Be warned
328
- downLink = f['_links']['stash:file-download']['href']
328
+ try:
329
+ downLink = f['_links']['stash:file-download']['href']
330
+ except KeyError:
331
+ downLink = f['_links']['stash:download']['href']
329
332
  downLink = f'{constants.DRYURL}{downLink}'
330
333
  name = f['path']
331
334
  mimeType = f['mimeType']
@@ -27,7 +27,7 @@ import dryad2dataverse.serializer
27
27
  import dryad2dataverse.transfer
28
28
  from dryad2dataverse.handlers import SSLSMTPHandler
29
29
 
30
- VERSION = (0, 5, 3)
30
+ VERSION = (0, 5, 4)
31
31
  __version__ = '.'.join([str(x) for x in VERSION])
32
32
 
33
33
  DRY = 'https://datadryad.org/api/v2'
@@ -485,6 +485,9 @@ def checkwarn(val:int, **kwargs) -> None:
485
485
  {'warn_too_many': bool}
486
486
 
487
487
  '''
488
+ print(kwargs)
489
+ #print(vars(kwargs))
490
+ return
488
491
  if not kwargs.get('warn_too_many'):
489
492
  return
490
493
  if val >= kwargs.get('warn',0):
@@ -495,7 +498,7 @@ def checkwarn(val:int, **kwargs) -> None:
495
498
  for logme in kwargs.get('loggers'):
496
499
  logme.warning(mess)
497
500
  notify(msgtxt=(subject, mess),
498
- **vars(kwargs))
501
+ **kwargs)
499
502
  sys.exit()
500
503
 
501
504
  def verbo(verbosity:bool, **kwargs)->None:
@@ -671,5 +674,23 @@ def main(log='/var/log/dryadd.log', level=logging.WARNING):
671
674
  print(f'Error: {err}. Exiting. For details see log at {args.log}.')
672
675
  sys.exit()
673
676
 
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))
674
695
  if __name__ == '__main__':
675
- main()
696
+ main2()
@@ -11,11 +11,13 @@ import requests
11
11
  from requests.adapters import HTTPAdapter
12
12
 
13
13
  from dryad2dataverse import constants
14
+ from dryad2dataverse import USERAGENT
14
15
 
15
16
  LOGGER = logging.getLogger(__name__)
16
17
  #Connection monitoring as per
17
18
  #https://stackoverflow.com/questions/16337511/log-all-requests-from-the-python-requests-module
18
19
  URL_LOGGER = logging.getLogger('urllib3')
20
+ USER_AGENT = {'User-agent': USERAGENT}
19
21
 
20
22
  class Serializer():
21
23
  '''
@@ -72,6 +74,7 @@ class Serializer():
72
74
  try:
73
75
  headers = {'accept':'application/json',
74
76
  'Content-Type':'application/json'}
77
+ headers.update(USER_AGENT)
75
78
  doiClean = urllib.parse.quote(self.doi, safe='')
76
79
  resp = self.session.get(f'{url}/api/v2/datasets/{doiClean}',
77
80
  headers=headers, timeout=timeout)
@@ -164,6 +167,7 @@ class Serializer():
164
167
  self._fileJson = []
165
168
  headers = {'accept':'application/json',
166
169
  'Content-Type':'application/json'}
170
+ headers.update(USER_AGENT)
167
171
  fileList = self.session.get(f'{constants.DRYURL}/api/v2/versions/{self.id}/files',
168
172
  headers=headers,
169
173
  timeout=timeout)
@@ -202,7 +206,11 @@ class Serializer():
202
206
  files = page['_embedded'].get('stash:files')
203
207
  if files:
204
208
  for f in files:
205
- downLink = f['_links']['stash:file-download']['href']
209
+ #This broke with this commit:
210
+ # https://github.com/datadryad/dryad-app/commit/b8a333ba34b14e55cbc1d7ed5aa4451e0f41db66
211
+
212
+ #downLink = f['_links']['stash:file-download']['href']
213
+ downLink = f['_links']['stash:download']['href']
206
214
  downLink = f'{constants.DRYURL}{downLink}'
207
215
  name = f['path']
208
216
  mimeType = f['mimeType']