dishpy


Namedishpy JSON
Version 1.2 PyPI version JSON
download
home_pageNone
SummaryA Python development tool for VEX Competition robotics that combines multi-file Python projects into single scripts and uploads them to VEX V5 brains
upload_time2025-08-23 04:14:30
maintainerNone
docs_urlNone
authorNone
requires_python>=3.12
licenseMIT License Copyright (c) 2025 Aadish Verma Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
keywords competition development-tool python robotics v5 vex
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # DishPy

![DishPy logo](https://raw.githubusercontent.com/aadishv/dishpy/refs/heads/main/logo.png)

**[GitHub](https://github.com/aadishv/dishpy) ・ [Docs](https://aadishv.github.io/dishpy) ・ [PyPI](https://pypi.org/project/dishpy/)**

A Python development tool for VEX Competition robotics that combines multi-file Python projects into single scripts and uploads them to VEX V5 brains.

**Looking for tutorials? See [here](https://aadishv.github.io/dishpy/Tutorial/1_installation/)**

## Roadmap

**Feature parity w/ VEX VSC extension**

 - [x] Bindings to vexcom
 - [x] Project initialization CLI
 - [x] Better documentation for using vexcom's common functions
 - [x] VEXcom wrappers for ease-of-use
 - [x] templates

**Core premise**

 - [x] Script amalgamation through AST parsing
 - [x] Library creation functionality
 - [x] Library installation functionality
 - [x] Really good docs!

**Future-leaning**

 - [ ] Simulation API
 - [ ] Import from VScode

## Why/when should I use DishPy over X?

* PROS/VEXcode text -> you don't like C++
* vexide -> you don't like Rust
* VEXcode blocks -> you're a grown up /j
* VEXcode Python -> you want multifile support, an editor other than VEXcode/VSCode, libraries (coming soon!), and a CLI

Note that, unlike PROS & vexide, DishPy is not a *from-scratch* rewrite that does scheduling and everything (as an eight grader I am physically unable to make such a thing). Instead, it uses the exact same Python VM as VEXcode and the VScode extension and uploads code in the exact same way and binds to the same SDK -- the only difference is that the DX of DishPy is wayyy better.

## Should you use DishPy?

Yes! If you are currently using Python in VEXcode or VSCode, it is **zero cost** to switch; your current code will Just Work™.


To be clear, DishPy is still in active development and is not fully finished -- there will definitely be some sharp corners. I cannot confirm I will be available to debug or maintain this at all times, so keep that in mind. If you want to be safe when using this in competition, make sure to read the amalgamated files before running the programs to make sure nothing was lost in translation.

## Features

- **Project Management**: Initialize new VEX robotics projects with a structured template
- **Code Amalgamation**: Combine multi-file Python projects into single scripts with intelligent symbol prefixing
- **VEX Integration**: Built-in VEX library support and seamless upload to V5 brains
- **Cross-Platform**: Works on Linux (x64, ARM32, ARM64), macOS, and Windows

## Platform Support

DishPy includes pre-compiled vexcom binaries for:

- Linux x64
- Linux ARM32 (Raspberry Pi)
- Linux ARM64 (Raspberry Pi 4+)
- macOS
- Windows 32-bit

## Requirements

- Python 3.12+ with uv (see [1. Installation](https://aadishv.github.io/dishpy/Tutorial/1_installation/))
- VEX V5 Brain with USB connection

## Contributing

Contributions are welcome for:

* Literally anything

If you want to help improve DishPy, feel free to

1. Contribute and file a PR. The entire repository is open-source (that's probably how you are reading this :P)
2. Fork it! This is MIT licensed so you can do whatever you want
3. Play with it, report errors, and ping me in VTOW about them.

## License

This project is licensed under the MIT License.

## Changelog

**v1.1**

* We have an actual logo(!!!). It is... wait for it... a pie... on a dish 🤯
* We now support templates! These templates are the exact same as those available in VEXcode and VSCode
* Added a `dishpy terminal` command
* Added docs for terminal, as well as a dedicated section on advanced uses of DishPy.
* Lightning bugfixes
  * Fixed `dishpy vexcom args` not correctly passing through `args`
  * Fixed bug in `time.sleep` call in Python stubs

**v1.0.1**

* Added `requests` as a dependency to avoid installation not working.

**v1.0**

* This marks an important milestone for DishPy. All of the core features of DishPy (read: most of the codebase) is fully stable. I won't need to make any more changes to add major new features.
* There is still a lot to do to get to feature parity with VEXcode, but all of the core premise has now been fulfilled. I'll slowly add all of that soon.
* Package management API is now fully stabilized, with helpful tutorials as well (plus some design changes to docs to look better). Registry commands are now under the `dishpy package` namespace.
* Added separate `build` and `upload` commands by popular request.
* We are now on PyPI! Previously on test.pypi which required some manual setup by users.

**v0.5**

* v0.5 ships with (*an experimental version of*) package management! It uses a PROS-like approach with decentralized packages maintaining their own metadata and users fetching that into a local registry. It is, however, much more limited than PROS. I would **not** recommend using it until it stabilizes (at which point I will also write a tutorial for it).
* Overhauled our [docs](https://aadishv.github.io/dishpy) to match the styling for the rest of my website, a.k.a. very minimal.
* Fixed some small bugs in the amalgamator and create CLI.

**v0.4**

* This is a **ground-up** rewrite of the entire DishPy CLI to now be significantly smaller and simpler. (It isn't vibe-coded anymore!)
* There are now slightly less debug messages which will hopefully be less annoying.
* We have removed `dishpy init` in favor of the more commonly used `dishpy create`.
* All of these changes go a long way towards having ✨libraries✨ in the near future!

**v0.3**

* Added a breaking bug that affected all users on v0.2.2. In the port to vexcom downloading, I accidentally deleted the vex.py resource. This will not affect creating or uploading projects, but will throw an error with running `dishpy init` or `dishpy create`. Fixed by adding back the file.
* Made docs look more modern! Plus, updated the home page with all of the new tidbits we have here.

**v0.2.2**

* Created a changelog!
* Instead of bundling the VEXcom executable with the repository, we now extract it from the VSCode extension. This better accomodates VEX licensing, although it does slightly worsen the UX as the CLI takes a few minutes to install on first VEXcom call.
* Vastly improved [documentation](https://aadishv.github.io/dishpy)! Hopefully I'll start writing topical tutorials as well soon.


## Credits

* Lewis | vexide (reverse-engineering vexcom calls)
* andrew | 781X (digging thru extension code w/ me)
* Aadish | 3151A (me)
* Chroma | 3332A | 3151A (inspiration)
* Gemini 2.5 Pro (LLM -- first run)
* Claude 4 Sonnet (LLM -- agentic tasks)

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "dishpy",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.12",
    "maintainer_email": "Aadish V <aadish@ohs.stanford.edu>",
    "keywords": "competition, development-tool, python, robotics, v5, vex",
    "author": null,
    "author_email": "Aadish V <aadish@ohs.stanford.edu>",
    "download_url": "https://files.pythonhosted.org/packages/06/a5/31044815c76e9116b09f37d2ef02ac21bf20929e080812226ebfc9a88ccd/dishpy-1.2.tar.gz",
    "platform": null,
    "description": "# DishPy\n\n![DishPy logo](https://raw.githubusercontent.com/aadishv/dishpy/refs/heads/main/logo.png)\n\n**[GitHub](https://github.com/aadishv/dishpy) \u30fb [Docs](https://aadishv.github.io/dishpy) \u30fb [PyPI](https://pypi.org/project/dishpy/)**\n\nA Python development tool for VEX Competition robotics that combines multi-file Python projects into single scripts and uploads them to VEX V5 brains.\n\n**Looking for tutorials? See [here](https://aadishv.github.io/dishpy/Tutorial/1_installation/)**\n\n## Roadmap\n\n**Feature parity w/ VEX VSC extension**\n\n - [x] Bindings to vexcom\n - [x] Project initialization CLI\n - [x] Better documentation for using vexcom's common functions\n - [x] VEXcom wrappers for ease-of-use\n - [x] templates\n\n**Core premise**\n\n - [x] Script amalgamation through AST parsing\n - [x] Library creation functionality\n - [x] Library installation functionality\n - [x] Really good docs!\n\n**Future-leaning**\n\n - [ ] Simulation API\n - [ ] Import from VScode\n\n## Why/when should I use DishPy over X?\n\n* PROS/VEXcode text -> you don't like C++\n* vexide -> you don't like Rust\n* VEXcode blocks -> you're a grown up /j\n* VEXcode Python -> you want multifile support, an editor other than VEXcode/VSCode, libraries (coming soon!), and a CLI\n\nNote that, unlike PROS & vexide, DishPy is not a *from-scratch* rewrite that does scheduling and everything (as an eight grader I am physically unable to make such a thing). Instead, it uses the exact same Python VM as VEXcode and the VScode extension and uploads code in the exact same way and binds to the same SDK -- the only difference is that the DX of DishPy is wayyy better.\n\n## Should you use DishPy?\n\nYes! If you are currently using Python in VEXcode or VSCode, it is **zero cost** to switch; your current code will Just Work\u2122.\n\n\nTo be clear, DishPy is still in active development and is not fully finished -- there will definitely be some sharp corners. I cannot confirm I will be available to debug or maintain this at all times, so keep that in mind. If you want to be safe when using this in competition, make sure to read the amalgamated files before running the programs to make sure nothing was lost in translation.\n\n## Features\n\n- **Project Management**: Initialize new VEX robotics projects with a structured template\n- **Code Amalgamation**: Combine multi-file Python projects into single scripts with intelligent symbol prefixing\n- **VEX Integration**: Built-in VEX library support and seamless upload to V5 brains\n- **Cross-Platform**: Works on Linux (x64, ARM32, ARM64), macOS, and Windows\n\n## Platform Support\n\nDishPy includes pre-compiled vexcom binaries for:\n\n- Linux x64\n- Linux ARM32 (Raspberry Pi)\n- Linux ARM64 (Raspberry Pi 4+)\n- macOS\n- Windows 32-bit\n\n## Requirements\n\n- Python 3.12+ with uv (see [1. Installation](https://aadishv.github.io/dishpy/Tutorial/1_installation/))\n- VEX V5 Brain with USB connection\n\n## Contributing\n\nContributions are welcome for:\n\n* Literally anything\n\nIf you want to help improve DishPy, feel free to\n\n1. Contribute and file a PR. The entire repository is open-source (that's probably how you are reading this :P)\n2. Fork it! This is MIT licensed so you can do whatever you want\n3. Play with it, report errors, and ping me in VTOW about them.\n\n## License\n\nThis project is licensed under the MIT License.\n\n## Changelog\n\n**v1.1**\n\n* We have an actual logo(!!!). It is... wait for it... a pie... on a dish \ud83e\udd2f\n* We now support templates! These templates are the exact same as those available in VEXcode and VSCode\n* Added a `dishpy terminal` command\n* Added docs for terminal, as well as a dedicated section on advanced uses of DishPy.\n* Lightning bugfixes\n  * Fixed `dishpy vexcom args` not correctly passing through `args`\n  * Fixed bug in `time.sleep` call in Python stubs\n\n**v1.0.1**\n\n* Added `requests` as a dependency to avoid installation not working.\n\n**v1.0**\n\n* This marks an important milestone for DishPy. All of the core features of DishPy (read: most of the codebase) is fully stable. I won't need to make any more changes to add major new features.\n* There is still a lot to do to get to feature parity with VEXcode, but all of the core premise has now been fulfilled. I'll slowly add all of that soon.\n* Package management API is now fully stabilized, with helpful tutorials as well (plus some design changes to docs to look better). Registry commands are now under the `dishpy package` namespace.\n* Added separate `build` and `upload` commands by popular request.\n* We are now on PyPI! Previously on test.pypi which required some manual setup by users.\n\n**v0.5**\n\n* v0.5 ships with (*an experimental version of*) package management! It uses a PROS-like approach with decentralized packages maintaining their own metadata and users fetching that into a local registry. It is, however, much more limited than PROS. I would **not** recommend using it until it stabilizes (at which point I will also write a tutorial for it).\n* Overhauled our [docs](https://aadishv.github.io/dishpy) to match the styling for the rest of my website, a.k.a. very minimal.\n* Fixed some small bugs in the amalgamator and create CLI.\n\n**v0.4**\n\n* This is a **ground-up** rewrite of the entire DishPy CLI to now be significantly smaller and simpler. (It isn't vibe-coded anymore!)\n* There are now slightly less debug messages which will hopefully be less annoying.\n* We have removed `dishpy init` in favor of the more commonly used `dishpy create`.\n* All of these changes go a long way towards having \u2728libraries\u2728 in the near future!\n\n**v0.3**\n\n* Added a breaking bug that affected all users on v0.2.2. In the port to vexcom downloading, I accidentally deleted the vex.py resource. This will not affect creating or uploading projects, but will throw an error with running `dishpy init` or `dishpy create`. Fixed by adding back the file.\n* Made docs look more modern! Plus, updated the home page with all of the new tidbits we have here.\n\n**v0.2.2**\n\n* Created a changelog!\n* Instead of bundling the VEXcom executable with the repository, we now extract it from the VSCode extension. This better accomodates VEX licensing, although it does slightly worsen the UX as the CLI takes a few minutes to install on first VEXcom call.\n* Vastly improved [documentation](https://aadishv.github.io/dishpy)! Hopefully I'll start writing topical tutorials as well soon.\n\n\n## Credits\n\n* Lewis | vexide (reverse-engineering vexcom calls)\n* andrew | 781X (digging thru extension code w/ me)\n* Aadish | 3151A (me)\n* Chroma | 3332A | 3151A (inspiration)\n* Gemini 2.5 Pro (LLM -- first run)\n* Claude 4 Sonnet (LLM -- agentic tasks)\n",
    "bugtrack_url": null,
    "license": "MIT License\n        \n        Copyright (c) 2025 Aadish Verma\n        \n        Permission is hereby granted, free of charge, to any person obtaining a copy\n        of this software and associated documentation files (the \"Software\"), to deal\n        in the Software without restriction, including without limitation the rights\n        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n        copies of the Software, and to permit persons to whom the Software is\n        furnished to do so, subject to the following conditions:\n        \n        The above copyright notice and this permission notice shall be included in all\n        copies or substantial portions of the Software.\n        \n        THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n        SOFTWARE.",
    "summary": "A Python development tool for VEX Competition robotics that combines multi-file Python projects into single scripts and uploads them to VEX V5 brains",
    "version": "1.2",
    "project_urls": {
        "Documentation": "https://github.com/aadishv/dishpy#readme",
        "Homepage": "https://github.com/aadishv/dishpy",
        "Issues": "https://github.com/aadishv/dishpy/issues",
        "Repository": "https://github.com/aadishv/dishpy"
    },
    "split_keywords": [
        "competition",
        " development-tool",
        " python",
        " robotics",
        " v5",
        " vex"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e837fa71df3cb5b7b9697fd92ba2c672a971d999e3ab4d7b86015230ce157c29",
                "md5": "2c1206342ca94eebe2b53ba096ae74d2",
                "sha256": "61832adc145cbd40c0f6e6590d8bd6cd3283b7d5138265ffffb51791cdbc4022"
            },
            "downloads": -1,
            "filename": "dishpy-1.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "2c1206342ca94eebe2b53ba096ae74d2",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.12",
            "size": 76613,
            "upload_time": "2025-08-23T04:14:29",
            "upload_time_iso_8601": "2025-08-23T04:14:29.094135Z",
            "url": "https://files.pythonhosted.org/packages/e8/37/fa71df3cb5b7b9697fd92ba2c672a971d999e3ab4d7b86015230ce157c29/dishpy-1.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "06a531044815c76e9116b09f37d2ef02ac21bf20929e080812226ebfc9a88ccd",
                "md5": "346c2bf9172bab2fedc09154a42b9101",
                "sha256": "3bee251798d47cc6f3ae064f82518c7009ddbc18fa5d9a30a3a3bbb3dad0fd33"
            },
            "downloads": -1,
            "filename": "dishpy-1.2.tar.gz",
            "has_sig": false,
            "md5_digest": "346c2bf9172bab2fedc09154a42b9101",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.12",
            "size": 402355,
            "upload_time": "2025-08-23T04:14:30",
            "upload_time_iso_8601": "2025-08-23T04:14:30.756329Z",
            "url": "https://files.pythonhosted.org/packages/06/a5/31044815c76e9116b09f37d2ef02ac21bf20929e080812226ebfc9a88ccd/dishpy-1.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-23 04:14:30",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "aadishv",
    "github_project": "dishpy#readme",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "dishpy"
}
        
Elapsed time: 0.88723s