Skip to content

Latest commit

 

History

History
124 lines (81 loc) · 4.63 KB

File metadata and controls

124 lines (81 loc) · 4.63 KB

Contributing to Schemathesis

Welcome! Thank you for considering contributing to Schemathesis. Your feedback and contributions are invaluable to us!

Prerequisites for Code Contributions

For code contributions: Make sure you have the following installed:

  • Python 3.10 or higher
  • prek
  • tox
  • curl (required by some integration tests; install via your OS package manager, e.g., apt install curl or brew install curl)
uv pip install prek tox

Optional but recommended: Install just for convenient development commands:

# macOS
brew install just

# Linux
cargo install just
# or use your package manager

See just --list for all available commands like just test, just check, just docs, etc.

For documentation contributions: No specific prerequisites are required.

Feature Requests and Feedback

If you'd like to suggest a feature or provide feedback, feel free to submit an issue. When submitting your issue, it helps to provide:

  • Title: Write a simple and descriptive title to identify your suggestion.
  • Details: Provide as many details as possible. Explain your context and how you envision the feature working.
  • Usefulness: Explain why this feature or improvement would be beneficial.
  • Scope: Keep the scope of the feature narrow to make it easier to implement. For example, focus on a specific use-case rather than a broad feature set.

Reporting Bugs

If you encounter a bug, please report it in the issue tracker. When filing a bug report, please include:

  • Title: Write a simple and descriptive title to identify the problem.
  • Reproduction Steps: Describe the exact steps to reproduce the problem in as much detail as possible.
  • Observed Behavior: Describe the behavior you observed and what makes it a problem.
  • Expected Behavior: Explain which behavior you expected to see instead and why.
  • Versions: Include Python and Schemathesis versions. Also, confirm if the issue persists in the latest version of Schemathesis.
  • Additional Context: Logs, error messages, or screenshots are often very helpful.

What happens next?: After you submit an issue, we aim to review and respond as soon as possible. If you don't receive a response within a few days, feel free to add a new comment to the thread to bring it to our attention again.

Submitting Pull Requests

We welcome contributions to the codebase! If you'd like to submit a pull request (PR), please follow these steps:

  1. Fork the Repository: Fork the Schemathesis repository on GitHub.
  2. Install Development Tools: Install the development dependencies using the following command:
uv pip install -e ".[dev]"

This will install all the necessary packages for development, including those for documentation and tests.

  1. Set Up Pre-commit Hooks: Enable prek.
prek install
  1. Branching: Create a new branch and switch to it. Target your pull request to the master branch of the main repository.
  2. Coding Standards: Follow PEP-8 for naming conventions and use ruff for code formatting.
  3. Write Tests: Preferably, write integration tests that run the whole Schemathesis CLI.
  4. Run Tests:
# Using tox
tox -e py311

# Or using just
just test
  1. Update Changelog: Add a corresponding entry to CHANGELOG.md located in the repository root.
  2. Commit Your Changes: Use the Conventional Commits format. For example, features could be feat: add new validation feature and bug fixes could be fix: resolve issue with validation.

What happens next?: After submitting, your pull request will be reviewed. If you don't hear back within a few days, feel free to add a comment to the pull request to draw our attention.

Contributing to Documentation

We recommend installing Schemathesis with the "dev" extra for all the dependencies needed for documentation:

uv pip install -e ".[dev]"

To preview your changes:

mkdocs serve

Then open the URL shown in the terminal (typically http://127.0.0.1:8000/) in your browser.

Community and Support

For more informal discussions or questions, join us on Discord.

Maintainers

At present, the core developers are:

Preferred communication language

We prefer to keep all communications in English.

Thanks!