{ "info": { "author": "Benjamin Piwowarski", "author_email": "benjamin@piwowarski.fr", "bugtrack_url": null, "classifiers": [], "description": "[![CircleCI](https://circleci.com/gh/experimaestro/experimaestro-python.svg?style=svg)](https://circleci.com/gh/experimaestro/experimaestro-python)\n[![PyPI version](https://badge.fury.io/py/experimaestro.svg)](https://badge.fury.io/py/experimaestro)\n\nExperimaestro is a computer science experiment manager whose goals are:\n\n* To decompose experiments into a set of parameterizable tasks\n* Schedule tasks and handle dependencies between tasks\n* Avoids to re-run the same task two times by computing unique task IDs dependending on the parameters\n* Handle experimental parameters through tags\n\nFull documentation can be found in [https://experimaestro.github.io/experimaestro-python/](https://experimaestro.github.io/experimaestro-python/)\n\n# Install\n\nExperimaestro depends on external libraries [Poco](https://pocoproject.org/) and [libssh](https://www.libssh.org/). \nYou can install them using\n\n- on Mac or Linux (user) `brew install poco libssh` \n- on Debian/Ubuntu Linux (root) `apt-get install libpoco-dev libssh-dev`\n\nYou can then install the package using `pip install experimaestro`\n\n# Example\n\nThis very simple example shows how to submit two tasks that add two numbers.\nUnder the curtain, \n\n- A directory is created for each task (in `workdir/jobs/helloworld.add`)\n based on a unique ID computed from the parameters\n- Two processes are launched (there are no dependencies, so they will be run in parallel)\n- A tag `y` is created for each task - tags are experimental parameters you vary in your experiments,\n so you can easily keep track of them\n\n```python\n\n# --- Task and types definitions\n\nimport logging\nfrom experimaestro import *\nfrom experimaestro.click import cli, TASK_PREFIX\nimport click\n\n# --- Define the tasks\n\nhw = Typename(\"helloworld\")\n\n@Type(\"word\", type=str, required=True, help=\"Word to generate\")\n@RegisterTask(hw.say, prefix_args=TASK_PREFIX)\nclass Say:\n def execute(self):\n print(self.word.upper(),)\n\n@Type(\"strings\", type=ArrayOf(Say), help=\"Strings to concat\")\n@RegisterTask(hw.concat, prefix_args=TASK_PREFIX)\nclass Concat:\n def execute(self):\n # We access the file where standard output was stored\n says = []\n for string in self.strings:\n with open(string._stdout()) as fp:\n says.append(fp.read().strip())\n print(\" \".join(says))\n\n\n# --- Defines the experiment\n\n@click.argument(\"workdir\", type=str)\n@cli.command()\ndef xp(workdir):\n # Sets the working directory and the name of the xp\n experiment(workdir, \"helloworld\")\n\n # Submit the tasks\n hello = Say(word=\"hello\").submit()\n world = Say(word=\"world\").submit()\n\n # Concat will depend on the two first tasks\n Concat(strings=[hello, world]).submit()\n\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/experimaestro/experimaestro", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "experimaestro", "package_url": "https://pypi.org/project/experimaestro/", "platform": "", "project_url": "https://pypi.org/project/experimaestro/", "project_urls": { "Homepage": "http://github.com/experimaestro/experimaestro" }, "release_url": "https://pypi.org/project/experimaestro/0.3.2/", "requires_dist": null, "requires_python": "", "summary": "Computer science experiment manager - experimental plans, job scheduling, parameter handling", "version": "0.3.2" }, "last_serial": 5996559, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "4d9764571eba2e62d119525871bc6b49", "sha256": "91cfaf5aa752083c4b24c19de3b44b50f25b42412d36f927d5745632ce09dab2" }, "downloads": -1, "filename": "experimaestro-0.1.0-py3.7-linux-x86_64.egg", "has_sig": false, "md5_digest": "4d9764571eba2e62d119525871bc6b49", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 1375428, "upload_time": "2019-02-22T04:50:54", "url": "https://files.pythonhosted.org/packages/1f/b8/14e722e97dd6a7e9801dd1e071e2c8da6ac7fa5866a543965bad84f1c239/experimaestro-0.1.0-py3.7-linux-x86_64.egg" }, { "comment_text": "", "digests": { "md5": "2e2cd09951cc8ae30870b094a3de15f4", "sha256": "5d1b34a3e2868f4a2d0b98419565b73039d73b37d1c45bf49d05c52e919e4d8d" }, "downloads": -1, "filename": "experimaestro-0.1.0.tar.gz", "has_sig": false, "md5_digest": "2e2cd09951cc8ae30870b094a3de15f4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 762085, "upload_time": "2016-12-01T18:45:51", "url": "https://files.pythonhosted.org/packages/37/dd/f1da0188119f3321c9bc463bf1a949383ce8eca1b0ebcec6722aa0635462/experimaestro-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "b7ad1946b89dc6ba2f211e19162f64b1", "sha256": "b6748966b16bb66dcfc2258fb105c49dc4b5fea705d5829a4a66d64e6b9c844f" }, "downloads": -1, "filename": "experimaestro-0.2.0.tar.gz", "has_sig": false, "md5_digest": "b7ad1946b89dc6ba2f211e19162f64b1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 165578, "upload_time": "2017-10-04T15:43:16", "url": "https://files.pythonhosted.org/packages/1c/ec/ecdb90603baaadff2e3d1d063c83707ea93a52fefa1873d3a57218c7437a/experimaestro-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "a609070cb61521022c28a859e23c15ac", "sha256": "ecaa4cde6979dce89fa54085a9ce412a173334bc95a550325536bb718441a3dd" }, "downloads": -1, "filename": "experimaestro-0.3.0.tar.gz", "has_sig": false, "md5_digest": "a609070cb61521022c28a859e23c15ac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5296836, "upload_time": "2019-02-22T04:51:05", "url": "https://files.pythonhosted.org/packages/a5/2d/95a4566535d2285007ad70ffa5d43aaa77a716554b7ead61c296552bc367/experimaestro-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "33d3081f7dfe4932faf95946598fa2b1", "sha256": "323d1952db5997b8d0cd87b11d446f60a197ff09964a2c2ca5be663c0c3e5eeb" }, "downloads": -1, "filename": "experimaestro-0.3.1-cp37-cp37m-manylinux2010_x86_64.whl", "has_sig": false, "md5_digest": "33d3081f7dfe4932faf95946598fa2b1", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 7301073, "upload_time": "2019-09-09T07:48:11", "url": "https://files.pythonhosted.org/packages/01/a9/5ced0538ea21a2ce56f44b7ade6accf080c11e0573315b5a417d9fcf630e/experimaestro-0.3.1-cp37-cp37m-manylinux2010_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "b9e0bb6745b31e064f939b4251a56659", "sha256": "0f6cc7e9ff0033fa15422e9b239d1f339c7a7e88ce5b4d31f3e589032ac090f7" }, "downloads": -1, "filename": "experimaestro-0.3.1.tar.gz", "has_sig": false, "md5_digest": "b9e0bb6745b31e064f939b4251a56659", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5296957, "upload_time": "2019-02-22T04:58:03", "url": "https://files.pythonhosted.org/packages/a1/c0/f180d011440465671007443c77e9f9a8f3bc50153a98c6d92849640808c6/experimaestro-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "26d9ad2a20dceb4d83c69802ac3f97a0", "sha256": "9f522950c9ab6d36127029686113df18b108d76fbed1565b43669c50e565897a" }, "downloads": -1, "filename": "experimaestro-0.3.2-cp37-cp37m-manylinux2010_x86_64.whl", "has_sig": false, "md5_digest": "26d9ad2a20dceb4d83c69802ac3f97a0", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 7421683, "upload_time": "2019-10-18T16:53:50", "url": "https://files.pythonhosted.org/packages/c0/05/0d8cac420affc2a4440c8ac488df7f571416a19e7f9e69d09c0403950712/experimaestro-0.3.2-cp37-cp37m-manylinux2010_x86_64.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "26d9ad2a20dceb4d83c69802ac3f97a0", "sha256": "9f522950c9ab6d36127029686113df18b108d76fbed1565b43669c50e565897a" }, "downloads": -1, "filename": "experimaestro-0.3.2-cp37-cp37m-manylinux2010_x86_64.whl", "has_sig": false, "md5_digest": "26d9ad2a20dceb4d83c69802ac3f97a0", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 7421683, "upload_time": "2019-10-18T16:53:50", "url": "https://files.pythonhosted.org/packages/c0/05/0d8cac420affc2a4440c8ac488df7f571416a19e7f9e69d09c0403950712/experimaestro-0.3.2-cp37-cp37m-manylinux2010_x86_64.whl" } ] }