{"id":37084326,"url":"https://github.com/pyplugin/pyplugin","last_synced_at":"2026-01-14T10:18:44.213Z","repository":{"id":184895266,"uuid":"672610537","full_name":"pyplugin/pyplugin","owner":"pyplugin","description":"Plugin Framework Library for Python ","archived":false,"fork":false,"pushed_at":"2025-07-19T23:52:38.000Z","size":105,"stargazers_count":6,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-01T12:35:09.326Z","etag":null,"topics":["plugin","plugin-manager","pyplugin"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pyplugin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null}},"created_at":"2023-07-30T17:03:11.000Z","updated_at":"2025-10-17T16:56:07.000Z","dependencies_parsed_at":"2023-09-27T08:03:01.987Z","dependency_job_id":"0453fc78-7ee2-40f1-845f-9c6a28d96808","html_url":"https://github.com/pyplugin/pyplugin","commit_stats":null,"previous_names":["pyplugin/pyplugin"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/pyplugin/pyplugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyplugin%2Fpyplugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyplugin%2Fpyplugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyplugin%2Fpyplugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyplugin%2Fpyplugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyplugin","download_url":"https://codeload.github.com/pyplugin/pyplugin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyplugin%2Fpyplugin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28416858,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T10:18:03.274Z","status":"ssl_error","status_checked_at":"2026-01-14T10:16:11.865Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["plugin","plugin-manager","pyplugin"],"created_at":"2026-01-14T10:18:43.476Z","updated_at":"2026-01-14T10:18:44.207Z","avatar_url":"https://github.com/pyplugin.png","language":"Python","readme":"# pyplugin\n![Pytest Status](https://github.com/pyplugin/pyplugin/actions/workflows/pytest.yml/badge.svg)\n[![codecov](https://codecov.io/github/pyplugin/pyplugin/branch/main/graph/badge.svg?token=1PH1NHTGXP)](https://codecov.io/github/pyplugin/pyplugin)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://raw.githubusercontent.com/pyplugin/pyplugin/main/LICENSE)\n[![Documentation Status](https://readthedocs.org/projects/pyplugin/badge/?version=stable)](https://pyplugin.readthedocs.io/en/stable/?badge=stable)\n![Pylint Status](https://github.com/pyplugin/pyplugin/actions/workflows/pylint.yml/badge.svg)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n\nPyplugin is a plugin framework library, supporting declarative-style plugin writing, allowing modular, swappable\nfunctionality in any codebase. \n\nSee\n[Getting Started](https://pyplugin.readthedocs.io/en/latest/getting_started.html) for more.\n\n\n| Version Name | Latest Tag | Release Notes                                                             | Patch Notes                                                             | Documentation                                            | Release Date | End Support Date |\n|--------------|------------|---------------------------------------------------------------------------|-------------------------------------------------------------------------|----------------------------------------------------------|--------------|------------------|\n| 0.6          | v0.6.0     | [Release Notes](https://github.com/pyplugin/pyplugin/releases/tag/v0.6.0) | [Patch Notes](https://github.com/pyplugin/pyplugin/releases/tag/v0.6.0) | [Documentation](https://pyplugin.readthedocs.io/en/0.6/) | 19 July 2025  |                  |\n\n\n## Changelog v0.6\n\n### Features\n\n- Upgrade to support Python 3.13\n\n## Contributing\nWant a new feature, found a bug, or have questions? Feel free to add to our issue board on Github:\n[Open Issues](https://github.com/pyplugin/pyplugin/issues)\n\nWe welcome any developer who enjoys the package enough to contribute. \nIf you want to be added as a contributor and check out the \n[Developer's Guide](https://github.com/pyplugin/pyplugin/wiki/Developer's-Guide).\n\n## Introduction\nPlugins are arbitrary callables. They can declare other plugins as requirements while operating under\ncertain guarantees:\n\n- A plugin can be loaded (i.e. called) exactly once until it is unloaded.\n- A plugin's dependencies will be loaded before.\n- A plugin's loaded dependents will be reloaded after.\n- When a plugin is unloaded, its loaded dependents will be unloaded before.\n\nThis paradigm naturally puts an emphasis on the structure of packages and applications and less on its orchestration.\nThis allows consumers of applications to easily swap or add plugins while guaranteeing conformity to API\ncontracts.\n\n## Install\n```\npip install pyplugin\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpyplugin%2Fpyplugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpyplugin%2Fpyplugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpyplugin%2Fpyplugin/lists"}