From 6b26e7bb776b781df7b359722f403b12f6d89073 Mon Sep 17 00:00:00 2001 From: JeanExtreme002 Date: Tue, 8 Sep 2026 17:55:12 -0300 Subject: [PATCH 1/2] docs: make the README's links absolute, so they work on PyPI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `readme = "README.md"` in pyproject.toml, so this file is the package's long_description and PyPI renders it. Relative links there resolve against pypi.org, which has no `docs/` tree — every documentation link on the project page was dead. Rendered through `readme_renderer`, exactly as PyPI does, 13 relative hrefs survived into the published HTML. The in-page anchor was a 14th: the renderer emits no heading ids at all (0 of them, measured), so `#let-an-ai-assistant- do-it-mcp` went nowhere. Documentation pages point at Read the Docs rather than GitHub blobs — a reader arriving from PyPI gets the rendered site instead of raw Markdown, and `docs/contributing.md` and `docs/license.md` include the root files anyway. `en/latest`, not `en/stable`: there is no stable alias configured (404). CONTRIBUTING.md and LICENSE stay on GitHub, which is where you act on them. Only README.md is touched. Relative links inside `docs/` are correct as they are — MyST rewrites `.md` to `.html` when it builds, so they work both on GitHub and on the site, and hardcoding absolute URLs there would break local previews and send a reader on a pinned version to `/en/latest/`. All 18 URLs in the rendered README verified to resolve. --- README.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 5e855ce..0da28c7 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ pip install "PyMemoryEditor[speed]" ``` To let an AI assistant drive the library over the Model Context Protocol, use -the `mcp` extra (see [below](#let-an-ai-assistant-do-it-mcp)): +the `mcp` extra (see [below](https://github.com/JeanExtreme002/PyMemoryEditor#let-an-ai-assistant-do-it-mcp)): ```bash pip install "PyMemoryEditor[mcp]" @@ -116,7 +116,7 @@ Or in any client that reads `mcpServers` JSON (Claude Desktop, editors, …): Fourteen tools cover the full workflow, with scan results kept server-side behind a handle, so a 40 000-hit first scan costs a few tokens instead of your whole context. -Read the [MCP guide](docs/mcp.md) to learn more. +Read the [MCP guide](https://pymemoryeditor.readthedocs.io/en/latest/mcp.html) to learn more. --- @@ -127,16 +127,16 @@ Full documentation lives at **[pymemoryeditor.readthedocs.io](https://pymemoryed A quick map of where to go: - - - - - - - - - - + + + + + + + + + +
Quick StartOpen a process, read, write and run your first scan.
Searching memoryValue scans, ranges, refining results, the Cheat Engine loop.
Pattern scanFind code/data with byte signatures (AOB) and regex.
PointersMulti-level pointer chains and the live RemotePointer.
Pointer scanFind static pointers that survive ASLR.
The GUI appThe bundled Cheat Engine-style scanner.
The MCP serverLet an AI assistant drive the scan/refine loop.
API referenceEvery public class, method and parameter.
Platform notesPermissions and quirks on Windows, Linux and macOS.
TroubleshootingCommon errors and how to fix them.
Quick StartOpen a process, read, write and run your first scan.
Searching memoryValue scans, ranges, refining results, the Cheat Engine loop.
Pattern scanFind code/data with byte signatures (AOB) and regex.
PointersMulti-level pointer chains and the live RemotePointer.
Pointer scanFind static pointers that survive ASLR.
The GUI appThe bundled Cheat Engine-style scanner.
The MCP serverLet an AI assistant drive the scan/refine loop.
API referenceEvery public class, method and parameter.
Platform notesPermissions and quirks on Windows, Linux and macOS.
TroubleshootingCommon errors and how to fix them.
--- @@ -158,7 +158,7 @@ A quick map of where to go: ## 🤝 Contributing Pull requests, bug reports and feature ideas are very welcome. Read -[`CONTRIBUTING.md`](CONTRIBUTING.md) for the development setup, test layout and +[`CONTRIBUTING.md`](https://github.com/JeanExtreme002/PyMemoryEditor/blob/main/CONTRIBUTING.md) for the development setup, test layout and the small set of platform-specific quirks to be aware of. If PyMemoryEditor helped your project, please ⭐ the repo — it's the easiest way to @@ -168,4 +168,4 @@ support the work and to help others discover the library. ## License -Released under the [MIT License](LICENSE) — free for personal and commercial use. +Released under the [MIT License](https://github.com/JeanExtreme002/PyMemoryEditor/blob/main/LICENSE) — free for personal and commercial use. From 44056f74d1e35f0020853342b6163ac92f8e7650 Mon Sep 17 00:00:00 2001 From: JeanExtreme002 Date: Tue, 8 Sep 2026 18:07:15 -0300 Subject: [PATCH 2/2] docs: keep the in-page anchor relative MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reverts one line of the previous commit. The anchor was bundled in because it matched the pattern — a relative link — without weighing that its failure mode is different in kind. A relative *path* on PyPI navigates somewhere wrong: `pypi.org/project/PyMemoryEditor/docs/mcp.md` does not exist. A relative *fragment* whose id is missing is inert — the browser stays where it is. Nothing errors and nothing goes to the wrong place; the click just does not respond. Against that, absolutising it charged the majority of readers: on GitHub the anchor was an in-page jump and became a full navigation to github.com, reloading the same page to reach a section already on screen. So the mild PyPI cost stays, and the GitHub reader keeps the jump. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0da28c7..b20fd69 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ pip install "PyMemoryEditor[speed]" ``` To let an AI assistant drive the library over the Model Context Protocol, use -the `mcp` extra (see [below](https://github.com/JeanExtreme002/PyMemoryEditor#let-an-ai-assistant-do-it-mcp)): +the `mcp` extra (see [below](#let-an-ai-assistant-do-it-mcp)): ```bash pip install "PyMemoryEditor[mcp]"