Add pyws workspace plugin (P1: reader resource + namespace + effects)

Exposes pm3py as a pyws workspace, discovered via the pyws.plugins entry point:
- ReaderResource: connects/disconnects a Proxmark3 as `reader`; a missing device is
  non-fatal (reports disconnected)
- namespace injection of the transponder/sim classes, SimSession and Proxmark3
- effect declarations so autoreplay/replay withhold writes/field/sim/destructive while
  reads and pure model edits replay

Hardware-free tests via AsyncMock. The live `sim` resource is P2.
See docs/plans/2026-07-05-pm3py-pyws-plugin-plan.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
michael
2026-07-06 07:56:13 -07:00
parent 0ba5256d02
commit 829f254194
4 changed files with 355 additions and 0 deletions

View File

@@ -46,6 +46,10 @@ dev = ["pytest"]
[project.scripts]
pm3flash = "pm3py.flash_cli:main"
# pyws workspace plugin — discovered by the pyws engine (installed alongside) via this group.
[project.entry-points."pyws.plugins"]
pm3py = "pm3py.pyws_plugin:Pm3pyPlugin"
[tool.setuptools.packages.find]
include = ["pm3py*"]