# How to contribute ## System Requirements ### Python We use `python` >=3.9 with `uv` to manage the dependencies. ### Java Java 11 or higher is required. ### Build tools We use `task` to manage our build and development scripts and `docker` to manage the environment.
Refer to [taskfile](https://taskfile.dev/#/usage?id=installation) for installation instructions.
Refer to [docker](https://docs.docker.com/get-docker/) for installation instructions. ## Init Development environment ```shell $ task install ``` To activate your `virtualenv` run. ### Linting Linting tools are configured for this project, Command `task lint` applies all lints. ## Testing We use `pytest` to run tests. To run tests use `task test` command. * Command `task test` will run all tests * Command `test test-unit` will run unit tests **NOTE: You will be unable to run snowflake or databricks tests because you do not have a connection to the databases.** Open a pull request with your changes and said tests will run in the CI environment. ### Before submitting Before submitting your code please do the following steps: 1. Add any changes you want 2. Add tests for the new changes 3. Edit documentation if you have changed something significant 4. Run `task format` to format your changes. 5. Run `task lint` to ensure that types, security and docstrings are okay. 6. Add a changelog file in .changelog/ folder. Refer to `.changelog/TEMPLATE.yaml`. ### Checking documentation To check documentation locally run `task docs` command. It will build documentation and start a server listening on port `localhost:8000`. ## Other help You can contribute by spreading a word about this library. It would also be a huge contribution to write a short article on how you are using this project. You can also share your best practices with us.