Skip to content

A baseline for creating python projects for security projects.

License

Notifications You must be signed in to change notification settings

DevelopersToolbox/template-python-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GreyTeamToolbox logo
Github Build Status License Created
Release Released Commits since release

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.

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:

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:

python -m venv venv
source venv/bin/activate  # On Windows, use `venv\Scripts\activate`

Install the required dependencies:

pip install -r requirements.txt

Usage

To run the template roject, execute the run function from the main script:

python main.py --required <value>

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:

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.