Name | filewise JSON |
Version |
3.11.6
JSON |
| download |
home_page | None |
Summary | A Python package for efficient file and directory management, featuring tools for bulk renaming, data handling, and format conversion |
upload_time | 2025-07-17 11:20:35 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.10 |
license | MIT License
Copyright (c) 2024 filewise
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. |
keywords |
file management
directory operations
bulk renaming
data handling
format conversion
|
VCS |
 |
bugtrack_url |
|
requirements |
pandas
numpy
xarray
netcdf4
h5py
openpyxl
PyPDF2
reportlab
pygenutils
paramlib
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# filewise
[](https://www.python.org/downloads/)
[](LICENSE)
[](https://pypi.org/project/filewise/)
**filewise** is a comprehensive Python toolkit designed to simplify file operations, data manipulation, and scientific data processing. It provides a robust set of tools for file handling, directory management, format conversion, and data analysis, making it an essential utility package for Python developers working with diverse file types and data formats.
## Features
- **File Operations**:
- Advanced bulk file renaming with automatic and manual modes
- Intelligent file searching with glob patterns and extensions
- File and directory permission management
- Comprehensive file copying, moving, and synchronisation (rsync)
- Path utilities with pattern matching and filtering
- **Format Converters**:
- PDF manipulation: merging, compression, page extraction, and tweaking
- Email format conversion: EML and MSG to PDF conversion
- Document processing with external tool integration
- Batch file format conversion capabilities
- **Data Processing**:
- **Pandas utilities**: DataFrame manipulation, merging, time series standardisation
- **Xarray utilities**: NetCDF file handling, climate data processing, coordinate operations
- **JSON utilities**: Advanced JSON serialisation, encoding operations, DataFrame integration
- Scientific data format conversion and analysis
- **Automation Scripts**:
- Copy and compress workflows for file management
- PDF processing automation (compression, tweaking, merging)
- Bulk file operations with customisable parameters
- Email conversion automation scripts
- **General Utilities**:
- Function introspection and debugging tools
- Memory usage analysis and object inspection
- Dynamic function argument retrieval and validation
## Installation
### Prerequisites
Before installing, please ensure the following dependencies are available on your system:
- **Required Third-Party Libraries**:
```bash
pip install pandas numpy xarray netcdf4 openpyxl xlsxwriter odfpy
```
Or via Anaconda (recommended channel: `conda-forge`):
```bash
conda install -c conda-forge pandas numpy xarray netcdf4 openpyxl xlsxwriter odfpy
```
- **External Tools** (for PDF and email conversion):
```bash
# Ubuntu/Debian
sudo apt-get install ghostscript pdftk wkhtmltopdf poppler-utils
# For email conversion
sudo apt-get install libemail-address-xs-perl
```
- **Internal Package Dependencies**:
```bash
pip install paramlib
pip install pygenutils # Core functionality
pip install pygenutils[arrow] # With arrow support (optional)
```
### Installation Instructions
#### For regular users (from PyPI)
```bash
# Install filewise from PyPI (includes all dependencies)
pip install filewise
```
**Note:** The package now includes all dependencies with version constraints, so no additional installation steps are required.
#### For contributors/developers (with latest Git versions)
```bash
# Clone the repository
git clone https://github.com/EusDancerDev/filewise.git
cd filewise
# Install with development dependencies (includes latest Git versions)
pip install -e .[dev]
# Alternative: Use requirements-dev.txt for explicit Git dependencies
pip install -r requirements-dev.txt
pip install -e .
```
**Benefits of the new approach:**
- **Regular users**: Simple `pip install filewise` with all dependencies included
- **Developers**: Access to latest Git versions for development and testing
- **PyPI compatibility**: All packages can be published without Git dependency issues
### Package Updates
To stay up-to-date with the latest version of this package, simply run:
```bash
pip install --upgrade filewise
```
## Development Setup
### For Contributors and Developers
If you're planning to contribute to the project or work with the source code, follow these setup instructions:
#### Quick Setup (Recommended)
```bash
# Clone the repository
git clone https://github.com/EusDancerDev/filewise.git
cd filewise
# Install with development dependencies (includes latest Git versions)
pip install -e .[dev]
```
**Note**: The `-e` flag installs the package in "editable" mode, meaning changes to the source code are immediately reflected without reinstalling. The `[dev]` flag includes the latest Git versions of interdependent packages.
#### Alternative Setup (Explicit Git Dependencies)
If you prefer to use the explicit development requirements file:
```bash
# Clone the repository
git clone https://github.com/EusDancerDev/filewise.git
cd filewise
# Install development dependencies from requirements-dev.txt
pip install -r requirements-dev.txt
# Install in editable mode
pip install -e .
```
This approach gives you the latest development versions of all interdependent packages for testing and development.
### Troubleshooting
If you encounter import errors after cloning:
1. **For regular users**: Run `pip install filewise` (all dependencies included)
2. **For developers**: Run `pip install -e .[dev]` to include development dependencies
3. **Verify Python environment**: Make sure you're using a compatible Python version (3.10+)
### Verify Installation
To verify that your installation is working correctly, you can run this quick test:
```python
# Test script to verify installation
try:
import filewise
from pygenutils.arrays_and_lists.data_manipulation import flatten_list
from paramlib.global_parameters import BASIC_OBJECT_TYPES
print("✅ All imports successful!")
print(f"✅ filewise version: {filewise.__version__}")
print("✅ Installation is working correctly.")
except ImportError as e:
print(f"❌ Import error: {e}")
print("💡 For regular users: pip install filewise")
print("💡 For developers: pip install -e .[dev]")
```
### Implementation Notes
This project implements a **dual-approach dependency management** system:
- **Production Dependencies**: Version-constrained dependencies for PyPI compatibility
- **Development Dependencies**: Git-based dependencies for latest development versions
- **Installation Methods**:
- **Regular users**: Simple `pip install filewise` with all dependencies included
- **Developers**: `pip install -e .[dev]` for latest Git versions and development tools
- **PyPI Compatibility**: All packages can be published without Git dependency issues
- **Development Flexibility**: Contributors get access to latest versions for testing and development
## Usage
### Basic Example - File Operations
```python
from filewise.file_operations.path_utils import find_files
from filewise.file_operations.bulk_rename_auto import reorder_objs
# Find all PDF files in a directory
pdf_files = find_files(
patterns="pdf",
search_path="/path/to/documents",
match_type="ext",
top_only=False
)
# Automatically rename files with sequential numbering
reorder_objs(
path="/path/to/documents",
obj_type="file",
extensions2skip="tmp",
starting_number=1,
zero_padding=3
)
```
### Advanced Example - PDF Processing
```python
from filewise.format_converters.pdf_tools import merge_files, file_compressor
# Merge multiple PDF files
pdf_list = ["document1.pdf", "document2.pdf", "document3.pdf"]
merge_files(
in_path_list=pdf_list,
out_path="merged_document.pdf"
)
# Compress PDF files
file_compressor(
in_path="large_document.pdf",
out_path="compressed_document.pdf"
)
```
### Data Processing Example - Pandas
```python
from filewise.pandas_utils.pandas_obj_handler import merge_excel_files, standardise_time_series
from filewise.pandas_utils.data_manipulation import sort_df_values
# Merge multiple Excel files
result = merge_excel_files(
input_file_list=["data1.xlsx", "data2.xlsx"],
output_file_path="merged_data.xlsx",
save_merged_file=True
)
# Standardise time series data
standardised_df = standardise_time_series(
dfs=[df1, df2, df3],
date_value_pairs=[("date", "value1"), ("timestamp", "value2"), ("time", "value3")],
handle_duplicates=True
)
```
### Scientific Data Example - Xarray
```python
from filewise.xarray_utils.file_utils import scan_ncfiles, ncfile_integrity_status
from filewise.xarray_utils.patterns import get_latlon_bounds
from filewise.xarray_utils.xarray_obj_handler import save2nc
# Scan NetCDF files in directory
file_info = scan_ncfiles("/path/to/netcdf/files")
# Check file integrity
dataset = ncfile_integrity_status("climate_data.nc")
# Extract coordinate bounds
lat_bounds, lon_bounds = get_latlon_bounds(
nc_file="climate_data.nc",
lat_dimension_name="latitude",
lon_dimension_name="longitude"
)
```
### JSON Processing Example
```python
from filewise.json_utils.json_obj_handler import serialise_to_json, deserialise_json_to_df
# Serialise data to JSON with custom formatting
serialise_to_json(
data={"results": [1, 2, 3], "metadata": {"version": "1.0"}},
out_file_path="output.json",
indent=2,
sort_keys=True
)
# Convert JSON to DataFrame
df = deserialise_json_to_df(
json_obj_list=["data1.json", "data2.json"],
orient="records"
)
```
### Automation Script Example
```python
from filewise.scripts.copy_compress import _execute_copy_compress_workflow
# Execute automated file copy and compression workflow
# (Configure parameters in the script as needed)
_execute_copy_compress_workflow()
```
## Project Structure
The package is organised into specialised sub-packages for different file operations:
```text
filewise/
├── file_operations/
│ ├── bulk_rename_auto.py # Automatic bulk file renaming
│ ├── bulk_rename_manual.py # Manual file renaming templates
│ ├── cat_file_content.py # File content display utilities
│ ├── ops_handler.py # Core file operations (copy, move, sync)
│ ├── path_utils.py # Path searching and pattern matching
│ └── permission_manager.py # File/directory permission management
├── format_converters/
│ └── pdf_tools.py # PDF manipulation and conversion tools
├── pandas_utils/
│ ├── conversions.py # DataFrame format conversions
│ ├── data_manipulation.py # DataFrame operations and analysis
│ └── pandas_obj_handler.py # Excel, CSV, ODS file handling
├── xarray_utils/
│ ├── conversions.py # Climate data format conversion
│ ├── data_manipulation.py # NetCDF data processing
│ ├── file_utils.py # NetCDF file utilities and integrity checks
│ ├── patterns.py # Coordinate and dimension pattern analysis
│ └── xarray_obj_handler.py # NetCDF file creation and manipulation
├── json_utils/
│ ├── json_encoding_operations.py # Custom JSON encoding/decoding
│ └── json_obj_handler.py # JSON file operations and DataFrame integration
├── general/
│ └── introspection_utils.py # Function introspection and debugging
└── scripts/
├── bulk_rename.py # Bulk renaming automation
├── compress_pdf.py # PDF compression automation
├── copy_compress.py # File copy and compression workflow
├── eml2pdf_exec.py # Email to PDF conversion
├── modify_properties.py # File property modification
├── msg2pdf_exec.py # MSG to PDF conversion
└── tweak_pdf.py # PDF page manipulation
```
## Key Functions
### File Operations
- `find_files()` - Advanced file searching with pattern matching
- `reorder_objs()` - Automatic sequential file/directory renaming
- `rsync()` - Directory synchronisation with advanced options
- `modify_obj_permissions()` - Batch permission modification
### Format Conversion
- `merge_files()` - PDF merging with customisable options
- `file_compressor()` - PDF compression with quality control
- `eml_to_pdf()`, `msg_to_pdf()` - Email format conversion
### Data Processing
- `merge_excel_files()` - Multi-file Excel processing
- `standardise_time_series()` - Time series data normalisation
- `scan_ncfiles()` - NetCDF file analysis and cataloguing
- `get_latlon_bounds()` - Climate data coordinate extraction
### JSON Operations
- `serialise_to_json()` - Advanced JSON serialisation
- `deserialise_json_to_df()` - JSON to DataFrame conversion
- Custom encoding for complex Python objects
### Automation
- Ready-to-use scripts for common file operations
- Configurable workflows for batch processing
- Integration with system tools and external programs
## Advanced Features
### Defensive Programming
- Automatic nested list flattening for robust parameter handling
- Comprehensive error handling and validation
- Type checking and parameter validation
### Performance Optimisation
- LRU caching for pattern compilation
- Efficient file searching algorithms
- Memory-conscious data processing
### Scientific Data Support
- Climate data processing with coordinate system handling
- NetCDF file integrity checking and validation
- Advanced time series manipulation and standardisation
## Version Information
Current version: **3.10.0**
For detailed version history and changelog, see [CHANGELOG.md](CHANGELOG.md) and [VERSIONING.md](VERSIONING.md).
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
### Development Guidelines
- Follow the existing code structure and naming conventions
- Add comprehensive docstrings for new functions
- Include error handling and parameter validation
- Write tests for new functionality
- Update the changelog for significant changes
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## Acknowledgments
- **NumPy and Pandas communities** for foundational data processing tools
- **Xarray developers** for climate and scientific data handling capabilities
- **Python packaging community** for best practices and standards
- **Open-source contributors** to file processing and automation tools
## Contact
For any questions or suggestions, please open an issue on GitHub or contact the maintainers.
## Dependencies
This package relies on several high-quality external packages:
- `pygenutils` - General utility functions and data manipulation
- `paramlib` - Parameter and configuration management
- Standard scientific Python stack (NumPy, Pandas, Xarray)
- External system tools for advanced file operations
## System Requirements
- Python 3.8 or higher
- Unix-like operating system (Linux, macOS) for full functionality
- Optional: External tools for PDF and email processing (ghostscript, pdftk, etc.)
Raw data
{
"_id": null,
"home_page": null,
"name": "filewise",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "file management, directory operations, bulk renaming, data handling, format conversion",
"author": null,
"author_email": "Jon Ander Gabantxo <jagabantxo@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/72/44/3ba941caf79592cc1e0b3a3ba03896520878f05ad713a388a7efddfae5fa/filewise-3.11.6.tar.gz",
"platform": null,
"description": "# filewise\n\n[](https://www.python.org/downloads/)\n[](LICENSE)\n[](https://pypi.org/project/filewise/)\n\n**filewise** is a comprehensive Python toolkit designed to simplify file operations, data manipulation, and scientific data processing. It provides a robust set of tools for file handling, directory management, format conversion, and data analysis, making it an essential utility package for Python developers working with diverse file types and data formats.\n\n## Features\n\n- **File Operations**:\n - Advanced bulk file renaming with automatic and manual modes\n - Intelligent file searching with glob patterns and extensions\n - File and directory permission management\n - Comprehensive file copying, moving, and synchronisation (rsync)\n - Path utilities with pattern matching and filtering\n\n- **Format Converters**:\n - PDF manipulation: merging, compression, page extraction, and tweaking\n - Email format conversion: EML and MSG to PDF conversion\n - Document processing with external tool integration\n - Batch file format conversion capabilities\n\n- **Data Processing**:\n - **Pandas utilities**: DataFrame manipulation, merging, time series standardisation\n - **Xarray utilities**: NetCDF file handling, climate data processing, coordinate operations\n - **JSON utilities**: Advanced JSON serialisation, encoding operations, DataFrame integration\n - Scientific data format conversion and analysis\n\n- **Automation Scripts**:\n - Copy and compress workflows for file management\n - PDF processing automation (compression, tweaking, merging)\n - Bulk file operations with customisable parameters\n - Email conversion automation scripts\n\n- **General Utilities**:\n - Function introspection and debugging tools\n - Memory usage analysis and object inspection\n - Dynamic function argument retrieval and validation\n\n## Installation\n\n### Prerequisites\n\nBefore installing, please ensure the following dependencies are available on your system:\n\n- **Required Third-Party Libraries**:\n\n ```bash\n pip install pandas numpy xarray netcdf4 openpyxl xlsxwriter odfpy\n ```\n\n Or via Anaconda (recommended channel: `conda-forge`):\n\n ```bash\n conda install -c conda-forge pandas numpy xarray netcdf4 openpyxl xlsxwriter odfpy\n ```\n\n- **External Tools** (for PDF and email conversion):\n\n ```bash\n # Ubuntu/Debian\n sudo apt-get install ghostscript pdftk wkhtmltopdf poppler-utils\n\n # For email conversion\n sudo apt-get install libemail-address-xs-perl\n ```\n\n- **Internal Package Dependencies**:\n\n ```bash\n pip install paramlib\n pip install pygenutils # Core functionality\n pip install pygenutils[arrow] # With arrow support (optional)\n ```\n\n### Installation Instructions\n\n#### For regular users (from PyPI)\n\n```bash\n# Install filewise from PyPI (includes all dependencies)\npip install filewise\n```\n\n**Note:** The package now includes all dependencies with version constraints, so no additional installation steps are required.\n\n#### For contributors/developers (with latest Git versions)\n\n```bash\n# Clone the repository\ngit clone https://github.com/EusDancerDev/filewise.git\ncd filewise\n\n# Install with development dependencies (includes latest Git versions)\npip install -e .[dev]\n\n# Alternative: Use requirements-dev.txt for explicit Git dependencies\npip install -r requirements-dev.txt\npip install -e .\n```\n\n**Benefits of the new approach:**\n\n- **Regular users**: Simple `pip install filewise` with all dependencies included\n- **Developers**: Access to latest Git versions for development and testing\n- **PyPI compatibility**: All packages can be published without Git dependency issues\n\n### Package Updates\n\nTo stay up-to-date with the latest version of this package, simply run:\n\n```bash\npip install --upgrade filewise\n```\n\n## Development Setup\n\n### For Contributors and Developers\n\nIf you're planning to contribute to the project or work with the source code, follow these setup instructions:\n\n#### Quick Setup (Recommended)\n\n```bash\n# Clone the repository\ngit clone https://github.com/EusDancerDev/filewise.git\ncd filewise\n\n# Install with development dependencies (includes latest Git versions)\npip install -e .[dev]\n```\n\n**Note**: The `-e` flag installs the package in \"editable\" mode, meaning changes to the source code are immediately reflected without reinstalling. The `[dev]` flag includes the latest Git versions of interdependent packages.\n\n#### Alternative Setup (Explicit Git Dependencies)\n\nIf you prefer to use the explicit development requirements file:\n\n```bash\n# Clone the repository\ngit clone https://github.com/EusDancerDev/filewise.git\ncd filewise\n\n# Install development dependencies from requirements-dev.txt\npip install -r requirements-dev.txt\n\n# Install in editable mode\npip install -e .\n```\n\nThis approach gives you the latest development versions of all interdependent packages for testing and development.\n\n### Troubleshooting\n\nIf you encounter import errors after cloning:\n\n1. **For regular users**: Run `pip install filewise` (all dependencies included)\n2. **For developers**: Run `pip install -e .[dev]` to include development dependencies\n3. **Verify Python environment**: Make sure you're using a compatible Python version (3.10+)\n\n### Verify Installation\n\nTo verify that your installation is working correctly, you can run this quick test:\n\n```python\n# Test script to verify installation\ntry:\n import filewise\n from pygenutils.arrays_and_lists.data_manipulation import flatten_list\n from paramlib.global_parameters import BASIC_OBJECT_TYPES\n \n print(\"\u2705 All imports successful!\")\n print(f\"\u2705 filewise version: {filewise.__version__}\")\n print(\"\u2705 Installation is working correctly.\")\n \nexcept ImportError as e:\n print(f\"\u274c Import error: {e}\")\n print(\"\ud83d\udca1 For regular users: pip install filewise\")\n print(\"\ud83d\udca1 For developers: pip install -e .[dev]\")\n```\n\n### Implementation Notes\n\nThis project implements a **dual-approach dependency management** system:\n\n- **Production Dependencies**: Version-constrained dependencies for PyPI compatibility\n- **Development Dependencies**: Git-based dependencies for latest development versions\n- **Installation Methods**:\n - **Regular users**: Simple `pip install filewise` with all dependencies included\n - **Developers**: `pip install -e .[dev]` for latest Git versions and development tools\n- **PyPI Compatibility**: All packages can be published without Git dependency issues\n- **Development Flexibility**: Contributors get access to latest versions for testing and development\n\n## Usage\n\n### Basic Example - File Operations\n\n```python\nfrom filewise.file_operations.path_utils import find_files\nfrom filewise.file_operations.bulk_rename_auto import reorder_objs\n\n# Find all PDF files in a directory\npdf_files = find_files(\n patterns=\"pdf\",\n search_path=\"/path/to/documents\",\n match_type=\"ext\",\n top_only=False\n)\n\n# Automatically rename files with sequential numbering\nreorder_objs(\n path=\"/path/to/documents\",\n obj_type=\"file\",\n extensions2skip=\"tmp\",\n starting_number=1,\n zero_padding=3\n)\n```\n\n### Advanced Example - PDF Processing\n\n```python\nfrom filewise.format_converters.pdf_tools import merge_files, file_compressor\n\n# Merge multiple PDF files\npdf_list = [\"document1.pdf\", \"document2.pdf\", \"document3.pdf\"]\nmerge_files(\n in_path_list=pdf_list,\n out_path=\"merged_document.pdf\"\n)\n\n# Compress PDF files\nfile_compressor(\n in_path=\"large_document.pdf\",\n out_path=\"compressed_document.pdf\"\n)\n```\n\n### Data Processing Example - Pandas\n\n```python\nfrom filewise.pandas_utils.pandas_obj_handler import merge_excel_files, standardise_time_series\nfrom filewise.pandas_utils.data_manipulation import sort_df_values\n\n# Merge multiple Excel files\nresult = merge_excel_files(\n input_file_list=[\"data1.xlsx\", \"data2.xlsx\"],\n output_file_path=\"merged_data.xlsx\",\n save_merged_file=True\n)\n\n# Standardise time series data\nstandardised_df = standardise_time_series(\n dfs=[df1, df2, df3],\n date_value_pairs=[(\"date\", \"value1\"), (\"timestamp\", \"value2\"), (\"time\", \"value3\")],\n handle_duplicates=True\n)\n```\n\n### Scientific Data Example - Xarray\n\n```python\nfrom filewise.xarray_utils.file_utils import scan_ncfiles, ncfile_integrity_status\nfrom filewise.xarray_utils.patterns import get_latlon_bounds\nfrom filewise.xarray_utils.xarray_obj_handler import save2nc\n\n# Scan NetCDF files in directory\nfile_info = scan_ncfiles(\"/path/to/netcdf/files\")\n\n# Check file integrity\ndataset = ncfile_integrity_status(\"climate_data.nc\")\n\n# Extract coordinate bounds\nlat_bounds, lon_bounds = get_latlon_bounds(\n nc_file=\"climate_data.nc\",\n lat_dimension_name=\"latitude\",\n lon_dimension_name=\"longitude\"\n)\n```\n\n### JSON Processing Example\n\n```python\nfrom filewise.json_utils.json_obj_handler import serialise_to_json, deserialise_json_to_df\n\n# Serialise data to JSON with custom formatting\nserialise_to_json(\n data={\"results\": [1, 2, 3], \"metadata\": {\"version\": \"1.0\"}},\n out_file_path=\"output.json\",\n indent=2,\n sort_keys=True\n)\n\n# Convert JSON to DataFrame\ndf = deserialise_json_to_df(\n json_obj_list=[\"data1.json\", \"data2.json\"],\n orient=\"records\"\n)\n```\n\n### Automation Script Example\n\n```python\nfrom filewise.scripts.copy_compress import _execute_copy_compress_workflow\n\n# Execute automated file copy and compression workflow\n# (Configure parameters in the script as needed)\n_execute_copy_compress_workflow()\n```\n\n## Project Structure\n\nThe package is organised into specialised sub-packages for different file operations:\n\n```text\nfilewise/\n\u251c\u2500\u2500 file_operations/\n\u2502 \u251c\u2500\u2500 bulk_rename_auto.py # Automatic bulk file renaming\n\u2502 \u251c\u2500\u2500 bulk_rename_manual.py # Manual file renaming templates\n\u2502 \u251c\u2500\u2500 cat_file_content.py # File content display utilities\n\u2502 \u251c\u2500\u2500 ops_handler.py # Core file operations (copy, move, sync)\n\u2502 \u251c\u2500\u2500 path_utils.py # Path searching and pattern matching\n\u2502 \u2514\u2500\u2500 permission_manager.py # File/directory permission management\n\u251c\u2500\u2500 format_converters/\n\u2502 \u2514\u2500\u2500 pdf_tools.py # PDF manipulation and conversion tools\n\u251c\u2500\u2500 pandas_utils/\n\u2502 \u251c\u2500\u2500 conversions.py # DataFrame format conversions\n\u2502 \u251c\u2500\u2500 data_manipulation.py # DataFrame operations and analysis\n\u2502 \u2514\u2500\u2500 pandas_obj_handler.py # Excel, CSV, ODS file handling\n\u251c\u2500\u2500 xarray_utils/\n\u2502 \u251c\u2500\u2500 conversions.py # Climate data format conversion\n\u2502 \u251c\u2500\u2500 data_manipulation.py # NetCDF data processing\n\u2502 \u251c\u2500\u2500 file_utils.py # NetCDF file utilities and integrity checks\n\u2502 \u251c\u2500\u2500 patterns.py # Coordinate and dimension pattern analysis\n\u2502 \u2514\u2500\u2500 xarray_obj_handler.py # NetCDF file creation and manipulation\n\u251c\u2500\u2500 json_utils/\n\u2502 \u251c\u2500\u2500 json_encoding_operations.py # Custom JSON encoding/decoding\n\u2502 \u2514\u2500\u2500 json_obj_handler.py # JSON file operations and DataFrame integration\n\u251c\u2500\u2500 general/\n\u2502 \u2514\u2500\u2500 introspection_utils.py # Function introspection and debugging\n\u2514\u2500\u2500 scripts/\n \u251c\u2500\u2500 bulk_rename.py # Bulk renaming automation\n \u251c\u2500\u2500 compress_pdf.py # PDF compression automation\n \u251c\u2500\u2500 copy_compress.py # File copy and compression workflow\n \u251c\u2500\u2500 eml2pdf_exec.py # Email to PDF conversion\n \u251c\u2500\u2500 modify_properties.py # File property modification\n \u251c\u2500\u2500 msg2pdf_exec.py # MSG to PDF conversion\n \u2514\u2500\u2500 tweak_pdf.py # PDF page manipulation\n```\n\n## Key Functions\n\n### File Operations\n\n- `find_files()` - Advanced file searching with pattern matching\n- `reorder_objs()` - Automatic sequential file/directory renaming\n- `rsync()` - Directory synchronisation with advanced options\n- `modify_obj_permissions()` - Batch permission modification\n\n### Format Conversion\n\n- `merge_files()` - PDF merging with customisable options\n- `file_compressor()` - PDF compression with quality control\n- `eml_to_pdf()`, `msg_to_pdf()` - Email format conversion\n\n### Data Processing\n\n- `merge_excel_files()` - Multi-file Excel processing\n- `standardise_time_series()` - Time series data normalisation\n- `scan_ncfiles()` - NetCDF file analysis and cataloguing\n- `get_latlon_bounds()` - Climate data coordinate extraction\n\n### JSON Operations\n\n- `serialise_to_json()` - Advanced JSON serialisation\n- `deserialise_json_to_df()` - JSON to DataFrame conversion\n- Custom encoding for complex Python objects\n\n### Automation\n\n- Ready-to-use scripts for common file operations\n- Configurable workflows for batch processing\n- Integration with system tools and external programs\n\n## Advanced Features\n\n### Defensive Programming\n\n- Automatic nested list flattening for robust parameter handling\n- Comprehensive error handling and validation\n- Type checking and parameter validation\n\n### Performance Optimisation\n\n- LRU caching for pattern compilation\n- Efficient file searching algorithms\n- Memory-conscious data processing\n\n### Scientific Data Support\n\n- Climate data processing with coordinate system handling\n- NetCDF file integrity checking and validation\n- Advanced time series manipulation and standardisation\n\n## Version Information\n\nCurrent version: **3.10.0**\n\nFor detailed version history and changelog, see [CHANGELOG.md](CHANGELOG.md) and [VERSIONING.md](VERSIONING.md).\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.\n\n### Development Guidelines\n\n- Follow the existing code structure and naming conventions\n- Add comprehensive docstrings for new functions\n- Include error handling and parameter validation\n- Write tests for new functionality\n- Update the changelog for significant changes\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Acknowledgments\n\n- **NumPy and Pandas communities** for foundational data processing tools\n- **Xarray developers** for climate and scientific data handling capabilities\n- **Python packaging community** for best practices and standards\n- **Open-source contributors** to file processing and automation tools\n\n## Contact\n\nFor any questions or suggestions, please open an issue on GitHub or contact the maintainers.\n\n## Dependencies\n\nThis package relies on several high-quality external packages:\n\n- `pygenutils` - General utility functions and data manipulation\n- `paramlib` - Parameter and configuration management\n- Standard scientific Python stack (NumPy, Pandas, Xarray)\n- External system tools for advanced file operations\n\n## System Requirements\n\n- Python 3.8 or higher\n- Unix-like operating system (Linux, macOS) for full functionality\n- Optional: External tools for PDF and email processing (ghostscript, pdftk, etc.)\n",
"bugtrack_url": null,
"license": "MIT License\n \n Copyright (c) 2024 filewise\n \n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE. ",
"summary": "A Python package for efficient file and directory management, featuring tools for bulk renaming, data handling, and format conversion",
"version": "3.11.6",
"project_urls": {
"Bug Reports": "https://github.com/EusDancerDev/filewise/issues",
"Documentation": "https://github.com/EusDancerDev/filewise#readme",
"Homepage": "https://github.com/EusDancerDev/filewise",
"Repository": "https://github.com/EusDancerDev/filewise.git"
},
"split_keywords": [
"file management",
" directory operations",
" bulk renaming",
" data handling",
" format conversion"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "5fbf89ec478c1e853428ec6a48b3ffbb1e0527aef36379afe61747fc82733ad1",
"md5": "4c68566a3f2f2e8d6f8beb01128c1015",
"sha256": "fba15646c3bd0fb8746ded53fc51705b7e296473f87de62f149b0a8d7887021a"
},
"downloads": -1,
"filename": "filewise-3.11.6-py3-none-any.whl",
"has_sig": false,
"md5_digest": "4c68566a3f2f2e8d6f8beb01128c1015",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 8363,
"upload_time": "2025-07-17T11:20:34",
"upload_time_iso_8601": "2025-07-17T11:20:34.383319Z",
"url": "https://files.pythonhosted.org/packages/5f/bf/89ec478c1e853428ec6a48b3ffbb1e0527aef36379afe61747fc82733ad1/filewise-3.11.6-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "72443ba941caf79592cc1e0b3a3ba03896520878f05ad713a388a7efddfae5fa",
"md5": "84674a8e154ba8e8da08e69a5948b4ce",
"sha256": "e7c70da672172206f7bfb4c0e6ee3cb30340a9b9d3e07ea6de68ce3ac819dd24"
},
"downloads": -1,
"filename": "filewise-3.11.6.tar.gz",
"has_sig": false,
"md5_digest": "84674a8e154ba8e8da08e69a5948b4ce",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 9945,
"upload_time": "2025-07-17T11:20:35",
"upload_time_iso_8601": "2025-07-17T11:20:35.759619Z",
"url": "https://files.pythonhosted.org/packages/72/44/3ba941caf79592cc1e0b3a3ba03896520878f05ad713a388a7efddfae5fa/filewise-3.11.6.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-17 11:20:35",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "EusDancerDev",
"github_project": "filewise",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "pandas",
"specs": [
[
">=",
"1.3.0"
]
]
},
{
"name": "numpy",
"specs": [
[
">=",
"1.21.0"
]
]
},
{
"name": "xarray",
"specs": [
[
">=",
"2022.1.0"
]
]
},
{
"name": "netcdf4",
"specs": [
[
">=",
"1.6.0"
]
]
},
{
"name": "h5py",
"specs": [
[
">=",
"3.7.0"
]
]
},
{
"name": "openpyxl",
"specs": [
[
">=",
"3.0.0"
]
]
},
{
"name": "PyPDF2",
"specs": [
[
">=",
"3.0.0"
]
]
},
{
"name": "reportlab",
"specs": [
[
">=",
"3.6.0"
]
]
},
{
"name": "pygenutils",
"specs": [
[
">=",
"16.2.0"
]
]
},
{
"name": "paramlib",
"specs": [
[
">=",
"3.4.3"
]
]
}
],
"lcname": "filewise"
}