diff --git a/Untitled.ipynb b/Untitled.ipynb new file mode 100644 index 0000000..f2cb724 --- /dev/null +++ b/Untitled.ipynb @@ -0,0 +1,616 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 85, + "id": "f8ce6f06", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/Users/joostw/code/pennsieve-agent-python/src\n" + ] + } + ], + "source": [ + "cd /Users/joostw/code/pennsieve-agent-python/src" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "id": "b7d8b48a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The autoreload extension is already loaded. To reload it, use:\n", + " %reload_ext autoreload\n" + ] + } + ], + "source": [ + "%load_ext autoreload\n", + "%autoreload 2" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "id": "df3ff17d", + "metadata": {}, + "outputs": [], + "source": [ + "from pennsieve import Pennsieve\n", + "import matplotlib.pyplot as plt\n", + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "id": "de3be532", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Please set the dataset with use_dataset([name])\n" + ] + }, + { + "data": { + "text/plain": [ + "dataset_id: \"N:dataset:35881ab1-e289-42b6-a21c-7ded18b54be7\"" + ] + }, + "execution_count": 88, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "p = Pennsieve()\n", + "p.use_dataset('N:dataset:35881ab1-e289-42b6-a21c-7ded18b54be7')" + ] + }, + { + "cell_type": "markdown", + "id": "ae3d68b8", + "metadata": {}, + "source": [ + "### Get channel objects for package\n", + "Using the `getChannels` method, we get channel objects, their names, sampling rates etc." + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "id": "41d71081", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "id: \"N:channel:33ecdd36-b93b-4691-95ef-7350c00454ee\"\n", + "name: \"pulse\"\n", + "start_time: 1301921822000000\n", + "end_time: 1301922421990000\n", + "unit: \"uV\"\n", + "rate: 200.0\n", + "\n" + ] + } + ], + "source": [ + "channels = p.timeseries.getChannels(p.dataset, 'N:package:8c223e2a-f259-4869-b888-fd29ec2a8ee4', True)\n", + "print(channels[0])" + ] + }, + { + "cell_type": "markdown", + "id": "238a371d", + "metadata": {}, + "source": [ + "### Get range of data as for list of channels\n", + "Using the `getRangeForChannels`, we get the data for a set of channels as a Pandas Dataframe.\n", + "\n", + "We are getting 2 channels and 2 seconds of data at 200Hz" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "id": "ebdfa610", + "metadata": {}, + "outputs": [], + "source": [ + "res = p.timeseries.getRangeForChannels(p.dataset, 'N:package:8c223e2a-f259-4869-b888-fd29ec2a8ee4', [channels[1].id, channels[2].id],499,501, False, True)" + ] + }, + { + "cell_type": "markdown", + "id": "08e975aa", + "metadata": {}, + "source": [ + "### Simple plot of the data" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "id": "7eb84004", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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7rrrnHdzxBFH0KJFi7RzhICXn3uS748+hh+cPJLjjxvJokWLnD4w/pUXOGPkYM4YOZhnX3zTuqh6D6tWreKiM0ZzxsjBXHDhBVRXWxx5dVUVo0ePZsCAAbz00kv89Kc/pX///vTr149zzz2XPXv2+J43cuRIR9aOHTty7c9+CECV5zxVh3369OEnP/kJNXYdfvrppzRv3pwBAwYwbOhg/vl/f3Ge4TfXXMEJA7pz/LDBvvUkgPXfrOWME4Y5dRIEPfme6qy1ifaRsn5i/Q8O5W+alnNzLy2zgpjFkftZ1fG8PD56722211KB1wbedpJa5ZneIHKhfdo11XwChh2SVpWifvp268SEd99h/vz5PPXU09x87RVOlM+VV17Jrff8H29PmsmyZcuYPuljStoU8dFHH3HkkUfy8nufM+joYwAY/9abNGmSXufnn38+c+bMYc6cOZxz4SWARWf97qYbee655wLljhmCHodYfH1+LMKT/7ifMaNPYtmyZZx00kncfffdaTMWgDFjxjB33nxe/XAKh3U9nLvv/jMAixYt4r3xr/P6R1N57733+J//+R+SSb+t+bJ0vKpS67/dvnoc0pQiI8GDDz7I0UcfnflaDX4K4aKLLmLJkiW8NvELqioreOapJ3yvvfLKK3n++eeZM2cOP/zhD/nXA/cigFatWvHoIw/zm9/8BkgpoiDa5/7773fezTXXXMM555zje96p3zuX1yZ+wcvvT+I3v/0t119/PQUxg107dvCv//sL/x4/keff/ojb7/oTO3aXQ9UebrzxRn557bW8O3kWLVu04IknnqB1UZxVSxdQU1PDnDlzOP/887n//vuZO3cu8+bNo3Pnzjz00EO0KoqzaulC13mTJk1yZB0+fDijTzkDgDmzZ7vOU3U4f/58KioqePzxx53nGDlyJHPmzOHLGTO54lc3OO3m/B9ezCPPvRpoz3tfVaZe56VOIffQYsN5XzmdXiscHMq/phyQEA92kO0tYtEo5130Y/7v/+4HrFmCX8x/MpnkN7/5DX379qVfv378/e9/d377+9//zqBBg+jbty9LliwBYPr06RxzzDEMHDiQU086gdUrrAycTz/9NJf96Hyu/NG5jDtmIDfccIPTuIb1KObWW/5A//79GTZsGJs3W/nztm7dyvWXX8IPTzuRn549hvmzpqcEMyJpvP/AgQPp2NHKxzKgf1+SNVVESbJx40Z2795N/8FHIYTgkksu4c0332TOnDnccMMNTJgwgR+cPJLKigrKy/bwz4ce4A9/+EPOdXnSSSfRtGn6O1o4dzY/Ofc0jhl2NCeffDIbN24kGjH44uP3ufxnPwHg0ksv5c0330xdpPWtsWPHEotaM75+A4eyfv16AN566y3GnXkO8bw8unTpQrdu3Zg+PVU3997xB84/5Xh+8oMzUSnFly9fzujRo+nfvz+DBg1ixYoVVt1F4qDx/bfccgs33HAD+fmpgXbPnj2cdNJJzrt+6623nN8SiQS/vvpyzh1zLL/+xaVUVJQDcOqppzo+lT4DBjuyeyGEYPduyym8a9cu2rW3ItratWvH0KFDicXsNRKkaJ9nn32Wfv360b9/fy6++OK0e77wwgtceOGFvuU1aZpygJeXlSGE4JDmBaxbMI0TTzqJ5i1b0qxFC8aMGcN7k2Yiq3bz8ccfc9mPLqTPoc358Y9/zJtvvkmsZg+/++UvmDNnDgMGDGDFihU0a9bMllFSUVGBEIJ4zR5+98vLXecplJaW8vHHH3PSuNPYvm0rP770Etd5eh0eddRRrFu3zveZrHq0/g8fMYJmLVqm/T5z5kz69+/P2eNO5KVnHnPVf7Z7SlLJ93IP9bT+10es/wEd7aPj9rcXsmjDbv8fk9XWX7yC2rCNvTo243/P6J31vDt+92v69evHjTfeSIvCOFHTspLHjx/PjBkzuOOOO3j00UdZtWoVs2fPJhqN8u23qSRbbdq0YdasWfzjH//g3nvv5fHHH+fII4/k888/JxqN8vrbE3jwnju5/1GLIlkwbx7/fvcT4vE8zj3paP7nqqsh0oyK8jKGDx/On/70J2644QYee+wx/vCHP3Dttddy9TXX0nvQUeRV7eDkk09m8eLFqQeIN2H8W28xY8VW7rjzTtezvfbaawwcOJC8vDzWr19PcXExbZvmUVaVoLi4mPXr1zNgwADuuOMOZsyYwW9vv4eqhMmdN9/I9df/msLC9Dj31157jc8//5wjjjiCy2+4jUM6BlMsNTU1/PHmG7j/iecZ1qsLb73+KjfffDNPPvkkmzdvpkMHK0dghw4d2LJli2OjB3Gwb778b35+6Y8AWL9+PR2P6Ov8pp4HoKK8jJ59+/GbW//Iow/8hdtvv52HHnqIiy66iJtuuomzzz6byspKzGQSdq+A/FRk0ezZs/nmm284/fTTuffee53j+fn5vPHGGzRr1oxt27YxbNgwzjzzTACWLl3KQ4/8i3bd+3Prr6/m5Wee4Og/3uKqh3def4m/P/CA73M9/vjjnHrqqRQUFNCsWTOeefMD3/MU7fP10kXcddddTJkyhTZt2rjaI8CaNWtYtWoVJ554ou99AF58+jGee+wfYCb4+OOPnTo9tDj1PouLi1m/dQfbt2+jRYvmRO1BWNV1u3btePzxx7n33nt5551Uct/LLruMCRMm0KtXL+677z4KCwt9zwN44403OOmkkziiuD3rd1bw6GOP8bf77ks7r6amhueee44HtDqcOnUq/fv355AOHfjFb/+XI3v2tuvJv/1cdtll/P3vf6dr36Hc8vsbneOZDPmYYSUN1Bdg5kr7xKMGBbFIvaR1PjgsfzNpJ62pH7dss2bNuOSSS3jwwQddx88880zuuOMOACZOnMgVV1zhNP5WrVo556mp9eDBg1m9ejVgWW/nnXceffr04Q833cCKr5c4Ds8TTzyRps2ak5efT69evVi7Zg0AsXjc4cv1e02cOJHbfvdrzjt5JGeeeSa7d++mtLQ0JWheE84cO5I7bv29S/6FCxdy44038q9//QtI8Y4dmhc4YYZei+ew1kWUb1zBzs3fcP5530+rqzPOOIPVq1czb948Ro8ezR+u+5+Mdbt06VKWLV3MFT88m6OHDOaPf/xjRsstYi+179jCE+4q4LEH7yUSiXLRRRc5z9OsIO7Kqe+swDQMTj7Dei+nn30+kydPprS0lPXr13P22WcDljIvjBsuvt80Ta677jruuy99iwopJb///e/p168fo0ePZv369c7srFOnTowedTz9iltw2jk/YPZX01zX/unm3zD46GMYMXKk73Pff//9TJgwgXXr1nHZZZfxtzv/4OTld1WD/XzTJn3OueeeS5s21spgvT0CvPjii5x77rlEIsEhkxf8+Oe8O2U299xzD3/84x+dZ0zb9jGWZ1Ee0h0CkMlafuqpp9iwYQM9e/bkpZdeCjwPUjOUlkVx+hzaPFCx/s///A/HHXccI+06HDRoEGvWrGHu3Ln8z1VXcd3PfqRthZl+/a5du9i5cyfHH388AKd//3xHpWQMMDAEfQ9tTovCeK2zel5+3OEsvnNcTnuB1BbfGcs/0EKXJmycB0VtoHktnHi1xK9+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53LkkUfSs2dPZxGaF/fffz+9e/emT58+XHjhhU5beeWVV+jduzeGYaSeOd6E7du2MWrUCTRp0sTd/mqJmTNn0rdvX7p16+Z61kz49NNPGTBgAL1793bSNOQKvc1nex/XXHONb0bbWmG1/S7qSfkjpWyUP+BU4GtgBXBztvMHDx4svVi0aFHasYZGXl6eLCkpkVu3bpVSSvnXv/5V/u///m/O1x922GHOtQ2Np556Sl511VXug3u2yZo102XfPn3knDlzpJRSbtu2TSYSCSmllFOnTpUbNmyQRUVFgfd98MEH5WWXXeZ8nzhxohw/frw87bTTnGPJZFIWFxfLpUuXSimlvOWWW+Tjjz+edq/x48fLUaNGuY7dd9998sILL3TdT8f1118vb7/99gxPnn7e888/L88//3wppZRlZWXysMMOk6tWrZLbtm2TnTp1klu2bJFSSnnJJZfIiRMnSrlrvfz5RefIfzz0kJRSyoULF8rDDjsssKzdu3fLkSNHyqOPPlp+9dVXUkopp0yZIo855hiZSCRkIpGQw4YNk5988omUUspf/OIX8sknn3SuP/744+UHH3wgpZSytLRUlpWVpZWR6X6zZs2Sq1atSmtvpaWl0jRNKaWUc+fOlT169HB+u+SSS+Rjjz0mpZSyqqpK7tixI63MdevWyZKSElleXi6llPK8886TTz31lJTS6p9LliyRxx9/vPPMsqZS7lk2RU76YLx85JFH0ttfLTB06FD5xRdfSNM05bhx4+SECRMynr9jxw7Zs2dPuWbNGimllJs3b65VeXqbz/Q+vvrqK/mjH/0osI/krLfGXyvlXYdKmaiplZxeADOkj05tNLJSSjlBSnmElPJwKeVdjSXHviIajXL55Zdz//33ZzxvX1I6H3PMMSxduhSwrPVzzjmHcePG0b1795QlimWZ3Hzzzb4pnb///e87qy6nTJkSLGheEz74bBr9evegf//+ALRu3dpZ+Tps2DAnk2YQvKmA/VI1b9++nby8PI444gjAyrn/2muvZb3XunXrePfdd/nZz37mW7aUkpdffjnrqk/veUIIysrKSCQSVFRUEI/HadasGStXruSII45A+ZxGjx5tyVm1B2HE2G1vNLJr166MuWr8UjwLIaisrKS6upqqqipqampo3749jz/+OC+//DJ33HEHF110EYsWLSKRSDBmzBjAes9+2VKD7gdWmu6SkpK0a5o0SUVRldmpmQF2797N559/7qzCjcfjvhu7AE6dJRIJysvLnXro2bMnPXr0cJ8ciVPUtDkjBvfxTcnw3nvvMWjQIPr3789JJ50EWKmwL7vsMqfvvPbaa0568eHDh7vSiwO8/fbbHH300QwcOJDRo0c7/eA///kP55xzDp07dwasdNcKfumtV61axfDhwxk6dCi33JLKsJrpfSSTSX7729/yl7/8xbeuaoXVk+Gw4RCpn4CC706Ywn9vgk3z6/aeh/SFU7LvynXVVVfRr18/lyKGukvpPHHiRH7/+987ynHOnDnMnj2bvLw8evTowTXXXEOnTp0oKytj2LBh3HXXXWkpna+77jprh6e1a9NTOuuy3n47X69ahzCTnHzyyWzdupULLrgg7dmCkEsqYPXMNTU1TrqDV199lW+++cZ1Tnl5Oe+9954rL9GvfvUr/vKXv7izkmqYNGkS7du3d3LNBMF73rnnnstbb71Fhw4dKC8v5/7776dVq1YIIViyZAmrV6928vpUV1VBTTm3/eFGxn7/Ev7+979TVlbGxIkTfcsKSvE8fPhwRo0aRYcOHZBScvXVV9OzZ0969uzJ5MmTOf300zn33HN58803adGiBeeccw6rVq1i9OjR3H333WkZN4Pulw1vvPEGv/vd79iyZYuTvG3lypW0bduWyy67jLlz5zJ48GAeeOABiorc0VKHHnoov/nNb+jcuTMFBQWMHTuWsWPHBhemqMWq3Wm8/9atW/n5z3/O559/TpcuXZw+cuedd9K8eXPmz7f6944dO1ixYgXF3tTRdjruESNGMG3aNIQQPP744/zlL3/hvvvu4+uvv6ampoYTTjiB0tJSrr32Wi655BIWLlzom9762muv5corr+SSSy5xJbn7+uuvA9/HQw89xJlnnpnVQMqK0s2wfRkMSt9noa4QhinUAeo7pfN1113nJDMDy5Ju3rw5+XZKZ5UgLJ4hpfPVV1/NgAED/FM667IKQYIIk6dN5/l//5vJkyfzxhtv8NFHH+VUF7mkAgbLSn3xxRe57rrrOOqoo2jatKlTNwpvv/02xx57rFNX77zzDu3atWPwYP+t9SDzBiSZzps+fTqRSIQNGzawatUq7rvvPlauXEnLli155JFHOP/88xk5ciQlJSX2YjPJC2/8lx//+MesW7eOCRMmcPHFF2Oa7rTFmVI8L1++nMWLF7Nu3TrWr1/Pxx9/zOeff552XiKRYNKkSdx777189dVXrFy50pUTqbb38+Lss89myZIlvPnmm46Fm0gkmDVrFldeeSWzZ8+mqKiIu+9ON4R27NjBW2+9xapVq9iwYQNlZWX8+9//zlygCik23VtSTps2jeOOO44uXboAqT4yceJErrrqKue8li1b+vL7ataybt06Tj75ZPr27ctf//pXp+8kEglmzpzJu+++y/vvv8+dd97J119/zccff+yb3nrKlClOG9E3uwl6Hxs2bOCVV17hmmuuyfz8uWBNPfP9fJcs/xws9PpEfaZ0Xr16tZMiWD/fe81ep3T2oLhzF44fNpg2LZpCLJ9TTz2VWbNmOdPwTPCmAs6E4cOHM2nSJAA++OADJyulfi9dQU+ZMoXx48czYcIEKisr2b17Nz/60Y8cZZNIJHj99deZOTOVcviyyy5LS+/sd95//vMfxo0bRywWo127dhx77LHMmDGDrl27csYZZ3DGGdYWgY8++igRe7/jJ559nvfee895lsrKSrZt28YDDzzgWNCZUjx/8sknDBs2zHEMnnLKKY4C1FFcXMzAgQPp2rUrAN/73veYNm0affr04Re/+AUAd9xxB0uXLs3pfkE47rjjWLFiBdu2baO4uJji4mInTfS5557L3XffzTfffOPUxRVXXEHr1q3p0qWLQ4udc845fPHFF/zoRz8KLkhFSNW4F3sF9RG/45nSi19zzTVcf/31nHnmmXz66adOAEZxcTFt2rShqKiIoqIijjvuOObOnZuxb/odD3ofhxxyCMuXL6dbt26ANXPt1q2bk6W0Vlg92dp58JD+tb82R4SWfx2hPlM6+1l5tUHWlM4enHza6cxbvIzynZtJJBJ89tln9OrVK2s5fqmAM0FlCq2qquKee+5xsm2C9fyfffaZK+3vn//8Z9atW8fq1at58cUXOfHEE11W5sSJEznyyCNddIA3vXPQeZ07d+bjjz9GSklZWRnTpk1zsm4qOXfs2ME//vEPfvbDsyBWSOfOnZ0Z0eLFi6msrKRt27au9MeZUjx37tyZzz77jEQiQU1NDZ999pkvTTN06FB27NjhbCX58ccf06tXL44++minnDPPPDPn++lYvny5Y0XPmjWL6upqWrduzSGHHEKnTp0cX9NHH31Er1696NSpk1PmFVdcQefO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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "res.plot()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "d25c1f6a", + "metadata": {}, + "source": [ + "### Get range of data as for list of channels\n", + "Using the `getRangeForChannels`, we get the data for a set of channels as a Pandas Dataframe.\n", + "\n", + "We are getting all channels (11) and 100 seconds of data at 200Hz" + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "id": "179512eb", + "metadata": {}, + "outputs": [], + "source": [ + "res = p.timeseries.getRangeForChannels(p.dataset, 'N:package:8c223e2a-f259-4869-b888-fd29ec2a8ee4', [], 401,501, False, True)" + ] + }, + { + "cell_type": "code", + "execution_count": 106, + "id": "9dc3a5f5", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "res.plot()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "f83a0eed", + "metadata": {}, + "source": [ + "### The Data Frame" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "id": "f3b9a8b2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
N:channel:33ecdd36-b93b-4691-95ef-7350c00454eeN:channel:20f451e0-20bc-4ab2-81c7-300f3f7f251dN:channel:61719747-7898-48f6-8136-811cc0a6cd64N:channel:f953a3fa-573a-4cf6-83c1-e49584fa6c40N:channel:b68da4f4-f174-4cbb-bfe6-333859ced6ccN:channel:3e07f423-1d15-4508-867e-013ec69692b0N:channel:b1c498af-1e8a-4f92-92e2-47497699f8eaN:channel:3c1ff981-7c1d-417d-b3ce-69932dab78caN:channel:ac8728e6-a65a-4ec0-bb94-f1ee3f38955bN:channel:965d99e4-f46a-4449-9c6e-430313a767d5N:channel:d8eeefc9-cf80-4614-830a-ea3800be3d8c
1.301922e+1599.99237131.9981693.128099-99.96185395.38414824.85694745.39559299.99237150.919357-26.35233199.992371
1.301922e+1599.99237137.0031286.271458-98.95475884.61127548.17273380.8880770.01525987.632561-50.88884099.992371
1.301922e+1599.99237164.9881749.414817-97.97818068.28412668.46723298.771652-99.96185399.961853-71.79370199.992371
1.301922e+1599.99237176.00518812.527657-96.97108547.47081884.42816995.1094820.01525984.428169-87.60204399.992371
1.301922e+150.01525925.98611515.640497-95.96398923.57519095.10948270.72556399.99237145.395592-97.21522599.992371
....................................
1.301922e+150.01525938.986801-12.49713994.987411-75.333794-84.397652-95.0789640.015259-84.39765287.63256199.992371
1.301922e+150.01525982.993820-9.38429895.994507-56.168461-68.436714-98.74112799.992371-99.93133571.82421999.992371
1.301922e+150.01525998.985275-6.24094097.001602-33.310444-48.142216-80.8575590.015259-87.60204350.91935799.992371
1.301922e+150.01525981.010147-3.09758198.008698-8.255131-24.826429-45.365070-99.961853-50.88884026.38284999.992371
1.301922e+150.0152598.9875640.01525998.98527517.3189910.0152590.0152590.0152590.0152590.01525999.992371
\n", + "

20000 rows × 11 columns

\n", + "
" + ], + "text/plain": [ + " N:channel:33ecdd36-b93b-4691-95ef-7350c00454ee \\\n", + "1.301922e+15 99.992371 \n", + "1.301922e+15 99.992371 \n", + "1.301922e+15 99.992371 \n", + "1.301922e+15 99.992371 \n", + "1.301922e+15 0.015259 \n", + "... ... \n", + "1.301922e+15 0.015259 \n", + "1.301922e+15 0.015259 \n", + "1.301922e+15 0.015259 \n", + "1.301922e+15 0.015259 \n", + "1.301922e+15 0.015259 \n", + "\n", + " N:channel:20f451e0-20bc-4ab2-81c7-300f3f7f251d \\\n", + "1.301922e+15 31.998169 \n", + "1.301922e+15 37.003128 \n", + "1.301922e+15 64.988174 \n", + "1.301922e+15 76.005188 \n", + "1.301922e+15 25.986115 \n", + "... ... \n", + "1.301922e+15 38.986801 \n", + "1.301922e+15 82.993820 \n", + "1.301922e+15 98.985275 \n", + "1.301922e+15 81.010147 \n", + "1.301922e+15 8.987564 \n", + "\n", + " N:channel:61719747-7898-48f6-8136-811cc0a6cd64 \\\n", + "1.301922e+15 3.128099 \n", + "1.301922e+15 6.271458 \n", + "1.301922e+15 9.414817 \n", + "1.301922e+15 12.527657 \n", + "1.301922e+15 15.640497 \n", + "... ... \n", + "1.301922e+15 -12.497139 \n", + "1.301922e+15 -9.384298 \n", + "1.301922e+15 -6.240940 \n", + "1.301922e+15 -3.097581 \n", + "1.301922e+15 0.015259 \n", + "\n", + " N:channel:f953a3fa-573a-4cf6-83c1-e49584fa6c40 \\\n", + "1.301922e+15 -99.961853 \n", + "1.301922e+15 -98.954758 \n", + "1.301922e+15 -97.978180 \n", + "1.301922e+15 -96.971085 \n", + "1.301922e+15 -95.963989 \n", + "... ... \n", + "1.301922e+15 94.987411 \n", + "1.301922e+15 95.994507 \n", + "1.301922e+15 97.001602 \n", + "1.301922e+15 98.008698 \n", + "1.301922e+15 98.985275 \n", + "\n", + " N:channel:b68da4f4-f174-4cbb-bfe6-333859ced6cc \\\n", + "1.301922e+15 95.384148 \n", + "1.301922e+15 84.611275 \n", + "1.301922e+15 68.284126 \n", + "1.301922e+15 47.470818 \n", + "1.301922e+15 23.575190 \n", + "... ... \n", + "1.301922e+15 -75.333794 \n", + "1.301922e+15 -56.168461 \n", + "1.301922e+15 -33.310444 \n", + "1.301922e+15 -8.255131 \n", + "1.301922e+15 17.318991 \n", + "\n", + " N:channel:3e07f423-1d15-4508-867e-013ec69692b0 \\\n", + "1.301922e+15 24.856947 \n", + "1.301922e+15 48.172733 \n", + "1.301922e+15 68.467232 \n", + "1.301922e+15 84.428169 \n", + "1.301922e+15 95.109482 \n", + "... ... \n", + "1.301922e+15 -84.397652 \n", + "1.301922e+15 -68.436714 \n", + "1.301922e+15 -48.142216 \n", + "1.301922e+15 -24.826429 \n", + "1.301922e+15 0.015259 \n", + "\n", + " N:channel:b1c498af-1e8a-4f92-92e2-47497699f8ea \\\n", + "1.301922e+15 45.395592 \n", + "1.301922e+15 80.888077 \n", + "1.301922e+15 98.771652 \n", + "1.301922e+15 95.109482 \n", + "1.301922e+15 70.725563 \n", + "... ... \n", + "1.301922e+15 -95.078964 \n", + "1.301922e+15 -98.741127 \n", + "1.301922e+15 -80.857559 \n", + "1.301922e+15 -45.365070 \n", + "1.301922e+15 0.015259 \n", + "\n", + " N:channel:3c1ff981-7c1d-417d-b3ce-69932dab78ca \\\n", + "1.301922e+15 99.992371 \n", + "1.301922e+15 0.015259 \n", + "1.301922e+15 -99.961853 \n", + "1.301922e+15 0.015259 \n", + "1.301922e+15 99.992371 \n", + "... ... \n", + "1.301922e+15 0.015259 \n", + "1.301922e+15 99.992371 \n", + "1.301922e+15 0.015259 \n", + "1.301922e+15 -99.961853 \n", + "1.301922e+15 0.015259 \n", + "\n", + " N:channel:ac8728e6-a65a-4ec0-bb94-f1ee3f38955b \\\n", + "1.301922e+15 50.919357 \n", + "1.301922e+15 87.632561 \n", + "1.301922e+15 99.961853 \n", + "1.301922e+15 84.428169 \n", + "1.301922e+15 45.395592 \n", + "... ... \n", + "1.301922e+15 -84.397652 \n", + "1.301922e+15 -99.931335 \n", + "1.301922e+15 -87.602043 \n", + "1.301922e+15 -50.888840 \n", + "1.301922e+15 0.015259 \n", + "\n", + " N:channel:965d99e4-f46a-4449-9c6e-430313a767d5 \\\n", + "1.301922e+15 -26.352331 \n", + "1.301922e+15 -50.888840 \n", + "1.301922e+15 -71.793701 \n", + "1.301922e+15 -87.602043 \n", + "1.301922e+15 -97.215225 \n", + "... ... \n", + "1.301922e+15 87.632561 \n", + "1.301922e+15 71.824219 \n", + "1.301922e+15 50.919357 \n", + "1.301922e+15 26.382849 \n", + "1.301922e+15 0.015259 \n", + "\n", + " N:channel:d8eeefc9-cf80-4614-830a-ea3800be3d8c \n", + "1.301922e+15 99.992371 \n", + "1.301922e+15 99.992371 \n", + "1.301922e+15 99.992371 \n", + "1.301922e+15 99.992371 \n", + "1.301922e+15 99.992371 \n", + "... ... \n", + "1.301922e+15 99.992371 \n", + "1.301922e+15 99.992371 \n", + "1.301922e+15 99.992371 \n", + "1.301922e+15 99.992371 \n", + "1.301922e+15 99.992371 \n", + "\n", + "[20000 rows x 11 columns]" + ] + }, + "execution_count": 94, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "res" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5b744ae1", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "54612eea", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/poetry.lock b/poetry.lock index 453bf31..fea148f 100644 --- a/poetry.lock +++ b/poetry.lock @@ -291,92 +291,6 @@ files = [ ] markers = {main = "platform_system == \"Windows\"", dev = "platform_system == \"Windows\" or sys_platform == \"win32\" or os_name == \"nt\""} -[[package]] -name = "coverage" -version = "7.6.1" -description = "Code coverage measurement for Python" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -markers = "python_version < \"3.10\"" -files = [ - {file = "coverage-7.6.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b06079abebbc0e89e6163b8e8f0e16270124c154dc6e4a47b413dd538859af16"}, - {file = "coverage-7.6.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cf4b19715bccd7ee27b6b120e7e9dd56037b9c0681dcc1adc9ba9db3d417fa36"}, - {file = "coverage-7.6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61c0abb4c85b095a784ef23fdd4aede7a2628478e7baba7c5e3deba61070a02"}, - {file = "coverage-7.6.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd21f6ae3f08b41004dfb433fa895d858f3f5979e7762d052b12aef444e29afc"}, - {file = "coverage-7.6.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f59d57baca39b32db42b83b2a7ba6f47ad9c394ec2076b084c3f029b7afca23"}, - {file = "coverage-7.6.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a1ac0ae2b8bd743b88ed0502544847c3053d7171a3cff9228af618a068ed9c34"}, - {file = "coverage-7.6.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e6a08c0be454c3b3beb105c0596ebdc2371fab6bb90c0c0297f4e58fd7e1012c"}, - {file = "coverage-7.6.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f5796e664fe802da4f57a168c85359a8fbf3eab5e55cd4e4569fbacecc903959"}, - {file = "coverage-7.6.1-cp310-cp310-win32.whl", hash = "sha256:7bb65125fcbef8d989fa1dd0e8a060999497629ca5b0efbca209588a73356232"}, - {file = "coverage-7.6.1-cp310-cp310-win_amd64.whl", hash = "sha256:3115a95daa9bdba70aea750db7b96b37259a81a709223c8448fa97727d546fe0"}, - {file = "coverage-7.6.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7dea0889685db8550f839fa202744652e87c60015029ce3f60e006f8c4462c93"}, - {file = "coverage-7.6.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ed37bd3c3b063412f7620464a9ac1314d33100329f39799255fb8d3027da50d3"}, - {file = "coverage-7.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d85f5e9a5f8b73e2350097c3756ef7e785f55bd71205defa0bfdaf96c31616ff"}, - {file = "coverage-7.6.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bc572be474cafb617672c43fe989d6e48d3c83af02ce8de73fff1c6bb3c198d"}, - {file = "coverage-7.6.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c0420b573964c760df9e9e86d1a9a622d0d27f417e1a949a8a66dd7bcee7bc6"}, - {file = "coverage-7.6.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1f4aa8219db826ce6be7099d559f8ec311549bfc4046f7f9fe9b5cea5c581c56"}, - {file = "coverage-7.6.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:fc5a77d0c516700ebad189b587de289a20a78324bc54baee03dd486f0855d234"}, - {file = "coverage-7.6.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b48f312cca9621272ae49008c7f613337c53fadca647d6384cc129d2996d1133"}, - {file = "coverage-7.6.1-cp311-cp311-win32.whl", hash = "sha256:1125ca0e5fd475cbbba3bb67ae20bd2c23a98fac4e32412883f9bcbaa81c314c"}, - {file = "coverage-7.6.1-cp311-cp311-win_amd64.whl", hash = "sha256:8ae539519c4c040c5ffd0632784e21b2f03fc1340752af711f33e5be83a9d6c6"}, - {file = "coverage-7.6.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:95cae0efeb032af8458fc27d191f85d1717b1d4e49f7cb226cf526ff28179778"}, - {file = "coverage-7.6.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5621a9175cf9d0b0c84c2ef2b12e9f5f5071357c4d2ea6ca1cf01814f45d2391"}, - {file = "coverage-7.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:260933720fdcd75340e7dbe9060655aff3af1f0c5d20f46b57f262ab6c86a5e8"}, - {file = "coverage-7.6.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07e2ca0ad381b91350c0ed49d52699b625aab2b44b65e1b4e02fa9df0e92ad2d"}, - {file = "coverage-7.6.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c44fee9975f04b33331cb8eb272827111efc8930cfd582e0320613263ca849ca"}, - {file = "coverage-7.6.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:877abb17e6339d96bf08e7a622d05095e72b71f8afd8a9fefc82cf30ed944163"}, - {file = "coverage-7.6.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3e0cadcf6733c09154b461f1ca72d5416635e5e4ec4e536192180d34ec160f8a"}, - {file = "coverage-7.6.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c3c02d12f837d9683e5ab2f3d9844dc57655b92c74e286c262e0fc54213c216d"}, - {file = "coverage-7.6.1-cp312-cp312-win32.whl", hash = "sha256:e05882b70b87a18d937ca6768ff33cc3f72847cbc4de4491c8e73880766718e5"}, - {file = "coverage-7.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:b5d7b556859dd85f3a541db6a4e0167b86e7273e1cdc973e5b175166bb634fdb"}, - {file = "coverage-7.6.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a4acd025ecc06185ba2b801f2de85546e0b8ac787cf9d3b06e7e2a69f925b106"}, - {file = "coverage-7.6.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a6d3adcf24b624a7b778533480e32434a39ad8fa30c315208f6d3e5542aeb6e9"}, - {file = "coverage-7.6.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0c212c49b6c10e6951362f7c6df3329f04c2b1c28499563d4035d964ab8e08c"}, - {file = "coverage-7.6.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6e81d7a3e58882450ec4186ca59a3f20a5d4440f25b1cff6f0902ad890e6748a"}, - {file = "coverage-7.6.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78b260de9790fd81e69401c2dc8b17da47c8038176a79092a89cb2b7d945d060"}, - {file = "coverage-7.6.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a78d169acd38300060b28d600344a803628c3fd585c912cacc9ea8790fe96862"}, - {file = "coverage-7.6.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2c09f4ce52cb99dd7505cd0fc8e0e37c77b87f46bc9c1eb03fe3bc9991085388"}, - {file = "coverage-7.6.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6878ef48d4227aace338d88c48738a4258213cd7b74fd9a3d4d7582bb1d8a155"}, - {file = "coverage-7.6.1-cp313-cp313-win32.whl", hash = "sha256:44df346d5215a8c0e360307d46ffaabe0f5d3502c8a1cefd700b34baf31d411a"}, - {file = "coverage-7.6.1-cp313-cp313-win_amd64.whl", hash = "sha256:8284cf8c0dd272a247bc154eb6c95548722dce90d098c17a883ed36e67cdb129"}, - {file = "coverage-7.6.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:d3296782ca4eab572a1a4eca686d8bfb00226300dcefdf43faa25b5242ab8a3e"}, - {file = "coverage-7.6.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:502753043567491d3ff6d08629270127e0c31d4184c4c8d98f92c26f65019962"}, - {file = "coverage-7.6.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a89ecca80709d4076b95f89f308544ec8f7b4727e8a547913a35f16717856cb"}, - {file = "coverage-7.6.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a318d68e92e80af8b00fa99609796fdbcdfef3629c77c6283566c6f02c6d6704"}, - {file = "coverage-7.6.1-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13b0a73a0896988f053e4fbb7de6d93388e6dd292b0d87ee51d106f2c11b465b"}, - {file = "coverage-7.6.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4421712dbfc5562150f7554f13dde997a2e932a6b5f352edcce948a815efee6f"}, - {file = "coverage-7.6.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:166811d20dfea725e2e4baa71fffd6c968a958577848d2131f39b60043400223"}, - {file = "coverage-7.6.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:225667980479a17db1048cb2bf8bfb39b8e5be8f164b8f6628b64f78a72cf9d3"}, - {file = "coverage-7.6.1-cp313-cp313t-win32.whl", hash = "sha256:170d444ab405852903b7d04ea9ae9b98f98ab6d7e63e1115e82620807519797f"}, - {file = "coverage-7.6.1-cp313-cp313t-win_amd64.whl", hash = "sha256:b9f222de8cded79c49bf184bdbc06630d4c58eec9459b939b4a690c82ed05657"}, - {file = "coverage-7.6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6db04803b6c7291985a761004e9060b2bca08da6d04f26a7f2294b8623a0c1a0"}, - {file = "coverage-7.6.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f1adfc8ac319e1a348af294106bc6a8458a0f1633cc62a1446aebc30c5fa186a"}, - {file = "coverage-7.6.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a95324a9de9650a729239daea117df21f4b9868ce32e63f8b650ebe6cef5595b"}, - {file = "coverage-7.6.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b43c03669dc4618ec25270b06ecd3ee4fa94c7f9b3c14bae6571ca00ef98b0d3"}, - {file = "coverage-7.6.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8929543a7192c13d177b770008bc4e8119f2e1f881d563fc6b6305d2d0ebe9de"}, - {file = "coverage-7.6.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:a09ece4a69cf399510c8ab25e0950d9cf2b42f7b3cb0374f95d2e2ff594478a6"}, - {file = "coverage-7.6.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:9054a0754de38d9dbd01a46621636689124d666bad1936d76c0341f7d71bf569"}, - {file = "coverage-7.6.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0dbde0f4aa9a16fa4d754356a8f2e36296ff4d83994b2c9d8398aa32f222f989"}, - {file = "coverage-7.6.1-cp38-cp38-win32.whl", hash = "sha256:da511e6ad4f7323ee5702e6633085fb76c2f893aaf8ce4c51a0ba4fc07580ea7"}, - {file = "coverage-7.6.1-cp38-cp38-win_amd64.whl", hash = "sha256:3f1156e3e8f2872197af3840d8ad307a9dd18e615dc64d9ee41696f287c57ad8"}, - {file = "coverage-7.6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:abd5fd0db5f4dc9289408aaf34908072f805ff7792632250dcb36dc591d24255"}, - {file = "coverage-7.6.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:547f45fa1a93154bd82050a7f3cddbc1a7a4dd2a9bf5cb7d06f4ae29fe94eaf8"}, - {file = "coverage-7.6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:645786266c8f18a931b65bfcefdbf6952dd0dea98feee39bd188607a9d307ed2"}, - {file = "coverage-7.6.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e0b2df163b8ed01d515807af24f63de04bebcecbd6c3bfeff88385789fdf75a"}, - {file = "coverage-7.6.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:609b06f178fe8e9f89ef676532760ec0b4deea15e9969bf754b37f7c40326dbc"}, - {file = "coverage-7.6.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:702855feff378050ae4f741045e19a32d57d19f3e0676d589df0575008ea5004"}, - {file = "coverage-7.6.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:2bdb062ea438f22d99cba0d7829c2ef0af1d768d1e4a4f528087224c90b132cb"}, - {file = "coverage-7.6.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:9c56863d44bd1c4fe2abb8a4d6f5371d197f1ac0ebdee542f07f35895fc07f36"}, - {file = "coverage-7.6.1-cp39-cp39-win32.whl", hash = "sha256:6e2cd258d7d927d09493c8df1ce9174ad01b381d4729a9d8d4e38670ca24774c"}, - {file = "coverage-7.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:06a737c882bd26d0d6ee7269b20b12f14a8704807a01056c80bb881a4b2ce6ca"}, - {file = "coverage-7.6.1-pp38.pp39.pp310-none-any.whl", hash = "sha256:e9a6e0eb86070e8ccaedfbd9d38fec54864f3125ab95419970575b42af7541df"}, - {file = "coverage-7.6.1.tar.gz", hash = "sha256:953510dfb7b12ab69d20135a0662397f077c59b1e6379a768e97c59d852ee51d"}, -] - -[package.extras] -toml = ["tomli ; python_full_version <= \"3.11.0a6\""] - [[package]] name = "coverage" version = "7.6.12" @@ -384,7 +298,6 @@ description = "Code coverage measurement for Python" optional = false python-versions = ">=3.9" groups = ["dev"] -markers = "python_version >= \"3.10\"" files = [ {file = "coverage-7.6.12-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:704c8c8c6ce6569286ae9622e534b4f5b9759b6f2cd643f1c1a61f666d534fe8"}, {file = "coverage-7.6.12-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ad7525bf0241e5502168ae9c643a2f6c219fa0a283001cee4cf23a9b7da75879"}, @@ -461,7 +374,7 @@ description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" groups = ["dev"] -markers = "python_version < \"3.11\"" +markers = "python_version <= \"3.10\"" files = [ {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, @@ -470,75 +383,6 @@ files = [ [package.extras] test = ["pytest (>=6)"] -[[package]] -name = "grpcio" -version = "1.70.0" -description = "HTTP/2-based RPC framework" -optional = false -python-versions = ">=3.8" -groups = ["main"] -markers = "python_version < \"3.10\"" -files = [ - {file = "grpcio-1.70.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:95469d1977429f45fe7df441f586521361e235982a0b39e33841549143ae2851"}, - {file = "grpcio-1.70.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:ed9718f17fbdb472e33b869c77a16d0b55e166b100ec57b016dc7de9c8d236bf"}, - {file = "grpcio-1.70.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:374d014f29f9dfdb40510b041792e0e2828a1389281eb590df066e1cc2b404e5"}, - {file = "grpcio-1.70.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2af68a6f5c8f78d56c145161544ad0febbd7479524a59c16b3e25053f39c87f"}, - {file = "grpcio-1.70.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce7df14b2dcd1102a2ec32f621cc9fab6695effef516efbc6b063ad749867295"}, - {file = "grpcio-1.70.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c78b339869f4dbf89881e0b6fbf376313e4f845a42840a7bdf42ee6caed4b11f"}, - {file = "grpcio-1.70.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:58ad9ba575b39edef71f4798fdb5c7b6d02ad36d47949cd381d4392a5c9cbcd3"}, - {file = "grpcio-1.70.0-cp310-cp310-win32.whl", hash = "sha256:2b0d02e4b25a5c1f9b6c7745d4fa06efc9fd6a611af0fb38d3ba956786b95199"}, - {file = "grpcio-1.70.0-cp310-cp310-win_amd64.whl", hash = "sha256:0de706c0a5bb9d841e353f6343a9defc9fc35ec61d6eb6111802f3aa9fef29e1"}, - {file = "grpcio-1.70.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:17325b0be0c068f35770f944124e8839ea3185d6d54862800fc28cc2ffad205a"}, - {file = "grpcio-1.70.0-cp311-cp311-macosx_10_14_universal2.whl", hash = "sha256:dbe41ad140df911e796d4463168e33ef80a24f5d21ef4d1e310553fcd2c4a386"}, - {file = "grpcio-1.70.0-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:5ea67c72101d687d44d9c56068328da39c9ccba634cabb336075fae2eab0d04b"}, - {file = "grpcio-1.70.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cb5277db254ab7586769e490b7b22f4ddab3876c490da0a1a9d7c695ccf0bf77"}, - {file = "grpcio-1.70.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7831a0fc1beeeb7759f737f5acd9fdcda520e955049512d68fda03d91186eea"}, - {file = "grpcio-1.70.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:27cc75e22c5dba1fbaf5a66c778e36ca9b8ce850bf58a9db887754593080d839"}, - {file = "grpcio-1.70.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d63764963412e22f0491d0d32833d71087288f4e24cbcddbae82476bfa1d81fd"}, - {file = "grpcio-1.70.0-cp311-cp311-win32.whl", hash = "sha256:bb491125103c800ec209d84c9b51f1c60ea456038e4734688004f377cfacc113"}, - {file = "grpcio-1.70.0-cp311-cp311-win_amd64.whl", hash = "sha256:d24035d49e026353eb042bf7b058fb831db3e06d52bee75c5f2f3ab453e71aca"}, - {file = "grpcio-1.70.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:ef4c14508299b1406c32bdbb9fb7b47612ab979b04cf2b27686ea31882387cff"}, - {file = "grpcio-1.70.0-cp312-cp312-macosx_10_14_universal2.whl", hash = "sha256:aa47688a65643afd8b166928a1da6247d3f46a2784d301e48ca1cc394d2ffb40"}, - {file = "grpcio-1.70.0-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:880bfb43b1bb8905701b926274eafce5c70a105bc6b99e25f62e98ad59cb278e"}, - {file = "grpcio-1.70.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e654c4b17d07eab259d392e12b149c3a134ec52b11ecdc6a515b39aceeec898"}, - {file = "grpcio-1.70.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2394e3381071045a706ee2eeb6e08962dd87e8999b90ac15c55f56fa5a8c9597"}, - {file = "grpcio-1.70.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:b3c76701428d2df01964bc6479422f20e62fcbc0a37d82ebd58050b86926ef8c"}, - {file = "grpcio-1.70.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ac073fe1c4cd856ebcf49e9ed6240f4f84d7a4e6ee95baa5d66ea05d3dd0df7f"}, - {file = "grpcio-1.70.0-cp312-cp312-win32.whl", hash = "sha256:cd24d2d9d380fbbee7a5ac86afe9787813f285e684b0271599f95a51bce33528"}, - {file = "grpcio-1.70.0-cp312-cp312-win_amd64.whl", hash = "sha256:0495c86a55a04a874c7627fd33e5beaee771917d92c0e6d9d797628ac40e7655"}, - {file = "grpcio-1.70.0-cp313-cp313-linux_armv7l.whl", hash = "sha256:aa573896aeb7d7ce10b1fa425ba263e8dddd83d71530d1322fd3a16f31257b4a"}, - {file = "grpcio-1.70.0-cp313-cp313-macosx_10_14_universal2.whl", hash = "sha256:d405b005018fd516c9ac529f4b4122342f60ec1cee181788249372524e6db429"}, - {file = "grpcio-1.70.0-cp313-cp313-manylinux_2_17_aarch64.whl", hash = "sha256:f32090238b720eb585248654db8e3afc87b48d26ac423c8dde8334a232ff53c9"}, - {file = "grpcio-1.70.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dfa089a734f24ee5f6880c83d043e4f46bf812fcea5181dcb3a572db1e79e01c"}, - {file = "grpcio-1.70.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f19375f0300b96c0117aca118d400e76fede6db6e91f3c34b7b035822e06c35f"}, - {file = "grpcio-1.70.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:7c73c42102e4a5ec76608d9b60227d917cea46dff4d11d372f64cbeb56d259d0"}, - {file = "grpcio-1.70.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:0a5c78d5198a1f0aa60006cd6eb1c912b4a1520b6a3968e677dbcba215fabb40"}, - {file = "grpcio-1.70.0-cp313-cp313-win32.whl", hash = "sha256:fe9dbd916df3b60e865258a8c72ac98f3ac9e2a9542dcb72b7a34d236242a5ce"}, - {file = "grpcio-1.70.0-cp313-cp313-win_amd64.whl", hash = "sha256:4119fed8abb7ff6c32e3d2255301e59c316c22d31ab812b3fbcbaf3d0d87cc68"}, - {file = "grpcio-1.70.0-cp38-cp38-linux_armv7l.whl", hash = "sha256:8058667a755f97407fca257c844018b80004ae8035565ebc2812cc550110718d"}, - {file = "grpcio-1.70.0-cp38-cp38-macosx_10_14_universal2.whl", hash = "sha256:879a61bf52ff8ccacbedf534665bb5478ec8e86ad483e76fe4f729aaef867cab"}, - {file = "grpcio-1.70.0-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:0ba0a173f4feacf90ee618fbc1a27956bfd21260cd31ced9bc707ef551ff7dc7"}, - {file = "grpcio-1.70.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:558c386ecb0148f4f99b1a65160f9d4b790ed3163e8610d11db47838d452512d"}, - {file = "grpcio-1.70.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:412faabcc787bbc826f51be261ae5fa996b21263de5368a55dc2cf824dc5090e"}, - {file = "grpcio-1.70.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3b0f01f6ed9994d7a0b27eeddea43ceac1b7e6f3f9d86aeec0f0064b8cf50fdb"}, - {file = "grpcio-1.70.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7385b1cb064734005204bc8994eed7dcb801ed6c2eda283f613ad8c6c75cf873"}, - {file = "grpcio-1.70.0-cp38-cp38-win32.whl", hash = "sha256:07269ff4940f6fb6710951116a04cd70284da86d0a4368fd5a3b552744511f5a"}, - {file = "grpcio-1.70.0-cp38-cp38-win_amd64.whl", hash = "sha256:aba19419aef9b254e15011b230a180e26e0f6864c90406fdbc255f01d83bc83c"}, - {file = "grpcio-1.70.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:4f1937f47c77392ccd555728f564a49128b6a197a05a5cd527b796d36f3387d0"}, - {file = "grpcio-1.70.0-cp39-cp39-macosx_10_14_universal2.whl", hash = "sha256:0cd430b9215a15c10b0e7d78f51e8a39d6cf2ea819fd635a7214fae600b1da27"}, - {file = "grpcio-1.70.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:e27585831aa6b57b9250abaf147003e126cd3a6c6ca0c531a01996f31709bed1"}, - {file = "grpcio-1.70.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c1af8e15b0f0fe0eac75195992a63df17579553b0c4af9f8362cc7cc99ccddf4"}, - {file = "grpcio-1.70.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cbce24409beaee911c574a3d75d12ffb8c3e3dd1b813321b1d7a96bbcac46bf4"}, - {file = "grpcio-1.70.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ff4a8112a79464919bb21c18e956c54add43ec9a4850e3949da54f61c241a4a6"}, - {file = "grpcio-1.70.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5413549fdf0b14046c545e19cfc4eb1e37e9e1ebba0ca390a8d4e9963cab44d2"}, - {file = "grpcio-1.70.0-cp39-cp39-win32.whl", hash = "sha256:b745d2c41b27650095e81dea7091668c040457483c9bdb5d0d9de8f8eb25e59f"}, - {file = "grpcio-1.70.0-cp39-cp39-win_amd64.whl", hash = "sha256:a31d7e3b529c94e930a117b2175b2efd179d96eb3c7a21ccb0289a8ab05b645c"}, - {file = "grpcio-1.70.0.tar.gz", hash = "sha256:8d1584a68d5922330025881e63a6c1b54cc8117291d382e4fa69339b6d914c56"}, -] - -[package.extras] -protobuf = ["grpcio-tools (>=1.70.0)"] - [[package]] name = "grpcio" version = "1.71.0" @@ -546,7 +390,6 @@ description = "HTTP/2-based RPC framework" optional = false python-versions = ">=3.9" groups = ["main"] -markers = "python_version >= \"3.10\"" files = [ {file = "grpcio-1.71.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:c200cb6f2393468142eb50ab19613229dcc7829b5ccee8b658a36005f6669fdd"}, {file = "grpcio-1.71.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:b2266862c5ad664a380fbbcdbdb8289d71464c42a8c29053820ee78ba0119e5d"}, @@ -758,19 +601,6 @@ files = [ {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, ] -[[package]] -name = "more-itertools" -version = "10.5.0" -description = "More routines for operating on iterables, beyond itertools" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -markers = "python_version < \"3.10\"" -files = [ - {file = "more-itertools-10.5.0.tar.gz", hash = "sha256:5482bfef7849c25dc3c6dd53a6173ae4795da2a41a80faea6700d9f5846c5da6"}, - {file = "more_itertools-10.5.0-py3-none-any.whl", hash = "sha256:037b0d3203ce90cca8ab1defbbdac29d5f993fc20131f3664dc8d6acfa872aef"}, -] - [[package]] name = "more-itertools" version = "10.6.0" @@ -778,7 +608,6 @@ description = "More routines for operating on iterables, beyond itertools" optional = false python-versions = ">=3.9" groups = ["dev"] -markers = "python_version >= \"3.10\"" files = [ {file = "more-itertools-10.6.0.tar.gz", hash = "sha256:2cd7fad1009c31cc9fb6a035108509e6547547a7a738374f10bd49a09eb3ee3b"}, {file = "more_itertools-10.6.0-py3-none-any.whl", hash = "sha256:6eb054cb4b6db1473f6e15fcc676a08e4732548acd47c708f0e179c2c7c01e89"}, @@ -796,6 +625,48 @@ files = [ {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, ] +[[package]] +name = "numpy" +version = "1.26.0" +description = "Fundamental package for array computing in Python" +optional = false +python-versions = "<3.13,>=3.9" +groups = ["main"] +files = [ + {file = "numpy-1.26.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f8db2f125746e44dce707dd44d4f4efeea8d7e2b43aace3f8d1f235cfa2733dd"}, + {file = "numpy-1.26.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0621f7daf973d34d18b4e4bafb210bbaf1ef5e0100b5fa750bd9cde84c7ac292"}, + {file = "numpy-1.26.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:51be5f8c349fdd1a5568e72713a21f518e7d6707bcf8503b528b88d33b57dc68"}, + {file = "numpy-1.26.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:767254ad364991ccfc4d81b8152912e53e103ec192d1bb4ea6b1f5a7117040be"}, + {file = "numpy-1.26.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:436c8e9a4bdeeee84e3e59614d38c3dbd3235838a877af8c211cfcac8a80b8d3"}, + {file = "numpy-1.26.0-cp310-cp310-win32.whl", hash = "sha256:c2e698cb0c6dda9372ea98a0344245ee65bdc1c9dd939cceed6bb91256837896"}, + {file = "numpy-1.26.0-cp310-cp310-win_amd64.whl", hash = "sha256:09aaee96c2cbdea95de76ecb8a586cb687d281c881f5f17bfc0fb7f5890f6b91"}, + {file = "numpy-1.26.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:637c58b468a69869258b8ae26f4a4c6ff8abffd4a8334c830ffb63e0feefe99a"}, + {file = "numpy-1.26.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:306545e234503a24fe9ae95ebf84d25cba1fdc27db971aa2d9f1ab6bba19a9dd"}, + {file = "numpy-1.26.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c6adc33561bd1d46f81131d5352348350fc23df4d742bb246cdfca606ea1208"}, + {file = "numpy-1.26.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e062aa24638bb5018b7841977c360d2f5917268d125c833a686b7cbabbec496c"}, + {file = "numpy-1.26.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:546b7dd7e22f3c6861463bebb000646fa730e55df5ee4a0224408b5694cc6148"}, + {file = "numpy-1.26.0-cp311-cp311-win32.whl", hash = "sha256:c0b45c8b65b79337dee5134d038346d30e109e9e2e9d43464a2970e5c0e93229"}, + {file = "numpy-1.26.0-cp311-cp311-win_amd64.whl", hash = "sha256:eae430ecf5794cb7ae7fa3808740b015aa80747e5266153128ef055975a72b99"}, + {file = "numpy-1.26.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:166b36197e9debc4e384e9c652ba60c0bacc216d0fc89e78f973a9760b503388"}, + {file = "numpy-1.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f042f66d0b4ae6d48e70e28d487376204d3cbf43b84c03bac57e28dac6151581"}, + {file = "numpy-1.26.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5e18e5b14a7560d8acf1c596688f4dfd19b4f2945b245a71e5af4ddb7422feb"}, + {file = "numpy-1.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f6bad22a791226d0a5c7c27a80a20e11cfe09ad5ef9084d4d3fc4a299cca505"}, + {file = "numpy-1.26.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4acc65dd65da28060e206c8f27a573455ed724e6179941edb19f97e58161bb69"}, + {file = "numpy-1.26.0-cp312-cp312-win32.whl", hash = "sha256:bb0d9a1aaf5f1cb7967320e80690a1d7ff69f1d47ebc5a9bea013e3a21faec95"}, + {file = "numpy-1.26.0-cp312-cp312-win_amd64.whl", hash = "sha256:ee84ca3c58fe48b8ddafdeb1db87388dce2c3c3f701bf447b05e4cfcc3679112"}, + {file = "numpy-1.26.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4a873a8180479bc829313e8d9798d5234dfacfc2e8a7ac188418189bb8eafbd2"}, + {file = "numpy-1.26.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:914b28d3215e0c721dc75db3ad6d62f51f630cb0c277e6b3bcb39519bed10bd8"}, + {file = "numpy-1.26.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c78a22e95182fb2e7874712433eaa610478a3caf86f28c621708d35fa4fd6e7f"}, + {file = "numpy-1.26.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86f737708b366c36b76e953c46ba5827d8c27b7a8c9d0f471810728e5a2fe57c"}, + {file = "numpy-1.26.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b44e6a09afc12952a7d2a58ca0a2429ee0d49a4f89d83a0a11052da696440e49"}, + {file = "numpy-1.26.0-cp39-cp39-win32.whl", hash = "sha256:5671338034b820c8d58c81ad1dafc0ed5a00771a82fccc71d6438df00302094b"}, + {file = "numpy-1.26.0-cp39-cp39-win_amd64.whl", hash = "sha256:020cdbee66ed46b671429c7265cf00d8ac91c046901c55684954c3958525dab2"}, + {file = "numpy-1.26.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0792824ce2f7ea0c82ed2e4fecc29bb86bee0567a080dacaf2e0a01fe7654369"}, + {file = "numpy-1.26.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d484292eaeb3e84a51432a94f53578689ffdea3f90e10c8b203a99be5af57d8"}, + {file = "numpy-1.26.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:186ba67fad3c60dbe8a3abff3b67a91351100f2661c8e2a80364ae6279720299"}, + {file = "numpy-1.26.0.tar.gz", hash = "sha256:f93fc78fe8bf15afe2b8d6b6499f1c73953169fad1e9a8dd086cdff3190e7fdf"}, +] + [[package]] name = "packaging" version = "24.2" @@ -808,6 +679,93 @@ files = [ {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, ] +[[package]] +name = "pandas" +version = "2.2.3" +description = "Powerful data structures for data analysis, time series, and statistics" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "pandas-2.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1948ddde24197a0f7add2bdc4ca83bf2b1ef84a1bc8ccffd95eda17fd836ecb5"}, + {file = "pandas-2.2.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:381175499d3802cde0eabbaf6324cce0c4f5d52ca6f8c377c29ad442f50f6348"}, + {file = "pandas-2.2.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d9c45366def9a3dd85a6454c0e7908f2b3b8e9c138f5dc38fed7ce720d8453ed"}, + {file = "pandas-2.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86976a1c5b25ae3f8ccae3a5306e443569ee3c3faf444dfd0f41cda24667ad57"}, + {file = "pandas-2.2.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b8661b0238a69d7aafe156b7fa86c44b881387509653fdf857bebc5e4008ad42"}, + {file = "pandas-2.2.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:37e0aced3e8f539eccf2e099f65cdb9c8aa85109b0be6e93e2baff94264bdc6f"}, + {file = "pandas-2.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:56534ce0746a58afaf7942ba4863e0ef81c9c50d3f0ae93e9497d6a41a057645"}, + {file = "pandas-2.2.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:66108071e1b935240e74525006034333f98bcdb87ea116de573a6a0dccb6c039"}, + {file = "pandas-2.2.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7c2875855b0ff77b2a64a0365e24455d9990730d6431b9e0ee18ad8acee13dbd"}, + {file = "pandas-2.2.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cd8d0c3be0515c12fed0bdbae072551c8b54b7192c7b1fda0ba56059a0179698"}, + {file = "pandas-2.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c124333816c3a9b03fbeef3a9f230ba9a737e9e5bb4060aa2107a86cc0a497fc"}, + {file = "pandas-2.2.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:63cc132e40a2e084cf01adf0775b15ac515ba905d7dcca47e9a251819c575ef3"}, + {file = "pandas-2.2.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:29401dbfa9ad77319367d36940cd8a0b3a11aba16063e39632d98b0e931ddf32"}, + {file = "pandas-2.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:3fc6873a41186404dad67245896a6e440baacc92f5b716ccd1bc9ed2995ab2c5"}, + {file = "pandas-2.2.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b1d432e8d08679a40e2a6d8b2f9770a5c21793a6f9f47fdd52c5ce1948a5a8a9"}, + {file = "pandas-2.2.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a5a1595fe639f5988ba6a8e5bc9649af3baf26df3998a0abe56c02609392e0a4"}, + {file = "pandas-2.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5de54125a92bb4d1c051c0659e6fcb75256bf799a732a87184e5ea503965bce3"}, + {file = "pandas-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fffb8ae78d8af97f849404f21411c95062db1496aeb3e56f146f0355c9989319"}, + {file = "pandas-2.2.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dfcb5ee8d4d50c06a51c2fffa6cff6272098ad6540aed1a76d15fb9318194d8"}, + {file = "pandas-2.2.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:062309c1b9ea12a50e8ce661145c6aab431b1e99530d3cd60640e255778bd43a"}, + {file = "pandas-2.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:59ef3764d0fe818125a5097d2ae867ca3fa64df032331b7e0917cf5d7bf66b13"}, + {file = "pandas-2.2.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f00d1345d84d8c86a63e476bb4955e46458b304b9575dcf71102b5c705320015"}, + {file = "pandas-2.2.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3508d914817e153ad359d7e069d752cdd736a247c322d932eb89e6bc84217f28"}, + {file = "pandas-2.2.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:22a9d949bfc9a502d320aa04e5d02feab689d61da4e7764b62c30b991c42c5f0"}, + {file = "pandas-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3a255b2c19987fbbe62a9dfd6cff7ff2aa9ccab3fc75218fd4b7530f01efa24"}, + {file = "pandas-2.2.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:800250ecdadb6d9c78eae4990da62743b857b470883fa27f652db8bdde7f6659"}, + {file = "pandas-2.2.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6374c452ff3ec675a8f46fd9ab25c4ad0ba590b71cf0656f8b6daa5202bca3fb"}, + {file = "pandas-2.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:61c5ad4043f791b61dd4752191d9f07f0ae412515d59ba8f005832a532f8736d"}, + {file = "pandas-2.2.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3b71f27954685ee685317063bf13c7709a7ba74fc996b84fc6821c59b0f06468"}, + {file = "pandas-2.2.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:38cf8125c40dae9d5acc10fa66af8ea6fdf760b2714ee482ca691fc66e6fcb18"}, + {file = "pandas-2.2.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ba96630bc17c875161df3818780af30e43be9b166ce51c9a18c1feae342906c2"}, + {file = "pandas-2.2.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1db71525a1538b30142094edb9adc10be3f3e176748cd7acc2240c2f2e5aa3a4"}, + {file = "pandas-2.2.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:15c0e1e02e93116177d29ff83e8b1619c93ddc9c49083f237d4312337a61165d"}, + {file = "pandas-2.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ad5b65698ab28ed8d7f18790a0dc58005c7629f227be9ecc1072aa74c0c1d43a"}, + {file = "pandas-2.2.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc6b93f9b966093cb0fd62ff1a7e4c09e6d546ad7c1de191767baffc57628f39"}, + {file = "pandas-2.2.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5dbca4c1acd72e8eeef4753eeca07de9b1db4f398669d5994086f788a5d7cc30"}, + {file = "pandas-2.2.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8cd6d7cc958a3910f934ea8dbdf17b2364827bb4dafc38ce6eef6bb3d65ff09c"}, + {file = "pandas-2.2.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99df71520d25fade9db7c1076ac94eb994f4d2673ef2aa2e86ee039b6746d20c"}, + {file = "pandas-2.2.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:31d0ced62d4ea3e231a9f228366919a5ea0b07440d9d4dac345376fd8e1477ea"}, + {file = "pandas-2.2.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7eee9e7cea6adf3e3d24e304ac6b8300646e2a5d1cd3a3c2abed9101b0846761"}, + {file = "pandas-2.2.3-cp39-cp39-win_amd64.whl", hash = "sha256:4850ba03528b6dd51d6c5d273c46f183f39a9baf3f0143e566b89450965b105e"}, + {file = "pandas-2.2.3.tar.gz", hash = "sha256:4f18ba62b61d7e192368b84517265a99b4d7ee8912f8708660fb4a366cc82667"}, +] + +[package.dependencies] +numpy = [ + {version = ">=1.22.4", markers = "python_version < \"3.11\""}, + {version = ">=1.23.2", markers = "python_version == \"3.11\""}, + {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, +] +python-dateutil = ">=2.8.2" +pytz = ">=2020.1" +tzdata = ">=2022.7" + +[package.extras] +all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)", "beautifulsoup4 (>=4.11.2)", "bottleneck (>=1.3.6)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=2022.12.0)", "fsspec (>=2022.11.0)", "gcsfs (>=2022.11.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.9.2)", "matplotlib (>=3.6.3)", "numba (>=0.56.4)", "numexpr (>=2.8.4)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "pandas-gbq (>=0.19.0)", "psycopg2 (>=2.9.6)", "pyarrow (>=10.0.1)", "pymysql (>=1.0.2)", "pyreadstat (>=1.2.0)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "qtpy (>=2.3.0)", "s3fs (>=2022.11.0)", "scipy (>=1.10.0)", "tables (>=3.8.0)", "tabulate (>=0.9.0)", "xarray (>=2022.12.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)", "zstandard (>=0.19.0)"] +aws = ["s3fs (>=2022.11.0)"] +clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.3.0)"] +compression = ["zstandard (>=0.19.0)"] +computation = ["scipy (>=1.10.0)", "xarray (>=2022.12.0)"] +consortium-standard = ["dataframe-api-compat (>=0.1.7)"] +excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)"] +feather = ["pyarrow (>=10.0.1)"] +fss = ["fsspec (>=2022.11.0)"] +gcp = ["gcsfs (>=2022.11.0)", "pandas-gbq (>=0.19.0)"] +hdf5 = ["tables (>=3.8.0)"] +html = ["beautifulsoup4 (>=4.11.2)", "html5lib (>=1.1)", "lxml (>=4.9.2)"] +mysql = ["SQLAlchemy (>=2.0.0)", "pymysql (>=1.0.2)"] +output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.9.0)"] +parquet = ["pyarrow (>=10.0.1)"] +performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"] +plot = ["matplotlib (>=3.6.3)"] +postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"] +pyarrow = ["pyarrow (>=10.0.1)"] +spss = ["pyreadstat (>=1.2.0)"] +sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"] +test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] +xml = ["lxml (>=4.9.2)"] + [[package]] name = "pathspec" version = "0.12.1" @@ -889,25 +847,6 @@ files = [ [package.extras] windows-terminal = ["colorama (>=0.4.6)"] -[[package]] -name = "pyjwt" -version = "2.9.0" -description = "JSON Web Token implementation in Python" -optional = false -python-versions = ">=3.8" -groups = ["main"] -markers = "python_version < \"3.10\"" -files = [ - {file = "PyJWT-2.9.0-py3-none-any.whl", hash = "sha256:3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850"}, - {file = "pyjwt-2.9.0.tar.gz", hash = "sha256:7e1e5b56cc735432a7369cbfa0efe50fa113ebecdc04ae6922deba8b84582d0c"}, -] - -[package.extras] -crypto = ["cryptography (>=3.4.0)"] -dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.4.0)", "pre-commit", "pytest (>=6.0.0,<7.0.0)", "sphinx", "sphinx-rtd-theme", "zope.interface"] -docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] -tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] - [[package]] name = "pyjwt" version = "2.10.1" @@ -915,7 +854,6 @@ description = "JSON Web Token implementation in Python" optional = false python-versions = ">=3.9" groups = ["main"] -markers = "python_version >= \"3.10\"" files = [ {file = "PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb"}, {file = "pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953"}, @@ -977,6 +915,18 @@ files = [ [package.dependencies] six = ">=1.5" +[[package]] +name = "pytz" +version = "2025.2" +description = "World timezone definitions, modern and historical" +optional = false +python-versions = "*" +groups = ["main"] +files = [ + {file = "pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00"}, + {file = "pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3"}, +] + [[package]] name = "requests" version = "2.32.3" @@ -1037,28 +987,6 @@ botocore = ">=1.37.4,<2.0a.0" [package.extras] crt = ["botocore[crt] (>=1.37.4,<2.0a.0)"] -[[package]] -name = "setuptools" -version = "75.3.2" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = false -python-versions = ">=3.8" -groups = ["main"] -markers = "python_version < \"3.10\"" -files = [ - {file = "setuptools-75.3.2-py3-none-any.whl", hash = "sha256:90ab613b6583fc02d5369cbca13ea26ea0e182d1df2d943ee9cbe81d4c61add9"}, - {file = "setuptools-75.3.2.tar.gz", hash = "sha256:3c1383e1038b68556a382c1e8ded8887cd20141b0eb5708a6c8d277de49364f5"}, -] - -[package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\"", "ruff (>=0.5.2) ; sys_platform != \"cygwin\""] -core = ["importlib-metadata (>=6) ; python_version < \"3.10\"", "importlib-resources (>=5.10.2) ; python_version < \"3.9\"", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1) ; python_version < \"3.11\"", "wheel (>=0.43.0)"] -cover = ["pytest-cov"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -enabler = ["pytest-enabler (>=2.2)"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21) ; python_version >= \"3.9\" and sys_platform != \"cygwin\"", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test (>=5.5)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf ; sys_platform != \"cygwin\"", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "ruff (<=0.7.1)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] -type = ["importlib-metadata (>=7.0.2) ; python_version < \"3.10\"", "jaraco.develop (>=7.21) ; sys_platform != \"cygwin\"", "mypy (==1.12.*)", "pytest-mypy"] - [[package]] name = "setuptools" version = "76.0.0" @@ -1066,7 +994,6 @@ description = "Easily download, build, install, upgrade, and uninstall Python pa optional = false python-versions = ">=3.9" groups = ["main"] -markers = "python_version >= \"3.10\"" files = [ {file = "setuptools-76.0.0-py3-none-any.whl", hash = "sha256:199466a166ff664970d0ee145839f5582cb9bca7a0a3a2e795b6a9cb2308e9c6"}, {file = "setuptools-76.0.0.tar.gz", hash = "sha256:43b4ee60e10b0d0ee98ad11918e114c70701bc6051662a9a675a0496c1a158f4"}, @@ -1164,12 +1091,24 @@ description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" groups = ["dev"] -markers = "python_version < \"3.11\"" +markers = "python_version <= \"3.10\"" files = [ {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] +[[package]] +name = "tzdata" +version = "2025.2" +description = "Provider of IANA time zone data" +optional = false +python-versions = ">=2" +groups = ["main"] +files = [ + {file = "tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8"}, + {file = "tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9"}, +] + [[package]] name = "urllib3" version = "1.26.20" @@ -1212,5 +1151,5 @@ dev = [] [metadata] lock-version = "2.1" -python-versions = ">=3.8,<4.0" -content-hash = "5df3557da393b46bf0f888bbfaffe71b81865f1446df16786b529cfb782e796f" +python-versions = ">=3.9,<3.13" +content-hash = "2d7de1f2fcbeae68fcd27d75366cf1bb5a6df43cc11d536694d9f7e9c61ecc60" diff --git a/pyproject.toml b/pyproject.toml index e0fd13c..85bf272 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,7 +25,7 @@ classifiers = [ [tool.poetry.dependencies] -python = ">=3.8,<4.0" +python = ">=3.9,<3.13" grpcio = { version = "^1.51" } grpcio_tools = { version = "^1.51" } tqdm = { version = "^4.64" } @@ -33,6 +33,8 @@ protobuf = { version = "^4.21" } requests = { version = "^2.28" } pyjwt = { version = "^2.6" } boto3 = { version = "^1.26" } +pandas = "^2.2.3" +numpy = "1.26.0" [tool.poetry.group.dev.dependencies] black = { version = "^23.1" } diff --git a/src/pennsieve/pennsieve.py b/src/pennsieve/pennsieve.py index a475a31..49073af 100644 --- a/src/pennsieve/pennsieve.py +++ b/src/pennsieve/pennsieve.py @@ -15,6 +15,7 @@ from .protos import agent_pb2, agent_pb2_grpc from .protos.agent_pb2_grpc import AgentStub from .session import APISession, APISessionProvider +from .timeSeries import TimeSeries from .userProfile import UserProfile # Set it up to get info messages: @@ -109,6 +110,7 @@ def __init__( self._datasets = None self.dataset = None self.manifest = None + self.timeseries = None if http_api_client is None: self.http_api = self.build_no_auth_http_api_client() else: @@ -164,6 +166,7 @@ def connect( ) self.manifest = Manifest(self.stub) + self.timeseries = TimeSeries(self.stub) print("Please set the dataset with use_dataset([name])") return self diff --git a/src/pennsieve/protos/agent.proto b/src/pennsieve/protos/agent.proto index 4997aa8..7bbadad 100644 --- a/src/pennsieve/protos/agent.proto +++ b/src/pennsieve/protos/agent.proto @@ -89,7 +89,7 @@ message GetTimeseriesChannelsResponse { message GetTimeseriesRangeRequest { string dataset_id = 1; string package_id = 2; - string channel_id = 3; + repeated string channel_ids = 3; float start_time = 4; float end_time = 5; bool refresh = 6; diff --git a/src/pennsieve/protos/agent_pb2.py b/src/pennsieve/protos/agent_pb2.py index 64eb8ab..7361199 100644 --- a/src/pennsieve/protos/agent_pb2.py +++ b/src/pennsieve/protos/agent_pb2.py @@ -14,7 +14,7 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1cpennsieve/protos/agent.proto\x12\x02v1\"\x1b\n\x0bPullRequest\x12\x0c\n\x04path\x18\x01 \x01(\t\"\x1e\n\x10SubscribeRequest\x12\n\n\x02id\x18\x01 \x01(\x05\"+\n\x11ResetCacheRequest\x12\x0f\n\x02id\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x05\n\x03_id\"W\n\x1cGetTimeseriesChannelsRequest\x12\x12\n\ndataset_id\x18\x01 \x01(\t\x12\x12\n\npackage_id\x18\x02 \x01(\t\x12\x0f\n\x07refresh\x18\x03 \x01(\x08\"o\n\x11TimeseriesChannel\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x12\n\nstart_time\x18\x03 \x01(\x04\x12\x10\n\x08\x65nd_time\x18\x04 \x01(\x04\x12\x0c\n\x04unit\x18\x05 \x01(\t\x12\x0c\n\x04rate\x18\x06 \x01(\x02\"G\n\x1dGetTimeseriesChannelsResponse\x12&\n\x07\x63hannel\x18\x01 \x03(\x0b\x32\x15.v1.TimeseriesChannel\"\xa5\x01\n\x19GetTimeseriesRangeRequest\x12\x12\n\ndataset_id\x18\x01 \x01(\t\x12\x12\n\npackage_id\x18\x02 \x01(\t\x12\x12\n\nchannel_id\x18\x03 \x01(\t\x12\x12\n\nstart_time\x18\x04 \x01(\x02\x12\x10\n\x08\x65nd_time\x18\x05 \x01(\x02\x12\x0f\n\x07refresh\x18\x06 \x01(\x08\x12\x15\n\rrelative_time\x18\x07 \x01(\x08\"\xa9\x04\n\x1aGetTimeseriesRangeResponse\x12\x38\n\x04type\x18\x01 \x01(\x0e\x32*.v1.GetTimeseriesRangeResponse.MessageType\x12\x39\n\x05\x65rror\x18\x02 \x01(\x0b\x32(.v1.GetTimeseriesRangeResponse.ErrorDataH\x00\x12\x38\n\x04\x64\x61ta\x18\x03 \x01(\x0b\x32(.v1.GetTimeseriesRangeResponse.RangeDataH\x00\x12=\n\x07\x63hannel\x18\x04 \x01(\x0b\x32*.v1.GetTimeseriesRangeResponse.ChannelInfoH\x00\x1aK\n\x0b\x43hannelInfo\x12\x12\n\nchannel_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0c\n\x04unit\x18\x03 \x01(\t\x12\x0c\n\x04rate\x18\x04 \x01(\x02\x1aW\n\tRangeData\x12\r\n\x05start\x18\x01 \x01(\x04\x12\x0b\n\x03\x65nd\x18\x02 \x01(\x04\x12\x0c\n\x04rate\x18\x03 \x01(\x02\x12\x12\n\nchannel_id\x18\x04 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x05 \x03(\x02\x1a\x19\n\tErrorData\x12\x0c\n\x04info\x18\x01 \x01(\t\"L\n\x0bMessageType\x12\x10\n\x0cRANGE_STATUS\x10\x00\x12\x0e\n\nRANGE_DATA\x10\x01\x12\x10\n\x0c\x43HANNEL_INFO\x10\x02\x12\t\n\x05\x45RROR\x10\x03\x42\x0e\n\x0cmessage_data\"\xd2\x08\n\x11SubscribeResponse\x12/\n\x04type\x18\x08 \x01(\x0e\x32!.v1.SubscribeResponse.MessageType\x12=\n\rupload_status\x18\t \x01(\x0b\x32$.v1.SubscribeResponse.UploadResponseH\x00\x12\x39\n\nevent_info\x18\n \x01(\x0b\x32#.v1.SubscribeResponse.EventResponseH\x00\x12\x39\n\x0bsync_status\x18\x0b \x01(\x0b\x32\".v1.SubscribeResponse.SyncResponseH\x00\x12G\n\x0f\x64ownload_status\x18\x0c \x01(\x0b\x32,.v1.SubscribeResponse.DownloadStatusResponseH\x00\x1a \n\rEventResponse\x12\x0f\n\x07\x64\x65tails\x18\x01 \x01(\t\x1a\xd0\x01\n\x0eUploadResponse\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\t\x12\r\n\x05total\x18\x02 \x01(\x03\x12\x0f\n\x07\x63urrent\x18\x03 \x01(\x03\x12\x11\n\tworker_id\x18\x04 \x01(\x05\x12\x41\n\x06status\x18\x05 \x01(\x0e\x32\x31.v1.SubscribeResponse.UploadResponse.UploadStatus\"7\n\x0cUploadStatus\x12\x08\n\x04INIT\x10\x00\x12\x0f\n\x0bIN_PROGRESS\x10\x01\x12\x0c\n\x08\x43OMPLETE\x10\x02\x1a\xd1\x01\n\x16\x44ownloadStatusResponse\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\t\x12\r\n\x05total\x18\x02 \x01(\x03\x12\x0f\n\x07\x63urrent\x18\x03 \x01(\x03\x12K\n\x06status\x18\x04 \x01(\x0e\x32;.v1.SubscribeResponse.DownloadStatusResponse.DownloadStatus\"9\n\x0e\x44ownloadStatus\x12\x08\n\x04INIT\x10\x00\x12\x0f\n\x0bIN_PROGRESS\x10\x01\x12\x0c\n\x08\x43OMPLETE\x10\x02\x1a\xb9\x01\n\x0cSyncResponse\x12=\n\x06status\x18\x01 \x01(\x0e\x32-.v1.SubscribeResponse.SyncResponse.SyncStatus\x12\r\n\x05total\x18\x02 \x01(\x03\x12\x11\n\tnr_synced\x18\x03 \x01(\x03\x12\x11\n\tworker_id\x18\x04 \x01(\x05\"5\n\nSyncStatus\x12\x08\n\x04INIT\x10\x00\x12\x0f\n\x0bIN_PROGRESS\x10\x01\x12\x0c\n\x08\x43OMPLETE\x10\x02\"y\n\x0bMessageType\x12\t\n\x05\x45VENT\x10\x00\x12\x11\n\rUPLOAD_STATUS\x10\x01\x12\x11\n\rUPLOAD_CANCEL\x10\x02\x12\x0f\n\x0bSYNC_STATUS\x10\x03\x12\x13\n\x0f\x44OWNLOAD_STATUS\x10\x04\x12\x13\n\x0f\x44OWNLOAD_CANCEL\x10\x05\x42\x0e\n\x0cmessage_data\"&\n\x14SimpleStatusResponse\x12\x0e\n\x06status\x18\x01 \x01(\t\">\n\x13\x43\x61ncelUploadRequest\x12\x13\n\x0bmanifest_id\x18\x01 \x01(\x05\x12\x12\n\ncancel_all\x18\x02 \x01(\x08\"C\n\x15\x43\x61ncelDownloadRequest\x12\x0f\n\x02id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x12\n\ncancel_all\x18\x02 \x01(\x08\x42\x05\n\x03_id\"f\n\x15\x43reateManifestRequest\x12\x11\n\tbase_path\x18\x01 \x01(\t\x12\x18\n\x10target_base_path\x18\x02 \x01(\t\x12\x11\n\trecursive\x18\x03 \x01(\x08\x12\r\n\x05\x66iles\x18\x04 \x03(\t\">\n\x16\x43reateManifestResponse\x12\x13\n\x0bmanifest_id\x18\x01 \x01(\x05\x12\x0f\n\x07message\x18\x02 \x01(\t\"z\n\x14\x41\x64\x64ToManifestRequest\x12\x13\n\x0bmanifest_id\x18\x01 \x01(\x05\x12\x11\n\tbase_path\x18\x02 \x01(\t\x12\x18\n\x10target_base_path\x18\x03 \x01(\t\x12\x11\n\trecursive\x18\x04 \x01(\x08\x12\r\n\x05\x66iles\x18\x05 \x03(\t\"E\n\x19RemoveFromManifestRequest\x12\x13\n\x0bmanifest_id\x18\x01 \x01(\x05\x12\x13\n\x0bremove_path\x18\x03 \x01(\t\"\x10\n\x0eVersionRequest\"5\n\x0fVersionResponse\x12\x0f\n\x07version\x18\x01 \x01(\t\x12\x11\n\tlog_level\x18\x02 \x01(\t\"\r\n\x0bPingRequest\"\x1f\n\x0cPingResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\"\r\n\x0bStopRequest\"\x1f\n\x0cStopResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\"\x16\n\x14ListManifestsRequest\"\x8a\x02\n\x15ListManifestsResponse\x12\x35\n\tmanifests\x18\x01 \x03(\x0b\x32\".v1.ListManifestsResponse.Manifest\x1a\xb9\x01\n\x08Manifest\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x0f\n\x07node_id\x18\x02 \x01(\t\x12\x11\n\tuser_name\x18\x03 \x01(\t\x12\x0f\n\x07user_id\x18\x04 \x01(\t\x12\x19\n\x11organization_name\x18\x05 \x01(\t\x12\x17\n\x0forganization_id\x18\x06 \x01(\t\x12\x14\n\x0c\x64\x61taset_name\x18\x07 \x01(\t\x12\x12\n\ndataset_id\x18\x08 \x01(\t\x12\x0e\n\x06status\x18\t \x01(\t\",\n\x15\x44\x65leteManifestRequest\x12\x13\n\x0bmanifest_id\x18\x01 \x01(\x05\"N\n\x18ListManifestFilesRequest\x12\x13\n\x0bmanifest_id\x18\x01 \x01(\x05\x12\x0e\n\x06offset\x18\x02 \x01(\x05\x12\r\n\x05limit\x18\x03 \x01(\x05\"\x90\x03\n\x19ListManifestFilesResponse\x12\x36\n\x04\x66ile\x18\x01 \x03(\x0b\x32(.v1.ListManifestFilesResponse.FileUpload\x1a\xa4\x01\n\nFileUpload\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x13\n\x0bmanifest_id\x18\x02 \x01(\x05\x12\x13\n\x0bsource_path\x18\x03 \x01(\t\x12\x13\n\x0btarget_path\x18\x04 \x01(\t\x12\x11\n\tupload_id\x18\x05 \x01(\t\x12\x38\n\x06status\x18\x06 \x01(\x0e\x32(.v1.ListManifestFilesResponse.StatusType\"\x93\x01\n\nStatusType\x12\t\n\x05LOCAL\x10\x00\x12\x0e\n\nREGISTERED\x10\x01\x12\x0c\n\x08IMPORTED\x10\x02\x12\r\n\tFINALIZED\x10\x03\x12\x0c\n\x08VERIFIED\x10\x04\x12\n\n\x06\x46\x41ILED\x10\x05\x12\x0b\n\x07REMOVED\x10\x06\x12\x0b\n\x07UNKNOWN\x10\x07\x12\x0b\n\x07\x43HANGED\x10\x08\x12\x0c\n\x08UPLOADED\x10\t\",\n\x15UploadManifestRequest\x12\x13\n\x0bmanifest_id\x18\x01 \x01(\x05\"\x10\n\x0eGetUserRequest\"\xd4\x01\n\x0cUserResponse\x12\n\n\x02id\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x15\n\rsession_token\x18\x04 \x01(\t\x12\x14\n\x0ctoken_expire\x18\x05 \x01(\x03\x12\x0f\n\x07profile\x18\x08 \x01(\t\x12\x13\n\x0b\x65nvironment\x18\t \x01(\t\x12\x17\n\x0forganization_id\x18\n \x01(\t\x12\x19\n\x11organization_name\x18\x0b \x01(\t\x12\x10\n\x08\x61pi_host\x18\x0c \x01(\t\x12\x11\n\tapi2_host\x18\r \x01(\t\"\'\n\x14SwitchProfileRequest\x12\x0f\n\x07profile\x18\x01 \x01(\t\"\x17\n\x15ReAuthenticateRequest\"\'\n\x11UseDatasetRequest\x12\x12\n\ndataset_id\x18\x01 \x01(\t\"(\n\x12UseDatasetResponse\x12\x12\n\ndataset_id\x18\x01 \x01(\t\"*\n\x13SyncManifestRequest\x12\x13\n\x0bmanifest_id\x18\x01 \x01(\x05\"}\n\x14SyncManifestResponse\x12\x18\n\x10manifest_node_id\x18\x01 \x01(\t\x12\x18\n\x10nr_files_updated\x18\x02 \x01(\x05\x12\x18\n\x10nr_files_removed\x18\x03 \x01(\x05\x12\x17\n\x0fnr_files_failed\x18\x04 \x01(\x05\"+\n\x14ResetManifestRequest\x12\x13\n\x0bmanifest_id\x18\x01 \x01(\x05\"W\n\x1cRelocateManifestFilesRequest\x12\x13\n\x0bmanifest_id\x18\x01 \x01(\x05\x12\x0c\n\x04path\x18\x02 \x01(\t\x12\x14\n\x0cupdated_path\x18\x03 \x01(\t\"A\n\x14StartWorkflowRequest\x12\x13\n\x0bmanifest_id\x18\x01 \x01(\x05\x12\x14\n\x0cworkflowFlag\x18\x02 \x01(\t\"\x96\x01\n\x10WorkflowResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x13\n\x0b\x64\x65rivatives\x18\x02 \x01(\t\x12\x37\n\x0cworkflowType\x18\x03 \x01(\x0e\x32!.v1.WorkflowResponse.WorkflowType\"#\n\x0cWorkflowType\x12\x08\n\x04PATH\x10\x00\x12\t\n\x05NAMED\x10\x01\"U\n\x0fRegisterRequest\x12\x1c\n\x07\x61\x63\x63ount\x18\x01 \x01(\x0b\x32\x0b.v1.Account\x12$\n\x0b\x63redentials\x18\x02 \x01(\x0b\x32\x0f.v1.Credentials\"&\n\x10RegisterResponse\x12\x12\n\naccount_id\x18\x01 \x01(\t\"S\n\x07\x41\x63\x63ount\x12%\n\x04type\x18\x01 \x01(\x0e\x32\x17.v1.Account.AccountType\"!\n\x0b\x41\x63\x63ountType\x12\x07\n\x03\x41WS\x10\x00\x12\t\n\x05\x41zure\x10\x01\"\x1e\n\x0b\x43redentials\x12\x0f\n\x07profile\x18\x01 \x01(\t\"7\n\nMapRequest\x12\x12\n\ndataset_id\x18\x01 \x01(\t\x12\x15\n\rtarget_folder\x18\x02 \x01(\t\"\xd1\x01\n\x0f\x44ownloadRequest\x12.\n\x04type\x18\x01 \x01(\x0e\x32 .v1.DownloadRequest.DownloadType\x12-\n\x07\x64\x61taset\x18\t \x01(\x0b\x32\x1a.v1.DownloadDatasetRequestH\x00\x12-\n\x07package\x18\n \x01(\x0b\x32\x1a.v1.DownloadPackageRequestH\x00\"(\n\x0c\x44ownloadType\x12\x0b\n\x07PACKAGE\x10\x00\x12\x0b\n\x07\x44\x41TASET\x10\x01\x42\x06\n\x04\x64\x61ta\"C\n\x16\x44ownloadDatasetRequest\x12\x12\n\ndataset_id\x18\x01 \x01(\t\x12\x15\n\rtarget_folder\x18\x02 \x01(\t\"G\n\x16\x44ownloadPackageRequest\x12\x12\n\npackage_id\x18\x01 \x01(\t\x12\x19\n\x11get_presigned_url\x18\x02 \x01(\x08\"\x91\x01\n\x10\x44ownloadResponse\x12/\n\x04type\x18\x01 \x01(\x0e\x32!.v1.DownloadResponse.ResponseType\x12\x0e\n\x06status\x18\x02 \x01(\t\x12\x0b\n\x03url\x18\x03 \x03(\t\"/\n\x0cResponseType\x12\x11\n\rPRESIGNED_URL\x10\x00\x12\x0c\n\x08\x44OWNLOAD\x10\x01\"\x1e\n\x0eMapDiffRequest\x12\x0c\n\x04path\x18\x01 \x01(\t\"K\n\x08\x66ileInfo\x12\x12\n\npackage_id\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x0f\n\x07message\x18\x04 \x01(\t\"\xbe\x01\n\rpackageStatus\x12\x1d\n\x07\x63ontent\x18\x01 \x01(\x0b\x32\x0c.v1.fileInfo\x12\x30\n\nchangeType\x18\x02 \x01(\x0e\x32\x1c.v1.packageStatus.StatusType\"\\\n\nStatusType\x12\t\n\x05\x41\x44\x44\x45\x44\x10\x00\x12\x0b\n\x07RENAMED\x10\x01\x12\x0b\n\x07\x44\x45LETED\x10\x02\x12\x0b\n\x07\x43HANGED\x10\x03\x12\t\n\x05MOVED\x10\x04\x12\x11\n\rMOVED_RENAMED\x10\x05\"3\n\x0fMapDiffResponse\x12 \n\x05\x66iles\x18\x01 \x03(\x0b\x32\x11.v1.packageStatus2\xe2\x0f\n\x05\x41gent\x12I\n\x0e\x43reateManifest\x12\x19.v1.CreateManifestRequest\x1a\x1a.v1.CreateManifestResponse\"\x00\x12\x45\n\rAddToManifest\x12\x18.v1.AddToManifestRequest\x1a\x18.v1.SimpleStatusResponse\"\x00\x12O\n\x12RemoveFromManifest\x12\x1d.v1.RemoveFromManifestRequest\x1a\x18.v1.SimpleStatusResponse\"\x00\x12G\n\x0e\x44\x65leteManifest\x12\x19.v1.DeleteManifestRequest\x1a\x18.v1.SimpleStatusResponse\"\x00\x12\x46\n\rListManifests\x12\x18.v1.ListManifestsRequest\x1a\x19.v1.ListManifestsResponse\"\x00\x12R\n\x11ListManifestFiles\x12\x1c.v1.ListManifestFilesRequest\x1a\x1d.v1.ListManifestFilesResponse\"\x00\x12U\n\x15RelocateManifestFiles\x12 .v1.RelocateManifestFilesRequest\x1a\x18.v1.SimpleStatusResponse\"\x00\x12\x43\n\x0cSyncManifest\x12\x17.v1.SyncManifestRequest\x1a\x18.v1.SyncManifestResponse\"\x00\x12\x45\n\rResetManifest\x12\x18.v1.ResetManifestRequest\x1a\x18.v1.SimpleStatusResponse\"\x00\x12G\n\x0eUploadManifest\x12\x19.v1.UploadManifestRequest\x1a\x18.v1.SimpleStatusResponse\"\x00\x12\x43\n\x0c\x43\x61ncelUpload\x12\x17.v1.CancelUploadRequest\x1a\x18.v1.SimpleStatusResponse\"\x00\x12\x37\n\x08\x44ownload\x12\x13.v1.DownloadRequest\x1a\x14.v1.DownloadResponse\"\x00\x12G\n\x0e\x43\x61ncelDownload\x12\x19.v1.CancelDownloadRequest\x1a\x18.v1.SimpleStatusResponse\"\x00\x12\x31\n\x03Map\x12\x0e.v1.MapRequest\x1a\x18.v1.SimpleStatusResponse\"\x00\x12\x33\n\x04Pull\x12\x0f.v1.PullRequest\x1a\x18.v1.SimpleStatusResponse\"\x00\x12\x37\n\nGetMapDiff\x12\x12.v1.MapDiffRequest\x1a\x13.v1.MapDiffResponse\"\x00\x12\x34\n\x07Version\x12\x12.v1.VersionRequest\x1a\x13.v1.VersionResponse\"\x00\x12<\n\tSubscribe\x12\x14.v1.SubscribeRequest\x1a\x15.v1.SubscribeResponse\"\x00\x30\x01\x12<\n\x0bUnsubscribe\x12\x14.v1.SubscribeRequest\x1a\x15.v1.SubscribeResponse\"\x00\x12+\n\x04Stop\x12\x0f.v1.StopRequest\x1a\x10.v1.StopResponse\"\x00\x12+\n\x04Ping\x12\x0f.v1.PingRequest\x1a\x10.v1.PingResponse\"\x00\x12\x31\n\x07GetUser\x12\x12.v1.GetUserRequest\x1a\x10.v1.UserResponse\"\x00\x12=\n\rSwitchProfile\x12\x18.v1.SwitchProfileRequest\x1a\x10.v1.UserResponse\"\x00\x12?\n\x0eReAuthenticate\x12\x19.v1.ReAuthenticateRequest\x1a\x10.v1.UserResponse\"\x00\x12=\n\nUseDataset\x12\x15.v1.UseDatasetRequest\x1a\x16.v1.UseDatasetResponse\"\x00\x12\x41\n\rStartWorkflow\x12\x18.v1.StartWorkflowRequest\x1a\x14.v1.WorkflowResponse\"\x00\x12\x37\n\x08Register\x12\x13.v1.RegisterRequest\x1a\x14.v1.RegisterResponse\"\x00\x12^\n\x15GetTimeseriesChannels\x12 .v1.GetTimeseriesChannelsRequest\x1a!.v1.GetTimeseriesChannelsResponse\"\x00\x12\x62\n\x1dGetTimeseriesRangeForChannels\x12\x1d.v1.GetTimeseriesRangeRequest\x1a\x1e.v1.GetTimeseriesRangeResponse\"\x00\x30\x01\x12?\n\nResetCache\x12\x15.v1.ResetCacheRequest\x1a\x18.v1.SimpleStatusResponse\"\x00\x42-Z+github.com/pennsieve/pennsieve-agent/api/v1b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1cpennsieve/protos/agent.proto\x12\x02v1\"\x1b\n\x0bPullRequest\x12\x0c\n\x04path\x18\x01 \x01(\t\"\x1e\n\x10SubscribeRequest\x12\n\n\x02id\x18\x01 \x01(\x05\"+\n\x11ResetCacheRequest\x12\x0f\n\x02id\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x05\n\x03_id\"W\n\x1cGetTimeseriesChannelsRequest\x12\x12\n\ndataset_id\x18\x01 \x01(\t\x12\x12\n\npackage_id\x18\x02 \x01(\t\x12\x0f\n\x07refresh\x18\x03 \x01(\x08\"o\n\x11TimeseriesChannel\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x12\n\nstart_time\x18\x03 \x01(\x04\x12\x10\n\x08\x65nd_time\x18\x04 \x01(\x04\x12\x0c\n\x04unit\x18\x05 \x01(\t\x12\x0c\n\x04rate\x18\x06 \x01(\x02\"G\n\x1dGetTimeseriesChannelsResponse\x12&\n\x07\x63hannel\x18\x01 \x03(\x0b\x32\x15.v1.TimeseriesChannel\"\xa6\x01\n\x19GetTimeseriesRangeRequest\x12\x12\n\ndataset_id\x18\x01 \x01(\t\x12\x12\n\npackage_id\x18\x02 \x01(\t\x12\x13\n\x0b\x63hannel_ids\x18\x03 \x03(\t\x12\x12\n\nstart_time\x18\x04 \x01(\x02\x12\x10\n\x08\x65nd_time\x18\x05 \x01(\x02\x12\x0f\n\x07refresh\x18\x06 \x01(\x08\x12\x15\n\rrelative_time\x18\x07 \x01(\x08\"\xa9\x04\n\x1aGetTimeseriesRangeResponse\x12\x38\n\x04type\x18\x01 \x01(\x0e\x32*.v1.GetTimeseriesRangeResponse.MessageType\x12\x39\n\x05\x65rror\x18\x02 \x01(\x0b\x32(.v1.GetTimeseriesRangeResponse.ErrorDataH\x00\x12\x38\n\x04\x64\x61ta\x18\x03 \x01(\x0b\x32(.v1.GetTimeseriesRangeResponse.RangeDataH\x00\x12=\n\x07\x63hannel\x18\x04 \x01(\x0b\x32*.v1.GetTimeseriesRangeResponse.ChannelInfoH\x00\x1aK\n\x0b\x43hannelInfo\x12\x12\n\nchannel_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0c\n\x04unit\x18\x03 \x01(\t\x12\x0c\n\x04rate\x18\x04 \x01(\x02\x1aW\n\tRangeData\x12\r\n\x05start\x18\x01 \x01(\x04\x12\x0b\n\x03\x65nd\x18\x02 \x01(\x04\x12\x0c\n\x04rate\x18\x03 \x01(\x02\x12\x12\n\nchannel_id\x18\x04 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x05 \x03(\x02\x1a\x19\n\tErrorData\x12\x0c\n\x04info\x18\x01 \x01(\t\"L\n\x0bMessageType\x12\x10\n\x0cRANGE_STATUS\x10\x00\x12\x0e\n\nRANGE_DATA\x10\x01\x12\x10\n\x0c\x43HANNEL_INFO\x10\x02\x12\t\n\x05\x45RROR\x10\x03\x42\x0e\n\x0cmessage_data\"\xd2\x08\n\x11SubscribeResponse\x12/\n\x04type\x18\x08 \x01(\x0e\x32!.v1.SubscribeResponse.MessageType\x12=\n\rupload_status\x18\t \x01(\x0b\x32$.v1.SubscribeResponse.UploadResponseH\x00\x12\x39\n\nevent_info\x18\n \x01(\x0b\x32#.v1.SubscribeResponse.EventResponseH\x00\x12\x39\n\x0bsync_status\x18\x0b \x01(\x0b\x32\".v1.SubscribeResponse.SyncResponseH\x00\x12G\n\x0f\x64ownload_status\x18\x0c \x01(\x0b\x32,.v1.SubscribeResponse.DownloadStatusResponseH\x00\x1a \n\rEventResponse\x12\x0f\n\x07\x64\x65tails\x18\x01 \x01(\t\x1a\xd0\x01\n\x0eUploadResponse\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\t\x12\r\n\x05total\x18\x02 \x01(\x03\x12\x0f\n\x07\x63urrent\x18\x03 \x01(\x03\x12\x11\n\tworker_id\x18\x04 \x01(\x05\x12\x41\n\x06status\x18\x05 \x01(\x0e\x32\x31.v1.SubscribeResponse.UploadResponse.UploadStatus\"7\n\x0cUploadStatus\x12\x08\n\x04INIT\x10\x00\x12\x0f\n\x0bIN_PROGRESS\x10\x01\x12\x0c\n\x08\x43OMPLETE\x10\x02\x1a\xd1\x01\n\x16\x44ownloadStatusResponse\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\t\x12\r\n\x05total\x18\x02 \x01(\x03\x12\x0f\n\x07\x63urrent\x18\x03 \x01(\x03\x12K\n\x06status\x18\x04 \x01(\x0e\x32;.v1.SubscribeResponse.DownloadStatusResponse.DownloadStatus\"9\n\x0e\x44ownloadStatus\x12\x08\n\x04INIT\x10\x00\x12\x0f\n\x0bIN_PROGRESS\x10\x01\x12\x0c\n\x08\x43OMPLETE\x10\x02\x1a\xb9\x01\n\x0cSyncResponse\x12=\n\x06status\x18\x01 \x01(\x0e\x32-.v1.SubscribeResponse.SyncResponse.SyncStatus\x12\r\n\x05total\x18\x02 \x01(\x03\x12\x11\n\tnr_synced\x18\x03 \x01(\x03\x12\x11\n\tworker_id\x18\x04 \x01(\x05\"5\n\nSyncStatus\x12\x08\n\x04INIT\x10\x00\x12\x0f\n\x0bIN_PROGRESS\x10\x01\x12\x0c\n\x08\x43OMPLETE\x10\x02\"y\n\x0bMessageType\x12\t\n\x05\x45VENT\x10\x00\x12\x11\n\rUPLOAD_STATUS\x10\x01\x12\x11\n\rUPLOAD_CANCEL\x10\x02\x12\x0f\n\x0bSYNC_STATUS\x10\x03\x12\x13\n\x0f\x44OWNLOAD_STATUS\x10\x04\x12\x13\n\x0f\x44OWNLOAD_CANCEL\x10\x05\x42\x0e\n\x0cmessage_data\"&\n\x14SimpleStatusResponse\x12\x0e\n\x06status\x18\x01 \x01(\t\">\n\x13\x43\x61ncelUploadRequest\x12\x13\n\x0bmanifest_id\x18\x01 \x01(\x05\x12\x12\n\ncancel_all\x18\x02 \x01(\x08\"C\n\x15\x43\x61ncelDownloadRequest\x12\x0f\n\x02id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x12\n\ncancel_all\x18\x02 \x01(\x08\x42\x05\n\x03_id\"f\n\x15\x43reateManifestRequest\x12\x11\n\tbase_path\x18\x01 \x01(\t\x12\x18\n\x10target_base_path\x18\x02 \x01(\t\x12\x11\n\trecursive\x18\x03 \x01(\x08\x12\r\n\x05\x66iles\x18\x04 \x03(\t\">\n\x16\x43reateManifestResponse\x12\x13\n\x0bmanifest_id\x18\x01 \x01(\x05\x12\x0f\n\x07message\x18\x02 \x01(\t\"z\n\x14\x41\x64\x64ToManifestRequest\x12\x13\n\x0bmanifest_id\x18\x01 \x01(\x05\x12\x11\n\tbase_path\x18\x02 \x01(\t\x12\x18\n\x10target_base_path\x18\x03 \x01(\t\x12\x11\n\trecursive\x18\x04 \x01(\x08\x12\r\n\x05\x66iles\x18\x05 \x03(\t\"E\n\x19RemoveFromManifestRequest\x12\x13\n\x0bmanifest_id\x18\x01 \x01(\x05\x12\x13\n\x0bremove_path\x18\x03 \x01(\t\"\x10\n\x0eVersionRequest\"5\n\x0fVersionResponse\x12\x0f\n\x07version\x18\x01 \x01(\t\x12\x11\n\tlog_level\x18\x02 \x01(\t\"\r\n\x0bPingRequest\"\x1f\n\x0cPingResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\"\r\n\x0bStopRequest\"\x1f\n\x0cStopResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\"\x16\n\x14ListManifestsRequest\"\x8a\x02\n\x15ListManifestsResponse\x12\x35\n\tmanifests\x18\x01 \x03(\x0b\x32\".v1.ListManifestsResponse.Manifest\x1a\xb9\x01\n\x08Manifest\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x0f\n\x07node_id\x18\x02 \x01(\t\x12\x11\n\tuser_name\x18\x03 \x01(\t\x12\x0f\n\x07user_id\x18\x04 \x01(\t\x12\x19\n\x11organization_name\x18\x05 \x01(\t\x12\x17\n\x0forganization_id\x18\x06 \x01(\t\x12\x14\n\x0c\x64\x61taset_name\x18\x07 \x01(\t\x12\x12\n\ndataset_id\x18\x08 \x01(\t\x12\x0e\n\x06status\x18\t \x01(\t\",\n\x15\x44\x65leteManifestRequest\x12\x13\n\x0bmanifest_id\x18\x01 \x01(\x05\"N\n\x18ListManifestFilesRequest\x12\x13\n\x0bmanifest_id\x18\x01 \x01(\x05\x12\x0e\n\x06offset\x18\x02 \x01(\x05\x12\r\n\x05limit\x18\x03 \x01(\x05\"\x90\x03\n\x19ListManifestFilesResponse\x12\x36\n\x04\x66ile\x18\x01 \x03(\x0b\x32(.v1.ListManifestFilesResponse.FileUpload\x1a\xa4\x01\n\nFileUpload\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x13\n\x0bmanifest_id\x18\x02 \x01(\x05\x12\x13\n\x0bsource_path\x18\x03 \x01(\t\x12\x13\n\x0btarget_path\x18\x04 \x01(\t\x12\x11\n\tupload_id\x18\x05 \x01(\t\x12\x38\n\x06status\x18\x06 \x01(\x0e\x32(.v1.ListManifestFilesResponse.StatusType\"\x93\x01\n\nStatusType\x12\t\n\x05LOCAL\x10\x00\x12\x0e\n\nREGISTERED\x10\x01\x12\x0c\n\x08IMPORTED\x10\x02\x12\r\n\tFINALIZED\x10\x03\x12\x0c\n\x08VERIFIED\x10\x04\x12\n\n\x06\x46\x41ILED\x10\x05\x12\x0b\n\x07REMOVED\x10\x06\x12\x0b\n\x07UNKNOWN\x10\x07\x12\x0b\n\x07\x43HANGED\x10\x08\x12\x0c\n\x08UPLOADED\x10\t\",\n\x15UploadManifestRequest\x12\x13\n\x0bmanifest_id\x18\x01 \x01(\x05\"\x10\n\x0eGetUserRequest\"\xd4\x01\n\x0cUserResponse\x12\n\n\x02id\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x15\n\rsession_token\x18\x04 \x01(\t\x12\x14\n\x0ctoken_expire\x18\x05 \x01(\x03\x12\x0f\n\x07profile\x18\x08 \x01(\t\x12\x13\n\x0b\x65nvironment\x18\t \x01(\t\x12\x17\n\x0forganization_id\x18\n \x01(\t\x12\x19\n\x11organization_name\x18\x0b \x01(\t\x12\x10\n\x08\x61pi_host\x18\x0c \x01(\t\x12\x11\n\tapi2_host\x18\r \x01(\t\"\'\n\x14SwitchProfileRequest\x12\x0f\n\x07profile\x18\x01 \x01(\t\"\x17\n\x15ReAuthenticateRequest\"\'\n\x11UseDatasetRequest\x12\x12\n\ndataset_id\x18\x01 \x01(\t\"(\n\x12UseDatasetResponse\x12\x12\n\ndataset_id\x18\x01 \x01(\t\"*\n\x13SyncManifestRequest\x12\x13\n\x0bmanifest_id\x18\x01 \x01(\x05\"}\n\x14SyncManifestResponse\x12\x18\n\x10manifest_node_id\x18\x01 \x01(\t\x12\x18\n\x10nr_files_updated\x18\x02 \x01(\x05\x12\x18\n\x10nr_files_removed\x18\x03 \x01(\x05\x12\x17\n\x0fnr_files_failed\x18\x04 \x01(\x05\"+\n\x14ResetManifestRequest\x12\x13\n\x0bmanifest_id\x18\x01 \x01(\x05\"W\n\x1cRelocateManifestFilesRequest\x12\x13\n\x0bmanifest_id\x18\x01 \x01(\x05\x12\x0c\n\x04path\x18\x02 \x01(\t\x12\x14\n\x0cupdated_path\x18\x03 \x01(\t\"A\n\x14StartWorkflowRequest\x12\x13\n\x0bmanifest_id\x18\x01 \x01(\x05\x12\x14\n\x0cworkflowFlag\x18\x02 \x01(\t\"\x96\x01\n\x10WorkflowResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x13\n\x0b\x64\x65rivatives\x18\x02 \x01(\t\x12\x37\n\x0cworkflowType\x18\x03 \x01(\x0e\x32!.v1.WorkflowResponse.WorkflowType\"#\n\x0cWorkflowType\x12\x08\n\x04PATH\x10\x00\x12\t\n\x05NAMED\x10\x01\"U\n\x0fRegisterRequest\x12\x1c\n\x07\x61\x63\x63ount\x18\x01 \x01(\x0b\x32\x0b.v1.Account\x12$\n\x0b\x63redentials\x18\x02 \x01(\x0b\x32\x0f.v1.Credentials\"&\n\x10RegisterResponse\x12\x12\n\naccount_id\x18\x01 \x01(\t\"S\n\x07\x41\x63\x63ount\x12%\n\x04type\x18\x01 \x01(\x0e\x32\x17.v1.Account.AccountType\"!\n\x0b\x41\x63\x63ountType\x12\x07\n\x03\x41WS\x10\x00\x12\t\n\x05\x41zure\x10\x01\"\x1e\n\x0b\x43redentials\x12\x0f\n\x07profile\x18\x01 \x01(\t\"7\n\nMapRequest\x12\x12\n\ndataset_id\x18\x01 \x01(\t\x12\x15\n\rtarget_folder\x18\x02 \x01(\t\"\xd1\x01\n\x0f\x44ownloadRequest\x12.\n\x04type\x18\x01 \x01(\x0e\x32 .v1.DownloadRequest.DownloadType\x12-\n\x07\x64\x61taset\x18\t \x01(\x0b\x32\x1a.v1.DownloadDatasetRequestH\x00\x12-\n\x07package\x18\n \x01(\x0b\x32\x1a.v1.DownloadPackageRequestH\x00\"(\n\x0c\x44ownloadType\x12\x0b\n\x07PACKAGE\x10\x00\x12\x0b\n\x07\x44\x41TASET\x10\x01\x42\x06\n\x04\x64\x61ta\"C\n\x16\x44ownloadDatasetRequest\x12\x12\n\ndataset_id\x18\x01 \x01(\t\x12\x15\n\rtarget_folder\x18\x02 \x01(\t\"G\n\x16\x44ownloadPackageRequest\x12\x12\n\npackage_id\x18\x01 \x01(\t\x12\x19\n\x11get_presigned_url\x18\x02 \x01(\x08\"\x91\x01\n\x10\x44ownloadResponse\x12/\n\x04type\x18\x01 \x01(\x0e\x32!.v1.DownloadResponse.ResponseType\x12\x0e\n\x06status\x18\x02 \x01(\t\x12\x0b\n\x03url\x18\x03 \x03(\t\"/\n\x0cResponseType\x12\x11\n\rPRESIGNED_URL\x10\x00\x12\x0c\n\x08\x44OWNLOAD\x10\x01\"\x1e\n\x0eMapDiffRequest\x12\x0c\n\x04path\x18\x01 \x01(\t\"K\n\x08\x66ileInfo\x12\x12\n\npackage_id\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x0f\n\x07message\x18\x04 \x01(\t\"\xbe\x01\n\rpackageStatus\x12\x1d\n\x07\x63ontent\x18\x01 \x01(\x0b\x32\x0c.v1.fileInfo\x12\x30\n\nchangeType\x18\x02 \x01(\x0e\x32\x1c.v1.packageStatus.StatusType\"\\\n\nStatusType\x12\t\n\x05\x41\x44\x44\x45\x44\x10\x00\x12\x0b\n\x07RENAMED\x10\x01\x12\x0b\n\x07\x44\x45LETED\x10\x02\x12\x0b\n\x07\x43HANGED\x10\x03\x12\t\n\x05MOVED\x10\x04\x12\x11\n\rMOVED_RENAMED\x10\x05\"3\n\x0fMapDiffResponse\x12 \n\x05\x66iles\x18\x01 \x03(\x0b\x32\x11.v1.packageStatus2\xe2\x0f\n\x05\x41gent\x12I\n\x0e\x43reateManifest\x12\x19.v1.CreateManifestRequest\x1a\x1a.v1.CreateManifestResponse\"\x00\x12\x45\n\rAddToManifest\x12\x18.v1.AddToManifestRequest\x1a\x18.v1.SimpleStatusResponse\"\x00\x12O\n\x12RemoveFromManifest\x12\x1d.v1.RemoveFromManifestRequest\x1a\x18.v1.SimpleStatusResponse\"\x00\x12G\n\x0e\x44\x65leteManifest\x12\x19.v1.DeleteManifestRequest\x1a\x18.v1.SimpleStatusResponse\"\x00\x12\x46\n\rListManifests\x12\x18.v1.ListManifestsRequest\x1a\x19.v1.ListManifestsResponse\"\x00\x12R\n\x11ListManifestFiles\x12\x1c.v1.ListManifestFilesRequest\x1a\x1d.v1.ListManifestFilesResponse\"\x00\x12U\n\x15RelocateManifestFiles\x12 .v1.RelocateManifestFilesRequest\x1a\x18.v1.SimpleStatusResponse\"\x00\x12\x43\n\x0cSyncManifest\x12\x17.v1.SyncManifestRequest\x1a\x18.v1.SyncManifestResponse\"\x00\x12\x45\n\rResetManifest\x12\x18.v1.ResetManifestRequest\x1a\x18.v1.SimpleStatusResponse\"\x00\x12G\n\x0eUploadManifest\x12\x19.v1.UploadManifestRequest\x1a\x18.v1.SimpleStatusResponse\"\x00\x12\x43\n\x0c\x43\x61ncelUpload\x12\x17.v1.CancelUploadRequest\x1a\x18.v1.SimpleStatusResponse\"\x00\x12\x37\n\x08\x44ownload\x12\x13.v1.DownloadRequest\x1a\x14.v1.DownloadResponse\"\x00\x12G\n\x0e\x43\x61ncelDownload\x12\x19.v1.CancelDownloadRequest\x1a\x18.v1.SimpleStatusResponse\"\x00\x12\x31\n\x03Map\x12\x0e.v1.MapRequest\x1a\x18.v1.SimpleStatusResponse\"\x00\x12\x33\n\x04Pull\x12\x0f.v1.PullRequest\x1a\x18.v1.SimpleStatusResponse\"\x00\x12\x37\n\nGetMapDiff\x12\x12.v1.MapDiffRequest\x1a\x13.v1.MapDiffResponse\"\x00\x12\x34\n\x07Version\x12\x12.v1.VersionRequest\x1a\x13.v1.VersionResponse\"\x00\x12<\n\tSubscribe\x12\x14.v1.SubscribeRequest\x1a\x15.v1.SubscribeResponse\"\x00\x30\x01\x12<\n\x0bUnsubscribe\x12\x14.v1.SubscribeRequest\x1a\x15.v1.SubscribeResponse\"\x00\x12+\n\x04Stop\x12\x0f.v1.StopRequest\x1a\x10.v1.StopResponse\"\x00\x12+\n\x04Ping\x12\x0f.v1.PingRequest\x1a\x10.v1.PingResponse\"\x00\x12\x31\n\x07GetUser\x12\x12.v1.GetUserRequest\x1a\x10.v1.UserResponse\"\x00\x12=\n\rSwitchProfile\x12\x18.v1.SwitchProfileRequest\x1a\x10.v1.UserResponse\"\x00\x12?\n\x0eReAuthenticate\x12\x19.v1.ReAuthenticateRequest\x1a\x10.v1.UserResponse\"\x00\x12=\n\nUseDataset\x12\x15.v1.UseDatasetRequest\x1a\x16.v1.UseDatasetResponse\"\x00\x12\x41\n\rStartWorkflow\x12\x18.v1.StartWorkflowRequest\x1a\x14.v1.WorkflowResponse\"\x00\x12\x37\n\x08Register\x12\x13.v1.RegisterRequest\x1a\x14.v1.RegisterResponse\"\x00\x12^\n\x15GetTimeseriesChannels\x12 .v1.GetTimeseriesChannelsRequest\x1a!.v1.GetTimeseriesChannelsResponse\"\x00\x12\x62\n\x1dGetTimeseriesRangeForChannels\x12\x1d.v1.GetTimeseriesRangeRequest\x1a\x1e.v1.GetTimeseriesRangeResponse\"\x00\x30\x01\x12?\n\nResetCache\x12\x15.v1.ResetCacheRequest\x1a\x18.v1.SimpleStatusResponse\"\x00\x42-Z+github.com/pennsieve/pennsieve-agent/api/v1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -35,139 +35,139 @@ _globals['_GETTIMESERIESCHANNELSRESPONSE']._serialized_start=344 _globals['_GETTIMESERIESCHANNELSRESPONSE']._serialized_end=415 _globals['_GETTIMESERIESRANGEREQUEST']._serialized_start=418 - _globals['_GETTIMESERIESRANGEREQUEST']._serialized_end=583 - _globals['_GETTIMESERIESRANGERESPONSE']._serialized_start=586 - _globals['_GETTIMESERIESRANGERESPONSE']._serialized_end=1139 - _globals['_GETTIMESERIESRANGERESPONSE_CHANNELINFO']._serialized_start=854 - _globals['_GETTIMESERIESRANGERESPONSE_CHANNELINFO']._serialized_end=929 - _globals['_GETTIMESERIESRANGERESPONSE_RANGEDATA']._serialized_start=931 - _globals['_GETTIMESERIESRANGERESPONSE_RANGEDATA']._serialized_end=1018 - _globals['_GETTIMESERIESRANGERESPONSE_ERRORDATA']._serialized_start=1020 - _globals['_GETTIMESERIESRANGERESPONSE_ERRORDATA']._serialized_end=1045 - _globals['_GETTIMESERIESRANGERESPONSE_MESSAGETYPE']._serialized_start=1047 - _globals['_GETTIMESERIESRANGERESPONSE_MESSAGETYPE']._serialized_end=1123 - _globals['_SUBSCRIBERESPONSE']._serialized_start=1142 - _globals['_SUBSCRIBERESPONSE']._serialized_end=2248 - _globals['_SUBSCRIBERESPONSE_EVENTRESPONSE']._serialized_start=1466 - _globals['_SUBSCRIBERESPONSE_EVENTRESPONSE']._serialized_end=1498 - _globals['_SUBSCRIBERESPONSE_UPLOADRESPONSE']._serialized_start=1501 - _globals['_SUBSCRIBERESPONSE_UPLOADRESPONSE']._serialized_end=1709 - _globals['_SUBSCRIBERESPONSE_UPLOADRESPONSE_UPLOADSTATUS']._serialized_start=1654 - _globals['_SUBSCRIBERESPONSE_UPLOADRESPONSE_UPLOADSTATUS']._serialized_end=1709 - _globals['_SUBSCRIBERESPONSE_DOWNLOADSTATUSRESPONSE']._serialized_start=1712 - _globals['_SUBSCRIBERESPONSE_DOWNLOADSTATUSRESPONSE']._serialized_end=1921 - _globals['_SUBSCRIBERESPONSE_DOWNLOADSTATUSRESPONSE_DOWNLOADSTATUS']._serialized_start=1864 - _globals['_SUBSCRIBERESPONSE_DOWNLOADSTATUSRESPONSE_DOWNLOADSTATUS']._serialized_end=1921 - _globals['_SUBSCRIBERESPONSE_SYNCRESPONSE']._serialized_start=1924 - _globals['_SUBSCRIBERESPONSE_SYNCRESPONSE']._serialized_end=2109 - _globals['_SUBSCRIBERESPONSE_SYNCRESPONSE_SYNCSTATUS']._serialized_start=2056 - _globals['_SUBSCRIBERESPONSE_SYNCRESPONSE_SYNCSTATUS']._serialized_end=2109 - _globals['_SUBSCRIBERESPONSE_MESSAGETYPE']._serialized_start=2111 - _globals['_SUBSCRIBERESPONSE_MESSAGETYPE']._serialized_end=2232 - _globals['_SIMPLESTATUSRESPONSE']._serialized_start=2250 - _globals['_SIMPLESTATUSRESPONSE']._serialized_end=2288 - _globals['_CANCELUPLOADREQUEST']._serialized_start=2290 - _globals['_CANCELUPLOADREQUEST']._serialized_end=2352 - _globals['_CANCELDOWNLOADREQUEST']._serialized_start=2354 - _globals['_CANCELDOWNLOADREQUEST']._serialized_end=2421 - _globals['_CREATEMANIFESTREQUEST']._serialized_start=2423 - _globals['_CREATEMANIFESTREQUEST']._serialized_end=2525 - _globals['_CREATEMANIFESTRESPONSE']._serialized_start=2527 - _globals['_CREATEMANIFESTRESPONSE']._serialized_end=2589 - _globals['_ADDTOMANIFESTREQUEST']._serialized_start=2591 - _globals['_ADDTOMANIFESTREQUEST']._serialized_end=2713 - _globals['_REMOVEFROMMANIFESTREQUEST']._serialized_start=2715 - _globals['_REMOVEFROMMANIFESTREQUEST']._serialized_end=2784 - _globals['_VERSIONREQUEST']._serialized_start=2786 - _globals['_VERSIONREQUEST']._serialized_end=2802 - _globals['_VERSIONRESPONSE']._serialized_start=2804 - _globals['_VERSIONRESPONSE']._serialized_end=2857 - _globals['_PINGREQUEST']._serialized_start=2859 - _globals['_PINGREQUEST']._serialized_end=2872 - _globals['_PINGRESPONSE']._serialized_start=2874 - _globals['_PINGRESPONSE']._serialized_end=2905 - _globals['_STOPREQUEST']._serialized_start=2907 - _globals['_STOPREQUEST']._serialized_end=2920 - _globals['_STOPRESPONSE']._serialized_start=2922 - _globals['_STOPRESPONSE']._serialized_end=2953 - _globals['_LISTMANIFESTSREQUEST']._serialized_start=2955 - _globals['_LISTMANIFESTSREQUEST']._serialized_end=2977 - _globals['_LISTMANIFESTSRESPONSE']._serialized_start=2980 - _globals['_LISTMANIFESTSRESPONSE']._serialized_end=3246 - _globals['_LISTMANIFESTSRESPONSE_MANIFEST']._serialized_start=3061 - _globals['_LISTMANIFESTSRESPONSE_MANIFEST']._serialized_end=3246 - _globals['_DELETEMANIFESTREQUEST']._serialized_start=3248 - _globals['_DELETEMANIFESTREQUEST']._serialized_end=3292 - _globals['_LISTMANIFESTFILESREQUEST']._serialized_start=3294 - _globals['_LISTMANIFESTFILESREQUEST']._serialized_end=3372 - _globals['_LISTMANIFESTFILESRESPONSE']._serialized_start=3375 - _globals['_LISTMANIFESTFILESRESPONSE']._serialized_end=3775 - _globals['_LISTMANIFESTFILESRESPONSE_FILEUPLOAD']._serialized_start=3461 - _globals['_LISTMANIFESTFILESRESPONSE_FILEUPLOAD']._serialized_end=3625 - _globals['_LISTMANIFESTFILESRESPONSE_STATUSTYPE']._serialized_start=3628 - _globals['_LISTMANIFESTFILESRESPONSE_STATUSTYPE']._serialized_end=3775 - _globals['_UPLOADMANIFESTREQUEST']._serialized_start=3777 - _globals['_UPLOADMANIFESTREQUEST']._serialized_end=3821 - _globals['_GETUSERREQUEST']._serialized_start=3823 - _globals['_GETUSERREQUEST']._serialized_end=3839 - _globals['_USERRESPONSE']._serialized_start=3842 - _globals['_USERRESPONSE']._serialized_end=4054 - _globals['_SWITCHPROFILEREQUEST']._serialized_start=4056 - _globals['_SWITCHPROFILEREQUEST']._serialized_end=4095 - _globals['_REAUTHENTICATEREQUEST']._serialized_start=4097 - _globals['_REAUTHENTICATEREQUEST']._serialized_end=4120 - _globals['_USEDATASETREQUEST']._serialized_start=4122 - _globals['_USEDATASETREQUEST']._serialized_end=4161 - _globals['_USEDATASETRESPONSE']._serialized_start=4163 - _globals['_USEDATASETRESPONSE']._serialized_end=4203 - _globals['_SYNCMANIFESTREQUEST']._serialized_start=4205 - _globals['_SYNCMANIFESTREQUEST']._serialized_end=4247 - _globals['_SYNCMANIFESTRESPONSE']._serialized_start=4249 - _globals['_SYNCMANIFESTRESPONSE']._serialized_end=4374 - _globals['_RESETMANIFESTREQUEST']._serialized_start=4376 - _globals['_RESETMANIFESTREQUEST']._serialized_end=4419 - _globals['_RELOCATEMANIFESTFILESREQUEST']._serialized_start=4421 - _globals['_RELOCATEMANIFESTFILESREQUEST']._serialized_end=4508 - _globals['_STARTWORKFLOWREQUEST']._serialized_start=4510 - _globals['_STARTWORKFLOWREQUEST']._serialized_end=4575 - _globals['_WORKFLOWRESPONSE']._serialized_start=4578 - _globals['_WORKFLOWRESPONSE']._serialized_end=4728 - _globals['_WORKFLOWRESPONSE_WORKFLOWTYPE']._serialized_start=4693 - _globals['_WORKFLOWRESPONSE_WORKFLOWTYPE']._serialized_end=4728 - _globals['_REGISTERREQUEST']._serialized_start=4730 - _globals['_REGISTERREQUEST']._serialized_end=4815 - _globals['_REGISTERRESPONSE']._serialized_start=4817 - _globals['_REGISTERRESPONSE']._serialized_end=4855 - _globals['_ACCOUNT']._serialized_start=4857 - _globals['_ACCOUNT']._serialized_end=4940 - _globals['_ACCOUNT_ACCOUNTTYPE']._serialized_start=4907 - _globals['_ACCOUNT_ACCOUNTTYPE']._serialized_end=4940 - _globals['_CREDENTIALS']._serialized_start=4942 - _globals['_CREDENTIALS']._serialized_end=4972 - _globals['_MAPREQUEST']._serialized_start=4974 - _globals['_MAPREQUEST']._serialized_end=5029 - _globals['_DOWNLOADREQUEST']._serialized_start=5032 - _globals['_DOWNLOADREQUEST']._serialized_end=5241 - _globals['_DOWNLOADREQUEST_DOWNLOADTYPE']._serialized_start=5193 - _globals['_DOWNLOADREQUEST_DOWNLOADTYPE']._serialized_end=5233 - _globals['_DOWNLOADDATASETREQUEST']._serialized_start=5243 - _globals['_DOWNLOADDATASETREQUEST']._serialized_end=5310 - _globals['_DOWNLOADPACKAGEREQUEST']._serialized_start=5312 - _globals['_DOWNLOADPACKAGEREQUEST']._serialized_end=5383 - _globals['_DOWNLOADRESPONSE']._serialized_start=5386 - _globals['_DOWNLOADRESPONSE']._serialized_end=5531 - _globals['_DOWNLOADRESPONSE_RESPONSETYPE']._serialized_start=5484 - _globals['_DOWNLOADRESPONSE_RESPONSETYPE']._serialized_end=5531 - _globals['_MAPDIFFREQUEST']._serialized_start=5533 - _globals['_MAPDIFFREQUEST']._serialized_end=5563 - _globals['_FILEINFO']._serialized_start=5565 - _globals['_FILEINFO']._serialized_end=5640 - _globals['_PACKAGESTATUS']._serialized_start=5643 - _globals['_PACKAGESTATUS']._serialized_end=5833 - _globals['_PACKAGESTATUS_STATUSTYPE']._serialized_start=5741 - _globals['_PACKAGESTATUS_STATUSTYPE']._serialized_end=5833 - _globals['_MAPDIFFRESPONSE']._serialized_start=5835 - _globals['_MAPDIFFRESPONSE']._serialized_end=5886 - _globals['_AGENT']._serialized_start=5889 - _globals['_AGENT']._serialized_end=7907 + _globals['_GETTIMESERIESRANGEREQUEST']._serialized_end=584 + _globals['_GETTIMESERIESRANGERESPONSE']._serialized_start=587 + _globals['_GETTIMESERIESRANGERESPONSE']._serialized_end=1140 + _globals['_GETTIMESERIESRANGERESPONSE_CHANNELINFO']._serialized_start=855 + _globals['_GETTIMESERIESRANGERESPONSE_CHANNELINFO']._serialized_end=930 + _globals['_GETTIMESERIESRANGERESPONSE_RANGEDATA']._serialized_start=932 + _globals['_GETTIMESERIESRANGERESPONSE_RANGEDATA']._serialized_end=1019 + _globals['_GETTIMESERIESRANGERESPONSE_ERRORDATA']._serialized_start=1021 + _globals['_GETTIMESERIESRANGERESPONSE_ERRORDATA']._serialized_end=1046 + _globals['_GETTIMESERIESRANGERESPONSE_MESSAGETYPE']._serialized_start=1048 + _globals['_GETTIMESERIESRANGERESPONSE_MESSAGETYPE']._serialized_end=1124 + _globals['_SUBSCRIBERESPONSE']._serialized_start=1143 + _globals['_SUBSCRIBERESPONSE']._serialized_end=2249 + _globals['_SUBSCRIBERESPONSE_EVENTRESPONSE']._serialized_start=1467 + _globals['_SUBSCRIBERESPONSE_EVENTRESPONSE']._serialized_end=1499 + _globals['_SUBSCRIBERESPONSE_UPLOADRESPONSE']._serialized_start=1502 + _globals['_SUBSCRIBERESPONSE_UPLOADRESPONSE']._serialized_end=1710 + _globals['_SUBSCRIBERESPONSE_UPLOADRESPONSE_UPLOADSTATUS']._serialized_start=1655 + _globals['_SUBSCRIBERESPONSE_UPLOADRESPONSE_UPLOADSTATUS']._serialized_end=1710 + _globals['_SUBSCRIBERESPONSE_DOWNLOADSTATUSRESPONSE']._serialized_start=1713 + _globals['_SUBSCRIBERESPONSE_DOWNLOADSTATUSRESPONSE']._serialized_end=1922 + _globals['_SUBSCRIBERESPONSE_DOWNLOADSTATUSRESPONSE_DOWNLOADSTATUS']._serialized_start=1865 + _globals['_SUBSCRIBERESPONSE_DOWNLOADSTATUSRESPONSE_DOWNLOADSTATUS']._serialized_end=1922 + _globals['_SUBSCRIBERESPONSE_SYNCRESPONSE']._serialized_start=1925 + _globals['_SUBSCRIBERESPONSE_SYNCRESPONSE']._serialized_end=2110 + _globals['_SUBSCRIBERESPONSE_SYNCRESPONSE_SYNCSTATUS']._serialized_start=2057 + _globals['_SUBSCRIBERESPONSE_SYNCRESPONSE_SYNCSTATUS']._serialized_end=2110 + _globals['_SUBSCRIBERESPONSE_MESSAGETYPE']._serialized_start=2112 + _globals['_SUBSCRIBERESPONSE_MESSAGETYPE']._serialized_end=2233 + _globals['_SIMPLESTATUSRESPONSE']._serialized_start=2251 + _globals['_SIMPLESTATUSRESPONSE']._serialized_end=2289 + _globals['_CANCELUPLOADREQUEST']._serialized_start=2291 + _globals['_CANCELUPLOADREQUEST']._serialized_end=2353 + _globals['_CANCELDOWNLOADREQUEST']._serialized_start=2355 + _globals['_CANCELDOWNLOADREQUEST']._serialized_end=2422 + _globals['_CREATEMANIFESTREQUEST']._serialized_start=2424 + _globals['_CREATEMANIFESTREQUEST']._serialized_end=2526 + _globals['_CREATEMANIFESTRESPONSE']._serialized_start=2528 + _globals['_CREATEMANIFESTRESPONSE']._serialized_end=2590 + _globals['_ADDTOMANIFESTREQUEST']._serialized_start=2592 + _globals['_ADDTOMANIFESTREQUEST']._serialized_end=2714 + _globals['_REMOVEFROMMANIFESTREQUEST']._serialized_start=2716 + _globals['_REMOVEFROMMANIFESTREQUEST']._serialized_end=2785 + _globals['_VERSIONREQUEST']._serialized_start=2787 + _globals['_VERSIONREQUEST']._serialized_end=2803 + _globals['_VERSIONRESPONSE']._serialized_start=2805 + _globals['_VERSIONRESPONSE']._serialized_end=2858 + _globals['_PINGREQUEST']._serialized_start=2860 + _globals['_PINGREQUEST']._serialized_end=2873 + _globals['_PINGRESPONSE']._serialized_start=2875 + _globals['_PINGRESPONSE']._serialized_end=2906 + _globals['_STOPREQUEST']._serialized_start=2908 + _globals['_STOPREQUEST']._serialized_end=2921 + _globals['_STOPRESPONSE']._serialized_start=2923 + _globals['_STOPRESPONSE']._serialized_end=2954 + _globals['_LISTMANIFESTSREQUEST']._serialized_start=2956 + _globals['_LISTMANIFESTSREQUEST']._serialized_end=2978 + _globals['_LISTMANIFESTSRESPONSE']._serialized_start=2981 + _globals['_LISTMANIFESTSRESPONSE']._serialized_end=3247 + _globals['_LISTMANIFESTSRESPONSE_MANIFEST']._serialized_start=3062 + _globals['_LISTMANIFESTSRESPONSE_MANIFEST']._serialized_end=3247 + _globals['_DELETEMANIFESTREQUEST']._serialized_start=3249 + _globals['_DELETEMANIFESTREQUEST']._serialized_end=3293 + _globals['_LISTMANIFESTFILESREQUEST']._serialized_start=3295 + _globals['_LISTMANIFESTFILESREQUEST']._serialized_end=3373 + _globals['_LISTMANIFESTFILESRESPONSE']._serialized_start=3376 + _globals['_LISTMANIFESTFILESRESPONSE']._serialized_end=3776 + _globals['_LISTMANIFESTFILESRESPONSE_FILEUPLOAD']._serialized_start=3462 + _globals['_LISTMANIFESTFILESRESPONSE_FILEUPLOAD']._serialized_end=3626 + _globals['_LISTMANIFESTFILESRESPONSE_STATUSTYPE']._serialized_start=3629 + _globals['_LISTMANIFESTFILESRESPONSE_STATUSTYPE']._serialized_end=3776 + _globals['_UPLOADMANIFESTREQUEST']._serialized_start=3778 + _globals['_UPLOADMANIFESTREQUEST']._serialized_end=3822 + _globals['_GETUSERREQUEST']._serialized_start=3824 + _globals['_GETUSERREQUEST']._serialized_end=3840 + _globals['_USERRESPONSE']._serialized_start=3843 + _globals['_USERRESPONSE']._serialized_end=4055 + _globals['_SWITCHPROFILEREQUEST']._serialized_start=4057 + _globals['_SWITCHPROFILEREQUEST']._serialized_end=4096 + _globals['_REAUTHENTICATEREQUEST']._serialized_start=4098 + _globals['_REAUTHENTICATEREQUEST']._serialized_end=4121 + _globals['_USEDATASETREQUEST']._serialized_start=4123 + _globals['_USEDATASETREQUEST']._serialized_end=4162 + _globals['_USEDATASETRESPONSE']._serialized_start=4164 + _globals['_USEDATASETRESPONSE']._serialized_end=4204 + _globals['_SYNCMANIFESTREQUEST']._serialized_start=4206 + _globals['_SYNCMANIFESTREQUEST']._serialized_end=4248 + _globals['_SYNCMANIFESTRESPONSE']._serialized_start=4250 + _globals['_SYNCMANIFESTRESPONSE']._serialized_end=4375 + _globals['_RESETMANIFESTREQUEST']._serialized_start=4377 + _globals['_RESETMANIFESTREQUEST']._serialized_end=4420 + _globals['_RELOCATEMANIFESTFILESREQUEST']._serialized_start=4422 + _globals['_RELOCATEMANIFESTFILESREQUEST']._serialized_end=4509 + _globals['_STARTWORKFLOWREQUEST']._serialized_start=4511 + _globals['_STARTWORKFLOWREQUEST']._serialized_end=4576 + _globals['_WORKFLOWRESPONSE']._serialized_start=4579 + _globals['_WORKFLOWRESPONSE']._serialized_end=4729 + _globals['_WORKFLOWRESPONSE_WORKFLOWTYPE']._serialized_start=4694 + _globals['_WORKFLOWRESPONSE_WORKFLOWTYPE']._serialized_end=4729 + _globals['_REGISTERREQUEST']._serialized_start=4731 + _globals['_REGISTERREQUEST']._serialized_end=4816 + _globals['_REGISTERRESPONSE']._serialized_start=4818 + _globals['_REGISTERRESPONSE']._serialized_end=4856 + _globals['_ACCOUNT']._serialized_start=4858 + _globals['_ACCOUNT']._serialized_end=4941 + _globals['_ACCOUNT_ACCOUNTTYPE']._serialized_start=4908 + _globals['_ACCOUNT_ACCOUNTTYPE']._serialized_end=4941 + _globals['_CREDENTIALS']._serialized_start=4943 + _globals['_CREDENTIALS']._serialized_end=4973 + _globals['_MAPREQUEST']._serialized_start=4975 + _globals['_MAPREQUEST']._serialized_end=5030 + _globals['_DOWNLOADREQUEST']._serialized_start=5033 + _globals['_DOWNLOADREQUEST']._serialized_end=5242 + _globals['_DOWNLOADREQUEST_DOWNLOADTYPE']._serialized_start=5194 + _globals['_DOWNLOADREQUEST_DOWNLOADTYPE']._serialized_end=5234 + _globals['_DOWNLOADDATASETREQUEST']._serialized_start=5244 + _globals['_DOWNLOADDATASETREQUEST']._serialized_end=5311 + _globals['_DOWNLOADPACKAGEREQUEST']._serialized_start=5313 + _globals['_DOWNLOADPACKAGEREQUEST']._serialized_end=5384 + _globals['_DOWNLOADRESPONSE']._serialized_start=5387 + _globals['_DOWNLOADRESPONSE']._serialized_end=5532 + _globals['_DOWNLOADRESPONSE_RESPONSETYPE']._serialized_start=5485 + _globals['_DOWNLOADRESPONSE_RESPONSETYPE']._serialized_end=5532 + _globals['_MAPDIFFREQUEST']._serialized_start=5534 + _globals['_MAPDIFFREQUEST']._serialized_end=5564 + _globals['_FILEINFO']._serialized_start=5566 + _globals['_FILEINFO']._serialized_end=5641 + _globals['_PACKAGESTATUS']._serialized_start=5644 + _globals['_PACKAGESTATUS']._serialized_end=5834 + _globals['_PACKAGESTATUS_STATUSTYPE']._serialized_start=5742 + _globals['_PACKAGESTATUS_STATUSTYPE']._serialized_end=5834 + _globals['_MAPDIFFRESPONSE']._serialized_start=5836 + _globals['_MAPDIFFRESPONSE']._serialized_end=5887 + _globals['_AGENT']._serialized_start=5890 + _globals['_AGENT']._serialized_end=7908 # @@protoc_insertion_point(module_scope) diff --git a/src/pennsieve/timeSeries.py b/src/pennsieve/timeSeries.py new file mode 100644 index 0000000..a66b5ec --- /dev/null +++ b/src/pennsieve/timeSeries.py @@ -0,0 +1,103 @@ + +import numpy as np +import pandas as pd +from .protos import agent_pb2 +from .protos.agent_pb2 import GetTimeseriesChannelsResponse +import pandas as pd + +class TimeSeries: + """ + A class to represent operations on manifest. + + Methods: + -------- + create(base_path): + creates a new manifest with file(s) located in base_path + add(manifest_id, base_path, targetBasePath='', recursive=True, files=None): + adds a file(s) from base_path to a manifest with manifest_id + in order to store them at targetBasePath on the server + remove_file(manifest_id, file_id): + removes a file with file_id from manifest with manifest_id + delete(manifest_id): + deletes a manifest with manifest_id + list_manifests(): + lists all available manifests + get_manifest(manifest_id=None): + gets the most recent manifest, or the manifest specified by manifest_id + set_manifest(manifest_id=None): + sets the manifest specified by manifest_id + list_files(manifest_id, offset, limit): + lists files for manifest with manifest_id, starting from the number defined by offset + upload(manifest_id): + initiates the upload of files definied in manifest with manifest_id + start_upload(manifest_id): + see: upload(manifest_id) + cancel_upload(manifest_id, cancel_all=True): + cancels the upload session for manifest_id or all upload sessions + relocate_files(manifest_id, path, target_path): + changes the target path of the manifest + sync(manifest_id): + synchronizes the state of the manifest between local and cloud server + reset(manifest_id): + allows users to reset the status for all files in a manifest + """ + + def __init__(self, stub): + """Initialization of the timeseries class. + + Parameters: + ----------- + stub : object + Stub of an Agent + """ + self._stub = stub + + def getChannels(self, dataset_id, package_id, refresh) -> GetTimeseriesChannelsResponse: + request = agent_pb2.GetTimeseriesChannelsRequest( + dataset_id=dataset_id, package_id=package_id, refresh=refresh + ) + response = self._stub.GetTimeseriesChannels(request=request) + return response.channel + + def getRangeForChannels( + self, + dataset_id, + package_id, + channel_ids, + start_time, + end_time, + is_refresh, + is_relative_time, + ): + request = agent_pb2.GetTimeseriesRangeRequest( + dataset_id=dataset_id, + package_id=package_id, + channel_ids=channel_ids, + start_time=start_time, + end_time=end_time, + refresh=is_refresh, + relative_time=is_relative_time, + ) + + resultMap = {} + for response in self._stub.GetTimeseriesRangeForChannels(request=request): + if response.type == 2: + continue + if response.type == 1: + values = list(response.data.data) + index = np.linspace(response.data.start, response.data.end, len(values)) + newVec = pd.Series(values, index=index, name=response.data.channel_id) + if response.data.channel_id in resultMap: + resultMap[response.data.channel_id] = pd.concat( + [resultMap[response.data.channel_id], newVec] + ) + else: + resultMap[response.data.channel_id] = newVec + + result = pd.DataFrame() + for key in resultMap: + result[key] = resultMap[key] + + return result + +