Python package for garbage collection utilities and memory management
Project description
glon
Git Clone utility - Clone repositories to organized directory structure.
Overview
The glon package provides a convenient CLI tool for cloning git repositories to an organized directory structure, as well as listing and managing your cloned projects.
Features
- Easy Cloning: Clone git repositories with a single command
- Clipboard Integration: Clone directly from clipboard URLs
- Smart Opening: Open projects with clipboard auto-detection and auto-cloning
- Grab from Clipboard: Grab paths from clipboard (git URLs or local paths)
- List Projects: List all cloned projects with time-based filtering
- Open in IDE: Open projects directly in PyCharm, VSCode, and other IDEs
- Organized Structure: Projects organized by owner/repo structure
Installation
pip install glon
Development Installation
git clone https://github.com/tom-sapletta/glon.git
cd glon
pip install -e ".[dev]"
Quick Start
Clone a Repository
# Clone using git URL
glon https://github.com/owner/repo.git
# Or clone from clipboard (copies URL to clipboard first)
glon
Smart Open (Clipboard-Prioritized)
# Smart open - checks clipboard first, auto-clones if needed
glon open
# Copy a git URL to clipboard, then:
glon open # Auto-detects and opens the project
Grab from Clipboard
The grab command reads a path from clipboard and processes it:
# Grab from clipboard - detects if it's a git URL or local path
glon grab
# With options
glon grab --base-path ~/projects
glon grab --dry-run
glon grab --verbose
List Projects
List all cloned projects in your base directory:
# List all projects
glon list
glon ls
# Filter by time
glon list "last week"
glon list "last month"
glon list "last year"
glon list 30 # last 30 days
# Verbose output with full paths
glon list --verbose
glon ls -v
CLI Commands
Clone
Clone a git repository to the organized directory structure (default: ~/github):
glon <git-url> # Clone from URL
glon clone <git-url> # Same as above (explicit)
glon --dry-run <url> # Show what would be done
glon --base-path ~/my-projects <url> # Custom base path
Grab
Grab a path from clipboard:
glon grab # Read from clipboard and process
glon grab --verbose # Show detailed output
glon grab --dry-run # Preview without executing
glon grab --base-path ~/my-projects # Custom output path
List (or LS)
List all cloned projects:
glon list # List all projects
glon ls # Short alias
glon list "last week" # Projects modified last week
glon list "last month" # Projects modified last month
glon list "last year" # Projects modified last year
glon list 30 # Projects modified last 30 days
glon list --verbose # Show full paths and details
glon ls -v # Verbose output
glon list --base-path ~/my-projects # Custom base path
Open
Open a project in your IDE (PyCharm, VSCode, etc.):
# Open with clipboard priority - checks clipboard first for git URLs
glon open # Auto-detect from clipboard, or show project list
# Open specific project
glon open owner/repo # Open in PyCharm (default)
glon open owner/repo --ide vscode # Open in VS Code
glon open /full/path/to/project # Open with full path
glon open ~/github/owner/repo # Open with expanded path
# Open with different IDE
glon open --ide vscode # Open clipboard-detected project in VS Code
glon open --ide idea # Open in IntelliJ IDEA
glon open --ide webstorm # Open in WebStorm
glon open --ide goland # Open in GoLand
glon open --ide rider # Open in Rider
Clipboard-Prioritized Opening: When glon open is called without arguments, it:
- First checks clipboard for git URLs (SSH or HTTPS format)
- If a git URL is found and the project exists locally, opens it immediately
- If the project doesn't exist, clones it first then opens it
- If no valid git URL is found, shows the available projects list
API Reference
GarbageCollector
Main class for garbage collection control and monitoring.
Methods
enable()- Enable garbage collectiondisable()- Disable garbage collectioncollect(generation=2)- Force garbage collectionget_stats()- Get garbage collection statisticsget_memory_summary()- Get comprehensive memory summary
MemoryProfiler
Class for memory profiling and object tracking.
Methods
take_snapshot(label="")- Take a memory snapshottrack_object(obj, label="")- Track an object with weak referencecompare_snapshots(index1, index2)- Compare two memory snapshotsget_tracked_objects()- Get information about tracked objects
Utility Functions
cleanup_temp_files(pattern="*")- Clean up temporary filesmonitor_memory_usage(duration=60, interval=1.0)- Monitor memory usageforce_garbage_collection(verbose=False)- Force garbage collection on all generationsfind_object_cycles(obj, max_depth=10)- Find reference cyclesanalyze_memory_usage()- Comprehensive memory analysis
Requirements
- Python 3.8+
- psutil>=5.8.0
Development
Running Tests
pytest
Code Formatting
black glon/
Type Checking
mypy glon/
License
Apache License 2.0 - see LICENSE for details.
Contributing
Contributions are welcome! Please read the CONTRIBUTING.md file for details on our code of conduct and the process for submitting pull requests.
Changelog
0.1.0
- Initial release
- Basic garbage collection control
- Memory profiling capabilities
- Utility functions for memory management
License
Apache License 2.0 - see LICENSE for details.
Author
Created by Tom Sapletta - tom@sapletta.com
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file glon-0.1.25.tar.gz.
File metadata
- Download URL: glon-0.1.25.tar.gz
- Upload date:
- Size: 26.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a57475a12ec6554d418f39d5fdc73261c72313cae8e257e901cb8c6c02ed6eaf
|
|
| MD5 |
2985912ca6410b2eba3453d43913b823
|
|
| BLAKE2b-256 |
69abb78e77672d37dc929788d7c17cc74b5f509595910fbeeeaea15c2d188907
|
File details
Details for the file glon-0.1.25-py3-none-any.whl.
File metadata
- Download URL: glon-0.1.25-py3-none-any.whl
- Upload date:
- Size: 20.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ae405130eef36d233de10479eb1018958d9f91563386e2f1466cd972282f37a5
|
|
| MD5 |
35672cced79a72cb5e2eb372f45cbe2c
|
|
| BLAKE2b-256 |
9dd383d38871ec543fce048c4d449f88fc9af06904d368e149acd18f2e70d66d
|