https://github.com/growgraph/suthing
Small Useful Things : python package for convenient primitives
https://github.com/growgraph/suthing
Last synced: 5 months ago
JSON representation
Small Useful Things : python package for convenient primitives
- Host: GitHub
- URL: https://github.com/growgraph/suthing
- Owner: growgraph
- License: mit
- Created: 2023-03-29T20:24:45.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2025-11-09T22:50:49.000Z (7 months ago)
- Last Synced: 2025-11-09T23:22:03.558Z (7 months ago)
- Language: Python
- Homepage: https://growgraph.github.io/suthing
- Size: 977 KB
- Stars: 5
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: docs/contributing.md
- License: LICENSE
Awesome Lists containing this project
README
# SUThing 
SUThing /ˈsu.θɪŋ/ or /ˈsʌ.θɪŋ/ (Some Useful Things) is a collection of useful classes and decorators.
A Python utility package providing tools for file handling, timing, profiling, and data comparison.

[](https://badge.fury.io/py/suthing)
[](https://pepy.tech/projects/suthing)
[](https://opensource.org/licenses/MIT)
[](https://github.com/growgraph/suthing/actions/workflows/pre-commit.yml)
[](https://github.com/growgraph/suthing/actions/workflows/pytest.yml)
## Features
- **File Handling**: one-line file reading/wriing with file format infererence from provided extension (YAML, JSON, CSV, pickle, gz etc.)
- **Performance Measurement**: Simple timer utilities and profiling decorators
- **Data Comparison**: Deep comparison of nested data structures
- **Error Handling**: Decorators for secure function execution and error tracking
## Documentation
Full documentation is available at: [growgraph.github.io/suthing](https://growgraph.github.io/suthing)
## Installation
```bash
pip install suthing
```
## Usage Examples
### File Handling
```python
from suthing import FileHandle, FileType
# Read YAML file
data = FileHandle.load(fpath="config.yaml")
# Write compressed JSON
# file type inferred from extension
FileHandle.dump(data, "output.json.gz")
```
### Timing Code
```python
from suthing import Timer
with Timer() as t:
# Your code here
pass
print(f"Execution took {t.elapsed_str}")
```
### Profiling Functions
```python
from suthing import profile, SProfiler
profiler = SProfiler()
@profile(_argnames="input_size")
def my_function(input_size):
# Function code
pass
# Run with profiler
my_function(input_size=100, _profiler=profiler)
# View results
stats = profiler.view_stats()
```
### Deep Comparison
```python
from suthing import equals
# Compare nested structures
result = equals(complex_dict1, complex_dict2)
```
## Requirements
- Python 3.10+
- pandas
- PyYAML
- python-dotenv
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.