{ "info": { "author": "Andreas Simbuerger", "author_email": "simbuerg@fim.uni-passau.de", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Topic :: Software Development :: Testing" ], "description": "# BenchBuild: Empirical-Research Toolkit\n![image](https://travis-ci.org/PolyJIT/benchbuild.svg?branch=master)\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/217af919753b4d16b3760282c1274751)](https://www.codacy.com/app/polyjit/benchbuild_2?utm_source=github.com&utm_medium=referral&utm_content=PolyJIT/benchbuild&utm_campaign=Badge_Grade)\n[![Documentation Status](https://readthedocs.org/projects/pprof-study/badge/?version=master)](http://pprof-study.readthedocs.io/en/master/?badge=master)\n[![codecov](https://codecov.io/gh/PolyJIT/benchbuild/branch/master/graph/badge.svg)](https://codecov.io/gh/PolyJIT/benchbuild)\n[![BCH compliance](https://bettercodehub.com/edge/badge/PolyJIT/benchbuild?branch=master)](https://bettercodehub.com/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nBenchBuild provides a lightweight toolkit to conduct empirical compile-time and run-time experiments.\nStriving to automate all tedious and error-prone tasks, it downloads, configure and builds all supported projects fully automatic and provides tools to wrap the compiler and any resulting binary with a customized measurement.\n\nAll results can be stored as the user desires.\nBenchBuild tracks the execution status of all its managed projects inside an own database.\n\n## Features\n\n- Wrap compilation commands with arbitrary measurement functions written in python.\n- Wrap binary commands with arbitrary measurement functions written in python.\n- Parallel benchmarking using the SLURM cluster manager.\n\n## Installation\n\nBenchBuild is available via PyPI. You can install the latest release with pip.\n```bash\n# Global install\n$ pip install benchbuild\n# Lokal install\n$ pip install --user benchbuild\n# Recommended: Install into a virutalenv.\n$ virtualenv benchbuild\n...\n$ source benchbuild/bin/activate\n...\n$ pip install benchbuild\n```\n\nAfter installation you can start using benchbuild with the frontend `benchbuild`.\nWithout arguments, you will be greeted with the following help output:\n```bash\nbenchbuild 3.3.1.dev1+gf43b2d0\n\nFrontend for running/building the benchbuild study framework.\n\nUsage:\n benchbuild [SWITCHES] [SUBCOMMAND [SWITCHES]] args...\n\nMeta-switches:\n -h, --help Prints this help message and quits\n --help-all Print help messages of all subcommands and quit\n --version Prints the program's version and quits\n\nSwitches:\n -d Enable debugging output\n -v Enable verbose output; may be given multiple times\n\nSubcommands:\n bootstrap Bootstrap benchbuild external dependencies, if possible.; see 'benchbuild bootstrap --help' for more info\n config Manage BenchBuild's configuration.; see 'benchbuild config --help' for more info\n experiment Manage BenchBuild's known experiments.; see 'benchbuild experiment --help' for more info\n log Frontend command to the benchbuild database. ; see 'benchbuild log --help' for more info\n project Manage BenchBuild's known projects.; see 'benchbuild project --help' for more info\n report Generate Reports from the benchbuild db.; see 'benchbuild report --help' for more info\n run Frontend for running experiments in the benchbuild study framework.; see 'benchbuild run --help' for more info\n slurm Generate a SLURM script. ; see 'benchbuild slurm --help' for more info\n```\n\nYou can now start using benchbuild. However, you might want to configure benchbuild to your needs. Therefore, it is recommended to generate a default configuration first.\n```bash\n$ benchbuild config write\n```\n\nThis will place a .benchbuild.yml in the current directory, containing all default values for\nyour system. You can modify the configuration as you wish, most of the configuration options\nare explained with a description in the config file.\n\n### Important configuration options\n\nThe following configuration options are considered to be very important for benchbuild's behavior.\n```\nbuild_dir (BB_BUILD_DIR):\n All generated artifacts will be placed in this directory. By default, it will be cleaned\n at the end of an experiment.\n\ndb (BB_DB_*):\n connect_str (BB_DB_CONNECT_STR):\n You need to place a valid sqlalchemy connect string here. It will be used to establish a\n database connection.\n By default an in-memory SQLite database is used (sqlite:///).\n\nenv (BB_ENV_*):\n ld_library_path (BB_LD_LIBRARY_PATH):\n Modify benchbuild's LD_LIBRARY_PATH variable. You can use this to provide access to\n libraries outside of the system's default library search path.\n path (BB_PATH):\n Modify benchbuild's PATH variable. You can use this to provide access to\n binaries outside of the system's default binary search path.\n home (BB_HOME):\n Modify benchbuild's HOME variable. You can use this to set a custom home\n directory, if the default home is not available to benchbuild.\n\ntest_dir (BB_TEST_DIR):\n Some distributed projects require additional test-inputs that are too big for\n distribution with benchbuild. Therefore, there exists an additional repository (private)\n that contains the input files for these projects. Please contact the authors for access\n to this repository, if you need run-time tests with these projects.\n\ntmp_dir (BB_TMP_DIR):\n BenchBuild will download the source code for all projects into this directory. We avoid\n repeated downloads by caching them here. This directory won't be cleaned and all downloads\n are hashed. If you want to re-download the source, just delete the hash file (or the source file).\n\nunionfs (BB_UNIONFS_*):\n unionfs_enable: (BB_UNIONFS_ENABLE):\n Enable/Disable unionfs features. By default unionfs is switched off. If you enable unionfs,\n all projects will be wrapped in two layers: One read-only layer containing the prepared\n source files and one writeable layer. This way you can easily run different configurations\n without wiping the build-directory completely. As this requires additional setup, it is\n not recommended to be switched on by default.\n```\n\n## Database\n\nBenchBuild stores results/maintenance data about your experiments inside a database.\nWhile a sqlite3 in-memory database is used by default, you might want to provide a more permanent solution to keep your experiment data persistent.\n\n### PostgreSQL\n\nThe preferred way is using a more sophisticated DBMS such as PostgreSQL.\nIf you are using features like SLURM, make sure that your DBMS is reachable from all nodes that might run benchbuild.\n\nSetup your postgres cluster with a user and a database for benchbuild to use.\n\n```sql\nCREATE USER benchbuild;\nCREATE DATABASE benchbuild;\n```\n\nIn the configuration you supply the complete connect-string in sqlalchemy's format, e.g.: `postgresql+psycopg2://benchbuild:benchbuild@localhost:5432/benchbuild`\n\n```yaml\n# .benchbuild.yml\ndb:\n connect_string:\n default: sqlite://\n value: postgresql+psycopg2://benchbuild:benchbuild@localhost:5432/benchbuild\n```\n\n### SQLite\n\nAs mentioned, by default we use an in-memory sqlite database. You can persist this one for your local usage, by supplying a filename in the database configuration.\n\n```yaml\n# .benchbuild.yml\ndb:\n connect_string:\n default: sqlite://\n value: sqlite:////absolute/path/to/sqlite.db\n```\n\n## Advanced Features\n\nAdvanced features require additional packages on your system.\n\n### UnionFS\n\nWe can maintain UnionFS mounts for uchroot-based projects, such as all Gentoo derived projects.\nThis avoids continuous unpacking of the container-filesystem and keeps one unpacked version as\na read-only layer at the bottom of the filesystem-stack.\n\nYou need to configure subuid/subgid ranges in `/etc/subuid` `/etc/subgid` for the user that\nruns `benchbuild` in this mode. In addition, you need a working fuse installation. This involves\nan installation of `libfuse` with its headers.\nThe `benchbuild bootstrap` command may help you with the installation and setup.\n\n## Configuration\n\n`benchbuild` can be configured in various ways: (1) command-line arguments, (2) configuration file in .json format, (3) environment variables.\nYou can dump the current active configuration with the command:\n\n```bash\nbenchbuild run -d\n```\n\n# Documentation\n\nFor detailed API information please refer to the full\n[documentation](https://polyjit.github.io/benchbuild):\n\nYou can dump this information in YAML format using the command:\n```bash\nbenchbuild run -s\n```\n\nIt dumps \\_all\\_ configuration to YAML, even those that are usually derived automatically (like UUIDs).\nIn the future, this will be avoided automatically.\nFor now, you should remove all ID related variables from the resulting YAML file.\nThe configuration file is searched from the current directory upwards automatically.\nSome key configuration variables:\n\n```\n BB_BUILD_DIR The directory we place our temporary artifacts in.\n BB_TMP_DIR The directory we place our downloads in.\n BB_CLEAN Should the build directory be cleaned after the run?\n BB_CONFIG_FILE Where is the config file? If you prefere an absolute location over automatic discovery.\n BB_DB_HOST Hostname of the database\n BB_DB_NAME Name of the database\n BB_DB_USER Username of the database\n BB_DB_PASS Password of the database\n BB_DB_ROLLBACK For testing Rollback all db actions after a run.\n BB_JOBS Number of threads to use for compiling / run-time testing.\n```\n\nYou can set these in the .json config file or directly via environment\nvariables. However, make sure that the values you pass in from the\nenvironment are valid JSON, or the configuration structure may ignore\nyour input (or break).\n\n### SLURM Configuration\n\nIf you want to run experiments in parallel on a cluster managed by\nSLURM, you can use BenchBuild to generate a bash script that is\ncompatible with SLURM's sbatch command. The following settings control\nSLURM's configuration:\n\n```\n BB_SLURM_ACCOUNT The resource account log in to.\n BB_SLURM_CPUS_PER_TASK How many cores/threads should we request per node?\n BB_SLURM_EXCLUSIVE Should we request the node exclusively or share it with other tasks?\n BB_SLURM_MAX_RUNNING We generate array-Jobs. This parameter controls the number of array elements that are allowed to run in parallel.\n BB_SLURM_MULTITHREAD Should Hyper-Threading be enabled or not?\n BB_SLURM_NICE Adjust our priority on the cluster manually.\n BB_SLURM_NICE_CLEAN Adjust the priority of the clean jobs.\n BB_SLURM_NODE_DIR Where can we place our artifacts on the node?\n BB_SLURM_PARTITION Which partition should we run in?\n BB_SLURM_SCRIPT Base name of our resulting batch script.\n BB_SLURM_TIMELIMIT Enforce a timelimit on our batch jobs.\n```\n\n### Gentoo Configuration\n\nBenchBuild supports compile-time experiments on the complete portage\ntree of Gentoo Linux. You need to configure a few settings to make it\nwork:\n\n```\n BB_GENTOO_AUTOTEST_LOC A txt file that lists all gentoo package atoms that should be considered.\n BB_GENTOO_AUTOTEST_FTP_PROXY Proxy server for gentoo downloads.\n BB_GENTOO_AUTOTEST_HTTP_PROXY Proxy server for gentoo downloads.\n BB_GENTOO_AUTOTEST_RSYNC_PROXY Proxy server for gentoo downloads.\n```\n\n#### Convert an automatic Gentoo project to a static one\n\nGentoo projects are generated dynamically based on the `AutoPortage`\nclass found in `pprof.gentoo.portage_gen`. If you want to define\nrun-time tests for a dynamically generated project, you need to convert\nit to a static one, i.e., define a subclass of `AutoPortage` and add it\nto the configuration.\n\n```python\nfrom pprof.projects.gentoo.portage_gen import AutoPortage\n\nclass BZip(AutoPortage):\n NAME = \"app-arch\"\n DOMAIN = \"bzip2\"\n\n def run_tests(self, run):\n \"\"\"Add your custom test routines here.\"\"\"\n```\n\nNow we just need to add this to the plugin registry via `benchbuild`'s\nconfiguration file @ `CFG[\"plugins\"][\"projects\"]`.\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": "https://github.com/PolyJIT/benchbuild", "keywords": "benchbuild experiments run-time", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "benchbuild", "package_url": "https://pypi.org/project/benchbuild/", "platform": "", "project_url": "https://pypi.org/project/benchbuild/", "project_urls": { "Homepage": "https://github.com/PolyJIT/benchbuild" }, "release_url": "https://pypi.org/project/benchbuild/4.0.1/", "requires_dist": [ "dill (>=0.2)", "SQLAlchemy (>=1.0)", "plumbum (>=1.5)", "parse (>=1.6)", "virtualenv (>=13.1)", "psycopg2-binary (>=2.7)", "pandas (>=0.20.3)", "psutil (>=4.0.0)", "sqlalchemy-migrate", "pygtrie (>=2.2)", "pyparsing (>=2.2)", "PyYAML (~=5.1)", "Jinja2 (>=2.2)", "attrs (>=17.4.0)", "urwid (>=2.0.1)" ], "requires_python": "", "summary": "This is the experiment driver for the benchbuild study", "version": "4.0.1" }, "last_serial": 5788278, "releases": { "1.3.2": [ { "comment_text": "", "digests": { "md5": "398262481c2d45d43dc002863d87c102", "sha256": "23fcf39adbcfda7539ffb478520dd8c1625d227596f1a7e7d1cac0086a449f5b" }, "downloads": -1, "filename": "benchbuild-1.3.2.zip", "has_sig": false, "md5_digest": "398262481c2d45d43dc002863d87c102", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 167191, "upload_time": "2018-07-11T22:08:01", "url": "https://files.pythonhosted.org/packages/4d/c5/b4549ca01d0eb4cea3e1b9062e9716ec1a2463893c4ddc945dbe07cb89fc/benchbuild-1.3.2.zip" } ], "2.0": [ { "comment_text": "", "digests": { "md5": "d1cac3261839e1f5a1fa108cdd714492", "sha256": "ee28b326d389f38bb55452f9a31d1aae922cca4fa18eacc5c5e2cf6e6091a502" }, "downloads": -1, "filename": "benchbuild-2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d1cac3261839e1f5a1fa108cdd714492", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 163703, "upload_time": "2017-08-24T11:41:29", "url": "https://files.pythonhosted.org/packages/24/3c/d04cd4dc3cffb73207edd18ef01169716069d082eebea52b4df58bc0297c/benchbuild-2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d68705d4c910f24db24c4457e9b481d3", "sha256": "bb1e2014c80e92bc3b9ae87ae26ecb48839d50fbd5ab8a667614d8ce43acd5d1" }, "downloads": -1, "filename": "benchbuild-2.0.tar.gz", "has_sig": false, "md5_digest": "d68705d4c910f24db24c4457e9b481d3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 105562, "upload_time": "2017-08-24T11:41:31", "url": "https://files.pythonhosted.org/packages/1f/0f/5488ed34612a0a34155f446a0cb830e4f34f034dd88cd1d0699c09f35e6f/benchbuild-2.0.tar.gz" } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "a058fb17bf270eb38bc7c59f8a4d15da", "sha256": "640b2cae94853bf62b8d090d82cb9154dd7f703e5575d80f2256fa5ab80731af" }, "downloads": -1, "filename": "benchbuild-2.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "a058fb17bf270eb38bc7c59f8a4d15da", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 168993, "upload_time": "2017-09-20T08:31:33", "url": "https://files.pythonhosted.org/packages/9b/45/0da4c8d76de2871c3773dc75faa640788b77b5f70a6c64a07e7d2d74fb23/benchbuild-2.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a4f4ad38d220afe3b5b9af8862bdbc8a", "sha256": "022c803e5ad9687acf0a4bdb8a7dd1347df98d028b8a3c482461fb4a0343bd3c" }, "downloads": -1, "filename": "benchbuild-2.0.1.tar.gz", "has_sig": false, "md5_digest": "a4f4ad38d220afe3b5b9af8862bdbc8a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 108568, "upload_time": "2017-09-20T08:31:53", "url": "https://files.pythonhosted.org/packages/09/2d/026bae20578766601e1be468ec6a6da43da4860bb7afa87b58574bc4f913/benchbuild-2.0.1.tar.gz" } ], "2.0.5": [ { "comment_text": "", "digests": { "md5": "9c38507705ae8ffdd0d0720f937304ea", "sha256": "c64d3134074abc5631f12e22004898671010e0e8e600ada43c824f94e6eafc5e" }, "downloads": -1, "filename": "benchbuild-2.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "9c38507705ae8ffdd0d0720f937304ea", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 230335, "upload_time": "2018-04-24T12:39:49", "url": "https://files.pythonhosted.org/packages/44/88/cbe517b8ebcde6dc615fac872e00f35154b455aa525197d3ea3b9a025dd9/benchbuild-2.0.5-py3-none-any.whl" } ], "2.0.6": [ { "comment_text": "", "digests": { "md5": "30369390fb090a136ae8017666b92922", "sha256": "790847b92789cbe5ed1d5cd0ce489dc7e342922230f509aeec7a1b833ea05097" }, "downloads": -1, "filename": "benchbuild-2.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "30369390fb090a136ae8017666b92922", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 230355, "upload_time": "2018-04-24T13:54:17", "url": "https://files.pythonhosted.org/packages/41/84/369f0ed5770b46509734b11075054be59e94508647e0ef753bff95a96d12/benchbuild-2.0.6-py3-none-any.whl" } ], "3.0.0": [ { "comment_text": "", "digests": { "md5": "104103cbd01c2795ce4d5a8f57380375", "sha256": "9a38bea3b9ffeab81f3cddfe5a8cb46b1f3f42b68d9990e2fed4de8bc26d2973" }, "downloads": -1, "filename": "benchbuild-3.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "104103cbd01c2795ce4d5a8f57380375", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 235049, "upload_time": "2018-06-26T16:00:02", "url": "https://files.pythonhosted.org/packages/39/59/5aea17079fbeb50a46d43bb8fbb14dc47ff0599c4030663ce35aaaf492c3/benchbuild-3.0.0-py3-none-any.whl" } ], "3.1.0": [ { "comment_text": "", "digests": { "md5": "f037ac79a37f089a0e493751632260cf", "sha256": "7a79d9bb7d9b8fc1c8479fc929d56a72ccb90aaaee315e46c7b9bb90051ad39b" }, "downloads": -1, "filename": "benchbuild-3.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "f037ac79a37f089a0e493751632260cf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 236630, "upload_time": "2018-06-29T10:34:35", "url": "https://files.pythonhosted.org/packages/21/30/af48da5a47d96a1026f1aec36506fa792051e8e57eab21a9de276d61f7d9/benchbuild-3.1.0-py3-none-any.whl" } ], "3.2.0": [ { "comment_text": "", "digests": { "md5": "121366149ca431a915416afc700a03f0", "sha256": "e6c12773f6d39d617e292bfbb81f9965b47c19e6d0872953d3d4e74cd6361bc6" }, "downloads": -1, "filename": "benchbuild-3.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "121366149ca431a915416afc700a03f0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 240393, "upload_time": "2018-07-09T14:14:18", "url": "https://files.pythonhosted.org/packages/84/ea/0c32ca87baadb82b2d22aad1a94e521b2aad102250285fde4008e1814b1e/benchbuild-3.2.0-py3-none-any.whl" } ], "3.3.0": [ { "comment_text": "", "digests": { "md5": "2602c0330f8c8b9d2023da9074af6211", "sha256": "ad3a0e6ed5fbf572d33af8dec94918a39f54f28fd51e5edf5dc8db56b56d6e10" }, "downloads": -1, "filename": "benchbuild-3.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "2602c0330f8c8b9d2023da9074af6211", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 163323, "upload_time": "2018-07-10T11:54:49", "url": "https://files.pythonhosted.org/packages/45/9d/40d281f9b118c352e8662395bcae3c0b102796db9aa49692e86d1434598c/benchbuild-3.3.0-py3-none-any.whl" } ], "3.3.1": [ { "comment_text": "", "digests": { "md5": "1fb3e7d3e9d4677d1836e8233637c896", "sha256": "6cf3a269c097e367468010730b1714b760bdc83ac941aafe3c633d9593a29d62" }, "downloads": -1, "filename": "benchbuild-3.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "1fb3e7d3e9d4677d1836e8233637c896", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 161105, "upload_time": "2018-07-11T22:07:59", "url": "https://files.pythonhosted.org/packages/77/0c/25602f9c1caa5fe95829ae85c0c81ba1eeaa5b85aef48ff2ac592c30506b/benchbuild-3.3.1-py3-none-any.whl" } ], "3.3.2": [ { "comment_text": "", "digests": { "md5": "cf8c37cba16ae2572394af8b50ba02d4", "sha256": "1f25cb567003ff0544244dd80fbff7bbc9dfe9ba14040c65e8c4840395c4196f" }, "downloads": -1, "filename": "benchbuild-3.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "cf8c37cba16ae2572394af8b50ba02d4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 165319, "upload_time": "2018-07-12T13:56:37", "url": "https://files.pythonhosted.org/packages/bb/66/27ea3aa6cb097c10d370e7fadedcf78e0237b47db9bb3f688f52bc7eabca/benchbuild-3.3.2-py3-none-any.whl" } ], "3.3.3": [ { "comment_text": "", "digests": { "md5": "f28171f16aff68a179edb920c13af5c9", "sha256": "de0b29ecdc8e133d588a3336279c8b00ef41d0c39f7557a8dd99778191d2ddf0" }, "downloads": -1, "filename": "benchbuild-3.3.3-py3-none-any.whl", "has_sig": false, "md5_digest": "f28171f16aff68a179edb920c13af5c9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 165393, "upload_time": "2018-08-14T16:18:37", "url": "https://files.pythonhosted.org/packages/4e/4d/2c288d3b53874f3476bb8e180b5ac41dd246c807eee61c9aa9c95f46a3a8/benchbuild-3.3.3-py3-none-any.whl" } ], "3.3.4": [ { "comment_text": "", "digests": { "md5": "23be5d111f31c81ea54e1ff59eb5b027", "sha256": "6f9ec51de1dcb9d1c6bd36eabd57afc879e21e2253b7919449d4a978b8d70c64" }, "downloads": -1, "filename": "benchbuild-3.3.4-py3-none-any.whl", "has_sig": false, "md5_digest": "23be5d111f31c81ea54e1ff59eb5b027", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 165415, "upload_time": "2018-09-03T11:56:34", "url": "https://files.pythonhosted.org/packages/0d/1b/38096dc92c0640437a378ddf2e350279fd189239d575f0ea9180f1c18009/benchbuild-3.3.4-py3-none-any.whl" } ], "3.4.1": [ { "comment_text": "", "digests": { "md5": "92b2e47395ed697302dd0ed8fceedd36", "sha256": "3806e8bec9a65754451068ad13bb6401b0ef5eb0f0de8470c089fd15c77d830f" }, "downloads": -1, "filename": "benchbuild-3.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "92b2e47395ed697302dd0ed8fceedd36", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 165663, "upload_time": "2018-10-29T09:36:27", "url": "https://files.pythonhosted.org/packages/78/89/5c70171def68aa4b62773d8694c7e580a1cb9ba49a3f703bde7a09d0315f/benchbuild-3.4.1-py3-none-any.whl" } ], "3.4.2": [ { "comment_text": "", "digests": { "md5": "85a28dba96f0a6f10bf12a7fcfb8b98e", "sha256": "dc260e47e4cd84003f8fd6bf338a9d1474cc775317deb83bb0238268374baeb2" }, "downloads": -1, "filename": "benchbuild-3.4.2-py3-none-any.whl", "has_sig": false, "md5_digest": "85a28dba96f0a6f10bf12a7fcfb8b98e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 165732, "upload_time": "2018-11-07T12:27:40", "url": "https://files.pythonhosted.org/packages/8d/ed/b6f1b5e2d2bbc7d59ccb5abc7d2f5be43ea2c91fc7c90dd70787d5cf18e0/benchbuild-3.4.2-py3-none-any.whl" } ], "3.4.3": [ { "comment_text": "", "digests": { "md5": "e7a6b20fe654a6cdbe48e0595dc6a8e7", "sha256": "2262b40bb84f850a0aee2bbaa21b5c8f6bafd11fc39a1df7e75bf65980e8925d" }, "downloads": -1, "filename": "benchbuild-3.4.3-py3-none-any.whl", "has_sig": false, "md5_digest": "e7a6b20fe654a6cdbe48e0595dc6a8e7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 167476, "upload_time": "2019-06-12T12:45:35", "url": "https://files.pythonhosted.org/packages/93/f8/943b953b95732da5fa54558e4c43429c102bc8f46e134456ff1c93b563a1/benchbuild-3.4.3-py3-none-any.whl" } ], "3.5": [ { "comment_text": "", "digests": { "md5": "e66e17c6396479e9058ae8388f4d75f0", "sha256": "a10b28682950166ee9be3c9a4a76e9f4ea61ec222cf7749d512d784d99b1f59e" }, "downloads": -1, "filename": "benchbuild-3.5-py3-none-any.whl", "has_sig": false, "md5_digest": "e66e17c6396479e9058ae8388f4d75f0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 167255, "upload_time": "2019-04-29T21:08:54", "url": "https://files.pythonhosted.org/packages/ea/2e/7ebd969e20fa6f880f2378a943ac643f4e7ee87a0531e3fe8ea79b674a56/benchbuild-3.5-py3-none-any.whl" } ], "3.5.1": [ { "comment_text": "", "digests": { "md5": "d23ddfc1dbe3258c259125e9eff7d77d", "sha256": "af6d79ba138564512c168032e33d50ce789463e4bb03d46ce0ad9b436aa0bbd7" }, "downloads": -1, "filename": "benchbuild-3.5.1-py3-none-any.whl", "has_sig": false, "md5_digest": "d23ddfc1dbe3258c259125e9eff7d77d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 167475, "upload_time": "2019-06-12T12:56:15", "url": "https://files.pythonhosted.org/packages/88/e6/994e8e0d2be8284133f4542086ddfdddbfb265dfbb5f843a57993a7c5c26/benchbuild-3.5.1-py3-none-any.whl" } ], "4.0": [ { "comment_text": "", "digests": { "md5": "97cca4ca1c50d452dab2da73416cdf56", "sha256": "7254e38d3a01c85d34a0d9e06559e2a45602a58aeba68aae70ab70f749cf6fc0" }, "downloads": -1, "filename": "benchbuild-4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "97cca4ca1c50d452dab2da73416cdf56", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 167187, "upload_time": "2019-08-01T22:14:05", "url": "https://files.pythonhosted.org/packages/52/c7/44107873b8eb195842ac89c9cd0c0f863c7b0a2a1bc57ecfe51e56cd985c/benchbuild-4.0-py3-none-any.whl" } ], "4.0.1": [ { "comment_text": "", "digests": { "md5": "435d37168f67198e825df568d7add920", "sha256": "b2e1770cab7065ee38cf2f455f89596eb9abf3b412e923c7929e8067c2d6fc7d" }, "downloads": -1, "filename": "benchbuild-4.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "435d37168f67198e825df568d7add920", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 167225, "upload_time": "2019-09-05T20:30:52", "url": "https://files.pythonhosted.org/packages/4d/57/61214666250eca631df917d93721f0457739856c965516a58869486ae664/benchbuild-4.0.1-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "435d37168f67198e825df568d7add920", "sha256": "b2e1770cab7065ee38cf2f455f89596eb9abf3b412e923c7929e8067c2d6fc7d" }, "downloads": -1, "filename": "benchbuild-4.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "435d37168f67198e825df568d7add920", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 167225, "upload_time": "2019-09-05T20:30:52", "url": "https://files.pythonhosted.org/packages/4d/57/61214666250eca631df917d93721f0457739856c965516a58869486ae664/benchbuild-4.0.1-py3-none-any.whl" } ] }