This is the template project template that we use internally when creating new python tools. It includes features such as argument parsing, configuration management, and a modular structure to facilitate scalable and maintainable code development.
We decided to make this available along with our other tools to allow people to use a well engineered starting point when creating their own tools.
We also proide 2 other templates which we use.
- Modular Architecture: Organize your code into modules for better maintainability.
- Argument Parsing: Easily handle command-line arguments using argparse.
- Configuration Management: Generate configuration objects from command-line arguments.
- Custom Exceptions: Implement custom exceptions for specific error handling.
To install the template roject, clone the repository and navigate to the project directory:
git clone https://github.com/DevelopersToolbox/template-python-project.git
cd template-python-projectIt is recommended to use a virtual environment to manage dependencies. You can create and activate a virtual environment using the following commands:
python -m venv venv
source venv/bin/activate  # On Windows, use `venv\Scripts\activate`Install the required dependencies:
pip install -r requirements.txtTo run the template roject, execute the run function from the main script:
python main.py --required <value>The application supports several command-line arguments:
- -h, --help: Show help message and exit.
- -d, --debug: Enable debug mode for verbose output.
- -v, --verbose: Enable verbose output to show scan results as they come in.
- -V, --version: Show the program's version number and exit.
- -i, --optional-integer: An optional integer argument (default: 2).
- -s, --optional-string: An optional string argument (default: "me").
- -r, --required: A required string argument.
Example usage:
python main.py -r "required_value" -i 10 -s "optional_string"The project is organized as follows:
template-python-project/
├── modules/
│   ├── __init__.py
│   ├── cli.py
│   ├── config.py
│   ├── exceptions.py
│   └── globals.py
├── main.py
├── requirements.txt
└── README.md
- modules/: Contains the core modules of the application.- cli.py: Handles the command-line arguments and main program flow.
- config.py: Handles configuration creation from command-line arguments.
- exceptions.py: Handles custom exceptions.
- globals.py: Defines global constants used across the application.
 
- main.py: The main script that orchestrates argument parsing and program execution.
- requirements.txt: Lists the dependencies required for the project.
- README.md: The file you are currently reading.
