shareddata 6.85.4__tar.gz → 6.85.6__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 (187) hide show
  1. {shareddata-6.85.4/src/shareddata.egg-info → shareddata-6.85.6}/PKG-INFO +1 -1
  2. {shareddata-6.85.4 → shareddata-6.85.6}/setup.py +1 -1
  3. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/IO/AWSS3.py +30 -4
  4. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/TimeSeriesDisk.py +18 -2
  5. {shareddata-6.85.4 → shareddata-6.85.6/src/shareddata.egg-info}/PKG-INFO +1 -1
  6. {shareddata-6.85.4 → shareddata-6.85.6}/LICENSE +0 -0
  7. {shareddata-6.85.4 → shareddata-6.85.6}/MANIFEST.in +0 -0
  8. {shareddata-6.85.4 → shareddata-6.85.6}/README.md +0 -0
  9. {shareddata-6.85.4 → shareddata-6.85.6}/pyproject.toml +0 -0
  10. {shareddata-6.85.4 → shareddata-6.85.6}/setup.cfg +0 -0
  11. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/API/ServerGunicorn.py +0 -0
  12. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/API/ServerWaitress.py +0 -0
  13. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/API/__init__.py +0 -0
  14. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/API/apidocs-dark.css +0 -0
  15. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/API/apidocs.yml +0 -0
  16. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/API/auth.py +0 -0
  17. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/API/constants.py +0 -0
  18. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/API/download_paths.py +0 -0
  19. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/API/download_slots.py +0 -0
  20. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/API/install/worker.ps1 +0 -0
  21. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/API/install/worker.sh +0 -0
  22. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/API/listcache.py +0 -0
  23. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/API/routes/__init__.py +0 -0
  24. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/API/routes/cache.py +0 -0
  25. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/API/routes/collections.py +0 -0
  26. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/API/routes/data.py +0 -0
  27. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/API/routes/downloads.py +0 -0
  28. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/API/routes/metadata.py +0 -0
  29. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/API/routes/operations.py +0 -0
  30. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/API/routes/schedules.py +0 -0
  31. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/API/routes/sqlite.py +0 -0
  32. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/API/routes/system.py +0 -0
  33. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/API/routes/tables.py +0 -0
  34. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/API/routes/timeseries.py +0 -0
  35. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/API/routes/web_routes.py +0 -0
  36. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/API/routes/workers.py +0 -0
  37. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/API/utils.py +0 -0
  38. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Auth/__init__.py +0 -0
  39. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Auth/bootstrap.py +0 -0
  40. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Auth/migrate.py +0 -0
  41. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Auth/store.py +0 -0
  42. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Auth/workers.py +0 -0
  43. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/CacheRedis.py +0 -0
  44. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/CollectionMongoDB.py +0 -0
  45. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/DataAPI/__init__.py +0 -0
  46. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/DataAPI/catalog.py +0 -0
  47. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/DataAPI/config.py +0 -0
  48. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/DataAPI/errors.py +0 -0
  49. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/DataAPI/indexes.py +0 -0
  50. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/DataAPI/readers.py +0 -0
  51. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/DataAPI/resolve.py +0 -0
  52. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/DataAPI/service.py +0 -0
  53. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Database.py +0 -0
  54. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Defaults.py +0 -0
  55. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/IO/AWSEC2.py +0 -0
  56. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/IO/AutoDocstrings.py +0 -0
  57. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/IO/ClientAPI.py +0 -0
  58. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/IO/ClientSocket.py +0 -0
  59. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/IO/ClientWebSocket.py +0 -0
  60. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/IO/LogHandlerAPI.py +0 -0
  61. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/IO/LogReader.py +0 -0
  62. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/IO/MongoDBClient.py +0 -0
  63. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/IO/SaveTables.py +0 -0
  64. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/IO/ServerSocket.py +0 -0
  65. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/IO/ServerWebSocket.py +0 -0
  66. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/IO/StreamsCache.py +0 -0
  67. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/IO/StreamsPersist.py +0 -0
  68. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/IO/SyncTable.py +0 -0
  69. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/IO/TunnelWebSocket.py +0 -0
  70. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/IO/__init__.py +0 -0
  71. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Listing.py +0 -0
  72. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/LockWaiters.py +0 -0
  73. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Logger.py +0 -0
  74. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/MCP/__init__.py +0 -0
  75. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/MCP/__main__.py +0 -0
  76. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/MCP/client.py +0 -0
  77. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/MCP/server.py +0 -0
  78. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Metadata.py +0 -0
  79. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/MultiProc.py +0 -0
  80. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/OpenFIGI.py +0 -0
  81. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Redaction.py +0 -0
  82. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Routines/ArchiveOldCollections.py +0 -0
  83. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Routines/BatchJob.py +0 -0
  84. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Routines/ContainerHealth.py +0 -0
  85. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Routines/JobStore.py +0 -0
  86. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Routines/RoutineCommand.py +0 -0
  87. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Routines/RoutineOrigin.py +0 -0
  88. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Routines/Schedule.py +0 -0
  89. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Routines/ScheduleMirror.py +0 -0
  90. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Routines/ScheduleMonitor.py +0 -0
  91. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Routines/ScheduleStore.py +0 -0
  92. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Routines/Scheduler.py +0 -0
  93. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Routines/UpdateActiveJobs.py +0 -0
  94. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Routines/Worker.py +0 -0
  95. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Routines/WorkerBootstrap.py +0 -0
  96. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Routines/WorkerLib.py +0 -0
  97. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Routines/WorkerPool.py +0 -0
  98. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Routines/__init__.py +0 -0
  99. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/SQLite.py +0 -0
  100. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/SharedData.py +0 -0
  101. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/SharedNumpy.py +0 -0
  102. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/StreamKafka.py +0 -0
  103. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Symbol.py +0 -0
  104. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Table.py +0 -0
  105. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/TableDisk.py +0 -0
  106. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/TableIndex.py +0 -0
  107. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/TableIndexJitFunctions.py +0 -0
  108. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/TableIndexJitFunctionsManual.py +0 -0
  109. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/TableIndexJitGenerate.py +0 -0
  110. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/TableIndexJitHash.py +0 -0
  111. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/TableIndexJitLoc.py +0 -0
  112. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/TableProtocol.py +0 -0
  113. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/TableRead.py +0 -0
  114. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/TableRewrite.py +0 -0
  115. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/TimeseriesContainer.py +0 -0
  116. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Users.py +0 -0
  117. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Utils.py +0 -0
  118. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/ADDING_A_PAGE.md +0 -0
  119. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/__init__.py +0 -0
  120. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/activity_logger.py +0 -0
  121. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/app.py +0 -0
  122. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/assets/dashAgGridComponentFunctions.js +0 -0
  123. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/assets/dashAgGridFunctions.js +0 -0
  124. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/assets/google_logo.png +0 -0
  125. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/assets/kafka_keys.js +0 -0
  126. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/assets/logs.css +0 -0
  127. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/assets/sched.css +0 -0
  128. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/assets/styles.css +0 -0
  129. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/auth.py +0 -0
  130. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/backends.py +0 -0
  131. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/config.py +0 -0
  132. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/containers.py +0 -0
  133. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/identity.py +0 -0
  134. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/kafka_view.py +0 -0
  135. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/mongo_view.py +0 -0
  136. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/proc.py +0 -0
  137. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/redis_view.py +0 -0
  138. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/route_health.py +0 -0
  139. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/route_registry.py +0 -0
  140. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/sched.py +0 -0
  141. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/schedule_editor.py +0 -0
  142. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/server.py +0 -0
  143. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/services.py +0 -0
  144. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/shell.py +0 -0
  145. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/standalone.py +0 -0
  146. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/static/account.js +0 -0
  147. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/static/custom.css +0 -0
  148. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/static/favicon.ico +0 -0
  149. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/static/favicon.png +0 -0
  150. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/static/logo.png +0 -0
  151. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/static/logo_96x96.png +0 -0
  152. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/static/shareddata-mark.svg +0 -0
  153. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/static/shell.css +0 -0
  154. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/static/shell.js +0 -0
  155. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/static/standalone.css +0 -0
  156. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/static/standalone.js +0 -0
  157. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/suggest.py +0 -0
  158. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/templates/account.html +0 -0
  159. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/templates/base.html +0 -0
  160. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/templates/claim.html +0 -0
  161. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/templates/claim_done.html +0 -0
  162. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/templates/dash.html +0 -0
  163. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/templates/index.html +0 -0
  164. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/templates/login.html +0 -0
  165. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/templates/login_2fa.html +0 -0
  166. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/templates/partials/navbar.html +0 -0
  167. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/templates/partials/scripts.html +0 -0
  168. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/templates/recovery_codes.html +0 -0
  169. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/templates/shell.html +0 -0
  170. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/templates/standalone.html +0 -0
  171. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/twofactor.py +0 -0
  172. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/utils.py +0 -0
  173. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/Web/workerpool.py +0 -0
  174. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/__init__.py +0 -0
  175. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/build_info.py +0 -0
  176. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/fleet.py +0 -0
  177. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/preflight.py +0 -0
  178. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/private_files.py +0 -0
  179. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/release_backup.py +0 -0
  180. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/server.py +0 -0
  181. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/services.py +0 -0
  182. {shareddata-6.85.4 → shareddata-6.85.6}/src/SharedData/sharedmutexwin.pyd +0 -0
  183. {shareddata-6.85.4 → shareddata-6.85.6}/src/shareddata.egg-info/SOURCES.txt +0 -0
  184. {shareddata-6.85.4 → shareddata-6.85.6}/src/shareddata.egg-info/dependency_links.txt +0 -0
  185. {shareddata-6.85.4 → shareddata-6.85.6}/src/shareddata.egg-info/entry_points.txt +0 -0
  186. {shareddata-6.85.4 → shareddata-6.85.6}/src/shareddata.egg-info/requires.txt +0 -0
  187. {shareddata-6.85.4 → shareddata-6.85.6}/src/shareddata.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: shareddata
3
- Version: 6.85.4
3
+ Version: 6.85.6
4
4
  Summary: Memory Mapped / Shared Memory Database with S3 repository
5
5
  Home-page: https://shareddata.net
6
6
  Author: shareddata
@@ -66,7 +66,7 @@ test_requires = [
66
66
 
67
67
  setup(
68
68
  name='shareddata',
69
- version='6.85.4',
69
+ version='6.85.6',
70
70
  description='Memory Mapped / Shared Memory Database with S3 repository',
71
71
  author='shareddata',
72
72
  author_email='admin@shareddata.net',
@@ -299,6 +299,32 @@ def S3Upload(file_io, path, mtime, database_folder=None):
299
299
  Logger.log.error(Logger.user+' Uploading to S3 '+path+' ERROR!')
300
300
  raise Exception(Logger.user+' Uploading to S3 '+path+' ERROR!')
301
301
 
302
+ _batch_delete_refused = False
303
+
304
+
305
+ def _delete_objects(bucket, batch):
306
+ """
307
+ Delete the keys of `batch` ([{'Key': ...}, ...]) with one DeleteObjects call.
308
+
309
+ The MinIO behind this bucket demands a Content-MD5 header on DeleteObjects, and boto3 1.36 and
310
+ later send a CRC32 checksum instead, so the call fails with MissingContentMD5. When that happens
311
+ the keys are deleted one by one (DeleteObject has no body to checksum) and the batch call is not
312
+ tried again in this process.
313
+ """
314
+ global _batch_delete_refused
315
+ if not _batch_delete_refused:
316
+ try:
317
+ bucket.delete_objects(Delete={'Objects': batch})
318
+ return
319
+ except Exception as error:
320
+ code = getattr(error, 'response', {}).get('Error', {}).get('Code')
321
+ if code != 'MissingContentMD5':
322
+ raise
323
+ _batch_delete_refused = True
324
+ for item in batch:
325
+ bucket.Object(item['Key']).delete()
326
+
327
+
302
328
  def S3DeleteTable(remote_path):
303
329
  """
304
330
  Deletes the files 'head.bin.gzip' and 'tail.bin.gzip' from an S3 bucket at the specified remote path.
@@ -326,7 +352,7 @@ def S3DeleteTable(remote_path):
326
352
  batch_size = 1000 # Adjust if necessary
327
353
  for i in range(0, len(delete_us), batch_size):
328
354
  batch = delete_us[i:i+batch_size]
329
- bucket.delete_objects(Delete={'Objects': batch})
355
+ _delete_objects(bucket, batch)
330
356
  except Exception as e:
331
357
  Logger.log.error(f"S3Delete {remote_path} ERROR!\n{str(e)}")
332
358
  raise Exception(f"S3Delete {remote_path} ERROR!\n{str(e)}")
@@ -353,7 +379,7 @@ def S3DeleteTimeseries(remote_path):
353
379
  batch_size = 1000 # Adjust if necessary
354
380
  for i in range(0, len(delete_us), batch_size):
355
381
  batch = delete_us[i:i+batch_size]
356
- bucket.delete_objects(Delete={'Objects': batch})
382
+ _delete_objects(bucket, batch)
357
383
  except Exception as e:
358
384
  Logger.log.error(f"S3Delete {remote_path} ERROR!\n{str(e)}")
359
385
  raise Exception(f"S3Delete {remote_path} ERROR!\n{str(e)}")
@@ -383,7 +409,7 @@ def S3DeleteFolder(remote_path):
383
409
  batch_size = 1000 # Adjust if necessary
384
410
  for i in range(0, len(delete_us), batch_size):
385
411
  batch = delete_us[i:i+batch_size]
386
- bucket.delete_objects(Delete={'Objects': batch})
412
+ _delete_objects(bucket, batch)
387
413
  except Exception as e:
388
414
  Logger.log.error(f"S3Delete {remote_path} ERROR!\n{str(e)}")
389
415
  raise Exception(f"S3Delete {remote_path} ERROR!\n{str(e)}")
@@ -403,7 +429,7 @@ def S3DeleteFile(remote_path: str) -> None:
403
429
  """
404
430
  try:
405
431
  s3, bucket = S3GetSession()
406
- response = bucket.delete_objects(Delete={'Objects': [{'Key': remote_path}]})
432
+ _delete_objects(bucket, [{'Key': remote_path}])
407
433
  except Exception as e:
408
434
  Logger.log.error(f"S3DeleteFile {remote_path} ERROR!\n{str(e)}")
409
435
  raise Exception(f"S3DeleteFile {remote_path} ERROR!\n{str(e)}")
@@ -124,8 +124,7 @@ class TimeSeriesDisk:
124
124
 
125
125
  if value is not None:
126
126
  # mutex() acquired the non-reentrant tag lock for initialization.
127
- self._write_values_locked(value.index, value.columns, value.to_numpy(),
128
- add_columns=True, flush=True)
127
+ self._write_constructor_value_locked(value)
129
128
  finally:
130
129
  self.release()
131
130
 
@@ -188,6 +187,23 @@ class TimeSeriesDisk:
188
187
  finally:
189
188
  self.release()
190
189
 
190
+ def _write_constructor_value_locked(self, value):
191
+ """
192
+ The `value=` of the constructor, with the meaning it always had: rows whose timestamp is not
193
+ a slot of the series (a weekend, a date after its end) are skipped, not an error. Routines
194
+ build the frame from other tables and hand it over as is. The exact-timestamp check belongs to
195
+ write_values(), the explicit bulk API.
196
+ """
197
+ self.ensure_columns(value.columns, _locked=True)
198
+ tidx = self.get_loc_timestamp(value.index.values.astype(np.int64) / 10**9)
199
+ skipped = int(np.isnan(tidx).sum())
200
+ if skipped:
201
+ Logger.log.warning('%s: %d of %d rows of value are not on the series time index and were skipped'
202
+ % (self.relpath, skipped, len(tidx)))
203
+ sidx = self.columns.get_indexer(value.columns).astype(np.float64)
204
+ self.setValuesJit(self.shf, tidx, sidx, np.asarray(value.to_numpy(), dtype=np.float64))
205
+ self.shf.flush()
206
+
191
207
  def _write_values_locked(self, index, columns, values, *, add_columns, flush):
192
208
  index = pd.DatetimeIndex(index)
193
209
  columns = pd.Index(columns)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: shareddata
3
- Version: 6.85.4
3
+ Version: 6.85.6
4
4
  Summary: Memory Mapped / Shared Memory Database with S3 repository
5
5
  Home-page: https://shareddata.net
6
6
  Author: shareddata
File without changes
File without changes
File without changes
File without changes
File without changes