invocate


Nameinvocate JSON
Version 0.1.0 PyPI version JSON
download
home_pageNone
SummaryEnhanced Invoke task management with simplified namespacing support
upload_time2025-08-07 04:18:52
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseMIT
keywords invoke tasks automation cli namespace
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Invocate
Enhanced Invoke task management with simplified namespacing support.

## Purpose
I love [Invoke](https://www.pyinvoke.org/) and I use it all the time, but I
find the namespace feature to be a bit cumbersome to maintain so I've written
Invocate as a wrapper on top of Invoke.

Invocate overrides the task decorator to accept additional namespace-related
parameters and defines a task_namespace() function that makes namespacing
task a lot easier to work with.

## Features

- **Namespaced Tasks**: Organize tasks into hierarchical namespaces
- **Enhanced Decorator**: Drop-in replacement for `@task` with additional features

## Installation

```bash
pip install invocate
```

## Quick Start

```python
from invocate import task, task_namespace


# Simple task (no namespace)
@task
def hello(c):
    """Say hello"""
    print("Hello, World!")


# Namespaced task
@task(namespace=('build', 'frontend'))
def build_js(c):
    """Build JavaScript assets"""
    c.run("npm run build")


# Another namespaced task
@task(namespace='build.backend')
def build_python(c):
    """Build Python package"""
    c.run("python -m build")


# Export the namespace for invoke
ns = task_namespace()

```

Save this as tasks.py and run:

```bash
inv -l
```

You'll see:

```
Available tasks:

  hello
  build.frontend.build-js
  build.backend.build-python
```

## Advanced Usage
### Customer Task Names
```python
@task(name='custom-name', namespace=('utils',))
def some_function(c):
    pass
```

## API Reference
### `task(*args, **kwargs)`
Enhanced task decorator with namespace support.
**Parameters:**
- (tuple): Namespace hierarchy as tuple of strings `namespace`
- Standard invoke task parameters (name, help, etc.)

### `task_namespace()`
Returns the complete task collection for use with Invoke.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "invocate",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "invoke, tasks, automation, cli, namespace",
    "author": null,
    "author_email": "Fred McDavid <fred@frameworklabs.us>",
    "download_url": "https://files.pythonhosted.org/packages/21/d6/a5c6c1180d78d2a446b83e5956b6d8945542328b0a5f017b6afcd76f5fce/invocate-0.1.0.tar.gz",
    "platform": null,
    "description": "# Invocate\nEnhanced Invoke task management with simplified namespacing support.\n\n## Purpose\nI love [Invoke](https://www.pyinvoke.org/) and I use it all the time, but I\nfind the namespace feature to be a bit cumbersome to maintain so I've written\nInvocate as a wrapper on top of Invoke.\n\nInvocate overrides the task decorator to accept additional namespace-related\nparameters and defines a task_namespace() function that makes namespacing\ntask a lot easier to work with.\n\n## Features\n\n- **Namespaced Tasks**: Organize tasks into hierarchical namespaces\n- **Enhanced Decorator**: Drop-in replacement for `@task` with additional features\n\n## Installation\n\n```bash\npip install invocate\n```\n\n## Quick Start\n\n```python\nfrom invocate import task, task_namespace\n\n\n# Simple task (no namespace)\n@task\ndef hello(c):\n    \"\"\"Say hello\"\"\"\n    print(\"Hello, World!\")\n\n\n# Namespaced task\n@task(namespace=('build', 'frontend'))\ndef build_js(c):\n    \"\"\"Build JavaScript assets\"\"\"\n    c.run(\"npm run build\")\n\n\n# Another namespaced task\n@task(namespace='build.backend')\ndef build_python(c):\n    \"\"\"Build Python package\"\"\"\n    c.run(\"python -m build\")\n\n\n# Export the namespace for invoke\nns = task_namespace()\n\n```\n\nSave this as tasks.py and run:\n\n```bash\ninv -l\n```\n\nYou'll see:\n\n```\nAvailable tasks:\n\n  hello\n  build.frontend.build-js\n  build.backend.build-python\n```\n\n## Advanced Usage\n### Customer Task Names\n```python\n@task(name='custom-name', namespace=('utils',))\ndef some_function(c):\n    pass\n```\n\n## API Reference\n### `task(*args, **kwargs)`\nEnhanced task decorator with namespace support.\n**Parameters:**\n- (tuple): Namespace hierarchy as tuple of strings `namespace`\n- Standard invoke task parameters (name, help, etc.)\n\n### `task_namespace()`\nReturns the complete task collection for use with Invoke.\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Enhanced Invoke task management with simplified namespacing support",
    "version": "0.1.0",
    "project_urls": {
        "Bug Tracker": "https://github.com/FredworkLemmas/invocate.git/issues",
        "Homepage": "https://github.com/FredworkLemmas/invocate.git",
        "Repository": "https://github.com/FredworkLemmas/invocate.git"
    },
    "split_keywords": [
        "invoke",
        " tasks",
        " automation",
        " cli",
        " namespace"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a98c0904bee45d4cb1fbad20039d25aedeb2b45d233ecff5b6b1d491cc5a1dde",
                "md5": "764f2e86fd688371e338e6f07a7c7bff",
                "sha256": "9d006856eda1b02d6ccd2fd20608dacddfa1143c04a41e330ceb5bc73ebb5667"
            },
            "downloads": -1,
            "filename": "invocate-0.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "764f2e86fd688371e338e6f07a7c7bff",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 5518,
            "upload_time": "2025-08-07T04:18:51",
            "upload_time_iso_8601": "2025-08-07T04:18:51.086077Z",
            "url": "https://files.pythonhosted.org/packages/a9/8c/0904bee45d4cb1fbad20039d25aedeb2b45d233ecff5b6b1d491cc5a1dde/invocate-0.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "21d6a5c6c1180d78d2a446b83e5956b6d8945542328b0a5f017b6afcd76f5fce",
                "md5": "b57a1884fb4fa6d27d15fe0a21db0d8b",
                "sha256": "ec4ba20645b86dbc9e7f24eda2598d2496a969878b41f66ff6bbf26410580772"
            },
            "downloads": -1,
            "filename": "invocate-0.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "b57a1884fb4fa6d27d15fe0a21db0d8b",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 6085,
            "upload_time": "2025-08-07T04:18:52",
            "upload_time_iso_8601": "2025-08-07T04:18:52.436491Z",
            "url": "https://files.pythonhosted.org/packages/21/d6/a5c6c1180d78d2a446b83e5956b6d8945542328b0a5f017b6afcd76f5fce/invocate-0.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-07 04:18:52",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "FredworkLemmas",
    "github_project": "invocate",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "invocate"
}
        
Elapsed time: 0.73444s