A data cleaning and quality solution for messy data, bug prevention, and leakage control.
Ideal for structured data storage where full database integration is overkill. Uses simple 1D/2D list logic with built-in validation, file management, backup and snapshot support. Dependency-free, designed by a Data Analyst/Engineer.
🚀 Features
- ✅ Safe read/write with structure validation (1D & 2D lists).
- ➕ Append support with consistency checks.
- ❌ Granular delete with filters (cutoff, keep, reverse, size).
- 💾 Backup and 📸 Snapshot support.
- 🧹 Debug and auto-clean corrupted files.
- 📚 Built-in mini-guide.
- 🎗️ Supports Multiple Console usage.
- 🗂️ Clean folder/files organization.
- 💪 Strong anti-corruption and Tamper mechanism.
Why Use This Package?
For Data Professionals (Analysts, Scientists, Engineers):
- Build quick dashboards and visualizations from real-time text data.
- Process and clean scraped or pipeline data without needing a database.
- Track, audit, and version small datasets during experimentation.
- Validate incoming data and auto-correct format issues on the fly (clean from the source).
- Run fast, repeatable data operations locally without SQL overhead.
For General Developers:
- Great for automation scripts, bots, or microservices.
- Ideal for prototyping features without setting up a database.
- Use as a flat-file backend for small apps or CLI tools.
- Snapshot and backup data safely without extra libraries.
- Handle concurrent access and reduce race-condition bugs automatically.
📦 Core Functions
w(txt_name: str, write_list: list) -> None
Write (or reset) the contents of a file, validating structure before saving to all backup locations.
r(txt_name: str, set_new: list | None = [], notify_new: bool = True) -> list | None
Read file contents. If the file is missing, return set_new and optionally notify user of new file creation.
a(txt_name: str, append_list: list) -> list
Append new rows to an existing file after validating structure. Returns the updated list.
d(txt_name: str, ...) -> tuple[int, list]
Delete matching rows with flexible options:
del_list: values to deleteindex: column index for 2D deletioncutoff: max deletions per valuekeep: retain only N per valuereverse: delete from endsize: trim to max N items
backup(txt_name: str, display=True)
Create a manual backup of a file or all (txt_name="*").
snapshot(txt_name: str, unit, gap, begin=0, display=True)
Take time-based snapshots if eligible. Supports:
unit:'minute','hour','day','month', etc.gap: how much time must passbegin: used for daily-based triggers
debug(txt_name, is_2D=None, clean=None, length=None, display=True)
Scan and optionally auto-clean a file that fails validation. Great for corrupted data recovery.
help()
Opens the interactive mini-guide documentation tool.
📁 File Organization
Each file is saved as a .txt in a structured folder. All backups and snapshots are handled automatically.
Other folders:
Backup 💾/– Manual backupsSnapshot 📸/– A timed backup
Validation files:
*_validation.txt– Schema registry per file
📦 Installation – MaxCleanerDB
pip install MaxCleanerDB
♻️ Upgrade
pip install --upgrade MaxCleanerDB
Usage Examples
**import MaxCleanerDB or import MaxCleanerDB as mdb
Write (w): Overwrite data
-
Stores a simple (1D) list of student names:
w("students", ["Alice", "Bob"]) -
Stores a 2D list (like a table of people):
Think of it like this:
Headers = [name, sex, age]
Rows = ["Eve", "female", 25], ["Adam", "male", 30]
w("people", [["Eve", "female", 25], ["Adam", "male", 30]])
Read (r): Read data or set default if missing
-
r("students")Reads the data from the "students" file. -
r("new_file", [], notify_new=True)If "new_file" doesn’t exist, it creates one with an empty list and optionally shows a notification.
Append (a): Add new entries
-
a("students", ["Charlie"])Adds "Charlie" to the list of students. -
a("people", [["Lucy", "female", 22], ["Mark", "male", 27]])Adds new rows to the "people" table.
Delete (d): Remove entries with different options
For simple lists (like names):
-
d("students", ["Bob"])Deletes "Bob" from the student list. -
d("students", ["Bob", "Charlie"])Deletes both "Bob" and "Charlie" if found.
For tables (like people list with name, sex, age):
-
d("people", ["Eve"], index=0)Deletes rows where name is "Eve" (index 0 means the name column). -
d("people", ["female"], index=1, cutoff=1)Deletes only the first row where sex is "female". -
d("people", ["female"], index=1, keep=1)Keeps only one row with sex as "female", deletes any others. -
d("people", size=2)Keeps only the last 2 entries in the list. -
d("people", ["Lucy"], index=0, reverse=True)Deletes rows with name "Lucy", starting from the bottom.
Using multiple column conditions (like WHERE in SQL):
-
d("people", [["Adam", "male"]], index=[0, 1])Deletes the row where name is "Adam" AND sex is "male". -
d("people", [["Eve", "female", 25]], index="*")Deletes the exact row ["Eve", "female", 25]. -
d("people", [["Adam", 30], ["Mark", 27]], index=[0, 2])Deletes rows where (name is "Adam" AND age is 30) OR (name is "Mark" AND age is 27)
Backup and Snapshot
-
backup("students")Makes a backup copy of the "students" file. -
backup("*")Backs up all files. -
snapshot("students", "day", 1)Takes a snapshot once a day if the last one was over a day ago. -
snapshot("*", "hour", 6)Snapshots all files every 6 hours if enough time has passed.
Debugging
-
debug("students", is_2D=False, clean=True)Checks and cleans up simple list data in "students". -
debug("people", is_2D=True, length=3)Checks if each row in "people" has 3 columns (name, sex, age).
Help
help()Shows this usage guide.
Metadata
Release files for MaxCleanerDB 3.0.9.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| maxcleanerdb-3.0.9.5.tar.gz | 36.4 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| maxcleanerdb-3.0.9.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 76.5 kB
Release files / maxcleanerdb-3.0.9.5.tar.gz
| Download URL | maxcleanerdb-3.0.9.5.tar.gz |
|---|---|
| Size | 36.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ff75bed837a455722f582b2b41ea454eae6a18421cba6b91691fd93dc9aaa6e1
|
|
BLAKE2b-256 checksum How to use checksums |
cc648c6a7aded01bbfec8314d42f9eea6b0da6cdf13501435bbf83950bd4ccb1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.7
|
Release files / maxcleanerdb-3.0.9.5-py3-none-any.whl
| Download URL | maxcleanerdb-3.0.9.5-py3-none-any.whl |
|---|---|
| Size | 40.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
13b205196e62fa9a7babf62fce481c8fcf7e547d9938a6e1c172f3286ea6d026
|
|
BLAKE2b-256 checksum How to use checksums |
c255fe3ea28adaa4c6d0971ac36bcc6fc5fcd92015fa7c5f73cdaf5e36cbe433
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.7
|
Security for MaxCleanerDB 3.0.9.5
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.