mkfile


Namemkfile JSON
Version 1.0.12 PyPI version JSON
download
home_pagehttps://github.com/cumulus13/mkfile
SummaryAdvanced file creator with brace expansion and notification support
upload_time2025-10-11 02:30:15
maintainerNone
docs_urlNone
authorcumulus13
requires_python>=3.6
licenseNone
keywords file creation command-line brace expansion developer tools
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # mkfile - Advanced File Creator

A powerful command-line utility for creating blank files with support for brace expansion, automatic directory creation, desktop notifications, and clipboard integration.

## Features

- ✨ **Brace Expansion**: Create multiple files with a single command
- 📁 **Auto Directory Creation**: Automatically creates parent directories if they don't exist
- 📋 **Clipboard Integration**: Copies absolute file paths to clipboard
- 🔔 **Desktop Notifications**: Optional Growl notification support
- 🖥️ **Cross-Platform**: Works on Windows, Linux, and macOS
- 🎯 **Smart Parsing**: Handles complex patterns with spaces and multiple items

## Installation

```bash
pip install mkfile
```

### Optional Requirements

- Python 3.6+
- Optional dependencies for enhanced features:

```bash
pip install clipboard  # For clipboard support
pip install gntp       # For Growl notifications
```

## Usage

### Basic Syntax

```bash
mkfile [OPTIONS] FILE [FILE ...]
```

### Examples

#### Create Single File
```bash
mkfile test.txt
```

#### Create Multiple Files
```bash
mkfile file1.txt file2.py file3.js
```

#### Create Files with Directory Structure
```bash
mkfile src/main.py tests/test_main.py
# Creates: src/ and tests/ directories automatically
```

#### Brace Expansion - Simple
```bash
mkfile test/{a,b,c}.txt
# Creates: test/a.txt, test/b.txt, test/c.txt
```

#### Brace Expansion - Directory Prefix
```bash
mkfile dotenv{__init__.py,core.py,utils.py}
# Creates: dotenv/__init__.py, dotenv/core.py, dotenv/utils.py
```

#### Brace Expansion - With Spaces (Flexible Syntax)
```bash
mkfile src{main.py, utils.py config.py}
# Creates: src/main.py, src/utils.py, src/config.py
# Note: Handles both comma and space separation inside braces
```

#### Complex Project Structure
```bash
mkfile src/{__init__.py,main.py,utils.py} tests/{__init__.py,test_main.py} README.md setup.py requirements.txt
```

#### Real-World Example - Python Package
```bash
mkfile mypackage/{__init__.py,core.py,exceptions.py,utils.py} tests/{__init__.py,test_core.py} setup.py pyproject.toml README.md LICENSE requirements.txt .gitignore
```

## Brace Expansion Syntax

### Supported Formats

1. **Standard format** (recommended):
   ```bash
   mkfile dir/{file1,file2,file3}
   ```

2. **Directory prefix** (no slash):
   ```bash
   mkfile dir{file1,file2,file3}
   # Automatically adds '/' → dir/file1, dir/file2, dir/file3
   ```

3. **With spaces** (flexible):
   ```bash
   mkfile dir{file1, file2, file3}
   mkfile dir{file1 file2 file3}
   # Both work! Splits by comma AND spaces
   ```

4. **With file extensions**:
   ```bash
   mkfile src/{main,utils,config}.py
   # Creates: src/main.py, src/utils.py, src/config.py
   ```

### Brace Expansion Rules

- Items inside `{}` can be separated by:
  - Commas: `{a,b,c}`
  - Spaces: `{a b c}`
  - Both: `{a, b, c}` or `{a, b c}`
- If prefix doesn't end with `/` or `\`, it's treated as a directory name
- Empty items are skipped
- Nested braces are not supported

## Command-Line Options

### `--version`
Show version information

```bash
mkfile --version
```

### `--debug`
Enable detailed error messages and stack traces

```bash
mkfile --debug file1.txt file2.txt
```

### `--help`
Show help message with examples

```bash
mkfile --help
```

## Output

### Success
```
✓ File created: "C:\PROJECTS\myproject\src\main.py"
✓ File created: "C:\PROJECTS\myproject\src\utils.py"

2/2 file(s) created successfully
```

### With Errors
```
✓ File created: "valid.txt"
✗ Error creating file "invalid/path/file.txt": [Errno 13] Permission denied

1/2 file(s) created successfully
```

## Features in Detail

### Automatic Directory Creation

The script automatically creates all parent directories:

```bash
mkfile deep/nested/path/to/file.txt
# Creates: deep/ → deep/nested/ → deep/nested/path/ → deep/nested/path/to/
```

### Clipboard Integration

After creating each file, its absolute path is automatically copied to your clipboard (requires `clipboard` module).

### Desktop Notifications

If Growl is installed and running, you'll receive desktop notifications for each file created.

**Note**: The "Could not initialize Growl" warning is normal if Growl is not running. The script continues to work perfectly without it.

### Cross-Platform Paths

The script uses Python's `pathlib` for cross-platform compatibility. Use forward slashes (`/`) in commands on all platforms - they'll be converted automatically.

## Troubleshooting

### "Could not initialize Growl" Warning

This is **normal** and **harmless**. It means Growl notification service isn't running. The script works fine without it.

To suppress this warning, you can:
- Install and run Growl
- Or ignore it (doesn't affect functionality)

### Permission Denied Errors

If you get permission errors:
- Check directory permissions
- Run with appropriate privileges
- Use `--debug` flag for more details

### Files Not Created in Expected Directory

Check your brace expansion syntax:
```bash
# WRONG - No directory separator
mkfile mydir{file1,file2}      # Creates: mydir/file1, mydir/file2 ✓

# If you want nested directories, use /
mkfile mydir/{subdir/file1,file2}  # Creates: mydir/subdir/file1, mydir/file2
```

## Tips & Best Practices

1. **Use quotes for files with spaces**:
   ```bash
   mkfile "my file.txt"
   ```

2. **Combine with other commands**:
   ```bash
   mkfile src/{main,utils}.py && code src/main.py
   ```

3. **Create project templates**:
   ```bash
   # Save as a shell script
   mkfile project/{src,tests,docs}/{__init__.py} README.md setup.py
   ```

4. **Verify with tree command**:
   ```bash
   mkfile test/{a,b,c}.txt && tree test/
   ```

## Version History

### v2.0
- Added smart brace expansion parsing
- Auto directory creation
- Support for space-separated items in braces
- Improved error handling
- Better cross-platform support
- Class-based architecture

### v1.0
- Initial release
- Basic file creation
- Growl notifications

## License

Free to use and modify.

## Contributing

Feel free to submit issues and enhancement requests!

---

**Quick Reference**:
```bash
# Single file
mkfile file.txt

# Multiple files
mkfile file1 file2 file3

# With directories
mkfile src/main.py tests/test.py

# Brace expansion
mkfile src/{main,utils,config}.py

# Complex structure
mkfile mypackage/{__init__,core,utils}.py tests/{__init__,test_core}.py README.md
```


## Author
[Hadi Cahyadi](mailto:cumulus13@gmail.com)
    

[![Buy Me a Coffee](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/cumulus13)

[![Donate via Ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/cumulus13)

[Support me on Patreon](https://www.patreon.com/cumulus13)

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/cumulus13/mkfile",
    "name": "mkfile",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": null,
    "keywords": "file creation, command-line, brace expansion, developer tools",
    "author": "cumulus13",
    "author_email": "cumulus13@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/4c/76/101a3132af991c92bceb672212690189a5548e5867b455b4ac3305940837/mkfile-1.0.12.tar.gz",
    "platform": null,
    "description": "# mkfile - Advanced File Creator\n\nA powerful command-line utility for creating blank files with support for brace expansion, automatic directory creation, desktop notifications, and clipboard integration.\n\n## Features\n\n- \u2728 **Brace Expansion**: Create multiple files with a single command\n- \ud83d\udcc1 **Auto Directory Creation**: Automatically creates parent directories if they don't exist\n- \ud83d\udccb **Clipboard Integration**: Copies absolute file paths to clipboard\n- \ud83d\udd14 **Desktop Notifications**: Optional Growl notification support\n- \ud83d\udda5\ufe0f **Cross-Platform**: Works on Windows, Linux, and macOS\n- \ud83c\udfaf **Smart Parsing**: Handles complex patterns with spaces and multiple items\n\n## Installation\n\n```bash\npip install mkfile\n```\n\n### Optional Requirements\n\n- Python 3.6+\n- Optional dependencies for enhanced features:\n\n```bash\npip install clipboard  # For clipboard support\npip install gntp       # For Growl notifications\n```\n\n## Usage\n\n### Basic Syntax\n\n```bash\nmkfile [OPTIONS] FILE [FILE ...]\n```\n\n### Examples\n\n#### Create Single File\n```bash\nmkfile test.txt\n```\n\n#### Create Multiple Files\n```bash\nmkfile file1.txt file2.py file3.js\n```\n\n#### Create Files with Directory Structure\n```bash\nmkfile src/main.py tests/test_main.py\n# Creates: src/ and tests/ directories automatically\n```\n\n#### Brace Expansion - Simple\n```bash\nmkfile test/{a,b,c}.txt\n# Creates: test/a.txt, test/b.txt, test/c.txt\n```\n\n#### Brace Expansion - Directory Prefix\n```bash\nmkfile dotenv{__init__.py,core.py,utils.py}\n# Creates: dotenv/__init__.py, dotenv/core.py, dotenv/utils.py\n```\n\n#### Brace Expansion - With Spaces (Flexible Syntax)\n```bash\nmkfile src{main.py, utils.py config.py}\n# Creates: src/main.py, src/utils.py, src/config.py\n# Note: Handles both comma and space separation inside braces\n```\n\n#### Complex Project Structure\n```bash\nmkfile src/{__init__.py,main.py,utils.py} tests/{__init__.py,test_main.py} README.md setup.py requirements.txt\n```\n\n#### Real-World Example - Python Package\n```bash\nmkfile mypackage/{__init__.py,core.py,exceptions.py,utils.py} tests/{__init__.py,test_core.py} setup.py pyproject.toml README.md LICENSE requirements.txt .gitignore\n```\n\n## Brace Expansion Syntax\n\n### Supported Formats\n\n1. **Standard format** (recommended):\n   ```bash\n   mkfile dir/{file1,file2,file3}\n   ```\n\n2. **Directory prefix** (no slash):\n   ```bash\n   mkfile dir{file1,file2,file3}\n   # Automatically adds '/' \u2192 dir/file1, dir/file2, dir/file3\n   ```\n\n3. **With spaces** (flexible):\n   ```bash\n   mkfile dir{file1, file2, file3}\n   mkfile dir{file1 file2 file3}\n   # Both work! Splits by comma AND spaces\n   ```\n\n4. **With file extensions**:\n   ```bash\n   mkfile src/{main,utils,config}.py\n   # Creates: src/main.py, src/utils.py, src/config.py\n   ```\n\n### Brace Expansion Rules\n\n- Items inside `{}` can be separated by:\n  - Commas: `{a,b,c}`\n  - Spaces: `{a b c}`\n  - Both: `{a, b, c}` or `{a, b c}`\n- If prefix doesn't end with `/` or `\\`, it's treated as a directory name\n- Empty items are skipped\n- Nested braces are not supported\n\n## Command-Line Options\n\n### `--version`\nShow version information\n\n```bash\nmkfile --version\n```\n\n### `--debug`\nEnable detailed error messages and stack traces\n\n```bash\nmkfile --debug file1.txt file2.txt\n```\n\n### `--help`\nShow help message with examples\n\n```bash\nmkfile --help\n```\n\n## Output\n\n### Success\n```\n\u2713 File created: \"C:\\PROJECTS\\myproject\\src\\main.py\"\n\u2713 File created: \"C:\\PROJECTS\\myproject\\src\\utils.py\"\n\n2/2 file(s) created successfully\n```\n\n### With Errors\n```\n\u2713 File created: \"valid.txt\"\n\u2717 Error creating file \"invalid/path/file.txt\": [Errno 13] Permission denied\n\n1/2 file(s) created successfully\n```\n\n## Features in Detail\n\n### Automatic Directory Creation\n\nThe script automatically creates all parent directories:\n\n```bash\nmkfile deep/nested/path/to/file.txt\n# Creates: deep/ \u2192 deep/nested/ \u2192 deep/nested/path/ \u2192 deep/nested/path/to/\n```\n\n### Clipboard Integration\n\nAfter creating each file, its absolute path is automatically copied to your clipboard (requires `clipboard` module).\n\n### Desktop Notifications\n\nIf Growl is installed and running, you'll receive desktop notifications for each file created.\n\n**Note**: The \"Could not initialize Growl\" warning is normal if Growl is not running. The script continues to work perfectly without it.\n\n### Cross-Platform Paths\n\nThe script uses Python's `pathlib` for cross-platform compatibility. Use forward slashes (`/`) in commands on all platforms - they'll be converted automatically.\n\n## Troubleshooting\n\n### \"Could not initialize Growl\" Warning\n\nThis is **normal** and **harmless**. It means Growl notification service isn't running. The script works fine without it.\n\nTo suppress this warning, you can:\n- Install and run Growl\n- Or ignore it (doesn't affect functionality)\n\n### Permission Denied Errors\n\nIf you get permission errors:\n- Check directory permissions\n- Run with appropriate privileges\n- Use `--debug` flag for more details\n\n### Files Not Created in Expected Directory\n\nCheck your brace expansion syntax:\n```bash\n# WRONG - No directory separator\nmkfile mydir{file1,file2}      # Creates: mydir/file1, mydir/file2 \u2713\n\n# If you want nested directories, use /\nmkfile mydir/{subdir/file1,file2}  # Creates: mydir/subdir/file1, mydir/file2\n```\n\n## Tips & Best Practices\n\n1. **Use quotes for files with spaces**:\n   ```bash\n   mkfile \"my file.txt\"\n   ```\n\n2. **Combine with other commands**:\n   ```bash\n   mkfile src/{main,utils}.py && code src/main.py\n   ```\n\n3. **Create project templates**:\n   ```bash\n   # Save as a shell script\n   mkfile project/{src,tests,docs}/{__init__.py} README.md setup.py\n   ```\n\n4. **Verify with tree command**:\n   ```bash\n   mkfile test/{a,b,c}.txt && tree test/\n   ```\n\n## Version History\n\n### v2.0\n- Added smart brace expansion parsing\n- Auto directory creation\n- Support for space-separated items in braces\n- Improved error handling\n- Better cross-platform support\n- Class-based architecture\n\n### v1.0\n- Initial release\n- Basic file creation\n- Growl notifications\n\n## License\n\nFree to use and modify.\n\n## Contributing\n\nFeel free to submit issues and enhancement requests!\n\n---\n\n**Quick Reference**:\n```bash\n# Single file\nmkfile file.txt\n\n# Multiple files\nmkfile file1 file2 file3\n\n# With directories\nmkfile src/main.py tests/test.py\n\n# Brace expansion\nmkfile src/{main,utils,config}.py\n\n# Complex structure\nmkfile mypackage/{__init__,core,utils}.py tests/{__init__,test_core}.py README.md\n```\n\n\n## Author\n[Hadi Cahyadi](mailto:cumulus13@gmail.com)\n    \n\n[![Buy Me a Coffee](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/cumulus13)\n\n[![Donate via Ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/cumulus13)\n\n[Support me on Patreon](https://www.patreon.com/cumulus13)\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Advanced file creator with brace expansion and notification support",
    "version": "1.0.12",
    "project_urls": {
        "Bug Reports": "https://github.com/cumulus13/mkfile/issues",
        "Homepage": "https://github.com/cumulus13/mkfile",
        "Source": "https://github.com/cumulus13/mkfile"
    },
    "split_keywords": [
        "file creation",
        " command-line",
        " brace expansion",
        " developer tools"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "590b232388073822ae28d7286f8729e74bf4eeec3ff7839d36d4204d38bff020",
                "md5": "89fc739779daae02d67d19b5222f2631",
                "sha256": "a0a793d8da4cbd23e6644bfc5c31f9befedcd11ccef39206fd0805df58e5ce88"
            },
            "downloads": -1,
            "filename": "mkfile-1.0.12-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "89fc739779daae02d67d19b5222f2631",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.6",
            "size": 115494,
            "upload_time": "2025-10-11T02:29:46",
            "upload_time_iso_8601": "2025-10-11T02:29:46.410611Z",
            "url": "https://files.pythonhosted.org/packages/59/0b/232388073822ae28d7286f8729e74bf4eeec3ff7839d36d4204d38bff020/mkfile-1.0.12-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2ca9012d07e35eb63393374b5db8d87ca60a35d4e13531e91dba4a639ebd7d64",
                "md5": "78a66587b1872a77fcda2e0f0bcc2f95",
                "sha256": "e2bb4b015f380341301d277a87079e8d4e15594b009997b979d322263506e451"
            },
            "downloads": -1,
            "filename": "mkfile-1.0.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "78a66587b1872a77fcda2e0f0bcc2f95",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.6",
            "size": 412168,
            "upload_time": "2025-10-11T02:29:47",
            "upload_time_iso_8601": "2025-10-11T02:29:47.930131Z",
            "url": "https://files.pythonhosted.org/packages/2c/a9/012d07e35eb63393374b5db8d87ca60a35d4e13531e91dba4a639ebd7d64/mkfile-1.0.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c7bd3ca6623288c4802fc7006ff576735b59d0a2e7d82504b9410609367dd830",
                "md5": "fb1f1358a7637eac44d9c993aaf33786",
                "sha256": "d8d6a3cc428b5fe4bed1c9c07941460d21c4bcd81edd4f878f7f68f96db55262"
            },
            "downloads": -1,
            "filename": "mkfile-1.0.12-cp310-cp310-musllinux_1_1_i686.whl",
            "has_sig": false,
            "md5_digest": "fb1f1358a7637eac44d9c993aaf33786",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.6",
            "size": 406569,
            "upload_time": "2025-10-11T02:29:49",
            "upload_time_iso_8601": "2025-10-11T02:29:49.401108Z",
            "url": "https://files.pythonhosted.org/packages/c7/bd/3ca6623288c4802fc7006ff576735b59d0a2e7d82504b9410609367dd830/mkfile-1.0.12-cp310-cp310-musllinux_1_1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "897488485ad293ec795b9781e5bee1138a35439c122c2be6d64525ef3aafc463",
                "md5": "528b5e2fe1c4c99bcbb5191e7c0e89fb",
                "sha256": "c7c1d69ef22f523c5900f584b2529385d09b60c755d6a3bbc471e3f505f6ff0b"
            },
            "downloads": -1,
            "filename": "mkfile-1.0.12-cp310-cp310-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "528b5e2fe1c4c99bcbb5191e7c0e89fb",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.6",
            "size": 420253,
            "upload_time": "2025-10-11T02:29:51",
            "upload_time_iso_8601": "2025-10-11T02:29:51.174019Z",
            "url": "https://files.pythonhosted.org/packages/89/74/88485ad293ec795b9781e5bee1138a35439c122c2be6d64525ef3aafc463/mkfile-1.0.12-cp310-cp310-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a3b7efc123584ae488f146a633dd42c9e0b18f16c252f092e6ce23789e21a9e3",
                "md5": "c63fa4f103d71893ccd8a9b48fc25823",
                "sha256": "12198e298d0780dae511778d77b282ff6c4434f23eaac1bb2fc7504b4417b1bc"
            },
            "downloads": -1,
            "filename": "mkfile-1.0.12-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "c63fa4f103d71893ccd8a9b48fc25823",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.6",
            "size": 107885,
            "upload_time": "2025-10-11T02:29:52",
            "upload_time_iso_8601": "2025-10-11T02:29:52.755509Z",
            "url": "https://files.pythonhosted.org/packages/a3/b7/efc123584ae488f146a633dd42c9e0b18f16c252f092e6ce23789e21a9e3/mkfile-1.0.12-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7c6e027bcd7bfb63c61eaab8ea070cf91adca0d9edfe0876662f8f2db52fc22f",
                "md5": "8cd3295dcc9aa71c168ae3293d5c89dd",
                "sha256": "b9b8ffc45c35813137260a2e2faa35845b84e6d2ba5878e590afe645ca9ea254"
            },
            "downloads": -1,
            "filename": "mkfile-1.0.12-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "8cd3295dcc9aa71c168ae3293d5c89dd",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.6",
            "size": 116884,
            "upload_time": "2025-10-11T02:29:54",
            "upload_time_iso_8601": "2025-10-11T02:29:54.130251Z",
            "url": "https://files.pythonhosted.org/packages/7c/6e/027bcd7bfb63c61eaab8ea070cf91adca0d9edfe0876662f8f2db52fc22f/mkfile-1.0.12-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "cd08230437a86cdbfb85599db26ce7fad14be815d9beb41c06cd684b318b83bb",
                "md5": "ea72d96aeb7c1ea530d1832a6f3c5edb",
                "sha256": "ffa99ade17f14ed733967dde35d712d6161b87d8dcf0bf882ed2e7672c1baef4"
            },
            "downloads": -1,
            "filename": "mkfile-1.0.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ea72d96aeb7c1ea530d1832a6f3c5edb",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.6",
            "size": 438856,
            "upload_time": "2025-10-11T02:29:55",
            "upload_time_iso_8601": "2025-10-11T02:29:55.173070Z",
            "url": "https://files.pythonhosted.org/packages/cd/08/230437a86cdbfb85599db26ce7fad14be815d9beb41c06cd684b318b83bb/mkfile-1.0.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b0a17b447087eb94013d6c09f7484cd9fd80e6e64b13d006d1294fe84bf81bc0",
                "md5": "6f41e08febb28f36d3d4631e746dc325",
                "sha256": "6f39ea9f36b0da2956c7be2e5da2dcac72773a6305f54574d5849377e279f5d5"
            },
            "downloads": -1,
            "filename": "mkfile-1.0.12-cp311-cp311-musllinux_1_1_i686.whl",
            "has_sig": false,
            "md5_digest": "6f41e08febb28f36d3d4631e746dc325",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.6",
            "size": 424041,
            "upload_time": "2025-10-11T02:29:56",
            "upload_time_iso_8601": "2025-10-11T02:29:56.566572Z",
            "url": "https://files.pythonhosted.org/packages/b0/a1/7b447087eb94013d6c09f7484cd9fd80e6e64b13d006d1294fe84bf81bc0/mkfile-1.0.12-cp311-cp311-musllinux_1_1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "df6fd1c692bcc5d377d2bc300a72f7bf06186286ba2995d294ea3b456c60bbfa",
                "md5": "ae97a52aae3828e6b61387ff6135590a",
                "sha256": "2511ec9dfc2fb10718ad177e46ae44db7b9476586f90887d34c33919ea8fd581"
            },
            "downloads": -1,
            "filename": "mkfile-1.0.12-cp311-cp311-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ae97a52aae3828e6b61387ff6135590a",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.6",
            "size": 438863,
            "upload_time": "2025-10-11T02:29:57",
            "upload_time_iso_8601": "2025-10-11T02:29:57.864407Z",
            "url": "https://files.pythonhosted.org/packages/df/6f/d1c692bcc5d377d2bc300a72f7bf06186286ba2995d294ea3b456c60bbfa/mkfile-1.0.12-cp311-cp311-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "9a834762fbed9b1783c0a22be59c853bd1af0a72cdb943604c53ce42a84e3bc7",
                "md5": "1ec548e3d98b71c884c80f50a0c86068",
                "sha256": "c16411f30156d5f83ee2c682114f408a5bfbd7390890f8b178111aecb45fabd3"
            },
            "downloads": -1,
            "filename": "mkfile-1.0.12-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "1ec548e3d98b71c884c80f50a0c86068",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.6",
            "size": 108198,
            "upload_time": "2025-10-11T02:29:59",
            "upload_time_iso_8601": "2025-10-11T02:29:59.506811Z",
            "url": "https://files.pythonhosted.org/packages/9a/83/4762fbed9b1783c0a22be59c853bd1af0a72cdb943604c53ce42a84e3bc7/mkfile-1.0.12-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f011632f8c87d8b41585a6dae05ee0e109e49bbd4693a44b7f2ab580c564dcd5",
                "md5": "315211d5d2574209462af9393e82e726",
                "sha256": "8907bbcbba123756119b09391a9af5460d084d09b80da33ecbbeed3140eded0e"
            },
            "downloads": -1,
            "filename": "mkfile-1.0.12-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "315211d5d2574209462af9393e82e726",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.6",
            "size": 116455,
            "upload_time": "2025-10-11T02:30:01",
            "upload_time_iso_8601": "2025-10-11T02:30:01.071004Z",
            "url": "https://files.pythonhosted.org/packages/f0/11/632f8c87d8b41585a6dae05ee0e109e49bbd4693a44b7f2ab580c564dcd5/mkfile-1.0.12-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "44bf6fe40248af5813d22a4a28414935bedb4512aa33bb92f5ae9f7bd87ac51b",
                "md5": "dd82759da000b69ca1d3773e8f57f59a",
                "sha256": "0b98041a0fa1c245ec2155c57d2ee8ca68c1d86598dc05fe2865b4653fdd8563"
            },
            "downloads": -1,
            "filename": "mkfile-1.0.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "dd82759da000b69ca1d3773e8f57f59a",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.6",
            "size": 423054,
            "upload_time": "2025-10-11T02:30:02",
            "upload_time_iso_8601": "2025-10-11T02:30:02.473350Z",
            "url": "https://files.pythonhosted.org/packages/44/bf/6fe40248af5813d22a4a28414935bedb4512aa33bb92f5ae9f7bd87ac51b/mkfile-1.0.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "fc34e955df57e8097e5745873293f28e2dd25a85a968732d741dbf6d6b22f9ff",
                "md5": "2cf95f8c4fde2fd3f9074683fcc8c214",
                "sha256": "9918d18edcd122873a80a3c6209f2e7ecec478d6f213067f777297741576358b"
            },
            "downloads": -1,
            "filename": "mkfile-1.0.12-cp312-cp312-musllinux_1_1_i686.whl",
            "has_sig": false,
            "md5_digest": "2cf95f8c4fde2fd3f9074683fcc8c214",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.6",
            "size": 404368,
            "upload_time": "2025-10-11T02:30:03",
            "upload_time_iso_8601": "2025-10-11T02:30:03.994971Z",
            "url": "https://files.pythonhosted.org/packages/fc/34/e955df57e8097e5745873293f28e2dd25a85a968732d741dbf6d6b22f9ff/mkfile-1.0.12-cp312-cp312-musllinux_1_1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "094daedf6ac6b84b16a82250e6bc75815ca0b73b99b8f836610ea600a035aec8",
                "md5": "febd94d1359aa96ed003d15066c3b405",
                "sha256": "cfc133f3f98402dfda071ec70d8fa545e932412e4840c5db029e9f62c14e15fa"
            },
            "downloads": -1,
            "filename": "mkfile-1.0.12-cp312-cp312-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "febd94d1359aa96ed003d15066c3b405",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.6",
            "size": 423092,
            "upload_time": "2025-10-11T02:30:05",
            "upload_time_iso_8601": "2025-10-11T02:30:05.870364Z",
            "url": "https://files.pythonhosted.org/packages/09/4d/aedf6ac6b84b16a82250e6bc75815ca0b73b99b8f836610ea600a035aec8/mkfile-1.0.12-cp312-cp312-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e7444575e6f08414f54c87dd9c17ce3d3fc47cbf659873947a8d48abe5eadf8c",
                "md5": "c63ac0c2e84dc207d3f8c615db3f8be7",
                "sha256": "df095210e908ec4eb073072b3eeceb9f5283346aa207d60f4dd2489d5ea9d7e5"
            },
            "downloads": -1,
            "filename": "mkfile-1.0.12-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "c63ac0c2e84dc207d3f8c615db3f8be7",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.6",
            "size": 107952,
            "upload_time": "2025-10-11T02:30:07",
            "upload_time_iso_8601": "2025-10-11T02:30:07.307008Z",
            "url": "https://files.pythonhosted.org/packages/e7/44/4575e6f08414f54c87dd9c17ce3d3fc47cbf659873947a8d48abe5eadf8c/mkfile-1.0.12-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e90e63a0ab266c0b77c52cf8a2c57b67b758406f03d9e8fed9ba7ae60d254296",
                "md5": "62534df8e769065719ff7c9140b8d5e3",
                "sha256": "105b5055124221d3824d327b9cdde149072a8b67be8130e3e605f9c186922a1b"
            },
            "downloads": -1,
            "filename": "mkfile-1.0.12-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "62534df8e769065719ff7c9140b8d5e3",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.6",
            "size": 115923,
            "upload_time": "2025-10-11T02:30:08",
            "upload_time_iso_8601": "2025-10-11T02:30:08.655571Z",
            "url": "https://files.pythonhosted.org/packages/e9/0e/63a0ab266c0b77c52cf8a2c57b67b758406f03d9e8fed9ba7ae60d254296/mkfile-1.0.12-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "92b46dcff57592428e2f1ea842902197b866e079ef8261c3e6499e195c6a1957",
                "md5": "311f0d90c75d8eada4794c96f3d87016",
                "sha256": "2ea075f255c266b20c12bfb3da78b24b8b649b8ac1e1df56fb872e516caddd8e"
            },
            "downloads": -1,
            "filename": "mkfile-1.0.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "311f0d90c75d8eada4794c96f3d87016",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.6",
            "size": 413333,
            "upload_time": "2025-10-11T02:30:09",
            "upload_time_iso_8601": "2025-10-11T02:30:09.922674Z",
            "url": "https://files.pythonhosted.org/packages/92/b4/6dcff57592428e2f1ea842902197b866e079ef8261c3e6499e195c6a1957/mkfile-1.0.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c2a000fd2d03e684f36b824b4cdc9f4fcf06828834ddde3c17b287251a59be2e",
                "md5": "1d77c0e8249138c946a35e178da93abc",
                "sha256": "d3f1930e9baf473a30899ac04a0036ab6e60a251894f9d614278b2819261efd0"
            },
            "downloads": -1,
            "filename": "mkfile-1.0.12-cp39-cp39-musllinux_1_1_i686.whl",
            "has_sig": false,
            "md5_digest": "1d77c0e8249138c946a35e178da93abc",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.6",
            "size": 407972,
            "upload_time": "2025-10-11T02:30:11",
            "upload_time_iso_8601": "2025-10-11T02:30:11.453411Z",
            "url": "https://files.pythonhosted.org/packages/c2/a0/00fd2d03e684f36b824b4cdc9f4fcf06828834ddde3c17b287251a59be2e/mkfile-1.0.12-cp39-cp39-musllinux_1_1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "22dc0ba621e0ee3fb1071831f630d97ac790a49ec15dc1db09dbec04cf8a64fd",
                "md5": "ff091efe8df3e886f597af066d787c57",
                "sha256": "c082d6a0c95aa21016e6733dd432e3addf04dfc2f1ed7faac18bac31cd8dda18"
            },
            "downloads": -1,
            "filename": "mkfile-1.0.12-cp39-cp39-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ff091efe8df3e886f597af066d787c57",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.6",
            "size": 421175,
            "upload_time": "2025-10-11T02:30:12",
            "upload_time_iso_8601": "2025-10-11T02:30:12.688640Z",
            "url": "https://files.pythonhosted.org/packages/22/dc/0ba621e0ee3fb1071831f630d97ac790a49ec15dc1db09dbec04cf8a64fd/mkfile-1.0.12-cp39-cp39-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e8b241fe84ea695742697affdc9751d77169b5268363904bdbe6469878672a9e",
                "md5": "8d64109ff0ff7adb8ae6ec45b27189e0",
                "sha256": "30f2fb7c769cbccc110096ce032839b1fa99b893dc0f7fc18e70126508d43a48"
            },
            "downloads": -1,
            "filename": "mkfile-1.0.12-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "8d64109ff0ff7adb8ae6ec45b27189e0",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.6",
            "size": 108272,
            "upload_time": "2025-10-11T02:30:13",
            "upload_time_iso_8601": "2025-10-11T02:30:13.853532Z",
            "url": "https://files.pythonhosted.org/packages/e8/b2/41fe84ea695742697affdc9751d77169b5268363904bdbe6469878672a9e/mkfile-1.0.12-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "4c76101a3132af991c92bceb672212690189a5548e5867b455b4ac3305940837",
                "md5": "7cb5af65161f6bb5d18c7afe0653956b",
                "sha256": "b5043e017b1125124819e126f0499ed22458a89abf953234593ec0f2071ffb7c"
            },
            "downloads": -1,
            "filename": "mkfile-1.0.12.tar.gz",
            "has_sig": false,
            "md5_digest": "7cb5af65161f6bb5d18c7afe0653956b",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 62468,
            "upload_time": "2025-10-11T02:30:15",
            "upload_time_iso_8601": "2025-10-11T02:30:15.027273Z",
            "url": "https://files.pythonhosted.org/packages/4c/76/101a3132af991c92bceb672212690189a5548e5867b455b4ac3305940837/mkfile-1.0.12.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-11 02:30:15",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "cumulus13",
    "github_project": "mkfile",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "mkfile"
}
        
Elapsed time: 2.52300s