### Overview Major restructuring from monolithic `arcade-ai` package to modular library architecture with standardized uv-based dependency management.  ### New Package Structure - **`arcade-tdk`** - Lightweight toolkit development kit (core decorators, auth) - **`arcade-core`** - Core execution engine and catalog functionality - **`arcade-serve`** - FastAPI/MCP server components - **`arcade-ai`** - Meta package that includes CLI functionality. Optionally include evals via the `evals` extra. Optionally include all packages via the `all` extra. ### Key Benefits - **Lighter Dependencies**: Toolkits now depend only on `arcade-tdk` (~2 deps) vs full `arcade-ai` (~30+ deps) - **Faster Builds**: uv provides 10-100x faster dependency resolution and installation - **Better Modularity**: Clear separation of concerns, consumers import only what they need - **Standard Tooling**: Eliminates custom poetry scripts, uses standard Python packaging ### Migration Impact - All 20 toolkits converted from poetry → uv with `arcade-tdk` dependencies plus `arcade-ai[evals]` and `arcade-serve` dev dependencies. When developing locally, devs should install toolkits via `make install-local`. - Modern Python 3.10+ type hints throughout - Standardized build system with hatchling backend - Enhanced Makefile with robust toolkit management commands - Removed `arcade dev` CLI command - Reduce the number of files created by `arcade new` and add an option to not generate a tests and evals folder. This foundation enables faster development cycles and cleaner dependency chains for the growing toolkit ecosystem. ### Todo After this PR is merged - [ ] Post-merge workflow(s) (release & publish containers, etc) - [ ] Release order plan. @EricGustin suggests releasing in the following order: 1. `arcade-core` version 0.1.0 2. `arcade-serve` version 0.1.0 and `arcade-tdk` version 0.1.0 3. `arcade-ai` version 2.0.0 4. Patch release for all toolkits (all changes in toolkits are internal refactors) - [ ] [Update docs](https://github.com/ArcadeAI/docs/pull/318) --------- Co-authored-by: Eric Gustin <eric@arcade.dev> Co-authored-by: Eric Gustin <34000337+EricGustin@users.noreply.github.com>
139 lines
3.6 KiB
Markdown
139 lines
3.6 KiB
Markdown
# Contributing to `arcade-ai`
|
|
|
|
Contributions are welcome, and they are greatly appreciated!
|
|
Every little bit helps, and credit will always be given.
|
|
|
|
You can contribute in many ways:
|
|
|
|
# Types of Contributions
|
|
|
|
## Report Bugs
|
|
|
|
Report bugs at https://github.com/ArcadeAI/arcade-ai/issues
|
|
|
|
If you are reporting a bug, please include:
|
|
|
|
- Your operating system name and version.
|
|
- Any details about your local setup that might be helpful in troubleshooting.
|
|
- Detailed steps to reproduce the bug.
|
|
|
|
## Fix Bugs
|
|
|
|
Look through the GitHub issues for bugs.
|
|
Anything tagged with "bug" and "help wanted" is open to whoever wants to implement a fix for it.
|
|
|
|
## Implement Features
|
|
|
|
Look through the GitHub issues for features.
|
|
Anything tagged with "enhancement" and "help wanted" is open to whoever wants to implement it.
|
|
|
|
## Write Documentation
|
|
|
|
Arcade could always use more documentation, whether as part of the official docs, in docstrings, or even on the web in blog posts, articles, and such.
|
|
|
|
## Submit Feedback
|
|
|
|
The best way to send feedback is to file an issue at https://github.com/ArcadeAI/arcade-ai/issues.
|
|
|
|
If you are proposing a new feature:
|
|
|
|
- Explain in detail how it would work.
|
|
- Keep the scope as narrow as possible, to make it easier to implement.
|
|
- Remember that this is a volunteer-driven project, and that contributions
|
|
are welcome :)
|
|
|
|
# Get Started!
|
|
|
|
Ready to contribute? Here's how to set up `arcade-ai` for local development.
|
|
Please note this documentation assumes you already have `uv` and `Git` installed and ready to go.
|
|
|
|
1. Fork the `arcade-ai` repo on GitHub.
|
|
|
|
2. Clone your fork locally:
|
|
|
|
```bash
|
|
cd <directory_in_which_repo_should_be_created>
|
|
git clone git@github.com:YOUR_GITHUB_USERNAME/arcade-ai.git
|
|
```
|
|
|
|
3. Now we need to install the environment. Navigate into the directory
|
|
|
|
```bash
|
|
cd arcade-ai
|
|
```
|
|
|
|
Create your virtual environment
|
|
|
|
```bash
|
|
uv venv --python 3.11.6
|
|
```
|
|
|
|
4. Install the development environment and dependencies:
|
|
|
|
```bash
|
|
# Install all packages and development dependencies via uv workspace
|
|
uv sync --extra all --dev
|
|
|
|
# Install pre-commit hooks for code quality
|
|
uv run pre-commit install
|
|
```
|
|
|
|
Or use the convenient Makefile command that does both:
|
|
|
|
```bash
|
|
make install
|
|
```
|
|
|
|
The uv workspace will automatically handle installing all lib packages in the correct dependency order.
|
|
|
|
5. Create a branch for local development:
|
|
|
|
```bash
|
|
git checkout -b name-of-your-bugfix-or-feature
|
|
```
|
|
|
|
Now you can make your changes locally.
|
|
|
|
6. Don't forget to add test cases for your added functionality to the `libs/tests` directory.
|
|
|
|
7. When you're done making changes, check that your changes pass the formatting tests.
|
|
|
|
```bash
|
|
make check
|
|
```
|
|
|
|
Now, validate that all unit tests are passing:
|
|
|
|
```bash
|
|
make test
|
|
```
|
|
|
|
8. You can also run tests for specific components:
|
|
|
|
```bash
|
|
# Test all lib packages
|
|
make test
|
|
```
|
|
|
|
9. The CI/CD pipeline will run additional checks across different Python versions, so local testing with a single version is usually sufficient.
|
|
|
|
10. Commit your changes and push your branch to GitHub:
|
|
|
|
```bash
|
|
git add .
|
|
git commit -m "Your detailed description of your changes."
|
|
git push origin name-of-your-bugfix-or-feature
|
|
```
|
|
|
|
11. Submit a pull request through the GitHub website.
|
|
|
|
# Pull Request Guidelines
|
|
|
|
Before you submit a pull request, check that it meets these guidelines:
|
|
|
|
1. The pull request should include tests.
|
|
|
|
2. If the pull request adds functionality, the [docs](https://github.com/ArcadeAI/docs) should be updated.
|
|
|
|
3. If making contributions to multiple toolkits (i.e. Google and Slack, etc.), submit a separate pull request for each.
|
|
This helps us segregate the changes during the review process making it more efficient.
|