{ "info": { "author": "Todd Greenwood-Geer (Enviro Software Solutions, LLC)", "author_email": "pub+github@zwrob.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Build Tools" ], "description": "# Energy Dashboard Command Line Interface (edc)\n\nCommand Line Interface for the Energy Dashboard.\n\nStatus : PRE ALPHA\n* Stages\n * download : done\n * parse : done\n * insert : inproc (mostly working, need to test)\n * notebook : not yet started\n\n* While this is the master branch, this project is not ready for public\n consumption. Stand by...\n* All examples commands, install, etc. assume a linux (ubuntu) installation and\n use the `apt` package manager, etc.\n\n## Prerequisites\n\n### Install basic deps\n\n\n```bash\nsudo apt install parallel rclone build-essential git p7zip-full\n```\n\n### Install git-lfs (git large file store)\n\n*git-lfs* is used for storing the database files, which are basically binary blobs\nthat are updated periodically. Database blob revisions are offloaded to git-lfs.\n\nFor installation instructions, go here:\n\n* https://git-lfs.github.com/\n\nExample:\n\n```bash\ncurl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash\n```\n\n### Install conda/anaconda\n\nYou don't strictly _need_ anaconda for this toolchain to work. If you prefer\nmucking with python virtualenv directly, then go for it. I find that anaconda\nworks really well with other parts of this toolchain, namely Jupyter Notebooks. \nAll the examples and documentation will assume you are using anaconda.\n\nExample, see the website for current instructions:\n\n* https://www.anaconda.com/distribution/#download-section\n\nExample:\n\n```bash\nwget https://repo.anaconda.com/archive/Anaconda3-2019.07-Linux-x86_64.sh\nchmod +x Anaconda3-2019.07-Linux-x86_64.sh \n./Anaconda3-2019.07-Linux-x86_64.sh \n```\n\n## Installation\n\nThis webpage has a great tutorial on how to use conda. It's what I use\nwhen I forget the commands and concepts:\n\n* https://geohackweek.github.io/Introductory/01-conda-tutorial/\n\n### Environment\n\nFirst, create a conda environment, it can be named anything, I'll call\nthis `edc-cli`:\n\n```bash\nconda update conda\nconda create -n edc-cli python=3 numpy jupyter pandas\nconda activate edc-cli\n```\n\n### Client\n\nThen install the energy-dashboard-client:\n\n```bash\npip install -U energy-dashboard-client\n```\n\n\n## Setup\n\nThe energy-dashboard-client has two commands to get you up and running with an\nenergy-dashboard:\n\n* clone : this will literally use git to clone the energy-dashboard repo to your local machine\n* update : this will pull down all the submodules to your local machine\n\nNote: if you only want a subset of the submodules installed on your local machine, then you\ncan use the `git submodule deinit data/[name-of-submodule-to-remove]`.\n\nAs always, let me know if you need better tooling around this or any other aspect of this project.\n\n### Clone and Update\n\n```bash\nmkdir foo\ncd foo\nedc clone\ncd energy-dashboard\nedc update\n```\n\n### Verify Setup\n\nAt this point you should have a working environment:\n\nVerify that you have files:\n\n```bash\n$ tree -L 1\n.\n\u251c\u2500\u2500 data\n\u251c\u2500\u2500 docs\n\u251c\u2500\u2500 LICENSE\n\u251c\u2500\u2500 notebooks\n\u251c\u2500\u2500 README.md\n\u2514\u2500\u2500 run.sh\n```\n\nVerify that `edc` works:\n\n```bash\n`$ edc --help\nUsage: edc [OPTIONS] COMMAND [ARGS]...\n\n Command Line Interface for the Energy Dashboard. This tooling collects\n information from a number of data feeds, imports that data, transforms\n it, and inserts it into a database.\n\nOptions:\n --ed-dir TEXT Energy Dashboard directory (defaults to cwd)\n --log-level [CRITICAL|ERROR|WARNING|INFO|DEBUG]\n --help Show this message and exit.\n\nCommands:\n clone Clone energy-dashboard locally\n feed Manage individual 'feed' (singular).\n feeds Manage the full set of data 'feeds' (plural).\n license Show the license (GPL v3).\n update Update the submodules\n```\n\nVerify that you can list out the data feeds:\n\n```bash\n$ edc feeds list | head\ndata-oasis-atl-ruc-zone-map\ndata-oasis-cbd-nodal-grp-cnstr-prc\ndata-oasis-cmmt-rmr-dam\ndata-oasis-atl-sp-tie\ndata-oasis-prc-mpm-cnstr-cmp-dam\ndata-oasis-trns-curr-usage-all-all\ndata-oasis-ene-baa-mkt-events-rtd-all\ndata-oasis-ene-eim-transfer-limit-all-all\ndata-oasis-as-results-dam\ndata-oasis-ene-wind-solar-summary\n```\n\nUsing `find` we can verify that we don't have any data files \nsuch as .zip, .xml, or .sql in the tree, but that we _do_ have\nthe state files:\n\n```\n$ find data/ | grep state | head\ndata/data-oasis-atl-ruc-zone-map/sql/state.txt\ndata/data-oasis-atl-ruc-zone-map/xml/state.txt\ndata/data-oasis-atl-ruc-zone-map/zip/state.txt\ndata/data-oasis-cbd-nodal-grp-cnstr-prc/sql/state.txt\ndata/data-oasis-cbd-nodal-grp-cnstr-prc/xml/state.txt\ndata/data-oasis-cbd-nodal-grp-cnstr-prc/zip/state.txt\ndata/data-oasis-cmmt-rmr-dam/sql/state.txt\ndata/data-oasis-cmmt-rmr-dam/xml/state.txt\ndata/data-oasis-cmmt-rmr-dam/zip/state.txt\ndata/data-oasis-atl-sp-tie/sql/state.txt\n```\n\nNow verify what databases you have downloaded...\n\n```bash\n$ find data/ | grep \"\\.db$\" | head\ndata/data-oasis-atl-gen-cap-lst/db/data-oasis-atl-gen-cap-lst_00.db\ndata/data-oasis-sld-adv-fcst-rtd/db/data-oasis-sld-adv-fcst-rtd_01.db\ndata/data-oasis-sld-adv-fcst-rtd/db/data-oasis-sld-adv-fcst-rtd_00.db\ndata/data-oasis-sld-sf-eval-dmd-fcst/db/data-oasis-sld-sf-eval-dmd-fcst_00.db\ndata/data-oasis-sld-sf-eval-dmd-fcst/db/data-oasis-sld-sf-eval-dmd-fcst_03.db\ndata/data-oasis-sld-sf-eval-dmd-fcst/db/data-oasis-sld-sf-eval-dmd-fcst_01.db\ndata/data-oasis-sld-sf-eval-dmd-fcst/db/data-oasis-sld-sf-eval-dmd-fcst_05.db\ndata/data-oasis-sld-sf-eval-dmd-fcst/db/data-oasis-sld-sf-eval-dmd-fcst_04.db\ndata/data-oasis-sld-sf-eval-dmd-fcst/db/data-oasis-sld-sf-eval-dmd-fcst_02.db\ndata/data-oasis-ene-flex-ramp-dc-rtd-all/db/data-oasis-ene-flex-ramp-dc-rtd-all_00.db\n```\n\nI'll go over this in more detail below, but the reason there are multiple database files \nfor a given data feed is because the feed has multiple formats (argh!) and I \nhave not yet sorted out how to deal with that. More on this later.\n\n\n## Use Cases\n\n### Create Jupyter Notebook\n\nTODO : This is what most of the users of this project want to do.\n\nThe code to automatically generate jupyter notebooks has not been written yet, but\nit's essentially two things:\n\n* look at the generated database and the tables in that database (or the .sql files)\n* use Jinja2 templating to emit a Jupyter Notebook with the Pandas queries wired in\n\nWhile the code to _automatically_ generate this hasn't been written yet, you can\nalways write your own Jupyter Notebook and manualy specify the database and \nqueries... just look at the samples in the energy-dashboard/notebooks directory.\n\n### Curate Data Feeds\n\nAt a high level, a data feed is simply a url and some instructions for processing\nit. The url is stored in the `manifest.json`, and the processing instructions\nare stored in the `./src` directory. The `./src` directory contains python files\nthat handle downloading, parsing, constructing sql insert statements, and inserting\nthe data into a sqlite3 database. See the section on `Add New Data Feed` for more\ndetails on the construction of a data feed.\n\n#### Pipeline\n\nData feeds are processed in stages. \n\n##### Stages \n\nData moves horizontally across the stages, starting with `download` and winding up\nwith a database as the final artifact.\n\nHere are the typical stages:\n\n```bash\nDOWNLOAD -> UNZIP -> PARSE -> INSERT -> SAVE\n```\n\nThese stages are represented by bi the edc `proc` commands: `download | unzip |\nparse | insert | save`. Each `proc` command processes the artifacts in the\nprevious stage into it's stage.\n\n###### Download\n\nThe `download` command looks at the current date/time, generates a list of urls\nwith start and end dates, and downloads all these artifacts into the `./zip`\ndirectory. The ./zip/state.txt file is updated with the urls of the downloaded\nartifacts.\n\n```bash\nedc feed some-feed-named-foo proc download\n```\n\n###### Unzip\n\nThe `unzip` stage extracts `./zip` files from the downloaded artifacts into the\n`./xml` directory. The ./xml/state.txt file is updated with the name of the zip \nfile that was unzipped.\n\n```bash\nedc feed some-feed-named-foo proc unzip\n```\n\n###### Parse\n\nThe `parse` stage reads the xml files from `./xml` and writes out sql\nstatements to the `./sql` directory. The ./sql/state.txt file is updated with\nthe name of the xml file that was parsed.\n\n```bash\nedc feed some-feed-named-foo proc parse\n```\n\n###### Insert\n\nThe `insert` stage reads the sql files from `./sql` and creates a database\nand inserts the records into that database in the `./db` directory. The ./db/state.txt\nfile is updated with the name of the sql file that was inserted.\n\n```bash\nedc feed some-feed-named-foo proc insert\n```\n\n###### Save\n\nThe `save` stage invokes git to save the repository.\n\n\n```bash\nedc feed some-feed-named-foo proc insert\n```\n\n\nNote, that this procesing needs to be able to be re-started and continued, or\nreset and started-from-scratch. That's what the state.txt files are for.\n\n\n###### State Files\n\n```bash\nDOWNLOAD -> EXTRACT -> PARSE SQL -> INSERT -> *DATABASE*\n./zip/ ./xml/ ./sql/ ./db/\n state.txt state.txt state.txt state.txt\n```\n\nEach state.txt contains a list of artifacts that have already been processed. \nOriginally I called these: ./zip/downloaded.txt, ./xml/unzipped.txt, etc. But \nafter working with this for a few days, it is easier to just `cat` out [dir]/state.txt\nrather than remembering what each state file is named.\n\nEach stage in the pipeline looks at the artifacts in the previous stage and compares\nthat list with the list of previously processed artifacts in it's `state.txt` file, and\nthen gives the delta of new files to the processing code.\n\nSo, to restart a given stage, you just delete the stage directory. This deletes all \nthe generated artifacts *and* the state file. Voila. You are ready to start over.\n\nNote: if you delete a stage, you may want to delete the subsequent stages, too.\n\nHere's the command that does this for you:\n\n```bash\nedc feed [feed name] reset [stage]\n```\n\nHere's the scenario. I've been writing the code for this project on my laptop. But it does\nnot have the horsepower to crunch all this data into the various sqlite databases in\na reasonable amount of time. So I'm firing up a desktop machine to perform the heavy\nlifting. Here's what that process looks like. This is the same process any researcher \nthat wanted to replicate my work would want to do.\n\nClone and update\n\n```bash\nmkdir foo\nedc clone\ncd energy-dashboard\nedc update\n```\n\nAt this point, we have the energy-dashboard project, but we don't want to re-download\nall the previously downloaded files from their original source. In the case of CAISO\nOASIS, that would simply take too long (I've calculated the upper bound as 152 days, \nthough in reality it took about 3 weeks to download the resources here). Instead, we\ncan pull these previously downloaded artifacts from one of the public S3 buckets that\nI've mirrored them on...\n\nExample:\n\n```bash\nedc feed data-oasis-atl-ruc-zone-map s3restore\n```\n\nTo grab the artifacts from the entire set of feeds:\n\n```bash\nedc feeds list | xargs -L 1 -I {} edc feed {} s3restore\n```\n\nEven though these are replicated on S3 and the download times are reasonable, you'll want\nto grab a coffee, take a walk, etc. while the raw dataset downloads.\n\nAt the current time, only the original zip files will be downloaded.\n\n TODO: give the s3restore command more fidelity to control what get's restored. Currently\n it is hardwired to just download the zip files, but it's possible someone would want to\n select any of the stage artifacts [zip, xml, sql, db].\n\nOk, so you had coffee, took a walk, and stuff is still downloading. No problem. Pulling stuff\noff of S3 is compressing what it took me weeks to accumulate down to hour(s). Let's continue...\n\nWe're downloading the feeds in this order, so the top few should have zip files:\n\n```bash\n$ edc feeds list | head\ndata-oasis-atl-ruc-zone-map\ndata-oasis-cbd-nodal-grp-cnstr-prc\ndata-oasis-cmmt-rmr-dam\ndata-oasis-atl-sp-tie\ndata-oasis-prc-mpm-cnstr-cmp-dam\ndata-oasis-trns-curr-usage-all-all\ndata-oasis-ene-baa-mkt-events-rtd-all\ndata-oasis-ene-eim-transfer-limit-all-all\ndata-oasis-as-results-dam\ndata-oasis-ene-wind-solar-summary\n```\n\nSo let's process the first feed in the list and make sure everything in the tool chain works...\n\nFirst, let's use the `invoke` commannd to execute arbitrary commands from that directory:\n\n```bash\nedc feed data-oasis-atl-ruc-zone-map invoke 'ls zip' | head\n\noasis_SZ_q_ATL_RUC_ZONE_MAP_sdt_20130101T07_00-0000_edt_20130102T07_00-0000_v_1.zip\noasis_SZ_q_ATL_RUC_ZONE_MAP_sdt_20130102T07_00-0000_edt_20130103T07_00-0000_v_1.zip\noasis_SZ_q_ATL_RUC_ZONE_MAP_sdt_20130103T07_00-0000_edt_20130104T07_00-0000_v_1.zip\noasis_SZ_q_ATL_RUC_ZONE_MAP_sdt_20130104T07_00-0000_edt_20130105T07_00-0000_v_1.zip\noasis_SZ_q_ATL_RUC_ZONE_MAP_sdt_20130105T07_00-0000_edt_20130106T07_00-0000_v_1.zip\noasis_SZ_q_ATL_RUC_ZONE_MAP_sdt_20130106T07_00-0000_edt_20130107T07_00-0000_v_1.zip\noasis_SZ_q_ATL_RUC_ZONE_MAP_sdt_20130107T07_00-0000_edt_20130108T07_00-0000_v_1.zip\noasis_SZ_q_ATL_RUC_ZONE_MAP_sdt_20130108T07_00-0000_edt_20130109T07_00-0000_v_1.zip\noasis_SZ_q_ATL_RUC_ZONE_MAP_sdt_20130109T07_00-0000_edt_20130110T07_00-0000_v_1.zip\noasis_SZ_q_ATL_RUC_ZONE_MAP_sdt_20130110T07_00-0000_edt_20130111T07_00-0000_v_1.zip\n```\n\n```bash\nedc feed data-oasis-atl-ruc-zone-map invoke 'ls zip' | wc\n\n 2451 2450 205727\n```\n\nCool, so we have 2451 zip files to play with. That should match the number of lines\nin the ./xml/state.txt file:\n\n```bash\nedc feed data-oasis-atl-ruc-zone-map invoke 'cat zip/state.txt' | wc\n\n 2450 2449 355106\n```\n\nClose enough. Let's try to generate the database, which is done\nwith the `proc` command:\n\n```bash\nedc feed data-oasis-atl-ruc-zone-map proc --help\nUsage: edc feed proc [OPTIONS] STAGE\n\n Process the feed through the stage procesing files in the './src' directory, in lexical order.\n\n Stages are: ['download', 'unzip', 'parse', 'insert']\n\nOptions:\n --help Show this message and exit.\n```\n\nTODO: add the 'all' stage and the 'save' stage.\n\nLet's run through them one at a time to make sure everything\nworks as expected...\n\n\n```bash\nedc feed data-oasis-atl-ruc-zone-map proc download\n\n{\"ts\":\"09/18/2019 01:33:16 PM\", \"msg\":{\"src\": \"data-oasis-atl-ruc-zone-map\", \"action\": \"download\", \"url\": \"http://oasis.caiso.com/oasisapi/SingleZip?queryname=ATL_RUC_ZONE_MAP&startdatetime=20190916T07:00-0000&enddatetime=20190917T07:00-0000&version=1\", \"file\": \"oasis_SZ_q_ATL_RUC_ZONE_MAP_sdt_20190916T07_00-0000_edt_20190917T07_00-0000_v_1.zip\"}}\n```\n\nOk, so we downloaded a single file. This make sense. I ran this yesterday so I'd only expect to see a single new file. Today is:\n\n```bash\ndate\n\nWed Sep 18 13:34:51 PDT 2019\n```\n\nThe start date on that download is: sdt_20190916T07_00-0000\nThe end date is: edt_20190917T07_00-0000\n\n'sdt' : abbreviation for 'start date'\n'edt' : abbreviation for 'end date'\n\nSo today is 9/18, so the latest it can grab a report for is 9/17. Looks good.\n\nWhat got modified on the local system?\n\n```bash\nedc feed data-oasis-atl-ruc-zone-map invoke 'git status'\n\nHEAD detached at ca440b3\nChanges not staged for commit:\n (use \"git add ...\" to update what will be committed)\n (use \"git checkout -- ...\" to discard changes in working directory)\n\n\tmodified: zip/state.txt\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\n```\n\nNotice that the zip file, which is in the ./zip directory, is not showing up. In \nfact it is explicitly excluded from the git repository. So are the other intermediate\nfiles like .sql and .xml. These files are expected to be replicated to the S3 buckets,\nbut not stored in the git repository. Only the sqlite3 .db files are stored in \ngit using git-lfs, and even that might change in the future if it's a pain. Time will tell.\n\n\nSo what changed in the zip/state.txt file?\n\n```bash\n$ edc feed data-oasis-atl-ruc-zone-map invoke 'git diff'\n\ndiff --git a/zip/state.txt b/zip/state.txt\nindex 92e0f63..b394e8f 100644\n--- a/zip/state.txt\n+++ b/zip/state.txt\n@@ -2447,3 +2447,4 @@ http://oasis.caiso.com/oasisapi/SingleZip?queryname=ATL_RUC_ZONE_MAP&startdateti\n http://oasis.caiso.com/oasisapi/SingleZip?queryname=ATL_RUC_ZONE_MAP&startdatetime=20190913T07:00-0000&enddatetime=20190914T07:00-0000&version=1\n http://oasis.caiso.com/oasisapi/SingleZip?queryname=ATL_RUC_ZONE_MAP&startdatetime=20190914T07:00-0000&enddatetime=20190915T07:00-0000&version=1\n http://oasis.caiso.com/oasisapi/SingleZip?queryname=ATL_RUC_ZONE_MAP&startdatetime=20190915T07:00-0000&enddatetime=20190916T07:00-0000&version=1\n+http://oasis.caiso.com/oasisapi/SingleZip?queryname=ATL_RUC_ZONE_MAP&startdatetime=20190916T07:00-0000&enddatetime=20190917T07:00-0000&version=1\n```\n\n*The zip/state.txt file contains the urls for the artifacts that have been downloaded.*\n\nLet's move on to the next stage...\n\n```bash\nedc feed data-oasis-atl-ruc-zone-map proc unzip\n\n$ edc feed data-oasis-atl-ruc-zone-map invoke 'ls xml'\n\n20190916_20190917_ATL_RUC_ZONE_MAP_N_20190918_13_33_16_v1.xml\nstate.txt\n```\n\nThere is only 1 file in the ./xml directory. This is because the `s3restore` command only restored the\nzip file artifacts. Then, the `proc unzip` command only processed the new file that's not in the\n./xml/state.txt file. Normally, this is fine, but right now, we want to re-run the entire pipeline from\nscratch (but using the zip files we restored from s3). What to do? Reset the stage(s)...\n\n```bash\n$ edc feed data-oasis-atl-ruc-zone-map reset --help\nUsage: edc feed reset [OPTIONS] STAGE\n\n !!!USE WITH CAUTION!!!\n\n Reset a stage. This is a destructive action, make backups first!. This\n will delete the stage directory, including the state file and all the\n processed resources.\n\n !!!USE WITH CAUTION!!!\n\n Stages are: ['download', 'unzip', 'parse', 'insert']\n\nOptions:\n --confirm / --no-confirm\n --help\n```\n\nIn this case we want to reset the last 3 stages...\n\n```bash\nedc feed data-oasis-atl-ruc-zone-map reset unzip\nAbout to delete: /home/toddg/proj/energy-dashboard/data/data-oasis-atl-ruc-zone-map/xml. Do you want to continue? [y/N]: y\n/home/toddg/proj/energy-dashboard/data/data-oasis-atl-ruc-zone-map/xml\n\n\nedc feed data-oasis-atl-ruc-zone-map reset parse\nAbout to delete: /home/toddg/proj/energy-dashboard/data/data-oasis-atl-ruc-zone-map/sql. Do you want to continue? [y/N]: y\n/home/toddg/proj/energy-dashboard/data/data-oasis-atl-ruc-zone-map/sql\n\n\nedc feed data-oasis-atl-ruc-zone-map reset insert\nAbout to delete: /home/toddg/proj/energy-dashboard/data/data-oasis-atl-ruc-zone-map/db. Do you want to continue? [y/N]: y\n{\"ts\":\"09/18/2019 01:44:54 PM\", \"msg\":{\"name\": \"edl.cli.feed\", \"method\": \"reset\", \"path\": \"/home/toddg/proj/energy-dashboard\", \"feed\": \"data-oasis-atl-ruc-zone-map\", \"target_dir\": \"/home/toddg/proj/energy-dashboard/data/data-oasis-atl-ruc-zone-map/db\", \"ERROR\": \"failed to remove target_dir\", \"exception\": \"[Errno 2] No such file or directory: '/home/toddg/proj/energy-dashboard/data/data-oasis-atl-ruc-zone-map/db'\"}}\n```\n\nTODO: fix this error message when the directory does not exist.\n\nLet's examine what the `status` of this feed is now:\n\n```bash\nedc feed data-oasis-atl-ruc-zone-map status\n\nfeed name,downloaded,unzipped,parsed,inserted\ndata-oasis-atl-ruc-zone-map,2450,0,0,0\n```\n\nWe have 2450 records in the zip/state.txt file to play with.\n\nLet's re-unzip and see what happens to the state:\n\n```bash\nedc feed data-oasis-atl-ruc-zone-map proc unzip\n\nedc feed data-oasis-atl-ruc-zone-map status\n\nfeed name,downloaded,unzipped,parsed,inserted\ndata-oasis-atl-ruc-zone-map,2450,2450,0,0\n```\n\nOk, so now we have 2450 downloaded zip files and 2450 extracted xml files (as tracked\nby the respective state files). Onwards...\n\n```bash\nedc feed data-oasis-atl-ruc-zone-map proc parse\n\n{\"ts\":\"09/18/2019 04:06:53 PM\", \"msg\":{\"src\": \"data-oasis-atl-ruc-zone-map\", \"action\": \"parse_file\", \"infile\": \"20140710_20140711_ATL_RUC_ZONE_MAP_N_20190811_04_27_04_v1.xml\", \"outfile\": \"/home/toddg/proj/energy-dashboard/data/data-oasis-atl-ruc-zone-map/sql/20140710_20140711_ATL_RUC_ZONE_MAP_N_20190811_04_27_04_v1.sql\", \"total_ddl\": 8, \"total_sql\": 7688}}\n{\"ts\":\"09/18/2019 04:06:57 PM\", \"msg\":{\"src\": \"data-oasis-atl-ruc-zone-map\", \"action\": \"parse_file\", \"infile\": \"20150714_20150715_ATL_RUC_ZONE_MAP_N_20190811_05_00_12_v1.xml\", \"outfile\": \"/home/toddg/proj/energy-dashboard/data/data-oasis-atl-ruc-zone-map/sql/20150714_20150715_ATL_RUC_ZONE_MAP_N_20190811_05_00_12_v1.sql\", \"total_ddl\": 8, \"total_sql\": 7688}}\n```\n\nNow this is going to take awhile to process all of the xml files and generate these sql files. While that's running, let's take a look at \na generated .sql file:\n\n```bash\n$ cat /home/toddg/proj/energy-dashboard/data/data-oasis-atl-ruc-zone-map/sql/20130708_20130709_ATL_RUC_ZONE_MAP_N_20190811_03_54_06_v1.sql | head\n\nCREATE TABLE IF NOT EXISTS oasismaster (xmlns TEXT, PRIMARY KEY (xmlns));\nCREATE TABLE IF NOT EXISTS messageheader (timedate TEXT, source TEXT, version TEXT, oasismaster_xmlns TEXT, FOREIGN KEY (oasismaster_xmlns) REFERENCES oasismaster(xmlns), PRIMARY KEY (timedate, source, version));\nCREATE TABLE IF NOT EXISTS messagepayload (id TEXT, oasismaster_xmlns TEXT, FOREIGN KEY (oasismaster_xmlns) REFERENCES oasismaster(xmlns), PRIMARY KEY (id));\nCREATE TABLE IF NOT EXISTS rto (name TEXT, messagepayload_id TEXT, FOREIGN KEY (messagepayload_id) REFERENCES messagepayload(id), PRIMARY KEY (name));\nCREATE TABLE IF NOT EXISTS atls_item (id TEXT, rto_name TEXT, FOREIGN KEY (rto_name) REFERENCES rto(name), PRIMARY KEY (id));\nCREATE TABLE IF NOT EXISTS atls_header (tz TEXT, system TEXT, report TEXT, atls_item_id TEXT, FOREIGN KEY (atls_item_id) REFERENCES atls_item(id), PRIMARY KEY (tz, system, report));\nCREATE TABLE IF NOT EXISTS atls_data (pnode_name TEXT, start_date_gmt TEXT, end_date_gmt TEXT, ruc_zone_name TEXT, end_date TEXT, start_date TEXT, atls_item_id TEXT, FOREIGN KEY (atls_item_id) REFERENCES atls_item(id), PRIMARY KEY (pnode_name, start_date_gmt, end_date_gmt, ruc_zone_name, end_date, start_date));\nCREATE TABLE IF NOT EXISTS disclaimer_item (disclaimer TEXT, rto_name TEXT, FOREIGN KEY (rto_name) REFERENCES rto(name), PRIMARY KEY (disclaimer));\nINSERT OR IGNORE INTO oasismaster (xmlns) VALUES (\"http://www.caiso.com/soa/OASISMaster_v1.xsd\");\nINSERT OR IGNORE INTO messageheader (source, timedate, version, oasismaster_xmlns) VALUES (\"OASIS\", \"2019-08-11T10:54:06-00:00\", \"v20131201\", \"http://www.caiso.com/soa/OASISMaster_v1.xsd\");\n```\n\nSo a couple of things to notice here. First, the DDL is included at the top of every file. This allows the creation of the sql tables at any point\nin the pipeline. So if, for example, the data feed structurally changes from one file to the next, then the DDL will change. Later in the pipeline,\nwhen we process this .sql file, if it fails b/c the schema has changed, then a new table will be created.\n\nFor now, let's verify that the DDL and associated SQL insert statements are correct. This command will process this file into an in-memory\nsqlite3 db instance. If it fails, then we know we have an error in either the DDL or the SQL.\n\n```bash\n$ cat /home/toddg/proj/energy-dashboard/data/data-oasis-atl-ruc-zone-map/sql/20130708_20130709_ATL_RUC_ZONE_MAP_N_20190811_03_54_06_v1.sql | sqlite3\n```\n\nNow, it might take some time to process all the .xml files into the .sql files. So CTRL-C out of the running process and let's move on to\nthe next stage, 'insert'.\n\n```bash\n$ edc feed data-oasis-atl-ruc-zone-map status\n\nfeed name,downloaded,unzipped,parsed,inserted\ndata-oasis-atl-ruc-zone-map,2450,2450,98,0\n```\n\nOk, so only 98 out of the 2450 xml files have been turned into sql files. No problem. Let's insert the 98 sql files into the database and see what we have.\n\n```bash\n$ edc feed data-oasis-atl-ruc-zone-map proc insert\n{\"ts\":\"09/18/2019 04:13:44 PM\", \"msg\":{\"name\": \"edl.resources.db\", \"src\": \"data-oasis-atl-ruc-zone-map\", \"method\": \"insert\", \"sql_dir\": \"/home/toddg/proj/energy-dashboard/data/data-oasis-atl-ruc-zone-map/sql\", \"db_dir\": \"/home/toddg/proj/energy-dashboard/data/data-oasis-atl-ruc-zone-map/db\", \"new_files\": 99}}\n{\"ts\":\"09/18/2019 04:13:44 PM\", \"msg\":{\"name\": \"edl.resources.db\", \"src\": \"data-oasis-atl-ruc-zone-map\", \"method\": \"insert\", \"sql_dir\": \"/home/toddg/proj/energy-dashboard/data/data-oasis-atl-ruc-zone-map/sql\", \"db_dir\": \"/home/toddg/proj/energy-dashboard/data/data-oasis-atl-ruc-zone-map/db\", \"db_name\": \"data-oasis-atl-ruc-zone-map_00.db\", \"file_idx\": 0, \"sql_file\": \"/home/toddg/proj/energy-dashboard/data/data-oasis-atl-ruc-zone-map/sql/20190204_20190205_ATL_RUC_ZONE_MAP_N_20190811_06_56_57_v1.sql\", \"depth\": 0, \"message\": \"started\"}}\n```\n\nAgain, CTRL-C after a few of these have processed and let's take a look at the database...\n\n```bash\n$ edc feed data-oasis-atl-ruc-zone-map db --help\nUsage: edc feed db [OPTIONS] COMMAND [ARGS]...\n\n Manage a feed's database(s).\n\nOptions:\n --help Show this message and exit.\n\nCommands:\n console launch sqlite3 database console\n createddl Generate SQL DDL for table creation.\n insertsql Generate SQL for data insertion into table.\n list List the feed databases\n```\n\nOk, so what databoses do we have?\n\n```bash\n$ edc feed data-oasis-atl-ruc-zone-map db list\ndata-oasis-atl-ruc-zone-map_00.db\n```\n\nAh, good. Just one. Let's take a peek...\n\n```bash\n$ edc feed data-oasis-atl-ruc-zone-map db console data-oasis-atl-ruc-zone-map_00.db\n\nSQLite version 3.29.0 2019-07-10 17:32:03\nEnter \".help\" for usage hints.\nsqlite>\n```\n\nBingo, we are in! What's in it?\n\n```bash\nsqlite> .tables\natls_data atls_item messageheader oasismaster \natls_header disclaimer_item messagepayload rto \n```\n\nOk, so I'm going to guess that we want to look at 'atls_data':\n\n```bash\nsqlite> pragma table_info(atls_data);\n0|pnode_name|TEXT|0||1\n1|start_date_gmt|TEXT|0||2\n2|end_date_gmt|TEXT|0||3\n3|ruc_zone_name|TEXT|0||4\n4|end_date|TEXT|0||5\n5|start_date|TEXT|0||6\n6|atls_item_id|TEXT|0||0\n```\n\nAnd what's the data look like?\n```bash\nsqlite> select * from atls_data limit 10;\nPRKWAY_2_LD1|2009-03-31T07:00:00-00:00|2031-01-01T07:59:59-00:00|RUC_PGAE|2030-12-31T23:59:59|2009-03-31T00:00:00|74466c6d-55fc-4978-9c0d-7ea67a87f9eb\nMRYSVL_6_LD2|2009-03-31T07:00:00-00:00|2031-01-01T07:59:59-00:00|RUC_PGAE|2030-12-31T23:59:59|2009-03-31T00:00:00|e481dd77-d2e4-42f3-b985-06195618f5ee\nSNTABL_6_LD30|2009-03-31T07:00:00-00:00|2031-01-01T07:59:59-00:00|RUC_SDGE|2030-12-31T23:59:59|2009-03-31T00:00:00|b654a7a4-5ac9-44b2-9f3b-7bd20005da37\nPALMER_1_LD1|2009-03-31T07:00:00-00:00|2031-01-01T07:59:59-00:00|RUC_PGAE|2030-12-31T23:59:59|2009-03-31T00:00:00|b5a6e60d-61c7-4baa-a98e-e2bdfa176c80\nPOWAY_6_LD31|2009-03-31T07:00:00-00:00|2031-01-01T07:59:59-00:00|RUC_SDGE|2030-12-31T23:59:59|2009-03-31T00:00:00|17d495fc-4317-44b0-82a3-ce669aefc869\nPRCTVY_1_LD42|2009-03-31T07:00:00-00:00|2031-01-01T07:59:59-00:00|RUC_SDGE|2030-12-31T23:59:59|2009-03-31T00:00:00|632fde0d-ccf8-4643-b759-87340ddd9a50\nORTGA_6_LD1|2009-03-31T07:00:00-00:00|2031-01-01T07:59:59-00:00|RUC_PGAE|2030-12-31T23:59:59|2009-03-31T00:00:00|5accad7b-06b9-43d4-a6ce-77edc5334e87\nSOBAY_6_GN-A1XA2|2009-03-31T07:00:00-00:00|2031-01-01T07:59:59-00:00|RUC_SDGE|2030-12-31T23:59:59|2009-03-31T00:00:00|ab398edd-e8b0-4d81-aaab-683043e97dd0\nCAWELO_6_LD-B|2009-03-31T07:00:00-00:00|2031-01-01T07:59:59-00:00|RUC_PGAE|2030-12-31T23:59:59|2009-03-31T00:00:00|4de47a31-34ec-4785-8c09-d30d3a0247a4\nLNTREE_2_LD1|2009-03-31T07:00:00-00:00|2031-01-01T07:59:59-00:00|RUC_PGAE|2030-12-31T23:59:59|2009-03-31T00:00:00|0eb6b341-a5ad-4bcf-b2b4-727b0a1e92d4\n```\n\nNote that the guid looking things are, in fact, guids. Because there's no way to generate the .sql files *and* know the rowid of a previously inserted\nitem in a parent table, I'm using the 'time-worn'(tm) strategy of generating uuids out-of-band of the database for table relationships.\n\nAt this point, we have a functioning system. Now's a good time to dial up the processing and try and use all the horsepower of my desktop machine.\nYou see, because each stage is restartable, and each data feed is separate, I can use an sort of parallel processing strategy to orchestrate.\n\n\n```bash\nedc feeds list | parallel \"edc feed {} reset unzip --no-confirm\"\nedc feeds list | parallel \"edc feed {} reset parse --no-confirm\"\nedc feeds list | parallel \"edc feed {} reset insert --no-confirm\"\n```\n\nOk, so now we are in a clean state. Files are still downloading on the process we launched before. But while that's running, we can start\nprocessing the currently downloaded files. It's basically an eventually consistent sort of thing...\n\n```bash\n$ edc feeds list | parallel \"edc feed {} status --no-header\"\n\ndata-oasis-atl-ruc-zone-map,2450,0,0,0\ndata-oasis-ene-wind-solar-summary,2449,0,0,0\ndata-oasis-cbd-nodal-grp-cnstr-prc,2449,0,0,0\ndata-oasis-cmmt-rmr-dam,2449,0,0,0\ndata-oasis-atl-sp-tie,2449,0,0,0\ndata-oasis-ene-eim-transfer-limit-all-all,2449,0,0,0\ndata-oasis-prc-mpm-cnstr-cmp-dam,2449,0,0,0\ndata-oasis-ene-baa-mkt-events-rtd-all,2449,0,0,0\ndata-oasis-prc-cd-rtm-nomogram-rctm-all,2449,0,0,0\n```\n\nSo there is plenty of downloaded zip files from the s3restore command to start processing.\nLet's go...\n\nFirst, we unzip...\n\n```bash\nedc feeds list | parallel --max-procs 70% \"edc feed {} proc unzip\"\n```\n\nThen, we parse...\n\n```bash\nedc feeds list | parallel --max-procs 80% \"edc feed {} proc parse\"\n```\n\nThen, we insert...\n\n```bash\nedc feeds list | parallel --max-procs 80% \"edc feed {} proc insert\"\n```\n\nThen, we check the databases...\n\nTODO\n\n\n### Maintainers\n\nMaintainers will need to install 'rclone' in addition to the stuff mentioned above.\n\n```bash\nsudo apt install rclone \n```\n\n'rclone' is necessary for project maintainers that need to upload resources to\ns3 buckets. For users that just want to use the databases, git-lfs is all you\nneed. For those users that want the original and intermediate artifacts such\nas .zip, .xml, and .sql files, the python 'requests module' is all you need,\nand that's included with the installation of the energy-dashboard-client.\n\n### Add New Data Feed\n\nTODO\n\n\n\n## Show Help\n\n\n## edc\n\n```bash\nUsage: edc [OPTIONS] COMMAND [ARGS]...\n\n Command Line Interface for the Energy Dashboard. This tooling collects\n information from a number of data feeds, imports that data, transforms\n it, and inserts it into a database.\n\nOptions:\n --config-dir TEXT Config file directory\n --debug / --no-debug Enable debug logging\n --help Show this message and exit.\n\nCommands:\n config Manage config file.\n feed Manage individual 'feed' (singular).\n feeds Manage the full set of data 'feeds' (plural).\n license Show the license (GPL v3).\n```\n\n### config\n\n```bash\nUsage: edc config [OPTIONS] COMMAND [ARGS]...\n\n Manage config file.\n\nOptions:\n --help Show this message and exit.\n\nCommands:\n show Show the config\n update Update config\n```\n\n### feed\n\n```bash\nUsage: edc feed [OPTIONS] COMMAND [ARGS]...\n\n Manage individual 'feed' (singular).\n\nOptions:\n --help Show this message and exit.\n\nCommands:\n archive Archive feed to tar.gz\n create Create new feed\n download Download from source url\n invoke Invoke a shell command in the feed directory\n proc Process a feed through the stages\n reset Reset feed to reprocess stage\n restore Restore feed from tar.gz\n s3archive Archive feed to S3 bucket\n s3restore Restore feed zip files from from S3 bucket\n status Show feed status\n```\n\n### feeds\n\n```bash\nUsage: edc feeds [OPTIONS] COMMAND [ARGS]...\n\n Manage the full set of data 'feeds' (plural).\n\nOptions:\n --help Show this message and exit.\n\nCommands:\n list List feeds\n search Search feeds (NYI)\n```\n\n### license\n\n```bash\n\n edc : Energy Dashboard Command Line Interface\n Copyright (C) 2019 Todd Greenwood-Geer (Enviro Software Solutions, LLC)\n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n\n```\n\n\n##Usage\n\n### Examples\n\n```bash\nedc feed invoke data-oasis-atl-lap-all \"git st\"\nedc feed invoke data-oasis-atl-lap-all \"ls\"\nedc feed invoke data-oasis-atl-lap-all \"cat manifest.json\"\nedc feed invoke data-oasis-atl-lap-all \"head manifest.json\"\nedc feeds list\nedc feeds list | grep atl\nedc feeds list | grep atl | edc feed invoke \"head manifest.json\"\nedc feeds list | grep atl | edc feed invoke \"head manifest.json\" -\nedc feeds list | grep atl | xargs -L 1 -I {} edc feed invoke {} \"head manifest.json\"\nedc feeds list | grep atl | xargs -L 1 -I {} edc feed invoke {} \"jq . < manifest.json\"\nedc feeds list | grep atl | xargs -L 1 -I {} edc feed invoke {} \"jq .url < manifest.json\"\nedc feeds list | grep mileage | xargs -L 1 -I {} edc feed invoke {} \"echo {}; sqlite3 db/{}.db 'select count(*) from oasis'\"\nedc feeds list | grep atl | xargs -L 1 -I {} edc feed invoke {} \"jq .url < manifest.json\"\nedc feeds list| xargs -L 1 -I {} edc feed invoke {} \"echo {}; sqlite3 db/{}.db 'select count(*) from oasis'\"\nedc feeds list | grep atl | xargs -L 1 -I {} edc feed status {}\nedc feeds list | grep atl | xargs -L 1 -I {} edc feed status --header {}\nedc feeds list | grep atl | xargs -L 1 -I {} edc feed status --header {}\nedc feeds list | grep mileage | xargs -L 1 -I {} edc feed status --header {}\nedc feeds list | xargs -L 1 -I {} edc feed invoke {} \"./src/10_down.py\"\nedc feed archive data-oasis-as-mileage-calc-all\nedc feed archive data-oasis-as-mileage-calc-all | xargs -L 1 -I {} tar -tvf {}\nedc feed reset data-oasis-as-mileage-calc-all --stage xml --stage db\nedc feed s3restore data-oasis-as-mileage-calc-all --outdir=temp --service=wasabi\nedc feed s3archive data-oasis-as-mileage-calc-all\n```\n\n### Onboarding\n\nSome quick notes on how I onboarded 'data-oasis-as-mileage-calc-all':\n\n```bash\nedc feed proc data-oasis-as-mileage-calc-all\nedc feed s3archive data-oasis-as-mileage-calc-all --service wasabi\nedc feed s3archive data-oasis-as-mileage-calc-all --service digitalocean\nedc feed status data-oasis-as-mileage-calc-all --header\nedc feed invoke data-oasis-as-mileage-calc-all \"git st\"\nedc feed invoke data-oasis-as-mileage-calc-all \"git log\"\nedc feed invoke data-oasis-as-mileage-calc-all \"git show HEAD\"\n```\n\n## Author\nTodd Greenwood-Geer (Enviro Software Solutions, LLC)\n\n## Notes\nThis project uses submodules, and this page has been useful:\nhttps://github.blog/2016-02-01-working-with-submodules/\n\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/energy-analytics-project/energy-dashboard-cli", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "energy-dashboard-client", "package_url": "https://pypi.org/project/energy-dashboard-client/", "platform": "", "project_url": "https://pypi.org/project/energy-dashboard-client/", "project_urls": { "Homepage": "http://github.com/energy-analytics-project/energy-dashboard-cli" }, "release_url": "https://pypi.org/project/energy-dashboard-client/0.43/", "requires_dist": [ "energy-dashboard-library (>=0.43)", "Click" ], "requires_python": "", "summary": "Energy Dashboard Command Line Interface (CLI)", "version": "0.43" }, "last_serial": 5958317, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "24d1e354813e3ed6401d7e4715094192", "sha256": "6182f13850498905df2fbe9b9808d404c772a5bc8144d3ef56c12df721706268" }, "downloads": -1, "filename": "energy_dashboard_client-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "24d1e354813e3ed6401d7e4715094192", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20266, "upload_time": "2019-09-16T22:55:19", "url": "https://files.pythonhosted.org/packages/60/da/be9f3fbe937785cf194604b65202e08fe442bbd2d475b299d0552f7944af/energy_dashboard_client-0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b05f459a1bf2e3344d261caf06be6919", "sha256": "145af06bd4e14b5d57ed83a2b9748a50587fef8f1e1641128303db1b7cc99a99" }, "downloads": -1, "filename": "energy-dashboard-client-0.1.tar.gz", "has_sig": false, "md5_digest": "b05f459a1bf2e3344d261caf06be6919", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21355, "upload_time": "2019-09-16T22:55:22", "url": "https://files.pythonhosted.org/packages/49/ba/58c1285b67935f263e71e8dae406b75c9ad746752f0fa9cfad34da1fea16/energy-dashboard-client-0.1.tar.gz" } ], "0.10": [ { "comment_text": "", "digests": { "md5": "a5ffc9053776429b634617bd1b458e63", "sha256": "35679357e456c22316b692ced0ca70a15837a7ad233bec5806b15c12f59c010e" }, "downloads": -1, "filename": "energy_dashboard_client-0.10-py3-none-any.whl", "has_sig": false, "md5_digest": "a5ffc9053776429b634617bd1b458e63", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 28980, "upload_time": "2019-09-19T20:05:58", "url": "https://files.pythonhosted.org/packages/05/5f/764ba84a8a75d680dccb9ed026ced8269f5bb1334255411c48bba1f717fb/energy_dashboard_client-0.10-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d7e0fcb488acd1d399ae8f1f0e0c7acc", "sha256": "0c168f886f80bdc2b4796c7e18878426a953570d1c2a0557e834a688a3b805e1" }, "downloads": -1, "filename": "energy-dashboard-client-0.10.tar.gz", "has_sig": false, "md5_digest": "d7e0fcb488acd1d399ae8f1f0e0c7acc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48625, "upload_time": "2019-09-19T20:06:00", "url": "https://files.pythonhosted.org/packages/15/fc/c77496ef0645c8820db0be2a72a96a8ef672f202b844e28a4030c33bd422/energy-dashboard-client-0.10.tar.gz" } ], "0.11": [ { "comment_text": "", "digests": { "md5": "f76895d8b261f21bf7e05845f86ff4e3", "sha256": "dbe9240d5160d22f6847c58665a32956b375764729b844d0cd3607032ebf7956" }, "downloads": -1, "filename": "energy_dashboard_client-0.11-py3-none-any.whl", "has_sig": false, "md5_digest": "f76895d8b261f21bf7e05845f86ff4e3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 28980, "upload_time": "2019-09-19T20:38:52", "url": "https://files.pythonhosted.org/packages/f3/7d/8f799fca401865e3417346dc27dd1cd18f31871418b730e4081626a3e333/energy_dashboard_client-0.11-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1ddd7e739d40bf798e5b06a6d96e1da3", "sha256": "ff466d599f4df54bc8e9d9f1dc0fb4c152b268afb5079a4efee3b5aa9742848c" }, "downloads": -1, "filename": "energy-dashboard-client-0.11.tar.gz", "has_sig": false, "md5_digest": "1ddd7e739d40bf798e5b06a6d96e1da3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48629, "upload_time": "2019-09-19T20:38:54", "url": "https://files.pythonhosted.org/packages/fc/16/9164c63152e7986295ce3092c212dc6cbf8446d1ed3e8a64169d84946250/energy-dashboard-client-0.11.tar.gz" } ], "0.12": [ { "comment_text": "", "digests": { "md5": "afe79b184d2775a6216cce51e9ea4530", "sha256": "31f6ea35ab70bf96c5d353c509164ede2bb20681969b915dc7d8d88f8163bed0" }, "downloads": -1, "filename": "energy_dashboard_client-0.12-py3-none-any.whl", "has_sig": false, "md5_digest": "afe79b184d2775a6216cce51e9ea4530", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 28981, "upload_time": "2019-09-19T21:10:23", "url": "https://files.pythonhosted.org/packages/99/e4/639dc119264bf15310f49a8d7092ed37f09f8ecff3c170faa675591c1ca6/energy_dashboard_client-0.12-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cc18404a25d9d87bf00814f7aaaf9a14", "sha256": "b2e4e93b058b2708d78fa71376cf7e4320b95a008b9d9f2c4c0abb6964454d16" }, "downloads": -1, "filename": "energy-dashboard-client-0.12.tar.gz", "has_sig": false, "md5_digest": "cc18404a25d9d87bf00814f7aaaf9a14", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48630, "upload_time": "2019-09-19T21:10:25", "url": "https://files.pythonhosted.org/packages/48/e6/f935247ac96a8cbf7e2eff540924edfe9c6ec672bcd026db481f3fe6cf32/energy-dashboard-client-0.12.tar.gz" } ], "0.13": [ { "comment_text": "", "digests": { "md5": "f0e9389a33f3a5561719879987955d92", "sha256": "a01995b173df80d178e29ab653c2f0a86bd7093f005791f6a1e36289e6c619c5" }, "downloads": -1, "filename": "energy_dashboard_client-0.13-py3-none-any.whl", "has_sig": false, "md5_digest": "f0e9389a33f3a5561719879987955d92", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 28980, "upload_time": "2019-09-19T21:22:37", "url": "https://files.pythonhosted.org/packages/aa/64/34ec50f6807c4b7df346ca7b7525754d917d1eac8b383b686f18ee9d67fe/energy_dashboard_client-0.13-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4e7b4ad62a87648abd6fb52b6c2aa931", "sha256": "a548fc491b6bdfa8ea004e4b3002d855a8dd514f39b46547e6b86f7fe988ba02" }, "downloads": -1, "filename": "energy-dashboard-client-0.13.tar.gz", "has_sig": false, "md5_digest": "4e7b4ad62a87648abd6fb52b6c2aa931", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48626, "upload_time": "2019-09-19T21:22:39", "url": "https://files.pythonhosted.org/packages/1b/c4/2bc5ef123fc62c23d9021437969ddbda9f5cafe223736019f362e01a91f3/energy-dashboard-client-0.13.tar.gz" } ], "0.14": [ { "comment_text": "", "digests": { "md5": "f0825ba4f5b0d6ad2389b4f621c3ddef", "sha256": "7afa49b4400b0d454df9d65d90217e6f3839bc4d9813159a13c0d4d385448df7" }, "downloads": -1, "filename": "energy_dashboard_client-0.14-py3-none-any.whl", "has_sig": false, "md5_digest": "f0825ba4f5b0d6ad2389b4f621c3ddef", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29469, "upload_time": "2019-09-20T02:13:41", "url": "https://files.pythonhosted.org/packages/4c/f7/4384a498c76dd75256fdb1646d4aa3c94bff441eda7b7f2d9682b0578fb9/energy_dashboard_client-0.14-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b78b48fb4f0ad78fb0fd95b1fc7b3d8e", "sha256": "a8c5025cb456188dca976329bef40e26ccd66811ee06483485114903605b6a9a" }, "downloads": -1, "filename": "energy-dashboard-client-0.14.tar.gz", "has_sig": false, "md5_digest": "b78b48fb4f0ad78fb0fd95b1fc7b3d8e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50327, "upload_time": "2019-09-20T02:13:43", "url": "https://files.pythonhosted.org/packages/66/76/ffeecab0ad75234b211fcbe054e9f6c23e09648a0870854e19cf647183cb/energy-dashboard-client-0.14.tar.gz" } ], "0.15": [ { "comment_text": "", "digests": { "md5": "66d522bf165600de91170331ddd394fe", "sha256": "85615734549a05ecb5dd42ff2e4b5a6c2e16dd8c70dce071d82d9fb9d465a3c9" }, "downloads": -1, "filename": "energy_dashboard_client-0.15-py3-none-any.whl", "has_sig": false, "md5_digest": "66d522bf165600de91170331ddd394fe", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29595, "upload_time": "2019-09-21T17:56:23", "url": "https://files.pythonhosted.org/packages/18/9b/cc9f02895f3012e68da1dcfae4ea82afe638de4485069d559fe18a83e976/energy_dashboard_client-0.15-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bdc9be1911a020071467dbd4f619cebc", "sha256": "b8e7cb6ff0853516bbf4ef85cd9d575b271651127a6e869e41e0132451ed98e8" }, "downloads": -1, "filename": "energy-dashboard-client-0.15.tar.gz", "has_sig": false, "md5_digest": "bdc9be1911a020071467dbd4f619cebc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50484, "upload_time": "2019-09-21T17:56:25", "url": "https://files.pythonhosted.org/packages/8a/f6/03366815129e9dcc7328e16a1bbee0b2b0ccb5e6d77d13be864ca9954101/energy-dashboard-client-0.15.tar.gz" } ], "0.16": [ { "comment_text": "", "digests": { "md5": "36964d77a4a77279c7abfc6251ec8976", "sha256": "82299db2ed0f989f1942c2251f0a8588c15cbbbcc637c392fd4f8f0f9e146ef7" }, "downloads": -1, "filename": "energy_dashboard_client-0.16-py3-none-any.whl", "has_sig": false, "md5_digest": "36964d77a4a77279c7abfc6251ec8976", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29594, "upload_time": "2019-09-22T17:26:38", "url": "https://files.pythonhosted.org/packages/d9/be/6ba7335929e11e74f478f1911618f093400f5c27953004b41aae578d7171/energy_dashboard_client-0.16-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "effd4e4ba4bdd0e57ea448cf6c49a9d0", "sha256": "7f764cda2e076cd902d803a6d8c0cbe9ec2d2420e4a861ac5d6a0465054cb660" }, "downloads": -1, "filename": "energy-dashboard-client-0.16.tar.gz", "has_sig": false, "md5_digest": "effd4e4ba4bdd0e57ea448cf6c49a9d0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50483, "upload_time": "2019-09-22T17:26:40", "url": "https://files.pythonhosted.org/packages/6b/0d/91ebac46b24977f8543da2e2bda4dcf49fb718cfa9d071f82193f682b75b/energy-dashboard-client-0.16.tar.gz" } ], "0.17": [ { "comment_text": "", "digests": { "md5": "3a45263ee886a2b2ee50c02c8345f2cb", "sha256": "a57e00890fa0c4a481591ee3d0ddc2fbdc98cc3acec91261d13f9f5ab6b8fe40" }, "downloads": -1, "filename": "energy_dashboard_client-0.17-py3-none-any.whl", "has_sig": false, "md5_digest": "3a45263ee886a2b2ee50c02c8345f2cb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29593, "upload_time": "2019-09-22T17:35:03", "url": "https://files.pythonhosted.org/packages/cd/9d/76b22ea72b93094f3e1a85bb626f25f53f6a1e73564d6f6eb8430b51bc32/energy_dashboard_client-0.17-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "febb81f4e34aa1217ae8bfbcb2adac2e", "sha256": "a84816cc825ca76820d6c1e2df264eb9e2e46cbdd4a0eeadfff3fe9b40c69f69" }, "downloads": -1, "filename": "energy-dashboard-client-0.17.tar.gz", "has_sig": false, "md5_digest": "febb81f4e34aa1217ae8bfbcb2adac2e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50476, "upload_time": "2019-09-22T17:35:04", "url": "https://files.pythonhosted.org/packages/a0/a6/3d0732800166f179b63dcee9fdb63a66abd8f782e9c1ab7fdf0c496c0987/energy-dashboard-client-0.17.tar.gz" } ], "0.18": [ { "comment_text": "", "digests": { "md5": "a60d2c95dd6b6d37c6114cb7765cd261", "sha256": "b713d319209a3a6e494e538f890c1fea41d97a1bb84b48034d4c8113a6d4b859" }, "downloads": -1, "filename": "energy_dashboard_client-0.18-py3-none-any.whl", "has_sig": false, "md5_digest": "a60d2c95dd6b6d37c6114cb7765cd261", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29595, "upload_time": "2019-09-22T17:58:03", "url": "https://files.pythonhosted.org/packages/4d/ff/d0f9f6481900d1fec829740c50349e22946facb2d66c4961362ce6f3c94a/energy_dashboard_client-0.18-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "295c0e87ab4571a55a2fe677e5d90c0b", "sha256": "e264ae0d29d3afac708517592dc45ce2a391b2d8d01a0879f27a869bd7a4c24b" }, "downloads": -1, "filename": "energy-dashboard-client-0.18.tar.gz", "has_sig": false, "md5_digest": "295c0e87ab4571a55a2fe677e5d90c0b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50476, "upload_time": "2019-09-22T17:58:05", "url": "https://files.pythonhosted.org/packages/d5/a5/88ac827e971c5aaefa76e1a04c3039c839c1e8ef80b22e1ae8f16f514780/energy-dashboard-client-0.18.tar.gz" } ], "0.19": [ { "comment_text": "", "digests": { "md5": "3a034d54d810f58c7964a6c2d7ff5f35", "sha256": "5a8b88c49a90f69aea8351333f3a09e231e8fd5462c45ca0fe801e40f1742a5d" }, "downloads": -1, "filename": "energy_dashboard_client-0.19-py3-none-any.whl", "has_sig": false, "md5_digest": "3a034d54d810f58c7964a6c2d7ff5f35", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29594, "upload_time": "2019-09-22T20:24:31", "url": "https://files.pythonhosted.org/packages/bc/45/846987d3596c3f9f6c99fe0a14f94790f3284912b73f520212cc326a04e0/energy_dashboard_client-0.19-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ac4a985e3c15febb8730a48387ddb31b", "sha256": "fd18911e9a955a78d103f033887948f46f5b7541b0550a85518afcc163e8e346" }, "downloads": -1, "filename": "energy-dashboard-client-0.19.tar.gz", "has_sig": false, "md5_digest": "ac4a985e3c15febb8730a48387ddb31b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50466, "upload_time": "2019-09-22T20:24:32", "url": "https://files.pythonhosted.org/packages/06/39/bebd5a4fbc80bf3bb400159d75a8a842c2034522bb97991014ff7d1b6229/energy-dashboard-client-0.19.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "1bde1e3a8f4c69ab7f341aa634e74310", "sha256": "88ecc8431baaa156d532ffd4c8429c923fbe19c992159203d51bdc7cf4540c97" }, "downloads": -1, "filename": "energy_dashboard_client-0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "1bde1e3a8f4c69ab7f341aa634e74310", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21777, "upload_time": "2019-09-18T16:19:38", "url": "https://files.pythonhosted.org/packages/a8/c0/4683134a6fe2a6af6a774de5735bc8af6d13dbaca0b42c56026a07f5212e/energy_dashboard_client-0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7118ccbd6db3f248fffb07beb9edc3ec", "sha256": "c3b04ce9f950873ff6e467140f2775903fb55335875abd46131b66e971971840" }, "downloads": -1, "filename": "energy-dashboard-client-0.2.tar.gz", "has_sig": false, "md5_digest": "7118ccbd6db3f248fffb07beb9edc3ec", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24178, "upload_time": "2019-09-18T16:19:39", "url": "https://files.pythonhosted.org/packages/18/56/bcb1707f6d302b525334e5fb1a781aa85892510de595aa96a09a30c2f917/energy-dashboard-client-0.2.tar.gz" } ], "0.20": [ { "comment_text": "", "digests": { "md5": "0fe8dca578017623d70d513008091339", "sha256": "0034105ad66cdedcb31f752184c71ed6c6954027166fcaec3462d7a615960b91" }, "downloads": -1, "filename": "energy_dashboard_client-0.20-py3-none-any.whl", "has_sig": false, "md5_digest": "0fe8dca578017623d70d513008091339", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29595, "upload_time": "2019-09-22T20:48:25", "url": "https://files.pythonhosted.org/packages/20/af/9b2b9f65ea4c998ebf25bdc3842372d947b016bf450d999952f117751302/energy_dashboard_client-0.20-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "56c55181dc4079c252bef527bac05281", "sha256": "ac6a309887d55f20a0414d413fa00e7bca9a7a001701004fb992abf57351851c" }, "downloads": -1, "filename": "energy-dashboard-client-0.20.tar.gz", "has_sig": false, "md5_digest": "56c55181dc4079c252bef527bac05281", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50482, "upload_time": "2019-09-22T20:48:27", "url": "https://files.pythonhosted.org/packages/09/a6/caf6bd0cafa378535a794e9fc799658b56cf04244cac10d713bcc1c84c06/energy-dashboard-client-0.20.tar.gz" } ], "0.21": [ { "comment_text": "", "digests": { "md5": "de44600ebc9ddbb2113496e6641a7695", "sha256": "47c5a8edfb913c5a90ff648caa04c6cb22b854ddf26edcc013589f1a152d94b9" }, "downloads": -1, "filename": "energy_dashboard_client-0.21-py3-none-any.whl", "has_sig": false, "md5_digest": "de44600ebc9ddbb2113496e6641a7695", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29594, "upload_time": "2019-09-22T20:51:58", "url": "https://files.pythonhosted.org/packages/3e/e3/661a40e99dbd6b895a612fd18cf257805b3a87c0e582fc75f48394c44c42/energy_dashboard_client-0.21-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1f9a8df12a13da9168851cfa4359e00d", "sha256": "61492e0f4612001745fa6c3a0eaaf19465678502ba1103243a5fa426216131b1" }, "downloads": -1, "filename": "energy-dashboard-client-0.21.tar.gz", "has_sig": false, "md5_digest": "1f9a8df12a13da9168851cfa4359e00d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50482, "upload_time": "2019-09-22T20:52:00", "url": "https://files.pythonhosted.org/packages/80/ef/26f18024119329b9974935e57fb797ae3c1b87c91912207d38c481ee75a6/energy-dashboard-client-0.21.tar.gz" } ], "0.22": [ { "comment_text": "", "digests": { "md5": "3bfe328688aebdfe6f096d73f3f3f9e5", "sha256": "eaf528487b84d02a4f282c80d777054096609a736672cade04a371c0266c53e0" }, "downloads": -1, "filename": "energy_dashboard_client-0.22-py3-none-any.whl", "has_sig": false, "md5_digest": "3bfe328688aebdfe6f096d73f3f3f9e5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29594, "upload_time": "2019-09-22T21:03:38", "url": "https://files.pythonhosted.org/packages/42/e1/90e150f6df67df2a63261ffc6c5593f380413f2126fb95ed66f035db6e0c/energy_dashboard_client-0.22-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8d2d77d3b7f9e85c1a4798b4a25417c3", "sha256": "0c5ef804930a4a7d9ba9a691a135f1709e1d3bd7e8edbedb81c232dd864da665" }, "downloads": -1, "filename": "energy-dashboard-client-0.22.tar.gz", "has_sig": false, "md5_digest": "8d2d77d3b7f9e85c1a4798b4a25417c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50488, "upload_time": "2019-09-22T21:03:40", "url": "https://files.pythonhosted.org/packages/d3/4d/a6c933ce3a5f5029c04093eaad707e151b19a6c276cc1f4b883039be6d6b/energy-dashboard-client-0.22.tar.gz" } ], "0.23": [ { "comment_text": "", "digests": { "md5": "1a450933773bd3b8f8347f86109610ee", "sha256": "e8b11097490fb7abdb921f81084e0afb7277df4edb49f4974357f5da03af1b41" }, "downloads": -1, "filename": "energy_dashboard_client-0.23-py3-none-any.whl", "has_sig": false, "md5_digest": "1a450933773bd3b8f8347f86109610ee", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29558, "upload_time": "2019-09-23T17:07:51", "url": "https://files.pythonhosted.org/packages/82/ee/e85bf77f53ce0f64da5af195cf3912666a9592469a7fcba21aff179d7c5c/energy_dashboard_client-0.23-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "39891311df03bed99ce2ec1ad039bef5", "sha256": "7f318c34537977406cbe8d99306007e5a9d00f13afff6e861bbedc6b66d6fae6" }, "downloads": -1, "filename": "energy-dashboard-client-0.23.tar.gz", "has_sig": false, "md5_digest": "39891311df03bed99ce2ec1ad039bef5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50382, "upload_time": "2019-09-23T17:07:53", "url": "https://files.pythonhosted.org/packages/bc/ba/8f2bcdbde3f59444691f8c828e837fc4d8346cd4deeecf507bd6bbd01de2/energy-dashboard-client-0.23.tar.gz" } ], "0.24": [ { "comment_text": "", "digests": { "md5": "44c3a3f4491816890feeb964dadf431e", "sha256": "8ab970e3564737d1bb38c09942b2c19891b882e24868b285cf739ccf35dd4c97" }, "downloads": -1, "filename": "energy_dashboard_client-0.24-py3-none-any.whl", "has_sig": false, "md5_digest": "44c3a3f4491816890feeb964dadf431e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29557, "upload_time": "2019-09-23T18:52:31", "url": "https://files.pythonhosted.org/packages/f3/24/3f448c6c591f3075892f208a77e9f466041d2b6710899e98b42b2f8555ea/energy_dashboard_client-0.24-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3de05bb12d673f49eed17257047ab2f1", "sha256": "1cf1ae56b5d4fddb5b6e03dc1eaac71225878831e3a80532401903d9a8462374" }, "downloads": -1, "filename": "energy-dashboard-client-0.24.tar.gz", "has_sig": false, "md5_digest": "3de05bb12d673f49eed17257047ab2f1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50384, "upload_time": "2019-09-23T18:52:33", "url": "https://files.pythonhosted.org/packages/ef/ea/d8c3a8ce23c6b1c3f73c4fbf8f280d45f6e66563a446682f257c305ea402/energy-dashboard-client-0.24.tar.gz" } ], "0.25": [ { "comment_text": "", "digests": { "md5": "6b53a6f20f0ee91b56369df4f91491e0", "sha256": "863164cbc7e7be447544b19db86224e01c0684e67c061f62558dd6ac033e0f86" }, "downloads": -1, "filename": "energy_dashboard_client-0.25-py3-none-any.whl", "has_sig": false, "md5_digest": "6b53a6f20f0ee91b56369df4f91491e0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29564, "upload_time": "2019-09-23T19:06:11", "url": "https://files.pythonhosted.org/packages/bc/37/57c484ea626a0f98bd26dc3c30543c6b96f5133d80c684a47e9841e06da3/energy_dashboard_client-0.25-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8ad737ec5a25f87e9aa7f80cf9aa82d0", "sha256": "ad8fdeedbd2d974ab4077cb36f480beb852a2d41f65e8279842ee7c767865616" }, "downloads": -1, "filename": "energy-dashboard-client-0.25.tar.gz", "has_sig": false, "md5_digest": "8ad737ec5a25f87e9aa7f80cf9aa82d0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50396, "upload_time": "2019-09-23T19:06:16", "url": "https://files.pythonhosted.org/packages/7a/8a/8b817badaa1dc57e6906d1a32ec0c7eb26882455c1d9932f6e1049049cc8/energy-dashboard-client-0.25.tar.gz" } ], "0.26": [ { "comment_text": "", "digests": { "md5": "c7d6995a02ee7fa11939d31b64f90925", "sha256": "3b7dca7ad7ca082fdb0452ec9087d0b4a7d5ad7c84250f6b07d6924b9df6ab29" }, "downloads": -1, "filename": "energy_dashboard_client-0.26-py3-none-any.whl", "has_sig": false, "md5_digest": "c7d6995a02ee7fa11939d31b64f90925", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29565, "upload_time": "2019-09-23T19:35:09", "url": "https://files.pythonhosted.org/packages/d3/26/518fbd1b16515d14f442adf6f08bbc1d7b4f6b297fa8a8fbc1554cdf7eba/energy_dashboard_client-0.26-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3aabbf3518e49f2c45c218a167611047", "sha256": "a4552f2f02ac39a431781f5bfe6573f2854d0babc86c679c24d90a16188d7932" }, "downloads": -1, "filename": "energy-dashboard-client-0.26.tar.gz", "has_sig": false, "md5_digest": "3aabbf3518e49f2c45c218a167611047", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50394, "upload_time": "2019-09-23T19:35:14", "url": "https://files.pythonhosted.org/packages/fb/c6/ad121c07dae3746a3e3724725021ab70debf76239f82e9db0add4a8e4caa/energy-dashboard-client-0.26.tar.gz" } ], "0.27": [ { "comment_text": "", "digests": { "md5": "9271590d05d8c3153f28874470e7df49", "sha256": "e53cf850f782bd8337f74df1031b0a9b9d9a3144d934e7d31aec12f06eb8eff1" }, "downloads": -1, "filename": "energy_dashboard_client-0.27-py3-none-any.whl", "has_sig": false, "md5_digest": "9271590d05d8c3153f28874470e7df49", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29565, "upload_time": "2019-09-23T21:51:48", "url": "https://files.pythonhosted.org/packages/13/23/a787c9f4afc94912980cd25f486dc78e741a328c978ca4bbb74816137601/energy_dashboard_client-0.27-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "70c0d9b19dcbdd738b1e9e5820814aea", "sha256": "a420ea1db47984c8d211d24722464f32be12273cca9fc2b19be31e62df966333" }, "downloads": -1, "filename": "energy-dashboard-client-0.27.tar.gz", "has_sig": false, "md5_digest": "70c0d9b19dcbdd738b1e9e5820814aea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50396, "upload_time": "2019-09-23T21:51:51", "url": "https://files.pythonhosted.org/packages/20/a2/3c3f2067c0f28b13f953884fb90b2c13b0383aa277364ef4a343492fa6fb/energy-dashboard-client-0.27.tar.gz" } ], "0.28": [ { "comment_text": "", "digests": { "md5": "b597060052fd86ec660c24236cad9ec1", "sha256": "de97565270668d7b8a261d3b24a3f35f979c8b52a48fe60256e291d33cb7bd36" }, "downloads": -1, "filename": "energy_dashboard_client-0.28-py3-none-any.whl", "has_sig": false, "md5_digest": "b597060052fd86ec660c24236cad9ec1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29568, "upload_time": "2019-09-23T23:00:26", "url": "https://files.pythonhosted.org/packages/c6/bf/58eaacae3c6d6e05444139a7c4697c4dcfe108cd57aa07a336512fc0e93a/energy_dashboard_client-0.28-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5726fb455b7ae8da95e8a626bcee1fcf", "sha256": "f7547edf5c4153c11c8983ed2316a3e3ddd7a561382abb579a149c02eb9e4930" }, "downloads": -1, "filename": "energy-dashboard-client-0.28.tar.gz", "has_sig": false, "md5_digest": "5726fb455b7ae8da95e8a626bcee1fcf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50395, "upload_time": "2019-09-23T23:00:29", "url": "https://files.pythonhosted.org/packages/a0/90/06a8a423c66c5f8e36dff3d08ea5276b1f8a4c3ac339795a324bdacdd1bd/energy-dashboard-client-0.28.tar.gz" } ], "0.29": [ { "comment_text": "", "digests": { "md5": "45a7b21c526427949d24745643720c69", "sha256": "fce92d84106ff68edd6cdb9b892962cbb1088c5839624fb9007f8fda1b668406" }, "downloads": -1, "filename": "energy_dashboard_client-0.29-py3-none-any.whl", "has_sig": false, "md5_digest": "45a7b21c526427949d24745643720c69", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29565, "upload_time": "2019-09-27T01:32:48", "url": "https://files.pythonhosted.org/packages/30/93/0aba3f5112d6ddacc2f9401576fe36521079e7fbfc572bf9fef589ef9a37/energy_dashboard_client-0.29-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5e15c9d372eb6b25ca7a6c0612cfbd7e", "sha256": "0f0b3927af7255bfdcc616d477f07d5df48a24fa09a11ac1e53cb952fb8c572a" }, "downloads": -1, "filename": "energy-dashboard-client-0.29.tar.gz", "has_sig": false, "md5_digest": "5e15c9d372eb6b25ca7a6c0612cfbd7e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50403, "upload_time": "2019-09-27T01:32:50", "url": "https://files.pythonhosted.org/packages/10/7e/9545f8350d1fcff09c4344da8db522fd41ad4a3547b05d48058e98ef0c1f/energy-dashboard-client-0.29.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "ecb206e1c947348c2f844a978f64fef8", "sha256": "56072a3be92bff5bb3d35f9e32aab0305b54616d34306779d7a8f35418adcda3" }, "downloads": -1, "filename": "energy_dashboard_client-0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "ecb206e1c947348c2f844a978f64fef8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23858, "upload_time": "2019-09-18T19:00:19", "url": "https://files.pythonhosted.org/packages/cf/08/be43694f299340db48d15c7c98e04e6ef131a39c322b24a152329c3f7058/energy_dashboard_client-0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "baeace4665a64d82bfe9866a87d30049", "sha256": "9f7c2553f56eb724f638e636ff755ff50a0aa866cce3f9244d767f05eb72d771" }, "downloads": -1, "filename": "energy-dashboard-client-0.3.tar.gz", "has_sig": false, "md5_digest": "baeace4665a64d82bfe9866a87d30049", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29840, "upload_time": "2019-09-18T19:00:21", "url": "https://files.pythonhosted.org/packages/c7/10/078020a33766436545335a7afa2fa5573589a4642a360b287e8d54015bb5/energy-dashboard-client-0.3.tar.gz" } ], "0.30": [ { "comment_text": "", "digests": { "md5": "2a7e61e63dd780fe441b1c3121e1d43b", "sha256": "ed83d49dee394e716fa04d54754fd19c60c8c8d4ebb520fa8adaab1172241aba" }, "downloads": -1, "filename": "energy_dashboard_client-0.30-py3-none-any.whl", "has_sig": false, "md5_digest": "2a7e61e63dd780fe441b1c3121e1d43b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29564, "upload_time": "2019-09-27T01:50:37", "url": "https://files.pythonhosted.org/packages/33/be/5ccd58ced5f5abb952e82e17cb958d677593f8974ced816b9ff9f1d28fa7/energy_dashboard_client-0.30-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e5b672c2d1d5cf0c7c16c4e25cb0cec2", "sha256": "2753b0cfc490e458cf8e4cb64b2f4d223fc32d765962e5f1e5739d9282b6cc38" }, "downloads": -1, "filename": "energy-dashboard-client-0.30.tar.gz", "has_sig": false, "md5_digest": "e5b672c2d1d5cf0c7c16c4e25cb0cec2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50396, "upload_time": "2019-09-27T01:50:39", "url": "https://files.pythonhosted.org/packages/cf/c3/5d6f79fa849fdc7825c25ce340b3cc7ce4b45619b11e29cb34fc7abaea24/energy-dashboard-client-0.30.tar.gz" } ], "0.31": [ { "comment_text": "", "digests": { "md5": "c0326df0079b7fc4d2a4b861d8b7de84", "sha256": "8c5d2fda170d7a11804a0a13bcf316a5783bc3beda00b874f3cd7eb47dcbc487" }, "downloads": -1, "filename": "energy_dashboard_client-0.31-py3-none-any.whl", "has_sig": false, "md5_digest": "c0326df0079b7fc4d2a4b861d8b7de84", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29564, "upload_time": "2019-09-27T03:16:55", "url": "https://files.pythonhosted.org/packages/58/fd/1533a94b5b9192c6cd5344bcd0cb6fb5e0356d19f22a09372233cf0a8cec/energy_dashboard_client-0.31-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bceda18e063b4f52e2d4181c86085679", "sha256": "c794669b377c8e7fec926758f2797acb1dbb4859d10de30209beb2b30db8324a" }, "downloads": -1, "filename": "energy-dashboard-client-0.31.tar.gz", "has_sig": false, "md5_digest": "bceda18e063b4f52e2d4181c86085679", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50396, "upload_time": "2019-09-27T03:16:56", "url": "https://files.pythonhosted.org/packages/4e/0f/901e18d277e9e554ab07796d4e117c5f2772032795f76c873c2aaa065f80/energy-dashboard-client-0.31.tar.gz" } ], "0.32": [ { "comment_text": "", "digests": { "md5": "d25dc884c1d0c5c025abbe69cef1c2d8", "sha256": "a39b2c016f0a639e940a0588b9f852cf32ca6afd79e02044af2bc1e353304598" }, "downloads": -1, "filename": "energy_dashboard_client-0.32-py3-none-any.whl", "has_sig": false, "md5_digest": "d25dc884c1d0c5c025abbe69cef1c2d8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29693, "upload_time": "2019-09-27T04:00:01", "url": "https://files.pythonhosted.org/packages/a5/34/44da3405a72847a671db320eccf1d8b8d1df035ac6aa27205a6d0e413257/energy_dashboard_client-0.32-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "da1465177bda96cb26cad0b603221a58", "sha256": "09a574224189fa46ca3b57338047cd09b2bdd110689d29c07be51703e9f4edf8" }, "downloads": -1, "filename": "energy-dashboard-client-0.32.tar.gz", "has_sig": false, "md5_digest": "da1465177bda96cb26cad0b603221a58", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50528, "upload_time": "2019-09-27T04:00:02", "url": "https://files.pythonhosted.org/packages/cf/25/a62906f93d79ce68ee5bde6443dbc7d6d37e5804511a32fb763dc2b83397/energy-dashboard-client-0.32.tar.gz" } ], "0.33": [ { "comment_text": "", "digests": { "md5": "39f4b3e77395d7b89ed63cb5fe30de1e", "sha256": "b2ef70b09e263fa9fb29091dc2c9bd83972e9852801c102c976102f7fe03273f" }, "downloads": -1, "filename": "energy_dashboard_client-0.33-py3-none-any.whl", "has_sig": false, "md5_digest": "39f4b3e77395d7b89ed63cb5fe30de1e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29693, "upload_time": "2019-09-27T15:18:29", "url": "https://files.pythonhosted.org/packages/f7/8c/8b48617a0c7b5f8128c25eceb82dafa74e8092a85bd7c90328a31d2ecb39/energy_dashboard_client-0.33-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "758827459970b0278c899b930e6deafd", "sha256": "51f0d36cf92e21561f74d592fb5bfc9acc2d5189d404201a74b41f8fb86d95f0" }, "downloads": -1, "filename": "energy-dashboard-client-0.33.tar.gz", "has_sig": false, "md5_digest": "758827459970b0278c899b930e6deafd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50533, "upload_time": "2019-09-27T15:18:31", "url": "https://files.pythonhosted.org/packages/a7/3d/8c7c35da5b986084b7954690f74b550559ba703675c50a7cb4d9f0cafced/energy-dashboard-client-0.33.tar.gz" } ], "0.34": [ { "comment_text": "", "digests": { "md5": "6e663cf4d95ff800af7134954147a26b", "sha256": "b6196118b79c605238ebf11eeffd816931b4d2a7139a2599dd824c89485df3e0" }, "downloads": -1, "filename": "energy_dashboard_client-0.34-py3-none-any.whl", "has_sig": false, "md5_digest": "6e663cf4d95ff800af7134954147a26b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29692, "upload_time": "2019-10-01T15:29:13", "url": "https://files.pythonhosted.org/packages/e9/4d/152eb45db08cb7ee84c03a4bffb2987c8bb294855fd7dcbede8042f4bc6d/energy_dashboard_client-0.34-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "420d00b978018322c8a2862ca4e384e9", "sha256": "c42c868e74aa647d24a1fd1918d780daba2e8c7f1a49f745152528319eb5ed54" }, "downloads": -1, "filename": "energy-dashboard-client-0.34.tar.gz", "has_sig": false, "md5_digest": "420d00b978018322c8a2862ca4e384e9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50534, "upload_time": "2019-10-01T15:29:31", "url": "https://files.pythonhosted.org/packages/04/5f/151a78aac85c35b68557bf3e346c6bbb916f40372662d6580ace461da863/energy-dashboard-client-0.34.tar.gz" } ], "0.35": [ { "comment_text": "", "digests": { "md5": "6acc7fb1981231d9b8eef8a1e6befd86", "sha256": "ba6adabd5e2d1e999d67b5f358f10ae6c1c51cb42597c236a0610993a275a35c" }, "downloads": -1, "filename": "energy_dashboard_client-0.35-py3-none-any.whl", "has_sig": false, "md5_digest": "6acc7fb1981231d9b8eef8a1e6befd86", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29707, "upload_time": "2019-10-01T15:54:07", "url": "https://files.pythonhosted.org/packages/22/e8/5244a5b853b67232f5cc8f6e7f8b0d636311a83ca4e7db60474df19f0ff0/energy_dashboard_client-0.35-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "28a073760ce5dab8959a7150858f878d", "sha256": "60ec6caf6bc1c055b664e783dc1e24884ba5c96df0b02c87275ff37116fd7f1b" }, "downloads": -1, "filename": "energy-dashboard-client-0.35.tar.gz", "has_sig": false, "md5_digest": "28a073760ce5dab8959a7150858f878d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50555, "upload_time": "2019-10-01T15:54:09", "url": "https://files.pythonhosted.org/packages/e6/78/8567612972cefdc2b22834fa4c50414d33de178742091804d7e6a50d9b99/energy-dashboard-client-0.35.tar.gz" } ], "0.36": [ { "comment_text": "", "digests": { "md5": "0f93281f53d8de7a77a7d09ca2982a2d", "sha256": "f3daa6d5d0ed7dd0eb761ca0adc6e758322c8c556960a05e5545e03426225a3a" }, "downloads": -1, "filename": "energy_dashboard_client-0.36-py3-none-any.whl", "has_sig": false, "md5_digest": "0f93281f53d8de7a77a7d09ca2982a2d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29708, "upload_time": "2019-10-01T17:38:34", "url": "https://files.pythonhosted.org/packages/02/23/64723dc5e35e767f3af93c6bb09646a49cfd188b39df6e410c971cfcd1e7/energy_dashboard_client-0.36-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "53d9d85a38c0d28c9125406832b5cdd8", "sha256": "f56f2161ad5e112985d2db2012d814548ede52652b5914955980500a054b0b43" }, "downloads": -1, "filename": "energy-dashboard-client-0.36.tar.gz", "has_sig": false, "md5_digest": "53d9d85a38c0d28c9125406832b5cdd8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50557, "upload_time": "2019-10-01T17:38:36", "url": "https://files.pythonhosted.org/packages/31/4b/7977dd2da45666aa60e5e1b64cd4488cb5d747f4fdf241e4bb1070757d08/energy-dashboard-client-0.36.tar.gz" } ], "0.37": [ { "comment_text": "", "digests": { "md5": "9d7bd246614747818bfd4b69d3c9dfff", "sha256": "8d7373ddcc31b425eeaa9ad7575f7fff4d46011adc2d36a38506a732668fa762" }, "downloads": -1, "filename": "energy_dashboard_client-0.37-py3-none-any.whl", "has_sig": false, "md5_digest": "9d7bd246614747818bfd4b69d3c9dfff", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29709, "upload_time": "2019-10-01T17:48:27", "url": "https://files.pythonhosted.org/packages/ff/17/b4b8d478cc3ffb300a0e5454c553635078e3b4be8048bb5aed51f88a8d36/energy_dashboard_client-0.37-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a156c6f154f7bd02d18f90322be6d7f3", "sha256": "c61157e4a0e0812ae8b40c1765ca8c43f968413dcd7220d77dfd28be6a166f19" }, "downloads": -1, "filename": "energy-dashboard-client-0.37.tar.gz", "has_sig": false, "md5_digest": "a156c6f154f7bd02d18f90322be6d7f3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50554, "upload_time": "2019-10-01T17:48:29", "url": "https://files.pythonhosted.org/packages/f4/b6/eb32b2559034bd8e405c742e4b408afd91dcf8f2547d802c7d4c8ed7cded/energy-dashboard-client-0.37.tar.gz" } ], "0.38": [ { "comment_text": "", "digests": { "md5": "2ad530945570cda5d8d1205ac4724ce2", "sha256": "d1c29b33201f7bfa53b5503276db54b34bf9a21bd99eb95ad231c3d4f2113996" }, "downloads": -1, "filename": "energy_dashboard_client-0.38-py3-none-any.whl", "has_sig": false, "md5_digest": "2ad530945570cda5d8d1205ac4724ce2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29708, "upload_time": "2019-10-02T18:35:44", "url": "https://files.pythonhosted.org/packages/b4/ea/1c6414a11dd3c68092276004c045671f4830b87617b453d53014eb7c0592/energy_dashboard_client-0.38-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a2524307b3b5ae6024ac05e3de9baa01", "sha256": "679214f9614b0f4574fd4017e9dbfbd4ca424e39d6900c93665e675b6e48de2d" }, "downloads": -1, "filename": "energy-dashboard-client-0.38.tar.gz", "has_sig": false, "md5_digest": "a2524307b3b5ae6024ac05e3de9baa01", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50559, "upload_time": "2019-10-02T18:35:47", "url": "https://files.pythonhosted.org/packages/ba/97/a9a675fe8204c2bcbf785aa0c2e02900f45c9d9deb3fdf6ea97448bf151d/energy-dashboard-client-0.38.tar.gz" } ], "0.39": [ { "comment_text": "", "digests": { "md5": "e24a966a619e45e15aef2af877c4f15c", "sha256": "e4776c718e4d5c676690ca1198c5d8ad35637a99c1be6a7b3dbb9575436776c0" }, "downloads": -1, "filename": "energy_dashboard_client-0.39-py3-none-any.whl", "has_sig": false, "md5_digest": "e24a966a619e45e15aef2af877c4f15c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29791, "upload_time": "2019-10-11T03:38:25", "url": "https://files.pythonhosted.org/packages/68/97/14995131777b51d9f075a2ff7144ebbe5c6c170f30b402cc9c42a68226a4/energy_dashboard_client-0.39-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9b83189d9b270b6f9a64b83b890a5d4e", "sha256": "06d9085e454b8449702e3b0d8a3298f88210d1bfecd3937cb159bfe12bbd1146" }, "downloads": -1, "filename": "energy-dashboard-client-0.39.tar.gz", "has_sig": false, "md5_digest": "9b83189d9b270b6f9a64b83b890a5d4e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50661, "upload_time": "2019-10-11T03:38:27", "url": "https://files.pythonhosted.org/packages/f6/d8/8c0773bb41f671e71bb06c98c4de824f22c7ac4802181adefa01a597d6f0/energy-dashboard-client-0.39.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "16b5ca9e7e98fd486e28242e981681f2", "sha256": "fbb831e311478f588f8b3f0953c74d24aa8d87aacf7a997ae548915e21d3c9a8" }, "downloads": -1, "filename": "energy_dashboard_client-0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "16b5ca9e7e98fd486e28242e981681f2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23857, "upload_time": "2019-09-18T19:08:39", "url": "https://files.pythonhosted.org/packages/54/e6/2823fe8125febeb6e61da5a851792578687ccd32fbc624137d95cdb6d793/energy_dashboard_client-0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f7472313cc3f9542bd66d9ec0b488250", "sha256": "4079606ed8450447c8e0d8e1453d599e5d62473faa061795a45f819ddff875fd" }, "downloads": -1, "filename": "energy-dashboard-client-0.4.tar.gz", "has_sig": false, "md5_digest": "f7472313cc3f9542bd66d9ec0b488250", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29841, "upload_time": "2019-09-18T19:08:41", "url": "https://files.pythonhosted.org/packages/0c/7f/73c8e0513da9f3a71ca433ab3f58f6e2398925d45e15235b52882032fe0c/energy-dashboard-client-0.4.tar.gz" } ], "0.40": [ { "comment_text": "", "digests": { "md5": "83749262164ee0f1004929cffc6ae7f1", "sha256": "1bfba82e5a2e4a939919e307434b6fc3683dac3be3403875eefbe892fed4fd85" }, "downloads": -1, "filename": "energy_dashboard_client-0.40-py3-none-any.whl", "has_sig": false, "md5_digest": "83749262164ee0f1004929cffc6ae7f1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29791, "upload_time": "2019-10-11T03:53:25", "url": "https://files.pythonhosted.org/packages/d6/5c/a7b9fc3fc701f769af4536a4ba15e8407dc67cfb43a87a72074cbf225cd1/energy_dashboard_client-0.40-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "372b0dc2aa59be7c8461ef0b9450fb43", "sha256": "d6526464678b66b26a90bd3f42773af9056ec10fca8f36e8e575d4edf1673146" }, "downloads": -1, "filename": "energy-dashboard-client-0.40.tar.gz", "has_sig": false, "md5_digest": "372b0dc2aa59be7c8461ef0b9450fb43", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50662, "upload_time": "2019-10-11T03:53:27", "url": "https://files.pythonhosted.org/packages/50/13/d3f7d58d8a9639e9b29a94bc4b0a2bae9ba974d13dafd86eee1ad59d9daf/energy-dashboard-client-0.40.tar.gz" } ], "0.41": [ { "comment_text": "", "digests": { "md5": "c444071f813782c9c9396eec00a59cef", "sha256": "1e2e914d4edcc696670483063f817ce573bd291f6ccd104e8e4b8aea57e24b96" }, "downloads": -1, "filename": "energy_dashboard_client-0.41-py3-none-any.whl", "has_sig": false, "md5_digest": "c444071f813782c9c9396eec00a59cef", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29790, "upload_time": "2019-10-11T03:57:46", "url": "https://files.pythonhosted.org/packages/97/18/73c7ff21c430cfad81a8d192ef9d76a52c30bc087bb1446d66a8bafbeabb/energy_dashboard_client-0.41-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "00c61acfa4c8be07c44e22e97f3ccaa1", "sha256": "0665d87a6aac115f35afd076f99089fb42e50e19a2905a641979217353d262a6" }, "downloads": -1, "filename": "energy-dashboard-client-0.41.tar.gz", "has_sig": false, "md5_digest": "00c61acfa4c8be07c44e22e97f3ccaa1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50664, "upload_time": "2019-10-11T03:57:47", "url": "https://files.pythonhosted.org/packages/fe/d0/e1afd1114cf6434f7230fc16eb8bfd021c6b66f5a3ea3aac7ea24a853579/energy-dashboard-client-0.41.tar.gz" } ], "0.42": [ { "comment_text": "", "digests": { "md5": "269a670560fffd5a60cc69238896bf20", "sha256": "05fe2704167d8c249a989ab8a861fd09406c29c747b48845233d81b1ceea23ad" }, "downloads": -1, "filename": "energy_dashboard_client-0.42-py3-none-any.whl", "has_sig": false, "md5_digest": "269a670560fffd5a60cc69238896bf20", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29791, "upload_time": "2019-10-11T04:09:03", "url": "https://files.pythonhosted.org/packages/f9/15/1839757e3de38205f40539e35c1b61b161226a05d800832ef862ec47d2a1/energy_dashboard_client-0.42-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6e2d76831f78d648ae733128d80f2d0b", "sha256": "3bf350c17ed3dec58ecf3da645f84990d479294ed9d66df0f25a0eff74711c21" }, "downloads": -1, "filename": "energy-dashboard-client-0.42.tar.gz", "has_sig": false, "md5_digest": "6e2d76831f78d648ae733128d80f2d0b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50664, "upload_time": "2019-10-11T04:09:06", "url": "https://files.pythonhosted.org/packages/6e/d2/222961ed3042c28bddfa469995e49753a3594001fe7ac4064f9debea71d6/energy-dashboard-client-0.42.tar.gz" } ], "0.43": [ { "comment_text": "", "digests": { "md5": "8271694f9755fef530c129da135f2d6a", "sha256": "257d6d516ac72b07d214cb6b3b361280e6ac12f9d8c4dabe1c047e962cab1d9b" }, "downloads": -1, "filename": "energy_dashboard_client-0.43-py3-none-any.whl", "has_sig": false, "md5_digest": "8271694f9755fef530c129da135f2d6a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29792, "upload_time": "2019-10-11T04:20:35", "url": "https://files.pythonhosted.org/packages/db/c3/3acb1d8cdb4529aaa9e2c22cd4bb98a37b95f4ff95b231c59032d3ac55c1/energy_dashboard_client-0.43-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d975fecee1802897f566a99e21dc71ce", "sha256": "89a76b569d9902db899b9353b0bcea58d09259717b4c79a1fee8096730ade20f" }, "downloads": -1, "filename": "energy-dashboard-client-0.43.tar.gz", "has_sig": false, "md5_digest": "d975fecee1802897f566a99e21dc71ce", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50662, "upload_time": "2019-10-11T04:20:37", "url": "https://files.pythonhosted.org/packages/1c/04/44be15a4c5599e75a13329fd4e6883b078375ab80618c2bd301641817cbb/energy-dashboard-client-0.43.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "d2761d701361c82983b39c4cb0122fa0", "sha256": "e22cc88838c98a9a48b672225e7d5ed3fa0e703a286ba1e91ec205884efbce6e" }, "downloads": -1, "filename": "energy_dashboard_client-0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "d2761d701361c82983b39c4cb0122fa0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26327, "upload_time": "2019-09-18T22:43:17", "url": "https://files.pythonhosted.org/packages/77/ca/9f2adaaa1ade13c2070cf7d8d8cd159694f00a10cc5bac01f3b7b751937d/energy_dashboard_client-0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e347202d531a6f5676d20aa06a68f3bd", "sha256": "6ab55ad593cff0cdf8a2286487fb54e6ae05975375c514ad6e7826dbc87add5b" }, "downloads": -1, "filename": "energy-dashboard-client-0.6.tar.gz", "has_sig": false, "md5_digest": "e347202d531a6f5676d20aa06a68f3bd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35437, "upload_time": "2019-09-18T22:43:19", "url": "https://files.pythonhosted.org/packages/22/8c/334c840e30ac242bb56f4d8125c1493f68d7c531b2b8f49c4765f0600024/energy-dashboard-client-0.6.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "678d38f8468eb9fea0954fa7033d2a08", "sha256": "634f98c9df1d602fe8a717306a11f1e2d0827d55e3d84788860d54b935131eb7" }, "downloads": -1, "filename": "energy_dashboard_client-0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "678d38f8468eb9fea0954fa7033d2a08", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 27273, "upload_time": "2019-09-18T23:22:55", "url": "https://files.pythonhosted.org/packages/f0/7a/2ef1131c13ee0f5306f7a16eb48dcad9c27f608bf12394d3dda5c52e7307/energy_dashboard_client-0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "37a7cf28acfa0ad8121fa78af6a316a0", "sha256": "56325cf3fb97a212c80235724fbaeb6a2a72dd23f45cc1f733888332c92feb26" }, "downloads": -1, "filename": "energy-dashboard-client-0.7.tar.gz", "has_sig": false, "md5_digest": "37a7cf28acfa0ad8121fa78af6a316a0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40368, "upload_time": "2019-09-18T23:22:56", "url": "https://files.pythonhosted.org/packages/e2/95/49ecd3135f2a72758097897c76771fa24d98272a9c564ad30013286dcab7/energy-dashboard-client-0.7.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "8e905f19f02eecef5b1aae67a561ba12", "sha256": "1db16fa150a323d3b457db217746a3abd3f219354bbd11fe533a9de1c248a8e2" }, "downloads": -1, "filename": "energy_dashboard_client-0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "8e905f19f02eecef5b1aae67a561ba12", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 28967, "upload_time": "2019-09-19T18:51:29", "url": "https://files.pythonhosted.org/packages/e4/fb/e4fae8ed4f5708e4b0fb1650a3eb1b302b4ba3bc082d432ab2f38381be23/energy_dashboard_client-0.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5df1c0860344a700f62da9b7788fc997", "sha256": "b48818c35de512efc2a94e0da16e94c091645d0a002e1dcb5d1b9de7b0cec949" }, "downloads": -1, "filename": "energy-dashboard-client-0.8.tar.gz", "has_sig": false, "md5_digest": "5df1c0860344a700f62da9b7788fc997", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48625, "upload_time": "2019-09-19T18:51:32", "url": "https://files.pythonhosted.org/packages/f8/a1/a18ca1f61ea87f1825e8db185a11f89f92003b6c4dd0b7b525dc87888fe1/energy-dashboard-client-0.8.tar.gz" } ], "0.9": [ { "comment_text": "", "digests": { "md5": "35b6a2b1ecc8706c016de45e5d2f6a30", "sha256": "36a9b07b973b07c10634cfe9685fa029ac87722b538253125c8c7da1059902a7" }, "downloads": -1, "filename": "energy_dashboard_client-0.9-py3-none-any.whl", "has_sig": false, "md5_digest": "35b6a2b1ecc8706c016de45e5d2f6a30", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 28967, "upload_time": "2019-09-19T19:03:06", "url": "https://files.pythonhosted.org/packages/72/f8/c0f415722a99e7022517f3811eb8da8acd23b4b17a6f4b975f8aa095b8bd/energy_dashboard_client-0.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f318db2dea47983944a23fe9ba2185bb", "sha256": "1e888f17894661739cd481f9bf51ce6f6771382323a961771c905bb4abc19bd8" }, "downloads": -1, "filename": "energy-dashboard-client-0.9.tar.gz", "has_sig": false, "md5_digest": "f318db2dea47983944a23fe9ba2185bb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48616, "upload_time": "2019-09-19T19:03:10", "url": "https://files.pythonhosted.org/packages/2c/18/30e8601692ac544c197ad21209af2d32afda43a48955c11b232bb8eed511/energy-dashboard-client-0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8271694f9755fef530c129da135f2d6a", "sha256": "257d6d516ac72b07d214cb6b3b361280e6ac12f9d8c4dabe1c047e962cab1d9b" }, "downloads": -1, "filename": "energy_dashboard_client-0.43-py3-none-any.whl", "has_sig": false, "md5_digest": "8271694f9755fef530c129da135f2d6a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29792, "upload_time": "2019-10-11T04:20:35", "url": "https://files.pythonhosted.org/packages/db/c3/3acb1d8cdb4529aaa9e2c22cd4bb98a37b95f4ff95b231c59032d3ac55c1/energy_dashboard_client-0.43-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d975fecee1802897f566a99e21dc71ce", "sha256": "89a76b569d9902db899b9353b0bcea58d09259717b4c79a1fee8096730ade20f" }, "downloads": -1, "filename": "energy-dashboard-client-0.43.tar.gz", "has_sig": false, "md5_digest": "d975fecee1802897f566a99e21dc71ce", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50662, "upload_time": "2019-10-11T04:20:37", "url": "https://files.pythonhosted.org/packages/1c/04/44be15a4c5599e75a13329fd4e6883b078375ab80618c2bd301641817cbb/energy-dashboard-client-0.43.tar.gz" } ] }