shareddata 6.86.0__tar.gz → 6.86.2__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 (190) hide show
  1. shareddata-6.86.2/PKG-INFO +164 -0
  2. shareddata-6.86.2/README.md +89 -0
  3. {shareddata-6.86.0 → shareddata-6.86.2}/setup.py +2 -2
  4. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/API/apidocs.yml +1 -1
  5. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/IO/SaveTables.py +30 -3
  6. shareddata-6.86.2/src/shareddata.egg-info/PKG-INFO +164 -0
  7. shareddata-6.86.0/PKG-INFO +0 -245
  8. shareddata-6.86.0/README.md +0 -170
  9. shareddata-6.86.0/src/shareddata.egg-info/PKG-INFO +0 -245
  10. {shareddata-6.86.0 → shareddata-6.86.2}/LICENSE +0 -0
  11. {shareddata-6.86.0 → shareddata-6.86.2}/MANIFEST.in +0 -0
  12. {shareddata-6.86.0 → shareddata-6.86.2}/pyproject.toml +0 -0
  13. {shareddata-6.86.0 → shareddata-6.86.2}/setup.cfg +0 -0
  14. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/API/ServerGunicorn.py +0 -0
  15. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/API/ServerWaitress.py +0 -0
  16. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/API/__init__.py +0 -0
  17. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/API/apidocs-dark.css +0 -0
  18. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/API/auth.py +0 -0
  19. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/API/constants.py +0 -0
  20. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/API/download_paths.py +0 -0
  21. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/API/download_slots.py +0 -0
  22. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/API/install/worker.ps1 +0 -0
  23. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/API/install/worker.sh +0 -0
  24. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/API/listcache.py +0 -0
  25. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/API/routes/__init__.py +0 -0
  26. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/API/routes/cache.py +0 -0
  27. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/API/routes/collections.py +0 -0
  28. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/API/routes/data.py +0 -0
  29. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/API/routes/downloads.py +0 -0
  30. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/API/routes/metadata.py +0 -0
  31. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/API/routes/operations.py +0 -0
  32. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/API/routes/schedules.py +0 -0
  33. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/API/routes/sqlite.py +0 -0
  34. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/API/routes/system.py +0 -0
  35. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/API/routes/tables.py +0 -0
  36. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/API/routes/timeseries.py +0 -0
  37. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/API/routes/web_routes.py +0 -0
  38. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/API/routes/workers.py +0 -0
  39. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/API/utils.py +0 -0
  40. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Auth/__init__.py +0 -0
  41. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Auth/bootstrap.py +0 -0
  42. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Auth/migrate.py +0 -0
  43. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Auth/store.py +0 -0
  44. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Auth/workers.py +0 -0
  45. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/CacheRedis.py +0 -0
  46. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/CollectionMongoDB.py +0 -0
  47. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/DataAPI/__init__.py +0 -0
  48. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/DataAPI/catalog.py +0 -0
  49. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/DataAPI/config.py +0 -0
  50. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/DataAPI/errors.py +0 -0
  51. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/DataAPI/indexes.py +0 -0
  52. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/DataAPI/readers.py +0 -0
  53. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/DataAPI/resolve.py +0 -0
  54. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/DataAPI/service.py +0 -0
  55. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Database.py +0 -0
  56. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Defaults.py +0 -0
  57. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/IO/AWSEC2.py +0 -0
  58. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/IO/AWSS3.py +0 -0
  59. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/IO/AutoDocstrings.py +0 -0
  60. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/IO/ClientAPI.py +0 -0
  61. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/IO/ClientSocket.py +0 -0
  62. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/IO/ClientWebSocket.py +0 -0
  63. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/IO/LogHandlerAPI.py +0 -0
  64. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/IO/LogReader.py +0 -0
  65. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/IO/MongoDBClient.py +0 -0
  66. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/IO/ServerSocket.py +0 -0
  67. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/IO/ServerWebSocket.py +0 -0
  68. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/IO/StreamsCache.py +0 -0
  69. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/IO/StreamsPersist.py +0 -0
  70. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/IO/SyncTable.py +0 -0
  71. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/IO/TunnelWebSocket.py +0 -0
  72. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/IO/__init__.py +0 -0
  73. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Listing.py +0 -0
  74. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/LockWaiters.py +0 -0
  75. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Logger.py +0 -0
  76. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/MCP/__init__.py +0 -0
  77. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/MCP/__main__.py +0 -0
  78. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/MCP/client.py +0 -0
  79. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/MCP/server.py +0 -0
  80. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Metadata.py +0 -0
  81. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/MultiProc.py +0 -0
  82. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/OpenFIGI.py +0 -0
  83. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Redaction.py +0 -0
  84. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Routines/ArchiveOldCollections.py +0 -0
  85. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Routines/BatchJob.py +0 -0
  86. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Routines/ContainerHealth.py +0 -0
  87. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Routines/JobStore.py +0 -0
  88. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Routines/RoutineCommand.py +0 -0
  89. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Routines/RoutineOrigin.py +0 -0
  90. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Routines/Schedule.py +0 -0
  91. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Routines/ScheduleMirror.py +0 -0
  92. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Routines/ScheduleMonitor.py +0 -0
  93. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Routines/ScheduleStore.py +0 -0
  94. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Routines/Scheduler.py +0 -0
  95. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Routines/UpdateActiveJobs.py +0 -0
  96. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Routines/Worker.py +0 -0
  97. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Routines/WorkerBootstrap.py +0 -0
  98. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Routines/WorkerLib.py +0 -0
  99. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Routines/WorkerPool.py +0 -0
  100. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Routines/__init__.py +0 -0
  101. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/SQLite.py +0 -0
  102. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/SharedData.py +0 -0
  103. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/SharedNumpy.py +0 -0
  104. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/StreamKafka.py +0 -0
  105. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Symbol.py +0 -0
  106. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Table.py +0 -0
  107. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/TableDisk.py +0 -0
  108. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/TableIndex.py +0 -0
  109. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/TableIndexJitFunctions.py +0 -0
  110. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/TableIndexJitFunctionsManual.py +0 -0
  111. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/TableIndexJitGenerate.py +0 -0
  112. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/TableIndexJitHash.py +0 -0
  113. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/TableIndexJitLoc.py +0 -0
  114. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/TableProtocol.py +0 -0
  115. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/TableRead.py +0 -0
  116. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/TableRewrite.py +0 -0
  117. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/TimeSeriesDisk.py +0 -0
  118. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/TimeseriesContainer.py +0 -0
  119. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Users.py +0 -0
  120. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Utils.py +0 -0
  121. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/ADDING_A_PAGE.md +0 -0
  122. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/__init__.py +0 -0
  123. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/activity_logger.py +0 -0
  124. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/app.py +0 -0
  125. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/assets/dashAgGridComponentFunctions.js +0 -0
  126. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/assets/dashAgGridFunctions.js +0 -0
  127. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/assets/google_logo.png +0 -0
  128. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/assets/kafka_keys.js +0 -0
  129. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/assets/logs.css +0 -0
  130. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/assets/sched.css +0 -0
  131. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/assets/styles.css +0 -0
  132. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/auth.py +0 -0
  133. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/backends.py +0 -0
  134. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/config.py +0 -0
  135. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/containers.py +0 -0
  136. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/identity.py +0 -0
  137. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/kafka_view.py +0 -0
  138. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/mongo_view.py +0 -0
  139. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/proc.py +0 -0
  140. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/redis_view.py +0 -0
  141. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/route_health.py +0 -0
  142. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/route_registry.py +0 -0
  143. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/sched.py +0 -0
  144. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/schedule_editor.py +0 -0
  145. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/server.py +0 -0
  146. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/services.py +0 -0
  147. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/shell.py +0 -0
  148. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/standalone.py +0 -0
  149. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/static/account.js +0 -0
  150. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/static/custom.css +0 -0
  151. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/static/favicon.ico +0 -0
  152. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/static/favicon.png +0 -0
  153. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/static/logo.png +0 -0
  154. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/static/logo_96x96.png +0 -0
  155. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/static/shareddata-mark.svg +0 -0
  156. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/static/shell.css +0 -0
  157. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/static/shell.js +0 -0
  158. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/static/standalone.css +0 -0
  159. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/static/standalone.js +0 -0
  160. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/suggest.py +0 -0
  161. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/templates/account.html +0 -0
  162. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/templates/base.html +0 -0
  163. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/templates/claim.html +0 -0
  164. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/templates/claim_done.html +0 -0
  165. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/templates/dash.html +0 -0
  166. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/templates/index.html +0 -0
  167. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/templates/login.html +0 -0
  168. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/templates/login_2fa.html +0 -0
  169. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/templates/partials/navbar.html +0 -0
  170. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/templates/partials/scripts.html +0 -0
  171. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/templates/recovery_codes.html +0 -0
  172. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/templates/shell.html +0 -0
  173. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/templates/standalone.html +0 -0
  174. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/twofactor.py +0 -0
  175. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/utils.py +0 -0
  176. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/Web/workerpool.py +0 -0
  177. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/__init__.py +0 -0
  178. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/build_info.py +0 -0
  179. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/fleet.py +0 -0
  180. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/preflight.py +0 -0
  181. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/private_files.py +0 -0
  182. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/release_backup.py +0 -0
  183. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/server.py +0 -0
  184. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/services.py +0 -0
  185. {shareddata-6.86.0 → shareddata-6.86.2}/src/SharedData/sharedmutexwin.pyd +0 -0
  186. {shareddata-6.86.0 → shareddata-6.86.2}/src/shareddata.egg-info/SOURCES.txt +0 -0
  187. {shareddata-6.86.0 → shareddata-6.86.2}/src/shareddata.egg-info/dependency_links.txt +0 -0
  188. {shareddata-6.86.0 → shareddata-6.86.2}/src/shareddata.egg-info/entry_points.txt +0 -0
  189. {shareddata-6.86.0 → shareddata-6.86.2}/src/shareddata.egg-info/requires.txt +0 -0
  190. {shareddata-6.86.0 → shareddata-6.86.2}/src/shareddata.egg-info/top_level.txt +0 -0
@@ -0,0 +1,164 @@
1
+ Metadata-Version: 2.4
2
+ Name: shareddata
3
+ Version: 6.86.2
4
+ Summary: Memory-mapped record and time-series store with an HTTP API and a distributed scheduler
5
+ Home-page: https://shareddata.net
6
+ Author: shareddata
7
+ Author-email: admin@shareddata.net
8
+ License: MIT
9
+ Project-URL: Homepage, https://shareddata.net
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Programming Language :: Python :: 3.11
12
+ Classifier: Programming Language :: Python :: 3.12
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Operating System :: OS Independent
15
+ Requires-Python: >=3.11, <3.13
16
+ Description-Content-Type: text/markdown
17
+ License-File: LICENSE
18
+ Requires-Dist: ipykernel<8,>=7.4
19
+ Requires-Dist: python-json-logger<5,>=4.2
20
+ Requires-Dist: python-dotenv<2,>=1.2.4
21
+ Requires-Dist: pandas<3,>=2.2
22
+ Requires-Dist: scipy<1.18,>=1.14
23
+ Requires-Dist: numpy<1.27,>=1.26.4
24
+ Requires-Dist: numba==0.59.1
25
+ Requires-Dist: XlsxWriter<4,>=3.2.9
26
+ Requires-Dist: openpyxl<4,>=3.1.5
27
+ Requires-Dist: tqdm<5,>=4.70.1
28
+ Requires-Dist: cffi<3,>=2.1
29
+ Requires-Dist: tzlocal<6,>=5.4.4
30
+ Requires-Dist: websockets<18,>=17.1
31
+ Requires-Dist: lz4<5,>=4.4.5
32
+ Requires-Dist: flask<4,>=3.1.3
33
+ Requires-Dist: waitress<4,>=3.0.2
34
+ Requires-Dist: requests<3,>=2.34.2
35
+ Requires-Dist: flasgger==0.9.7.1
36
+ Requires-Dist: pymongo<5,>=4.18.2
37
+ Requires-Dist: setuptools>=84
38
+ Requires-Dist: filelock<5,>=4.0.9
39
+ Requires-Dist: gunicorn<27,>=26.2
40
+ Requires-Dist: aiohttp<4,>=3.14.3
41
+ Requires-Dist: boto3<2,>=1.43
42
+ Requires-Dist: confluent-kafka<3,>=2.15.1
43
+ Requires-Dist: aiokafka<1,>=0.14
44
+ Requires-Dist: redis<9,>=8.1
45
+ Requires-Dist: Authlib<2,>=1.8
46
+ Requires-Dist: PyJWT<3,>=2.8
47
+ Requires-Dist: argon2-cffi<26,>=25.1
48
+ Requires-Dist: flask-jwt-extended<5,>=4.6
49
+ Requires-Dist: cryptography<51,>=50.0.2
50
+ Requires-Dist: segno<2,>=1.6
51
+ Requires-Dist: psutil<8,>=5.9
52
+ Requires-Dist: mcp>=1.27
53
+ Requires-Dist: httpx>=0.27
54
+ Provides-Extra: test
55
+ Requires-Dist: pytest<10,>=8.3.4; extra == "test"
56
+ Requires-Dist: pytest-asyncio<2,>=0.24; extra == "test"
57
+ Requires-Dist: playwright<2,>=1.63; extra == "test"
58
+ Provides-Extra: s3
59
+ Provides-Extra: kafka
60
+ Provides-Extra: redis
61
+ Provides-Extra: all
62
+ Dynamic: author
63
+ Dynamic: author-email
64
+ Dynamic: classifier
65
+ Dynamic: description
66
+ Dynamic: description-content-type
67
+ Dynamic: home-page
68
+ Dynamic: license
69
+ Dynamic: license-file
70
+ Dynamic: project-url
71
+ Dynamic: provides-extra
72
+ Dynamic: requires-dist
73
+ Dynamic: requires-python
74
+ Dynamic: summary
75
+
76
+ # SharedData
77
+
78
+ SharedData is an open-source memory-mapped store for records and time series —
79
+ in the workload category of tick stores such as kdb+ — plus the scheduler and
80
+ worker fleet that produce the data. Local processes map the same files through
81
+ the operating system's page cache; indexed writes coordinate through a
82
+ per-table process lock. Remote clients use an authenticated HTTP API; shared
83
+ memory does not span hosts.
84
+
85
+ Website and manual: <https://shareddata.net>
86
+
87
+ ## Install
88
+
89
+ Python 3.11 or 3.12:
90
+
91
+ ```sh
92
+ python -m pip install shareddata
93
+ ```
94
+
95
+ The [quick start](https://shareddata.net/docs/QUICK_START/) uses illustrative
96
+ records in isolated storage. See [configuration](https://shareddata.net/docs/CONFIGURATION/)
97
+ for public environment names and [Windows limitations](https://shareddata.net/docs/WINDOWS/)
98
+ for native requirements and rewrite behavior.
99
+
100
+ ## A record in one minute
101
+
102
+ Save as `example.py` after setting up isolated storage in the
103
+ [quick start](https://shareddata.net/docs/QUICK_START/), then run `python example.py`:
104
+
105
+ ```python
106
+ from SharedData.SharedData import SharedData
107
+ import pandas as pd
108
+
109
+ store = SharedData(__file__, user="example")
110
+ index = pd.MultiIndex.from_tuples(
111
+ [(pd.Timestamp("2026-01-02"), "EXAMPLE")],
112
+ names=["date", "symbol"],
113
+ )
114
+ rows = pd.DataFrame({"close": [100.0]}, index=index)
115
+ records = store.table(
116
+ "MarketData", "D1", "DEMO", "PRICES",
117
+ value=rows,
118
+ )
119
+ print(records.loc["2026-01-02", "EXAMPLE"])
120
+ ```
121
+
122
+ ## Containers and execution
123
+
124
+ - [Tables](https://shareddata.net/docs/core/table/): structured NumPy records and primary-key lookup.
125
+ - [Time series](https://shareddata.net/docs/core/timeseries/): timestamped float matrices.
126
+ - Collections, Redis caches, Kafka streams and optional S3 integration.
127
+ - [HTTP API](https://shareddata.net/docs/guide/swagger/): authenticated remote access.
128
+ - [Measured latency](https://shareddata.net/docs/performance/): what the containers cost in practice.
129
+
130
+ ## A store and the fleet that fills it
131
+
132
+ A routine is any program the Scheduler owns — a feed collector, a parser, a
133
+ consolidation job, an API server. A schedule lists the routines that should
134
+ stay alive or run at their times. Batch routines wait for their batch dependencies
135
+ to complete; realtime routines wait for their realtime dependencies to be running.
136
+ Dependencies between the two kinds are not enforced at runtime. Commands travel
137
+ through a per-host worker pool that validates the requested source revision
138
+ before every launch; routines report heartbeats and lifecycle messages through
139
+ the logging plane, and the Scheduler writes queryable state into the store.
140
+
141
+ - [Orchestration](https://shareddata.net/docs/orchestration/): the routine model, the Scheduler's tick and the worker pool.
142
+ - [Use cases](https://shareddata.net/docs/use-cases/): the workloads a production deployment runs, generalized.
143
+ - [Schedules](https://shareddata.net/docs/scheduler-store/) and [batch jobs](https://shareddata.net/docs/job-store/): where the state lives.
144
+
145
+ ## Data by symbol
146
+
147
+ The [semantic data API](https://shareddata.net/docs/data-api/) resolves a
148
+ symbol or entity to a dataset and includes provenance. It is a convenience,
149
+ not the fast path: producers keep using direct container interfaces for
150
+ performance-critical work.
151
+
152
+ ## Client integration
153
+
154
+ [Client integration](https://shareddata.net/docs/ecosystem/) covers
155
+ authenticated API access, the MCP server for compatible agent clients, and
156
+ worker access.
157
+
158
+ ## Development and license
159
+
160
+ Submit changes through the repository's review process. Read the
161
+ [development guide](https://shareddata.net/docs/DEVELOPMENT/) and run the
162
+ checks relevant to your change; [building and publishing](https://shareddata.net/docs/guide/building/)
163
+ explains how the public site is produced and audited. SharedData is released
164
+ under the MIT license; see `LICENSE` in the source distribution.
@@ -0,0 +1,89 @@
1
+ # SharedData
2
+
3
+ SharedData is an open-source memory-mapped store for records and time series —
4
+ in the workload category of tick stores such as kdb+ — plus the scheduler and
5
+ worker fleet that produce the data. Local processes map the same files through
6
+ the operating system's page cache; indexed writes coordinate through a
7
+ per-table process lock. Remote clients use an authenticated HTTP API; shared
8
+ memory does not span hosts.
9
+
10
+ Website and manual: <https://shareddata.net>
11
+
12
+ ## Install
13
+
14
+ Python 3.11 or 3.12:
15
+
16
+ ```sh
17
+ python -m pip install shareddata
18
+ ```
19
+
20
+ The [quick start](https://shareddata.net/docs/QUICK_START/) uses illustrative
21
+ records in isolated storage. See [configuration](https://shareddata.net/docs/CONFIGURATION/)
22
+ for public environment names and [Windows limitations](https://shareddata.net/docs/WINDOWS/)
23
+ for native requirements and rewrite behavior.
24
+
25
+ ## A record in one minute
26
+
27
+ Save as `example.py` after setting up isolated storage in the
28
+ [quick start](https://shareddata.net/docs/QUICK_START/), then run `python example.py`:
29
+
30
+ ```python
31
+ from SharedData.SharedData import SharedData
32
+ import pandas as pd
33
+
34
+ store = SharedData(__file__, user="example")
35
+ index = pd.MultiIndex.from_tuples(
36
+ [(pd.Timestamp("2026-01-02"), "EXAMPLE")],
37
+ names=["date", "symbol"],
38
+ )
39
+ rows = pd.DataFrame({"close": [100.0]}, index=index)
40
+ records = store.table(
41
+ "MarketData", "D1", "DEMO", "PRICES",
42
+ value=rows,
43
+ )
44
+ print(records.loc["2026-01-02", "EXAMPLE"])
45
+ ```
46
+
47
+ ## Containers and execution
48
+
49
+ - [Tables](https://shareddata.net/docs/core/table/): structured NumPy records and primary-key lookup.
50
+ - [Time series](https://shareddata.net/docs/core/timeseries/): timestamped float matrices.
51
+ - Collections, Redis caches, Kafka streams and optional S3 integration.
52
+ - [HTTP API](https://shareddata.net/docs/guide/swagger/): authenticated remote access.
53
+ - [Measured latency](https://shareddata.net/docs/performance/): what the containers cost in practice.
54
+
55
+ ## A store and the fleet that fills it
56
+
57
+ A routine is any program the Scheduler owns — a feed collector, a parser, a
58
+ consolidation job, an API server. A schedule lists the routines that should
59
+ stay alive or run at their times. Batch routines wait for their batch dependencies
60
+ to complete; realtime routines wait for their realtime dependencies to be running.
61
+ Dependencies between the two kinds are not enforced at runtime. Commands travel
62
+ through a per-host worker pool that validates the requested source revision
63
+ before every launch; routines report heartbeats and lifecycle messages through
64
+ the logging plane, and the Scheduler writes queryable state into the store.
65
+
66
+ - [Orchestration](https://shareddata.net/docs/orchestration/): the routine model, the Scheduler's tick and the worker pool.
67
+ - [Use cases](https://shareddata.net/docs/use-cases/): the workloads a production deployment runs, generalized.
68
+ - [Schedules](https://shareddata.net/docs/scheduler-store/) and [batch jobs](https://shareddata.net/docs/job-store/): where the state lives.
69
+
70
+ ## Data by symbol
71
+
72
+ The [semantic data API](https://shareddata.net/docs/data-api/) resolves a
73
+ symbol or entity to a dataset and includes provenance. It is a convenience,
74
+ not the fast path: producers keep using direct container interfaces for
75
+ performance-critical work.
76
+
77
+ ## Client integration
78
+
79
+ [Client integration](https://shareddata.net/docs/ecosystem/) covers
80
+ authenticated API access, the MCP server for compatible agent clients, and
81
+ worker access.
82
+
83
+ ## Development and license
84
+
85
+ Submit changes through the repository's review process. Read the
86
+ [development guide](https://shareddata.net/docs/DEVELOPMENT/) and run the
87
+ checks relevant to your change; [building and publishing](https://shareddata.net/docs/guide/building/)
88
+ explains how the public site is produced and audited. SharedData is released
89
+ under the MIT license; see `LICENSE` in the source distribution.
@@ -66,8 +66,8 @@ test_requires = [
66
66
 
67
67
  setup(
68
68
  name='shareddata',
69
- version='6.86.0',
70
- description='Memory Mapped / Shared Memory Database with S3 repository',
69
+ version='6.86.2',
70
+ description='Memory-mapped record and time-series store with an HTTP API and a distributed scheduler',
71
71
  author='shareddata',
72
72
  author_email='admin@shareddata.net',
73
73
  url='https://shareddata.net',
@@ -2,7 +2,7 @@
2
2
  openapi: 3.0.3
3
3
  info:
4
4
  title: SharedData API
5
- version: 6.86.0
5
+ version: 6.86.2
6
6
  description: |
7
7
  HTTP API of a SharedData server. The same operations are available from Python
8
8
  through `SharedData.IO.ClientAPI` (for example `ClientAPI.get_table(...)`).
@@ -80,6 +80,29 @@ def _failed(row, error):
80
80
  'error': f'{type(error).__name__}: {error}'.replace('\n', ' ')[:300]}
81
81
 
82
82
 
83
+ def live_daily_partitions(dftables: pd.DataFrame, now: datetime = None) -> pd.Series:
84
+ """Rows of daily partitions (YYYYMMDD) dated today or later in UTC.
85
+
86
+ A realtime writer is still appending to such a partition. Table.write holds the
87
+ table's mutex while it hashes, uploads and flushes the whole partition (minutes
88
+ for a 100 GB table), and every writer of the partition waits for that mutex, so
89
+ a backup would stall live data. The partition is complete the next night, when
90
+ it is still newer than the remote copy and is saved then.
91
+ """
92
+ now = datetime.now(timezone.utc) if now is None else now
93
+ today = now.astimezone(timezone.utc).strftime('%Y%m%d')
94
+ partition = dftables['partition'].fillna('').astype(str)
95
+ return partition.str.fullmatch(r'\d{8}') & (partition >= today)
96
+
97
+
98
+ def select_tables(dftables: pd.DataFrame, now: datetime = None) -> pd.Series:
99
+ """Tables to save: local newer than remote (or no remote), not tiny, not live today."""
100
+ saveidx = (dftables['last_modified_local'].notnull())
101
+ saveidx = saveidx & ((dftables['last_modified_local'] > dftables['last_modified_remote']) | (dftables['last_modified_remote'].isnull()))
102
+ saveidx = saveidx & (dftables['size_local'] > 1000)
103
+ return saveidx & ~live_daily_partitions(dftables, now)
104
+
105
+
83
106
  def write_table(dftable_row: Dict[str, Any], retry=False) -> Dict[str, str]:
84
107
  """Save one table; return {'table', 'status': saved|failed|skipped, 'error'}."""
85
108
  path = table_path(dftable_row)
@@ -307,9 +330,13 @@ def main():
307
330
  're-uploading every local table would be catastrophic.')
308
331
  sys.exit(1)
309
332
 
310
- saveidx = (dftables['last_modified_local'].notnull())
311
- saveidx = saveidx & ((dftables['last_modified_local'] > dftables['last_modified_remote']) | (dftables['last_modified_remote'].isnull()))
312
- saveidx = saveidx & (dftables['size_local'] > 1000)
333
+ saveidx = select_tables(dftables)
334
+ live = dftables[live_daily_partitions(dftables)
335
+ & (dftables['last_modified_local'].notnull())
336
+ & (dftables['size_local'] > 1000)]
337
+ if len(live):
338
+ Logger.log.info(f'SaveTables skipped {len(live)} live daily partitions (saved the next night): '
339
+ + ', '.join(table_path(r) for r in live.to_dict(orient='records')))
313
340
 
314
341
  Logger.log.info('Saving the following tables:')
315
342
  for idx, row in dftables[saveidx].iterrows():
@@ -0,0 +1,164 @@
1
+ Metadata-Version: 2.4
2
+ Name: shareddata
3
+ Version: 6.86.2
4
+ Summary: Memory-mapped record and time-series store with an HTTP API and a distributed scheduler
5
+ Home-page: https://shareddata.net
6
+ Author: shareddata
7
+ Author-email: admin@shareddata.net
8
+ License: MIT
9
+ Project-URL: Homepage, https://shareddata.net
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Programming Language :: Python :: 3.11
12
+ Classifier: Programming Language :: Python :: 3.12
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Operating System :: OS Independent
15
+ Requires-Python: >=3.11, <3.13
16
+ Description-Content-Type: text/markdown
17
+ License-File: LICENSE
18
+ Requires-Dist: ipykernel<8,>=7.4
19
+ Requires-Dist: python-json-logger<5,>=4.2
20
+ Requires-Dist: python-dotenv<2,>=1.2.4
21
+ Requires-Dist: pandas<3,>=2.2
22
+ Requires-Dist: scipy<1.18,>=1.14
23
+ Requires-Dist: numpy<1.27,>=1.26.4
24
+ Requires-Dist: numba==0.59.1
25
+ Requires-Dist: XlsxWriter<4,>=3.2.9
26
+ Requires-Dist: openpyxl<4,>=3.1.5
27
+ Requires-Dist: tqdm<5,>=4.70.1
28
+ Requires-Dist: cffi<3,>=2.1
29
+ Requires-Dist: tzlocal<6,>=5.4.4
30
+ Requires-Dist: websockets<18,>=17.1
31
+ Requires-Dist: lz4<5,>=4.4.5
32
+ Requires-Dist: flask<4,>=3.1.3
33
+ Requires-Dist: waitress<4,>=3.0.2
34
+ Requires-Dist: requests<3,>=2.34.2
35
+ Requires-Dist: flasgger==0.9.7.1
36
+ Requires-Dist: pymongo<5,>=4.18.2
37
+ Requires-Dist: setuptools>=84
38
+ Requires-Dist: filelock<5,>=4.0.9
39
+ Requires-Dist: gunicorn<27,>=26.2
40
+ Requires-Dist: aiohttp<4,>=3.14.3
41
+ Requires-Dist: boto3<2,>=1.43
42
+ Requires-Dist: confluent-kafka<3,>=2.15.1
43
+ Requires-Dist: aiokafka<1,>=0.14
44
+ Requires-Dist: redis<9,>=8.1
45
+ Requires-Dist: Authlib<2,>=1.8
46
+ Requires-Dist: PyJWT<3,>=2.8
47
+ Requires-Dist: argon2-cffi<26,>=25.1
48
+ Requires-Dist: flask-jwt-extended<5,>=4.6
49
+ Requires-Dist: cryptography<51,>=50.0.2
50
+ Requires-Dist: segno<2,>=1.6
51
+ Requires-Dist: psutil<8,>=5.9
52
+ Requires-Dist: mcp>=1.27
53
+ Requires-Dist: httpx>=0.27
54
+ Provides-Extra: test
55
+ Requires-Dist: pytest<10,>=8.3.4; extra == "test"
56
+ Requires-Dist: pytest-asyncio<2,>=0.24; extra == "test"
57
+ Requires-Dist: playwright<2,>=1.63; extra == "test"
58
+ Provides-Extra: s3
59
+ Provides-Extra: kafka
60
+ Provides-Extra: redis
61
+ Provides-Extra: all
62
+ Dynamic: author
63
+ Dynamic: author-email
64
+ Dynamic: classifier
65
+ Dynamic: description
66
+ Dynamic: description-content-type
67
+ Dynamic: home-page
68
+ Dynamic: license
69
+ Dynamic: license-file
70
+ Dynamic: project-url
71
+ Dynamic: provides-extra
72
+ Dynamic: requires-dist
73
+ Dynamic: requires-python
74
+ Dynamic: summary
75
+
76
+ # SharedData
77
+
78
+ SharedData is an open-source memory-mapped store for records and time series —
79
+ in the workload category of tick stores such as kdb+ — plus the scheduler and
80
+ worker fleet that produce the data. Local processes map the same files through
81
+ the operating system's page cache; indexed writes coordinate through a
82
+ per-table process lock. Remote clients use an authenticated HTTP API; shared
83
+ memory does not span hosts.
84
+
85
+ Website and manual: <https://shareddata.net>
86
+
87
+ ## Install
88
+
89
+ Python 3.11 or 3.12:
90
+
91
+ ```sh
92
+ python -m pip install shareddata
93
+ ```
94
+
95
+ The [quick start](https://shareddata.net/docs/QUICK_START/) uses illustrative
96
+ records in isolated storage. See [configuration](https://shareddata.net/docs/CONFIGURATION/)
97
+ for public environment names and [Windows limitations](https://shareddata.net/docs/WINDOWS/)
98
+ for native requirements and rewrite behavior.
99
+
100
+ ## A record in one minute
101
+
102
+ Save as `example.py` after setting up isolated storage in the
103
+ [quick start](https://shareddata.net/docs/QUICK_START/), then run `python example.py`:
104
+
105
+ ```python
106
+ from SharedData.SharedData import SharedData
107
+ import pandas as pd
108
+
109
+ store = SharedData(__file__, user="example")
110
+ index = pd.MultiIndex.from_tuples(
111
+ [(pd.Timestamp("2026-01-02"), "EXAMPLE")],
112
+ names=["date", "symbol"],
113
+ )
114
+ rows = pd.DataFrame({"close": [100.0]}, index=index)
115
+ records = store.table(
116
+ "MarketData", "D1", "DEMO", "PRICES",
117
+ value=rows,
118
+ )
119
+ print(records.loc["2026-01-02", "EXAMPLE"])
120
+ ```
121
+
122
+ ## Containers and execution
123
+
124
+ - [Tables](https://shareddata.net/docs/core/table/): structured NumPy records and primary-key lookup.
125
+ - [Time series](https://shareddata.net/docs/core/timeseries/): timestamped float matrices.
126
+ - Collections, Redis caches, Kafka streams and optional S3 integration.
127
+ - [HTTP API](https://shareddata.net/docs/guide/swagger/): authenticated remote access.
128
+ - [Measured latency](https://shareddata.net/docs/performance/): what the containers cost in practice.
129
+
130
+ ## A store and the fleet that fills it
131
+
132
+ A routine is any program the Scheduler owns — a feed collector, a parser, a
133
+ consolidation job, an API server. A schedule lists the routines that should
134
+ stay alive or run at their times. Batch routines wait for their batch dependencies
135
+ to complete; realtime routines wait for their realtime dependencies to be running.
136
+ Dependencies between the two kinds are not enforced at runtime. Commands travel
137
+ through a per-host worker pool that validates the requested source revision
138
+ before every launch; routines report heartbeats and lifecycle messages through
139
+ the logging plane, and the Scheduler writes queryable state into the store.
140
+
141
+ - [Orchestration](https://shareddata.net/docs/orchestration/): the routine model, the Scheduler's tick and the worker pool.
142
+ - [Use cases](https://shareddata.net/docs/use-cases/): the workloads a production deployment runs, generalized.
143
+ - [Schedules](https://shareddata.net/docs/scheduler-store/) and [batch jobs](https://shareddata.net/docs/job-store/): where the state lives.
144
+
145
+ ## Data by symbol
146
+
147
+ The [semantic data API](https://shareddata.net/docs/data-api/) resolves a
148
+ symbol or entity to a dataset and includes provenance. It is a convenience,
149
+ not the fast path: producers keep using direct container interfaces for
150
+ performance-critical work.
151
+
152
+ ## Client integration
153
+
154
+ [Client integration](https://shareddata.net/docs/ecosystem/) covers
155
+ authenticated API access, the MCP server for compatible agent clients, and
156
+ worker access.
157
+
158
+ ## Development and license
159
+
160
+ Submit changes through the repository's review process. Read the
161
+ [development guide](https://shareddata.net/docs/DEVELOPMENT/) and run the
162
+ checks relevant to your change; [building and publishing](https://shareddata.net/docs/guide/building/)
163
+ explains how the public site is produced and audited. SharedData is released
164
+ under the MIT license; see `LICENSE` in the source distribution.