Skip to main content

Framework for controlling ground equipment

Project description Coverage report


Show how to structure a Python project.


  • Python 3.5+
  • Works on Linux, Windows, macOS, BSD

Split your code into packages, modules, and functions

  • All code should be inside some function (except perhaps if __name__ == '__main__':).
  • Split long functions into smaller functions.
  • If you need to scroll through a function over several screens, it is probably too long.
  • Functions should do one thing and one thing only.
  • Hide internals with underscores.
  • Organize related functions into modules.
  • If modules grow too large, split them.
  • Import from other modules under somepackage/ using from .somemodule import something.
  • Do file I/O on the “outside” of your code, not deep inside.

Classes vs. functions

  • Do not overuse classes.
  • Prefer immutable data structures.
  • Prefer pure functions.


  • Give the subdirectory the same name as your package.
  • Before you name your package, check that the name is not taken on (you may want to upload your package to PyPI one day).


  • In somepackage/ define what should be visible to the outside.
  • Use


Dependency management

  • Package dependencies for developers should be listed in requirements.txt.
  • Alternatively, consider using
  • Package dependencies for users of your code (who will probably install via pip) should be listed in

Code style

Type checking

Share your package


I used to recommend reStructuredText for READMEs in contrast to Markdown but PyPI no longer requires reStructuredText. You can use Markdown as noted on under “How can I upload a project description in a different format?”.

Example shown here:

Suggestions? Corrections? Pull requests?

Yes please!

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for Barracuda, version 0.0.2
Filename, size File type Python version Upload date Hashes
Filename, size Barracuda-0.0.2-py2.py3-none-any.whl (6.2 kB) File type Wheel Python version py2.py3 Upload date Hashes View
Filename, size Barracuda-0.0.2.tar.gz (5.5 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page