Name | git-lfs-cloudinary JSON |
Version |
0.2.1
JSON |
| download |
home_page | None |
Summary | Git LFS integration with Cloudinary for binary media storage |
upload_time | 2025-10-06 06:49:36 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.8 |
license | MIT |
keywords |
git
lfs
cloudinary
media
storage
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# Git LFS Cloudinary
A Python library that integrates Git LFS (Large File Storage) with Cloudinary, allowing you to store your binary media files in Cloudinary's cloud storage instead of traditional Git LFS servers.
## Features
- 🚀 **Seamless Integration**: Works as a Git LFS custom transfer agent
- ☁️ **Cloudinary Storage**: Store binary files in Cloudinary (free tier available)
- 🔒 **Secure**: Credentials stored securely in your home directory
- 📦 **Easy Setup**: Simple command-line interface for configuration
- 🎯 **Automatic**: Works transparently with Git LFS commands
- 🆓 **Free Tier**: Use Cloudinary's free plan for small projects
- 📚 **Library & CLI**: Use as a command-line tool OR as a Python library
## Usage Modes
### 1. Simple Library (Flash Facade)
Use it directly in your Python code with a simple, clean API:
```python
from git_lfs_cloudinary import flash as fs
# Setup once
fs.setup("cloud-name", "api-key", "api-secret")
# Push files
result = fs.push("myfile.psd")
print(f"Uploaded to: {result['url']}")
# Pull files
fs.pull("myfile.psd")
# Check status
status = fs.status()
print(f"Configured: {status['configured']}")
```
See [LIBRARY_USAGE.md](LIBRARY_USAGE.md) for complete API documentation.
### 2. Command-Line Interface
Use via command-line for manual operations:
```bash
# Simple workflow
py -m git_lfs_cloudinary.cli push myfile.psd
py -m git_lfs_cloudinary.cli pull myfile.psd
```
### 3. Advanced: Git LFS Integration
Fully integrate with Git LFS for automatic file handling.
## Why Use This?
Git LFS is great for managing large files in Git repositories, but it requires either:
- GitHub's LFS storage (limited free tier, paid beyond that)
- Setting up your own LFS server
With `git-lfs-cloudinary`, you can:
- Use Cloudinary's generous free tier (25GB storage, 25GB bandwidth/month)
- Leverage Cloudinary's global CDN for fast downloads
- Benefit from Cloudinary's image optimization features
- Avoid setting up your own LFS server
## Installation
```bash
pip install git-lfs-cloudinary
```
### Command Usage
Use the Python module directly (works immediately, no setup needed):
```bash
py -m git_lfs_cloudinary.cli push myfile.psd
```
**Optional shortcut:** If you want to use just `flash` instead, see [SETUP_PATH.md](SETUP_PATH.md) for PATH configuration.
```bash
# After PATH setup (optional):
flash push myfile.psd
```
## Prerequisites
1. **Git LFS**: Install from [git-lfs.github.com](https://git-lfs.github.com/)
2. **Cloudinary Account**: Sign up for free at [cloudinary.com](https://cloudinary.com/)
## Quick Start
### Simple Workflow (Recommended)
The easiest way to use git-lfs-cloudinary:
**1. Setup once:**
```bash
py -m git_lfs_cloudinary.cli setup
```
**2. Push any file (uploads to Cloudinary + commits to git):**
```bash
py -m git_lfs_cloudinary.cli push myfile.psd
```
**3. Push to remote:**
```bash
git push
```
That's it! The file is uploaded to Cloudinary, replaced with a pointer, and committed to git.
**Pull files back when needed:**
```bash
py -m git_lfs_cloudinary.cli pull myfile.psd
```
### Advanced: Git LFS Integration
For automatic LFS integration:
**1. Setup Cloudinary Credentials**
```bash
git-lfs-cloudinary setup
```
You'll need:
- **Cloud Name**: Your Cloudinary cloud name
- **API Key**: Your API key from Cloudinary dashboard
- **API Secret**: Your API secret from Cloudinary dashboard
You can find these in your [Cloudinary Console Dashboard](https://console.cloudinary.com/).
**2. Initialize in Your Git Repository**
```bash
cd your-repo
git-lfs-cloudinary init
```
This will:
- Initialize Git LFS in your repository
- Configure Git LFS to use Cloudinary as the storage backend
**3. Track Files with Git LFS**
Track the file types you want to store in Cloudinary:
```bash
# Track Photoshop files
git lfs track "*.psd"
# Track video files
git lfs track "*.mp4"
# Track ZIP archives
git lfs track "*.zip"
# Track all files in a directory
git lfs track "assets/**"
```
**4. Commit and Push**
Now just use Git normally! Files matching your LFS patterns will automatically be uploaded to Cloudinary:
```bash
git add .
git commit -m "Add large media files"
git push
```
## Commands
### `push` - Simple file push
Push a file to Cloudinary, replace with pointer, and commit (recommended):
```bash
py -m git_lfs_cloudinary.cli push myfile.psd
```
This one command:
1. Uploads `myfile.psd` to Cloudinary
2. Replaces it with an LFS pointer
3. Commits the pointer to git
Then just: `git push`
Options:
- `-m "message"` - Custom commit message (default: "Add myfile.psd")
- `--no-commit` - Skip the git commit step
### `pull` - Get file back
Replace an LFS pointer with the actual file:
```bash
py -m git_lfs_cloudinary.cli pull myfile.psd
```
This downloads the file from Cloudinary and replaces the pointer.
### `setup`
Configure Cloudinary credentials:
```bash
py -m git_lfs_cloudinary.cli setup
```
Options:
- `--cloud-name`: Your Cloudinary cloud name
- `--api-key`: Your Cloudinary API key
- `--api-secret`: Your Cloudinary API secret
- `--folder`: Cloudinary folder for LFS files (default: `git-lfs`)
### `status`
Check configuration status:
```bash
py -m git_lfs_cloudinary.cli status
```
Shows:
- Cloudinary configuration status
- Git LFS installation status
- Configuration details
### `init` (Advanced)
Initialize Git LFS with Cloudinary in the current repository:
```bash
git-lfs-cloudinary init
```
Must be run inside a Git repository. Only needed for automatic Git LFS integration.
### `upload` (Advanced)
Upload a file without replacing it locally:
```bash
git-lfs-cloudinary upload path/to/file.psd
```
### `download` (Advanced)
Download a file by OID:
```bash
git-lfs-cloudinary download <oid> output/path.psd --size <bytes>
```
## How It Works
1. **LFS Pointer Files**: When you commit a tracked file, Git LFS creates a small "pointer" file in your repository
2. **Custom Transfer Agent**: This library acts as a custom transfer agent for Git LFS
3. **Cloudinary Upload**: Instead of uploading to a Git LFS server, files are uploaded to Cloudinary
4. **OID-based Storage**: Files are stored in Cloudinary using their SHA256 hash (OID) as the identifier
5. **Transparent Downloads**: When you clone or pull, files are automatically downloaded from Cloudinary
## Configuration
Configuration is stored in `~/.git-lfs-cloudinary/`:
- `config.json`: Non-sensitive configuration
- `.env`: Cloudinary credentials (keep this secure!)
## Example Workflows
### Library Usage (Simple & Pythonic)
```python
from git_lfs_cloudinary import flash as fs
# Setup once
fs.setup("cloud-name", "api-key", "api-secret")
# Upload files
result = fs.push("design/logo.psd")
print(f"Uploaded to: {result['url']}")
fs.push("videos/intro.mp4")
fs.push("assets/bundle.zip")
# Check if file exists in Cloudinary
if fs.exists("design/logo.psd"):
print("File is in Cloudinary!")
# Get file info
info = fs.info("design/logo.psd")
print(f"OID: {info['oid']}, Size: {info['size']}")
# Later, pull files back
fs.pull("design/logo.psd")
# Convenience aliases
fs.up("file.psd") # Same as fs.upload()
fs.down("abc123", "file.psd") # Same as fs.download()
```
See [LIBRARY_USAGE.md](LIBRARY_USAGE.md) and [examples/facade_example.py](examples/facade_example.py) for more.
### CLI Workflow (Recommended)
```bash
# 1. Setup once
py -m git_lfs_cloudinary.cli setup
# 2. Push large files (each one uploads + commits automatically)
py -m git_lfs_cloudinary.cli push design/logo.psd
py -m git_lfs_cloudinary.cli push videos/intro.mp4
py -m git_lfs_cloudinary.cli push assets/bundle.zip
# 3. Push to remote
git push
# Files are now stored in Cloudinary with pointers in Git!
# 4. Later, to get the actual files back:
py -m git_lfs_cloudinary.cli pull design/logo.psd
```
### Advanced: Git LFS Automatic Workflow
```bash
# 1. Setup (one time)
py -m git_lfs_cloudinary.cli setup
# 2. In your repository
cd my-project
py -m git_lfs_cloudinary.cli init
# 3. Track large files
git lfs track "*.psd"
git lfs track "*.ai"
git lfs track "design/**"
# 4. Add and commit
git add .gitattributes
git commit -m "Configure LFS tracking"
# 5. Add your large files
git add design/logo.psd
git commit -m "Add logo design"
git push
# File is automatically stored in Cloudinary!
```
## Cloudinary Free Tier
Cloudinary's free tier includes:
- **25 credits/month** (1 credit = 1GB storage or 1GB bandwidth)
- **25GB** total storage
- **25GB** monthly bandwidth
- **Image and video transformations**
- **Global CDN**
Perfect for small to medium projects!
## Troubleshooting
### "Cloudinary not configured"
Run `git-lfs-cloudinary setup` to configure your credentials.
### "Git LFS not installed"
Install Git LFS from [git-lfs.github.com](https://git-lfs.github.com/).
### "Not in a Git repository"
Make sure you're inside a Git repository when running `git-lfs-cloudinary init`.
### Files not uploading
1. Check that files are tracked: `git lfs ls-files`
2. Verify LFS configuration: `git lfs env`
3. Check Cloudinary status: `git-lfs-cloudinary status`
## Development
### Install for Development
```bash
git clone https://github.com/yourusername/git-lfs-cloudinary
cd git-lfs-cloudinary
pip install -e .
```
### Run Tests
```bash
pytest
```
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
## License
MIT License - see LICENSE file for details.
## Credits
- Built with [Cloudinary Python SDK](https://github.com/cloudinary/pycloudinary)
- Integrates with [Git LFS](https://git-lfs.github.com/)
## Links
- [Cloudinary](https://cloudinary.com/)
- [Git LFS](https://git-lfs.github.com/)
- [Git LFS Custom Transfers](https://github.com/git-lfs/git-lfs/blob/main/docs/custom-transfers.md)
Raw data
{
"_id": null,
"home_page": null,
"name": "git-lfs-cloudinary",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "git, lfs, cloudinary, media, storage",
"author": null,
"author_email": "Your Name <your.email@example.com>",
"download_url": "https://files.pythonhosted.org/packages/af/ff/9f974ece22277e6b9aa7e2b90a1442102647aa5e40a0896d94b9c7d20967/git_lfs_cloudinary-0.2.1.tar.gz",
"platform": null,
"description": "# Git LFS Cloudinary\r\n\r\nA Python library that integrates Git LFS (Large File Storage) with Cloudinary, allowing you to store your binary media files in Cloudinary's cloud storage instead of traditional Git LFS servers.\r\n\r\n## Features\r\n\r\n- \ud83d\ude80 **Seamless Integration**: Works as a Git LFS custom transfer agent\r\n- \u2601\ufe0f **Cloudinary Storage**: Store binary files in Cloudinary (free tier available)\r\n- \ud83d\udd12 **Secure**: Credentials stored securely in your home directory\r\n- \ud83d\udce6 **Easy Setup**: Simple command-line interface for configuration\r\n- \ud83c\udfaf **Automatic**: Works transparently with Git LFS commands\r\n- \ud83c\udd93 **Free Tier**: Use Cloudinary's free plan for small projects\r\n- \ud83d\udcda **Library & CLI**: Use as a command-line tool OR as a Python library\r\n\r\n## Usage Modes\r\n\r\n### 1. Simple Library (Flash Facade)\r\n\r\nUse it directly in your Python code with a simple, clean API:\r\n\r\n```python\r\nfrom git_lfs_cloudinary import flash as fs\r\n\r\n# Setup once\r\nfs.setup(\"cloud-name\", \"api-key\", \"api-secret\")\r\n\r\n# Push files\r\nresult = fs.push(\"myfile.psd\")\r\nprint(f\"Uploaded to: {result['url']}\")\r\n\r\n# Pull files\r\nfs.pull(\"myfile.psd\")\r\n\r\n# Check status\r\nstatus = fs.status()\r\nprint(f\"Configured: {status['configured']}\")\r\n```\r\n\r\nSee [LIBRARY_USAGE.md](LIBRARY_USAGE.md) for complete API documentation.\r\n\r\n### 2. Command-Line Interface\r\n\r\nUse via command-line for manual operations:\r\n\r\n```bash\r\n# Simple workflow\r\npy -m git_lfs_cloudinary.cli push myfile.psd\r\npy -m git_lfs_cloudinary.cli pull myfile.psd\r\n```\r\n\r\n### 3. Advanced: Git LFS Integration\r\n\r\nFully integrate with Git LFS for automatic file handling.\r\n\r\n## Why Use This?\r\n\r\nGit LFS is great for managing large files in Git repositories, but it requires either:\r\n- GitHub's LFS storage (limited free tier, paid beyond that)\r\n- Setting up your own LFS server\r\n\r\nWith `git-lfs-cloudinary`, you can:\r\n- Use Cloudinary's generous free tier (25GB storage, 25GB bandwidth/month)\r\n- Leverage Cloudinary's global CDN for fast downloads\r\n- Benefit from Cloudinary's image optimization features\r\n- Avoid setting up your own LFS server\r\n\r\n## Installation\r\n\r\n```bash\r\npip install git-lfs-cloudinary\r\n```\r\n\r\n### Command Usage\r\n\r\nUse the Python module directly (works immediately, no setup needed):\r\n\r\n```bash\r\npy -m git_lfs_cloudinary.cli push myfile.psd\r\n```\r\n\r\n**Optional shortcut:** If you want to use just `flash` instead, see [SETUP_PATH.md](SETUP_PATH.md) for PATH configuration.\r\n\r\n```bash\r\n# After PATH setup (optional):\r\nflash push myfile.psd\r\n```\r\n\r\n## Prerequisites\r\n\r\n1. **Git LFS**: Install from [git-lfs.github.com](https://git-lfs.github.com/)\r\n2. **Cloudinary Account**: Sign up for free at [cloudinary.com](https://cloudinary.com/)\r\n\r\n## Quick Start\r\n\r\n### Simple Workflow (Recommended)\r\n\r\nThe easiest way to use git-lfs-cloudinary:\r\n\r\n**1. Setup once:**\r\n```bash\r\npy -m git_lfs_cloudinary.cli setup\r\n```\r\n\r\n**2. Push any file (uploads to Cloudinary + commits to git):**\r\n```bash\r\npy -m git_lfs_cloudinary.cli push myfile.psd\r\n```\r\n\r\n**3. Push to remote:**\r\n```bash\r\ngit push\r\n```\r\n\r\nThat's it! The file is uploaded to Cloudinary, replaced with a pointer, and committed to git.\r\n\r\n**Pull files back when needed:**\r\n```bash\r\npy -m git_lfs_cloudinary.cli pull myfile.psd\r\n```\r\n\r\n### Advanced: Git LFS Integration\r\n\r\nFor automatic LFS integration:\r\n\r\n**1. Setup Cloudinary Credentials**\r\n\r\n```bash\r\ngit-lfs-cloudinary setup\r\n```\r\n\r\nYou'll need:\r\n- **Cloud Name**: Your Cloudinary cloud name\r\n- **API Key**: Your API key from Cloudinary dashboard\r\n- **API Secret**: Your API secret from Cloudinary dashboard\r\n\r\nYou can find these in your [Cloudinary Console Dashboard](https://console.cloudinary.com/).\r\n\r\n**2. Initialize in Your Git Repository**\r\n\r\n```bash\r\ncd your-repo\r\ngit-lfs-cloudinary init\r\n```\r\n\r\nThis will:\r\n- Initialize Git LFS in your repository\r\n- Configure Git LFS to use Cloudinary as the storage backend\r\n\r\n**3. Track Files with Git LFS**\r\n\r\nTrack the file types you want to store in Cloudinary:\r\n\r\n```bash\r\n# Track Photoshop files\r\ngit lfs track \"*.psd\"\r\n\r\n# Track video files\r\ngit lfs track \"*.mp4\"\r\n\r\n# Track ZIP archives\r\ngit lfs track \"*.zip\"\r\n\r\n# Track all files in a directory\r\ngit lfs track \"assets/**\"\r\n```\r\n\r\n**4. Commit and Push**\r\n\r\nNow just use Git normally! Files matching your LFS patterns will automatically be uploaded to Cloudinary:\r\n\r\n```bash\r\ngit add .\r\ngit commit -m \"Add large media files\"\r\ngit push\r\n```\r\n\r\n## Commands\r\n\r\n### `push` - Simple file push\r\n\r\nPush a file to Cloudinary, replace with pointer, and commit (recommended):\r\n\r\n```bash\r\npy -m git_lfs_cloudinary.cli push myfile.psd\r\n```\r\n\r\nThis one command:\r\n1. Uploads `myfile.psd` to Cloudinary\r\n2. Replaces it with an LFS pointer\r\n3. Commits the pointer to git\r\n\r\nThen just: `git push`\r\n\r\nOptions:\r\n- `-m \"message\"` - Custom commit message (default: \"Add myfile.psd\")\r\n- `--no-commit` - Skip the git commit step\r\n\r\n### `pull` - Get file back\r\n\r\nReplace an LFS pointer with the actual file:\r\n\r\n```bash\r\npy -m git_lfs_cloudinary.cli pull myfile.psd\r\n```\r\n\r\nThis downloads the file from Cloudinary and replaces the pointer.\r\n\r\n### `setup`\r\n\r\nConfigure Cloudinary credentials:\r\n\r\n```bash\r\npy -m git_lfs_cloudinary.cli setup\r\n```\r\n\r\nOptions:\r\n- `--cloud-name`: Your Cloudinary cloud name\r\n- `--api-key`: Your Cloudinary API key\r\n- `--api-secret`: Your Cloudinary API secret\r\n- `--folder`: Cloudinary folder for LFS files (default: `git-lfs`)\r\n\r\n### `status`\r\n\r\nCheck configuration status:\r\n\r\n```bash\r\npy -m git_lfs_cloudinary.cli status\r\n```\r\n\r\nShows:\r\n- Cloudinary configuration status\r\n- Git LFS installation status\r\n- Configuration details\r\n\r\n### `init` (Advanced)\r\n\r\nInitialize Git LFS with Cloudinary in the current repository:\r\n\r\n```bash\r\ngit-lfs-cloudinary init\r\n```\r\n\r\nMust be run inside a Git repository. Only needed for automatic Git LFS integration.\r\n\r\n### `upload` (Advanced)\r\n\r\nUpload a file without replacing it locally:\r\n\r\n```bash\r\ngit-lfs-cloudinary upload path/to/file.psd\r\n```\r\n\r\n### `download` (Advanced)\r\n\r\nDownload a file by OID:\r\n\r\n```bash\r\ngit-lfs-cloudinary download <oid> output/path.psd --size <bytes>\r\n```\r\n\r\n## How It Works\r\n\r\n1. **LFS Pointer Files**: When you commit a tracked file, Git LFS creates a small \"pointer\" file in your repository\r\n2. **Custom Transfer Agent**: This library acts as a custom transfer agent for Git LFS\r\n3. **Cloudinary Upload**: Instead of uploading to a Git LFS server, files are uploaded to Cloudinary\r\n4. **OID-based Storage**: Files are stored in Cloudinary using their SHA256 hash (OID) as the identifier\r\n5. **Transparent Downloads**: When you clone or pull, files are automatically downloaded from Cloudinary\r\n\r\n## Configuration\r\n\r\nConfiguration is stored in `~/.git-lfs-cloudinary/`:\r\n- `config.json`: Non-sensitive configuration\r\n- `.env`: Cloudinary credentials (keep this secure!)\r\n\r\n## Example Workflows\r\n\r\n### Library Usage (Simple & Pythonic)\r\n\r\n```python\r\nfrom git_lfs_cloudinary import flash as fs\r\n\r\n# Setup once\r\nfs.setup(\"cloud-name\", \"api-key\", \"api-secret\")\r\n\r\n# Upload files\r\nresult = fs.push(\"design/logo.psd\")\r\nprint(f\"Uploaded to: {result['url']}\")\r\n\r\nfs.push(\"videos/intro.mp4\")\r\nfs.push(\"assets/bundle.zip\")\r\n\r\n# Check if file exists in Cloudinary\r\nif fs.exists(\"design/logo.psd\"):\r\n print(\"File is in Cloudinary!\")\r\n\r\n# Get file info\r\ninfo = fs.info(\"design/logo.psd\")\r\nprint(f\"OID: {info['oid']}, Size: {info['size']}\")\r\n\r\n# Later, pull files back\r\nfs.pull(\"design/logo.psd\")\r\n\r\n# Convenience aliases\r\nfs.up(\"file.psd\") # Same as fs.upload()\r\nfs.down(\"abc123\", \"file.psd\") # Same as fs.download()\r\n```\r\n\r\nSee [LIBRARY_USAGE.md](LIBRARY_USAGE.md) and [examples/facade_example.py](examples/facade_example.py) for more.\r\n\r\n### CLI Workflow (Recommended)\r\n\r\n```bash\r\n# 1. Setup once\r\npy -m git_lfs_cloudinary.cli setup\r\n\r\n# 2. Push large files (each one uploads + commits automatically)\r\npy -m git_lfs_cloudinary.cli push design/logo.psd\r\npy -m git_lfs_cloudinary.cli push videos/intro.mp4\r\npy -m git_lfs_cloudinary.cli push assets/bundle.zip\r\n\r\n# 3. Push to remote\r\ngit push\r\n\r\n# Files are now stored in Cloudinary with pointers in Git!\r\n\r\n# 4. Later, to get the actual files back:\r\npy -m git_lfs_cloudinary.cli pull design/logo.psd\r\n```\r\n\r\n### Advanced: Git LFS Automatic Workflow\r\n\r\n```bash\r\n# 1. Setup (one time)\r\npy -m git_lfs_cloudinary.cli setup\r\n\r\n# 2. In your repository\r\ncd my-project\r\npy -m git_lfs_cloudinary.cli init\r\n\r\n# 3. Track large files\r\ngit lfs track \"*.psd\"\r\ngit lfs track \"*.ai\"\r\ngit lfs track \"design/**\"\r\n\r\n# 4. Add and commit\r\ngit add .gitattributes\r\ngit commit -m \"Configure LFS tracking\"\r\n\r\n# 5. Add your large files\r\ngit add design/logo.psd\r\ngit commit -m \"Add logo design\"\r\ngit push\r\n\r\n# File is automatically stored in Cloudinary!\r\n```\r\n\r\n## Cloudinary Free Tier\r\n\r\nCloudinary's free tier includes:\r\n- **25 credits/month** (1 credit = 1GB storage or 1GB bandwidth)\r\n- **25GB** total storage\r\n- **25GB** monthly bandwidth\r\n- **Image and video transformations**\r\n- **Global CDN**\r\n\r\nPerfect for small to medium projects!\r\n\r\n## Troubleshooting\r\n\r\n### \"Cloudinary not configured\"\r\n\r\nRun `git-lfs-cloudinary setup` to configure your credentials.\r\n\r\n### \"Git LFS not installed\"\r\n\r\nInstall Git LFS from [git-lfs.github.com](https://git-lfs.github.com/).\r\n\r\n### \"Not in a Git repository\"\r\n\r\nMake sure you're inside a Git repository when running `git-lfs-cloudinary init`.\r\n\r\n### Files not uploading\r\n\r\n1. Check that files are tracked: `git lfs ls-files`\r\n2. Verify LFS configuration: `git lfs env`\r\n3. Check Cloudinary status: `git-lfs-cloudinary status`\r\n\r\n## Development\r\n\r\n### Install for Development\r\n\r\n```bash\r\ngit clone https://github.com/yourusername/git-lfs-cloudinary\r\ncd git-lfs-cloudinary\r\npip install -e .\r\n```\r\n\r\n### Run Tests\r\n\r\n```bash\r\npytest\r\n```\r\n\r\n## Contributing\r\n\r\nContributions are welcome! Please feel free to submit a Pull Request.\r\n\r\n## License\r\n\r\nMIT License - see LICENSE file for details.\r\n\r\n## Credits\r\n\r\n- Built with [Cloudinary Python SDK](https://github.com/cloudinary/pycloudinary)\r\n- Integrates with [Git LFS](https://git-lfs.github.com/)\r\n\r\n## Links\r\n\r\n- [Cloudinary](https://cloudinary.com/)\r\n- [Git LFS](https://git-lfs.github.com/)\r\n- [Git LFS Custom Transfers](https://github.com/git-lfs/git-lfs/blob/main/docs/custom-transfers.md)\r\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Git LFS integration with Cloudinary for binary media storage",
"version": "0.2.1",
"project_urls": {
"Homepage": "https://github.com/yourusername/git-lfs-cloudinary",
"Repository": "https://github.com/yourusername/git-lfs-cloudinary"
},
"split_keywords": [
"git",
" lfs",
" cloudinary",
" media",
" storage"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "a8418317fdf771040256cfa0f404d96d090a00c7518b6d1acdfb240f22dc7706",
"md5": "96991a5ea9c4afa414df631c384f4ec6",
"sha256": "d0bd5a679233db52d59e3169ff60d1fe3351ace5e71a3f129cfb798255dd9a56"
},
"downloads": -1,
"filename": "git_lfs_cloudinary-0.2.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "96991a5ea9c4afa414df631c384f4ec6",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 17655,
"upload_time": "2025-10-06T06:49:35",
"upload_time_iso_8601": "2025-10-06T06:49:35.369670Z",
"url": "https://files.pythonhosted.org/packages/a8/41/8317fdf771040256cfa0f404d96d090a00c7518b6d1acdfb240f22dc7706/git_lfs_cloudinary-0.2.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "afff9f974ece22277e6b9aa7e2b90a1442102647aa5e40a0896d94b9c7d20967",
"md5": "4e0ccba988111e3bdf9943b05ee0217c",
"sha256": "b3a7eaa7e6604f06ee84498b7a1aa598b0c2c464894764a4f678cc7cc706938c"
},
"downloads": -1,
"filename": "git_lfs_cloudinary-0.2.1.tar.gz",
"has_sig": false,
"md5_digest": "4e0ccba988111e3bdf9943b05ee0217c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 18791,
"upload_time": "2025-10-06T06:49:36",
"upload_time_iso_8601": "2025-10-06T06:49:36.678406Z",
"url": "https://files.pythonhosted.org/packages/af/ff/9f974ece22277e6b9aa7e2b90a1442102647aa5e40a0896d94b9c7d20967/git_lfs_cloudinary-0.2.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-06 06:49:36",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "yourusername",
"github_project": "git-lfs-cloudinary",
"github_not_found": true,
"lcname": "git-lfs-cloudinary"
}