pygenutils


Namepygenutils JSON
Version 16.2.1 PyPI version JSON
download
home_pageNone
SummaryA comprehensive Python utility library for general-purpose and specialised tasks
upload_time2025-07-18 09:47:40
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseMIT License Copyright (c) 2024 Jon Ander Gabantxo 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 utilities python general-purpose file handling string processing
VCS
bugtrack_url
requirements numpy pandas filewise paramlib xarray
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # pygenutils

[![Python Version](https://img.shields.io/badge/python-3.10%2B-blue.svg)](https://www.python.org/downloads/)
[![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
[![PyPI Version](https://img.shields.io/pypi/v/pygenutils.svg)](https://pypi.org/project/pygenutils/)

**pygenutils** is a comprehensive Python utilities package designed to provide a wide range of general-purpose tools for data manipulation, string handling, time operations, and system interactions. It serves as a collection of commonly needed utilities for Python development.

## Features

- **String Operations**:
  - Advanced string manipulation
  - Text formatting and parsing
  - String pattern matching
  - Text transformation utilities
- **Time Handling**:
  - Date and time calculations
  - Calendar operations
  - Time formatting
  - Program execution timing
  - Countdown functionality
- **Data Structures**:
  - Array and list manipulation
  - Data pattern matching
  - Mathematical operations
  - Data conversion utilities
- **System Operations**:
  - Operating system interactions
  - Process management
  - System information retrieval
- **Audio and Video**:
  - Advanced media file processing with full encoding control
  - Audio/video file merging and concatenation
  - Media file cutting and trimming
  - Comprehensive codec selection (libx264, libx265, aac, mp3, etc.)
  - Encoding preset and bitrate control
  - Format conversion utilities
- **Number Systems**:
  - Base conversion utilities
  - Number system operations
- **Set Operations**:
  - Interval handling
  - Set manipulation
- **Dictionary Operations**:
  - Dictionary manipulation
  - Key-value operations

## Installation Guide

### Dependency Notice

This package has minimal external dependencies and is designed to be lightweight. Most functionality works with Python's standard library.

### Installation Instructions

**For regular users** who want to use the package in their projects:

```bash
pip install pygenutils                    # Core functionality
pip install pygenutils[arrow]             # With arrow support (optional)
```

This automatically installs `pygenutils` and all its dependencies with version constraints.

**How It Works Now**:

- `pip install pygenutils` - Core functionality without arrow dependency
- `pip install pygenutils[arrow]` - With arrow support for enhanced time handling features

### Package Updates

To stay up-to-date with the latest version of this package, simply run:

```bash
pip install --upgrade pygenutils
```

## 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/pygenutils.git
cd pygenutils

# 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/pygenutils.git
cd pygenutils

# 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.

#### Development with Optional Dependencies

For full development capabilities, including testing and linting:

```bash
# Install with development dependencies
pip install -e ".[dev]"

# Or install specific optional dependencies
pip install -e ".[xarray]"  # For xarray support
```

### For Multiple Package Development

If you're working on multiple interdependent packages simultaneously:

```bash
# Clone all repositories
git clone https://github.com/EusDancerDev/pygenutils.git
git clone https://github.com/EusDancerDev/filewise.git
git clone https://github.com/EusDancerDev/paramlib.git

# Install each in editable mode
pip install -e ./filewise
pip install -e ./paramlib
pip install -e ./pygenutils
```

### Troubleshooting

If you encounter import errors after cloning:

1. **For regular users**: Run `pip install pygenutils` (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 pygenutils
    from filewise.general.introspection_utils import get_type_str
    from paramlib.global_parameters import BASIC_ARITHMETIC_OPERATORS
    
    print("✅ All imports successful!")
    print(f"✅ pygenutils version: {pygenutils.__version__}")
    print("✅ Installation is working correctly.")
    
except ImportError as e:
    print(f"❌ Import error: {e}")
    print("💡 For regular users: pip install pygenutils")
    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 pygenutils` 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

### Package Structure

The package is organised into several specialised modules:

- **strings/**: String manipulation utilities
  - `string_handler.py`: Core string operations
  - `text_formatters.py`: Text formatting utilities

- **time_handling/**: Time and date operations
  - `date_and_time_utils.py`: Date/time calculations
  - `time_formatters.py`: Time formatting
  - `calendar_utils.py`: Calendar operations
  - `program_snippet_exec_timers.py`: Execution timing
  - `countdown.py`: Countdown functionality

- **arrays_and_lists/**: Data structure operations
  - `data_manipulation.py`: Data handling
  - `patterns.py`: Pattern matching
  - `conversions.py`: Data conversion
  - `maths.py`: Mathematical operations

- **operative_systems/**: System operations
  - System interaction utilities
  - Process management tools

- **audio_and_video/**: Media handling
  - Media file operations
  - Format conversion

- **number_bases/**: Number system operations
  - Base conversion utilities

- **sets_and_intervals/**: Set operations
  - Interval handling
  - Set manipulation

- **dictionaries/**: Dictionary operations
  - Dictionary manipulation tools

For detailed version history and changes, please refer to:

- `CHANGELOG.md`: Comprehensive list of changes for each version
- `VERSIONING.md`: Versioning policy and guidelines

## Usage Examples

### String Operations

```python
from pygenutils.strings import string_handler, text_formatters

# String manipulation
modified_str = string_handler.modify_obj_specs("example.txt", "new")
formatted_text = text_formatters.print_format_string("Hello, {name}!", name="World")
```

### Time Operations

```python
from pygenutils.time_handling import date_and_time_utils, time_formatters

# Date calculations
next_week = date_and_time_utils.add_days_to_date("2024-03-20", 7)
formatted_time = time_formatters.format_time_string("14:30:00", "HH:MM")
```

### Array Operations

```python
from pygenutils.arrays_and_lists import data_manipulation, patterns

# Data manipulation
processed_data = data_manipulation.process_array([1, 2, 3, 4, 5])
matched_pattern = patterns.find_pattern([1, 2, 3, 1, 2, 3], [1, 2, 3])
```

### Audio and Video Operations

```python
from pygenutils.audio_and_video import audio_and_video_manipulation

# Merge audio and video files with custom encoding
audio_and_video_manipulation.merge_media_files(
    audio_files=["audio1.mp3", "audio2.mp3"],
    video_files=["video1.mp4", "video2.mp4"],
    video_codec="libx265",  # High-efficiency codec
    audio_codec="aac",      # Modern audio codec
    preset="slow",          # Better quality
    video_bitrate=2000      # 2000 kbps video bitrate
)

# Cut media files with encoding control
audio_and_video_manipulation.cut_media_files(
    media_inputs=["input.mp4"],
    start_time_list=["00:01:30"],
    end_time_list=["00:05:45"],
    video_codec="copy",     # No re-encoding for speed
    audio_codec="copy"      # Preserve original quality
)
```

## 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.

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "pygenutils",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "utilities, python, general-purpose, file handling, string processing",
    "author": null,
    "author_email": "Jon Ander Gabantxo <jagabantxo@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/64/33/f9b8a87b9cc03204f44b432130e6cfdf01367708fe311ef13408ae65c956/pygenutils-16.2.1.tar.gz",
    "platform": null,
    "description": "# pygenutils\n\n[![Python Version](https://img.shields.io/badge/python-3.10%2B-blue.svg)](https://www.python.org/downloads/)\n[![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)\n[![PyPI Version](https://img.shields.io/pypi/v/pygenutils.svg)](https://pypi.org/project/pygenutils/)\n\n**pygenutils** is a comprehensive Python utilities package designed to provide a wide range of general-purpose tools for data manipulation, string handling, time operations, and system interactions. It serves as a collection of commonly needed utilities for Python development.\n\n## Features\n\n- **String Operations**:\n  - Advanced string manipulation\n  - Text formatting and parsing\n  - String pattern matching\n  - Text transformation utilities\n- **Time Handling**:\n  - Date and time calculations\n  - Calendar operations\n  - Time formatting\n  - Program execution timing\n  - Countdown functionality\n- **Data Structures**:\n  - Array and list manipulation\n  - Data pattern matching\n  - Mathematical operations\n  - Data conversion utilities\n- **System Operations**:\n  - Operating system interactions\n  - Process management\n  - System information retrieval\n- **Audio and Video**:\n  - Advanced media file processing with full encoding control\n  - Audio/video file merging and concatenation\n  - Media file cutting and trimming\n  - Comprehensive codec selection (libx264, libx265, aac, mp3, etc.)\n  - Encoding preset and bitrate control\n  - Format conversion utilities\n- **Number Systems**:\n  - Base conversion utilities\n  - Number system operations\n- **Set Operations**:\n  - Interval handling\n  - Set manipulation\n- **Dictionary Operations**:\n  - Dictionary manipulation\n  - Key-value operations\n\n## Installation Guide\n\n### Dependency Notice\n\nThis package has minimal external dependencies and is designed to be lightweight. Most functionality works with Python's standard library.\n\n### Installation Instructions\n\n**For regular users** who want to use the package in their projects:\n\n```bash\npip install pygenutils                    # Core functionality\npip install pygenutils[arrow]             # With arrow support (optional)\n```\n\nThis automatically installs `pygenutils` and all its dependencies with version constraints.\n\n**How It Works Now**:\n\n- `pip install pygenutils` - Core functionality without arrow dependency\n- `pip install pygenutils[arrow]` - With arrow support for enhanced time handling features\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 pygenutils\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/pygenutils.git\ncd pygenutils\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/pygenutils.git\ncd pygenutils\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#### Development with Optional Dependencies\n\nFor full development capabilities, including testing and linting:\n\n```bash\n# Install with development dependencies\npip install -e \".[dev]\"\n\n# Or install specific optional dependencies\npip install -e \".[xarray]\"  # For xarray support\n```\n\n### For Multiple Package Development\n\nIf you're working on multiple interdependent packages simultaneously:\n\n```bash\n# Clone all repositories\ngit clone https://github.com/EusDancerDev/pygenutils.git\ngit clone https://github.com/EusDancerDev/filewise.git\ngit clone https://github.com/EusDancerDev/paramlib.git\n\n# Install each in editable mode\npip install -e ./filewise\npip install -e ./paramlib\npip install -e ./pygenutils\n```\n\n### Troubleshooting\n\nIf you encounter import errors after cloning:\n\n1. **For regular users**: Run `pip install pygenutils` (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 pygenutils\n    from filewise.general.introspection_utils import get_type_str\n    from paramlib.global_parameters import BASIC_ARITHMETIC_OPERATORS\n    \n    print(\"\u2705 All imports successful!\")\n    print(f\"\u2705 pygenutils version: {pygenutils.__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 pygenutils\")\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 pygenutils` 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### Package Structure\n\nThe package is organised into several specialised modules:\n\n- **strings/**: String manipulation utilities\n  - `string_handler.py`: Core string operations\n  - `text_formatters.py`: Text formatting utilities\n\n- **time_handling/**: Time and date operations\n  - `date_and_time_utils.py`: Date/time calculations\n  - `time_formatters.py`: Time formatting\n  - `calendar_utils.py`: Calendar operations\n  - `program_snippet_exec_timers.py`: Execution timing\n  - `countdown.py`: Countdown functionality\n\n- **arrays_and_lists/**: Data structure operations\n  - `data_manipulation.py`: Data handling\n  - `patterns.py`: Pattern matching\n  - `conversions.py`: Data conversion\n  - `maths.py`: Mathematical operations\n\n- **operative_systems/**: System operations\n  - System interaction utilities\n  - Process management tools\n\n- **audio_and_video/**: Media handling\n  - Media file operations\n  - Format conversion\n\n- **number_bases/**: Number system operations\n  - Base conversion utilities\n\n- **sets_and_intervals/**: Set operations\n  - Interval handling\n  - Set manipulation\n\n- **dictionaries/**: Dictionary operations\n  - Dictionary manipulation tools\n\nFor detailed version history and changes, please refer to:\n\n- `CHANGELOG.md`: Comprehensive list of changes for each version\n- `VERSIONING.md`: Versioning policy and guidelines\n\n## Usage Examples\n\n### String Operations\n\n```python\nfrom pygenutils.strings import string_handler, text_formatters\n\n# String manipulation\nmodified_str = string_handler.modify_obj_specs(\"example.txt\", \"new\")\nformatted_text = text_formatters.print_format_string(\"Hello, {name}!\", name=\"World\")\n```\n\n### Time Operations\n\n```python\nfrom pygenutils.time_handling import date_and_time_utils, time_formatters\n\n# Date calculations\nnext_week = date_and_time_utils.add_days_to_date(\"2024-03-20\", 7)\nformatted_time = time_formatters.format_time_string(\"14:30:00\", \"HH:MM\")\n```\n\n### Array Operations\n\n```python\nfrom pygenutils.arrays_and_lists import data_manipulation, patterns\n\n# Data manipulation\nprocessed_data = data_manipulation.process_array([1, 2, 3, 4, 5])\nmatched_pattern = patterns.find_pattern([1, 2, 3, 1, 2, 3], [1, 2, 3])\n```\n\n### Audio and Video Operations\n\n```python\nfrom pygenutils.audio_and_video import audio_and_video_manipulation\n\n# Merge audio and video files with custom encoding\naudio_and_video_manipulation.merge_media_files(\n    audio_files=[\"audio1.mp3\", \"audio2.mp3\"],\n    video_files=[\"video1.mp4\", \"video2.mp4\"],\n    video_codec=\"libx265\",  # High-efficiency codec\n    audio_codec=\"aac\",      # Modern audio codec\n    preset=\"slow\",          # Better quality\n    video_bitrate=2000      # 2000 kbps video bitrate\n)\n\n# Cut media files with encoding control\naudio_and_video_manipulation.cut_media_files(\n    media_inputs=[\"input.mp4\"],\n    start_time_list=[\"00:01:30\"],\n    end_time_list=[\"00:05:45\"],\n    video_codec=\"copy\",     # No re-encoding for speed\n    audio_codec=\"copy\"      # Preserve original quality\n)\n```\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## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n",
    "bugtrack_url": null,
    "license": "MIT License\n        \n        Copyright (c) 2024 Jon Ander Gabantxo\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 comprehensive Python utility library for general-purpose and specialised tasks",
    "version": "16.2.1",
    "project_urls": {
        "Bug Reports": "https://github.com/EusDancerDev/pygenutils/issues",
        "Documentation": "https://github.com/EusDancerDev/pygenutils#readme",
        "Homepage": "https://github.com/EusDancerDev/pygenutils",
        "Repository": "https://github.com/EusDancerDev/pygenutils.git"
    },
    "split_keywords": [
        "utilities",
        " python",
        " general-purpose",
        " file handling",
        " string processing"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b3109ba31ba2e429e86eb1816770f4fe3057d7de1d94d4b59155994edd0d7339",
                "md5": "3900b29869065bdfdc2f94ce3d835e31",
                "sha256": "805d4e2fc5f009e1ee4f1b58ffe8a86beca7fb436d350debe8dd949842bbb8ba"
            },
            "downloads": -1,
            "filename": "pygenutils-16.2.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "3900b29869065bdfdc2f94ce3d835e31",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 99326,
            "upload_time": "2025-07-18T09:47:39",
            "upload_time_iso_8601": "2025-07-18T09:47:39.237437Z",
            "url": "https://files.pythonhosted.org/packages/b3/10/9ba31ba2e429e86eb1816770f4fe3057d7de1d94d4b59155994edd0d7339/pygenutils-16.2.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6433f9b8a87b9cc03204f44b432130e6cfdf01367708fe311ef13408ae65c956",
                "md5": "c9298ea90c7a9dbd282efef55c897487",
                "sha256": "29927fbcdc2275632bae0908db8feb26aab2bd1da231bfc52b8714a5b5050dcd"
            },
            "downloads": -1,
            "filename": "pygenutils-16.2.1.tar.gz",
            "has_sig": false,
            "md5_digest": "c9298ea90c7a9dbd282efef55c897487",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 84863,
            "upload_time": "2025-07-18T09:47:40",
            "upload_time_iso_8601": "2025-07-18T09:47:40.743334Z",
            "url": "https://files.pythonhosted.org/packages/64/33/f9b8a87b9cc03204f44b432130e6cfdf01367708fe311ef13408ae65c956/pygenutils-16.2.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-18 09:47:40",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "EusDancerDev",
    "github_project": "pygenutils",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "numpy",
            "specs": [
                [
                    ">=",
                    "1.21.0"
                ]
            ]
        },
        {
            "name": "pandas",
            "specs": [
                [
                    ">=",
                    "1.3.0"
                ]
            ]
        },
        {
            "name": "filewise",
            "specs": [
                [
                    ">=",
                    "3.11.0"
                ]
            ]
        },
        {
            "name": "paramlib",
            "specs": [
                [
                    ">=",
                    "3.4.3"
                ]
            ]
        },
        {
            "name": "xarray",
            "specs": [
                [
                    ">=",
                    "2024.2.0"
                ]
            ]
        }
    ],
    "lcname": "pygenutils"
}
        
Elapsed time: 2.16569s