> For the complete documentation index, see [llms.txt](https://bible.cornellappdev.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bible.cornellappdev.com/standards/web/python.md).

# Python

The following `README` articulates how to setup your development environment for development with `Python` for `AppDev`-related projects.

1. Download [`Atom`](https://atom.io/)
2. Install [`Nuclide`](https://nuclide.io/)
3. Check this box in the `Nuclide` options screen under the "Hyperclick" header:

![Install Recommended Packages](https://2737206121-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LDzutXt_2v11rvZJ4c7%2F-LDzuxnVH0adQqgy0XbR%2F-LDzuyX5d8qF691rrSde%2Finstall-recommended-packages.png?generation=1527933300868888\&alt=media)

1. **Uncheck** this box in the `Nuclide` options screen under the "Nuclide-python" header:

![Don't lint with flake8](https://2737206121-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LDzutXt_2v11rvZJ4c7%2F-LDzuxnVH0adQqgy0XbR%2F-LDzuyX7JfFx5i-076pQ%2Fdont-lint-with-flake8.png?generation=1527933300241341\&alt=media)

1. Restart `Atom`
2. Add the following to the bottom of your `config.cson` for `Atom`, found by going to `Atom > Config...`:

```
".python.source":
  editor:
    tabLength: 2
```

1. Make sure the following packages are downloaded (install them if they are not):

![Install Recommended Packages](https://2737206121-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LDzutXt_2v11rvZJ4c7%2F-LDzuxnVH0adQqgy0XbR%2F-LDzuyXDX8pNrXnJGzWh%2Fpy-packages.png?generation=1527933300266593\&alt=media)

1. Refer the `linter-pylint` package to this directory's `.pylintrc` file:

![Pylint Setup](https://2737206121-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LDzutXt_2v11rvZJ4c7%2F-LDzuxnVH0adQqgy0XbR%2F-LDzuyXFOmU2zT3qnTqI%2Fpylint.png?generation=1527933299898858\&alt=media)

## Linting

[`Here`](http://docutils.sourceforge.net/sandbox/py-rest-doc/utils/pylintrc) is a great resource for understanding the general format of the `.pylintrc` file. Changes are welcome, so long as they make sense, and `PR`'s are required to make any major changes to linting configs, as this affects how we interact with our code.
