https://github.com/developerstoolbox/template-python-project
A baseline for creating python projects for security projects.
https://github.com/developerstoolbox/template-python-project
baseline defensive-security neutral-security offsensive-security security security-tools wolfsoftware
Last synced: 3 months ago
JSON representation
A baseline for creating python projects for security projects.
- Host: GitHub
- URL: https://github.com/developerstoolbox/template-python-project
- Owner: DevelopersToolbox
- License: mit
- Created: 2022-11-15T14:23:47.000Z (about 3 years ago)
- Default Branch: master
- Last Pushed: 2025-07-28T06:21:53.000Z (6 months ago)
- Last Synced: 2025-07-28T08:22:31.229Z (6 months ago)
- Topics: baseline, defensive-security, neutral-security, offsensive-security, security, security-tools, wolfsoftware
- Language: Python
- Homepage:
- Size: 164 KB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
- Code of conduct: .github/CODE_OF_CONDUCT.md
- Citation: CITATION.cff
- Codeowners: .github/CODEOWNERS
- Security: .github/SECURITY.md
Awesome Lists containing this project
README
## Overview
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.
- [template package CLI](https://github.com/DevelopersToolbox/template-package-cli)
- [template package importable](https://github.com/DevelopersToolbox/template-package-importable)
## Features
- **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.
## Installation
To install the template roject, clone the repository and navigate to the project directory:
```bash
git clone https://github.com/DevelopersToolbox/template-python-project.git
cd template-python-project
```
It is recommended to use a virtual environment to manage dependencies. You can create and activate a virtual environment using the following commands:
```bash
python -m venv venv
source venv/bin/activate # On Windows, use `venv\Scripts\activate`
```
Install the required dependencies:
```bash
pip install -r requirements.txt
```
## Usage
To run the template roject, execute the `run` function from the main script:
```bash
python main.py --required
```
### Command-Line Arguments
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:
```bash
python main.py -r "required_value" -i 10 -s "optional_string"
```
## Project Structure
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.