If you're starting a new GitHub repository for a Python package, it helps to start from a template. We have one such template at https://github.com/Quantum-Accelerators/template. Click "Use this template", replace all instances of "template" with your desired package name, and you should be good to go! Further details can be found in the template repository's documentation and corresponding video.
When developing any new software package in the group or contributing to existing open-source software packages, it is absolutely essential to write and regularly use unit tests (i.e. tests that evaluate the behavior and output of your various functions and classes). Simply put, this is the only way to know if your code is working as intended and if changes break your code in unexpected ways.
While it may seem annoying at first to develop unit tests, they will save you an immense amount of pain in the long-term. We use pytest for our unit tests. The Turing Way Guide for Reproducible Research has a "Code Testing" section that is very useful. In general, if you are developing code to be used by others, these tests should run automatically on GitHub via a continuous integration setup. There is also a "Continuous Integration" section in the Turing Way guide.
Most of the content in this handbook is merely a suggestion and a matter of personal preference. Writing unit tests for any production software, however, is a requirement.
Handling Paths
Where possible, you should strive for your code to be platform-agnostic. One of the main things to keep in mind is that different operating systems handle paths different. As a general rule, you should never define paths in your code with string concatenation (i.e. do not do "/path/to/my/" + "folder"). Instead, you should use the pathlib library. For instance: