<commit_before># Contributing

The [mpld3](https://mpld3.github.io) project welcomes new contributors.
The package contains both javascript code and Python code, which require slightly different development setups.

## General guidelines

Code contribution is done via github. You can fork and clone the source from the [mpld3 github page](http://github.com/jakevdp/mpld3).
Whether you are working on the Javascript side, the Python side, or both, we recommend doing the following (for information about how to use GitHub, please see the [GitHub help page](https://help.github.com/)):

1. Register for a GitHub account.

2. Fork the [main mpld3 repository](http://github.com/jakevdp/mpld3), and clone it to your local machine.

3. Create a new branch in which to write your feature: e.g.

       [~]$ git checkout -b my-feature-name

4. Modify the Python and/or Javascript code to implement your new feature

5. Add tests and/or examples for your feature if applicable (see instructions below)

6. Run javascript and/or Python unit tests and make sure they pass (see instructions below)

7. Push your new branch to your fork on GitHub: e.g.

       [~]$ git push origin my-feature-name

8. Go to http://github.com/yourusername/mpld3 and open a pull request against the main mpld3 repository (if you followed the above steps, you should see a big green "Compare and Pull Request" button on your fork's webpage).

One of the mpld3 maintainers will then respond and (hopefully!) merge your contribution into the repository.

## Building the Python Code
### mplexporter submodule
The Python code depends on the ``mplexporter`` submodule via the ``git submodule`` tool.
Before building the Python source, you should run

    [~]$ python setup.py submodule

or

    [~]$ git submodule update<commit_msg>Update formatting in CONTRIBUTE.md<commit_after># Contributing

The [mpld3](https://mpld3.github.io) project welcomes new contributors.
The package contains both javascript code and Python code, which require slightly different development setups.

## General guidelines

Code contribution is done via github. You can fork and clone the source from the [mpld3 github page](http://github.com/jakevdp/mpld3).
Whether you are working on the Javascript side, the Python side, or both, we recommend doing the following (for information about how to use GitHub, please see the [GitHub help page](https://help.github.com/)):

1. Register for a GitHub account.

2. Fork the [main mpld3 repository](http://github.com/jakevdp/mpld3), and clone it to your local machine.

3. Create a new branch in which to write your feature: e.g.

         [~]$ git checkout -b my-feature-name

4. Modify the Python and/or Javascript code to implement your new feature

5. Add tests and/or examples for your feature if applicable (see instructions below)

6. Run javascript and/or Python unit tests and make sure they pass (see instructions below)

7. Push your new branch to your fork on GitHub: e.g.

         [~]$ git push origin my-feature-name

8. Go to http://github.com/yourusername/mpld3 and open a pull request against the main mpld3 repository (if you followed the above steps, you should see a big green "Compare and Pull Request" button on your fork's webpage).

One of the mpld3 maintainers will then respond and (hopefully!) merge your contribution into the repository.

## Building the Python Code
### mplexporter submodule
The Python code depends on the ``mplexporter`` submodule via the ``git submodule`` tool.
Before building the Python source, you should run

    [~]$ python setup.py submodule

or

    [~]$ git submodule update
{'fraction_non_alphanumeric': 0.07488256424426637, 'fraction_numerical': 0.009394860458690245, 'mean_word_length': 4.12022630834512, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6367156', 'n_tokens_mistral': 999, 'n_tokens_neox': 951, 'n_words': 500}