{ "info": { "author": "Ge Yang", "author_email": "yangge1987@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Science/Research", "Programming Language :: Python :: 3" ], "description": "``Dave``, a command line utility that runs your script with arguments load from a Yaml file\n===========================================================================================\n\n\ud83d\udd25 \ud83d\udca5\\ **Now ``Dave`` supports both python ``3.5`` and ``3.6``!** \ud83c\udf1f \u2728 \u26a1\ufe0f\n\n``Dave`` is a command line utility for your experiments. It manages\nconcurrent runs, command line arguments and other stuff nicely for you!\n\nThe things it manages include:\n\n- generating run-specific variables, like ``{time}`` and ``{cwd}`` that\n you can access as template keys in your string.\n- maximum numbers of concurrent runs (via python ``multiprocess.Pool``)\n- environment variables (env) such as ``DISPLAY=:1``. You can also\n passing a file\n- **default arguments**\n- **batch arguments** for multiple experiments\n- **pre-launch** scripts that is ran only once for each batch\n- **at-launch** script that is run at the launch time of each\n experiment\n- **post-launch** script that is as soon as each experiment launches\n- **post-run** scripts that happens after each experiment is done.\n\n``Dave`` works with all of your current work flow and it doesn't lock\nyou into a specific way of doing things. You still get to use bash\nscripts or Makefile's.\n\nWhy do we use YAML (with JSON planned as well)? My bash script is just fine!\n----------------------------------------------------------------------------\n\nBecause YAML(and json) are human **and** machine readable whereas base\narguments are **not**. When is the last time you looked at a bash script\nlooking for hyper-parameters, only to realized that some key parameters\nare missing? With ``Dave`` you won't have this problem. You can save all\nof the past and current runs as nicely readable YAML files(or json,\nHjson Cson if you speak coffee script, whatever).\n\n- if you are writing a report, you can include these YAML/json/cson\n files directly into markdown or latex.\n- To see what you ran last night, you can ``glob`` all of the\n configurations with ``runs/**/experiment.yml`` and make nice tables\n in an instant.\n- To run a full batch of experiments, you can type ``default_args``\n just ones, and then only repeat the fields that is different between\n each run.\n\nMost importantly, ``Dave`` wants to establish a standard command line\ntool for machine learning work, and having a standard ``run.config.yml``\nis just the first step!\n\nWhy is ``Dave`` named \"Dave\"?\n-----------------------------\n\nIt started out as an inside joke. Dave is my beloved adviser, and I\nthought it would be funny to\n``dave --config-file \"load_electrons.yml\"``.\n\nHow shall I use ``Dave``?\n-------------------------\n\nFirst thing first, you should ``alias`` ``Dave`` with whoever you want\nto call to run your experiments \ud83d\ude00 Recommended names include but not\nlimited to\n\n- Michael\n- Fei-fei\n- Anna\n- Sasha\n- Michael\n- Michael\n- Michael (k. only if you are in med school...)\n\nbut I recommend lower-case only since it is after all... a command line\napp.\n\nAfter aliasing this after your favorite person, you can follow the\nexamples bellow :)\n\nNote that `**batteries are\nincluded** `__,\nand your mileage will vary.\n\nExample Usage\n-------------\n\nFirst install via ``pip`` (it's that simple!!)\n\n.. code-block:: bash\n\n pip install dave\n\nSuppose you have the following folder structure\n\n::\n\n \u251c\u2500\u2500 your_thesis\n \u2514\u2500\u2500 MAML_tensorflow\n \u00a0\u00a0 \u251c\u2500\u2500 README.md\n \u00a0\u00a0 \u251c\u2500\u2500 experiment.yml\n \u00a0\u00a0 \u251c\u2500\u2500 maml.py\n \u00a0\u00a0 \u2514\u2500\u2500 models\n \u00a0\u00a0 \u00a0\u00a0 \u251c\u2500\u2500 __init__.py\n \u00a0\u00a0 \u00a0\u00a0 \u2514\u2500\u2500 mlp.py\n\nwhere the experiment.yml file looks like this:\n\n.. code-block:: yaml\n\n %YAML 1.2\n ---\n config:\n max_concurrent: 10\n env:\n PYTHONPATH: test_directory\n run: |\n {env} python maml_bradly.py {args}\n default_args:\n npts: 100\n num_epochs: 70000\n num_tasks: 10\n num_grad_steps: 1\n num_points_sampled: 10\n fix_amp: False\n batch_args: # use good typing convention here\n - num_tasks: 10\n num_grad_steps: 1\n num_points_sampled: 10\n - num_tasks: 10\n num_grad_steps: 4\n num_points_sampled: 20\n tmp:\n - last_run: 10\n\nNow under the project root, you can just run\n\n.. code-block:: bash\n\n dave --config-file \"experiment.yml\"\n\nand it will automatically run the experiment twice, using the arguments\nin the ``batch_args`` field of the Yaml configuration file. ## To\nDevelop\n\nfirst download from github. Then under project folder, run (you also\nneed to install the packages).\n\n.. code-block:: bash\n\n make dev test\n\nBucket List\n~~~~~~~~~~~\n\n- [ ] Allow extensions\n- [ ] work on windows\n- [ ] allow env files\n- [ ] daemon mode\n\nHappy Doing Science!\n--------------------\n\n.. figure:: https://github.com/episodeyang/dave/blob/master/figures/phd092316s.gif?raw=true\n :alt: one-more-experiment\n\n one-more-experiment\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://github.com/episodeyang/dave", "keywords": "dave,experiment,experimentation,script runner", "license": "", "maintainer": "", "maintainer_email": "", "name": "dave", "package_url": "https://pypi.org/project/dave/", "platform": "", "project_url": "https://pypi.org/project/dave/", "project_urls": { "Homepage": "https://github.com/episodeyang/dave" }, "release_url": "https://pypi.org/project/dave/0.9.0/", "requires_dist": [ "munch", "params-proto", "pathlib", "pathos", "ruamel.yaml" ], "requires_python": "", "summary": "A command line utility that runs your command line scripts from a yaml script", "version": "0.9.0" }, "last_serial": 3164710, "releases": { "0.0.0": [ { "comment_text": "", "digests": { "md5": "13e293f61ff735edc3638de68ed198e0", "sha256": "e2864af6f20a4ecdd175ae325d6df84af1c8de9734e93a9cb034e2b9ffd0b582" }, "downloads": -1, "filename": "dave-0.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "13e293f61ff735edc3638de68ed198e0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3986, "upload_time": "2017-09-06T11:07:44", "url": "https://files.pythonhosted.org/packages/f7/66/f604c73aae50e2900a5188034b621cbc33d043b920fae8d24514c2873490/dave-0.0.0-py3-none-any.whl" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "9059178a86a9b48a5f0b5891661b91ac", "sha256": "c388305e32c581eed895e14e503f4079c66fc5d20dd3242693564bf5aa24b83a" }, "downloads": -1, "filename": "dave-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "9059178a86a9b48a5f0b5891661b91ac", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3988, "upload_time": "2017-09-06T11:25:10", "url": "https://files.pythonhosted.org/packages/18/76/a2e0f1feb2326d069766e880f4c8bb4cecca5feec17037d92c2ee91131a0/dave-0.5.0-py3-none-any.whl" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "97cd59bd280ab0ab90ad4795f6beb1fb", "sha256": "41c53678391001cecb14a77bf381917946d352b503c63a4c8dd47c2306996467" }, "downloads": -1, "filename": "dave-0.5.1-py3-none-any.whl", "has_sig": false, "md5_digest": "97cd59bd280ab0ab90ad4795f6beb1fb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4386, "upload_time": "2017-09-07T23:29:04", "url": "https://files.pythonhosted.org/packages/aa/c3/36c4a909397626cc93581c44e5357c646176080588a49ab47d4d7c6635a1/dave-0.5.1-py3-none-any.whl" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "757f6e6eeb2902d4d287392423bac4a3", "sha256": "c8a54f2fa9cd8f7dd65dbd863baadc074b78d09ee1a0654a296a5033222ab92a" }, "downloads": -1, "filename": "dave-0.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "757f6e6eeb2902d4d287392423bac4a3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3544, "upload_time": "2017-09-08T00:44:51", "url": "https://files.pythonhosted.org/packages/0b/4e/cb511543f8981278478788be1c9c23c16039e3fe912249915cf52041ba78/dave-0.6.0-py3-none-any.whl" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "cf31c972e9128349c9176a96aee9a16a", "sha256": "9d74dde3f04765ef790ab1f374b9c31a02c00e05f9a13c4c206052b253bf650c" }, "downloads": -1, "filename": "dave-0.6.1-py3-none-any.whl", "has_sig": false, "md5_digest": "cf31c972e9128349c9176a96aee9a16a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3544, "upload_time": "2017-09-08T00:53:17", "url": "https://files.pythonhosted.org/packages/1c/9b/fe1b865fa6d033f571526303d1c5c626429b312992b9e0ace40ab2f045fe/dave-0.6.1-py3-none-any.whl" } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "adaded4cf71fbf59e4cf2f8044d7bec7", "sha256": "ecd0a132b7e7ba0c765f3055fd7b7b42de3270faa8bc0717d9d8f5716d993dfe" }, "downloads": -1, "filename": "dave-0.6.2-py3-none-any.whl", "has_sig": false, "md5_digest": "adaded4cf71fbf59e4cf2f8044d7bec7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3543, "upload_time": "2017-09-08T02:16:30", "url": "https://files.pythonhosted.org/packages/59/5b/6d0a541a86edcafd81fe4d5d4bd5bd570e4c7218f5955352cc1f62ad874e/dave-0.6.2-py3-none-any.whl" } ], "0.6.3": [ { "comment_text": "", "digests": { "md5": "1062ac4b17408ca029d3a34c4d3bc821", "sha256": "a5940d4ac9c7c99c4eee3cc219888dc5e624d18b0fd53c49753ffac34ff86b90" }, "downloads": -1, "filename": "dave-0.6.3-py3-none-any.whl", "has_sig": false, "md5_digest": "1062ac4b17408ca029d3a34c4d3bc821", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6484, "upload_time": "2017-09-08T02:54:54", "url": "https://files.pythonhosted.org/packages/7a/0c/35b427c73ba9eaec357a3de7043057949223bab270c33e1f315fcffe4757/dave-0.6.3-py3-none-any.whl" } ], "0.6.4": [ { "comment_text": "", "digests": { "md5": "dc4612d9a3ee0846fc03460fde0d4f2e", "sha256": "bf1ffe25399f4b31e98ff9b2138921cec35db964274b5af8255404d8c62439e8" }, "downloads": -1, "filename": "dave-0.6.4-py3-none-any.whl", "has_sig": false, "md5_digest": "dc4612d9a3ee0846fc03460fde0d4f2e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6412, "upload_time": "2017-09-08T02:58:21", "url": "https://files.pythonhosted.org/packages/8a/55/1669702adb68d0a79768c8089733cb60ec812d5b739fff84215f40a9553a/dave-0.6.4-py3-none-any.whl" } ], "0.6.5": [ { "comment_text": "", "digests": { "md5": "0416c9c2b3e54bce8f09ffb188de6134", "sha256": "fe6ec1970787c385081e3ad6e0c142e186b49f48fdbd9c5ac9b976b0cffe5cfe" }, "downloads": -1, "filename": "dave-0.6.5-py3-none-any.whl", "has_sig": false, "md5_digest": "0416c9c2b3e54bce8f09ffb188de6134", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6444, "upload_time": "2017-09-08T05:56:30", "url": "https://files.pythonhosted.org/packages/0e/2b/35d6722412d8ee6add40d4c632af77eaec80804552a0d46cc16535d7a325/dave-0.6.5-py3-none-any.whl" } ], "0.6.6": [ { "comment_text": "", "digests": { "md5": "4ca49043e8d686c405d9a7aa69f69b72", "sha256": "68f3a7fb973ed898e49d226bcc6dc769d7687adacf6089d1f44efe3399f13fd4" }, "downloads": -1, "filename": "dave-0.6.6-py3-none-any.whl", "has_sig": false, "md5_digest": "4ca49043e8d686c405d9a7aa69f69b72", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6442, "upload_time": "2017-09-08T06:01:01", "url": "https://files.pythonhosted.org/packages/22/71/fba7b61aae7a0f2251af4ca681049e37078c012ad93746eca2b4eeae0152/dave-0.6.6-py3-none-any.whl" } ], "0.6.7": [ { "comment_text": "", "digests": { "md5": "8be547e327dea17d312875944575fb3d", "sha256": "77307a3fc49f6f0c827d7efbfc8ba22e05dab92018f267fb7898677eac57b84b" }, "downloads": -1, "filename": "dave-0.6.7-py3-none-any.whl", "has_sig": false, "md5_digest": "8be547e327dea17d312875944575fb3d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8533, "upload_time": "2017-09-08T06:37:45", "url": "https://files.pythonhosted.org/packages/d0/cf/55121aec3b2db205d1dfe16969ef9c8a6e740096b706cc5f4f24d43255ad/dave-0.6.7-py3-none-any.whl" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "71f7fa159e739b668f959c9fbeada338", "sha256": "a5446072bb032c83693b995e73f25a015525cbf43ccb21c30bd53af8e50aefbe" }, "downloads": -1, "filename": "dave-0.7.0-py3-none-any.whl", "has_sig": false, "md5_digest": "71f7fa159e739b668f959c9fbeada338", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8914, "upload_time": "2017-09-08T16:01:29", "url": "https://files.pythonhosted.org/packages/54/b6/f670a316171025563c0e1a9442d003a242c4a9fd890ac6f3deb2fcde6bd6/dave-0.7.0-py3-none-any.whl" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "1726c653d0307f7efb4f193e2324a5c8", "sha256": "c8520e27c6f971328e36385099f926f6495a219d013f925c214ee3a56122927c" }, "downloads": -1, "filename": "dave-0.8.0-py3-none-any.whl", "has_sig": false, "md5_digest": "1726c653d0307f7efb4f193e2324a5c8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9013, "upload_time": "2017-09-11T03:35:39", "url": "https://files.pythonhosted.org/packages/61/a3/39d0c289d8abbe148611258a507b0679329fa9f81282f8ce73e67ee4a0f2/dave-0.8.0-py3-none-any.whl" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "ce2fbfc4e057fd262cbab7e47da912ba", "sha256": "5e73d6f4221d16e89b7828e012b967fd33c5491bcc92d1078cd6fc7ee3557e21" }, "downloads": -1, "filename": "dave-0.8.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ce2fbfc4e057fd262cbab7e47da912ba", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9008, "upload_time": "2017-09-11T07:50:20", "url": "https://files.pythonhosted.org/packages/c4/6f/fb5538ff15f0671613f62c3507d3775251b0f152c1a56ba526ff05ec5525/dave-0.8.1-py3-none-any.whl" } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "928af9733fc800eb15a946e3b8ee68ed", "sha256": "8eb252c7c01f876873c5daf7b26f0082d7401f658d5ca68030c583b9e10e60df" }, "downloads": -1, "filename": "dave-0.9.0-py3-none-any.whl", "has_sig": false, "md5_digest": "928af9733fc800eb15a946e3b8ee68ed", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8985, "upload_time": "2017-09-11T08:26:05", "url": "https://files.pythonhosted.org/packages/1a/b4/081857a61ddfac5c460f55119f1b2a21f9879c7f5d2ada2330e85bec5afd/dave-0.9.0-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "928af9733fc800eb15a946e3b8ee68ed", "sha256": "8eb252c7c01f876873c5daf7b26f0082d7401f658d5ca68030c583b9e10e60df" }, "downloads": -1, "filename": "dave-0.9.0-py3-none-any.whl", "has_sig": false, "md5_digest": "928af9733fc800eb15a946e3b8ee68ed", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8985, "upload_time": "2017-09-11T08:26:05", "url": "https://files.pythonhosted.org/packages/1a/b4/081857a61ddfac5c460f55119f1b2a21f9879c7f5d2ada2330e85bec5afd/dave-0.9.0-py3-none-any.whl" } ] }