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.
- {marpledata-3.0.0.dev0 → marpledata-3.0.1}/.gitignore +6 -0
- marpledata-3.0.1/.uv-cache/.gitignore +1 -0
- marpledata-3.0.0.dev0/src/marple/py.typed → marpledata-3.0.1/.uv-cache/.lock +0 -0
- marpledata-3.0.1/.uv-cache/CACHEDIR.TAG +1 -0
- marpledata-3.0.1/.uv-cache/interpreter-v4/c2c2931c8a99aae1/588e1e7c128e2872.msgpack +0 -0
- marpledata-3.0.1/.uv-cache/sdists-v9/.git +0 -0
- marpledata-3.0.1/.uv-cache/sdists-v9/.gitignore +0 -0
- {marpledata-3.0.0.dev0 → marpledata-3.0.1}/CONTRIBUTING.md +14 -2
- {marpledata-3.0.0.dev0 → marpledata-3.0.1}/PKG-INFO +84 -16
- marpledata-3.0.1/README.md +178 -0
- marpledata-3.0.1/docs/DEPLOYMENT.md +24 -0
- marpledata-3.0.1/docs/_static/custom.css +4 -0
- marpledata-3.0.1/docs/_static/favicon.png +0 -0
- marpledata-3.0.1/docs/_static/logo.png +0 -0
- marpledata-3.0.1/docs/api/db.rst +12 -0
- marpledata-3.0.1/docs/api/insight.rst +8 -0
- marpledata-3.0.1/docs/api.rst +8 -0
- marpledata-3.0.1/docs/conf.py +128 -0
- marpledata-3.0.1/docs/getting-started.rst +54 -0
- marpledata-3.0.1/docs/index.rst +12 -0
- marpledata-3.0.1/docs/tutorials.rst +46 -0
- {marpledata-3.0.0.dev0 → marpledata-3.0.1}/example.py +22 -23
- {marpledata-3.0.0.dev0 → marpledata-3.0.1}/pyproject.toml +8 -2
- marpledata-3.0.1/src/marple/__init__.py +6 -0
- {marpledata-3.0.0.dev0 → marpledata-3.0.1}/src/marple/db/__init__.py +276 -169
- {marpledata-3.0.0.dev0 → marpledata-3.0.1}/src/marple/db/constants.py +2 -0
- marpledata-3.0.1/src/marple/db/dataset.py +512 -0
- marpledata-3.0.1/src/marple/db/datastream.py +89 -0
- marpledata-3.0.1/src/marple/db/signal.py +81 -0
- {marpledata-3.0.0.dev0 → marpledata-3.0.1}/src/marple/insight.py +42 -15
- marpledata-3.0.1/src/marple/py.typed +0 -0
- marpledata-3.0.1/src/marple/utils.py +141 -0
- {marpledata-3.0.0.dev0 → marpledata-3.0.1}/tests/test_sdk.py +72 -111
- {marpledata-3.0.0.dev0 → marpledata-3.0.1}/uv.lock +360 -1
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26570/signal=210048/mdb_019c43c1ebce7e11b435f8d52748acf7.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26570/signal=210049/mdb_019c43c1ebcb7741ae849d66acd413d1.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26570/signal=210052/mdb_019c43c1ebd278539d848a29d05dc395.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26570/signal=210056/mdb_019c43c1ec617b408800519e2c4beb16.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26570/signal=210058/mdb_019c43c1ec957c62a54a12229f52182c.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26572/signal=210051/mdb_019c43c2497e711095999e2705ab1dfb.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26574/signal=210052/mdb_019c4405a89778a1b468b7e37800cf70.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26574/signal=210056/mdb_019c4405a93d7623a46729699752a73f.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26574/signal=210057/mdb_019c4405a94a74b28567dc37d530ff78.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26574/signal=210058/mdb_019c4405a9607242a4a399fa63621da6.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26574/signal=210059/mdb_019c4405a9637fe1a0299efe98f8f1f4.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26584/signal=210050/mdb_019c4406aaa67453afd4545924e6a44f.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26590/signal=210046/mdb_019c46ab27ae78e3bb3f61dd0cb7d269.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26590/signal=210050/mdb_019c46ab27b17e41ad16e7be8db27871.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26590/signal=210057/mdb_019c46ab28617f82a0590ded50bec9eb.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26590/signal=210058/mdb_019c46ab286f70a3abec3e9e732eeaa3.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26590/signal=210060/mdb_019c46ab28897253bb08c87c834d0998.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=26600/signal=210052/mdb_019c46ac123f7b42a56bcf59136290e5.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=395/signal=7431/mdb_019c437664237a33b1a18f053a9864ed.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=395/signal=7434/mdb_019c4376642578c283e6799e27e5269b.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=395/signal=7435/mdb_019c4376642578c283e6798d55eaaa66.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=395/signal=7437/mdb_019c437664877110af469c3e82f8e688.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=395/signal=7440/mdb_019c437664bd7a10bf1e93bdd2f0d7f9.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=397/signal=7429/mdb_019c4376738e768395724fc867b28b37.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=397/signal=7429/test.py +0 -17
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=399/signal=7430/mdb_019c43c0eaff77f1bc1d7165b9617be6.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=399/signal=7436/mdb_019c43c0eb027f4089aa5259bfa65974.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=399/signal=7439/mdb_019c43c0ebab76e181e32df35adb4ef1.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=399/signal=7441/mdb_019c43c0ebc97810b720617e79ece6a8.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=399/signal=7443/mdb_019c43c0ebf371b3af252f621e5077d9.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=401/signal=7442/mdb_019c43c0fbc77bf3a9b6820a13ba17d3.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=430/signal=7431/mdb_019c46fd80797dd296f1ef5c17e13b40.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=431/signal=7431/mdb_019c46fd815579e28c3acd86fdc0720c.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=440/signal=7431/mdb_019c46fdea5f74718ab1339de3f9340a.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=441/signal=7431/mdb_019c46fdef297463b7ed866fa7247ee5.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=450/signal=7431/mdb_019c46ff7e0072c18dbb9a047be156f5.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=451/signal=7431/mdb_019c46ff83277c7196ee6d278dd0a3f2.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=460/signal=7431/mdb_019c4700e7bc7531ab077c984295cb49.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=461/signal=7431/mdb_019c4700e84474a1a7af8ffa44c3d0cf.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=470/signal=7431/mdb_019c47018c7f7cc28d440bdbf434a877.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=471/signal=7431/mdb_019c47018cd57f0191b62e59ccc55024.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=480/signal=7431/mdb_019c4702aebd72909d218465fbdeeafb.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=481/signal=7431/mdb_019c4702af807f30a730043f6700d78c.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=490/signal=7431/mdb_019c4703245b7d608cab402c47c2786e.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=491/signal=7431/mdb_019c4703250d7eb28509c3db7058e9d5.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=500/signal=7431/mdb_019c47039e5f70a381ae82b10fe0e1a4.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=501/signal=7431/mdb_019c47039f0e7ee288bebd3d4c99df24.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=510/signal=7431/mdb_019c47044e5a74019295a4f610986832.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=511/signal=7431/mdb_019c4704535370b2b97edcd57543fdad.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=520/signal=7431/mdb_019c4705b3f57a72bdb50db3bc615759.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=521/signal=7431/mdb_019c4705b8517312a7ef2e52190135a4.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=530/signal=7431/mdb_019c4705dad67ce18030708aae48e070.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=531/signal=7431/mdb_019c4705e0067a51b171814f29672134.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=540/signal=7431/mdb_019c470626157a609f21dbe9d1266a15.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=541/signal=7431/mdb_019c47062b437bf1a4c129ad6d566630.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=550/signal=7431/mdb_019c47064acd7e31b5e27b244694289c.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=551/signal=7431/mdb_019c47064b9e7693a641426187203033.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=560/signal=7431/mdb_019c4707779374f3a3e93f5aa6e75645.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=561/signal=7431/mdb_019c47077c7e7dd1a7d13c0555890436.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=570/signal=7431/mdb_019c470819327dd38732f1f6aa0cf41e.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=571/signal=7431/mdb_019c47081a327863a83c62a57a7798b9.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=580/signal=7431/mdb_019c4708f0c87a2090e9cfb134718319.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=581/signal=7431/mdb_019c4708f16977b38ef79888598a889c.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=600/signal=7436/mdb_019c4758f4367bc180389d09c90db6b8.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=600/signal=7441/mdb_019c4758f4f077e3862839043418528a.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=601/signal=7436/mdb_019c4758f4f07e02b0d43536b6ee6258.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=601/signal=7441/mdb_019c4758f5d27d71996d95d0a6bc1525.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=602/signal=7429/mdb_019c4758fca07e7290ae1e96a4500a8d.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=602/signal=7430/mdb_019c4758fca07e7290ae1e80abb44620.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=602/signal=7436/mdb_019c4758fca17441ade1a5ec337b7c5f.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=602/signal=7439/mdb_019c4758fd0f74408842121bdd0413c2.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=602/signal=7441/mdb_019c4758fd387d60a8724f9a304c3f7c.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=618/signal=7435/mdb_019c47602e8971f1923b2c3369faee6b.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=618/signal=7443/mdb_019c47602f717643a7f321b4526d043d.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=619/signal=7435/mdb_019c47602f607063827e550834c1f9d6.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=619/signal=7443/mdb_019c4760306b7bc38b097cf5255b3d29.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=620/signal=7429/mdb_019c476037b07163bc8d9818102bc730.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=620/signal=7435/mdb_019c476037b277409f01d660f9c28e81.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=620/signal=7439/mdb_019c4760383e70c1ab842f96d466343c.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=620/signal=7441/mdb_019c4760385270f399e6d38fbe652e08.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=620/signal=7443/mdb_019c4760386073d1871f41d6d16f6671.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=626/signal=7430/mdb_019c4760807c7f5385b910a66229b58e.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=626/signal=7440/mdb_019c4760813775d1ac81aa513c2f9b2b.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=627/signal=7430/mdb_019c4760811571f3b0189772f652050c.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=627/signal=7440/mdb_019c476082167142a03bd3b63c13abee.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=628/signal=7430/mdb_019c476089b177e09a3824345a58e470.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=628/signal=7434/mdb_019c476089b279f282c507099db5a95d.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=628/signal=7437/mdb_019c47608a0572b1bd7d3d841ab0a095.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=628/signal=7440/mdb_019c47608a3b7e539ef65a63f3f29717.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=628/signal=7443/mdb_019c47608a5672c0bc1124f2c83e1f6b.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=634/signal=7432/mdb_019c4762765f780088150e950c5d3eb9.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=634/signal=7435/mdb_019c4762765e7c60b62bc7033665bb58.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=634/signal=7436/mdb_019c4762765f780088150ea9afd9b538.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=634/signal=7440/mdb_019c476277057ba397e244b5c633648c.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=634/signal=7442/mdb_019c4762771d7e81bd537986115019ed.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=635/signal=7435/mdb_019c4762773e769180d19c539952c5b2.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=635/signal=7436/mdb_019c4762773d7a708aa731dbf68762e4.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=636/signal=7435/mdb_019c4762801b78c3962ce8e6aa7d69ea.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=636/signal=7436/mdb_019c4762801b78c3962ce8d6592a1e5f.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=642/signal=7430/mdb_019c4764e64a7453981bafd3eeb44223.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=642/signal=7441/mdb_019c4764e6fc73b39061ccb8748738eb.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=643/signal=7429/mdb_019c4764e71e7c93932070444c48b696.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=643/signal=7430/mdb_019c4764e71f7422bdfe9d2d5950f972.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=643/signal=7432/mdb_019c4764e7207c50ba0f00eb90057191.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=643/signal=7439/mdb_019c4764e7f9780189518cfffc4ed591.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=643/signal=7441/mdb_019c4764e819792085069106c067f5e9.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=644/signal=7430/mdb_019c4764ef687fb2a134d3f9340ee0a3.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=644/signal=7441/mdb_019c4764f00874a3bd4e27a86bba1a1d.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=650/signal=7434/mdb_019c47661f3f77a290620f01f6a6df5b.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=650/signal=7440/mdb_019c47661ffe79139754bf28b66b893e.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=651/signal=7430/mdb_019c4766203e7bc29e3112a07c12ce46.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=651/signal=7434/mdb_019c4766204076d1ab809cce93676293.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=651/signal=7439/mdb_019c476621077570a2b1681cbd2c5bfb.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=651/signal=7440/mdb_019c4766210c76a1bc4b2e9bc7a210dd.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=651/signal=7443/mdb_019c4766213375c2b4c103dc2309baca.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=652/signal=7434/mdb_019c476628d57862ac956ffccf82b3a8.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=652/signal=7440/mdb_019c476629857133ac6210053695b4ee.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=658/signal=7433/mdb_019c4766f6d37eb0beccc9b6dededaba.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=658/signal=7434/mdb_019c4766f6d47763a19357b66b7ae19a.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=658/signal=7436/mdb_019c4766f6d47763a1935798d3094d05.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=658/signal=7440/mdb_019c4766f755751089a1c813e4f569fa.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=658/signal=7442/mdb_019c4766f8437783bfb998c6b2ffb38b.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=659/signal=7433/mdb_019c4766f7a176a2b697eec9c49826b8.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=659/signal=7436/mdb_019c4766f79e71a2a7afa7a566de6397.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=660/signal=7433/mdb_019c4766ff967b918139a58ab13b097a.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=660/signal=7436/mdb_019c4766ff967b918139a56ce1207a34.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=666/signal=7429/mdb_019c4767d2a772429a09d6e8b18baa55.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=666/signal=7433/mdb_019c4767d2a879718c08cd0c68c408cf.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=667/signal=7429/mdb_019c4767d35e76b2b4cd2dd8d0b24994.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=667/signal=7433/mdb_019c4767d3607753a0dc305e7b66060e.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=668/signal=7429/mdb_019c4767db287460923e75032f65a669.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=668/signal=7432/mdb_019c4767db297792ab5e16ebc18c733f.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=668/signal=7433/mdb_019c4767db287460923e753be61865ea.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=668/signal=7434/mdb_019c4767db297792ab5e16fdacc6cdf8.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=668/signal=7439/mdb_019c4767dbc17c218a4de03cd8bf0a6a.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=674/signal=7429/mdb_019c47686fd67340b5b91acfdc6e5c18.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=674/signal=7434/mdb_019c47686fd779608a3a258048f2aefc.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=674/signal=7436/mdb_019c47686fd779608a3a25a13c3631f1.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=674/signal=7439/mdb_019c4768706b719087d2ef6edf52ad71.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=674/signal=7443/mdb_019c4768716878a296c7104690e04e27.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=675/signal=7429/mdb_019c476870e177e1b209ba609e8aeeea.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=675/signal=7443/mdb_019c476872da7af1b9076211f0b73aa1.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=676/signal=7429/mdb_019c476879c3758083ca942d6c668d3d.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=676/signal=7443/mdb_019c47687b4f7ef0b73f9de288973e0d.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=682/signal=7431/mdb_019c4777cdc072f388a73c1cf2b709f2.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=682/signal=7434/mdb_019c4777cdc17ba2b934b348027068d5.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=682/signal=7437/mdb_019c4777ce207340ae80286b29076e94.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=682/signal=7442/mdb_019c4777cf7878b3b2fe2c52c37fe20f.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=682/signal=7443/mdb_019c4777cf7878b3b2fe2c6757fdb7bf.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=683/signal=7434/mdb_019c4777ce9d7430a70c2e5af3c8382e.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=683/signal=7442/mdb_019c4777d0477730b835a7aceb1a5bd9.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=684/signal=7434/mdb_019c4777d6077b13aea1b4027adf7cf9.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=684/signal=7442/mdb_019c4777d7617452aeac495b7909c695.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=690/signal=7436/mdb_019c47784ff674f281706d0f2ff0a4f2.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=690/signal=7437/mdb_019c477850497521b29f17277b4a444c.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=691/signal=7436/mdb_019c477850f87c108c7ea74a11278aef.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=691/signal=7437/mdb_019c4778514975518320b4067da3e1a8.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=692/signal=7432/mdb_019c4778587d71c08bc508dbb84802a5.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=692/signal=7435/mdb_019c4778587d71c08bc508af1a3ab27f.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=692/signal=7436/mdb_019c4778587e7860bbc269e9c64197a8.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=692/signal=7437/mdb_019c477858c27d82935b9944596aacca.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=692/signal=7439/mdb_019c477858fc73d0b9170228d11abb43.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=698/signal=7433/mdb_019c477b80247db099382901f14d3c70.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=698/signal=7443/mdb_019c477b82027660a13812fed5751753.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=699/signal=7431/mdb_019c477b7f2c7d308c67800e7c73e621.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=699/signal=7433/mdb_019c477b7f2d7091802411bbcc273368.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=699/signal=7435/mdb_019c477b7f2d7091802411ecf8d76293.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=699/signal=7436/mdb_019c477b7f2d7091802411c45e77b96c.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=699/signal=7443/mdb_019c477b80b178d190150a5f00e1754c.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=700/signal=7433/mdb_019c477b88e976109d8c3dd40308d299.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=700/signal=7443/mdb_019c477b8a747641af0e1a9440f9f64c.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=708/signal=7431/mdb_019c477ce0997bf1a349533cd768a0e3.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=708/signal=7438/mdb_019c477ce1d479c29b9c80ea72073518.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=709/signal=7431/mdb_019c477ce54c7343b453d25ad9436f54.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=709/signal=7438/mdb_019c477ce69873e3a5f649fd91d6c087.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=710/signal=7431/mdb_019c477ce8957c63994de3eaa2522095.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=710/signal=7435/mdb_019c477ce8967c73bcae4d273374f9bb.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=710/signal=7436/mdb_019c477ce8977db295f827f96b6ec929.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=710/signal=7438/mdb_019c477ce9e27040870709bdb48d73cf.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=710/signal=7441/mdb_019c477cea2c7cb3ae3796092d8f0b32.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=718/signal=7438/mdb_019c477de4897491ac761859147db72c.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=718/signal=7440/mdb_019c477de4997702b1c7fa8e263092a3.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=719/signal=7430/mdb_019c477de4037a7298d755fbf0c7cfc6.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=719/signal=7432/mdb_019c477de4047a11befde5c24b1f3c17.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=719/signal=7438/mdb_019c477de59e76919914ac93f8a12234.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=719/signal=7440/mdb_019c477de5aa7631853432385a1331b2.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=719/signal=7442/mdb_019c477de5d976a08691ce3a0ef2647e.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=720/signal=7438/mdb_019c477dee0670f1a50fb308ab4c8d33.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=720/signal=7440/mdb_019c477dee177551b90097eebf7efd28.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=728/signal=7436/mdb_019c477e7c9d7d13ada306270548dd4c.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=728/signal=7442/mdb_019c477e7e177b30bc71e64d509ff222.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=729/signal=7429/mdb_019c477e7d607fe286367d8e760cfb31.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=729/signal=7431/mdb_019c477e7d6170709693f8ee47156f3c.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=729/signal=7436/mdb_019c477e7d6170709693f913410bee93.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=729/signal=7439/mdb_019c477e7eea7d63b6c6bf62afb3e63e.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=729/signal=7442/mdb_019c477e7f0877a0badecb49044e99c6.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=730/signal=7436/mdb_019c477e85ff7303ba60cd2f7b2207a3.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=730/signal=7442/mdb_019c477e87467a42b38d4fb8ae4a9b5a.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=738/signal=7429/mdb_019c477f50db73c38c920b77fd658cf7.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=738/signal=7432/mdb_019c477f50dc7b018046ae436d0a06c2.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=738/signal=7433/mdb_019c477f50dd7712b0c49c1496b858cf.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=738/signal=7435/mdb_019c477f50dc7b018046ae1c055696b0.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=738/signal=7439/mdb_019c477f5262727184b6a1a44c50d96f.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=739/signal=7433/mdb_019c477f502576008d34e4aabc8acd69.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=739/signal=7435/mdb_019c477f50267bf0a81b5cee6e3a695d.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=740/signal=7433/mdb_019c477f59927bf09768579a824bf9b1.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=740/signal=7435/mdb_019c477f59937d019c4beca464c4f827.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=748/signal=7429/mdb_019c4780632579519e8ddaa280b1b8f1.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=748/signal=7432/mdb_019c478063277d9384f4569f742cd8c7.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=748/signal=7437/mdb_019c4780643b77d18d2d25922703d522.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=748/signal=7438/mdb_019c4780644d7743b4591259dd8a0b2b.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=748/signal=7443/mdb_019c4780648879008a0336fad5510082.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=749/signal=7438/mdb_019c4780658c708398214a82e8e3741a.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=749/signal=7443/mdb_019c478065ba76208453c0cc8a4db391.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=750/signal=7438/mdb_019c47806d347f61b3f5ca58c7cc6e58.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=750/signal=7443/mdb_019c47806d677df2a2389aa418638b7b.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=760/signal=7440/mdb_019c47814b9f7ee1aec52d784b8e9985.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=760/signal=7443/mdb_019c47814bc47600926ef2384f4e227a.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=761/signal=7429/mdb_019c47814b2179c19836a48d0d7c7cdd.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=761/signal=7437/mdb_019c47814c7e7940a58b27d292320573.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=761/signal=7438/mdb_019c47814c8e7f01b93a077a7f61dccc.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=761/signal=7440/mdb_019c47814c9f785089dce016039d2208.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=761/signal=7443/mdb_019c47814cc373d0b0a680b59d9fd609.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=762/signal=7440/mdb_019c478154967762ac23c2fbae85b479.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=762/signal=7443/mdb_019c478154ac7bf2add8b944068ffe8b.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=772/signal=7430/mdb_019c478392827b30a18e060b4a90dd00.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=772/signal=7433/mdb_019c478392827b30a18e06268765b0c4.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=772/signal=7436/mdb_019c478392837252895cd6a507f9e5f4.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=772/signal=7439/mdb_019c478393b8787080e010ee4c8de5ba.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=772/signal=7442/mdb_019c478393cf77b28eb88a2f06c6ba86.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=773/signal=7430/mdb_019c4783938a7313bad2f325859e7855.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=773/signal=7442/mdb_019c478394e77701bcc9b06f6b351d88.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=774/signal=7430/mdb_019c47839b4f7d818c1968e56d7fb422.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=774/signal=7442/mdb_019c47839c857d208e705e041f5aa60d.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=780/signal=7430/mdb_019c478619757ce3a0acc4ed40b6ff15.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=780/signal=7443/mdb_019c47861ae870e28e381c1a67d330e7.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=781/signal=7430/mdb_019c47861a5b7af3b99fe9538e0f7384.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=781/signal=7443/mdb_019c47861bd17c339ade891f781706cd.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=782/signal=7430/mdb_019c478622367b10a047243953a29947.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=782/signal=7431/mdb_019c478622377be1b78fc0194c0518b6.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=782/signal=7437/mdb_019c4786234d7c51bff80abd1a369b80.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=782/signal=7440/mdb_019c47862362714093806c3c27e0a7e2.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=782/signal=7443/mdb_019c4786237f72d0bc651c9a95896813.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=788/signal=7431/mdb_019c478727f37a60b91f6900c67f8683.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=788/signal=7434/mdb_019c478727f37a60b91f692aedb50136.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=788/signal=7437/mdb_019c4787290b7010944d6961f473d784.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=788/signal=7438/mdb_019c4787292278d39c11d64bc7c56875.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=788/signal=7443/mdb_019c4787296b7e80b3f24db7c9aec877.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=789/signal=7434/mdb_019c478729017180b0562bbcac5117f4.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=789/signal=7443/mdb_019c47872a8774c298dc5b9287220e05.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=790/signal=7434/mdb_019c478731497122b30077131c2e2076.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=790/signal=7443/mdb_019c4787328c74429aebe7714d3f490c.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=796/signal=7431/mdb_019c4788cf167fd2bc38767cbd2d9de2.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=796/signal=7434/mdb_019c4788cf167fd2bc3876882645c3a5.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=797/signal=7431/mdb_019c4788d3ca76a1ac0e8dee6f4f2437.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=797/signal=7434/mdb_019c4788d3d27e62bf8556898988b324.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=798/signal=7430/mdb_019c4788d7e973d0919a464fd49bae35.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=798/signal=7431/mdb_019c4788d7eb7d23b9b0340ea6e32d87.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=798/signal=7433/mdb_019c4788d7ea7f93ae523c6a23b0272a.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=798/signal=7434/mdb_019c4788d7ea7f93ae523c842a6908c1.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=798/signal=7441/mdb_019c4788d92f7d728636394b89116c0a.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=808/signal=7433/mdb_019c4789900678f2b567801348ae623f.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=808/signal=7435/mdb_019c478990077151b474f5a98b31d565.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=809/signal=7433/mdb_019c478994b37433b7c85d4e6bc31d05.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=809/signal=7435/mdb_019c478994b37433b7c85d65fb8e0684.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=810/signal=7433/mdb_019c478999027580ad5a569de2db38b6.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=810/signal=7435/mdb_019c478999037de3a728824e6c34343b.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=810/signal=7440/mdb_019c47899a3870a3807f445c5f0622e1.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=810/signal=7441/mdb_019c47899a497860a1d7b06e45a32ef5.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=810/signal=7442/mdb_019c47899a4b7372adae16a43f2fc4b9.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=820/signal=7433/mdb_019c478a705e78d087caa04744d4f5ab.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=820/signal=7443/mdb_019c478a712373a2a59266d0b1785815.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=821/signal=7433/mdb_019c478a710f709298a11594a6cc0ae1.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=821/signal=7435/mdb_019c478a710f709298a115a5c608efe5.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=821/signal=7441/mdb_019c478a71e379b38e495c9baf6466da.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=821/signal=7442/mdb_019c478a71e87483ad17b97debc763b7.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=821/signal=7443/mdb_019c478a71ed7c2081d25621e643a89b.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=822/signal=7433/mdb_019c478a796d7473ad7a6586f6920121.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=822/signal=7443/mdb_019c478a7a0a7c9284217be1aa6b81d1.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=836/signal=7429/mdb_019c478bd19a7e2299ec54de54ca0057.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=836/signal=7430/mdb_019c478bd1987f428e2acbc0f768e893.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=836/signal=7433/mdb_019c478bd19b72f0bcd96e4b2a709d1e.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=836/signal=7436/mdb_019c478bd19a7e2299ec54e3df0e4d2c.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=836/signal=7442/mdb_019c478bd24578c3b31ca4c9bc86f7d9.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=837/signal=7429/mdb_019c478bd2fe72039ee11ad6753714b7.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=837/signal=7442/mdb_019c478bd3c77103acfb1c95abc8a06d.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=838/signal=7429/mdb_019c478bdb2e784194df83338cb8529f.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=838/signal=7442/mdb_019c478bdbed7b32902b40e67c69b311.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=852/signal=7429/mdb_019c478f486b7f92aa41f51165e7694d.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=852/signal=7437/mdb_019c478f48fd72a29443fe3915d0c5b0.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=852/signal=7438/mdb_019c478f49527a31aab2eaf78bf2555c.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=852/signal=7439/mdb_019c478f497678739c32f19262e641ac.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=852/signal=7440/mdb_019c478f498677439a30a52d6d4ef4b3.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=853/signal=7438/mdb_019c478f4adb7ca3852ab3c354054726.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=853/signal=7440/mdb_019c478f4b1275c3a91911b399b3b1d0.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=854/signal=7438/mdb_019c478f52ec72e1a7d4335b97a69590.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=854/signal=7440/mdb_019c478f52fa73f399cb510ce23f28ec.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=868/signal=7433/mdb_019c478fe4d874b19a3e10e17a8d17b7.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=868/signal=7437/mdb_019c478fe53574a19b40dbb871c8ac32.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=869/signal=7433/mdb_019c478fe6267f828b9bccb1091bf3cf.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=869/signal=7437/mdb_019c478fe6a27622b1ac18035c50ca9a.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=870/signal=7431/mdb_019c478feeae7181822bbd7772a3f396.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=870/signal=7433/mdb_019c478feeae7181822bbd66a8ca3054.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=870/signal=7437/mdb_019c478fef2070d09b5736ab6d95887a.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=870/signal=7440/mdb_019c478fef5e73f3bcb642883eb35b58.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=870/signal=7443/mdb_019c478fef767851b020ba9e7f8282e7.parquet +0 -0
- marpledata-3.0.0.dev0/.mdb_cache/default/dataset=882/signal=7431/mdb_019c47902f5e74128ce586b5dbf4f146.parquet +0 -0
- marpledata-3.0.0.dev0/README.md +0 -111
- marpledata-3.0.0.dev0/experiment.py +0 -21
- marpledata-3.0.0.dev0/src/marple/__init__.py +0 -7
- marpledata-3.0.0.dev0/src/marple/db/dataset.py +0 -263
- marpledata-3.0.0.dev0/src/marple/db/datastream.py +0 -80
- marpledata-3.0.0.dev0/src/marple/db/signal.py +0 -103
- marpledata-3.0.0.dev0/src/marple/files.py +0 -164
- marpledata-3.0.0.dev0/src/marple/utils.py +0 -42
- marpledata-3.0.0.dev0/tests/test_files.py +0 -48
- {marpledata-3.0.0.dev0 → marpledata-3.0.1}/.python-version +0 -0
- {marpledata-3.0.0.dev0 → marpledata-3.0.1}/LICENSE +0 -0
- {marpledata-3.0.0.dev0 → marpledata-3.0.1}/examples_race.csv +0 -0
- {marpledata-3.0.0.dev0 → marpledata-3.0.1}/pytest.xml +0 -0
- {marpledata-3.0.0.dev0 → marpledata-3.0.1}/tests/examples_race.csv +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
*
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Signature: 8a477f597d28d172789f06886806bc55
|
|
Binary file
|
|
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
|
|
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
|
|
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.
|
|
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://
|
|
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
|
-
###
|
|
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
|
-
|
|
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
|
-
|
|
81
|
-
|
|
82
|
-
|
|
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**: `
|
|
91
|
-
- **Upload a file to a file-stream**: `
|
|
92
|
-
- **
|
|
93
|
-
- **Download original uploaded file**: `
|
|
94
|
-
- **Download parquet for a signal**: `
|
|
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]
|
|
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
|
+
|
|
Binary file
|
|
Binary file
|
|
@@ -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"])
|