marpledata 3.0.0.dev0__tar.gz → 3.0.1__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 (355) hide show
  1. {marpledata-3.0.0.dev0 → marpledata-3.0.1}/.gitignore +6 -0
  2. marpledata-3.0.1/.uv-cache/.gitignore +1 -0
  3. marpledata-3.0.0.dev0/src/marple/py.typed → marpledata-3.0.1/.uv-cache/.lock +0 -0
  4. marpledata-3.0.1/.uv-cache/CACHEDIR.TAG +1 -0
  5. marpledata-3.0.1/.uv-cache/interpreter-v4/c2c2931c8a99aae1/588e1e7c128e2872.msgpack +0 -0
  6. marpledata-3.0.1/.uv-cache/sdists-v9/.git +0 -0
  7. marpledata-3.0.1/.uv-cache/sdists-v9/.gitignore +0 -0
  8. {marpledata-3.0.0.dev0 → marpledata-3.0.1}/CONTRIBUTING.md +14 -2
  9. {marpledata-3.0.0.dev0 → marpledata-3.0.1}/PKG-INFO +84 -16
  10. marpledata-3.0.1/README.md +178 -0
  11. marpledata-3.0.1/docs/DEPLOYMENT.md +24 -0
  12. marpledata-3.0.1/docs/_static/custom.css +4 -0
  13. marpledata-3.0.1/docs/_static/favicon.png +0 -0
  14. marpledata-3.0.1/docs/_static/logo.png +0 -0
  15. marpledata-3.0.1/docs/api/db.rst +12 -0
  16. marpledata-3.0.1/docs/api/insight.rst +8 -0
  17. marpledata-3.0.1/docs/api.rst +8 -0
  18. marpledata-3.0.1/docs/conf.py +128 -0
  19. marpledata-3.0.1/docs/getting-started.rst +54 -0
  20. marpledata-3.0.1/docs/index.rst +12 -0
  21. marpledata-3.0.1/docs/tutorials.rst +46 -0
  22. {marpledata-3.0.0.dev0 → marpledata-3.0.1}/example.py +22 -23
  23. {marpledata-3.0.0.dev0 → marpledata-3.0.1}/pyproject.toml +8 -2
  24. marpledata-3.0.1/src/marple/__init__.py +6 -0
  25. {marpledata-3.0.0.dev0 → marpledata-3.0.1}/src/marple/db/__init__.py +276 -169
  26. {marpledata-3.0.0.dev0 → marpledata-3.0.1}/src/marple/db/constants.py +2 -0
  27. marpledata-3.0.1/src/marple/db/dataset.py +512 -0
  28. marpledata-3.0.1/src/marple/db/datastream.py +89 -0
  29. marpledata-3.0.1/src/marple/db/signal.py +81 -0
  30. {marpledata-3.0.0.dev0 → marpledata-3.0.1}/src/marple/insight.py +42 -15
  31. marpledata-3.0.1/src/marple/py.typed +0 -0
  32. marpledata-3.0.1/src/marple/utils.py +141 -0
  33. {marpledata-3.0.0.dev0 → marpledata-3.0.1}/tests/test_sdk.py +72 -111
  34. {marpledata-3.0.0.dev0 → marpledata-3.0.1}/uv.lock +360 -1
  35. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26570/signal=210048/mdb_019c43c1ebce7e11b435f8d52748acf7.parquet +0 -0
  36. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26570/signal=210049/mdb_019c43c1ebcb7741ae849d66acd413d1.parquet +0 -0
  37. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26570/signal=210052/mdb_019c43c1ebd278539d848a29d05dc395.parquet +0 -0
  38. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26570/signal=210056/mdb_019c43c1ec617b408800519e2c4beb16.parquet +0 -0
  39. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26570/signal=210058/mdb_019c43c1ec957c62a54a12229f52182c.parquet +0 -0
  40. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26572/signal=210051/mdb_019c43c2497e711095999e2705ab1dfb.parquet +0 -0
  41. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26574/signal=210052/mdb_019c4405a89778a1b468b7e37800cf70.parquet +0 -0
  42. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26574/signal=210056/mdb_019c4405a93d7623a46729699752a73f.parquet +0 -0
  43. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26574/signal=210057/mdb_019c4405a94a74b28567dc37d530ff78.parquet +0 -0
  44. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26574/signal=210058/mdb_019c4405a9607242a4a399fa63621da6.parquet +0 -0
  45. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26574/signal=210059/mdb_019c4405a9637fe1a0299efe98f8f1f4.parquet +0 -0
  46. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26584/signal=210050/mdb_019c4406aaa67453afd4545924e6a44f.parquet +0 -0
  47. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26590/signal=210046/mdb_019c46ab27ae78e3bb3f61dd0cb7d269.parquet +0 -0
  48. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26590/signal=210050/mdb_019c46ab27b17e41ad16e7be8db27871.parquet +0 -0
  49. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26590/signal=210057/mdb_019c46ab28617f82a0590ded50bec9eb.parquet +0 -0
  50. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26590/signal=210058/mdb_019c46ab286f70a3abec3e9e732eeaa3.parquet +0 -0
  51. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26590/signal=210060/mdb_019c46ab28897253bb08c87c834d0998.parquet +0 -0
  52. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26600/signal=210052/mdb_019c46ac123f7b42a56bcf59136290e5.parquet +0 -0
  53. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=395/signal=7431/mdb_019c437664237a33b1a18f053a9864ed.parquet +0 -0
  54. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=395/signal=7434/mdb_019c4376642578c283e6799e27e5269b.parquet +0 -0
  55. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=395/signal=7435/mdb_019c4376642578c283e6798d55eaaa66.parquet +0 -0
  56. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=395/signal=7437/mdb_019c437664877110af469c3e82f8e688.parquet +0 -0
  57. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=395/signal=7440/mdb_019c437664bd7a10bf1e93bdd2f0d7f9.parquet +0 -0
  58. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=397/signal=7429/mdb_019c4376738e768395724fc867b28b37.parquet +0 -0
  59. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=397/signal=7429/test.py +0 -17
  60. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=399/signal=7430/mdb_019c43c0eaff77f1bc1d7165b9617be6.parquet +0 -0
  61. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=399/signal=7436/mdb_019c43c0eb027f4089aa5259bfa65974.parquet +0 -0
  62. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=399/signal=7439/mdb_019c43c0ebab76e181e32df35adb4ef1.parquet +0 -0
  63. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=399/signal=7441/mdb_019c43c0ebc97810b720617e79ece6a8.parquet +0 -0
  64. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=399/signal=7443/mdb_019c43c0ebf371b3af252f621e5077d9.parquet +0 -0
  65. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=401/signal=7442/mdb_019c43c0fbc77bf3a9b6820a13ba17d3.parquet +0 -0
  66. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=430/signal=7431/mdb_019c46fd80797dd296f1ef5c17e13b40.parquet +0 -0
  67. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=431/signal=7431/mdb_019c46fd815579e28c3acd86fdc0720c.parquet +0 -0
  68. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=440/signal=7431/mdb_019c46fdea5f74718ab1339de3f9340a.parquet +0 -0
  69. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=441/signal=7431/mdb_019c46fdef297463b7ed866fa7247ee5.parquet +0 -0
  70. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=450/signal=7431/mdb_019c46ff7e0072c18dbb9a047be156f5.parquet +0 -0
  71. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=451/signal=7431/mdb_019c46ff83277c7196ee6d278dd0a3f2.parquet +0 -0
  72. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=460/signal=7431/mdb_019c4700e7bc7531ab077c984295cb49.parquet +0 -0
  73. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=461/signal=7431/mdb_019c4700e84474a1a7af8ffa44c3d0cf.parquet +0 -0
  74. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=470/signal=7431/mdb_019c47018c7f7cc28d440bdbf434a877.parquet +0 -0
  75. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=471/signal=7431/mdb_019c47018cd57f0191b62e59ccc55024.parquet +0 -0
  76. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=480/signal=7431/mdb_019c4702aebd72909d218465fbdeeafb.parquet +0 -0
  77. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=481/signal=7431/mdb_019c4702af807f30a730043f6700d78c.parquet +0 -0
  78. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=490/signal=7431/mdb_019c4703245b7d608cab402c47c2786e.parquet +0 -0
  79. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=491/signal=7431/mdb_019c4703250d7eb28509c3db7058e9d5.parquet +0 -0
  80. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=500/signal=7431/mdb_019c47039e5f70a381ae82b10fe0e1a4.parquet +0 -0
  81. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=501/signal=7431/mdb_019c47039f0e7ee288bebd3d4c99df24.parquet +0 -0
  82. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=510/signal=7431/mdb_019c47044e5a74019295a4f610986832.parquet +0 -0
  83. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=511/signal=7431/mdb_019c4704535370b2b97edcd57543fdad.parquet +0 -0
  84. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=520/signal=7431/mdb_019c4705b3f57a72bdb50db3bc615759.parquet +0 -0
  85. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=521/signal=7431/mdb_019c4705b8517312a7ef2e52190135a4.parquet +0 -0
  86. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=530/signal=7431/mdb_019c4705dad67ce18030708aae48e070.parquet +0 -0
  87. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=531/signal=7431/mdb_019c4705e0067a51b171814f29672134.parquet +0 -0
  88. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=540/signal=7431/mdb_019c470626157a609f21dbe9d1266a15.parquet +0 -0
  89. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=541/signal=7431/mdb_019c47062b437bf1a4c129ad6d566630.parquet +0 -0
  90. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=550/signal=7431/mdb_019c47064acd7e31b5e27b244694289c.parquet +0 -0
  91. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=551/signal=7431/mdb_019c47064b9e7693a641426187203033.parquet +0 -0
  92. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=560/signal=7431/mdb_019c4707779374f3a3e93f5aa6e75645.parquet +0 -0
  93. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=561/signal=7431/mdb_019c47077c7e7dd1a7d13c0555890436.parquet +0 -0
  94. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=570/signal=7431/mdb_019c470819327dd38732f1f6aa0cf41e.parquet +0 -0
  95. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=571/signal=7431/mdb_019c47081a327863a83c62a57a7798b9.parquet +0 -0
  96. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=580/signal=7431/mdb_019c4708f0c87a2090e9cfb134718319.parquet +0 -0
  97. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=581/signal=7431/mdb_019c4708f16977b38ef79888598a889c.parquet +0 -0
  98. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=600/signal=7436/mdb_019c4758f4367bc180389d09c90db6b8.parquet +0 -0
  99. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=600/signal=7441/mdb_019c4758f4f077e3862839043418528a.parquet +0 -0
  100. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=601/signal=7436/mdb_019c4758f4f07e02b0d43536b6ee6258.parquet +0 -0
  101. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=601/signal=7441/mdb_019c4758f5d27d71996d95d0a6bc1525.parquet +0 -0
  102. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=602/signal=7429/mdb_019c4758fca07e7290ae1e96a4500a8d.parquet +0 -0
  103. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=602/signal=7430/mdb_019c4758fca07e7290ae1e80abb44620.parquet +0 -0
  104. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=602/signal=7436/mdb_019c4758fca17441ade1a5ec337b7c5f.parquet +0 -0
  105. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=602/signal=7439/mdb_019c4758fd0f74408842121bdd0413c2.parquet +0 -0
  106. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=602/signal=7441/mdb_019c4758fd387d60a8724f9a304c3f7c.parquet +0 -0
  107. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=618/signal=7435/mdb_019c47602e8971f1923b2c3369faee6b.parquet +0 -0
  108. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=618/signal=7443/mdb_019c47602f717643a7f321b4526d043d.parquet +0 -0
  109. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=619/signal=7435/mdb_019c47602f607063827e550834c1f9d6.parquet +0 -0
  110. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=619/signal=7443/mdb_019c4760306b7bc38b097cf5255b3d29.parquet +0 -0
  111. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=620/signal=7429/mdb_019c476037b07163bc8d9818102bc730.parquet +0 -0
  112. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=620/signal=7435/mdb_019c476037b277409f01d660f9c28e81.parquet +0 -0
  113. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=620/signal=7439/mdb_019c4760383e70c1ab842f96d466343c.parquet +0 -0
  114. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=620/signal=7441/mdb_019c4760385270f399e6d38fbe652e08.parquet +0 -0
  115. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=620/signal=7443/mdb_019c4760386073d1871f41d6d16f6671.parquet +0 -0
  116. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=626/signal=7430/mdb_019c4760807c7f5385b910a66229b58e.parquet +0 -0
  117. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=626/signal=7440/mdb_019c4760813775d1ac81aa513c2f9b2b.parquet +0 -0
  118. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=627/signal=7430/mdb_019c4760811571f3b0189772f652050c.parquet +0 -0
  119. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=627/signal=7440/mdb_019c476082167142a03bd3b63c13abee.parquet +0 -0
  120. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=628/signal=7430/mdb_019c476089b177e09a3824345a58e470.parquet +0 -0
  121. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=628/signal=7434/mdb_019c476089b279f282c507099db5a95d.parquet +0 -0
  122. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=628/signal=7437/mdb_019c47608a0572b1bd7d3d841ab0a095.parquet +0 -0
  123. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=628/signal=7440/mdb_019c47608a3b7e539ef65a63f3f29717.parquet +0 -0
  124. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=628/signal=7443/mdb_019c47608a5672c0bc1124f2c83e1f6b.parquet +0 -0
  125. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=634/signal=7432/mdb_019c4762765f780088150e950c5d3eb9.parquet +0 -0
  126. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=634/signal=7435/mdb_019c4762765e7c60b62bc7033665bb58.parquet +0 -0
  127. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=634/signal=7436/mdb_019c4762765f780088150ea9afd9b538.parquet +0 -0
  128. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=634/signal=7440/mdb_019c476277057ba397e244b5c633648c.parquet +0 -0
  129. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=634/signal=7442/mdb_019c4762771d7e81bd537986115019ed.parquet +0 -0
  130. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=635/signal=7435/mdb_019c4762773e769180d19c539952c5b2.parquet +0 -0
  131. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=635/signal=7436/mdb_019c4762773d7a708aa731dbf68762e4.parquet +0 -0
  132. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=636/signal=7435/mdb_019c4762801b78c3962ce8e6aa7d69ea.parquet +0 -0
  133. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=636/signal=7436/mdb_019c4762801b78c3962ce8d6592a1e5f.parquet +0 -0
  134. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=642/signal=7430/mdb_019c4764e64a7453981bafd3eeb44223.parquet +0 -0
  135. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=642/signal=7441/mdb_019c4764e6fc73b39061ccb8748738eb.parquet +0 -0
  136. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=643/signal=7429/mdb_019c4764e71e7c93932070444c48b696.parquet +0 -0
  137. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=643/signal=7430/mdb_019c4764e71f7422bdfe9d2d5950f972.parquet +0 -0
  138. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=643/signal=7432/mdb_019c4764e7207c50ba0f00eb90057191.parquet +0 -0
  139. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=643/signal=7439/mdb_019c4764e7f9780189518cfffc4ed591.parquet +0 -0
  140. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=643/signal=7441/mdb_019c4764e819792085069106c067f5e9.parquet +0 -0
  141. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=644/signal=7430/mdb_019c4764ef687fb2a134d3f9340ee0a3.parquet +0 -0
  142. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=644/signal=7441/mdb_019c4764f00874a3bd4e27a86bba1a1d.parquet +0 -0
  143. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=650/signal=7434/mdb_019c47661f3f77a290620f01f6a6df5b.parquet +0 -0
  144. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=650/signal=7440/mdb_019c47661ffe79139754bf28b66b893e.parquet +0 -0
  145. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=651/signal=7430/mdb_019c4766203e7bc29e3112a07c12ce46.parquet +0 -0
  146. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=651/signal=7434/mdb_019c4766204076d1ab809cce93676293.parquet +0 -0
  147. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=651/signal=7439/mdb_019c476621077570a2b1681cbd2c5bfb.parquet +0 -0
  148. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=651/signal=7440/mdb_019c4766210c76a1bc4b2e9bc7a210dd.parquet +0 -0
  149. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=651/signal=7443/mdb_019c4766213375c2b4c103dc2309baca.parquet +0 -0
  150. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=652/signal=7434/mdb_019c476628d57862ac956ffccf82b3a8.parquet +0 -0
  151. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=652/signal=7440/mdb_019c476629857133ac6210053695b4ee.parquet +0 -0
  152. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=658/signal=7433/mdb_019c4766f6d37eb0beccc9b6dededaba.parquet +0 -0
  153. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=658/signal=7434/mdb_019c4766f6d47763a19357b66b7ae19a.parquet +0 -0
  154. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=658/signal=7436/mdb_019c4766f6d47763a1935798d3094d05.parquet +0 -0
  155. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=658/signal=7440/mdb_019c4766f755751089a1c813e4f569fa.parquet +0 -0
  156. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=658/signal=7442/mdb_019c4766f8437783bfb998c6b2ffb38b.parquet +0 -0
  157. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=659/signal=7433/mdb_019c4766f7a176a2b697eec9c49826b8.parquet +0 -0
  158. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=659/signal=7436/mdb_019c4766f79e71a2a7afa7a566de6397.parquet +0 -0
  159. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=660/signal=7433/mdb_019c4766ff967b918139a58ab13b097a.parquet +0 -0
  160. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=660/signal=7436/mdb_019c4766ff967b918139a56ce1207a34.parquet +0 -0
  161. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=666/signal=7429/mdb_019c4767d2a772429a09d6e8b18baa55.parquet +0 -0
  162. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=666/signal=7433/mdb_019c4767d2a879718c08cd0c68c408cf.parquet +0 -0
  163. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=667/signal=7429/mdb_019c4767d35e76b2b4cd2dd8d0b24994.parquet +0 -0
  164. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=667/signal=7433/mdb_019c4767d3607753a0dc305e7b66060e.parquet +0 -0
  165. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=668/signal=7429/mdb_019c4767db287460923e75032f65a669.parquet +0 -0
  166. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=668/signal=7432/mdb_019c4767db297792ab5e16ebc18c733f.parquet +0 -0
  167. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=668/signal=7433/mdb_019c4767db287460923e753be61865ea.parquet +0 -0
  168. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=668/signal=7434/mdb_019c4767db297792ab5e16fdacc6cdf8.parquet +0 -0
  169. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=668/signal=7439/mdb_019c4767dbc17c218a4de03cd8bf0a6a.parquet +0 -0
  170. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=674/signal=7429/mdb_019c47686fd67340b5b91acfdc6e5c18.parquet +0 -0
  171. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=674/signal=7434/mdb_019c47686fd779608a3a258048f2aefc.parquet +0 -0
  172. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=674/signal=7436/mdb_019c47686fd779608a3a25a13c3631f1.parquet +0 -0
  173. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=674/signal=7439/mdb_019c4768706b719087d2ef6edf52ad71.parquet +0 -0
  174. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=674/signal=7443/mdb_019c4768716878a296c7104690e04e27.parquet +0 -0
  175. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=675/signal=7429/mdb_019c476870e177e1b209ba609e8aeeea.parquet +0 -0
  176. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=675/signal=7443/mdb_019c476872da7af1b9076211f0b73aa1.parquet +0 -0
  177. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=676/signal=7429/mdb_019c476879c3758083ca942d6c668d3d.parquet +0 -0
  178. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=676/signal=7443/mdb_019c47687b4f7ef0b73f9de288973e0d.parquet +0 -0
  179. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=682/signal=7431/mdb_019c4777cdc072f388a73c1cf2b709f2.parquet +0 -0
  180. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=682/signal=7434/mdb_019c4777cdc17ba2b934b348027068d5.parquet +0 -0
  181. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=682/signal=7437/mdb_019c4777ce207340ae80286b29076e94.parquet +0 -0
  182. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=682/signal=7442/mdb_019c4777cf7878b3b2fe2c52c37fe20f.parquet +0 -0
  183. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=682/signal=7443/mdb_019c4777cf7878b3b2fe2c6757fdb7bf.parquet +0 -0
  184. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=683/signal=7434/mdb_019c4777ce9d7430a70c2e5af3c8382e.parquet +0 -0
  185. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=683/signal=7442/mdb_019c4777d0477730b835a7aceb1a5bd9.parquet +0 -0
  186. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=684/signal=7434/mdb_019c4777d6077b13aea1b4027adf7cf9.parquet +0 -0
  187. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=684/signal=7442/mdb_019c4777d7617452aeac495b7909c695.parquet +0 -0
  188. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=690/signal=7436/mdb_019c47784ff674f281706d0f2ff0a4f2.parquet +0 -0
  189. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=690/signal=7437/mdb_019c477850497521b29f17277b4a444c.parquet +0 -0
  190. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=691/signal=7436/mdb_019c477850f87c108c7ea74a11278aef.parquet +0 -0
  191. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=691/signal=7437/mdb_019c4778514975518320b4067da3e1a8.parquet +0 -0
  192. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=692/signal=7432/mdb_019c4778587d71c08bc508dbb84802a5.parquet +0 -0
  193. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=692/signal=7435/mdb_019c4778587d71c08bc508af1a3ab27f.parquet +0 -0
  194. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=692/signal=7436/mdb_019c4778587e7860bbc269e9c64197a8.parquet +0 -0
  195. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=692/signal=7437/mdb_019c477858c27d82935b9944596aacca.parquet +0 -0
  196. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=692/signal=7439/mdb_019c477858fc73d0b9170228d11abb43.parquet +0 -0
  197. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=698/signal=7433/mdb_019c477b80247db099382901f14d3c70.parquet +0 -0
  198. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=698/signal=7443/mdb_019c477b82027660a13812fed5751753.parquet +0 -0
  199. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=699/signal=7431/mdb_019c477b7f2c7d308c67800e7c73e621.parquet +0 -0
  200. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=699/signal=7433/mdb_019c477b7f2d7091802411bbcc273368.parquet +0 -0
  201. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=699/signal=7435/mdb_019c477b7f2d7091802411ecf8d76293.parquet +0 -0
  202. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=699/signal=7436/mdb_019c477b7f2d7091802411c45e77b96c.parquet +0 -0
  203. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=699/signal=7443/mdb_019c477b80b178d190150a5f00e1754c.parquet +0 -0
  204. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=700/signal=7433/mdb_019c477b88e976109d8c3dd40308d299.parquet +0 -0
  205. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=700/signal=7443/mdb_019c477b8a747641af0e1a9440f9f64c.parquet +0 -0
  206. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=708/signal=7431/mdb_019c477ce0997bf1a349533cd768a0e3.parquet +0 -0
  207. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=708/signal=7438/mdb_019c477ce1d479c29b9c80ea72073518.parquet +0 -0
  208. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=709/signal=7431/mdb_019c477ce54c7343b453d25ad9436f54.parquet +0 -0
  209. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=709/signal=7438/mdb_019c477ce69873e3a5f649fd91d6c087.parquet +0 -0
  210. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=710/signal=7431/mdb_019c477ce8957c63994de3eaa2522095.parquet +0 -0
  211. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=710/signal=7435/mdb_019c477ce8967c73bcae4d273374f9bb.parquet +0 -0
  212. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=710/signal=7436/mdb_019c477ce8977db295f827f96b6ec929.parquet +0 -0
  213. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=710/signal=7438/mdb_019c477ce9e27040870709bdb48d73cf.parquet +0 -0
  214. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=710/signal=7441/mdb_019c477cea2c7cb3ae3796092d8f0b32.parquet +0 -0
  215. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=718/signal=7438/mdb_019c477de4897491ac761859147db72c.parquet +0 -0
  216. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=718/signal=7440/mdb_019c477de4997702b1c7fa8e263092a3.parquet +0 -0
  217. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=719/signal=7430/mdb_019c477de4037a7298d755fbf0c7cfc6.parquet +0 -0
  218. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=719/signal=7432/mdb_019c477de4047a11befde5c24b1f3c17.parquet +0 -0
  219. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=719/signal=7438/mdb_019c477de59e76919914ac93f8a12234.parquet +0 -0
  220. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=719/signal=7440/mdb_019c477de5aa7631853432385a1331b2.parquet +0 -0
  221. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=719/signal=7442/mdb_019c477de5d976a08691ce3a0ef2647e.parquet +0 -0
  222. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=720/signal=7438/mdb_019c477dee0670f1a50fb308ab4c8d33.parquet +0 -0
  223. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=720/signal=7440/mdb_019c477dee177551b90097eebf7efd28.parquet +0 -0
  224. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=728/signal=7436/mdb_019c477e7c9d7d13ada306270548dd4c.parquet +0 -0
  225. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=728/signal=7442/mdb_019c477e7e177b30bc71e64d509ff222.parquet +0 -0
  226. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=729/signal=7429/mdb_019c477e7d607fe286367d8e760cfb31.parquet +0 -0
  227. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=729/signal=7431/mdb_019c477e7d6170709693f8ee47156f3c.parquet +0 -0
  228. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=729/signal=7436/mdb_019c477e7d6170709693f913410bee93.parquet +0 -0
  229. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=729/signal=7439/mdb_019c477e7eea7d63b6c6bf62afb3e63e.parquet +0 -0
  230. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=729/signal=7442/mdb_019c477e7f0877a0badecb49044e99c6.parquet +0 -0
  231. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=730/signal=7436/mdb_019c477e85ff7303ba60cd2f7b2207a3.parquet +0 -0
  232. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=730/signal=7442/mdb_019c477e87467a42b38d4fb8ae4a9b5a.parquet +0 -0
  233. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=738/signal=7429/mdb_019c477f50db73c38c920b77fd658cf7.parquet +0 -0
  234. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=738/signal=7432/mdb_019c477f50dc7b018046ae436d0a06c2.parquet +0 -0
  235. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=738/signal=7433/mdb_019c477f50dd7712b0c49c1496b858cf.parquet +0 -0
  236. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=738/signal=7435/mdb_019c477f50dc7b018046ae1c055696b0.parquet +0 -0
  237. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=738/signal=7439/mdb_019c477f5262727184b6a1a44c50d96f.parquet +0 -0
  238. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=739/signal=7433/mdb_019c477f502576008d34e4aabc8acd69.parquet +0 -0
  239. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=739/signal=7435/mdb_019c477f50267bf0a81b5cee6e3a695d.parquet +0 -0
  240. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=740/signal=7433/mdb_019c477f59927bf09768579a824bf9b1.parquet +0 -0
  241. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=740/signal=7435/mdb_019c477f59937d019c4beca464c4f827.parquet +0 -0
  242. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=748/signal=7429/mdb_019c4780632579519e8ddaa280b1b8f1.parquet +0 -0
  243. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=748/signal=7432/mdb_019c478063277d9384f4569f742cd8c7.parquet +0 -0
  244. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=748/signal=7437/mdb_019c4780643b77d18d2d25922703d522.parquet +0 -0
  245. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=748/signal=7438/mdb_019c4780644d7743b4591259dd8a0b2b.parquet +0 -0
  246. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=748/signal=7443/mdb_019c4780648879008a0336fad5510082.parquet +0 -0
  247. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=749/signal=7438/mdb_019c4780658c708398214a82e8e3741a.parquet +0 -0
  248. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=749/signal=7443/mdb_019c478065ba76208453c0cc8a4db391.parquet +0 -0
  249. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=750/signal=7438/mdb_019c47806d347f61b3f5ca58c7cc6e58.parquet +0 -0
  250. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=750/signal=7443/mdb_019c47806d677df2a2389aa418638b7b.parquet +0 -0
  251. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=760/signal=7440/mdb_019c47814b9f7ee1aec52d784b8e9985.parquet +0 -0
  252. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=760/signal=7443/mdb_019c47814bc47600926ef2384f4e227a.parquet +0 -0
  253. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=761/signal=7429/mdb_019c47814b2179c19836a48d0d7c7cdd.parquet +0 -0
  254. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=761/signal=7437/mdb_019c47814c7e7940a58b27d292320573.parquet +0 -0
  255. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=761/signal=7438/mdb_019c47814c8e7f01b93a077a7f61dccc.parquet +0 -0
  256. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=761/signal=7440/mdb_019c47814c9f785089dce016039d2208.parquet +0 -0
  257. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=761/signal=7443/mdb_019c47814cc373d0b0a680b59d9fd609.parquet +0 -0
  258. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=762/signal=7440/mdb_019c478154967762ac23c2fbae85b479.parquet +0 -0
  259. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=762/signal=7443/mdb_019c478154ac7bf2add8b944068ffe8b.parquet +0 -0
  260. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=772/signal=7430/mdb_019c478392827b30a18e060b4a90dd00.parquet +0 -0
  261. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=772/signal=7433/mdb_019c478392827b30a18e06268765b0c4.parquet +0 -0
  262. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=772/signal=7436/mdb_019c478392837252895cd6a507f9e5f4.parquet +0 -0
  263. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=772/signal=7439/mdb_019c478393b8787080e010ee4c8de5ba.parquet +0 -0
  264. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=772/signal=7442/mdb_019c478393cf77b28eb88a2f06c6ba86.parquet +0 -0
  265. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=773/signal=7430/mdb_019c4783938a7313bad2f325859e7855.parquet +0 -0
  266. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=773/signal=7442/mdb_019c478394e77701bcc9b06f6b351d88.parquet +0 -0
  267. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=774/signal=7430/mdb_019c47839b4f7d818c1968e56d7fb422.parquet +0 -0
  268. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=774/signal=7442/mdb_019c47839c857d208e705e041f5aa60d.parquet +0 -0
  269. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=780/signal=7430/mdb_019c478619757ce3a0acc4ed40b6ff15.parquet +0 -0
  270. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=780/signal=7443/mdb_019c47861ae870e28e381c1a67d330e7.parquet +0 -0
  271. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=781/signal=7430/mdb_019c47861a5b7af3b99fe9538e0f7384.parquet +0 -0
  272. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=781/signal=7443/mdb_019c47861bd17c339ade891f781706cd.parquet +0 -0
  273. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=782/signal=7430/mdb_019c478622367b10a047243953a29947.parquet +0 -0
  274. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=782/signal=7431/mdb_019c478622377be1b78fc0194c0518b6.parquet +0 -0
  275. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=782/signal=7437/mdb_019c4786234d7c51bff80abd1a369b80.parquet +0 -0
  276. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=782/signal=7440/mdb_019c47862362714093806c3c27e0a7e2.parquet +0 -0
  277. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=782/signal=7443/mdb_019c4786237f72d0bc651c9a95896813.parquet +0 -0
  278. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=788/signal=7431/mdb_019c478727f37a60b91f6900c67f8683.parquet +0 -0
  279. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=788/signal=7434/mdb_019c478727f37a60b91f692aedb50136.parquet +0 -0
  280. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=788/signal=7437/mdb_019c4787290b7010944d6961f473d784.parquet +0 -0
  281. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=788/signal=7438/mdb_019c4787292278d39c11d64bc7c56875.parquet +0 -0
  282. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=788/signal=7443/mdb_019c4787296b7e80b3f24db7c9aec877.parquet +0 -0
  283. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=789/signal=7434/mdb_019c478729017180b0562bbcac5117f4.parquet +0 -0
  284. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=789/signal=7443/mdb_019c47872a8774c298dc5b9287220e05.parquet +0 -0
  285. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=790/signal=7434/mdb_019c478731497122b30077131c2e2076.parquet +0 -0
  286. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=790/signal=7443/mdb_019c4787328c74429aebe7714d3f490c.parquet +0 -0
  287. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=796/signal=7431/mdb_019c4788cf167fd2bc38767cbd2d9de2.parquet +0 -0
  288. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=796/signal=7434/mdb_019c4788cf167fd2bc3876882645c3a5.parquet +0 -0
  289. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=797/signal=7431/mdb_019c4788d3ca76a1ac0e8dee6f4f2437.parquet +0 -0
  290. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=797/signal=7434/mdb_019c4788d3d27e62bf8556898988b324.parquet +0 -0
  291. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=798/signal=7430/mdb_019c4788d7e973d0919a464fd49bae35.parquet +0 -0
  292. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=798/signal=7431/mdb_019c4788d7eb7d23b9b0340ea6e32d87.parquet +0 -0
  293. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=798/signal=7433/mdb_019c4788d7ea7f93ae523c6a23b0272a.parquet +0 -0
  294. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=798/signal=7434/mdb_019c4788d7ea7f93ae523c842a6908c1.parquet +0 -0
  295. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=798/signal=7441/mdb_019c4788d92f7d728636394b89116c0a.parquet +0 -0
  296. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=808/signal=7433/mdb_019c4789900678f2b567801348ae623f.parquet +0 -0
  297. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=808/signal=7435/mdb_019c478990077151b474f5a98b31d565.parquet +0 -0
  298. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=809/signal=7433/mdb_019c478994b37433b7c85d4e6bc31d05.parquet +0 -0
  299. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=809/signal=7435/mdb_019c478994b37433b7c85d65fb8e0684.parquet +0 -0
  300. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=810/signal=7433/mdb_019c478999027580ad5a569de2db38b6.parquet +0 -0
  301. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=810/signal=7435/mdb_019c478999037de3a728824e6c34343b.parquet +0 -0
  302. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=810/signal=7440/mdb_019c47899a3870a3807f445c5f0622e1.parquet +0 -0
  303. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=810/signal=7441/mdb_019c47899a497860a1d7b06e45a32ef5.parquet +0 -0
  304. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=810/signal=7442/mdb_019c47899a4b7372adae16a43f2fc4b9.parquet +0 -0
  305. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=820/signal=7433/mdb_019c478a705e78d087caa04744d4f5ab.parquet +0 -0
  306. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=820/signal=7443/mdb_019c478a712373a2a59266d0b1785815.parquet +0 -0
  307. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=821/signal=7433/mdb_019c478a710f709298a11594a6cc0ae1.parquet +0 -0
  308. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=821/signal=7435/mdb_019c478a710f709298a115a5c608efe5.parquet +0 -0
  309. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=821/signal=7441/mdb_019c478a71e379b38e495c9baf6466da.parquet +0 -0
  310. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=821/signal=7442/mdb_019c478a71e87483ad17b97debc763b7.parquet +0 -0
  311. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=821/signal=7443/mdb_019c478a71ed7c2081d25621e643a89b.parquet +0 -0
  312. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=822/signal=7433/mdb_019c478a796d7473ad7a6586f6920121.parquet +0 -0
  313. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=822/signal=7443/mdb_019c478a7a0a7c9284217be1aa6b81d1.parquet +0 -0
  314. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=836/signal=7429/mdb_019c478bd19a7e2299ec54de54ca0057.parquet +0 -0
  315. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=836/signal=7430/mdb_019c478bd1987f428e2acbc0f768e893.parquet +0 -0
  316. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=836/signal=7433/mdb_019c478bd19b72f0bcd96e4b2a709d1e.parquet +0 -0
  317. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=836/signal=7436/mdb_019c478bd19a7e2299ec54e3df0e4d2c.parquet +0 -0
  318. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=836/signal=7442/mdb_019c478bd24578c3b31ca4c9bc86f7d9.parquet +0 -0
  319. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=837/signal=7429/mdb_019c478bd2fe72039ee11ad6753714b7.parquet +0 -0
  320. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=837/signal=7442/mdb_019c478bd3c77103acfb1c95abc8a06d.parquet +0 -0
  321. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=838/signal=7429/mdb_019c478bdb2e784194df83338cb8529f.parquet +0 -0
  322. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=838/signal=7442/mdb_019c478bdbed7b32902b40e67c69b311.parquet +0 -0
  323. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=852/signal=7429/mdb_019c478f486b7f92aa41f51165e7694d.parquet +0 -0
  324. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=852/signal=7437/mdb_019c478f48fd72a29443fe3915d0c5b0.parquet +0 -0
  325. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=852/signal=7438/mdb_019c478f49527a31aab2eaf78bf2555c.parquet +0 -0
  326. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=852/signal=7439/mdb_019c478f497678739c32f19262e641ac.parquet +0 -0
  327. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=852/signal=7440/mdb_019c478f498677439a30a52d6d4ef4b3.parquet +0 -0
  328. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=853/signal=7438/mdb_019c478f4adb7ca3852ab3c354054726.parquet +0 -0
  329. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=853/signal=7440/mdb_019c478f4b1275c3a91911b399b3b1d0.parquet +0 -0
  330. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=854/signal=7438/mdb_019c478f52ec72e1a7d4335b97a69590.parquet +0 -0
  331. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=854/signal=7440/mdb_019c478f52fa73f399cb510ce23f28ec.parquet +0 -0
  332. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=868/signal=7433/mdb_019c478fe4d874b19a3e10e17a8d17b7.parquet +0 -0
  333. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=868/signal=7437/mdb_019c478fe53574a19b40dbb871c8ac32.parquet +0 -0
  334. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=869/signal=7433/mdb_019c478fe6267f828b9bccb1091bf3cf.parquet +0 -0
  335. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=869/signal=7437/mdb_019c478fe6a27622b1ac18035c50ca9a.parquet +0 -0
  336. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=870/signal=7431/mdb_019c478feeae7181822bbd7772a3f396.parquet +0 -0
  337. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=870/signal=7433/mdb_019c478feeae7181822bbd66a8ca3054.parquet +0 -0
  338. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=870/signal=7437/mdb_019c478fef2070d09b5736ab6d95887a.parquet +0 -0
  339. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=870/signal=7440/mdb_019c478fef5e73f3bcb642883eb35b58.parquet +0 -0
  340. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=870/signal=7443/mdb_019c478fef767851b020ba9e7f8282e7.parquet +0 -0
  341. marpledata-3.0.0.dev0/.mdb_cache/default/dataset=882/signal=7431/mdb_019c47902f5e74128ce586b5dbf4f146.parquet +0 -0
  342. marpledata-3.0.0.dev0/README.md +0 -111
  343. marpledata-3.0.0.dev0/experiment.py +0 -21
  344. marpledata-3.0.0.dev0/src/marple/__init__.py +0 -7
  345. marpledata-3.0.0.dev0/src/marple/db/dataset.py +0 -263
  346. marpledata-3.0.0.dev0/src/marple/db/datastream.py +0 -80
  347. marpledata-3.0.0.dev0/src/marple/db/signal.py +0 -103
  348. marpledata-3.0.0.dev0/src/marple/files.py +0 -164
  349. marpledata-3.0.0.dev0/src/marple/utils.py +0 -42
  350. marpledata-3.0.0.dev0/tests/test_files.py +0 -48
  351. {marpledata-3.0.0.dev0 → marpledata-3.0.1}/.python-version +0 -0
  352. {marpledata-3.0.0.dev0 → marpledata-3.0.1}/LICENSE +0 -0
  353. {marpledata-3.0.0.dev0 → marpledata-3.0.1}/examples_race.csv +0 -0
  354. {marpledata-3.0.0.dev0 → marpledata-3.0.1}/pytest.xml +0 -0
  355. {marpledata-3.0.0.dev0 → marpledata-3.0.1}/tests/examples_race.csv +0 -0
@@ -1,3 +1,9 @@
1
+ lol.py
2
+ .mdb_cache/
3
+
4
+ python/docs/_build/
5
+ python/docs/api/marple.*.rst
6
+
1
7
  # Default ignored files
2
8
  /shelf/
3
9
  /workspace.xml
@@ -0,0 +1 @@
1
+ *
@@ -0,0 +1 @@
1
+ Signature: 8a477f597d28d172789f06886806bc55
File without changes
File without changes
@@ -11,6 +11,17 @@ export INSIGHT_TOKEN=...
11
11
  uv run pytest -vs
12
12
  ```
13
13
 
14
+ ### Documentation
15
+
16
+ Build the Sphinx docs locally:
17
+
18
+ ```bash
19
+ uv sync --group docs
20
+ uv run sphinx-build -b html docs docs/_build/html
21
+ ```
22
+
23
+ Open `docs/_build/html/index.html` in your browser to view the site.
24
+
14
25
  ### Local build
15
26
 
16
27
  - `uv build`
@@ -18,7 +29,7 @@ uv run pytest -vs
18
29
  - `uv run python`
19
30
  - `import marple`
20
31
  - `marple.__version__`
21
- - `from marple import Marple, Insight, DB`
32
+ - `from marple import Insight, DB`
22
33
 
23
34
  ### Publishing (Test Pypi)
24
35
 
@@ -32,7 +43,7 @@ Only once on your laptop
32
43
  For every build
33
44
 
34
45
  - `uv version x.y.z.devi`
35
- - bump version in `__version__` variable in [\_\_init\_\_.py](src/marple/__init__.py)
46
+ - bump version in `__version__` variable
36
47
  - `uv build`
37
48
  - `uv publish --index testpypi`
38
49
 
@@ -59,3 +70,4 @@ To ensure pip correctly updates our package, correct versioning is important. Us
59
70
  - `uv config pypi-token.pypi pypi-XXXXXXXXXXXXXXXXXXXXXXXXXXXX`
60
71
  - `uv build`
61
72
  - `uv publish`
73
+ - Run the GitLab pipeline `pages` to build & release the docs
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: marpledata
3
- Version: 3.0.0.dev0
3
+ Version: 3.0.1
4
4
  Summary: Marple SDK for Python
5
5
  Project-URL: Homepage, https://www.marpledata.com/
6
- Project-URL: Documentation, https://docs.marpledata.com/docs
6
+ Project-URL: Documentation, https://marpledata.gitlab.io/marple-sdk/
7
7
  Project-URL: Repository, https://gitlab.com/marpledata/marple-sdk/-/tree/main/python
8
8
  Project-URL: Issues, https://github.com/marpledata/marple-sdk/issues
9
9
  Author-email: Matthias Baert <support@marpledata.com>, Jan Scheers <jan@marpledata.com>
@@ -28,6 +28,7 @@ Requires-Dist: pandas>=2.3.3
28
28
  Requires-Dist: pyarrow>=22.0.0
29
29
  Requires-Dist: pydantic>=2.12.5
30
30
  Requires-Dist: requests>=2.32.5
31
+ Requires-Dist: tabulate>=0.9.0
31
32
  Description-Content-Type: text/markdown
32
33
 
33
34
  # Marple SDK
@@ -58,7 +59,8 @@ To get started:
58
59
 
59
60
  If you are using a VPC or self-hosted version, pass a custom `api_url` to `DB(...)` (it should end in `/api/v1`).
60
61
 
61
- ### Example: import a file and poll ingest status
62
+ ### Examples
63
+ #### Import a file and wait for it to import
62
64
 
63
65
  This is the typical flow for importing a new file into Marple DB:
64
66
 
@@ -75,23 +77,77 @@ db = DB(API_TOKEN, API_URL)
75
77
 
76
78
  db.check_connection()
77
79
 
78
- dataset_id = db.push_file(STREAM, "tests/examples_race.csv", metadata={"driver": "Mbaerto"})
80
+ stream = db.get_stream(STREAM)
81
+ dataset = stream.push_file("examples_race.csv", metadata={"driver": "Mbaerto"})
82
+ # Wait at most 10s for the dataset to completely import and get the new state of the dataset
83
+ dataset = dataset.wait_for_import(timeout=10)
84
+ ```
85
+
86
+ #### Filter datasets and get resampled data
87
+ ```python
88
+ # See previous example for setup
89
+ import re
90
+ from marple.db import Dataset
91
+
92
+ datasets = stream.get_datasets() # Get all datasets in a specific Data Stream
93
+ # OR
94
+ # datasets = db.get_datasets() # Get all datasets in the datapool
95
+
96
+ datasets = (
97
+ datasets
98
+ .where_metadata({"car_id": [1, 2], "track": "track_1"})
99
+ .wait_for_import()
100
+ .where_imported()
101
+ .where_signal("car.speed", "max", greater_than=75)
102
+ .where_signal("car.engine.temp", "mean", greater_than=30)
103
+ .where_dataset("n_datapoints", greater_than=100000)
104
+ )
105
+
106
+ def custom_filter_function(dataset: Dataset) -> bool:
107
+ return (
108
+ dataset.metadata.get("weather") == "sunny"
109
+ or dataset.get_signal("car.engine.NGear").stats.get("avg", 0) ** 2 > 16
110
+ )
111
+
112
+ # Pass any function to filter the datasets on more complex conditions
113
+ datasets = datasets.where(custom_filter_function)
114
+
115
+ # Create an overview of the datasets as a pandas.DataFrame to save it to a CSV.
116
+ datasets.to_pandas().to_csv("all_datasets.csv")
117
+
118
+ # Get a dataframe per dataset of the matching signals which is resampled at a period of 0.17s.
119
+ # The regex patterns will match with car.wheel.rear.left.speed, car.wheel.rear.front.speed, ...
120
+ for dataset, data in datasets.get_data(
121
+ signals=[
122
+ "car.speed",
123
+ "car.engine.temp",
124
+ re.compile("car.wheel.*.speed"),
125
+ re.compile("car.wheel.*.trq"),
126
+ ],
127
+ resample_rule="0.17s",
128
+ ):
129
+ machine_learning_model.train(data)
130
+ ```
131
+
132
+ #### Delete a dataset that failed to import
133
+ ```python
134
+ datasets = stream.get_datasets()
135
+ datasets = datasets.where_dataset("import_status", equals="FAILED")
79
136
 
80
- while True:
81
- status = db.get_status(STREAM, dataset_id)
82
- if status.get("import_status") in {"FINISHED", "FAILED"}:
83
- break
84
- time.sleep(1)
137
+ # datasets is of type DatasetList which is a subclass of list so you can do all normal list operations on it.
138
+ if len(datasets) > 0:
139
+ datasets[0].delete()
85
140
  ```
86
141
 
87
142
  ### Common operations
88
143
 
89
144
  - **List streams**: `db.get_streams()`
90
- - **List datasets in a stream**: `db.get_datasets(stream_key)`
91
- - **Upload a file to a file-stream**: `db.push_file(stream_key, file_path, metadata={...})`
92
- - **Poll ingest status**: `db.get_status(stream_key, dataset_id)`
93
- - **Download original uploaded file**: `db.download_original(stream_key, dataset_id, destination_folder=".")`
94
- - **Download parquet for a signal**: `db.download_signal(stream_key, dataset_id, signal_id, destination_folder=".")`
145
+ - **List datasets in a stream**: `stream.get_datasets()`
146
+ - **Upload a file to a file-stream**: `stream.push_file(file_path, metadata={...})`
147
+ - **Wait for a dataset to import**: `dataset.wait_for_import(timeout=60)`
148
+ - **Download original uploaded file**: `dataset.download(destination_folder=".")`
149
+ - **Download parquet for a signal**: `dataset.get_signal(signal_name).download(destination_folder=".")`
150
+ - **Get a resampled df of multiple signals**: `dataset.get_data(signals=[...], resample_rule="1s")`
95
151
 
96
152
  For live/realtime streams (creating and appending data):
97
153
 
@@ -105,9 +161,14 @@ For advanced use cases, you can call API endpoints directly:
105
161
 
106
162
  ```python
107
163
  db.get("/health")
108
- db.post("/query", json={"query": "select 1"})
109
164
  ```
110
165
 
166
+ ### Notes on DB API changes
167
+
168
+ - Methods like `DB.push_file`, `DB.download_signal`, and `DB.update_metadata` are deprecated.
169
+ - Prefer stream/dataset methods instead: `stream.push_file`, `dataset.get_signal(...).download()`, and `dataset.update_metadata(...)`.
170
+ - These are still available for compatibility, but the examples above use the current API.
171
+
111
172
  ## Marple Insight
112
173
 
113
174
  ### Common operations
@@ -130,7 +191,7 @@ STREAM = "Car data"
130
191
  insight = Insight(INSIGHT_TOKEN, INSIGHT_URL)
131
192
  db = DB(DB_TOKEN, DB_URL)
132
193
 
133
- dataset_id = db.get_datasets(STREAM)[0]["id"]
194
+ dataset_id = db.get_datasets(STREAM)[0].id
134
195
  insight_dataset = insight.get_dataset_mdb(dataset_id)
135
196
 
136
197
  file_path = insight.export_data_mdb(
@@ -141,3 +202,10 @@ file_path = insight.export_data_mdb(
141
202
  )
142
203
  print("Wrote", file_path)
143
204
  ```
205
+
206
+ ### Calling endpoints directly
207
+ For advanced use cases, you can call API endpoints directly:
208
+ ```python
209
+ insight.get("/user/info")
210
+ insight.post("sources/search")
211
+ ```
@@ -0,0 +1,178 @@
1
+ # Marple SDK
2
+
3
+ An SDK to interact with [Marple](https://www.marpledata.com) DB & Insight
4
+
5
+ ## Installation and importing
6
+
7
+ Install the Marple SDK using your package manager:
8
+
9
+ - `poetry add marpledata`
10
+ - `uv add marpledata`
11
+ - `pip install marpledata`
12
+
13
+ The SDK currently exposes:
14
+
15
+ ```python
16
+ from marple import DB # Marple DB
17
+ from marple import Insight # Marple Insight
18
+ ```
19
+
20
+ ## Marple DB
21
+
22
+ To get started:
23
+
24
+ - Create a **stream** in the Marple DB UI
25
+ - Create an **API token** (in user settings)
26
+
27
+ If you are using a VPC or self-hosted version, pass a custom `api_url` to `DB(...)` (it should end in `/api/v1`).
28
+
29
+ ### Examples
30
+ #### Import a file and wait for it to import
31
+
32
+ This is the typical flow for importing a new file into Marple DB:
33
+
34
+ ```python
35
+ import time
36
+ from marple import DB
37
+
38
+ # Create a stream + API token in the Marple DB web application
39
+ STREAM = "Car data"
40
+ API_TOKEN = "<your api token>"
41
+ API_URL = "https://db.marpledata.com/api/v1" # optional if using the default SaaS
42
+
43
+ db = DB(API_TOKEN, API_URL)
44
+
45
+ db.check_connection()
46
+
47
+ stream = db.get_stream(STREAM)
48
+ dataset = stream.push_file("examples_race.csv", metadata={"driver": "Mbaerto"})
49
+ # Wait at most 10s for the dataset to completely import and get the new state of the dataset
50
+ dataset = dataset.wait_for_import(timeout=10)
51
+ ```
52
+
53
+ #### Filter datasets and get resampled data
54
+ ```python
55
+ # See previous example for setup
56
+ import re
57
+ from marple.db import Dataset
58
+
59
+ datasets = stream.get_datasets() # Get all datasets in a specific Data Stream
60
+ # OR
61
+ # datasets = db.get_datasets() # Get all datasets in the datapool
62
+
63
+ datasets = (
64
+ datasets
65
+ .where_metadata({"car_id": [1, 2], "track": "track_1"})
66
+ .wait_for_import()
67
+ .where_imported()
68
+ .where_signal("car.speed", "max", greater_than=75)
69
+ .where_signal("car.engine.temp", "mean", greater_than=30)
70
+ .where_dataset("n_datapoints", greater_than=100000)
71
+ )
72
+
73
+ def custom_filter_function(dataset: Dataset) -> bool:
74
+ return (
75
+ dataset.metadata.get("weather") == "sunny"
76
+ or dataset.get_signal("car.engine.NGear").stats.get("avg", 0) ** 2 > 16
77
+ )
78
+
79
+ # Pass any function to filter the datasets on more complex conditions
80
+ datasets = datasets.where(custom_filter_function)
81
+
82
+ # Create an overview of the datasets as a pandas.DataFrame to save it to a CSV.
83
+ datasets.to_pandas().to_csv("all_datasets.csv")
84
+
85
+ # Get a dataframe per dataset of the matching signals which is resampled at a period of 0.17s.
86
+ # The regex patterns will match with car.wheel.rear.left.speed, car.wheel.rear.front.speed, ...
87
+ for dataset, data in datasets.get_data(
88
+ signals=[
89
+ "car.speed",
90
+ "car.engine.temp",
91
+ re.compile("car.wheel.*.speed"),
92
+ re.compile("car.wheel.*.trq"),
93
+ ],
94
+ resample_rule="0.17s",
95
+ ):
96
+ machine_learning_model.train(data)
97
+ ```
98
+
99
+ #### Delete a dataset that failed to import
100
+ ```python
101
+ datasets = stream.get_datasets()
102
+ datasets = datasets.where_dataset("import_status", equals="FAILED")
103
+
104
+ # datasets is of type DatasetList which is a subclass of list so you can do all normal list operations on it.
105
+ if len(datasets) > 0:
106
+ datasets[0].delete()
107
+ ```
108
+
109
+ ### Common operations
110
+
111
+ - **List streams**: `db.get_streams()`
112
+ - **List datasets in a stream**: `stream.get_datasets()`
113
+ - **Upload a file to a file-stream**: `stream.push_file(file_path, metadata={...})`
114
+ - **Wait for a dataset to import**: `dataset.wait_for_import(timeout=60)`
115
+ - **Download original uploaded file**: `dataset.download(destination_folder=".")`
116
+ - **Download parquet for a signal**: `dataset.get_signal(signal_name).download(destination_folder=".")`
117
+ - **Get a resampled df of multiple signals**: `dataset.get_data(signals=[...], resample_rule="1s")`
118
+
119
+ For live/realtime streams (creating and appending data):
120
+
121
+ - **Create an empty dataset**: `db.add_dataset(stream_key, dataset_name, metadata=None)`
122
+ - **Upsert signal definitions**: `db.upsert_signals(stream_key, dataset_id, signals=[...])`
123
+ - **Append timeseries data**: `db.dataset_append(stream_key, dataset_id, data=df, shape="long"|"wide"|None)`
124
+
125
+ ### Calling endpoints directly
126
+
127
+ For advanced use cases, you can call API endpoints directly:
128
+
129
+ ```python
130
+ db.get("/health")
131
+ ```
132
+
133
+ ### Notes on DB API changes
134
+
135
+ - Methods like `DB.push_file`, `DB.download_signal`, and `DB.update_metadata` are deprecated.
136
+ - Prefer stream/dataset methods instead: `stream.push_file`, `dataset.get_signal(...).download()`, and `dataset.update_metadata(...)`.
137
+ - These are still available for compatibility, but the examples above use the current API.
138
+
139
+ ## Marple Insight
140
+
141
+ ### Common operations
142
+
143
+ - **List datasets in the workspace**: `insight.get_datasets()`
144
+ - **Get a Marple DB dataset (by dataset id)**: `insight.get_dataset_mdb(dataset_id)`
145
+ - **List signals in a dataset**: `insight.get_signals(dataset_filter)` / `insight.get_signals_mdb(dataset_id)`
146
+
147
+ ### Example: export a dataset (H5/MAT)
148
+
149
+ ```python
150
+ from marple import DB, Insight
151
+
152
+ INSIGHT_TOKEN = "<your api token>"
153
+ INSIGHT_URL = "https://insight.marpledata.com/api/v1" # optional if using the default SaaS
154
+ DB_TOKEN = "<your api token>"
155
+ DB_URL = "https://db.marpledata.com/api/v1" # optional if using the default SaaS
156
+ STREAM = "Car data"
157
+
158
+ insight = Insight(INSIGHT_TOKEN, INSIGHT_URL)
159
+ db = DB(DB_TOKEN, DB_URL)
160
+
161
+ dataset_id = db.get_datasets(STREAM)[0].id
162
+ insight_dataset = insight.get_dataset_mdb(dataset_id)
163
+
164
+ file_path = insight.export_data_mdb(
165
+ dataset_id,
166
+ format="h5",
167
+ signals=["car.speed"],
168
+ destination=".",
169
+ )
170
+ print("Wrote", file_path)
171
+ ```
172
+
173
+ ### Calling endpoints directly
174
+ For advanced use cases, you can call API endpoints directly:
175
+ ```python
176
+ insight.get("/user/info")
177
+ insight.post("sources/search")
178
+ ```
@@ -0,0 +1,24 @@
1
+ # Documentation Deployment
2
+
3
+ The Sphinx documentation can be manually built and deployed to GitLab Pages with a single click.
4
+
5
+ ## How to Deploy
6
+ Click **Run pipeline** to trigger it
7
+ The`pages` job will start and automatically build the docs and serve them as a static gitlab page under `https://marpledata.gitlab.io/marple-sdk/`
8
+
9
+ ## Local Development
10
+
11
+ To build docs locally:
12
+ ```bash
13
+ cd python
14
+ uv run sphinx-build -b html docs docs/_build/html
15
+ ```
16
+
17
+ Then open `docs/_build/html/index.html` in your browser.
18
+
19
+
20
+ **Sphinx configuration:** `python/docs/conf.py`
21
+ - Uses PyData theme
22
+ - Includes Pydantic filtering to hide internal methods
23
+ - 2-product structure (Insight, DB, Files)
24
+
@@ -0,0 +1,4 @@
1
+ :root {
2
+ /* The primary color used for links and active states */
3
+ --pst-color-primary: #0253A3;
4
+ }
Binary file
@@ -0,0 +1,12 @@
1
+ Marple DB
2
+ =========
3
+
4
+ .. autosummary::
5
+ :toctree: .
6
+ :nosignatures:
7
+
8
+ marple.db.DB
9
+ marple.db.DataStream
10
+ marple.db.Dataset
11
+ marple.db.DatasetList
12
+ marple.db.Signal
@@ -0,0 +1,8 @@
1
+ Marple Insight
2
+ ==============
3
+
4
+ .. autosummary::
5
+ :toctree: .
6
+ :nosignatures:
7
+
8
+ marple.Insight
@@ -0,0 +1,8 @@
1
+ API Reference
2
+ =============
3
+
4
+ .. toctree::
5
+ :maxdepth: 2
6
+
7
+ api/insight
8
+ api/db
@@ -0,0 +1,128 @@
1
+ import os
2
+ import sys
3
+
4
+ sys.path.insert(0, os.path.abspath("../src"))
5
+
6
+ project = "Marple SDK"
7
+ author = "Marple"
8
+ copyright = "2026, Marple"
9
+
10
+ try:
11
+ import marple
12
+
13
+ release = marple.__version__
14
+ except Exception:
15
+ release = "unknown"
16
+
17
+ extensions = [
18
+ "sphinx.ext.autodoc",
19
+ "sphinx.ext.napoleon",
20
+ "sphinx.ext.autosummary",
21
+ "sphinxcontrib.autodoc_pydantic",
22
+ ]
23
+
24
+ autosummary_generate = True
25
+ autodoc_default_options = {
26
+ "members": True,
27
+ "show-inheritance": True,
28
+ "member-order": "groupwise",
29
+ "inherited-members": False,
30
+ "private-members": False,
31
+ }
32
+
33
+ # Pydantic Settings: Clean up the docs
34
+ autodoc_pydantic_model_show_json = False
35
+ autodoc_pydantic_model_show_config = False
36
+ autodoc_pydantic_settings_show_json = False
37
+
38
+ # This hides the 'model_dump', 'model_validate', etc. methods
39
+ autodoc_pydantic_model_members = False
40
+
41
+ templates_path = ["_templates"]
42
+ exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]
43
+
44
+ html_theme = "pydata_sphinx_theme"
45
+ html_static_path = ["_static"]
46
+ html_css_files = ["custom.css"]
47
+ html_logo = "_static/logo.png"
48
+ html_favicon = "_static/favicon.png"
49
+
50
+ html_theme_options = {
51
+ "header_links_before_dropdown": 6,
52
+ "navigation_with_keys": True,
53
+ "use_edit_page_button": True,
54
+ "show_nav_level": 2,
55
+ "icon_links": [
56
+ {
57
+ "name": "GitHub",
58
+ "url": "https://github.com/marpledata/marple-sdk",
59
+ "icon": "fa-brands fa-github",
60
+ },
61
+ {
62
+ "name": "GitLab",
63
+ "url": "https://gitlab.com/marpledata/marple-sdk",
64
+ "icon": "fa-brands fa-gitlab",
65
+ },
66
+ ],
67
+ }
68
+
69
+ html_context = {
70
+ "github_url": "https://github.com",
71
+ "github_user": "marpledata",
72
+ "github_repo": "marple-sdk",
73
+ "github_version": "main",
74
+ "doc_path": "python/docs",
75
+ "gitlab_url": "https://gitlab.com",
76
+ "gitlab_user": "marpledata",
77
+ "gitlab_repo": "marple-sdk",
78
+ "gitlab_version": "main",
79
+ }
80
+
81
+
82
+ def skip_pydantic_internals(app, what, name, obj, skip, options):
83
+ """
84
+ Triggers on every member. If it looks like a Pydantic internal, skip it.
85
+ """
86
+ # List of exact names to skip (Pydantic V1/V2 compat methods)
87
+ pydantic_internals = {
88
+ "model_copy",
89
+ "model_dump",
90
+ "model_dump_json",
91
+ "model_json_schema",
92
+ "model_parametrized_name",
93
+ "model_post_init",
94
+ "model_rebuild",
95
+ "model_validate",
96
+ "model_validate_json",
97
+ "schema",
98
+ "schema_json",
99
+ "update_forward_refs",
100
+ "model_validate_strings",
101
+ "parse_file",
102
+ "parse_obj",
103
+ "parse_raw",
104
+ "from_orm",
105
+ "validate",
106
+ "construct",
107
+ "copy",
108
+ "json",
109
+ "dict",
110
+ }
111
+
112
+ # If the name is in our blacklist, SKIP it (return True)
113
+ if name in pydantic_internals:
114
+ return True
115
+
116
+ # Optional: Skip anything starting with "model_" if you are bold
117
+ if name.startswith("model_"):
118
+ return True
119
+
120
+ if name.startswith("_"):
121
+ return True
122
+
123
+ return skip
124
+
125
+
126
+ def setup(app):
127
+ # Register the function above to run during the build
128
+ app.connect("autodoc-skip-member", skip_pydantic_internals)
@@ -0,0 +1,54 @@
1
+ Getting Started
2
+ ===============
3
+
4
+ Install
5
+ -------
6
+
7
+ Install the Marple SDK using your package manager:
8
+
9
+ .. code-block:: bash
10
+
11
+ poetry add marpledata
12
+ uv add marpledata
13
+ pip install marpledata
14
+
15
+ The SDK exposes the main entry points:
16
+
17
+ .. code-block:: python
18
+
19
+ from marple import DB
20
+ from marple import Insight
21
+
22
+ Marple DB quickstart
23
+ --------------------
24
+
25
+ .. code-block:: python
26
+
27
+ from marple import DB
28
+
29
+ stream_name = "Car data"
30
+ api_token = "<your api token>"
31
+ api_url = "https://db.marpledata.com/api/v1"
32
+
33
+ db = DB(api_token, api_url)
34
+
35
+ stream = db.get_stream(stream_name)
36
+ dataset = stream.push_file("examples_race.csv", metadata={"driver": "Mbaerto"})
37
+ dataset = dataset.wait_for_import(timeout=10)
38
+
39
+ Marple Insight quickstart
40
+ -------------------------
41
+
42
+ .. code-block:: python
43
+
44
+ from marple import Insight
45
+
46
+ insight_token = "<your api token>"
47
+ insight_url = "https://insight.marpledata.com/api/v1"
48
+
49
+ insight = Insight(insight_token, insight_url)
50
+
51
+ # For more advanced dataset/signal searches/exports, use DB instead of Insight.
52
+ datasets = insight.get_datasets()
53
+ dataset = datasets[0]
54
+ signals = insight.get_signals(dataset["dataset_filter"])
@@ -0,0 +1,12 @@
1
+ Marple SDK
2
+ ==========
3
+
4
+ The Marple SDK provides Python clients to interact with Marple DB and Marple Insight.
5
+
6
+ .. toctree::
7
+ :maxdepth: 2
8
+ :caption: Contents
9
+
10
+ getting-started
11
+ tutorials
12
+ api