{ "info": { "author": "Matthias Hotz", "author_email": "matthias.hotz@tum.de", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Science/Research", "License :: OSI Approved :: BSD License", "Programming Language :: Python :: 3 :: Only", "Topic :: Scientific/Engineering" ], "description": "# Welcome to *hynet*\n\n*hynet* is a package for the computation of the optimal power flow (OPF) in hybrid AC/DC power systems, i.e., the cost- or loss-minimizing allocation of generation resources and the corresponding system state to serve a given load while satisfying the system's technical boundary conditions. *hynet* supports power systems that comprise an arbitrary interconnection of AC grids and radial DC grids, i.e., point-to-point and radial multi-terminal HVDC systems. With respect to OPF methods, it supports the solution of the nonconvex quadratically constrained quadratic program (QCQP) as well as its semidefinite relaxation (SDR) and second-order cone relaxation (SOCR). For more information, please refer to *hynet*'s documentation ([HTML](https://hynet.readthedocs.io)/[PDF](https://readthedocs.org/projects/hynet/downloads/pdf/latest/)) for a description the software and [this paper](https://arxiv.org/abs/1811.10496) for the mathematical background. *hynet* uses [SQLite](https://www.sqlite.org)-based SQL databases to store grid infrastructure and scenario information. A library with several grid databases is provided [here](https://gitlab.com/tum-msv/hynet-databases).\n\n\n## Installation\n\n*hynet* was developed for Python 3.5 and higher and requires [NumPy](http://www.numpy.org/), [SciPy](https://www.scipy.org/), [pandas](https://pandas.pydata.org/), [SQLAlchemy](https://www.sqlalchemy.org/), [Matplotlib](https://matplotlib.org/), [tqdm](https://github.com/tqdm/tqdm), [h5py](https://www.h5py.org/) as well as at least one of the supported [solvers](#solvers). For a convenient installation, the Python distribution [Anaconda](http://www.anaconda.com/download/) (or the stripped-down [Miniconda](https://conda.io/miniconda.html)) may be used, where the included package manager [Conda](https://conda.io) supports a straightforward installation of the supported solvers.\n\n\nTo install *hynet* using Python's package management system, run\n\n```sh\npip install hynet\n```\n\nThe installation of *hynet* and the installed [solvers](#solvers) can be tested with\n\n```sh\npython -m hynet test\n```\n\nTo install *hynet* from its sources, get the latest source code by cloning the *hynet* repository with [Git](https://git-scm.com/) via\n\n```sh\ngit clone https://gitlab.com/tum-msv/hynet.git\n```\n\nand initiate the installation with\n\n```sh\npython setup.py install\n```\n\n\n### Solvers\n\nIn the following, the supported solvers are listed. **Currently, the utilization of the following solvers is recommended: IPOPT for the QCQP, MOSEK for the SDR, and MOSEK or CPLEX for the SOCR.** Regarding the latter, it was found empirically that CPLEX is more robust while MOSEK is computationally more efficient. Please note that **even if only QCQPs are solved, it is recommended to install MOSEK or CPLEX**, as they enable the efficient computation of an initial point for QCQP solvers.\n\n\n#### IPOPT\n\n[IPOPT](https://projects.coin-or.org/Ipopt) is an open-source software package for large-scale nonlinear optimization and [CYIPOPT](https://github.com/matthias-k/cyipopt) is a Python wrapper for IPOPT. With [Conda](https://conda.io), both can be installed as follows.\n\n* Linux and MAC OS X:\n\n```sh\nconda install -c conda-forge cyipopt\n```\n\n* Windows:\n\n```sh\nconda install -c pycalphad cyipopt\n```\n\n#### MOSEK\n\n[MOSEK](http://www.mosek.com) is an interior-point optimizer for large-scale conic optimization problems. It is commercial, but offers a [free academic license](https://www.mosek.com/products/academic-licenses/). With [Conda](https://conda.io), MOSEK can be installed with\n\n```sh\nconda install -c mosek mosek\n```\n\n*hynet*'s SDR solver interface for MOSEK supports a [chordal conversion](http://epubs.siam.org/doi/abs/10.1137/S1052623400366218) of the semidefinite program to enable the computation of the SDR for medium- and large-scale systems with a viable computational effort. To utilize the chordal SDR, [CHOMPACK](http://github.com/cvxopt/chompack), a library for chordal matrix computations, and [CVXOPT](http://cvxopt.org), a Python package for convex optimization, are required. With Python's package management system, both can be installed with\n\n```sh\npip install chompack cvxopt\n```\n\n\n#### IBM ILOG CPLEX\n\n[CPLEX](http://www.ibm.com/analytics/cplex-optimizer) is a high-performance mathematical programming solver for linear, mixed integer, quadratic, and quadratically constrained programming problems. It is commercial, but offers a [free academic license](http://www.ibm.com/products/ilog-cplex-optimization-studio) through the [IBM Academic Initiative](https://ibm.biz/academic). For the installation, please refer to the instructions provided with CPLEX as well as the section \"Setting up the Python API of CPLEX\" of the CPLEX documentation.\n\n\n#### PICOS\n\n*hynet* supports the solution of the SDR and SOCR with [PICOS](http://picos.zib.de/index.html). However, the additional modeling layer causes a performance drawback. [PICOS](http://picos.zib.de/index.html) is an open-source Python-based modeling language for linear and conic optimization problems. It supports several solvers, including the open-source solver [CVXOPT](http://cvxopt.org). With Python's package management system, PICOS and CVXOPT can be installed with\n\n```sh\npip install picos cvxopt\n```\n\n\n#### PYOMO\n\n*hynet* supports the solution of the QCQP with [Pyomo](http://www.pyomo.org/). However, the additional modeling layer causes a performance drawback. Furthermore, the import of Pyomo is demanding and **slows down the import** of *hynet* significantly, thus the installation is only recommended if Pyomo is actually utilized. [Pyomo](http://www.pyomo.org/) is an open-source optimization modeling language and includes support for the solver [IPOPT](https://projects.coin-or.org/Ipopt). With [Conda](https://conda.io), both can be installed with\n\n```sh\nconda install -c conda-forge pyomo libgfortran\nconda install -c cachemeorg ipopt_bin\n```\n\n\n## Usage\n\nOpen a terminal, navigate to the directory that contains the [grid databases](https://gitlab.com/tum-msv/hynet-databases), and start a Python shell, either the standard shell (``python``) or a more convenient one like [IPython](https://ipython.org) or [ptpython](https://github.com/jonathanslenders/ptpython). At the Python command prompt, import *hynet* via\n\n```python\nimport hynet as ht\n```\n\nTo access the data of the system in the file ``pjm_hybrid.db``, connect to this database using\n\n```python\ndatabase = ht.connect('pjm_hybrid.db')\n```\n\nThe optimal power flow for the default scenario of this system can then be calculated with\n\n```python\nresult = ht.calc_opf(database)\n```\n\nThe object ``result`` contains all result data. For example, to print a summary, print details of the solution, and access the determined bus voltages, type\n\n```python\nprint(result)\nprint(result.details)\nresult.bus['v']\n```\n\nBy default, *hynet* selects the most appropriate QCQP solver among those installed. To specify the type of solver explicitly, set the ``solver_type`` as illustrated below.\n\n```python\nht.calc_opf(database, solver_type=ht.SolverType.QCQP)\nht.calc_opf(database, solver_type=ht.SolverType.SDR)\nht.calc_opf(database, solver_type=ht.SolverType.SOCR)\n```\n\nIn case that the scenario shall be modified prior to the OPF calculation, it can be loaded explicitly via\n\n```python\nscenario = ht.load_scenario(database)\n```\n\nFor example, to set the load at bus 2 to 100MW and 50Mvar, use\n\n```python\nscenario.bus.at[2, 'load'] = 100 + 50j\n```\n\nThe optimal power flow for this modified scenario can be calculated with\n\n```python\nht.calc_opf(scenario)\n```\n\nFor more information and usage examples, please refer to the tutorials in [USAGE.md](https://gitlab.com/tum-msv/hynet/blob/master/USAGE.md), *hynet*'s documentation ([HTML](https://hynet.readthedocs.io)/[PDF](https://readthedocs.org/projects/hynet/downloads/pdf/latest/)), and [this paper](https://arxiv.org/abs/1811.10496).\n\n\n## Contributing\n\nContributions to *hynet* are very welcome. Please refer to [CONTRIBUTING.md](https://gitlab.com/tum-msv/hynet/blob/master/CONTRIBUTING.md) for more information. In case that *hynet* is useful to you, we would appreciate if you star this project.\n\n\n## Credits\n\nThis software was developed at the [Professur f\u00fcr Methoden der Signalverarbeitung](http://www.msv.ei.tum.de/), [Technische Universit\u00e4t M\u00fcnchen](https://www.tum.de/) (TUM). The principal developer and project maintainer is Matthias Hotz (@matthias_hotz), who would like to recognize the highly appreciated support of the following contributors:\n\n- Vincent Bode (TUM): Database management, network graph export\n- Michael Mitterer (TUM): Distributed computation, MATPOWER import, database management\n- Christian Wahl (TUM): Capability region visualizer, CI configuration\n- Yangyang He (TUM): CVXPY and PICOS solver interface\n- Julia Sistermanns (TUM): Feature- and structure-preserving network reduction\n\n\n## Citation\n\nIn case that *hynet* is used in the preparation of a scientific publication, we would appreciate the citation of the following work:\n\n> M. Hotz and W. Utschick, \"*hynet:* An optimal power flow framework for hybrid AC/DC power systems,\" arXiv:1811.10496, Nov. 2018. \\[Online\\]. Available: [http://arxiv.org/abs/1811.10496](http://arxiv.org/abs/1811.10496)\n\nThe corresponding BibTeX entry is provided below.\n\n```\n@article{Hotz2018,\n Author = {Matthias Hotz and Wolfgang Utschick},\n Journal = {arXiv:1811.10496},\n Month = {Nov.},\n Title = {\\textit{{hynet}:} {A}n Optimal Power Flow Framework for Hybrid {AC}/{DC} Power Systems},\n Url = {http://arxiv.org/abs/1811.10496v1},\n Year = {2018}}\n```\n\nFurthermore, in case that the feature- and structure-preserving network reduction functionality in *hynet* is utilized, we would appreciate the citation of the following work:\n\n> J. Sistermanns, M. Hotz, D. Hewes, R. Witzmann, and W. Utschick, \"[Feature- and Structure-Preserving Network Reduction for Large-Scale Transmission Grids](http://arxiv.org/abs/1903.11590),\" 13th IEEE PES PowerTech Conf., Milano, Italy, Jun. 2019.\n\n\n## License\n\n[BSD 3-clause license](https://gitlab.com/tum-msv/hynet/blob/master/LICENSE)", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://www.msv.ei.tum.de/", "keywords": "hybrid AC/DC power systems optimal power flow convex relaxation", "license": "BSD 3-clause license", "maintainer": "", "maintainer_email": "", "name": "hynet", "package_url": "https://pypi.org/project/hynet/", "platform": "", "project_url": "https://pypi.org/project/hynet/", "project_urls": { "Homepage": "http://www.msv.ei.tum.de/" }, "release_url": "https://pypi.org/project/hynet/1.2.1/", "requires_dist": null, "requires_python": ">=3.5", "summary": "An optimal power flow framework for hybrid AC/DC power systems.", "version": "1.2.1" }, "last_serial": 5755357, "releases": { "0.9.8": [ { "comment_text": "", "digests": { "md5": "291e044d60e1fb7f5fbafd3466e8b230", "sha256": "129b539bca0d45c69371e058d7f02bf791948d9c5b9c35d054b6cab19c59afe7" }, "downloads": -1, "filename": "hynet-0.9.8-py3-none-any.whl", "has_sig": false, "md5_digest": "291e044d60e1fb7f5fbafd3466e8b230", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 148961, "upload_time": "2018-10-19T14:06:31", "url": "https://files.pythonhosted.org/packages/32/5a/8f736b24bb6a8bc4ca0c4e4590e723f0a20395d89b947fabba73f421482d/hynet-0.9.8-py3-none-any.whl" } ], "0.9.9": [ { "comment_text": "", "digests": { "md5": "168d233282fe7195dcfa8bd65b9c95ce", "sha256": "474358ba02a3c5b6831b6514672f2f382aba50f36f2e240f0ce00e67e741ac60" }, "downloads": -1, "filename": "hynet-0.9.9-py3-none-any.whl", "has_sig": false, "md5_digest": "168d233282fe7195dcfa8bd65b9c95ce", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 149999, "upload_time": "2018-11-05T12:27:50", "url": "https://files.pythonhosted.org/packages/de/b6/3b932d860bfa6d1dbf5ce4150b0cc7016941780475d37a9fdd646deb7881/hynet-0.9.9-py3-none-any.whl" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "bacfcd696e364c683d4c6f542d456408", "sha256": "d214740d2d39065046d672371e5e424e7a4e68098910f9cf9e015694cabf163a" }, "downloads": -1, "filename": "hynet-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "bacfcd696e364c683d4c6f542d456408", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 150173, "upload_time": "2018-11-27T10:38:23", "url": "https://files.pythonhosted.org/packages/4e/97/d153d3ae3f11657de7b780196908496bd9fbf4fb1d7bf4c008006b38ac5d/hynet-1.0.0-py3-none-any.whl" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "233d6ed1c68a3bdfab72c6dc15e43195", "sha256": "d30f63dd2d4f86820c2b5079bed8cc24278f7d1528b5eb740b0904f390eb7fff" }, "downloads": -1, "filename": "hynet-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "233d6ed1c68a3bdfab72c6dc15e43195", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 150132, "upload_time": "2018-11-29T14:26:16", "url": "https://files.pythonhosted.org/packages/fd/4e/b0ff873a8d1b2e99c82317caeaba8ee5a6b5853216aa2a8232a1cbc28173/hynet-1.0.1-py3-none-any.whl" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "ab76641605431661ae5ba8b2b9e3e8ed", "sha256": "cbbe61d16c90b6cea900ebc4c21201a80b305020111f6aeccf73b3d9788e467b" }, "downloads": -1, "filename": "hynet-1.0.2.tar.gz", "has_sig": false, "md5_digest": "ab76641605431661ae5ba8b2b9e3e8ed", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 132593, "upload_time": "2018-12-07T17:42:02", "url": "https://files.pythonhosted.org/packages/65/46/0e34cfb1567ae44cad2e0821dda2e55c1fa7bbaeff603ff127bf8ec90019/hynet-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "eefb636fea90e55254ed4fd48a36c2fa", "sha256": "05ccfd597f5563909ffce73ef8b4a9885fc1d0e85a120e082f9acfc439826efd" }, "downloads": -1, "filename": "hynet-1.0.3.tar.gz", "has_sig": false, "md5_digest": "eefb636fea90e55254ed4fd48a36c2fa", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 132902, "upload_time": "2018-12-11T13:54:14", "url": "https://files.pythonhosted.org/packages/9a/31/c7b91bc327f868f32599d3d494a01a9f7a7113dee91b1688270bccc5a853/hynet-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "141947e7172699f610e521fb3ede683d", "sha256": "6fc819dee96bf4a1a28735cb3ad254e48d5808b24ed51ca6bb941e0135dbe8cb" }, "downloads": -1, "filename": "hynet-1.0.4.tar.gz", "has_sig": false, "md5_digest": "141947e7172699f610e521fb3ede683d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 133626, "upload_time": "2018-12-28T17:01:37", "url": "https://files.pythonhosted.org/packages/cc/7f/7caa652fb90862766eb17bce06392e86775eee771c67e99bad34bb6d50d7/hynet-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "f69fc97ca05a8d3237d8263a5918dd56", "sha256": "a9500818c388c1b633046c430f1777d6c07f25bb374e6e5700cbc02b4a48d5ac" }, "downloads": -1, "filename": "hynet-1.0.5.tar.gz", "has_sig": false, "md5_digest": "f69fc97ca05a8d3237d8263a5918dd56", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 137944, "upload_time": "2019-01-10T14:48:30", "url": "https://files.pythonhosted.org/packages/92/2e/d4a3509c8bf53680a61efc621e810db6d0aa817313e825c80144b9424e7d/hynet-1.0.5.tar.gz" } ], "1.0.6": [ { "comment_text": "", "digests": { "md5": "ddd420c957edcf8ff553542c4133c3cb", "sha256": "7ebf308247251a97bf56907d919be76b62486c819a543cb208d6f242da6d47c3" }, "downloads": -1, "filename": "hynet-1.0.6.tar.gz", "has_sig": false, "md5_digest": "ddd420c957edcf8ff553542c4133c3cb", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 138081, "upload_time": "2019-01-10T18:01:40", "url": "https://files.pythonhosted.org/packages/9e/f0/7d4113eaaa30edd131fe84a227112e7caa0c90720a9b44ee0c57a5854f69/hynet-1.0.6.tar.gz" } ], "1.0.7": [ { "comment_text": "", "digests": { "md5": "85d20efadba9d73c9657b1368eb3cc7a", "sha256": "6a392f3cf97082c2f5f0c5aff5604b345d864041277e963043b2b5fbbcd38b51" }, "downloads": -1, "filename": "hynet-1.0.7.tar.gz", "has_sig": false, "md5_digest": "85d20efadba9d73c9657b1368eb3cc7a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 138965, "upload_time": "2019-02-05T21:48:54", "url": "https://files.pythonhosted.org/packages/04/d2/5a1d1f39c33be587ac009492c2d8f9a6d079fcde894f4d0fdf60016a16d5/hynet-1.0.7.tar.gz" } ], "1.0.8": [ { "comment_text": "", "digests": { "md5": "b2a2aeb44a19256274f45cf7d54716f8", "sha256": "daf2eb337c33027acaf4496310965b06b003f4ed10b736d70c4f007a094218fb" }, "downloads": -1, "filename": "hynet-1.0.8.tar.gz", "has_sig": false, "md5_digest": "b2a2aeb44a19256274f45cf7d54716f8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 139352, "upload_time": "2019-02-26T14:02:25", "url": "https://files.pythonhosted.org/packages/49/8a/1412cf98ad4938dfe70c3029ebabf482f863cb4bf46af9b339d8c8a41225/hynet-1.0.8.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "008eec402d18351330ed8994e9da9761", "sha256": "1ab7283ec04408585f673d12953b404b9c038db78de412dc9c5ab7c8a7ca4e42" }, "downloads": -1, "filename": "hynet-1.1.0.tar.gz", "has_sig": false, "md5_digest": "008eec402d18351330ed8994e9da9761", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 157584, "upload_time": "2019-03-28T11:22:07", "url": "https://files.pythonhosted.org/packages/2c/ea/3714cbc81a88152d81d648bbd138874530f6ee9ce574565f3abf6a4d5b32/hynet-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "3a4136b64901206cb15115960bf2002f", "sha256": "8aa808d199415a479bf2fe25120bc1cc122b65a1850926622b5a89d132b4e2fd" }, "downloads": -1, "filename": "hynet-1.1.1.tar.gz", "has_sig": false, "md5_digest": "3a4136b64901206cb15115960bf2002f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 164562, "upload_time": "2019-05-17T13:27:52", "url": "https://files.pythonhosted.org/packages/5d/10/6b89c13e16d4becc3d28b0dbdae1fad95150249f84597fef452acea61685/hynet-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "be4fee58eae6e4612b78c0b67aafd49d", "sha256": "f7ea503427bb82f0f32121cfaea317353264b72ef1f409655eab17c38914c66e" }, "downloads": -1, "filename": "hynet-1.1.2.tar.gz", "has_sig": false, "md5_digest": "be4fee58eae6e4612b78c0b67aafd49d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 171262, "upload_time": "2019-06-07T21:52:57", "url": "https://files.pythonhosted.org/packages/97/a7/968c7799a0dd46072dda78ecbeeee4eb4f9d998bc3fffadff238211e20f7/hynet-1.1.2.tar.gz" } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "55133c192d3c4ea757522ffe014e2c61", "sha256": "ba4762f39284dedec176dca721c1653ece599b1727636348d473384d9b897841" }, "downloads": -1, "filename": "hynet-1.1.3.tar.gz", "has_sig": false, "md5_digest": "55133c192d3c4ea757522ffe014e2c61", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 171587, "upload_time": "2019-06-13T09:38:30", "url": "https://files.pythonhosted.org/packages/66/fd/4ed10ba6f194423370fcfcc6903a260ee0b43bdd1c35e65a65078326275e/hynet-1.1.3.tar.gz" } ], "1.1.4": [ { "comment_text": "", "digests": { "md5": "2b2fd8bdc514f2943807152943a32e8f", "sha256": "443d76956200b919a25dd2d17e0ac979d4c733a5e2de47be79ceacb7521123cb" }, "downloads": -1, "filename": "hynet-1.1.4.tar.gz", "has_sig": false, "md5_digest": "2b2fd8bdc514f2943807152943a32e8f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 172230, "upload_time": "2019-06-24T09:20:04", "url": "https://files.pythonhosted.org/packages/52/2e/266d24ca02e1fdf69a05e4f06979604e6cc67e39bb3bcf2855d7cf341a90/hynet-1.1.4.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "a3cdc23ade02bdf3425e5682405a19ce", "sha256": "acdf37847d7d09c1c0da7a0d66b88076e2cdf5257727dba2347cc72a70d905cb" }, "downloads": -1, "filename": "hynet-1.2.0.tar.gz", "has_sig": false, "md5_digest": "a3cdc23ade02bdf3425e5682405a19ce", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 196204, "upload_time": "2019-08-19T16:44:54", "url": "https://files.pythonhosted.org/packages/37/91/a22b4c3d59873e3ec31927ddef3d8f363c1daf4105b2860a1e870d58e558/hynet-1.2.0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "184d7a00fbd4aa950014bb8a65444356", "sha256": "04b989dfc08b86f1f7638ee3c2377540f74f3293a2b83a8a30b2dd18a4e47e90" }, "downloads": -1, "filename": "hynet-1.2.1.tar.gz", "has_sig": false, "md5_digest": "184d7a00fbd4aa950014bb8a65444356", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 196403, "upload_time": "2019-08-29T16:27:10", "url": "https://files.pythonhosted.org/packages/0d/6a/4a3afce0b7ac44c3c2df52c70070bff33c6b2dfd8703e5504cff29f8ed71/hynet-1.2.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "184d7a00fbd4aa950014bb8a65444356", "sha256": "04b989dfc08b86f1f7638ee3c2377540f74f3293a2b83a8a30b2dd18a4e47e90" }, "downloads": -1, "filename": "hynet-1.2.1.tar.gz", "has_sig": false, "md5_digest": "184d7a00fbd4aa950014bb8a65444356", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 196403, "upload_time": "2019-08-29T16:27:10", "url": "https://files.pythonhosted.org/packages/0d/6a/4a3afce0b7ac44c3c2df52c70070bff33c6b2dfd8703e5504cff29f8ed71/hynet-1.2.1.tar.gz" } ] }