cadence-example-plugins


Namecadence-example-plugins JSON
Version 1.0.7 PyPI version JSON
download
home_pagehttps://github.com/jonaskahn/cadence-plugins
SummaryCadence Plugins - Collection of example AI agent plugins for Cadence AI Framework
upload_time2025-09-03 09:36:48
maintainerNone
docs_urlNone
authorJonas Kahn
requires_python<3.14,>=3.13
licenseMIT
keywords ai agents cadence-ai plugins cadence-plugins langchain langgraph multi-agent
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Cadence Example Plugins

A collection of example AI agent plugins for the Cadence Framework.

## Overview

This repository contains example plugins that demonstrate how to build custom AI agents and tools for the Cadence
multi-agent framework. These plugins showcase various capabilities and serve as templates for building your own plugins.

## Available Plugins

### Math Agent

A specialized agent for mathematical calculations and problem-solving.

**Features:**

- Basic arithmetic operations
- Complex mathematical expressions
- Unit conversions
- Mathematical problem solving

**Usage:**

```python
from cadence_plugins.math_agent.plugin import MathPlugin

plugin = MathPlugin()
agent = plugin.create_agent()
# The agent is used by the Cadence framework automatically
```

### Search Agent

A web search agent for information retrieval and research.

**Features:**

- Web search capabilities
- Information summarization
- Source citation
- Multi-query support

**Usage:**

```python
from cadence_plugins.search_agent.plugin import SearchPlugin

plugin = SearchPlugin()
agent = plugin.create_agent()
# The agent is used by the Cadence framework automatically
```

### Info Agent

A general-purpose information and utility agent.

**Features:**

- General knowledge queries
- Utility functions
- Information organization
- Context-aware responses

**Usage:**

```python
from cadence_plugins.myinfo_agent.plugin import MyInfoPlugin

plugin = MyInfoPlugin()
agent = plugin.create_agent()
# The agent is used by the Cadence framework automatically
```

## Plugin Structure

Each plugin follows a standard structure and must be properly registered to be discovered by the Cadence framework.

### Plugin Registration

Every plugin must register itself in its `__init__.py` file:

```python
# plugins/src/cadence_example_plugins/my_plugin/__init__.py
from cadence_sdk import register_plugin
from .plugin import MyPlugin

# Register on import
register_plugin(MyPlugin)
```

### Directory Structure

```
plugin_name/
├── __init__.py          # Plugin initialization
├── agent.py             # Agent implementation
├── tools.py             # Tool definitions
└── plugin.py            # Plugin metadata and factory
```

### Example Plugin Structure

```python
# plugin.py
from cadence_sdk.base.plugin import BasePlugin
from cadence_sdk.base.metadata import PluginMetadata


class ExamplePlugin(BasePlugin):
    @staticmethod
    def get_metadata() -> PluginMetadata:
        return PluginMetadata(
            name="example_plugin",
            version="1.0.7",
            description="An example plugin for demonstration",
            capabilities=["example"],
            llm_requirements={
                "provider": "openai",
                "model": "gpt-4",
                "temperature": 0.1
            },
            agent_type="specialized",
            dependencies=[]
        )

    @staticmethod
    def create_agent():
        from .agent import ExampleAgent
        return ExampleAgent(ExamplePlugin.get_metadata())


# agent.py
from cadence_sdk.base.agent import BaseAgent
from cadence_sdk.base.metadata import PluginMetadata


class ExampleAgent(BaseAgent):
    def __init__(self, metadata: PluginMetadata):
        super().__init__(metadata)

    def get_tools(self):
        from .tools import ExampleTool
        return [ExampleTool()]

    def get_system_prompt(self) -> str:
        return "You are an example agent for demonstration purposes."


# tools.py
from cadence_sdk.tools import Tool


class ExampleTool(Tool):
    name = "example_tool"
    description = "An example tool"

    def execute(self, **kwargs) -> str:
        return "Tool executed successfully"
```

## Installation

### From Source

```bash
# Clone the main repository
git clone https://github.com/jonaskahn/cadence.git
cd cadence

# Install plugin dependencies
cd plugins
poetry install

# Install in development mode
poetry install --editable
```

### From PyPI

```bash
pip install cadence-plugins
# Note: This package is part of the main Cadence repository
```

## Configuration

### Environment Variables

```bash
# Set plugin directories (single path or JSON list)
export CADENCE_PLUGINS_DIR="./plugins/src/cadence_plugins"

# Or multiple directories as JSON array
export CADENCE_PLUGINS_DIR='["/path/to/plugins", "/another/path"]'

# Plugin limits (configured in main application)
export CADENCE_MAX_AGENT_HOPS=25

export CADENCE_GRAPH_RECURSION_LIMIT=50
```

### Plugin Discovery

The Cadence framework automatically discovers plugins from:

- Installed packages (via pip)
- Directory paths (configured via environment variables)
- Custom plugin registries

## Development

### Creating a New Plugin

1. **Create plugin directory structure**

   ```bash
   mkdir my_plugin
   cd my_plugin
   touch __init__.py agent.py tools.py plugin.py
   ```

2. **Implement plugin interface**

   ```python
   # plugin.py
   from cadence_sdk.base.plugin import BasePlugin
   from cadence_sdk.base.metadata import PluginMetadata
   
   class MyPlugin(BasePlugin):
       @staticmethod
       def get_metadata() -> PluginMetadata:
           return PluginMetadata(
               name="my_plugin",
               version="1.0.7",
               description="My custom plugin",
               capabilities=["custom"],
               llm_requirements={
                   "provider": "openai",
                   "model": "gpt-4",
                   "temperature": 0.1
               },
               agent_type="specialized",
               dependencies=[]
           )
       
       @staticmethod
       def create_agent():
           from .agent import MyAgent
           return MyAgent(MyPlugin.get_metadata())
   ```

3. **Implement agent**

   ```python
   # agent.py
   from cadence_sdk.base.agent import BaseAgent
   from cadence_sdk.base.metadata import PluginMetadata
   
   class MyAgent(BaseAgent):
       def __init__(self, metadata: PluginMetadata):
           super().__init__(metadata)
       
       def get_tools(self):
           from .tools import MyTool
           return [MyTool()]
       
       def get_system_prompt(self) -> str:
           return "You are a custom agent. How can I help you?"
   ```

4. **Add tools (optional)**

   ```python
   # tools.py
   from cadence_sdk.tools import Tool
   
   class MyTool(Tool):
       name = "my_tool"
       description = "My custom tool"
       
       def execute(self, **kwargs) -> str:
           # Your tool logic here
           return "Tool executed"
   ```

### Testing Your Plugin

```bash
# Run plugin tests
poetry run pytest tests/

# Test with Cadence framework
export CADENCE_PLUGINS_DIR="./my_plugin"
python -m cadence

# Or test from main project directory
cd ..  # Go back to main project
export CADENCE_PLUGINS_DIR="./plugins/src/cadence_plugins"
python -m cadence
```

### Plugin Validation

The SDK provides validation utilities:

```python
from cadence_sdk.utils.validation import validate_plugin_structure

errors = validate_plugin_structure(MyPlugin)
if errors:
    print("Validation errors:", errors)
else:
    print("Plugin is valid!")
```

## Best Practices

### Plugin Design

1. **Single Responsibility**: Each plugin should have a focused purpose
2. **Clear Interfaces**: Implement required methods with clear contracts
3. **Error Handling**: Gracefully handle errors and provide meaningful messages
4. **Documentation**: Include comprehensive docstrings and examples
5. **Testing**: Write tests for your plugin functionality

### Performance Considerations

1. **Lazy Loading**: Load resources only when needed
2. **Caching**: Cache frequently accessed data
3. **Async Support**: Use async/await for I/O operations
4. **Resource Management**: Properly clean up resources

### Security

1. **Input Validation**: Validate all user inputs
2. **Tool Safety**: Ensure tools are safe to execute
3. **Access Control**: Implement appropriate access controls
4. **Audit Logging**: Log important operations

## Examples

### Advanced Plugin Example

```python
from cadence_sdk.base.plugin import BasePlugin
from cadence_sdk.base.agent import BaseAgent
from cadence_sdk.tools import Tool
from cadence_sdk.base.metadata import PluginMetadata


class WeatherPlugin(BasePlugin):
    @staticmethod
    def get_metadata() -> PluginMetadata:
        return PluginMetadata(
            name="weather_plugin",
            version="1.0.7",
            description="Weather information and forecasting",
            capabilities=["weather_forecast", "current_conditions"],
            llm_requirements={
                "provider": "openai",
                "model": "gpt-4",
                "temperature": 0.1
            },
            agent_type="specialized",
            dependencies=["requests", "pandas"]
        )

    @staticmethod
    def create_agent():
        from .agent import WeatherAgent
        return WeatherAgent(WeatherPlugin.get_metadata())


class WeatherAgent(BaseAgent):
    def __init__(self, metadata: PluginMetadata):
        super().__init__(metadata)

    def get_tools(self):
        from .tools import WeatherTool
        return [WeatherTool()]

    def get_system_prompt(self) -> str:
        return "You are a weather agent that provides weather information and forecasts."


class WeatherTool(Tool):
    name = "get_weather"
    description = "Get current weather for a location"

    def execute(self, location: str) -> str:
        # Implementation would call weather API
        return f"Weather for {location}: Sunny, 72°F"
```

## Contributing

We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.

### Development Setup

1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests
5. Submit a pull request

### Code Standards

- Follow PEP 8 style guidelines
- Use type hints throughout
- Include comprehensive docstrings
- Write tests for new functionality
- Update documentation as needed

## Troubleshooting

### Common Issues

1. **Plugin not discovered**
    - Check plugin directory path
    - Verify plugin structure
    - Check environment variables

2. **Import errors**
    - Verify dependencies are installed
    - Check import paths
    - Ensure plugin is properly structured

3. **Agent not responding**
    - Check agent implementation
    - Verify tool definitions
    - Check error logs

### Getting Help

- Check the [documentation](https://cadence-plugins.readthedocs.io/)
- Open an [issue](https://github.com/jonaskahn/cadence-plugins/issues)
- Join our [discussions](https://github.com/jonaskahn/cadence-plugins/discussions)

## License

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

## Support

- **Documentation**: [Read the Docs](https://cadence.readthedocs.io/)
- **Issues**: [GitHub Issues](https://github.com/jonaskahn/cadence/issues)
- **Discussions**: [GitHub Discussions](https://github.com/jonaskahn/cadence/discussions)

---

**Built with ❤️ for the Cadence AI community**
            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/jonaskahn/cadence-plugins",
    "name": "cadence-example-plugins",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<3.14,>=3.13",
    "maintainer_email": null,
    "keywords": "ai, agents, cadence-ai, plugins, cadence-plugins, langchain, langgraph, multi-agent",
    "author": "Jonas Kahn",
    "author_email": "me@ifelse.one",
    "download_url": "https://files.pythonhosted.org/packages/f3/63/393f92cb719066ed1e1474632dcdded611c8ad82af8a1ab1e003921d4aac/cadence_example_plugins-1.0.7.tar.gz",
    "platform": null,
    "description": "# Cadence Example Plugins\n\nA collection of example AI agent plugins for the Cadence Framework.\n\n## Overview\n\nThis repository contains example plugins that demonstrate how to build custom AI agents and tools for the Cadence\nmulti-agent framework. These plugins showcase various capabilities and serve as templates for building your own plugins.\n\n## Available Plugins\n\n### Math Agent\n\nA specialized agent for mathematical calculations and problem-solving.\n\n**Features:**\n\n- Basic arithmetic operations\n- Complex mathematical expressions\n- Unit conversions\n- Mathematical problem solving\n\n**Usage:**\n\n```python\nfrom cadence_plugins.math_agent.plugin import MathPlugin\n\nplugin = MathPlugin()\nagent = plugin.create_agent()\n# The agent is used by the Cadence framework automatically\n```\n\n### Search Agent\n\nA web search agent for information retrieval and research.\n\n**Features:**\n\n- Web search capabilities\n- Information summarization\n- Source citation\n- Multi-query support\n\n**Usage:**\n\n```python\nfrom cadence_plugins.search_agent.plugin import SearchPlugin\n\nplugin = SearchPlugin()\nagent = plugin.create_agent()\n# The agent is used by the Cadence framework automatically\n```\n\n### Info Agent\n\nA general-purpose information and utility agent.\n\n**Features:**\n\n- General knowledge queries\n- Utility functions\n- Information organization\n- Context-aware responses\n\n**Usage:**\n\n```python\nfrom cadence_plugins.myinfo_agent.plugin import MyInfoPlugin\n\nplugin = MyInfoPlugin()\nagent = plugin.create_agent()\n# The agent is used by the Cadence framework automatically\n```\n\n## Plugin Structure\n\nEach plugin follows a standard structure and must be properly registered to be discovered by the Cadence framework.\n\n### Plugin Registration\n\nEvery plugin must register itself in its `__init__.py` file:\n\n```python\n# plugins/src/cadence_example_plugins/my_plugin/__init__.py\nfrom cadence_sdk import register_plugin\nfrom .plugin import MyPlugin\n\n# Register on import\nregister_plugin(MyPlugin)\n```\n\n### Directory Structure\n\n```\nplugin_name/\n\u251c\u2500\u2500 __init__.py          # Plugin initialization\n\u251c\u2500\u2500 agent.py             # Agent implementation\n\u251c\u2500\u2500 tools.py             # Tool definitions\n\u2514\u2500\u2500 plugin.py            # Plugin metadata and factory\n```\n\n### Example Plugin Structure\n\n```python\n# plugin.py\nfrom cadence_sdk.base.plugin import BasePlugin\nfrom cadence_sdk.base.metadata import PluginMetadata\n\n\nclass ExamplePlugin(BasePlugin):\n    @staticmethod\n    def get_metadata() -> PluginMetadata:\n        return PluginMetadata(\n            name=\"example_plugin\",\n            version=\"1.0.7\",\n            description=\"An example plugin for demonstration\",\n            capabilities=[\"example\"],\n            llm_requirements={\n                \"provider\": \"openai\",\n                \"model\": \"gpt-4\",\n                \"temperature\": 0.1\n            },\n            agent_type=\"specialized\",\n            dependencies=[]\n        )\n\n    @staticmethod\n    def create_agent():\n        from .agent import ExampleAgent\n        return ExampleAgent(ExamplePlugin.get_metadata())\n\n\n# agent.py\nfrom cadence_sdk.base.agent import BaseAgent\nfrom cadence_sdk.base.metadata import PluginMetadata\n\n\nclass ExampleAgent(BaseAgent):\n    def __init__(self, metadata: PluginMetadata):\n        super().__init__(metadata)\n\n    def get_tools(self):\n        from .tools import ExampleTool\n        return [ExampleTool()]\n\n    def get_system_prompt(self) -> str:\n        return \"You are an example agent for demonstration purposes.\"\n\n\n# tools.py\nfrom cadence_sdk.tools import Tool\n\n\nclass ExampleTool(Tool):\n    name = \"example_tool\"\n    description = \"An example tool\"\n\n    def execute(self, **kwargs) -> str:\n        return \"Tool executed successfully\"\n```\n\n## Installation\n\n### From Source\n\n```bash\n# Clone the main repository\ngit clone https://github.com/jonaskahn/cadence.git\ncd cadence\n\n# Install plugin dependencies\ncd plugins\npoetry install\n\n# Install in development mode\npoetry install --editable\n```\n\n### From PyPI\n\n```bash\npip install cadence-plugins\n# Note: This package is part of the main Cadence repository\n```\n\n## Configuration\n\n### Environment Variables\n\n```bash\n# Set plugin directories (single path or JSON list)\nexport CADENCE_PLUGINS_DIR=\"./plugins/src/cadence_plugins\"\n\n# Or multiple directories as JSON array\nexport CADENCE_PLUGINS_DIR='[\"/path/to/plugins\", \"/another/path\"]'\n\n# Plugin limits (configured in main application)\nexport CADENCE_MAX_AGENT_HOPS=25\n\nexport CADENCE_GRAPH_RECURSION_LIMIT=50\n```\n\n### Plugin Discovery\n\nThe Cadence framework automatically discovers plugins from:\n\n- Installed packages (via pip)\n- Directory paths (configured via environment variables)\n- Custom plugin registries\n\n## Development\n\n### Creating a New Plugin\n\n1. **Create plugin directory structure**\n\n   ```bash\n   mkdir my_plugin\n   cd my_plugin\n   touch __init__.py agent.py tools.py plugin.py\n   ```\n\n2. **Implement plugin interface**\n\n   ```python\n   # plugin.py\n   from cadence_sdk.base.plugin import BasePlugin\n   from cadence_sdk.base.metadata import PluginMetadata\n   \n   class MyPlugin(BasePlugin):\n       @staticmethod\n       def get_metadata() -> PluginMetadata:\n           return PluginMetadata(\n               name=\"my_plugin\",\n               version=\"1.0.7\",\n               description=\"My custom plugin\",\n               capabilities=[\"custom\"],\n               llm_requirements={\n                   \"provider\": \"openai\",\n                   \"model\": \"gpt-4\",\n                   \"temperature\": 0.1\n               },\n               agent_type=\"specialized\",\n               dependencies=[]\n           )\n       \n       @staticmethod\n       def create_agent():\n           from .agent import MyAgent\n           return MyAgent(MyPlugin.get_metadata())\n   ```\n\n3. **Implement agent**\n\n   ```python\n   # agent.py\n   from cadence_sdk.base.agent import BaseAgent\n   from cadence_sdk.base.metadata import PluginMetadata\n   \n   class MyAgent(BaseAgent):\n       def __init__(self, metadata: PluginMetadata):\n           super().__init__(metadata)\n       \n       def get_tools(self):\n           from .tools import MyTool\n           return [MyTool()]\n       \n       def get_system_prompt(self) -> str:\n           return \"You are a custom agent. How can I help you?\"\n   ```\n\n4. **Add tools (optional)**\n\n   ```python\n   # tools.py\n   from cadence_sdk.tools import Tool\n   \n   class MyTool(Tool):\n       name = \"my_tool\"\n       description = \"My custom tool\"\n       \n       def execute(self, **kwargs) -> str:\n           # Your tool logic here\n           return \"Tool executed\"\n   ```\n\n### Testing Your Plugin\n\n```bash\n# Run plugin tests\npoetry run pytest tests/\n\n# Test with Cadence framework\nexport CADENCE_PLUGINS_DIR=\"./my_plugin\"\npython -m cadence\n\n# Or test from main project directory\ncd ..  # Go back to main project\nexport CADENCE_PLUGINS_DIR=\"./plugins/src/cadence_plugins\"\npython -m cadence\n```\n\n### Plugin Validation\n\nThe SDK provides validation utilities:\n\n```python\nfrom cadence_sdk.utils.validation import validate_plugin_structure\n\nerrors = validate_plugin_structure(MyPlugin)\nif errors:\n    print(\"Validation errors:\", errors)\nelse:\n    print(\"Plugin is valid!\")\n```\n\n## Best Practices\n\n### Plugin Design\n\n1. **Single Responsibility**: Each plugin should have a focused purpose\n2. **Clear Interfaces**: Implement required methods with clear contracts\n3. **Error Handling**: Gracefully handle errors and provide meaningful messages\n4. **Documentation**: Include comprehensive docstrings and examples\n5. **Testing**: Write tests for your plugin functionality\n\n### Performance Considerations\n\n1. **Lazy Loading**: Load resources only when needed\n2. **Caching**: Cache frequently accessed data\n3. **Async Support**: Use async/await for I/O operations\n4. **Resource Management**: Properly clean up resources\n\n### Security\n\n1. **Input Validation**: Validate all user inputs\n2. **Tool Safety**: Ensure tools are safe to execute\n3. **Access Control**: Implement appropriate access controls\n4. **Audit Logging**: Log important operations\n\n## Examples\n\n### Advanced Plugin Example\n\n```python\nfrom cadence_sdk.base.plugin import BasePlugin\nfrom cadence_sdk.base.agent import BaseAgent\nfrom cadence_sdk.tools import Tool\nfrom cadence_sdk.base.metadata import PluginMetadata\n\n\nclass WeatherPlugin(BasePlugin):\n    @staticmethod\n    def get_metadata() -> PluginMetadata:\n        return PluginMetadata(\n            name=\"weather_plugin\",\n            version=\"1.0.7\",\n            description=\"Weather information and forecasting\",\n            capabilities=[\"weather_forecast\", \"current_conditions\"],\n            llm_requirements={\n                \"provider\": \"openai\",\n                \"model\": \"gpt-4\",\n                \"temperature\": 0.1\n            },\n            agent_type=\"specialized\",\n            dependencies=[\"requests\", \"pandas\"]\n        )\n\n    @staticmethod\n    def create_agent():\n        from .agent import WeatherAgent\n        return WeatherAgent(WeatherPlugin.get_metadata())\n\n\nclass WeatherAgent(BaseAgent):\n    def __init__(self, metadata: PluginMetadata):\n        super().__init__(metadata)\n\n    def get_tools(self):\n        from .tools import WeatherTool\n        return [WeatherTool()]\n\n    def get_system_prompt(self) -> str:\n        return \"You are a weather agent that provides weather information and forecasts.\"\n\n\nclass WeatherTool(Tool):\n    name = \"get_weather\"\n    description = \"Get current weather for a location\"\n\n    def execute(self, location: str) -> str:\n        # Implementation would call weather API\n        return f\"Weather for {location}: Sunny, 72\u00b0F\"\n```\n\n## Contributing\n\nWe welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.\n\n### Development Setup\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Add tests\n5. Submit a pull request\n\n### Code Standards\n\n- Follow PEP 8 style guidelines\n- Use type hints throughout\n- Include comprehensive docstrings\n- Write tests for new functionality\n- Update documentation as needed\n\n## Troubleshooting\n\n### Common Issues\n\n1. **Plugin not discovered**\n    - Check plugin directory path\n    - Verify plugin structure\n    - Check environment variables\n\n2. **Import errors**\n    - Verify dependencies are installed\n    - Check import paths\n    - Ensure plugin is properly structured\n\n3. **Agent not responding**\n    - Check agent implementation\n    - Verify tool definitions\n    - Check error logs\n\n### Getting Help\n\n- Check the [documentation](https://cadence-plugins.readthedocs.io/)\n- Open an [issue](https://github.com/jonaskahn/cadence-plugins/issues)\n- Join our [discussions](https://github.com/jonaskahn/cadence-plugins/discussions)\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Support\n\n- **Documentation**: [Read the Docs](https://cadence.readthedocs.io/)\n- **Issues**: [GitHub Issues](https://github.com/jonaskahn/cadence/issues)\n- **Discussions**: [GitHub Discussions](https://github.com/jonaskahn/cadence/discussions)\n\n---\n\n**Built with \u2764\ufe0f for the Cadence AI community**",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Cadence Plugins - Collection of example AI agent plugins for Cadence AI Framework",
    "version": "1.0.7",
    "project_urls": {
        "Documentation": "https://cadence-plugins.readthedocs.io/",
        "Homepage": "https://github.com/jonaskahn/cadence-plugins",
        "Repository": "https://github.com/jonaskahn/cadence-plugins.git",
        "issues": "https://github.com/jonaskahn/cadence-plugins/issues"
    },
    "split_keywords": [
        "ai",
        " agents",
        " cadence-ai",
        " plugins",
        " cadence-plugins",
        " langchain",
        " langgraph",
        " multi-agent"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c936b21bd5e552ac86e77ab36f3de7e6fe6ee17faa0afa59620149af0227f455",
                "md5": "44882e9767b797e0ef9086f970ec8182",
                "sha256": "f5c8866c9d49d00307a6a97215f7ad8812bd5a9d73d2743683866a0e1e9d05b9"
            },
            "downloads": -1,
            "filename": "cadence_example_plugins-1.0.7-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "44882e9767b797e0ef9086f970ec8182",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<3.14,>=3.13",
            "size": 14364,
            "upload_time": "2025-09-03T09:36:47",
            "upload_time_iso_8601": "2025-09-03T09:36:47.670144Z",
            "url": "https://files.pythonhosted.org/packages/c9/36/b21bd5e552ac86e77ab36f3de7e6fe6ee17faa0afa59620149af0227f455/cadence_example_plugins-1.0.7-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f363393f92cb719066ed1e1474632dcdded611c8ad82af8a1ab1e003921d4aac",
                "md5": "a5ca76d00d1aec0179ca71356dc5c6a8",
                "sha256": "4bedc4d3c3f02aad47e3ba1d7f3051b7a224f61002172cbf32abaa68f1834322"
            },
            "downloads": -1,
            "filename": "cadence_example_plugins-1.0.7.tar.gz",
            "has_sig": false,
            "md5_digest": "a5ca76d00d1aec0179ca71356dc5c6a8",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<3.14,>=3.13",
            "size": 11738,
            "upload_time": "2025-09-03T09:36:48",
            "upload_time_iso_8601": "2025-09-03T09:36:48.972568Z",
            "url": "https://files.pythonhosted.org/packages/f3/63/393f92cb719066ed1e1474632dcdded611c8ad82af8a1ab1e003921d4aac/cadence_example_plugins-1.0.7.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-09-03 09:36:48",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "jonaskahn",
    "github_project": "cadence-plugins",
    "github_not_found": true,
    "lcname": "cadence-example-plugins"
}
        
Elapsed time: 0.84021s