shareddata 6.85.14__tar.gz → 6.85.17__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 (188) hide show
  1. {shareddata-6.85.14/src/shareddata.egg-info → shareddata-6.85.17}/PKG-INFO +1 -1
  2. {shareddata-6.85.14 → shareddata-6.85.17}/setup.py +1 -1
  3. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Routines/JobStore.py +2 -2
  4. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Routines/WorkerLib.py +571 -216
  5. shareddata-6.85.17/src/SharedData/Web/mongo_view.py +399 -0
  6. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/proc.py +86 -9
  7. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/standalone.py +2 -1
  8. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/static/standalone.css +18 -3
  9. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/static/standalone.js +120 -24
  10. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/templates/standalone.html +3 -2
  11. {shareddata-6.85.14 → shareddata-6.85.17/src/shareddata.egg-info}/PKG-INFO +1 -1
  12. shareddata-6.85.14/src/SharedData/Web/mongo_view.py +0 -125
  13. {shareddata-6.85.14 → shareddata-6.85.17}/LICENSE +0 -0
  14. {shareddata-6.85.14 → shareddata-6.85.17}/MANIFEST.in +0 -0
  15. {shareddata-6.85.14 → shareddata-6.85.17}/README.md +0 -0
  16. {shareddata-6.85.14 → shareddata-6.85.17}/pyproject.toml +0 -0
  17. {shareddata-6.85.14 → shareddata-6.85.17}/setup.cfg +0 -0
  18. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/API/ServerGunicorn.py +0 -0
  19. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/API/ServerWaitress.py +0 -0
  20. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/API/__init__.py +0 -0
  21. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/API/apidocs-dark.css +0 -0
  22. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/API/apidocs.yml +0 -0
  23. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/API/auth.py +0 -0
  24. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/API/constants.py +0 -0
  25. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/API/download_paths.py +0 -0
  26. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/API/download_slots.py +0 -0
  27. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/API/install/worker.ps1 +0 -0
  28. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/API/install/worker.sh +0 -0
  29. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/API/listcache.py +0 -0
  30. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/API/routes/__init__.py +0 -0
  31. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/API/routes/cache.py +0 -0
  32. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/API/routes/collections.py +0 -0
  33. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/API/routes/data.py +0 -0
  34. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/API/routes/downloads.py +0 -0
  35. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/API/routes/metadata.py +0 -0
  36. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/API/routes/operations.py +0 -0
  37. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/API/routes/schedules.py +0 -0
  38. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/API/routes/sqlite.py +0 -0
  39. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/API/routes/system.py +0 -0
  40. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/API/routes/tables.py +0 -0
  41. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/API/routes/timeseries.py +0 -0
  42. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/API/routes/web_routes.py +0 -0
  43. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/API/routes/workers.py +0 -0
  44. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/API/utils.py +0 -0
  45. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Auth/__init__.py +0 -0
  46. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Auth/bootstrap.py +0 -0
  47. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Auth/migrate.py +0 -0
  48. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Auth/store.py +0 -0
  49. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Auth/workers.py +0 -0
  50. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/CacheRedis.py +0 -0
  51. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/CollectionMongoDB.py +0 -0
  52. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/DataAPI/__init__.py +0 -0
  53. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/DataAPI/catalog.py +0 -0
  54. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/DataAPI/config.py +0 -0
  55. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/DataAPI/errors.py +0 -0
  56. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/DataAPI/indexes.py +0 -0
  57. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/DataAPI/readers.py +0 -0
  58. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/DataAPI/resolve.py +0 -0
  59. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/DataAPI/service.py +0 -0
  60. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Database.py +0 -0
  61. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Defaults.py +0 -0
  62. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/IO/AWSEC2.py +0 -0
  63. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/IO/AWSS3.py +0 -0
  64. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/IO/AutoDocstrings.py +0 -0
  65. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/IO/ClientAPI.py +0 -0
  66. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/IO/ClientSocket.py +0 -0
  67. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/IO/ClientWebSocket.py +0 -0
  68. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/IO/LogHandlerAPI.py +0 -0
  69. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/IO/LogReader.py +0 -0
  70. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/IO/MongoDBClient.py +0 -0
  71. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/IO/SaveTables.py +0 -0
  72. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/IO/ServerSocket.py +0 -0
  73. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/IO/ServerWebSocket.py +0 -0
  74. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/IO/StreamsCache.py +0 -0
  75. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/IO/StreamsPersist.py +0 -0
  76. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/IO/SyncTable.py +0 -0
  77. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/IO/TunnelWebSocket.py +0 -0
  78. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/IO/__init__.py +0 -0
  79. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Listing.py +0 -0
  80. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/LockWaiters.py +0 -0
  81. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Logger.py +0 -0
  82. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/MCP/__init__.py +0 -0
  83. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/MCP/__main__.py +0 -0
  84. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/MCP/client.py +0 -0
  85. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/MCP/server.py +0 -0
  86. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Metadata.py +0 -0
  87. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/MultiProc.py +0 -0
  88. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/OpenFIGI.py +0 -0
  89. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Redaction.py +0 -0
  90. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Routines/ArchiveOldCollections.py +0 -0
  91. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Routines/BatchJob.py +0 -0
  92. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Routines/ContainerHealth.py +0 -0
  93. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Routines/RoutineCommand.py +0 -0
  94. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Routines/RoutineOrigin.py +0 -0
  95. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Routines/Schedule.py +0 -0
  96. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Routines/ScheduleMirror.py +0 -0
  97. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Routines/ScheduleMonitor.py +0 -0
  98. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Routines/ScheduleStore.py +0 -0
  99. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Routines/Scheduler.py +0 -0
  100. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Routines/UpdateActiveJobs.py +0 -0
  101. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Routines/Worker.py +0 -0
  102. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Routines/WorkerBootstrap.py +0 -0
  103. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Routines/WorkerPool.py +0 -0
  104. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Routines/__init__.py +0 -0
  105. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/SQLite.py +0 -0
  106. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/SharedData.py +0 -0
  107. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/SharedNumpy.py +0 -0
  108. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/StreamKafka.py +0 -0
  109. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Symbol.py +0 -0
  110. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Table.py +0 -0
  111. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/TableDisk.py +0 -0
  112. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/TableIndex.py +0 -0
  113. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/TableIndexJitFunctions.py +0 -0
  114. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/TableIndexJitFunctionsManual.py +0 -0
  115. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/TableIndexJitGenerate.py +0 -0
  116. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/TableIndexJitHash.py +0 -0
  117. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/TableIndexJitLoc.py +0 -0
  118. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/TableProtocol.py +0 -0
  119. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/TableRead.py +0 -0
  120. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/TableRewrite.py +0 -0
  121. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/TimeSeriesDisk.py +0 -0
  122. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/TimeseriesContainer.py +0 -0
  123. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Users.py +0 -0
  124. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Utils.py +0 -0
  125. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/ADDING_A_PAGE.md +0 -0
  126. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/__init__.py +0 -0
  127. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/activity_logger.py +0 -0
  128. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/app.py +0 -0
  129. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/assets/dashAgGridComponentFunctions.js +0 -0
  130. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/assets/dashAgGridFunctions.js +0 -0
  131. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/assets/google_logo.png +0 -0
  132. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/assets/kafka_keys.js +0 -0
  133. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/assets/logs.css +0 -0
  134. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/assets/sched.css +0 -0
  135. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/assets/styles.css +0 -0
  136. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/auth.py +0 -0
  137. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/backends.py +0 -0
  138. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/config.py +0 -0
  139. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/containers.py +0 -0
  140. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/identity.py +0 -0
  141. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/kafka_view.py +0 -0
  142. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/redis_view.py +0 -0
  143. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/route_health.py +0 -0
  144. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/route_registry.py +0 -0
  145. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/sched.py +0 -0
  146. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/schedule_editor.py +0 -0
  147. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/server.py +0 -0
  148. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/services.py +0 -0
  149. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/shell.py +0 -0
  150. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/static/account.js +0 -0
  151. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/static/custom.css +0 -0
  152. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/static/favicon.ico +0 -0
  153. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/static/favicon.png +0 -0
  154. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/static/logo.png +0 -0
  155. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/static/logo_96x96.png +0 -0
  156. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/static/shareddata-mark.svg +0 -0
  157. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/static/shell.css +0 -0
  158. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/static/shell.js +0 -0
  159. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/suggest.py +0 -0
  160. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/templates/account.html +0 -0
  161. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/templates/base.html +0 -0
  162. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/templates/claim.html +0 -0
  163. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/templates/claim_done.html +0 -0
  164. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/templates/dash.html +0 -0
  165. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/templates/index.html +0 -0
  166. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/templates/login.html +0 -0
  167. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/templates/login_2fa.html +0 -0
  168. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/templates/partials/navbar.html +0 -0
  169. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/templates/partials/scripts.html +0 -0
  170. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/templates/recovery_codes.html +0 -0
  171. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/templates/shell.html +0 -0
  172. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/twofactor.py +0 -0
  173. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/utils.py +0 -0
  174. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/Web/workerpool.py +0 -0
  175. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/__init__.py +0 -0
  176. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/build_info.py +0 -0
  177. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/fleet.py +0 -0
  178. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/preflight.py +0 -0
  179. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/private_files.py +0 -0
  180. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/release_backup.py +0 -0
  181. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/server.py +0 -0
  182. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/services.py +0 -0
  183. {shareddata-6.85.14 → shareddata-6.85.17}/src/SharedData/sharedmutexwin.pyd +0 -0
  184. {shareddata-6.85.14 → shareddata-6.85.17}/src/shareddata.egg-info/SOURCES.txt +0 -0
  185. {shareddata-6.85.14 → shareddata-6.85.17}/src/shareddata.egg-info/dependency_links.txt +0 -0
  186. {shareddata-6.85.14 → shareddata-6.85.17}/src/shareddata.egg-info/entry_points.txt +0 -0
  187. {shareddata-6.85.14 → shareddata-6.85.17}/src/shareddata.egg-info/requires.txt +0 -0
  188. {shareddata-6.85.14 → shareddata-6.85.17}/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.14
3
+ Version: 6.85.17
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.14',
69
+ version='6.85.17',
70
70
  description='Memory Mapped / Shared Memory Database with S3 repository',
71
71
  author='shareddata',
72
72
  author_email='admin@shareddata.net',
@@ -285,7 +285,7 @@ def active(now=None):
285
285
 
286
286
 
287
287
  # What a list of jobs can be grouped by: the columns (SQL) that make a group, by name.
288
- GROUPS = {'time': ('minute', 'repo', 'branch', 'routine'), 'routine': ('repo', 'branch', 'routine'), 'status': ('status',), 'computer': ('computer',)}
288
+ GROUPS = {'time': ('minute', 'repo', 'branch', 'routine'), 'routine': ('repo', 'branch', 'routine'), 'repo': ('repo',), 'status': ('status',), 'computer': ('computer',)}
289
289
  _GROUP_SQL = {'minute': 'substr(date, 1, 16)', 'repo': "COALESCE(repo, '')", 'branch': "COALESCE(branch, '')", 'routine': "COALESCE(routine, '')",
290
290
  'status': 'status', 'computer': "COALESCE(target, computer, '')"}
291
291
 
@@ -333,7 +333,7 @@ def find(month=None, statuses=None, text=None, limit=200, offset=0, now=None, gr
333
333
 
334
334
  def groups(by='time', month=None, statuses=None, text=None, limit=500, now=None):
335
335
  """The groups of a list without their jobs: how many jobs of each status every group has.
336
- by: 'time' (the minute a job is due, with its routine), 'routine', 'status' or 'computer'.
336
+ by: 'time' (the minute a job is due, with its routine), 'routine', 'repo', 'status' or 'computer'.
337
337
  -> {'groups': [{'key': {...}, 'counts': {status: n}, 'total': n}], 'groups_total': n,
338
338
  'total': n, 'counts': {status: n}, 'months': [...]}; oldest minute first, then by name."""
339
339
  if by not in GROUPS: