# Turning your Python scripts into reusable, general-purpose software ## Overview When using Python, you will use many external packages (pandas, numpy etc.). This course will introduce how to develop your software into a general-purpose tool that can be used inside or outside a Python environment. We will also cover some tools to make developing robust, maintainable code a bit easier. For this course you will need a very basic knowledge of Python, and a laptop with conda (miniconda or anaconda) installed. If you need any help prior to the course (e.g. if you have a different Python installation) contact Adam Tyson (adam.tyson@ucl.ac.uk). ## Contents * Designing a Python package * Creating command line entry points * Structuring your project * Automated tools for formatting your code * Running automated tests on your software * Versioning your code * Packaging your code and releasing your software ## Links * [Slides](https://docs.google.com/presentation/d/1N6AOkBGkMOhELUfVsnFVRUiZ_jI94QYD_M7Hr42PSro/edit?usp=sharing) * [Sample .gitignore file](https://gist.githubusercontent.com/adamltyson/4d2b2cab224aeb94701fdddc4b894206/raw/998471179d290cf9204eb8cfe799dc32ef92e292/.gitignore) * [BSD-3-Clause license](https://opensource.org/licenses/BSD-3-Clause) * [GitHub markdown guide](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax) * [black config](https://gist.githubusercontent.com/adamltyson/559678f224ae0e1f08cf1768b319793c/raw/db170fde3be3e8511b987fd019d420a52edfb9b9/pyproject.toml) * [pre-commit config file](https://gist.githubusercontent.com/adamltyson/06dc8f8760feee57a4b41aa66833c835/raw/da2050d7eb4db28f17d28f591fa6eefd98946408/.pre-commit-config.yaml) * [GitHub actions workflow](https://gist.githubusercontent.com/adamltyson/c4314e88d73d17a5e93392839aeb5333/raw/6c3e1b3382bd9eec45314945c7079ec7ebfc7b3f/test_and_deploy.yml)