<commit_before># Contributing to auto-sklearn
Thanks for checking out the contribution guide!
We included a [quick overview](#pull-request-overview) at the end for anyone familiar with open-source contribution or familiar with auto-sklearn and simply wants to see our workflow.

If you're new to contributing then hopefully this guide helps with contributing to open-source and auto-sklearn, whether it be a simple doc fix, a small bug fix or even new features that everyone can get use out of.
If you're looking for a particular project to work on, check out the [Issues](https://github.com/automl/auto-sklearn/issues) for things you might be interested in!

For experienced contributors, you can skip the overview and find the quick walk-through [here](#pull-request-overview)!

This guide is only aimed towards Unix command line users as that's what we know but the same principles apply.

# Contributing
There are many kinds of contributions you can make to auto-sklearn but we'll focus on three main ones **Documentation**, **Bug Fixes** and **Features**, each of which require a little bit of a different flow.
We need to perform several checks to make sure it meets code standards and won't cause any issues later on.

We tend to follow a development cycle which could be called _Gitflow_ which you are new to git or git-based projects, you can see a nice summary [here](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow).

First we'll go over the general flow, what each step does and then later look at making more specific kinds of changes, what we'd like to see and how you might create a workflow.
Following that we'll tell you about how you can test your changes locally and then how to submit your pull request!

## General steps
*   The first thing to do is create your own [fork](https://docs.github.com/en/get-started/quickstart/fork-a-repo).
    This is to give you a nice place to work on your changes without impacting any code from the original repository.

    To do this, navigate to [automl/auto-sklearn](https://github.com/automl/auto-sklearn) and hit the **fork** button in the top-right corner.
    This will copy the repository to your own account, including all of its different branches.
    You'll be able to access this at `https://github.com/{your-username}/auto-sklearn`.

*   The next steps are to download **your own fork** and to create a new [branch](https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches) where all your changes will go.
    It's important to work off the latest changes on the **development** branch.
    ```bash
    # With https
    git clone https://github.com/your-username/auto-sklearn

    # ... or with ssh
    git clone git@github.com:your-username/auto-sklearn.git

    # Navigate into the cloned repo
    cd auto-sklearn

    # Create a new branch based off the development one
    git checkout -b my_new_branch development

    # ... Alternatively, if you would prefer a more manual method
    # Show all the available branches with a * beside your current one
    git branch

    # Switch to the development branch
    git checkout development

    # Create a new branch based on the currently active branch
    git checkout -b my_new_branch
    ```

    The reason to create a new branch is two fold:

    *   One, it keeps the commit history for your changes much cleaner once we merge them in.
    *   If you have to perform a **rebase** or a **merge** later on, this will be much easier.

*   You'll need a [virtual environment](https://docs.python.org/3/tutorial/venv.html) to work in.
    If you've never used them before, now is definitely the time to start as a virtual environment lets you keep packages for a project separate.
    ```bash
    # Create a virtual environment in a folder called my-virtual-env
    python -m venv my-virtual-env

    # Activate the virtual environment
    source my-virtual-env/bin/activate
    ```
    *   A popular alternative to managing Python projects is [conda](https://docs.conda.io/en/latest/).
    *   The folder `my-virtual-env` is where dependency packages that are required for auto-sklearn will go.
    *   In general, once you have activated the virtual environment with `source my-virtual-env/bin/activate`, anything you install with `pip install` will now go into the virtual environment.
        While this environment is active, any python you run will have access to the packages here.
        If at any time you want to deactivate it simply type `deactivate` in the shell or just close the shell and open a new one.
    *   If you use Python 3.6 or lower on your machine then unfortunately auto-sklearn doesn't support this.
        Fortunately, you can check out [pyenv](https://github.com/pyenv/pyenv) which lets you switch between Python versions on the fly!

*   Now that we have a virtual environment, it's time to install all the dependencies into it.
    ```bash
    pip install -e .[test,examples,doc]

    # If you're using shells other than bash you'll need to use
    pip install -e ".[test,examples,doc]"
    ```
    *   If you're only exposure to using pip is `pip install package_name` then this might be a bit confusing.
    *   If we type `pip install -e .` (notice the 'dot'), this tells `pip` to install a package located here, in this directory, `.`.
        The `-e` flag indicates that it should be editable, meaning you will not have to run `pip install .` every time you make a change and want to try it.
    *   Finally the `[test,examples,doc]` tells `pip` that there's some extra optional dependencies that we want to install.
        These are dependencies used in development but ones that are not required to actually run auto-sklearn itself.
        You can check out what these are in the `setup.py` file.
    *   If you're new to virtual environments, after performing all this, it's a great time to check out what actually exists in the `my-virtual-env` folder.

*   Now it's time to make some changes, whether it be for [documentation](#documentation), a [bug fix](#bug-fixes) or a new [features](#features).<commit_msg>Fix typo in contribution guide (#1322)<commit_after># Contributing to auto-sklearn
Thanks for checking out the contribution guide!
We included a [quick overview](#pull-request-overview) at the end for anyone familiar with open-source contribution or familiar with auto-sklearn and simply wants to see our workflow.

If you're new to contributing then hopefully this guide helps with contributing to open-source and auto-sklearn, whether it be a simple doc fix, a small bug fix or even new features that everyone can get use out of.
If you're looking for a particular project to work on, check out the [Issues](https://github.com/automl/auto-sklearn/issues) for things you might be interested in!

For experienced contributors, you can skip the overview and find the quick walk-through [here](#pull-request-overview)!

This guide is only aimed towards Unix command line users as that's what we know but the same principles apply.

# Contributing
There are many kinds of contributions you can make to auto-sklearn but we'll focus on three main ones **Documentation**, **Bug Fixes** and **Features**, each of which require a little bit of a different flow.
We need to perform several checks to make sure it meets code standards and won't cause any issues later on.

We tend to follow a development cycle which could be called _Gitflow_ which you are new to git or git-based projects, you can see a nice summary [here](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow).

First we'll go over the general flow, what each step does and then later look at making more specific kinds of changes, what we'd like to see and how you might create a workflow.
Following that we'll tell you about how you can test your changes locally and then how to submit your pull request!

## General steps
*   The first thing to do is create your own [fork](https://docs.github.com/en/get-started/quickstart/fork-a-repo).
    This is to give you a nice place to work on your changes without impacting any code from the original repository.

    To do this, navigate to [automl/auto-sklearn](https://github.com/automl/auto-sklearn) and hit the **fork** button in the top-right corner.
    This will copy the repository to your own account, including all of its different branches.
    You'll be able to access this at `https://github.com/{your-username}/auto-sklearn`.

*   The next steps are to download **your own fork** and to create a new [branch](https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches) where all your changes will go.
    It's important to work off the latest changes on the **development** branch.
    ```bash
    # With https
    git clone https://github.com/your-username/auto-sklearn

    # ... or with ssh
    git clone git@github.com:your-username/auto-sklearn.git

    # Navigate into the cloned repo
    cd auto-sklearn

    # Create a new branch based off the development one
    git checkout -b my_new_branch development

    # ... Alternatively, if you would prefer a more manual method
    # Show all the available branches with a * beside your current one
    git branch

    # Switch to the development branch
    git checkout development

    # Create a new branch based on the currently active branch
    git checkout -b my_new_branch
    ```

    The reason to create a new branch is two fold:

    *   One, it keeps the commit history for your changes much cleaner once we merge them in.
    *   If you have to perform a **rebase** or a **merge** later on, this will be much easier.

*   You'll need a [virtual environment](https://docs.python.org/3/tutorial/venv.html) to work in.
    If you've never used them before, now is definitely the time to start as a virtual environment lets you keep packages for a project separate.
    ```bash
    # Create a virtual environment in a folder called my-virtual-env
    python -m venv my-virtual-env

    # Activate the virtual environment
    source my-virtual-env/bin/activate
    ```
    *   A popular alternative to managing Python projects is [conda](https://docs.conda.io/en/latest/).
    *   The folder `my-virtual-env` is where dependency packages that are required for auto-sklearn will go.
    *   In general, once you have activated the virtual environment with `source my-virtual-env/bin/activate`, anything you install with `pip install` will now go into the virtual environment.
        While this environment is active, any python you run will have access to the packages here.
        If at any time you want to deactivate it simply type `deactivate` in the shell or just close the shell and open a new one.
    *   If you use Python 3.6 or lower on your machine then unfortunately auto-sklearn doesn't support this.
        Fortunately, you can check out [pyenv](https://github.com/pyenv/pyenv) which lets you switch between Python versions on the fly!

*   Now that we have a virtual environment, it's time to install all the dependencies into it.
    ```bash
    pip install -e .[test,examples,doc]

    # If you're using shells other than bash you'll need to use
    pip install -e ".[test,examples,doc]"
    ```
    *   If your only exposure to using pip is `pip install package_name` then this might be a bit confusing.
    *   If we type `pip install -e .` (notice the 'dot'), this tells `pip` to install a package located here, in this directory, `.`.
        The `-e` flag indicates that it should be editable, meaning you will not have to run `pip install .` every time you make a change and want to try it.
    *   Finally the `[test,examples,doc]` tells `pip` that there's some extra optional dependencies that we want to install.
        These are dependencies used in development but ones that are not required to actually run auto-sklearn itself.
        You can check out what these are in the `setup.py` file.
    *   If you're new to virtual environments, after performing all this, it's a great time to check out what actually exists in the `my-virtual-env` folder.

*   Now it's time to make some changes, whether it be for [documentation](#documentation), a [bug fix](#bug-fixes) or a new [features](#features).
{'fraction_non_alphanumeric': 0.07115772488906817, 'fraction_numerical': 0.0008067769261799112, 'mean_word_length': 3.567428150331614, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 20, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 2, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '454995', 'n_tokens_mistral': 3295, 'n_tokens_neox': 3137, 'n_words': 1716}