# Fylex: The Linux File Ninja
[](https://pypi.org/project/fylex/)
[](https://www.python.org/)
[](https://pepy.tech/projects/fylex)
[](https://opensource.org/licenses/MIT)
[](https://postimg.cc/WtSvN5rF)
**Fylex** is a **production-ready, Linux-tailored file management tool** that combines the best of
`rsync`, `cp`, and Python’s `shutil` — but goes **beyond** with:
* **Smart Copy & Move** with hashing (xxhash, blake3, SHA, MD5)
* **Advanced conflict resolution** (rename, skip, replace, larger/smaller, newer/older, prompt)
* **Filters**: regex, glob, exact filename matches, inclusion/exclusion
* **Safety nets**: undo, redo, backup of deprecated files
* **Data integrity**: hash verification, SQLite-backed hash cache for deduplication
* **Metadata preservation**: permissions, timestamps, xattrs, ACLs (Linux-specific)
* **CLI & Python API** for flexible usage
##
### Feature comparison
| Feature / Tool | Fylex | cp (coreutils) | rsync | shutil (Python stdlib) |
|---------------------------------|-------|----------------|-------|-------------------------|
| Primary purpose | Smart local copy/move with safety nets | Basic copy | Fast sync (local/remote) | Library-level file ops |
| Undo / Redo | Yes — built-in JSON journaling | No | No | No |
| Hash verification | Yes — xxhash, blake3, sha256, etc. | No | Partial — checksums optional | No |
| Hash cache (SQLite) | Yes — avoids rehashing unchanged files | No | No | No |
| Duplicate detection (dest) | Yes — size + hash | No | Partial — based on size/checksums | No |
| Conflict resolution | Extensive — rename, replace, skip, newer/older, larger/smaller, prompt | None — overwrite only | Limited — flags like `--backup`, `--suffix` | None |
| Metadata preservation | Yes — mtime, perms, xattrs, ACLs on Linux | Partial — `-a` preserves many | Partial — `-a` preserves many | Partial — `copystat` only |
| Atomic writes | Yes — via `fylex.tmp` | No | Partial — temp options exist | No |
| Logging / audit trail | Yes — JSON logs per process | No | Partial — verbose logs only | No |
| CLI + Python API | Yes — both | CLI only | CLI only (bindings exist) | Python API only |
| Delta transfer (network) | No — local only | No | Yes | No |
| Remote / cloud support | No — local-first | No | Yes — ssh/rsyncd | No |
| Cross-platform | Partial — Linux-first (xattrs/ACL best) | Yes | Yes | Yes |
| Performance (local) | Very good — uses `copy_file_range` / `sendfile` | Good | Very good — efficient I/O | Moderate |
| Learning curve | Moderate — many options | Very low | Moderate to high — many options | Low |
| Best fit | Local integrity-critical workflows, reversible ops | Quick one-off copies | Local/remote sync and bandwidth-efficient backups | Small Python scripts |
---
## Honest strengths (where Fylex shines)
* **Undo / Redo** — Most competitors don’t offer a built-in reversible operation for arbitrary copy/move workflows. This is a major safety feature for power users.
* **JSON audit trail** — Every process writes machine-readable logs that enable reproducibility and automation (and fuel the undo/redo).
* **Hash verification + hash cache** — Optional verification plus an on-disk SQLite cache avoids repeated hashing of unchanged files and speeds repeated operations.
* **Flexible conflict resolution** — Many realistic conflict policies (rename with suffix, replace, choose larger/newer, prompt) are available out-of-the-box.
* **Linux metadata handling** — Attempts to preserve xattrs/ACLs when system tools are available—valuable for server or system admin workflows.
* **Atomic writes & backups** — Writes to a `.tmp` area and moves replaced files to `fylex.deprecated/PROCESS_ID` to avoid data loss during partial operations.
* **Good local performance** — Uses `copy_file_range` or `sendfile` and falls back sensibly for portability.
## Honest limitations (where other tools are better)
* **Not a network delta-sync tool** — If you need efficient remote sync over low bandwidth, `rsync` or `rclone` is better (rsync implements delta transfer).
* **Not a full backup system** — For encrypted, deduplicated backups with retention/versioning, choose `borg`/`restic`.
* **Linux-first** — Windows/macOS will work for basic operations, but xattr/ACL preservation and some system calls are Linux-specific; Fylex is intentionally optimized for Linux environments.
* **No built-in remote cloud backends** — If you need native S3/GoogleDrive/OneDrive support, `rclone` is the tool of choice.
* **Single-process / scale** — Current design favors correctness and simplicity; large-scale parallel distributed copying may require additional engineering (e.g., a distributed worker model).
* **Delta-copy library replacement** — You mentioned earlier replacing `pyrsync2` with a custom mechanism; Fylex does **not** implement network delta transfers (it focuses on local efficiency and correctness).
##
## Safety Nets: Reliability First
Fylex is built with **data safety as priority**:
* **Undo**: Rollback the last copy/move operation (removes created files, restores moved ones).
* **Redo**: Replay an operation exactly as before.
* **Backups**: Replaced/conflicting files are moved into `fylex.deprecated/` (per process).
* **JSON logs**: Every operation is journaled (`json/{process_id}.json` + `.jsonl`).
* **Verification**: Optional hash verification ensures copy integrity.
* **Retries**: Up to 5 retries (`MAX_RETRIES`) on hash mismatch.
* **Protections**: Prevents overwriting itself, copying into subdirectories, or backup loops.
##
## Installation
```bash
pip install fylex
```
Requires Python **3.8+**.
Linux recommended (for full xattr/ACL support).
##
## Command Line Usage
### Copy files
```bash
fylex copy ~/Downloads ~/Backup --resolve rename --algo xxhash --verify --verbose
```
* Smartly copies, resolves conflicts by renaming, verifies integrity via hash.
* Deprecated/replaced files stored under `~/Backup/fylex.deprecated/PROCESS_ID/`.
### Move files
```bash
fylex move ./data ./archive --resolve newer --match-glob "*.csv"
```
* Moves only `.csv` files, replacing only if source is newer.
### Undo
```bash
fylex undo 1002
```
* Undoes process with ID `1002`.
### Redo
```bash
fylex redo 1002
```
* Replays process with ID `1002`.
##
## Python API Usage
```python
from fylex import filecopy, filemove, undo, redo
# Copy with filters & conflict resolution
filecopy(
src="~/Downloads",
dest="~/Backup",
resolve="rename",
algo="xxhash",
verify=True,
match_glob="*.jpg",
verbose=True
)
# Move and preserve metadata
filemove("project/", "archive/", resolve="newer", preserve_meta=True)
# Undo / Redo
undo("1002")
redo("1002")
```
##
## Function Reference
### `filecopy(src, dest, ...)`
**Description:** Smartly copies files from `src` to `dest` with conflict handling, filters, and safety nets.
**Parameters:**
| Param | Type | Default | Description | |
| ----------------- | ----------- | ---------- | ----------------------------------------------------------------------------------------------- | --------------------------------------- |
| `src` | `str` | `Path` | required | Source file or directory |
| `dest` | `str` | `Path` | required | Destination directory |
| `resolve` | `str` | `"rename"` | Conflict strategy: `rename`, `replace`, `skip`, `larger`, `smaller`, `newer`, `older`, `prompt` | |
| `algo` | `str` | `"xxhash"` | Hash algo: `xxhash`, `blake3`, `md5`, `sha256`, `sha512` | |
| `chunk_size` | `int` | `16MB` | Buffer size for reading files | |
| `verbose` | `bool` | `True` | Log to stdout | |
| `dry_run` | `bool` | `False` | Simulate only | |
| `summary` | `str` | `Path` | `None` | Path to copy `fylex.log` summary |
| `match_regex` | `str` | `None` | Regex include filter | |
| `match_names` | `list[str]` | `None` | Exact names include filter | |
| `match_glob` | `list[str]` | `None` | Glob include filter | |
| `exclude_regex` | `str` | `None` | Regex exclude filter | |
| `exclude_names` | `list[str]` | `None` | Exact names exclude filter | |
| `exclude_glob` | `list[str]` | `None` | Glob exclude filter | |
| `recursive_check` | `bool` | `False` | Dedup check recursively in `dest` | |
| `verify` | `bool` | `False` | Verify hashes after copy | |
| `has_extension` | `bool` | `False` | Match file extension in dedup check | |
| `no_create` | `bool` | `False` | Do not create `dest` if missing | |
| `preserve_meta` | `bool` | `True` | Preserve timestamps, permissions, xattrs, ACLs | |
| `backup` | `str` | `Path` | `"fylex.deprecated"` | Folder for deprecated/conflicting files |
| `recurse` | `bool` | `False` | Traverse subdirectories in `src` | |
**Example:**
```python
filecopy("photos", "photos_backup", resolve="newer", match_glob="*.png", verify=True)
```
##
### `filemove(src, dest, ...)`
Same params as `filecopy`, but moves files instead.
If conflicts exist, originals are moved into backup.
##
### `undo(p_id, verbose=True, force=False)`
Rollback a process by ID.
| Param | Type | Description |
| --------- | ------ | --------------------------------------- |
| `p_id` | `str` | Process ID (JSON log ID) |
| `verbose` | `bool` | Enable logs |
| `force` | `bool` | Continue undo even if some entries fail |
##
### `redo(p_id, verbose=True, force=False)`
Replay a process by ID. Same parameters as `undo`.
##
## Example Use Cases
* **Daily backup with safety nets**
```bash
fylex copy ~/work ~/backup --resolve newer --verify --summary=backup.log
```
* **Selective move**
```bash
fylex move ./data ./archive --match-regex ".*2025.*\.csv"
```
* **Quick rollback**
```bash
fylex undo 1021
```
* **Replay last operation for reproducibility**
```bash
fylex redo 1021
```
##
## Internals
* Hash cache stored in `file_cache.db` (SQLite)
* JSON logs in `json/` (both `.jsonl` and `.json` formats)
* Temporary files in `dest/fylex.tmp/` for atomic writes
* Backups in `dest/fylex.deprecated/{process_id}/`
##
## License
MIT © 2025 Sivaprasad Murali
---
✨ With **Fylex**, file management on Linux is no longer just copying and moving — it’s **safe, verifiable, reversible, and smart**.
---
Raw data
{
"_id": null,
"home_page": null,
"name": "fylex",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "file, copy, move, cli, linux, utility, xxhash, blake3, filter, conflict, backup, undo, redo, hashing, checksum, deduplication, data-integrity, file-management, sync, devtool, cli-tool, python-tool, smart-copy, smart-move, fylex",
"author": null,
"author_email": "Sivaprasad Murali <sivaprasad.off@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/1d/24/9450461dceb304a341c64d1ee3b4ad2fdc389ec69fff4e2a18e19cd4c8ae/fylex-1.0.2.tar.gz",
"platform": null,
"description": "# Fylex: The Linux File Ninja\n\n[](https://pypi.org/project/fylex/)\n[](https://www.python.org/)\n[](https://pepy.tech/projects/fylex)\n[](https://opensource.org/licenses/MIT)\n\n[](https://postimg.cc/WtSvN5rF)\n\n**Fylex** is a **production-ready, Linux-tailored file management tool** that combines the best of\n`rsync`, `cp`, and Python\u2019s `shutil` \u2014 but goes **beyond** with:\n\n* **Smart Copy & Move** with hashing (xxhash, blake3, SHA, MD5)\n* **Advanced conflict resolution** (rename, skip, replace, larger/smaller, newer/older, prompt)\n* **Filters**: regex, glob, exact filename matches, inclusion/exclusion\n* **Safety nets**: undo, redo, backup of deprecated files\n* **Data integrity**: hash verification, SQLite-backed hash cache for deduplication\n* **Metadata preservation**: permissions, timestamps, xattrs, ACLs (Linux-specific)\n* **CLI & Python API** for flexible usage\n\n\n##\n### Feature comparison \n\n| Feature / Tool | Fylex | cp (coreutils) | rsync | shutil (Python stdlib) |\n|---------------------------------|-------|----------------|-------|-------------------------|\n| Primary purpose | Smart local copy/move with safety nets | Basic copy | Fast sync (local/remote) | Library-level file ops |\n| Undo / Redo | Yes \u2014 built-in JSON journaling | No | No | No |\n| Hash verification | Yes \u2014 xxhash, blake3, sha256, etc. | No | Partial \u2014 checksums optional | No |\n| Hash cache (SQLite) | Yes \u2014 avoids rehashing unchanged files | No | No | No |\n| Duplicate detection (dest) | Yes \u2014 size + hash | No | Partial \u2014 based on size/checksums | No |\n| Conflict resolution | Extensive \u2014 rename, replace, skip, newer/older, larger/smaller, prompt | None \u2014 overwrite only | Limited \u2014 flags like `--backup`, `--suffix` | None |\n| Metadata preservation | Yes \u2014 mtime, perms, xattrs, ACLs on Linux | Partial \u2014 `-a` preserves many | Partial \u2014 `-a` preserves many | Partial \u2014 `copystat` only |\n| Atomic writes | Yes \u2014 via `fylex.tmp` | No | Partial \u2014 temp options exist | No |\n| Logging / audit trail | Yes \u2014 JSON logs per process | No | Partial \u2014 verbose logs only | No |\n| CLI + Python API | Yes \u2014 both | CLI only | CLI only (bindings exist) | Python API only |\n| Delta transfer (network) | No \u2014 local only | No | Yes | No |\n| Remote / cloud support | No \u2014 local-first | No | Yes \u2014 ssh/rsyncd | No |\n| Cross-platform | Partial \u2014 Linux-first (xattrs/ACL best) | Yes | Yes | Yes |\n| Performance (local) | Very good \u2014 uses `copy_file_range` / `sendfile` | Good | Very good \u2014 efficient I/O | Moderate |\n| Learning curve | Moderate \u2014 many options | Very low | Moderate to high \u2014 many options | Low |\n| Best fit | Local integrity-critical workflows, reversible ops | Quick one-off copies | Local/remote sync and bandwidth-efficient backups | Small Python scripts |\n\n---\n\n## Honest strengths (where Fylex shines)\n\n* **Undo / Redo** \u2014 Most competitors don\u2019t offer a built-in reversible operation for arbitrary copy/move workflows. This is a major safety feature for power users.\n* **JSON audit trail** \u2014 Every process writes machine-readable logs that enable reproducibility and automation (and fuel the undo/redo).\n* **Hash verification + hash cache** \u2014 Optional verification plus an on-disk SQLite cache avoids repeated hashing of unchanged files and speeds repeated operations.\n* **Flexible conflict resolution** \u2014 Many realistic conflict policies (rename with suffix, replace, choose larger/newer, prompt) are available out-of-the-box.\n* **Linux metadata handling** \u2014 Attempts to preserve xattrs/ACLs when system tools are available\u2014valuable for server or system admin workflows.\n* **Atomic writes & backups** \u2014 Writes to a `.tmp` area and moves replaced files to `fylex.deprecated/PROCESS_ID` to avoid data loss during partial operations.\n* **Good local performance** \u2014 Uses `copy_file_range` or `sendfile` and falls back sensibly for portability.\n\n## Honest limitations (where other tools are better)\n\n* **Not a network delta-sync tool** \u2014 If you need efficient remote sync over low bandwidth, `rsync` or `rclone` is better (rsync implements delta transfer).\n* **Not a full backup system** \u2014 For encrypted, deduplicated backups with retention/versioning, choose `borg`/`restic`.\n* **Linux-first** \u2014 Windows/macOS will work for basic operations, but xattr/ACL preservation and some system calls are Linux-specific; Fylex is intentionally optimized for Linux environments.\n* **No built-in remote cloud backends** \u2014 If you need native S3/GoogleDrive/OneDrive support, `rclone` is the tool of choice.\n* **Single-process / scale** \u2014 Current design favors correctness and simplicity; large-scale parallel distributed copying may require additional engineering (e.g., a distributed worker model).\n* **Delta-copy library replacement** \u2014 You mentioned earlier replacing `pyrsync2` with a custom mechanism; Fylex does **not** implement network delta transfers (it focuses on local efficiency and correctness).\n\n##\n\n\n\n\n## Safety Nets: Reliability First\n\nFylex is built with **data safety as priority**:\n\n* **Undo**: Rollback the last copy/move operation (removes created files, restores moved ones).\n* **Redo**: Replay an operation exactly as before.\n* **Backups**: Replaced/conflicting files are moved into `fylex.deprecated/` (per process).\n* **JSON logs**: Every operation is journaled (`json/{process_id}.json` + `.jsonl`).\n* **Verification**: Optional hash verification ensures copy integrity.\n* **Retries**: Up to 5 retries (`MAX_RETRIES`) on hash mismatch.\n* **Protections**: Prevents overwriting itself, copying into subdirectories, or backup loops.\n\n##\n\n## Installation\n\n```bash\npip install fylex\n```\n\nRequires Python **3.8+**.\nLinux recommended (for full xattr/ACL support).\n\n##\n\n## Command Line Usage\n\n### Copy files\n\n```bash\nfylex copy ~/Downloads ~/Backup --resolve rename --algo xxhash --verify --verbose\n```\n\n* Smartly copies, resolves conflicts by renaming, verifies integrity via hash.\n* Deprecated/replaced files stored under `~/Backup/fylex.deprecated/PROCESS_ID/`.\n\n### Move files\n\n```bash\nfylex move ./data ./archive --resolve newer --match-glob \"*.csv\"\n```\n\n* Moves only `.csv` files, replacing only if source is newer.\n\n### Undo\n\n```bash\nfylex undo 1002\n```\n\n* Undoes process with ID `1002`.\n\n### Redo\n\n```bash\nfylex redo 1002\n```\n\n* Replays process with ID `1002`.\n\n##\n\n## Python API Usage\n\n```python\nfrom fylex import filecopy, filemove, undo, redo\n\n# Copy with filters & conflict resolution\nfilecopy(\n src=\"~/Downloads\",\n dest=\"~/Backup\",\n resolve=\"rename\",\n algo=\"xxhash\",\n verify=True,\n match_glob=\"*.jpg\",\n verbose=True\n)\n\n# Move and preserve metadata\nfilemove(\"project/\", \"archive/\", resolve=\"newer\", preserve_meta=True)\n\n# Undo / Redo\nundo(\"1002\")\nredo(\"1002\")\n```\n##\n\n## Function Reference\n\n### `filecopy(src, dest, ...)`\n\n**Description:** Smartly copies files from `src` to `dest` with conflict handling, filters, and safety nets.\n\n**Parameters:**\n\n| Param | Type | Default | Description | |\n| ----------------- | ----------- | ---------- | ----------------------------------------------------------------------------------------------- | --------------------------------------- |\n| `src` | `str` | `Path` | required | Source file or directory |\n| `dest` | `str` | `Path` | required | Destination directory |\n| `resolve` | `str` | `\"rename\"` | Conflict strategy: `rename`, `replace`, `skip`, `larger`, `smaller`, `newer`, `older`, `prompt` | |\n| `algo` | `str` | `\"xxhash\"` | Hash algo: `xxhash`, `blake3`, `md5`, `sha256`, `sha512` | |\n| `chunk_size` | `int` | `16MB` | Buffer size for reading files | |\n| `verbose` | `bool` | `True` | Log to stdout | |\n| `dry_run` | `bool` | `False` | Simulate only | |\n| `summary` | `str` | `Path` | `None` | Path to copy `fylex.log` summary |\n| `match_regex` | `str` | `None` | Regex include filter | |\n| `match_names` | `list[str]` | `None` | Exact names include filter | |\n| `match_glob` | `list[str]` | `None` | Glob include filter | |\n| `exclude_regex` | `str` | `None` | Regex exclude filter | |\n| `exclude_names` | `list[str]` | `None` | Exact names exclude filter | |\n| `exclude_glob` | `list[str]` | `None` | Glob exclude filter | |\n| `recursive_check` | `bool` | `False` | Dedup check recursively in `dest` | |\n| `verify` | `bool` | `False` | Verify hashes after copy | |\n| `has_extension` | `bool` | `False` | Match file extension in dedup check | |\n| `no_create` | `bool` | `False` | Do not create `dest` if missing | |\n| `preserve_meta` | `bool` | `True` | Preserve timestamps, permissions, xattrs, ACLs | |\n| `backup` | `str` | `Path` | `\"fylex.deprecated\"` | Folder for deprecated/conflicting files |\n| `recurse` | `bool` | `False` | Traverse subdirectories in `src` | |\n\n**Example:**\n\n```python\nfilecopy(\"photos\", \"photos_backup\", resolve=\"newer\", match_glob=\"*.png\", verify=True)\n```\n\n##\n\n### `filemove(src, dest, ...)`\n\nSame params as `filecopy`, but moves files instead.\nIf conflicts exist, originals are moved into backup.\n\n##\n\n### `undo(p_id, verbose=True, force=False)`\n\nRollback a process by ID.\n\n| Param | Type | Description |\n| --------- | ------ | --------------------------------------- |\n| `p_id` | `str` | Process ID (JSON log ID) |\n| `verbose` | `bool` | Enable logs |\n| `force` | `bool` | Continue undo even if some entries fail |\n\n##\n\n### `redo(p_id, verbose=True, force=False)`\n\nReplay a process by ID. Same parameters as `undo`.\n\n##\n\n## Example Use Cases\n\n* **Daily backup with safety nets**\n\n ```bash\n fylex copy ~/work ~/backup --resolve newer --verify --summary=backup.log\n ```\n\n* **Selective move**\n\n ```bash\n fylex move ./data ./archive --match-regex \".*2025.*\\.csv\"\n ```\n\n* **Quick rollback**\n\n ```bash\n fylex undo 1021\n ```\n\n* **Replay last operation for reproducibility**\n\n ```bash\n fylex redo 1021\n ```\n\n##\n\n## Internals\n\n* Hash cache stored in `file_cache.db` (SQLite)\n* JSON logs in `json/` (both `.jsonl` and `.json` formats)\n* Temporary files in `dest/fylex.tmp/` for atomic writes\n* Backups in `dest/fylex.deprecated/{process_id}/`\n\n##\n\n## License\n\nMIT \u00a9 2025 Sivaprasad Murali\n\n---\n\n\u2728 With **Fylex**, file management on Linux is no longer just copying and moving \u2014 it\u2019s **safe, verifiable, reversible, and smart**.\n\n---\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Fylex: A production-ready, high-performance file utility tailored for Linux \u2014 with smart copy/move, hashing, filters, undo/redo, and conflict resolution.",
"version": "1.0.2",
"project_urls": {
"Documentation": "https://github.com/Crystallinecore/fylex#readme",
"Homepage": "https://github.com/Crystallinecore/fylex",
"Releases": "https://github.com/Crystallinecore/fylex/releases",
"Source": "https://github.com/Crystallinecore/fylex",
"Tracker": "https://github.com/Crystallinecore/fylex/issues"
},
"split_keywords": [
"file",
" copy",
" move",
" cli",
" linux",
" utility",
" xxhash",
" blake3",
" filter",
" conflict",
" backup",
" undo",
" redo",
" hashing",
" checksum",
" deduplication",
" data-integrity",
" file-management",
" sync",
" devtool",
" cli-tool",
" python-tool",
" smart-copy",
" smart-move",
" fylex"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "eedb9235db0aabfa04f51f6a670d5628d5b3ed62cf8c1843a3a42cf34d898cd8",
"md5": "1efb25388c319af1937c9fcc5529b348",
"sha256": "c64348939cee195c6a6745fe002f4ba76d689d36c949986072c12ad29210f16a"
},
"downloads": -1,
"filename": "fylex-1.0.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "1efb25388c319af1937c9fcc5529b348",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 18808,
"upload_time": "2025-09-19T00:36:39",
"upload_time_iso_8601": "2025-09-19T00:36:39.187742Z",
"url": "https://files.pythonhosted.org/packages/ee/db/9235db0aabfa04f51f6a670d5628d5b3ed62cf8c1843a3a42cf34d898cd8/fylex-1.0.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "1d249450461dceb304a341c64d1ee3b4ad2fdc389ec69fff4e2a18e19cd4c8ae",
"md5": "bac1090e56cb687a110c78ea15c5847d",
"sha256": "742572e702c659328d72fbbe48b7c815a415962cbe01011abbb15f1664d26533"
},
"downloads": -1,
"filename": "fylex-1.0.2.tar.gz",
"has_sig": false,
"md5_digest": "bac1090e56cb687a110c78ea15c5847d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 23094,
"upload_time": "2025-09-19T00:36:41",
"upload_time_iso_8601": "2025-09-19T00:36:41.742655Z",
"url": "https://files.pythonhosted.org/packages/1d/24/9450461dceb304a341c64d1ee3b4ad2fdc389ec69fff4e2a18e19cd4c8ae/fylex-1.0.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-19 00:36:41",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Crystallinecore",
"github_project": "fylex#readme",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "fylex"
}