Skip to main content
create-dump logo

PyPI version Python Wheel Release

Build status Codecov Test Coverage Code style: black Ruff Security

Downloads OS Python Versions

License: MIT

create-dump

Enterprise-Grade Code Dump Utility for Monorepos

create-dump is a production-ready CLI tool for automated code archival in large-scale monorepos. It generates branded Markdown dumps with Git metadata, integrity checksums, flexible archiving, retention policies, path safety, full concurrency, and SRE-grade observability.

Designed for SRE-heavy environments (Telegram bots, microservices, monorepos), it ensures reproducible snapshots for debugging, forensics, compliance audits, and CI/CD pipelines. It also includes a rollback command to restore a project from a dump file.

Built for Python 3.11+, leveraging AnyIO, Pydantic, Typer, Rich, and Prometheus metrics.


⚡ Quick Start

Prerequisites

  • Python: 3.11 or higher
  • Git: Optional, but recommended for metadata and git ls-files support.
  • Docker/Podman: Optional, if running via container.

Installation

Via PyPI:

pip install create-dump

Via Source (Dev):

git clone https://github.com/dhruv13x/create-dump.git
cd create-dump
pip install -e .[dev]

Run (The "Hello World")

Navigate to your project root and run:

create-dump

This creates a markdown snapshot of your current directory in create_dump_output/ (or root).

Demo Snippet

Copy-paste this to see it in action:

# 1. Install
pip install create-dump

# 2. Dump your current folder (excluding hidden files)
create-dump single --use-gitignore --no-toc

# 3. View the result
head -n 20 *_all_create_dump_*.md

✨ Features

Core

  • Branded Markdown: Auto-generated TOC (list or tree), language detection, and metadata headers.
  • Smart Collection: Respects .gitignore automatically. Use --git-ls-files for blazing fast, Git-native file discovery.
  • Multi-Mode:
    • single: Dump one project/directory.
    • batch: Recursively dump multiple subprojects in a monorepo.
    • rollback: Restore a project from a dump file.
  • Live Watch: Run with --watch to auto-update the dump whenever files change.

Performance

  • Async & Concurrent: Powered by anyio with up to 16 parallel workers for massive speedups on large repos.
  • Smart Caching: Hashes config and file metadata to skip processing unchanged files.
  • Low Footprint: Optimized for CI/CD pipelines.

Security & SRE

  • Secret Scanning: Integrated detect-secrets scanning.
    • Fail on secret detection: --scan-secrets
    • Auto-redact secrets: --hide-secrets
  • Safe Paths: Anti-traversal guards to prevent Zip-Slip attacks.
  • Observability: Prometheus metrics server (default port 8000) and structured JSON logging.
  • ChatOps: Native push notifications to Slack, Discord, Telegram, and ntfy.sh.

🛠️ Configuration

You can configure create-dump via CLI arguments, Environment Variables (loaded into config), or a TOML file (create_dump.toml or pyproject.toml).

Environment Variables & TOML Keys

Define these in [tool.create-dump] section of pyproject.toml or create_dump.toml.

Key Type Description Default
dest Path Default output destination. .
use_gitignore Bool Exclude files listed in .gitignore. true
git_meta Bool Include Branch/Commit hash in header. true
max_file_size_kb Int Skip files larger than this KB. 5000
excluded_dirs List Directories to always ignore (e.g., .git, node_modules). [...]
metrics_port Int Port for Prometheus metrics. 8000
git_ls_files Bool Use Git index for file list. false
scan_secrets Bool Enable secret scanning. false
hide_secrets Bool Redact secrets if found. false

CLI Arguments (create-dump single)

Flag Shorthand Description
--dest <path> Output directory.
--watch Enable live-watch mode.
--git-ls-files Use git ls-files (fastest collection).
--diff-since <ref> Dump only files changed since Git ref.
--scan-secrets Enable secret detection.
--hide-secrets Redact detected secrets (requires scan).
--secret-patterns Add custom regex patterns for secrets.
--scan-todos Extract TODO/FIXME comments into summary.
--archive -a Compress previous dumps into ZIP.
--compress -c Gzip the output .md.gz.
--format <fmt> Output format (md or json).
--db-provider <type> Dump DB (postgres, mysql) alongside code.
--db-host <host> Database host (default: localhost).
--db-port <port> Database port.
--db-user <user> Database user.
--db-pass-env <var> Env var name containing DB password.
--notify-slack <url> Send webhook on completion.
--dry-run -d Simulate without writing files.

Run create-dump --help for the full list.


🏗️ Architecture

Directory Tree

src/create_dump/
├── cli/             # Entry points (main, single, batch)
├── scanning/        # Secret scanning & security
├── collector/       # File gathering (glob/git)
├── workflow/        # Processing pipelines
├── writing/         # Output generation (MD/JSON)
├── archive/         # Compression & retention
├── rollback/        # Restore functionality
└── core.py          # Config & Models

Data Flow

  1. CLI Entry: User invokes create-dump (via Typer).
  2. Config Load: Merges defaults, pyproject.toml, and CLI args.
  3. Collector: Finds files via glob or git ls-files. Applies ignores.
  4. Processor (Async):
    • Reads file content.
    • Middlewares: Secret Scan -> TODO Scan -> Language Detect.
  5. Writer: Aggregates processed files into a Markdown/JSON artifact.
  6. Post-Process:
    • Archiver: Rotates old dumps.
    • Notifier: Sends Slack/Discord alerts.

🐞 Troubleshooting

Error Message Possible Cause Solution
No matching files found .gitignore or exclude patterns are too aggressive. Check patterns or run with --no-use-gitignore.
RecursionError Deeply nested directory or symlink loop. Use --exclude on the problematic path.
Secret detected in ... Code contains an API key/password. Rotate the key! Or use --hide-secrets / --secret-patterns to ignore/redact.
git ls-files failed Not inside a Git repository. Run git init or don't use --git-ls-files.
DB connection failed Wrong credentials or host unreachable. Check --db-host, --db-port, and --db-pass-env.

Debug Mode: Run with -v or --verbose to see detailed logs and stack traces.

create-dump single -v

🤝 Contributing

We love contributions! Please check our CONTRIBUTING.md for details.

Dev Setup:

  1. Clone: git clone ...
  2. Install: pip install -e .[dev]
  3. Test: pytest
  4. Lint: ruff check .

🗺️ Roadmap

  • Smart Caching: Re-use processing for unchanged files.
  • Rollback Command: Restore projects from dumps.
  • Database Dumps: Postgres/MySQL integration.
  • S3/Cloud Upload: Direct upload of dumps/archives.
  • PDF Export: Generate PDF reports instead of Markdown.
  • Plugin System: Allow custom middleware via Python entrypoints.

Metadata

Release files for create-dump 16.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for create-dump 16.0.0
File Size Uploaded
create_dump-16.0.0.tar.gz 1.1 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for create-dump 16.0.0
File Interpreter ABI Platform
create_dump-16.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.2 MB

Release files / create_dump-16.0.0.tar.gz

Download URL create_dump-16.0.0.tar.gz
Size 1.1 MB
Tags Source
SHA-256 checksum
How to use checksums
06f354277b20207964c6b1a59f852272df08e21dc35fe22dd923cde6576be4e0
BLAKE2b-256 checksum
How to use checksums
55eba05b9af6ff14a3c6a2cf645aca85433c522e7ae267c2b8f1249492d8a15d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 3, 2026.

Transparency log

Release files / create_dump-16.0.0-py3-none-any.whl

Download URL create_dump-16.0.0-py3-none-any.whl
Size 76.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
80c7dcd2751248b7e858752468435f9bf7967e1bfdd33069ea4b27c774f6eddb
BLAKE2b-256 checksum
How to use checksums
92a729ff3ba062856250b85a73103f2d7f94115b6f53b5c3fee2e69bee1b4ee0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 3, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

16.0.0 This release

2 release files

15.0.1

2 release files

14.0.4

2 release files

14.0.3

2 release files

14.0.2

2 release files

11.0.0

2 release files

10.0.0

2 release files

9.0.0

2 release files

6.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page