{ "info": { "author": "Stefan Scherfke", "author_email": "stefan.scherfke@offis.de", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Science/Research", "License :: OSI Approved :: GNU Lesser General Public License v2 (LGPLv2)", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Scientific/Engineering" ], "description": "mosaik-pypower\n==============\n\nThis package contains the Adapter to connect *PYPOWER* to *mosaik*.\n\n.. contents:: Table of Contents\n :depth: 3\n\n\nInstallation and starting\n-------------------------\n\nYou can install mosaik-pypower via pip:\n\n.. code-block:: bash\n\n $ pip install mosaik-pypower\n\nYou can run the tests with:\n\n.. code-block:: bash\n\n $ hg clone https://bitbucket.org/mosaik/mosaik-pypower\n $ cd mosaik-pypower\n $ pip install -r requirements.txt\n $ py.test # Run tests on current Python\n $ tox # Run tests on all supported Python versions\n\nYou can either start mosaik-pypower as normal process or use it as a library.\nIf you run it via the command line, you need to pass the adress that mosaik is\nlistening on:\n\n.. code-block:: bash\n\n $ mosaik-pypower HOST:PORT\n\nYou can run ``mosaik-pypower --help`` to get more help.\n\nIn order to use it as a library, you have to import the module\n``mosaik_pypower.mosaik`` and instantiate the class ``PyPower``:\n\n.. code-block:: python\n\n >>> import mosaik_pypower.mosaik\n >>> pp = mosaik_pyower.mosaik.PyPower()\n\n\nInput file format\n-----------------\n\nMosaik-pypower uses, like PYPOWER, the bus-branch model to represent power\ngrids.\n\nThis model is fairly simple: You have a number of buses / nodes that are\nconnected via branches / lines. Transformers are just a special kind of branch.\nBuses are divided into three sub-types: the reference bus (also known as swing\nor slack bus), PQ buses and PU buses.\n\nFor PQ buses, the (re)active power *P* and *Q* are given, PYPOWER will\ncalculate the voltage magnitude and angle for these nodes. PU buses provide\nactive power and a constant voltage, thus PYPOWER computes the reactive power\nfor these buses. Mosaik-pypower current *only supports PQ buses*, because they\nare more general and if you model your power grid for mosaik, you do not know\nin advance what kind of unit (consumer, producer, \u2026) will be connected to\na bus.\n\nEvery grid needs to have *exactly one* reference bus. It has a constant voltage\nmagnitude and angle (usually 1 p.u. and 0\u00b0). PYPOWER computes the residual\n(re)active power for that node. Usually it is placed on the primary or\nsecondary side of the grid's transformer station (or where it would be)::\n\n With transformer Without transformer\n\n REF REF\n | |\n 8 |\n | PQ0\n PQ0 / \\\n / \\ | |\n | | PQ1 PQ2\n PQ1 PQ2\n\nPYPOWER's original input format is relatively hard to read/write and also\ncontains more information than we need to model power grids for the use with\nmosaik. For example, it contains loads and feed-in for each bus which we don't\nneed here because mosaik will provide it from other simulators.\n\nThus, mosaik-pypower provides simpler input file formats which it will convert\nto the format used by PYPOWER. Currently, it can read Excel (xlsx) and JSON\nfiles (in an old an a new variant).\n\nThe Excel and new JSON formats are structured in a similar way. The difference\nof the old JSON format are larger. You can find example files in our `source\ncode repository`__. Below, you\u2019ll find a detailed description of them.\n\n__ https://bitbucket.org/mosaik/mosaik-pypower/src/tip/tests/data/\n\n\nExcel\n^^^^^\n\nExcel files need to have the suffix ``*.xlsx`` and need to provide at least to\nsheets: one for buses and one for branches. They should usually be named\n*Nodes* and *Lines*, but you can also use any name you want (more on that\nlater).\n\nIn every sheet, the first row is reserved for headings. From row two, you list\nthe buses and branches (one per row). If the first cell of a row starts with\na ``#`` this row is treated as a comment.\n\nBus sheet\n\"\"\"\"\"\"\"\"\"\n\nThe bus sheet contains at least three columns (you can use the other columns\nfor comments):\n\n1. The bus name (string)\n2. The bus type (either ``REF`` or ``PQ``)\n3. The bus' base voltage (integer in kV line-to-line, e.g. ``400`` for\n a European LV node).\n\nExample::\n\n Node name Node type Base voltage [kV] Notes\n Grid REF 110 Slack bus\n # This is a comment\n Bus0 PQ 20\n Bus1 PQ 20\n Bus2 PQ 20\n Bus3 PQ 20\n\nThere must be *exactly one* REF bus in the list and it must be first in the\nlist.\n\n\nBranch sheet\n\"\"\"\"\"\"\"\"\"\"\"\"\n\nThe branch sheet contains at least seven columns (again, you can use additional\ncolumns for notes):\n\n1. The branch name (string)\n2. One end of the branch (a valid bus name)\n3. The other end of the branch (a valid bus name)\n4. The transformer or line type (see `here`__ for a list of built-in types. You\n can also `add your own`__)\n5. The branch length (float in km)\n6. A flag indicating whether the branch is online / active (``1``) or offline\n / inactive (``0``)\n7. The default tap turn for a transformer (usually ``0``)\n\n__ https://bitbucket.org/mosaik/mosaik-pypower/src/tip/mosaik_pypower/resource_db.py\n__ resource-db_\n\nExample::\n\n Name From To Type Length [km] Online Tap\n # Transformer\n Trafo1 Grid Bus0 TRAFO_40 1.0 1 0\n # Lines\n B_0 Bus0 Bus1 NA2XS2Y_185 5.0 1\n B_1 Bus0 Bus2 NA2XS2Y_185 3.0 1\n B_2 Bus1 Bus3 NA2XS2Y_185 2.0 1\n B_3 Bus2 Bus3 NA2XS2Y_185 0.3 1\n\n\n.. _resource-db:\n\nAdditional branch and transformer types\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\nYou can add more line and transformer types via two additional sheets, *Line\ntypes* and *Transformer types* (you can give them other names if you want to).\n\nThe headings should be pretty self-explanatory:\n\nExample line types::\n\n Type name R' [\u03a9/km] X' [\u03a9/km] C' [nF/km] I_max [A]\n SPAM_200 0.1337 0.0815 0 404\n\nExample transformer types::\n\n Transformer Type S_r [MVA] I_max_prim [A] I_max_sec [A] P_loss [kW] R [\u03a9] X [\u03a9] taps\n TRAFO_23 23 100 800 100 0.0123 1.234 {-1: 0.9, 0: 1.0, 1: 1.1}\n\n\nJSON (new format)\n^^^^^^^^^^^^^^^^^\n\nThe new JSON format (use ``*.json`` as a suffix) is very similar to the Excel\nformat, but instead of separate sheets, its just different entries in a JSON\nobject. There is one entry for the buses, one for branches and one for\ntransformers. Each entry contains is a list of lists which are structured\nlike the columns in the Excel format:\n\n.. code-block:: json\n\n {\n \"bus\": [\n [\"Grid\", \"REF\", 110.0],\n [\"Bus0\", \"PQ\", 20.0],\n [\"Bus1\", \"PQ\", 20.0],\n [\"Bus2\", \"PQ\", 20.0],\n [\"Bus3\", \"PQ\", 20.0]\n ],\n \"trafo\": [\n [\"Trafo1\", \"Grid\", \"Bus0\", \"TRAFO_40\", true, 0]\n ],\n \"branch\": [\n [\"B_0\", \"Bus0\", \"Bus1\", \"NA2XS2Y_185\", 5.0, true],\n [\"B_1\", \"Bus0\", \"Bus2\", \"NA2XS2Y_185\", 3.0, true],\n [\"B_2\", \"Bus1\", \"Bus3\", \"NA2XS2Y_185\", 2.0, true],\n [\"B_3\", \"Bus2\", \"Bus3\", \"NA2XS2Y_185\", 0.3, true]\n ]\n }\n\nThere must be *exactly one* REF bus in the list and it must also be the first\nentry of the list.\n\nIf you want to specify additional branch or transformer types, you can add\n``branch_types`` or ``trafo_types`` to the object. They are also structured\nsimilarly to the Excel file:\n\n.. code-block:: json\n\n {\n \"bus\": [\n [\"Grid\", \"REF\", 110.0],\n [\"Bus0\", \"PQ\", 20.0],\n [\"Bus1\", \"PQ\", 20.0],\n ],\n \"trafo\": [\n [\"Trafo1\", \"Grid\", \"Bus0\", \"TRAFO_23\", true, 0]\n ],\n \"branch\": [\n [\"B_0\", \"Bus0\", \"Bus1\", \"SPAM_200\", 5.0, true]\n ],\n \"branch_types\": {\n \"SPAM_200\": [0.1337, 0.0815, 0, 404]\n },\n \"trafo_types\": {\n \"TRAFO_23\": [23, 100, 800, 100, 0.0123, 1.234, {\"-1\": 0.9, \"0\": 1, \"1\": 1.1}]\n }\n }\n\n\nJSON (old format)\n^^^^^^^^^^^^^^^^^\n\nThe old JSON format (also with the ``*.json`` suffix) differs from the new\nformat by explicitly listing the branch and transformer parameters for each\nbranch and transformer. It must also have a ``base_mva`` entry which is used\nfor the p.u. conversion. It can usually just be set to ``1``:\n\n::\n\n {\n \"base_mva\": ,\n \"bus\": [\n [\"\", \"REF|PQ\", ],\n ...\n ],\n \"trafo\": [\n [\"\", \"\", \"\", , ,\n , , ],\n ...\n ],\n \"branch\": [\n [\"\", \"\", \"\", ,\n , , , ],\n ...\n ]\n }\n\nAgain, there may only be one *REF* bus and it must be the first in the list\n\n\nUsage in mosaik\n---------------\n\nAs pointed out above, you can run mosaik-pypower in-process or as\na sub-process. Every instance of mosaik-pypower can handle multiple power grids\nat once. This is very handy for scenarios with a lot of separate grids. You can\nstart one instance of mosaik-pypower for every CPU core of your machine and\ndistribute all grids over these instance. More instances would mean more\noverhead, less instances would mean less parallelization.\n\nInstantiation and initialization\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nHere is an example *sim config* for mosaik:\n\n.. code-block:: python\n\n sim_config = {\n 'PyPower-inproc': {\n 'python': 'mosaik_pypower.mosaik:PyPower',\n },\n 'PyPower-subproc': {\n 'cmd': 'mosaik-pypower %(addr)s',\n },\n }\n\nWhen you create an instance of mosaik-pypower, you can pass two parameters:\n\n- *step_size* is an integer in seconds (of simulation time) and defines how\n often a power flow analysis should be performend.\n\n- *pos_load* is an optional boolean that lets you specify whether the active\n power for loads is a positive or a negative number.\n\n The default (``True``) is to use positive numbers for loads and negative\n numbers for feed-in of active power.\n\n If you want to use negative values for loads and positive for feed-in, set\n this flag to ``False``.\n\nExamples:\n\n.. code-block:: python\n\n # Power-flow every minute:\n pp_a = world.start('PyPower', step_size=60)\n\n # Power-flow every 15 minutes, negative values for active power of loads:\n pp_b = world.start('PyPower', step_size=300, pos_loads=False)\n\n\nModels\n^^^^^^\n\nMosaik-pypower provides the following models / entity types:\n\n**Grid**\n **public:** True\n\n **parameters:** *gridfile* [, *sheetnames*]\n\n This model is used to instantiate a power-grid within mosaik-pypower from the\n *gridfile* provided. The *Grid* instance will have child entities for every\n element in that grid (buses, branches, \u2026). You can access these entities\n via the ``children`` attribute of the *Grid* entity. These entities also\n contain information about how they are related to each other. This allows\n mosaik to determine the grid topology. You can query it via\n ``world.entity_graph[``.\n\n If you use an Excel file and deviate from the default sheet names, you can\n optionally pass a *sheetnames* argument which is a dict with the sheet names\n to use.\n\n**RefBus** / **PQBus**\n **public:** False\n\n **attributes:** *P*, *Q*, *Vl*, *Vm*, *Va*\n\n Every *Grid* will contain exactly one *RefBus* entity and at least one\n *PQBus* entity.\n\n *P* and *Q* are active / reactive power in [W] / [VAr].\n\n *Vl* is the nominal voltage in [V] as defined in the grid file. *Vm* is the\n current voltage magnitude in [V] and my deviate from *Vl*. *Va* is the voltage\n angle in [\u00b0] (degree).\n\n**Branch**\n **public:** False\n\n **attributes:** *P_from*, *Q_from*, *P_to*, *Q_to*, *I_real*, *I_imag*,\n *S_max*, *I_max*, *length*, *R_per_km*, *X_per_km*, *onine*\n\n A grid consists of an arbitrary amount of branches connecting the *PQBus*\n entities with each other.\n\n The attributes *(P|Q)_(from|to)* denote the (re)active power on both ends of\n the branch in [W] or [VAr]. *I_real* and *I_imag* are the complex current in\n [A] flowing through the branch.\n\n *S_max* and *I_max* denote the maximum acceptable apparent power (in [VA])\n and current (in [A]) for that branch.\n\n *lengh*, *R_per_km*, *X_per_km*, *C_per_km* and *online* are the respective\n values for the branch from the input file.\n\n**Transformer**\n **public:** False\n\n **attributes:** *P_from*, *Q_from*, *P_to*, *Q_to*, *S_r*, *I_max_p*,\n *I_max_s*, *P_loss*, *U_p*, *U_s*, *taps*, *tap_turn*.\n\n A grid may have an arbitrary number of transformers (zero, one or more).\n Since it is just a special kind of *Branch* it shares many attributes with\n it.\n\n The attributes *(P|Q)_(from|to)* denote the (re)active power on both ends of\n the branch in [W] or [VAr]. *I_real* and *I_imag* are the complex current in\n [A] flowing through the branch.\n\n *S_r* is the rated apparent power (in [VA]) of the transformer. *I_max_p* and\n *I_max_s* are the maximum currents in [A] for the primary and secondary side\n of the transformer. *P_loss* is the transformer's nominal power loss in [W].\n\n *U_p* and *U_s* are the nominal primary and secondary line-to-line voltages\n in [V].\n\n *taps* is a dictionary of the available tap turns of the transformer.\n *tap_turn* is the currently active tap turn.\n\n\nExamples for model instantiation and connection\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nHere are some examples on how to instantiate a power grid and work with the\nentities that you get in return.\n\nBasic examples:\n\n.. code-block:: python\n\n pp = world.start('PyPower', step_size=60)\n\n # Create a grid from a JSON file:\n grid = pp.Grid(gridfile='path/to/grid.json')\n\n # Get a list of RefBus, PQBus, Transformer and Branch entities:\n grid = grid.children\n\n # Create some PV entities and randomly connect them to a PQBus:\n pvs = make_pvs(...) # Returns a list of PV entities\n pq_buses = [e for e in grid if e.type == 'PQBus']\n mosaik.util.connect_randomly(world, pvs, pq_buses, ('P_out', 'P'), ('Q_out', 'Q'))\n\n\nAdvanced stuff:\n\n.. code-block:: python\n\n pp = world.start('PyPower', step_size=60)\n\n # Create a grid from an Excel file and overwrite default sheet names.\n # Directly grab the list of child entities\n grid = pp.Grid(gridfile='path/to/grid.xlsx', sheetnames={\n 'bus': 'Nodes',\n 'branch': 'Lines',\n 'branch_types': 'Line types',\n 'trafo_types': 'Transformer types',\n }).children\n\n # Get the RefBus\n ref_bus = [e for e in grid if e.type == 'RefBus']\n\n # Get all nodes starting with \"ConnectionPoint_\". Note that every entity ID\n # is prefixed with a grid index (e.g., \"1-\"). We can use regular expressions\n # to handle this:\n import re\n regex_cn = re.compile(r'\\d+-ConnectionPoint_.*')\n conpoints = [e for e in grid if regex_cn.match(e.eid)]\n\n # Create a dictionary mapping node names to the respective entities. Again,\n # we have to strip the grid index:\n conpoints = {e.eid.split('-', 1)[1]: n\n for n in grid if regex_cn.match(n.eid)}\n\n # Connected loads to defined connection points:\n houses = create_houses(...) # Returns a list of (house, node-id) tuples\n for house, node_id in houses:\n mosaik.connect(house, conpoints[house_id], ('P_out', 'P'), ('Q_out', 'Q'))\n\n # Get \"secondary side\" buses of all transformers\n trafo_nodes = []\n # 1. Get all transformers:\n trafos = [e for e in grid if e.type == 'Transformer']\n # 2. Group PQBuses by full ID for easier access:\n nodes = {e.full_id: e for e in grid if e.type == 'PQBus'}\n # 3. Iterate transformer relations (assuming that they are connected to the\n # RefBus on their primary side):\n for trafo in trafos:\n rels = world.entity_graph[trafo.full_id]\n assert len(rels) == 2\n for rel in rels:\n if rel in nodes:\n trafo_nodes.append(nodes[rel])\n break\n else:\n raise ValueError('No PQBus found at trafo.')\n\n\nGetting help\n------------\n\nIf you need, please visit either the `mosaik-users mailing list`__ (or the\n`PYPOWER Google group`__ if your issue is very PYPOWER specific).\n\n__ https://mosaik.offis.de/mailinglist\n__ https://groups.google.com/forum/#!forum/pypower\n\n\nChangelog\n=========\n\n0.7.2 \u2013 2017-07-19\n------------------\n\n- [BUGFIX] --> Issue #5: https://bitbucket.org/mosaik/mosaik-pypower/issues/5\n- [BUGFIX] --> Issue #6: https://bitbucket.org/mosaik/mosaik-pypower/issues/6\n- [LIB-UPDATE] --> scipy update from version 0.17.0 to version 0.19.1\n\n\n0.7.1 \u2013 2016-02-15\n------------------\n\n- [FIX] Fixed a typo in model.py. \"Tap\" can now be read from Excel files.\n\n\n0.7 \u2013 2014-10-28\n----------------\n\n- [NEW]\u00a0Added ability to extend the built-in branch/transformer database\n (`issue #2`_).\n- [NEW] Wrote a lot new documentation (`issue #3`_)\n\n.. _`issue #2`: https://bitbucket.org/mosaik/mosaik-pypower/issue/2/\n.. _`issue #3`: https://bitbucket.org/mosaik/mosaik-pypower/issue/3/\n\n\n0.6.3 \u2013 2014-09-22\n------------------\n\n- [CHANGE] Updated to mosaik-api 2.0.\n\n\n0.6.2 \u2013 2014-07-31\n------------------\n\n- [CHANGE] Cache xlsx files to improve performance\n- [CHANGE] Updated to mosaik-api 2.0a4.\n\n\n0.6.1 \u2013 2014-06-30\n------------------\n\n- [NEW] Added *I_max_p* [A] and *I_max_s* [A] to the transformer data.\n\n\n0.6 \u2013 2014-06-26\n----------------\n\n- [NEW] Can import grids from Excel files (xlsx)\n- [NEW] New import format for JSON files (the old format is still supported)\n- [CHANGE] Massive internal refactoring.\n- [CHANGE] Updated to mosaik-api 2.0a3.\n\n\n0.5 \u2013 2014-03-26\n----------------\n\n- Initial release\n\n\nAuthors\n=======\n\nThe mosaik-pypower is developed by Stefan Scherfke.\nAndr\u00e9 El-Ama joined the team in July 2017.\n\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://bitbucket.org/mosaik/mosaik-pypower", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "mosaik-pypower", "package_url": "https://pypi.org/project/mosaik-pypower/", "platform": "", "project_url": "https://pypi.org/project/mosaik-pypower/", "project_urls": { "Homepage": "https://bitbucket.org/mosaik/mosaik-pypower" }, "release_url": "https://pypi.org/project/mosaik-pypower/0.7.2/", "requires_dist": [ "PYPOWER (>=4.1)", "mosaik-api (>=2.0)", "numpy (>=1.6)", "scipy (>=0.9)", "xlrd (>=0.9.2)" ], "requires_python": "", "summary": "An adapter to use PYPOWER with mosaik.", "version": "0.7.2" }, "last_serial": 3100195, "releases": { "0.5": [ { "comment_text": "", "digests": { "md5": "e24b73c7f18ad9782d2c635e1699a495", "sha256": "597d97a17d10771adba24921e1ea40bdda5ec0c38a173da9767b0d2c4c9df375" }, "downloads": -1, "filename": "mosaik_pypower-0.5-py34-none-any.whl", "has_sig": false, "md5_digest": "e24b73c7f18ad9782d2c635e1699a495", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 9301, "upload_time": "2014-03-27T08:28:37", "url": "https://files.pythonhosted.org/packages/ec/7d/30f4adbe5a52100bd2a648450c13631c5b561400957850d0752da2b2991c/mosaik_pypower-0.5-py34-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e400ff9e8ab93b778ae7950be3d622c4", "sha256": "ca13790e71f3b3cb55bffb2234663fb9c8bf142bd2a698d4751bec0ce7dae90f" }, "downloads": -1, "filename": "mosaik-pypower-0.5.tar.gz", "has_sig": false, "md5_digest": "e400ff9e8ab93b778ae7950be3d622c4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15564, "upload_time": "2014-03-27T08:28:29", "url": "https://files.pythonhosted.org/packages/45/94/f3101f6b13e279ba54a8108cb6843d33f3c6b1b87ee2ab7c96c0bafa2451/mosaik-pypower-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "3fb7d0b7a97d64f5a73bcda9c5c3c500", "sha256": "19a51e8002e521ccc5089f01ddf0b3589be08f36b93e8f67810118a3fc58faba" }, "downloads": -1, "filename": "mosaik_pypower-0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "3fb7d0b7a97d64f5a73bcda9c5c3c500", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11294, "upload_time": "2014-06-26T09:05:09", "url": "https://files.pythonhosted.org/packages/5d/45/2443185b16b59daab19ef5505cba42a927c1610340a3ebb5dbfbdd2c0dc3/mosaik_pypower-0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "83860dda97f461d9951e9c0bbbccd441", "sha256": "b82238647b38d842b1dc183358925886cd2775d44991ed6637bc9071a0c59ee8" }, "downloads": -1, "filename": "mosaik-pypower-0.6.tar.gz", "has_sig": false, "md5_digest": "83860dda97f461d9951e9c0bbbccd441", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17823, "upload_time": "2014-06-26T09:05:13", "url": "https://files.pythonhosted.org/packages/b5/8e/83bc5e180662de72192f012ca93a2cd144f925582642af903e25795f35a1/mosaik-pypower-0.6.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "00b8d724db2f925dd057c68b97641c51", "sha256": "1305ed3947acffbb0ca52463ff2588d342c5ab05aaeab9be90a7226841632983" }, "downloads": -1, "filename": "mosaik_pypower-0.6.1-py3-none-any.whl", "has_sig": false, "md5_digest": "00b8d724db2f925dd057c68b97641c51", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11536, "upload_time": "2014-06-30T11:20:52", "url": "https://files.pythonhosted.org/packages/16/4a/9935dc8f0295430f4454c8303ccb6d2dedacecd1f47ad90d7541527e04be/mosaik_pypower-0.6.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cd3b3bfcacea35098f6e96b767491718", "sha256": "b373c7a5cd7342311d9c507688c5c10f2fc6cc185d7052b3093ad59b6e1b909f" }, "downloads": -1, "filename": "mosaik-pypower-0.6.1.tar.gz", "has_sig": false, "md5_digest": "cd3b3bfcacea35098f6e96b767491718", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18039, "upload_time": "2014-06-30T11:20:53", "url": "https://files.pythonhosted.org/packages/85/bb/f54d7844d4d8d3fd624299e00091b50f7a2a66b494009b73ed38222bc278/mosaik-pypower-0.6.1.tar.gz" } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "6006dbf76fc20f2271109eaf91b89700", "sha256": "fd020cc12484a12162410233eacedd800b94758a63a04effe9c6ae457c22cbbd" }, "downloads": -1, "filename": "mosaik_pypower-0.6.2-py3-none-any.whl", "has_sig": false, "md5_digest": "6006dbf76fc20f2271109eaf91b89700", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11542, "upload_time": "2014-07-31T14:48:53", "url": "https://files.pythonhosted.org/packages/83/55/6c4f7de92b4ccb903e745a05e80759e4072a250f411e6cc08da383d664b8/mosaik_pypower-0.6.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ba60942dc9dfb3967cffaa77ab99093a", "sha256": "734aa9cf96b461a1796b9ba18348e5c65868b3f44c03a502c8b9149db6b895e2" }, "downloads": -1, "filename": "mosaik-pypower-0.6.2.tar.gz", "has_sig": false, "md5_digest": "ba60942dc9dfb3967cffaa77ab99093a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18107, "upload_time": "2014-07-31T14:48:56", "url": "https://files.pythonhosted.org/packages/68/5b/594e7c022df0ab2c1df9b05ddb993f1d599fa6c2c8f586e5766d6d435a27/mosaik-pypower-0.6.2.tar.gz" } ], "0.6.3": [ { "comment_text": "", "digests": { "md5": "8af4429af627ee1dce4c9493c166ca3c", "sha256": "bc33da2ac47c627eead3ca4358e8732081dea5e32e6569309208014dd2bda957" }, "downloads": -1, "filename": "mosaik_pypower-0.6.3-py3-none-any.whl", "has_sig": false, "md5_digest": "8af4429af627ee1dce4c9493c166ca3c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11536, "upload_time": "2014-09-22T13:29:50", "url": "https://files.pythonhosted.org/packages/34/10/dc212e9d0d0964fb2f52b391085012aca16d629755c94e2803230a2ca6ed/mosaik_pypower-0.6.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3fb88b8de847601e845c76333b734ec5", "sha256": "a5bd912cdf26f5c592b4fb46b6fd49fb907d0dad3d92131ff284402a7c921334" }, "downloads": -1, "filename": "mosaik-pypower-0.6.3.tar.gz", "has_sig": false, "md5_digest": "3fb88b8de847601e845c76333b734ec5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18142, "upload_time": "2014-09-22T13:29:54", "url": "https://files.pythonhosted.org/packages/be/18/c9be3eebf4e283a95699ec366c1143a060339301158afa36eba931e847ca/mosaik-pypower-0.6.3.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "817e9f69355bad5c8485f281f0303c7e", "sha256": "6e9689e5ae551a663bdbae2c0e4fcf60519b017b3d06f13bca1d510e0509a91d" }, "downloads": -1, "filename": "mosaik_pypower-0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "817e9f69355bad5c8485f281f0303c7e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 22882, "upload_time": "2014-10-28T13:39:45", "url": "https://files.pythonhosted.org/packages/59/1c/2b129e0113af7a6e4afd83dd55fefdaea724293ac19b3d3cacee3bba7a39/mosaik_pypower-0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f1fbf194d76934a5c74754df78df2264", "sha256": "c456d9815184b3ae021440c78bc4cb0e316059b21b76fff2c259ae18f42705ff" }, "downloads": -1, "filename": "mosaik-pypower-0.7.tar.gz", "has_sig": false, "md5_digest": "f1fbf194d76934a5c74754df78df2264", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25233, "upload_time": "2014-10-28T13:39:42", "url": "https://files.pythonhosted.org/packages/98/49/ad688e92fd568c9d39293edc36c77a101bd33c88213300e803441b0c1683/mosaik-pypower-0.7.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "588624dab9658747effec8bbcf678fc0", "sha256": "cb9ac6e71e9208981700df0f8e237216839c7eed00565383f41239128b02c100" }, "downloads": -1, "filename": "mosaik_pypower-0.7.1-py3-none-any.whl", "has_sig": false, "md5_digest": "588624dab9658747effec8bbcf678fc0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23031, "upload_time": "2016-02-15T14:38:24", "url": "https://files.pythonhosted.org/packages/44/9e/a3fd5e15e70a7ea8a5b2948533475243b14103f952b410ea73f4f7bab3c8/mosaik_pypower-0.7.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5ef66a8e0384fa3c10defd8e56ab8d26", "sha256": "2e7b501d945062c4e2a5e6d2b887797572215c2765e50c866ea3bb52e7821520" }, "downloads": -1, "filename": "mosaik-pypower-0.7.1.tar.gz", "has_sig": false, "md5_digest": "5ef66a8e0384fa3c10defd8e56ab8d26", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25324, "upload_time": "2016-02-15T14:38:29", "url": "https://files.pythonhosted.org/packages/e3/1a/577c5a73ef5ad2ea5254e1eb67317bf4a1ca66f44d6138638231753952b2/mosaik-pypower-0.7.1.tar.gz" } ], "0.7.2": [ { "comment_text": "", "digests": { "md5": "87c0815fd2ec88b6b6116dc336f764a2", "sha256": "84c238a382c60752133e3236f783d420762766e602b0f2373b2fc72d3053fc29" }, "downloads": -1, "filename": "mosaik_pypower-0.7.2-py3-none-any.whl", "has_sig": false, "md5_digest": "87c0815fd2ec88b6b6116dc336f764a2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23263, "upload_time": "2017-08-16T09:02:23", "url": "https://files.pythonhosted.org/packages/71/a6/d6efabb65f2cbb63fd46fced61ce729bb7ddf343ff5906a563c7d37a1687/mosaik_pypower-0.7.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dd21f9602276459c74b1f28cefbc68a0", "sha256": "39157f8f8563a94489bda8c46104a3ce11b9c4e10977d12a9f0d46a5afb3c0f4" }, "downloads": -1, "filename": "mosaik-pypower-0.7.2.tar.gz", "has_sig": false, "md5_digest": "dd21f9602276459c74b1f28cefbc68a0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31914, "upload_time": "2017-08-16T09:02:25", "url": "https://files.pythonhosted.org/packages/e3/d3/a8cdd7bc93cadeb920187d6c9f967ef1e89707b261d4cf16c9a921ec7808/mosaik-pypower-0.7.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "87c0815fd2ec88b6b6116dc336f764a2", "sha256": "84c238a382c60752133e3236f783d420762766e602b0f2373b2fc72d3053fc29" }, "downloads": -1, "filename": "mosaik_pypower-0.7.2-py3-none-any.whl", "has_sig": false, "md5_digest": "87c0815fd2ec88b6b6116dc336f764a2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23263, "upload_time": "2017-08-16T09:02:23", "url": "https://files.pythonhosted.org/packages/71/a6/d6efabb65f2cbb63fd46fced61ce729bb7ddf343ff5906a563c7d37a1687/mosaik_pypower-0.7.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dd21f9602276459c74b1f28cefbc68a0", "sha256": "39157f8f8563a94489bda8c46104a3ce11b9c4e10977d12a9f0d46a5afb3c0f4" }, "downloads": -1, "filename": "mosaik-pypower-0.7.2.tar.gz", "has_sig": false, "md5_digest": "dd21f9602276459c74b1f28cefbc68a0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31914, "upload_time": "2017-08-16T09:02:25", "url": "https://files.pythonhosted.org/packages/e3/d3/a8cdd7bc93cadeb920187d6c9f967ef1e89707b261d4cf16c9a921ec7808/mosaik-pypower-0.7.2.tar.gz" } ] }