Contributing
Your contributions are highly appreciated!
Prerequisites
Before proceeding, ensure the following tools and credentials are set up:
- Install uv.
- Install pre-commit.
Tip
Once uv
is installed, you can easily install pre-commit
by running:
uv tool install pre-commit
- Set up
pre-commit
hook:pre-commit install --install-hooks
- Generate an OpenAI API Key:
Installation and Setup
To run timecopilot in your local environment:
- Fork and clone the repository:
git clone git@github.com:<your username>/timecopilot.git
- Navigate into the project folder:
cd timecopilot
- Install the required dependencies for local development:
uv sync --frozen --all-extras --all-packages --group docs
- Export your OpenAI API key as an environment variable:
export OPENAI_API_KEY="<your-new-secret-key>"
- Test timecopilot with a sample forecast:
uvx timecopilot forecast https://otexts.com/fpppy/data/AirPassengers.csv
✅ You're ready to start contributing!
Running Tests
To run tests, run:
uv run pytest
Documentation Changes
To run the documentation page in your local environment, run:
uv run mkdocs serve
Documentation Notes
- Each pull request is tested to ensure it can successfully build the documentation, preventing potential errors.
- Merging into the main branch triggers a deployment of a documentation preview, accessible at preview.timecopilot.dev.
- When a new version of the library is released, the documentation is deployed to timecopilot.dev.
File Naming Convention
All documentation files should use kebab-case (e.g., model-hub.md
, forecasting-parameters.md
). Kebab-case is widely used in static site generators and web contexts because it is URL-friendly, consistent, and avoids ambiguity with underscores or camelCase
. Using a single convention improves readability and prevents broken links in deployment.
For further reference, see the Google Developer Documentation Style Guide on file names.
Adding New Datasets
The datasets utilized in our documentation are hosted on AWS at https://timecopilot.s3.amazonaws.com/public/data/
. If you wish to contribute additional datasets for your changes, please contact @AzulGarza for guidance.
Forked Dependencies
TimeCopilot uses some forked Python packages, maintained under custom names on PyPI:
-
chronos-forecasting
- Forked from: amazon-science/chronos-forecasting
- TimeCopilot fork: AzulGarza/chronos-forecasting
- Published on PyPI as:
timecopilot-chronos-forecasting
-
granite-tsfm
- Forked from: ibm-granite/granite-tsfm
- TimeCopilot fork: AzulGarza/granite-tsfm
- Published on PyPI as:
timecopilot-granite-tsfm
-
timesfm
- Forked from: google-research/timesfm
- TimeCopilot fork: AzulGarza/timesfm
- Published on PyPI as:
timecopilot-timesfm
-
tirex
- Forked from: NX-AI/tirex
- TimeCopilot fork: AzulGarza/tirex
- Published on PyPI as:
timecopilot-tirex
-
toto
- Forked from: DataDog/toto
- TimeCopilot fork: AzulGarza/toto
- Published on PyPI as:
timecopilot-toto
-
uni2ts:
- Forked from: SalesforceAIResearch/uni2ts
- TimeCopilot fork: AzulGarza/uni2ts
- Published on PyPI as:
timecopilot-uni2ts